Add more mon-collector shell tests
[ganeti-local] / Makefile.am
index dfd8370..713abd8 100644 (file)
@@ -60,6 +60,7 @@ HTOOLS_DIRS = \
        htools/Ganeti/Block \
        htools/Ganeti/Block/Drbd \
        htools/Ganeti/Confd \
+       htools/Ganeti/DataCollectors \
        htools/Ganeti/HTools \
        htools/Ganeti/HTools/Backend \
        htools/Ganeti/HTools/Program \
@@ -113,6 +114,7 @@ ALL_APIDOC_HS_DIRS = \
        $(APIDOC_HS_DIR)/Ganeti/Block \
        $(APIDOC_HS_DIR)/Ganeti/Block/Drbd \
        $(APIDOC_HS_DIR)/Ganeti/Confd \
+       $(APIDOC_HS_DIR)/Ganeti/DataCollectors \
        $(APIDOC_HS_DIR)/Ganeti/HTools \
        $(APIDOC_HS_DIR)/Ganeti/HTools/Backend \
        $(APIDOC_HS_DIR)/Ganeti/HTools/Program \
@@ -332,6 +334,8 @@ server_PYTHON = \
 pytools_PYTHON = \
        lib/tools/__init__.py \
        lib/tools/ensure_dirs.py \
+       lib/tools/node_cleanup.py \
+       lib/tools/node_daemon_setup.py \
        lib/tools/prepare_node_join.py
 
 utils_PYTHON = \
@@ -402,13 +406,14 @@ docrst = \
        doc/virtual-cluster.rst \
        doc/walkthrough.rst
 
-HS_PROGS = htools/htools
+HS_PROGS = htools/htools htools/mon-collector
 HS_BIN_ROLES = hbal hscan hspace hinfo hcheck
 HS_HTOOLS_PROGS = $(HS_BIN_ROLES) hail
 
 HS_ALL_PROGS = \
        $(HS_PROGS) \
        htest/hpc-htools \
+       htest/hpc-mon-collector \
        htest/test \
        htools/hconfd \
        htools/rpc-test
@@ -450,6 +455,9 @@ HS_LIB_SRCS = \
        htools/Ganeti/Confd/Utils.hs \
        htools/Ganeti/Config.hs \
        htools/Ganeti/Daemon.hs \
+       htools/Ganeti/DataCollectors/CLI.hs \
+       htools/Ganeti/DataCollectors/Drbd.hs \
+       htools/Ganeti/DataCollectors/Program.hs \
        htools/Ganeti/Errors.hs \
        htools/Ganeti/HTools/Backend/IAlloc.hs \
        htools/Ganeti/HTools/Backend/Luxi.hs \
@@ -479,6 +487,7 @@ HS_LIB_SRCS = \
        htools/Ganeti/Jobs.hs \
        htools/Ganeti/Logging.hs \
        htools/Ganeti/Luxi.hs \
+       htools/Ganeti/Network.hs \
        htools/Ganeti/Objects.hs \
        htools/Ganeti/OpCodes.hs \
        htools/Ganeti/OpParams.hs \
@@ -504,6 +513,7 @@ HS_TEST_SRCS = \
        htest/Test/Ganeti/Block/Drbd/Parser.hs \
        htest/Test/Ganeti/Block/Drbd/Types.hs \
        htest/Test/Ganeti/Common.hs \
+       htest/Test/Ganeti/Confd/Types.hs \
        htest/Test/Ganeti/Confd/Utils.hs \
        htest/Test/Ganeti/Daemon.hs \
        htest/Test/Ganeti/Errors.hs \
@@ -521,6 +531,7 @@ HS_TEST_SRCS = \
        htest/Test/Ganeti/JSON.hs \
        htest/Test/Ganeti/Jobs.hs \
        htest/Test/Ganeti/Luxi.hs \
+       htest/Test/Ganeti/Network.hs \
        htest/Test/Ganeti/Objects.hs \
        htest/Test/Ganeti/OpCodes.hs \
        htest/Test/Ganeti/Query/Filter.hs \
