Example #1
0
File: unit.py Project: Tout/china
    def __init__(self, ctx, unit_name, role_name=None, num_instances=1):
        self.region_context = ctx
        self.unit_name = unit_name
        if role_name is None:
            self.role_name = unit_name
        else:
            self.role_name = role_name
        self.num_instances = int(num_instances)

        self.env_name = ctx.specific_environment['name']
        self.env_group_name = util.env_prefix(ctx) + self.env_name
        self.group_name = self.env_group_name + "-" + unit_name

        self.context = dict(ctx.region_config.items() + ctx.default_environment.items() + ctx.specific_environment.items())
        # print "raw context is "+pformat(self.context)
        self.context['unit_name'] = unit_name
        self.context['env_name'] = self.env_name
        self.context['env_group_name'] = self.env_group_name
        self.unit_yml_dir = ctx.blueprints_dir + "/units/" + unit_name
        self.yml = self.unit_yml_dir + "/unit.yml"
        self.config = util.load_yaml(self.yml, self.context)
        print "loaded "+unit_name+" yml: "+pformat(self.config)
        if 'override_region_context' in self.config:
            for key, value in self.config['override_region_context'].iteritems():
                self.region_context.region_config[key] = value
        print("config====")
        pprint(self.config)
Example #2
0
File: unit.py Project: Tout/china
def add_to_haproxy(unit, host, iid):
    while True:
        # add it to the chef config
        output = knife_environment_show(unit.env_name)
        if util.is_noop():
            temp = "debug-knife-file.json"
            iid2privipv4(iid)
        else:
            data = json.loads(output)

            block = 'haproxy-' + unit.unit_name
            region_context = unit.region_context
            host = util.env_prefix(region_context)+unit.env_name+"-"+unit.unit_name+"-"+iid+"."+ region_context.region_config['unit_domain']
            ip = iid2privipv4(iid)

            # print("looking for override/haproxy/"+block+"/servers/ to add host:"+host)
            data['override_attributes']['haproxy'][block]["servers"].append([host, ip])

            temp = util.write_temp_file(json.dumps(data), suffix=".json")

        util.execute_shell(["knife", "environment", "from", "file", temp])

        # verify host is now in output
        output = knife_environment_show(unit.env_name)
        print >> sys.stderr, "looking for host="+host+" in output: "+str(output)
        if util.is_noop():
            return

        if host in output:
            return
        else:
            time.sleep(10)
Example #3
0
    def create_environment(self, unit_name):
        # Create the EC2 group
        env_name = self.specific_environment['name']
        group_name = util.env_prefix(self) + env_name
        region_name = self.region_config['EC2_REGION']
        ec2.create_group(group_name, 'Environment ' + env_name, region_name)

        for env in [ self.default_environment, self.specific_environment ]:
            if 'authorizations' in env:
                for auth in env['authorizations']:
                    ec2.authorize(auth, group_name, self.region_config)

        active_unit = unit.ChinaUnit(self, unit_name)
        active_unit.create_ec2_group()
        if 'authorizations' in active_unit.config:
            authorizations = active_unit.config['authorizations']

            # default and env-specific grants
            for env in ['default', active_unit.env_name]:
                if env in authorizations:
                    for auth in authorizations[env]:
                        ec2.authorize(auth, active_unit.group_name, self.region_config)