예제 #1
0
    def test_force_reload_works(self):
        # original config
        conf_args = [
            "-c", "Amazon", "-u", "http://doesntmatter.org/ws", "-p",
            self.test_base_path, "-C", "ws"
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)
        logging_file = os.path.join(self.test_base_path, "etc/logging.yaml")
        plugin_file = os.path.join(self.test_base_path, "etc/plugin.conf")

        # customer customizes logging and plugin
        logging_write = open(logging_file, "w")
        logging_write.write("Hello")
        logging_write.close()

        plugin_write = open(plugin_file, "w")
        plugin_write.write("Hello")
        plugin_write.close()

        # reconfig
        conf_args = [
            "-r",
            os.path.join(self.test_base_path, "etc/agent.conf"), "-R"
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        with open(logging_file, "r") as f:
            self.assertNotEqual("Hello", f.readline())
        with open(plugin_file, "r") as f:
            self.assertNotEqual("Hello", f.readline())
예제 #2
0
    def test_force_reload_works(self):
        # original config
        conf_args = ["-c", "Amazon",
                     "-u", "http://doesntmatter.org/ws",
                     "-p", self.test_base_path,
                     "-C", "ws"]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)
        logging_file = os.path.join(self.test_base_path, "etc/logging.yaml")
        plugin_file = os.path.join(self.test_base_path, "etc/plugin.conf")

        # customer customizes logging and plugin
        logging_write = open(logging_file, "w")
        logging_write.write("Hello")
        logging_write.close()

        plugin_write = open(plugin_file, "w")
        plugin_write.write("Hello")
        plugin_write.close()

        # reconfig
        conf_args = ["-r", os.path.join(self.test_base_path, "etc/agent.conf"), "-R"]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        with open(logging_file, "r") as f:
            self.assertNotEqual("Hello", f.readline())
        with open(plugin_file, "r") as f:
            self.assertNotEqual("Hello", f.readline())
예제 #3
0
    def test_configure_ossec_alert_threshold_change(self):
        conf1 = config.AgentConfig([])

        def check_version(conf):
            unsupported_platform_version = [("ubuntu", "10.04"),
                                            ("debian", "6.0")]
            for p, v in unsupported_platform_version:
                if conf.platform_name == p and conf.platform_version.startswith(
                        v):
                    return True
            return False

        if check_version(conf1):
            return

        conf_args = [
            "-c", "Amazon", "-u", "http://doesntmatter.org/ws", "-p",
            self.test_base_path, "-C", "ws", "--intrusion-detection-ossec",
            "true", "--ids-alert-threshold", "5"
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc,
                         0,
                         msg="Failed for " + conf1.platform_name + " : " +
                         conf1.platform_version)
        conf = config.AgentConfig(
            [os.path.join(self.test_base_path, "etc/agent.conf")])
        self.assertTrue(conf.intrusion_detection_ossec)
        self.assertEqual(conf.intrusion_detection_alert_threshold, 5)
예제 #4
0
    def test_configure_ossec_alert_threshold_change(self):
        conf1 = config.AgentConfig([])

        def check_version(conf):
            unsupported_platform_version = [("ubuntu", "10.04"),
                                            ("debian", "6.0")]
            for p, v in unsupported_platform_version:
                if conf.platform_name == p and conf.platform_version.startswith(v):
                    return True
            return False

        if check_version(conf1):
            return

        conf_args = ["-c", "Amazon",
                     "-u", "http://doesntmatter.org/ws",
                     "-p", self.test_base_path,
                     "-C", "ws",
                     "--intrusion-detection-ossec", "true",
                     "--ids-alert-threshold", "5"]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0, msg="Failed for " + conf1.platform_name +
                         " : " + conf1.platform_version)
        conf = config.AgentConfig([os.path.join(
            self.test_base_path, "etc/agent.conf")])
        self.assertTrue(conf.intrusion_detection_ossec)
        self.assertEqual(conf.intrusion_detection_alert_threshold, 5)
