Esempio n. 1
0
    def test_gce_config(self):
        self.config['mycluster']['cloud'] = {
            "provider": "google",
            "gce_client_id": "***fill in your data here***",
            "gce_client_secret": "***fill in your data here***",
            "gce_project_id": "test-id"}

        validator = ConfigValidator(self.config)
        validator.validate()
Esempio n. 2
0
    def test_invalid_config(self):
        '''
        Invalid configuration
        '''
        # check wrong file path
        config = copy.deepcopy(self.config)
        config["mycluster"]["login"]["user_key_public"] = "/tmp/elastic-test"
        validator = ConfigValidator(config)
        self.assertRaises(Invalid, validator.validate)

        # check wrong url
        config = copy.deepcopy(config)
        config["mycluster"]["setup"]["ec2_host"] = "www.elasticluster"
        validator = ConfigValidator(config)
        self.assertRaises(Invalid, validator.validate)

        # check all mandatory properties
        optional = [
            "frontend_groups", "compute_groups", "frontend_nodes",
            "compute_nodes", "security_group", "flavor", "image_id",
            "playbook_path", "frontend", "compute"
        ]
        config = copy.deepcopy(config)
        for cluster, sections in config.iteritems():
            for section, properties in sections.iteritems():
                for property, value in properties.iteritems():
                    if property not in optional:
                        config_tmp = copy.deepcopy(config)
                        del config_tmp[cluster][section][property]
                        validator = ConfigValidator(config_tmp)
                        self.assertRaises(Invalid, validator.validate)

        # check all node properties
        mandatory = ["flavor", "image_id", "security_group"]
        config = copy.deepcopy(config)
        for node, properties in config["mycluster"]["nodes"].iteritems():
            for property in properties.iterkeys():
                if property in mandatory:
                    config_tmp = copy.deepcopy(config)
                    del config_tmp["mycluster"]["nodes"][node][property]
                    validator = ConfigValidator(config_tmp)
                    self.assertRaises(Invalid, validator.validate)
Esempio n. 3
0
    def test_invalid_ec2_vpc_config(self):
        """
        Invalid EC2 VPC configuration
        """
        # VPC without cluster network_ids definition
        config = copy.deepcopy(self.config)
        self.assertEqual(config["mycluster"]["cloud"]["provider"], "ec2_boto")
        config["mycluster"]["cloud"]["vpc"] = "vpc-c0ffee"
        if "network_ids" in config["mycluster"]["cluster"]:
            del config["mycluster"]["cluster"]["network_ids"]
        validator = ConfigValidator(config)
        self.assertRaises(Invalid, validator.validate)

        # network_ids definition without a VPC
        config = copy.deepcopy(self.config)
        self.assertEqual(config["mycluster"]["cloud"]["provider"], "ec2_boto")
        config["mycluster"]["nodes"]["frontend"]["network_ids"] = "subnet-deadbeef"
        if "vpc" in config["mycluster"]["cloud"]:
            del config["mycluster"]["cloud"]["vpc"]
        validator = ConfigValidator(config)
        self.assertRaises(Invalid, validator.validate)
Esempio n. 4
0
 def test_valid_config(self):
     '''
     Valid configuration
     '''
     validator = ConfigValidator(self.config)
     validator.validate()