@@ -616,6 +627,8 @@ PYTHON_BOOTSTRAP_SBIN = \
 PYTHON_BOOTSTRAP = \
        $(PYTHON_BOOTSTRAP_SBIN) \
        tools/ensure-dirs \
+       tools/node-cleanup \
+       tools/node-daemon-setup \
        tools/prepare-node-join
 
 qa_scripts = \
@@ -668,8 +681,11 @@ htest/test: HEXTRA_INT=-fhpc -ihtest
 # we compile the hpc-htools binary with the program coverage
 htest/hpc-htools: HEXTRA_INT=-fhpc
 
+# we compile the hpc-mon-collector binary with the program coverage
+htest/hpc-mon-collector: HEXTRA_INT=-fhpc
+
 # test dependency
-htest/offline-tests.sh: htest/hpc-htools
+htest/offline-tests.sh: htest/hpc-htools htest/hpc-mon-collector
 
 # rules for building profiling-enabled versions of the haskell
 # programs: hs-prof does the full two-step build, whereas
@@ -677,13 +693,21 @@ htest/offline-tests.sh: htest/hpc-htools
 # run before)
 .PHONY: hs-prof hs-prof-quick
 hs-prof:
+       @if [ -z "$(TARGET)" ]; then \
+         echo "You need to define TARGET when running this rule" 1>&2; \
+         exit 1; \
+       fi
        $(MAKE) $(AM_MAKEFLAGS) clean
-       $(MAKE) $(AM_MAKEFLAGS) $(HS_ALL_PROGS) HEXTRA="-osuf o"
+       $(MAKE) $(AM_MAKEFLAGS) $(TARGET) HEXTRA="-osuf o"
        rm -f $(HS_ALL_PROGS)
        $(MAKE) $(AM_MAKEFLAGS) hs-prof-quick
 
 hs-prof-quick:
-       $(MAKE) $(AM_MAKEFLAGS) $(HS_ALL_PROGS) HEXTRA="-osuf prof_o -prof -auto-all"
+       @if [ -z "$(TARGET)" ]; then \
+         echo "You need to define TARGET when running this rule" 1>&2; \
+         exit 1; \
+       fi
+       $(MAKE) $(AM_MAKEFLAGS) $(TARGET) HEXTRA="-osuf prof_o -prof -auto-all"
 
 dist_sbin_SCRIPTS = \
        tools/ganeti-listrunner
@@ -718,7 +742,11 @@ dist_tools_SCRIPTS = \
        tools/master-ip-setup \
        tools/xen-console-wrapper
 
+nodist_tools_python_scripts = \
+       tools/node-cleanup
+
 nodist_tools_SCRIPTS = \
+       $(nodist_tools_python_scripts) \
        tools/vcluster-setup
 
 pkglib_python_scripts = \
@@ -727,12 +755,14 @@ pkglib_python_scripts = \
 
 nodist_pkglib_python_scripts = \
        tools/ensure-dirs \
+       tools/node-daemon-setup \
        tools/prepare-node-join
 
 myexeclib_SCRIPTS = \
        daemons/daemon-util \
        tools/kvm-ifup \
-       $(pkglib_python_scripts)
+       $(pkglib_python_scripts) \
+       htools/mon-collector
 
 nodist_myexeclib_SCRIPTS = \
        $(nodist_pkglib_python_scripts)
@@ -818,7 +848,8 @@ man_MANS = \
        man/hinfo.1 \
        man/hscan.1 \
        man/hspace.1 \
-       man/htools.1
+       man/htools.1 \
+       man/mon-collector.7
 
 manrst = $(patsubst %.1,%.rst,$(patsubst %.7,%.rst,$(patsubst %.8,%.rst,$(man_MANS))))
 manhtml = $(patsubst %.rst,%.html,$(manrst))