예제 #5
0
    def test_interactive_configure(self, patch_cert_check):
        def _l_get_input(prompt):
            return "0"

        patch_cert_check.return_value = True
        url = "ws://someplace.com:5434/path"
        with mock.patch('sys.stdin'):
            sys.stdin.readline.return_value = url

            func = dcm.agent.cmd.configure._get_input
            try:
                dcm.agent.cmd.configure._get_input = _l_get_input
                conf_args = ["-p", self.test_base_path,
                             "-C", "ws",
                             "-i"]
                rc = configure.main(conf_args)
            finally:
                dcm.agent.cmd.configure._get_input = func

        self.assertEqual(rc, 0)

        parser = configparser.SafeConfigParser()
        parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))

        agentmanager_url = parser.get("connection", "agentmanager_url")
        self.assertEqual(agentmanager_url, url)
        cloud_type = parser.get("cloud", "type")
        self.assertEqual(cloud_type, configure.cloud_choices[0])
        cert = parser.get("connection", "allow_unknown_certs")
        self.assertEqual(cert, "True")
예제 #6
0
    def test_interactive_configure(self, patch_cert_check):
        def _l_get_input(prompt):
            return "0"

        patch_cert_check.return_value = True
        url = "ws://someplace.com:5434/path"
        with mock.patch('sys.stdin'):
            sys.stdin.readline.return_value = url

            func = dcm.agent.cmd.configure._get_input
            try:
                dcm.agent.cmd.configure._get_input = _l_get_input
                conf_args = ["-p", self.test_base_path, "-C", "ws", "-i"]
                rc = configure.main(conf_args)
            finally:
                dcm.agent.cmd.configure._get_input = func

        self.assertEqual(rc, 0)

        parser = configparser.SafeConfigParser()
        parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))

        agentmanager_url = parser.get("connection", "agentmanager_url")
        self.assertEqual(agentmanager_url, url)
        cloud_type = parser.get("cloud", "type")
        self.assertEqual(cloud_type, configure.cloud_choices[0])
        cert = parser.get("connection", "allow_unknown_certs")
        self.assertEqual(cert, "True")
예제 #7
0
 def test_config_works_bad_location(self):
     conf_args = [
         "-c", "aMazOn", "-u", "http://doesntmatter.org/ws", "-p",
         self.test_base_path, "-C", "ws", "--install-extras",
         "--extra-package-location", "http://nogood.something.x/"
     ]
     rc = configure.main(conf_args)
     self.assertNotEqual(rc, 0)
예제 #8
0
    def test_logging_plugin_not_changed_w_reconfig(self):
        # original config
        conf_args = [
            "-v", "-c", "Amazon", "-u", "http://doesntmatter.org/ws", "-p",
            self.test_base_path, "-C", "ws"
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        logging_file = os.path.join(self.test_base_path, "etc/logging.yaml")
        plugin_file = os.path.join(self.test_base_path, "etc/plugin.conf")

        # customer customizes logging and plugin
        logging_data = """
---
version: 1
disable_existing_loggers: False
formatters:
    simple:
        format: "%(levelname)s %(asctime)s [%(name)s] %(filename)s:%(lineno)d [(REQUEST=%(dcm_request_id)s)] %(message)s"
    todcm:
        format: "%(asctime)s [%(name)s] %(filename)s:%(lineno)d [(REQUEST=%(dcm_request_id)s)] %(message)s"
    wire:
        format: "[%(asctime)s] %(message)s"

        """
        logging_write = open(logging_file, "w")
        logging_write.write(logging_data)
        logging_write.close()

        plugin_write = open(plugin_file, "w")
        plugin_write.write("Hello")
        plugin_write.close()

        # reconfig
        conf_args = [
            "-v", "-r",
            os.path.join(self.test_base_path, "etc/agent.conf")
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        with open(logging_file, "r") as f:
            self.assertEqual(logging_data, f.read())
        with open(plugin_file, "r") as f:
            self.assertEqual("Hello", f.readline())
예제 #9
0
    def test_logging_plugin_not_changed_w_reconfig(self):
        # original config
        conf_args = ["-v",
                     "-c", "Amazon",
                     "-u", "http://doesntmatter.org/ws",
                     "-p", self.test_base_path,
                     "-C", "ws"]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        logging_file = os.path.join(self.test_base_path, "etc/logging.yaml")
        plugin_file = os.path.join(self.test_base_path, "etc/plugin.conf")

        # customer customizes logging and plugin
        logging_data = """
---
version: 1
disable_existing_loggers: False
formatters:
    simple:
        format: "%(levelname)s %(asctime)s [%(name)s] %(filename)s:%(lineno)d [(REQUEST=%(dcm_request_id)s)] %(message)s"
    todcm:
        format: "%(asctime)s [%(name)s] %(filename)s:%(lineno)d [(REQUEST=%(dcm_request_id)s)] %(message)s"
    wire:
        format: "[%(asctime)s] %(message)s"

        """
        logging_write = open(logging_file, "w")
        logging_write.write(logging_data)
        logging_write.close()

        plugin_write = open(plugin_file, "w")
        plugin_write.write("Hello")
        plugin_write.close()

        # reconfig
        conf_args = ["-v", "-r",
                     os.path.join(self.test_base_path, "etc/agent.conf")]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        with open(logging_file, "r") as f:
            self.assertEqual(logging_data, f.read())
        with open(plugin_file, "r") as f:
            self.assertEqual("Hello", f.readline())
예제 #10
0
    def test_all_cloud_reconfigure(self):
        url = 'http://someplace.com:2342/hello'
        conf_args = ["-p", self.test_base_path, "-c", "Azure",
                     "-u", url]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        conf_args = ["-p", self.test_base_path, "-r",
                     os.path.join(self.test_base_path, "etc", "agent.conf"),
                     "-u", url]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        parser = configparser.SafeConfigParser()
        parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))

        agentmanager_url = parser.get("connection", "agentmanager_url")
        self.assertEqual(agentmanager_url, url)
