Ejemplo n.º 1
0
    def create_tenant(self,tenant_conf,tenant_index):


            tenant_name_pattern = tenant_conf['name']
            tenant_name  = re.sub("XXX",str(tenant_index),tenant_name_pattern)
            #tenant_obj = PerTenant(self.vnc_lib,self.connections,tenant_conf,tenant_index)
            #tenant_id = tenant_obj.tenant_project_obj.create(tenant_name)
            tenant_obj = ConfigProject(self.connections)
            tenant_id = tenant_obj.create(tenant_name)
            tenant_obj.tenant_id = tenant_id
            self.db.set_project_id(tenant_name,tenant_id)
            tenant_connections = tenant_obj.get_connections()
            tenant_obj.update_default_sg(uuid=tenant_id)
            import pdb;pdb.set_trace()
            ipam_name_pattern   = tenant_conf['virtual_networks']['IPAM']['name']
             
            vm_index = 0
            tenant_obj.create_tenant_nova_client()
        
            vm_name_pattern          = tenant_conf['virtual_networks']['virtual_machines']['name']
            ipam_name_pattern        = tenant_conf['virtual_networks']['IPAM']['name']
            data_domain_name_pattern = tenant_conf['virtual_networks']['vDNS'][1]['domain_name']
            vn_name_pattern          = tenant_conf['virtual_networks']['data_vn_name']
            vns_count                = tenant_conf['virtual_networks']['count']
            vm_count                 = tenant_conf['virtual_networks']['virtual_machines']['count'] 

            data_ipam_name = re.sub('XXX',str(tenant_index),ipam_name_pattern)
            data_ipam_name = re.sub('ZZZ','2',data_ipam_name)
            data_ipam_name = re.sub('CCC','data',data_ipam_name)

            data_domain_name = re.sub('XXX',str(tenant_index),data_domain_name_pattern)
            data_domain_name = re.sub('ZZZ','2',data_domain_name)
             
            data_vdns_id = self.global_vdns[data_domain_name].get_uuid()

            ipam_list = self.vnc_lib.network_ipams_list()['network-ipams']
            print "Existing IPAM list:",ipam_list
            ipam_delete_list = [data_ipam_name]

            for ipam in ipam_list:
               domain,project,fq_name = ipam['fq_name']
               if fq_name in ipam_delete_list:
                  obj = IPAM(tenant_connections)
                  ipam_id = ipam['uuid']
                  obj.delete(ipam_id)
                  self.db.delete_ipam(fq_name)

            ipam_obj = IPAM(tenant_connections)
            data_ipam_id = ipam_obj.create(data_ipam_name, data_vdns_id)
            print "DATA IPAM:",data_ipam_id

            policy_name_pattern = tenant_conf['policies']['name']

            allow_rules_network = tenant_conf['policies']['rules']['allow_rules_network']
            allow_rules_port    = tenant_conf['policies']['rules']['allow_rules_port']

            rules = []

            for rule_index in xrange(len(allow_rules_network)):
                 

               r = allow_rules_network[rule_index].split()
               src_nw = r[0]
               dst_nw = r[1]
               r = allow_rules_port[rule_index].split()
               src_port = r[0]
               dst_port = r[1]
               rule = {
                           'direction': '<>', 'simple_action': 'pass',
                           'protocol': 'any',
                           'src_ports': '%s'%src_port, 'dst_ports': '%s'%dst_port,
                           'source_network': '%s'%src_nw, 'dest_network': '%s'%dst_nw,
                       } 

               print "rule:",rule
               rules.append(rule)

            tenant_connections.quantum_h = tenant_connections.get_network_h()
            tenant_connections.api_server_inspect = tenant_connections.get_api_server_inspect_handles()

            policy_name = re.sub('XXX',str(tenant_index),policy_name_pattern)
            policy_obj = Policy(tenant_connections)
            policy_obj.policy_name = policy_name
            print "policy name:",policy_name
            policy_id = policy_obj.create(tenant_connections.inputs,policy_name,rules,tenant_connections)

            for vn_index in xrange(vns_count):

               vn_name = re.sub('XXX',str(tenant_index),vn_name_pattern)
               vn_name = re.sub('YYY',str(vn_index),vn_name)
               
               data_vn_name = re.sub('CCC','data',vn_name)

               vn_obj = VN(tenant_connections)
               self.vn_name = data_vn_name
               cidr = data_cidr_obj.get_next_cidr()
               print "CIDR:",cidr
               subnets = [{'cidr':cidr,'name':self.vn_name+"_subnet"}]
               print "creating VN:",self.vn_name,subnets,data_ipam_id
               data_vn_id = vn_obj.create(self.vn_name,subnets=subnets,ipam_id=data_ipam_id)
               vn_obj.vn_id = data_vn_id
               vn_obj.add_policy(policy_obj.fixture)
            
               for c in xrange(vm_count):
                 vm_name = "vm%d"%vm_index
                 vm_index += 1
                 vm_obj = virtual_machines(tenant_index,tenant_conf,tenant_connections)
                 vm_obj.create_vm(vm_name,self.vn_name,vn_index,self.mgmt_vn_id,data_vn_id,self.glance_image)

            #queue.put(1)
            return tenant_obj