@@ -855,6 +886,7 @@ TEST_FILES = \
        htest/shelltests/htools-rapi.test \
        htest/shelltests/htools-single-group.test \
        htest/shelltests/htools-text-backend.test \
+       htest/shelltests/htools-mon-collector.test \
        test/data/bdev-drbd-8.0.txt \
        test/data/bdev-drbd-8.3.txt \
        test/data/bdev-drbd-disk.txt \
@@ -970,6 +1002,7 @@ python_tests = \
        test/ganeti.ssh_unittest.py \
        test/ganeti.storage_unittest.py \
        test/ganeti.tools.ensure_dirs_unittest.py \
+       test/ganeti.tools.node_daemon_setup_unittest.py \
        test/ganeti.tools.prepare_node_join_unittest.py \
        test/ganeti.uidpool_unittest.py \
        test/ganeti.utils.algo_unittest.py \
@@ -1009,7 +1042,10 @@ check_SCRIPTS =
 if WANT_HTOOLSTESTS
 nodist_TESTS += $(haskell_tests)
 dist_TESTS += htest/offline-test.sh
-check_SCRIPTS += htest/hpc-htools $(HS_BUILT_TEST_HELPERS)
+check_SCRIPTS += \
+       htest/hpc-htools \
+       htest/hpc-mon-collector \
+       $(HS_BUILT_TEST_HELPERS)
 endif
 
 TESTS = $(dist_TESTS) $(nodist_TESTS)
@@ -1030,6 +1066,7 @@ all_python_code = \
        $(python_scripts) \
        $(pkglib_python_scripts) \
        $(nodist_pkglib_python_scripts) \
+       $(nodist_tools_python_scripts) \
        $(python_tests) \
        $(pkgpython_PYTHON) \
        $(client_PYTHON) \
@@ -1208,7 +1245,8 @@ htools/Ganeti/Version.hs: htools/Ganeti/Version.hs.in \
        sed -e "s/%ver%/$$VCSVER/" < $< > $@
 
 htools/Ganeti/Constants.hs: htools/Ganeti/Constants.hs.in \
-       lib/constants.py lib/_autoconf.py lib/luxi.py \
+       lib/constants.py lib/_autoconf.py lib/luxi.py lib/errors.py \
+       lib/jstore.py \
        $(CONVERT_CONSTANTS) $(built_base_sources) \
        | lib/_vcsversion.py
        set -e; \
@@ -1293,6 +1331,7 @@ lib/_autoconf.py: Makefile | stamp-directories
          echo "XEN_CMD = '$(XEN_CMD)'"; \
          echo "ENABLE_SPLIT_QUERY = $(ENABLE_SPLIT_QUERY)"; \
          echo "ENABLE_RESTRICTED_COMMANDS = $(ENABLE_RESTRICTED_COMMANDS)"; \
+         echo "ENABLE_MONITORING = $(ENABLE_MONITORING)"; \
        } > $@
 
 lib/_vcsversion.py: Makefile vcs-version | stamp-directories
@@ -1373,7 +1412,9 @@ daemons/ganeti-%: MODULE = ganeti.server.$(patsubst ganeti-%,%,$(notdir $@))
 daemons/ganeti-watcher: MODULE = ganeti.watcher
 scripts/%: MODULE = ganeti.client.$(subst -,_,$(notdir $@))
 tools/ensure-dirs: MODULE = ganeti.tools.ensure_dirs
+tools/node-daemon-setup: MODULE = ganeti.tools.node_daemon_setup
 tools/prepare-node-join: MODULE = ganeti.tools.prepare_node_join
+tools/node-cleanup: MODULE = ganeti.tools.node_cleanup
 $(HS_BUILT_TEST_HELPERS): TESTROLE = $(patsubst htest/%,%,$@)
 
 $(PYTHON_BOOTSTRAP): Makefile | stamp-directories