예제 #11
0
    def test_all_cloud_reconfigure(self):
        url = 'http://someplace.com:2342/hello'
        conf_args = ["-p", self.test_base_path, "-c", "Azure", "-u", url]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        conf_args = [
            "-p", self.test_base_path, "-r",
            os.path.join(self.test_base_path, "etc", "agent.conf"), "-u", url
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        parser = configparser.SafeConfigParser()
        parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))

        agentmanager_url = parser.get("connection", "agentmanager_url")
        self.assertEqual(agentmanager_url, url)
예제 #12
0
 def test_config_works_bad_location(self):
     conf_args = ["-c", "aMazOn",
                  "-u", "http://doesntmatter.org/ws",
                  "-p", self.test_base_path,
                  "-C", "ws",
                  "--install-extras",
                  "--extra-package-location", "http://nogood.something.x/"]
     rc = configure.main(conf_args)
     self.assertNotEqual(rc, 0)
예제 #13
0
 def test_config_works_with_install_extras(self):
     if 'DCM_AGENT_TEST_EXTRA_PACKAGE_URL' not in os.environ:
         raise unittest.SkipTest("No extras package known, skipping")
     conf_args = [
         "-c", "aMazOn", "-u", "http://doesntmatter.org/ws", "-p",
         self.test_base_path, "-C", "ws", "--install-extras",
         "--extra-package-location",
         os.environ['DCM_AGENT_TEST_EXTRA_PACKAGE_URL']
     ]
     rc = configure.main(conf_args)
     self.assertEqual(rc, 0)
예제 #14
0
    def test_default_chef_client(self):
        conf_args = ["-c", "aMazOn",
                     "-u", "http://doesntmatter.org/ws",
                     "-p", self.test_base_path,
                     "-C", "ws"]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        parser = configparser.ConfigParser()
        parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))
        chef_client_version = parser.get("configuration_management", "chef_client_version")
        self.assertEqual(chef_client_version, "11.16.4")
예제 #15
0
    def test_cloud_name_case(self):
        conf_args = ["-c", "aMazOn",
                     "-u", "http://doesntmatter.org/ws",
                     "-p", self.test_base_path,
                     "-C", "ws"]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        parser = configparser.SafeConfigParser()
        parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))
        cloud_from_file = parser.get("cloud", "type")
        self.assertEqual(cloudmetadata.CLOUD_TYPES.Amazon, cloud_from_file)
