mcpu: Implement lock timeouts
[ganeti-local] / Makefile.am
index 86f9465..51270a0 100644 (file)
@@ -13,6 +13,7 @@ ACLOCAL_AMFLAGS = -I autotools
 DOCBOOK_WRAPPER = $(top_srcdir)/autotools/docbook-wrapper
 BUILD_BASH_COMPLETION = $(top_srcdir)/autotools/build-bash-completion
 RUN_IN_TEMPDIR = $(top_srcdir)/autotools/run-in-tempdir
+CHECK_PYTHON_CODE = $(top_srcdir)/autotools/check-python-code
 REPLACE_VARS_SED = autotools/replace_vars.sed
 
 hypervisordir = $(pkgpythondir)/hypervisor
@@ -30,6 +31,7 @@ DIRS = \
        doc/examples \
        doc/examples/hooks \
        lib \
+       lib/build \
        lib/http \
        lib/hypervisor \
        lib/rapi \
@@ -50,11 +52,14 @@ maintainer-clean-local:
 
 CLEANFILES = \
        autotools/replace_vars.sed \
+       daemons/ganeti-cleaner \
        devel/upload \
        doc/examples/bash_completion \
        doc/examples/ganeti.initd \
        doc/examples/ganeti.cron \
+       doc/examples/hooks/ipsec \
        lib/*.py[co] \
+       lib/build/*.py[co] \
        lib/http/*.py[co] \
        lib/hypervisor/*.py[co] \
        lib/rapi/*.py[co] \
@@ -73,6 +78,9 @@ BUILT_SOURCES = \
 nodist_pkgpython_PYTHON = \
        lib/_autoconf.py
 
+noinst_PYTHON = \
+       lib/build/__init__.py
+
 pkgpython_PYTHON = \
        lib/__init__.py \
        lib/asyncnotifier.py \
@@ -122,6 +130,7 @@ http_PYTHON = \
 
 confd_PYTHON = \
        lib/confd/__init__.py \
+       lib/confd/client.py \
        lib/confd/server.py \
        lib/confd/querylib.py
 
@@ -129,11 +138,13 @@ docrst = \
        doc/admin.rst \
        doc/design-2.0.rst \
        doc/design-2.1.rst \
+       doc/devnotes.rst \
        doc/glossary.rst \
        doc/hooks.rst \
        doc/iallocator.rst \
        doc/index.rst \
        doc/install.rst \
+       doc/locking.rst \
        doc/rapi.rst \
        doc/security.rst
 
@@ -149,7 +160,9 @@ doc/html: $(docrst) $(docpng) doc/conf.py configure.ac
        touch "$@"
 
 docdot = \
-       doc/arch-2.0.dot
+       doc/arch-2.0.dot \
+       doc/design-2.1-lock-acquire.dot \
+       doc/design-2.1-lock-release.dot
 
 docpng = $(patsubst %.dot,%.png,$(docdot))
 
@@ -172,6 +185,9 @@ dist_sbin_SCRIPTS = \
        daemons/ganeti-rapi \
        $(gnt_scripts)
 
+nodist_sbin_SCRIPTS = \
+       daemons/ganeti-cleaner
+
 dist_tools_SCRIPTS = \
        tools/burnin \
        tools/cfgshell \
@@ -181,10 +197,12 @@ dist_tools_SCRIPTS = \
 EXTRA_DIST = \
        $(MAINTAINERCLEANFILES) \
        NEWS \
-       DEVNOTES \
        pylintrc \
+       autotools/build-bash-completion \
+       autotools/check-python-code \
        autotools/docbook-wrapper \
        autotools/run-in-tempdir \
+       daemons/ganeti-cleaner.in \
        devel/upload.in \
        $(docdot) \
        $(docrst) \
@@ -194,7 +212,7 @@ EXTRA_DIST = \
        doc/examples/ganeti.cron.in \
        doc/examples/dumb-allocator \
        doc/examples/hooks/ethers \
-       doc/locking.txt \
+       doc/examples/hooks/ipsec.in \
        test/testutils.py \
        test/mocks.py \
        $(dist_TESTS) \
@@ -217,6 +235,7 @@ EXTRA_DIST = \
 
 man_MANS = \
        man/ganeti.7 \
+       man/ganeti-cleaner.8 \
        man/ganeti-masterd.8 \
        man/ganeti-noded.8 \
        man/ganeti-os-interface.7 \
@@ -240,42 +259,76 @@ TEST_FILES = \
        test/data/bdev-disk.txt \
        test/data/bdev-net.txt \
        test/data/proc_drbd8.txt \
+       test/data/proc_drbd80-emptyline.txt \
        test/data/proc_drbd83.txt
 
 dist_TESTS = \
        test/ganeti.bdev_unittest.py \
        test/ganeti.cli_unittest.py \
        test/ganeti.cmdlib_unittest.py \
+       test/ganeti.confd_client_unittest.py \
        test/ganeti.config_unittest.py \
        test/ganeti.constants_unittest.py \
        test/ganeti.hooks_unittest.py \
        test/ganeti.http_unittest.py \
        test/ganeti.locking_unittest.py \
+       test/ganeti.mcpu_unittest.py \
        test/ganeti.objects_unittest.py \
        test/ganeti.rapi.resources_unittest.py \
        test/ganeti.serializer_unittest.py \
        test/ganeti.ssh_unittest.py \
        test/ganeti.utils_unittest.py \
-       test/ganeti.workerpool_unittest.py
+       test/ganeti.workerpool_unittest.py \
+       test/docs_unittest.py
 
 nodist_TESTS =
 
 TESTS = $(dist_TESTS) $(nodist_TESTS)
 
-TESTS_ENVIRONMENT = PYTHONPATH=.:$(top_builddir) $(PYTHON)
+TESTS_ENVIRONMENT = \
+       PYTHONPATH=. TOP_SRCDIR=$(abs_top_srcdir) \
+       $(RUN_IN_TEMPDIR) $(PYTHON)
+
+all_python_code = \
+       $(dist_sbin_SCRIPTS) \
+       $(dist_tools_SCRIPTS) \
+       $(dist_TESTS) \
+       $(pkgpython_PYTHON) \
+       $(hypervisor_PYTHON) \
+       $(rapi_PYTHON) \
+       $(http_PYTHON) \
+       $(confd_PYTHON) \
+       $(noinst_PYTHON)
+
+srclink_files = \
+       man/footer.sgml \
+       $(all_python_code)
+
+check_python_code = \
+       $(all_python_code)
 
 all-local: stamp-directories devel/upload \
        doc/examples/bash_completion \
-       doc/examples/ganeti.initd doc/examples/ganeti.cron
+       doc/examples/ganeti.initd doc/examples/ganeti.cron \
+       doc/examples/hooks/ipsec
 
 devel/upload: devel/upload.in stamp-directories $(REPLACE_VARS_SED)
        sed -f $(REPLACE_VARS_SED) < $< > $@
        chmod u+x $@
 
+daemons/ganeti-cleaner: daemons/ganeti-cleaner.in stamp-directories \
+               $(REPLACE_VARS_SED)
+       sed -f $(REPLACE_VARS_SED) < $< > $@
+       chmod +x $@
+
 doc/examples/%: doc/examples/%.in stamp-directories \
                $(REPLACE_VARS_SED)
        sed -f $(REPLACE_VARS_SED) < $< > $@
 
+doc/examples/hooks/%: doc/examples/hooks/%.in stamp-directories \
+               $(REPLACE_VARS_SED)
+       sed -f $(REPLACE_VARS_SED) < $< > $@
+
 doc/examples/bash_completion: $(BUILD_BASH_COMPLETION) $(RUN_IN_TEMPDIR) \
        lib/cli.py $(gnt_scripts) tools/burnin
        PYTHONPATH=. $(RUN_IN_TEMPDIR) $(CURDIR)/$(BUILD_BASH_COMPLETION) > $@
@@ -325,6 +378,7 @@ lib/_autoconf.py: Makefile stamp-directories
          echo "SSH_INITD_SCRIPT = '$(SSH_INITD_SCRIPT)'"; \
          echo "EXPORT_DIR = '$(EXPORT_DIR)'"; \
          echo "OS_SEARCH_PATH = [$(OS_SEARCH_PATH)]"; \
+         echo "XEN_BOOTLOADER = '$(XEN_BOOTLOADER)'"; \
          echo "XEN_KERNEL = '$(XEN_KERNEL)'"; \
          echo "XEN_INITRD = '$(XEN_INITRD)'"; \
          echo "FILE_STORAGE_DIR = '$(FILE_STORAGE_DIR)'"; \
@@ -342,8 +396,10 @@ $(REPLACE_VARS_SED): Makefile stamp-directories
        { echo 's#@PREFIX@#$(prefix)#g'; \
          echo 's#@SYSCONFDIR@#$(sysconfdir)#g'; \
          echo 's#@LOCALSTATEDIR@#$(localstatedir)#g'; \
+         echo 's#@BINDIR@#$(bindir)#g'; \
          echo 's#@SBINDIR@#$(sbindir)#g'; \
          echo 's#@GANETI_VERSION@#$(PACKAGE_VERSION)#g'; \
+         echo 's#@CUSTOM_XEN_BOOTLOADER@#$(XEN_BOOTLOADER)#g'; \
          echo 's#@CUSTOM_XEN_KERNEL@#$(XEN_KERNEL)#g'; \
          echo 's#@CUSTOM_XEN_INITRD@#$(XEN_INITRD)#g'; \
          echo 's#@RPL_FILE_STORAGE_DIR@#$(FILE_STORAGE_DIR)#g'; \
@@ -354,8 +410,7 @@ $(REPLACE_VARS_SED): Makefile stamp-directories
 # files when building.
 srclinks: stamp-directories
        set -e; \
-       for i in man/footer.sgml $(pkgpython_PYTHON) $(hypervisor_PYTHON) \
-                       $(rapi_PYTHON) $(http_PYTHON) $(confd_PYTHON); do \
+       for i in $(srclink_files); do \
                if test ! -f $$i -a -f $(abs_top_srcdir)/$$i; then \
                        $(LN_S) $(abs_top_srcdir)/$$i $$i; \
                fi; \
@@ -365,6 +420,9 @@ srclinks: stamp-directories
 ganeti:
        cd $(top_builddir) && test -h "$@" || { rm -f $@ && $(LN_S) lib $@; }
 
+check-local:
+       $(CHECK_PYTHON_CODE) $(check_python_code)
+
 # a dist hook rule for catching revision control directories
 distcheck-hook:
        if find $(top_distdir) | grep -F -e '.svn' -e '.git'; then \