@@ -1462,23 +1503,28 @@ check-local: check-dirs $(GENERATED_FILES)
        $(CHECK_NEWS) < $(top_srcdir)/NEWS
        PYTHONPATH=. $(RUN_IN_TEMPDIR) $(CURDIR)/$(CHECK_IMPORTS) . $(standalone_python_modules)
        @expver=$(VERSION_MAJOR).$(VERSION_MINOR); \
+       error= ; \
        if test "`head -n 1 $(top_srcdir)/README`" != "Ganeti $$expver"; then \
-         echo "Incorrect version in README, expected $$expver"; \
-         exit 1; \
+         echo "Incorrect version in README, expected $$expver" >&2; \
+         error=1; \
        fi; \
        for file in doc/iallocator.rst doc/hooks.rst doc/virtual-cluster.rst \
            doc/security.rst; do \
          if test "`sed -ne '4 p' $(top_srcdir)/$$file`" != \
            "Documents Ganeti version $$expver"; then \
-           echo "Incorrect version in $$file, expected $$expver"; \
-           exit 1; \
+           echo "Incorrect version in $$file, expected $$expver" >&2; \
+           error=1; \
          fi; \
        done; \
        if ! test -f $(top_srcdir)/doc/design-$$expver.rst; then \
-         echo "File $(top_srcdir)/doc/design-$$expver.rst not found"; \
-         exit 1; \
+         echo "File $(top_srcdir)/doc/design-$$expver.rst not found" >&2; \
+         error=1; \
+       fi; \
+       if test "`sed -ne '5 p' $(top_srcdir)/doc/design-draft.rst`" != \
+         ".. Last updated for Ganeti $$expver"; then \
+         echo "doc/design-draft.rst was not updated for version $$expver" >&2; \
+         error=1; \
        fi; \
-       error= ; \
        for file in configure.ac $(HS_LIBTEST_SRCS) $(HS_PROG_SRCS); do \
          if test $$(wc --max-line-length < $(top_srcdir)/$$file) -gt 80; then \
            echo "Longest line in $$file is longer than 80 characters" >&2; \
@@ -1488,8 +1534,8 @@ check-local: check-dirs $(GENERATED_FILES)
        test -z "$$error"
 
 .PHONY: hs-check
-hs-check: htest/test htest/hpc-htools $(HS_BUILT_TEST_HELPERS)
-       @rm -f test.tix
+hs-check: htest/test htest/hpc-htools htest/hpc-mon-collector $(HS_BUILT_TEST_HELPERS)
+       @rm -f *.tix
        ./htest/test
        HBINARY="./htest/hpc-htools" ./htest/offline-test.sh
 
@@ -1631,6 +1677,7 @@ endif
 
 .PHONY: py-apidoc
 py-apidoc: epydoc.conf $(RUN_IN_TEMPDIR) $(GENERATED_FILES)
+       env - PATH="$$PATH" PYTHONPATH="$$PYTHONPATH" \
        $(RUN_IN_TEMPDIR) epydoc -v \
          --conf $(CURDIR)/epydoc.conf \
          --output $(CURDIR)/$(APIDOC_PY_DIR)
@@ -1704,12 +1751,12 @@ py-coverage: $(GENERATED_FILES) $(python_tests)
        $(python_tests)
 
 .PHONY: hs-coverage
-hs-coverage: $(haskell_tests) htest/hpc-htools
+hs-coverage: $(haskell_tests) htest/hpc-htools htest/hpc-mon-collector
        rm -f *.tix
        $(MAKE) $(AM_MAKEFLAGS) hs-check
        @mkdir_p@ $(COVERAGE_HS_DIR)
-       hpc combine --union $(HPCEXCL) \
-         test.tix hpc-htools.tix > coverage-htools.tix
+       hpc sum --union $(HPCEXCL) \
+         test.tix hpc-htools.tix hpc-mon-collector.tix > coverage-htools.tix
        hpc markup --destdir=$(COVERAGE_HS_DIR) coverage-htools.tix
        hpc report coverage-htools.tix
        $(LN_S) -f hpc_index.html $(COVERAGE_HS_DIR)/index.html