예제 #16
0
    def test_cloud_name_case(self):
        conf_args = [
            "-c", "aMazOn", "-u", "http://doesntmatter.org/ws", "-p",
            self.test_base_path, "-C", "ws"
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        parser = configparser.SafeConfigParser()
        parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))
        cloud_from_file = parser.get("cloud", "type")
        self.assertEqual(cloudmetadata.CLOUD_TYPES.Amazon, cloud_from_file)
예제 #17
0
 def test_config_works_with_install_extras(self):
     if 'DCM_AGENT_TEST_EXTRA_PACKAGE_URL' not in os.environ:
         raise unittest.SkipTest("No extras package known, skipping")
     conf_args = ["-c", "aMazOn",
                  "-u", "http://doesntmatter.org/ws",
                  "-p", self.test_base_path,
                  "-C", "ws",
                  "--install-extras",
                  "--extra-package-location",
                  os.environ['DCM_AGENT_TEST_EXTRA_PACKAGE_URL']]
     rc = configure.main(conf_args)
     self.assertEqual(rc, 0)
예제 #18
0
    def test_config_chef_client(self):
        conf_args = [
            "-c", "aMazOn", "-u", "http://doesntmatter.org/ws", "-p",
            self.test_base_path, "-C", "ws", "--chef-client-version", "12.6"
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        parser = configparser.ConfigParser()
        parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))
        chef_client_version = parser.get("configuration_management",
                                         "chef_client_version")
        self.assertEqual(chef_client_version, "12.6")
예제 #19
0
    def test_confs_created_if_not_exist(self):
        # original config
        conf_args = [
            "-c", "Amazon", "-u", "http://doesntmatter.org/ws", "-p",
            self.test_base_path, "-C", "ws"
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)
        logging_file = os.path.join(self.test_base_path, "etc/logging.yaml")
        plugin_file = os.path.join(self.test_base_path, "etc/plugin.conf")

        #delete files after install and config
        os.remove(logging_file)
        os.remove(plugin_file)
        self.assertFalse(os.path.isfile(logging_file))
        self.assertFalse(os.path.isfile(plugin_file))

        #redo original config
        conf_args = ["-r", os.path.join(self.test_base_path, "etc/agent.conf")]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)
        self.assertTrue(os.path.isfile(plugin_file))
        self.assertTrue(os.path.isfile(logging_file))
예제 #20
0
    def test_confs_created_if_not_exist(self):
         # original config
        conf_args = ["-c", "Amazon",
                     "-u", "http://doesntmatter.org/ws",
                     "-p", self.test_base_path,
                     "-C", "ws"]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)
        logging_file = os.path.join(self.test_base_path, "etc/logging.yaml")
        plugin_file = os.path.join(self.test_base_path, "etc/plugin.conf")

        #delete files after install and config
        os.remove(logging_file)
        os.remove(plugin_file)
        self.assertFalse(os.path.isfile(logging_file))
        self.assertFalse(os.path.isfile(plugin_file))

        #redo original config
        conf_args = ["-r", os.path.join(self.test_base_path, "etc/agent.conf")]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)
        self.assertTrue(os.path.isfile(plugin_file))
        self.assertTrue(os.path.isfile(logging_file))
예제 #21
0
    def test_dir_configure(self):
        conf_args = ["-c", "Amazon",
                     "-u", "http://doesntmatter.org/ws",
                     "-p", self.test_base_path,
                     "-C", "ws"]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        subdirs_to_check = ["secure", "etc", "home", "logs", "bin",
                            "etc/agent.conf", "etc/logging.yaml",
                            "etc/plugin.conf"]

        for d in subdirs_to_check:
            d = os.path.join(self.test_base_path, d)
            self.assertTrue(os.path.exists(d), d)
예제 #22
0
 def _write_conf(self):
     run_as_user = getpass.getuser()
     test_base_path = tempfile.mkdtemp()
     conf_args = ["-c", "Amazon",
                  "-u", "http://doesntmatter.org/ws",
                  "-p", test_base_path,
                  "-C", "ws",
                  "-m", os.path.join(test_base_path, "mount"),
                  "-t", os.path.join(test_base_path, "tmp"),
                  "-U", run_as_user,
                  "-l", "/tmp/agent_test_log.log"]
     rc = configure.main(conf_args)
     if rc != 0:
         raise Exception("We could not configure the test env")
     return test_base_path