Ejemplo n.º 2
0
    def create_tenant(self, tenant_conf, tenant_index):

        tenant_name_pattern = tenant_conf['name']
        tenant_name = re.sub("XXX", str(tenant_index), tenant_name_pattern)
        #tenant_obj = PerTenant(self.vnc_lib,self.connections,tenant_conf,tenant_index)
        #tenant_id = tenant_obj.tenant_project_obj.create(tenant_name)
        tenant_obj = ConfigProject(self.connections)
        tenant_id = tenant_obj.create(tenant_name)
        tenant_obj.tenant_id = tenant_id
        self.db.set_project_id(tenant_name, tenant_id)
        tenant_connections = tenant_obj.get_connections()
        tenant_obj.update_default_sg(uuid=tenant_id)
        import pdb
        pdb.set_trace()
        ipam_name_pattern = tenant_conf['virtual_networks']['IPAM']['name']

        vm_index = 0
        tenant_obj.create_tenant_nova_client()

        vm_name_pattern = tenant_conf['virtual_networks']['virtual_machines'][
            'name']
        ipam_name_pattern = tenant_conf['virtual_networks']['IPAM']['name']
        data_domain_name_pattern = tenant_conf['virtual_networks']['vDNS'][1][
            'domain_name']
        vn_name_pattern = tenant_conf['virtual_networks']['data_vn_name']
        vns_count = tenant_conf['virtual_networks']['count']
        vm_count = tenant_conf['virtual_networks']['virtual_machines']['count']

        data_ipam_name = re.sub('XXX', str(tenant_index), ipam_name_pattern)
        data_ipam_name = re.sub('ZZZ', '2', data_ipam_name)
        data_ipam_name = re.sub('CCC', 'data', data_ipam_name)

        data_domain_name = re.sub('XXX', str(tenant_index),
                                  data_domain_name_pattern)
        data_domain_name = re.sub('ZZZ', '2', data_domain_name)

        data_vdns_id = self.global_vdns[data_domain_name].get_uuid()

        ipam_list = self.vnc_lib.network_ipams_list()['network-ipams']
        print "Existing IPAM list:", ipam_list
        ipam_delete_list = [data_ipam_name]

        for ipam in ipam_list:
            domain, project, fq_name = ipam['fq_name']
            if fq_name in ipam_delete_list:
                obj = IPAM(tenant_connections)
                ipam_id = ipam['uuid']
                obj.delete(ipam_id)
                self.db.delete_ipam(fq_name)

        ipam_obj = IPAM(tenant_connections)
        data_ipam_id = ipam_obj.create(data_ipam_name, data_vdns_id)
        print "DATA IPAM:", data_ipam_id

        policy_name_pattern = tenant_conf['policies']['name']

        allow_rules_network = tenant_conf['policies']['rules'][
            'allow_rules_network']
        allow_rules_port = tenant_conf['policies']['rules']['allow_rules_port']

        rules = []

        for rule_index in xrange(len(allow_rules_network)):

            r = allow_rules_network[rule_index].split()
            src_nw = r[0]
            dst_nw = r[1]
            r = allow_rules_port[rule_index].split()
            src_port = r[0]
            dst_port = r[1]
            rule = {
                'direction': '<>',
                'simple_action': 'pass',
                'protocol': 'any',
                'src_ports': '%s' % src_port,
                'dst_ports': '%s' % dst_port,
                'source_network': '%s' % src_nw,
                'dest_network': '%s' % dst_nw,
            }

            print "rule:", rule
            rules.append(rule)

        tenant_connections.quantum_h = tenant_connections.get_network_h()
        tenant_connections.api_server_inspect = tenant_connections.get_api_server_inspect_handles(
        )

        policy_name = re.sub('XXX', str(tenant_index), policy_name_pattern)
        policy_obj = Policy(tenant_connections)
        policy_obj.policy_name = policy_name
        print "policy name:", policy_name
        policy_id = policy_obj.create(tenant_connections.inputs, policy_name,
                                      rules, tenant_connections)

        for vn_index in xrange(vns_count):

            vn_name = re.sub('XXX', str(tenant_index), vn_name_pattern)
            vn_name = re.sub('YYY', str(vn_index), vn_name)

            data_vn_name = re.sub('CCC', 'data', vn_name)

            vn_obj = VN(tenant_connections)
            self.vn_name = data_vn_name
            cidr = data_cidr_obj.get_next_cidr()
            print "CIDR:", cidr
            subnets = [{'cidr': cidr, 'name': self.vn_name + "_subnet"}]
            print "creating VN:", self.vn_name, subnets, data_ipam_id
            data_vn_id = vn_obj.create(self.vn_name,
                                       subnets=subnets,
                                       ipam_id=data_ipam_id)
            vn_obj.vn_id = data_vn_id
            vn_obj.add_policy(policy_obj.fixture)

            for c in xrange(vm_count):
                vm_name = "vm%d" % vm_index
                vm_index += 1
                vm_obj = virtual_machines(tenant_index, tenant_conf,
                                          tenant_connections)
                vm_obj.create_vm(vm_name, self.vn_name, vn_index,
                                 self.mgmt_vn_id, data_vn_id,
                                 self.glance_image)

        #queue.put(1)
        return tenant_obj