예제 #23
0
 def setUpClass(cls):
     cls.run_as_user = getpass.getuser()
     test_utils.connect_to_debugger()
     cls.test_base_path = tempfile.mkdtemp()
     cls.test_conf_path = os.path.join(cls.test_base_path, "etc",
                                       "agent.conf")
     conf_args = [
         "-c", "Amazon", "-u", "http://doesntmatter.org/ws", "-p",
         cls.test_base_path, "-t",
         os.path.join(cls.test_base_path, "tmp"), "-C", "ws", "-U",
         cls.run_as_user, "-l", "/tmp/agent_status_test.log"
     ]
     rc = configure.main(conf_args)
     if rc != 0:
         raise Exception("We could not configure the test env")
예제 #24
0
 def setUpClass(cls):
     cls.run_as_user = getpass.getuser()
     test_utils.connect_to_debugger()
     cls.test_base_path = tempfile.mkdtemp()
     cls.test_conf_path = os.path.join(
         cls.test_base_path, "etc", "agent.conf")
     conf_args = ["-c", "Other",
                  "-u", "http://doesntmatter.org/ws",
                  "-p", cls.test_base_path,
                  "-t", os.path.join(cls.test_base_path, "tmp"),
                  "-C", "ws",
                  "-U", cls.run_as_user,
                  "-l", "/tmp/agent_status_test.log"]
     rc = configure.main(conf_args)
     if rc != 0:
         raise Exception("We could not configure the test env")
예제 #25
0
    def test_dir_configure(self):
        conf_args = [
            "-c", "Amazon", "-u", "http://doesntmatter.org/ws", "-p",
            self.test_base_path, "-C", "ws"
        ]
        rc = configure.main(conf_args)
        self.assertEqual(rc, 0)

        subdirs_to_check = [
            "secure", "etc", "home", "logs", "bin", "etc/agent.conf",
            "etc/logging.yaml", "etc/plugin.conf"
        ]

        for d in subdirs_to_check:
            d = os.path.join(self.test_base_path, d)
            self.assertTrue(os.path.exists(d), d)
예제 #26
0
 def setUpClass(cls):
     cls.run_as_user = getpass.getuser()
     test_utils.connect_to_debugger()
     cls.test_base_path = tempfile.mkdtemp()
     cls.test_conf_path = os.path.join(
         cls.test_base_path, "etc", "agent.conf")
     conf_args = ["-c", "Other",
                  "-u", "http://doesntmatter.org/ws",
                  "-p", cls.test_base_path,
                  "-t", os.path.join(cls.test_base_path, "tmp"),
                  "-C", "ws",
                  "-U", cls.run_as_user,
                  "-l", "/tmp/agent_status_test.log",
                  "--intrusion-detection-ossec", "true",
                  "--install-extras",
                  "--extra-package-location", os.environ['DCM_AGENT_TEST_EXTRA_PACKAGE_URL']]
     rc = configure.main(conf_args)
     if rc != 0:
         raise Exception("We could not configure the test env")
예제 #27
0
 def setUpClass(cls):
     test_utils.connect_to_debugger()
     cls.run_as_user = getpass.getuser()
     cls.test_base_path = tempfile.mkdtemp()
     conf_args = [
         "-c", "Amazon", "-u", "http://doesntmatter.org/ws", "-p",
         cls.test_base_path, "-t",
         os.path.join(cls.test_base_path, "tmp"), "-C", "success_tester",
         "-U", cls.run_as_user, "-l", "/tmp/agent_test_log.log"
     ]
     if 'DCM_AWS_EXTRAS_BUCKET' in os.environ:
         extras_repo = ("http://" + os.environ['DCM_AWS_EXTRAS_BUCKET'] +
                        ".s3.amazonaws.com")
         conf_args.append("--extra-package-location")
         conf_args.append(extras_repo)
     if 'DCM_INSTALL_EXTRAS' in os.environ:
         conf_args.append("--install-extras")
     rc = configure.main(conf_args)
     if rc != 0:
         raise Exception("We could not configure the test env")
예제 #28
0
 def setUpClass(cls):
     test_utils.connect_to_debugger()
     cls.run_as_user = getpass.getuser()
     cls.test_base_path = tempfile.mkdtemp()
     conf_args = ["-c", "Amazon",
                  "-u", "http://doesntmatter.org/ws",
                  "-p", cls.test_base_path,
                  "-t", os.path.join(cls.test_base_path, "tmp"),
                  "-C", "success_tester",
                  "-U", cls.run_as_user,
                  "-l", "/tmp/agent_test_log.log"]
     if 'DCM_AWS_EXTRAS_BUCKET' in os.environ:
         extras_repo = ("http://" + os.environ['DCM_AWS_EXTRAS_BUCKET']
                        + ".s3.amazonaws.com")
         conf_args.append("--extra-package-location")
         conf_args.append(extras_repo)
     if 'DCM_INSTALL_EXTRAS' in os.environ:
         conf_args.append("--install-extras")
     rc = configure.main(conf_args)
     if rc != 0:
         raise Exception("We could not configure the test env")
예제 #29
0
    def test_all_cloud_configure(self):
        for cloud in configure.cloud_choices:
            if cloud.lower() == "unknown":
                continue
            conf_args = ["-p", self.test_base_path, "-c", cloud]
            rc = configure.main(conf_args)
            self.assertEqual(rc, 0)

            parser = configparser.SafeConfigParser()
            parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))

            cloud_from_file = parser.get("cloud", "type")
            self.assertEqual(cloud_from_file.lower(), cloud.lower())

            try:
                cloud_from_file = parser.get("cloud", "metadata_url")
            except:
                cloud_from_file = None
            if cloud == "Amazon":
                mu = "http://169.254.169.254/latest/meta-data/"
                self.assertEqual(mu, cloud_from_file)
            elif cloud == "OpenStack":
                mu = ("http://169.254.169.254/openstack/2012-08-10/"
                      "meta_data.json")
                self.assertEqual(mu, cloud_from_file)
            elif cloud == "Google":
                mu = "http://metadata.google.internal/computeMetadata/v1"
                self.assertEqual(mu, cloud_from_file)
            elif cloud == "DigitalOcean":
                mu = "http://169.254.169.254/metadata/v1"
                self.assertEqual(mu, cloud_from_file)
            elif cloud == "CloudStack":
                self.assertIsNone(cloud_from_file)
            elif cloud == "CloudStack3":
                self.assertIsNone(cloud_from_file)
            else:
                self.assertIsNone(cloud_from_file)
예제 #30
0
    def test_all_cloud_configure(self):
        for cloud in configure.cloud_choices:
            if cloud.lower() == "unknown":
                continue
            conf_args = ["-p", self.test_base_path, "-c", cloud]
            rc = configure.main(conf_args)
            self.assertEqual(rc, 0)

            parser = configparser.SafeConfigParser()
            parser.read(os.path.join(self.test_base_path, "etc", "agent.conf"))

            cloud_from_file = parser.get("cloud", "type")
            self.assertEqual(cloud_from_file.lower(), cloud.lower())

            try:
                cloud_from_file = parser.get("cloud", "metadata_url")
            except:
                cloud_from_file = None
            if cloud == "Amazon":
                mu = "http://169.254.169.254/latest/meta-data/"
                self.assertEqual(mu, cloud_from_file)
            elif cloud == "OpenStack":
                mu = ("http://169.254.169.254/openstack/2012-08-10/"
                      "meta_data.json")
                self.assertEqual(mu, cloud_from_file)
            elif cloud == "Google":
                mu = "http://metadata.google.internal/computeMetadata/v1"
                self.assertEqual(mu, cloud_from_file)
            elif cloud == "DigitalOcean":
                mu = "http://169.254.169.254/metadata/v1"
                self.assertEqual(mu, cloud_from_file)
            elif cloud == "CloudStack":
                self.assertIsNone(cloud_from_file)
            elif cloud == "CloudStack3":
                self.assertIsNone(cloud_from_file)
            else:
                self.assertIsNone(cloud_from_file)