Ejemplo n.º 1
0
 def create(self, name):
     domain = self.vnc_handle.domain_read(fq_name=['default-domain'])
     obj = vnc_api.Project(name=name, parent_obj=domain)
     try:
         self.vnc_handle.project_create(obj)
     except:
         print "ERROR: Failed to create the project {}".format(name)
Ejemplo n.º 2
0
    def _ksv3_sync_project_to_vnc(self, id=None, name=None):
        self._get_keystone_conn()
        self._get_vnc_conn()
        if id:
            ks_project = \
                self._ks_project_get(id=id.replace('-', ''))
            display_name = ks_project['name']
            project_id = id
        elif name:
            ks_project = \
                self._ks_project_get(name=name)
            project_id = ks_project['id']
            display_name = name

        domain_uuid = self._ksv3_domain_id_to_uuid(ks_project['domain_id'])
        dom_obj = self._vnc_lib.domain_read(id=domain_uuid)

        # if earlier project exists with same name but diff id,
        # create with uniqified fq_name
        fq_name = dom_obj.get_fq_name() + [display_name]
        try:
            old_id = self._vnc_lib.fq_name_to_id('project', fq_name)
            project_name = '%s-%s' % (display_name, str(uuid.uuid4()))
        except vnc_api.NoIdError:
            project_name = display_name

        proj_obj = vnc_api.Project(project_name, parent_obj=dom_obj)
        proj_obj.uuid = project_id
        self._vnc_lib.project_create(proj_obj)
Ejemplo n.º 3
0
    def _create_vn_ri_vmi(self, obj_count=1):
        vn_objs = []
        ipam_objs = []
        ri_objs = []
        vmi_objs = []
        for i in range(obj_count):
            vn_obj = vnc_api.VirtualNetwork('%s-vn-%s' % (self.id(), i))

            ipam_obj = vnc_api.NetworkIpam('%s-ipam-%s' % (self.id(), i))
            vn_obj.add_network_ipam(ipam_obj, vnc_api.VnSubnetsType())
            self._vnc_lib.network_ipam_create(ipam_obj)
            ipam_objs.append(ipam_obj)

            self._vnc_lib.virtual_network_create(vn_obj)
            vn_objs.append(vn_obj)

            ri_obj = vnc_api.RoutingInstance('%s-ri-%s' % (self.id(), i),
                                             parent_obj=vn_obj)
            self._vnc_lib.routing_instance_create(ri_obj)
            ri_objs.append(ri_obj)

            vmi_obj = vnc_api.VirtualMachineInterface(
                '%s-vmi-%s' % (self.id(), i), parent_obj=vnc_api.Project())
            vmi_obj.add_virtual_network(vn_obj)
            self._vnc_lib.virtual_machine_interface_create(vmi_obj)
            vmi_objs.append(vmi_obj)

        return vn_objs, ipam_objs, ri_objs, vmi_objs
    def test_duplicate_name(self):
        proj_obj = vnc_api.Project('project-%s' % self.id())
        self._vnc_lib.project_create(proj_obj)
        for res_type in [
                'network', 'subnet', 'security_group', 'port', 'router'
        ]:
            # create a resource
            res_name = '%s-%s' % (res_type, self.id())
            res_q = self._create_resource_with_fallback(
                res_type, proj_obj.uuid, extra_res_fields={'name': res_name})
            self.assertThat(res_q['name'], Equals(res_name))

            # create another resource
            res_q = self._create_resource_with_fallback(
                res_type, proj_obj.uuid, extra_res_fields={'name': res_name})
            self.assertThat(res_q['name'], Equals(res_name))
            if res_type != 'subnet':
                self.assertThat(res_q['fq_name'][-1],
                                Not(Equals(res_q['name'])))

            # list by filter of new name
            res_list = self.list_resource(res_type,
                                          proj_uuid=proj_obj.uuid,
                                          req_filters={'name': res_name})
            self.assertThat(len(res_list), Equals(2))
    def test_dup_domain(self):
        orig_ks_domains_list = self.openstack_driver._ks_domains_list
        orig_ks_domain_get = self.openstack_driver._ks_domain_get
        try:
            self.openstack_driver._ks_domains_list = self.openstack_driver._ksv3_domains_list
            self.openstack_driver._ks_domain_get = self.openstack_driver._ksv3_domain_get
            logger.info('Creating first domain in "keystone"')
            dom_id = str(uuid.uuid4())
            dom_name = self.id()
            test_case.get_keystone_client().domains.add_domain(
                dom_id, dom_name)
            dom_obj = self._vnc_lib.domain_read(id=dom_id)
            self.assertThat(dom_obj.name, Equals(dom_name))
            # create a project under domain so synch delete of domain fails
            proj_obj = vnc_api.Project('proj-%s' % (self.id()), dom_obj)
            self._vnc_lib.project_create(proj_obj)

            logger.info(
                'Creating second domain with same name diff id in "keystone"')
            new_dom_id = str(uuid.uuid4())
            test_case.get_keystone_client().domains.add_domain(
                new_dom_id, dom_name)
            new_dom_obj = self._vnc_lib.domain_read(id=new_dom_id)
            self.assertThat(new_dom_obj.name, Not(Equals(dom_name)))
            self.assertThat(new_dom_obj.name, Contains(dom_name))
            self.assertThat(new_dom_obj.display_name, Equals(dom_name))

            self._vnc_lib.project_delete(id=proj_obj.uuid)
            self._vnc_lib.domain_delete(id=dom_id)
            self._vnc_lib.domain_delete(id=new_dom_id)
        finally:
            self.openstack_driver._ks_domains_list = orig_ks_domains_list
            self.openstack_driver._ks_domain_get = orig_ks_domain_get
    def test_name_change(self):
        proj_obj = vnc_api.Project('project-%s' % self.id())
        self._vnc_lib.project_create(proj_obj)
        for res_type in [
                'network', 'subnet', 'security_group', 'port', 'router'
        ]:
            # create a resource
            res_name = '%s-%s' % (res_type, self.id())
            res_q = self._create_resource_with_fallback(
                res_type, proj_obj.uuid, extra_res_fields={'name': res_name})
            self.assertThat(res_q['name'], Equals(res_name))
            if res_type != 'subnet':
                self.assertThat(res_q['fq_name'], Contains(res_name))

            # change its name
            # new_res_name, res_q = self._change_resource_name(res_type, res_q)
            new_res_name = 'new-%s' % res_name
            res_q = self.update_resource(
                res_type,
                res_q['id'],
                proj_obj.uuid,
                extra_res_fields={'name': new_res_name})
            self.assertThat(res_q['name'], Equals(new_res_name))
            if res_type != 'subnet':
                self.assertThat(res_q['fq_name'], Contains(res_name))
                self.assertThat(res_q['fq_name'], Not(Contains(new_res_name)))

            # list by filter of new name
            res_list = self.list_resource(res_type,
                                          proj_uuid=proj_obj.uuid,
                                          req_filters={'name': new_res_name})
            self.assertThat(len(res_list), Equals(1))
            self.assertThat(res_list[0]['name'], Equals(new_res_name))
Ejemplo n.º 7
0
    def project_read(self, **kwargs):
        fq_name_str = None
        uid = None
        if 'id' in kwargs:
            if 'project' not in self.resources_collection or (
                    kwargs['id'] not in self.resources_collection['project']):
                fq_name_str = "default-domain:%s" % kwargs['id']
                uid = kwargs['id']

        if ('fq_name_str' in kwargs
                or ('fq_name' in kwargs and kwargs['fq_name'])):
            fq_name_str = (kwargs['fq_name_str'] if 'fq_name_str' in kwargs
                           else ':'.join(kwargs['fq_name']))

        if 'project' not in self.resources_collection or (
                fq_name_str
                and fq_name_str not in (self.resources_collection['project'])):
            fq_name = fq_name_str.split(":")
            domain_obj = self.domain_read(fq_name_str=fq_name[0])
            proj_obj = vnc_api.Project(parent_obj=domain_obj, name=fq_name[-1])
            if uid:
                proj_obj.uuid = uid
            self.project_create(proj_obj)

        return MockVnc.ReadCallables('project',
                                     self.resources_collection['project'],
                                     self.resources_collection, self)(**kwargs)
 def __init__(self, vnc_cfg, auth_cfg=None):
     if auth_cfg is None:
         auth_cfg = {}
     self.vnc_lib = vnc_api.VncApi(
         api_server_host=vnc_cfg.get("api_server_host"),
         api_server_port=vnc_cfg.get("api_server_port"),
         api_server_use_ssl=vnc_cfg.get("api_server_use_ssl"),
         apicertfile=vnc_cfg.get("api_certfile"),
         apikeyfile=vnc_cfg.get("api_keyfile"),
         apicafile=vnc_cfg.get("api_cafile"),
         apiinsecure=vnc_cfg.get("api_server_insecure"),
         username=auth_cfg.get("auth_user"),
         password=auth_cfg.get("auth_password"),
         tenant_name=auth_cfg.get("auth_tenant"),
         auth_token_url=auth_cfg.get("auth_token_url"),
     )
     self.project_name = vnc_cfg.get("project_name", "test-vcenter-fabric")
     try:
         self.vnc_lib.project_create(
             vnc_api.Project(name=self.project_name)
         )
     except vnc_api.RefsExistError:
         pass
     self.fabric_name = vnc_cfg.get("fabric_name", "test-fabric")
     self.create_fabric()
Ejemplo n.º 9
0
 def test_uuid(self):
     proj_obj = vnc_api.Project('project-%s' % self.id())
     self._vnc_lib.project_create(proj_obj)
     for res_type in ['network', 'subnet', 'security_group', 'port', 'router']:
         res_uuid = str(uuid.uuid4())
         res_name = '%s-%s' % (res_type, res_uuid)
         res_q = self._create_resource_with_fallback(res_type, proj_obj.uuid, extra_res_fields={'name': res_name, 'id': res_uuid})
         self.assertThat(res_q['id'], Equals(res_uuid))
Ejemplo n.º 10
0
    def _ksv2_sync_project_to_vnc(self, id=None):
        self._get_keystone_conn()
        self._get_vnc_conn()
        ks_project = self._ks_project_get(id=id.replace('-', ''))

        proj_obj = vnc_api.Project(ks_project['name'])
        proj_obj.uuid = id
        self._vnc_lib.project_create(proj_obj)
Ejemplo n.º 11
0
    def _ksv3_sync_project_to_vnc(self, id=None, name=None):
        self._get_keystone_conn()
        self._get_vnc_conn()
        if id:
            ks_project = \
                self._ks_project_get(id=id.replace('-', ''))
            display_name = ks_project['name']
            project_id = id
        elif name:
            ks_project = \
                self._ks_project_get(name=name)
            project_id = ks_project['id']
            display_name = name

        domain_uuid = self._ksv3_domain_id_to_uuid(ks_project['domain_id'])
        dom_obj = self._vnc_lib.domain_read(id=domain_uuid)

        # if earlier project exists with same name but diff id,
        # create with uniqified fq_name
        fq_name = dom_obj.get_fq_name() + [display_name]
        project_name = display_name
        try:
            old_id = self._vnc_lib.fq_name_to_id('project', fq_name)
            if old_id == project_id:
                self._vnc_project_ids.add(project_id)
                return
            # Project might have been quickly deleted + added.
            # Since project delete sync happens only in timer(polling),
            # try deleting old one synchronously. If delete fails due
            # to resources being present in project, proceed/fail
            # based on configuration
            try:
                self._vnc_lib.project_delete(fq_name=fq_name)
            except vnc_api.NoIdError:
                pass
            except vnc_api.RefsExistError:
                if self._resync_stale_mode == 'new_unique_fqn':
                    project_name = '%s-%s' %(display_name, str(uuid.uuid4()))
                else:
                    errmsg = "Old project %s fqn %s exists and not empty" %(
                        old_id, fq_name)
                    self._sandesh_logger.error(errmsg)
                    raise Exception(errmsg)
        except vnc_api.NoIdError:
            pass

        proj_obj = vnc_api.Project(project_name, parent_obj=dom_obj)

        if self._contrail_vcenter_mode == 'vcenter_only':
            id_perms = IdPermsType(enable=True,
                        creator="vcenter-plugin",
                        description="contrail api synced from keystone")
            proj_obj.set_id_perms(id_perms)
        proj_obj.display_name = display_name
        proj_obj.uuid = project_id
        self._vnc_lib.project_create(proj_obj)
        self._vnc_domain_ids.add(domain_uuid)
        self._vnc_project_ids.add(project_id)
Ejemplo n.º 12
0
 def _create_no_rule_sg(self):
     domain_obj = vnc_api.Domain(SG_NO_RULE_FQ_NAME[0])
     proj_obj = vnc_api.Project(SG_NO_RULE_FQ_NAME[1], domain_obj)
     sg_rules = vnc_api.PolicyEntriesType()
     id_perms = vnc_api.IdPermsType(
         enable=True,
         description="Security group with no rules",
         user_visible=False)
     sg_obj = vnc_api.SecurityGroup(name=SG_NO_RULE_NAME,
                                    parent_obj=proj_obj,
                                    security_group_entries=sg_rules,
                                    id_perms=id_perms)
     self._resource_create(sg_obj)
     return sg_obj
Ejemplo n.º 13
0
 def pre_project_read_fqname(self, fq_name):
     if not self._keystone_sync_on_demand or fq_name == None:
         # project added via poll
         return
     name = fq_name[-1]
     id = self._openstack_drv._ks_project_get(id=None, name=name).get('id')
     if id:
         proj_obj = vnc_api.Project(name)
         proj_obj.fq_name = list(fq_name)
         proj_obj.display_name = name
         proj_obj.uuid = str(uuid.UUID(id))
         try:
             self._vnc_lib.project_create(proj_obj)
         except RefsExistError as e:
             pass
         self._openstack_drv._vnc_project_ids.add(id)
     else:
         raise Exception('project %s not presend in keystone' % (name))
Ejemplo n.º 14
0
    def _ksv2_sync_project_to_vnc(self, id=None):
        self._get_keystone_conn()
        self._get_vnc_conn()
        ks_project = self._ks_project_get(id=id.replace('-', ''))
        display_name = ks_project['name']

        # if earlier project exists with same name but diff id,
        # create with uniqified fq_name
        fq_name = ['default-domain', display_name]
        try:
            old_id = self._vnc_lib.fq_name_to_id('project', fq_name)
            proj_name = '%s-%s' % (display_name, str(uuid.uuid4()))
        except vnc_api.NoIdError:
            proj_name = display_name

        proj_obj = vnc_api.Project(proj_name)
        proj_obj.uuid = id
        self._vnc_lib.project_create(proj_obj)
Ejemplo n.º 15
0
    def _get_netipam_obj(self, ipam_fq_name=None, vn_obj=None):
        if ipam_fq_name:
            domain_name, project_name, ipam_name = ipam_fq_name

            domain_obj = vnc_api.Domain(domain_name)
            project_obj = vnc_api.Project(project_name, domain_obj)
            netipam_obj = vnc_api.NetworkIpam(ipam_name, project_obj)
            return netipam_obj

        if vn_obj:
            try:
                ipam_fq_name = vn_obj.get_fq_name()[:-1]
                ipam_fq_name.append('default-network-ipam')
                netipam_obj = self._vnc_lib.network_ipam_read(
                    fq_name=ipam_fq_name)
            except vnc_exc.NoIdError:
                netipam_obj = vnc_api.NetworkIpam()
            return netipam_obj
Ejemplo n.º 16
0
    def _ksv3_sync_project_to_vnc(self, id=None, name=None):
        self._get_keystone_conn()
        self._get_vnc_conn()
        if id:
            ks_project = \
                self._ks_project_get(id=id.replace('-', ''))
            project_name = ks_project['name']
            project_id = id
        elif name:
            ks_project = \
                self._ks_project_get(name=name)
            project_id = ks_project['id']
            project_name = name

        domain_uuid = self._ksv3_domain_id_to_uuid(ks_project['domain_id'])
        dom_obj = self._vnc_lib.domain_read(id=domain_uuid)
        proj_obj = vnc_api.Project(project_name, parent_obj=dom_obj)
        proj_obj.uuid = project_id
        self._vnc_lib.project_create(proj_obj)
Ejemplo n.º 17
0
    def neutron_dict_to_vn(self, vn_obj, network_q):
        net_name = network_q.get('name')
        if net_name:
            vn_obj.display_name = net_name

        id_perms = vn_obj.get_id_perms()
        if 'admin_state_up' in network_q:
            id_perms.enable = network_q['admin_state_up']
            vn_obj.set_id_perms(id_perms)

        if 'policys' in network_q:
            policy_fq_names = network_q['policys']
            # reset and add with newly specified list
            vn_obj.set_network_policy_list([], [])
            seq = 0
            for p_fq_name in policy_fq_names:
                domain_name, project_name, policy_name = p_fq_name

                domain_obj = vnc_api.Domain(domain_name)
                project_obj = vnc_api.Project(project_name, domain_obj)
                policy_obj = vnc_api.NetworkPolicy(policy_name, project_obj)

                vn_obj.add_network_policy(
                    policy_obj,
                    vnc_api.VirtualNetworkPolicyType(
                        sequence=vnc_api.SequenceType(seq, 0)))
                seq = seq + 1

        if 'route_table' in network_q:
            rt_fq_name = network_q['route_table']
            if rt_fq_name:
                try:
                    rt_obj = self._vnc_lib.route_table_read(fq_name=rt_fq_name)
                    vn_obj.set_route_table(rt_obj)
                except vnc_api.NoIdError:
                    # TODO() add route table specific exception
                    self._raise_contrail_exception(
                        'NetworkNotFound', net_id=vn_obj.uuid,
                        resource='network')

        return vn_obj
Ejemplo n.º 18
0
    def _ksv2_sync_project_to_vnc(self, id=None):
        self._get_keystone_conn()
        self._get_vnc_conn()
        ks_project = self._ks_project_get(id=id.replace('-', ''))
        display_name = ks_project['name']
        proj_name = display_name

        # if earlier project exists with same name but diff id,
        # create with uniqified fq_name
        fq_name = ['default-domain', display_name]
        try:
            old_id = self._vnc_lib.fq_name_to_id('project', fq_name)
            if old_id == id:
                self._vnc_project_ids.add(id)
                return
            # Project might have been quickly deleted + added.
            # Since project delete sync happens only in timer(polling),
            # try deleting old one synchronously. If delete fails due
            # to resources being present in project, proceed/fail
            # based on configuration
            try:
                self._vnc_lib.project_delete(fq_name=fq_name)
            except vnc_api.NoIdError:
                pass
            except vnc_api.RefsExistError:
                if self._resync_stale_mode == 'new_unique_fqn':
                    proj_name = '%s-%s' % (display_name, str(uuid.uuid4()))
                else:
                    errmsg = "Old project %s fqn %s exists and not empty" % (
                        old_id, fq_name)
                    self._sandesh_logger.error(errmsg)
                    raise Exception(errmsg)
        except vnc_api.NoIdError:
            pass

        proj_obj = vnc_api.Project(proj_name)
        proj_obj.display_name = display_name
        proj_obj.uuid = id
        self._vnc_lib.project_create(proj_obj)
        self._vnc_project_ids.add(id)
Ejemplo n.º 19
0
    def test_uuid_in_duplicate_name(self):
        proj_obj = vnc_api.Project('project-%s' % self.id())
        self._vnc_lib.project_create(proj_obj)
        for res_type in ['network', 'subnet', 'security_group', 'port', 'router']:
            # create a resource
            res_uuid = str(uuid.uuid4())
            res_name = '%s-%s' % (res_type, res_uuid)
            res_q = self._create_resource_with_fallback(res_type, proj_obj.uuid, extra_res_fields={'name': res_name, 'id': res_uuid})
            self.assertThat(res_q['name'], Equals(res_name))
            self.assertThat(res_q['id'], Equals(res_uuid))

            # create another resource
            another_res_uuid = str(uuid.uuid4())
            another_res_q = self._create_resource_with_fallback(res_type, proj_obj.uuid, extra_res_fields={'name': res_name, 'id': another_res_uuid})

            if res_type != 'subnet':
                expected_fq_name = "%s-%s" % (res_name, another_res_uuid)
                self.assertThat(another_res_q['fq_name'][-1], Equals(expected_fq_name))
            self.assertThat(another_res_q['id'], Equals(another_res_uuid))

            res_list = self.list_resource(res_type, proj_uuid=proj_obj.uuid, req_filters={'name': res_name})
            self.assertThat(len(res_list), Equals(2))
    def _resync_projects_forever(self):
        try:
            # get connection to api-server REST interface
            while True:
                try:
                    self._vnc_lib = vnc_api.VncApi(
                        api_server_host=self._vnc_api_ip,
                        api_server_port=self._vnc_api_port,
                        username=self._auth_user,
                        password=self._auth_passwd,
                        tenant_name=self._auth_tenant)
                    break
                except requests.ConnectionError:
                    gevent.sleep(1)

            old_projects = self._vnc_lib.projects_list()['projects']
            old_project_ids = set([proj['uuid'] for proj in old_projects])
        except Exception as e:
            cgitb.Hook(format="text", file=open(self._tmp_file_name,
                                                'w')).handle(sys.exc_info())
            fhandle = open(self._tmp_file_name)
            self._vnc_os_logger.error("%s" % fhandle.read())

        del_proj_list = set()
        while True:
            try:
                # Get tenants/projects from Keystone and audit with api-server
                self._get_keystone_conn()

                # compare new and old set,
                # optimize for common case where nothing has changed,
                # so track the project-ids in a set add '-',
                # keystone gives uuid without...
                try:
                    new_project_ids = set([
                        str(uuid.UUID(proj.id))
                        for proj in self._kc.tenants.list()
                    ])
                except Exception as e:
                    self._kc = None
                    continue

                if old_project_ids == new_project_ids:
                    # no change, go back to poll
                    gevent.sleep(self._resync_interval_secs)
                    continue

                for old_proj_id in old_project_ids - new_project_ids:
                    if old_proj_id in del_proj_list:
                        pass
                    try:
                        self._vnc_lib.project_delete(id=old_proj_id)
                    except Exception as e:
                        cgitb.Hook(format="text",
                                   file=open(self._tmp_file_name,
                                             'w')).handle(sys.exc_info())
                        fhandle = open(self._tmp_file_name)
                        self._vnc_os_logger.error("%s" % fhandle.read())
                        del_proj_list.add(old_proj_id)
                        pass

                for new_proj_id in new_project_ids - old_project_ids:
                    try:
                        self._vnc_lib.project_read(id=new_proj_id)
                        # project exists, no-op for now,
                        # sync any attr changes in future
                    except vnc_api.NoIdError:
                        new_proj = \
                            self._kc.tenants.get(new_proj_id.replace('-', ''))
                        p_obj = vnc_api.Project(new_proj.name)
                        p_obj.uuid = new_proj_id
                        self._vnc_lib.project_create(p_obj)

                    # yield, project list might be large...
                    gevent.sleep(0)
                #end for all new projects

                # we are in sync
                old_project_ids = new_project_ids

            except Exception as e:
                self._kc = None
                cgitb.Hook(format="text",
                           file=open(self._tmp_file_name,
                                     'w')).handle(sys.exc_info())
                fhandle = open(self._tmp_file_name)
                self._vnc_os_logger.error("%s" % fhandle.read())
                gevent.sleep(2)
Ejemplo n.º 21
0
    def handle_create(self):
        parent_obj = None
        if parent_obj is None and self.properties.get(self.DOMAIN):
            try:
                parent_obj = self.vnc_lib().domain_read(
                    id=self.properties.get(self.DOMAIN))
            except vnc_api.NoIdError:
                parent_obj = self.vnc_lib().domain_read(
                    fq_name_str=self.properties.get(self.DOMAIN))
            except:
                parent_obj = None

        if parent_obj is None:
            raise Exception('Error: parent is not specified in template!')

        obj_0 = vnc_api.Project(name=self.properties[self.NAME],
                                parent_obj=parent_obj)

        if self.properties.get(self.ALARM_ENABLE) is not None:
            obj_0.set_alarm_enable(self.properties.get(self.ALARM_ENABLE))
        if self.properties.get(self.DISPLAY_NAME) is not None:
            obj_0.set_display_name(self.properties.get(self.DISPLAY_NAME))
        if self.properties.get(self.QUOTA) is not None:
            obj_1 = vnc_api.QuotaType()
            if self.properties.get(self.QUOTA,
                                   {}).get(self.QUOTA_DEFAULTS) is not None:
                obj_1.set_defaults(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_DEFAULTS))
            if self.properties.get(self.QUOTA,
                                   {}).get(self.QUOTA_FLOATING_IP) is not None:
                obj_1.set_floating_ip(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_FLOATING_IP))
            if self.properties.get(self.QUOTA,
                                   {}).get(self.QUOTA_INSTANCE_IP) is not None:
                obj_1.set_instance_ip(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_INSTANCE_IP))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_VIRTUAL_MACHINE_INTERFACE) is not None:
                obj_1.set_virtual_machine_interface(
                    self.properties.get(self.QUOTA, {}).get(
                        self.QUOTA_VIRTUAL_MACHINE_INTERFACE))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_VIRTUAL_NETWORK) is not None:
                obj_1.set_virtual_network(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_VIRTUAL_NETWORK))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_VIRTUAL_ROUTER) is not None:
                obj_1.set_virtual_router(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_VIRTUAL_ROUTER))
            if self.properties.get(self.QUOTA,
                                   {}).get(self.QUOTA_VIRTUAL_DNS) is not None:
                obj_1.set_virtual_DNS(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_VIRTUAL_DNS))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_VIRTUAL_DNS_RECORD) is not None:
                obj_1.set_virtual_DNS_record(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_VIRTUAL_DNS_RECORD))
            if self.properties.get(self.QUOTA,
                                   {}).get(self.QUOTA_BGP_ROUTER) is not None:
                obj_1.set_bgp_router(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_BGP_ROUTER))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_NETWORK_IPAM) is not None:
                obj_1.set_network_ipam(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_NETWORK_IPAM))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_ACCESS_CONTROL_LIST) is not None:
                obj_1.set_access_control_list(
                    self.properties.get(self.QUOTA, {}).get(
                        self.QUOTA_ACCESS_CONTROL_LIST))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_NETWORK_POLICY) is not None:
                obj_1.set_network_policy(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_NETWORK_POLICY))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_FLOATING_IP_POOL) is not None:
                obj_1.set_floating_ip_pool(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_FLOATING_IP_POOL))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_SERVICE_TEMPLATE) is not None:
                obj_1.set_service_template(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_SERVICE_TEMPLATE))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_SERVICE_INSTANCE) is not None:
                obj_1.set_service_instance(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_SERVICE_INSTANCE))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_LOGICAL_ROUTER) is not None:
                obj_1.set_logical_router(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_LOGICAL_ROUTER))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_SECURITY_GROUP) is not None:
                obj_1.set_security_group(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_SECURITY_GROUP))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_SECURITY_GROUP_RULE) is not None:
                obj_1.set_security_group_rule(
                    self.properties.get(self.QUOTA, {}).get(
                        self.QUOTA_SECURITY_GROUP_RULE))
            if self.properties.get(self.QUOTA,
                                   {}).get(self.QUOTA_SUBNET) is not None:
                obj_1.set_subnet(
                    self.properties.get(self.QUOTA, {}).get(self.QUOTA_SUBNET))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_GLOBAL_VROUTER_CONFIG) is not None:
                obj_1.set_global_vrouter_config(
                    self.properties.get(self.QUOTA, {}).get(
                        self.QUOTA_GLOBAL_VROUTER_CONFIG))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_LOADBALANCER_POOL) is not None:
                obj_1.set_loadbalancer_pool(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_LOADBALANCER_POOL))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_LOADBALANCER_MEMBER) is not None:
                obj_1.set_loadbalancer_member(
                    self.properties.get(self.QUOTA, {}).get(
                        self.QUOTA_LOADBALANCER_MEMBER))
            if self.properties.get(self.QUOTA, {}).get(
                    self.QUOTA_LOADBALANCER_HEALTHMONITOR) is not None:
                obj_1.set_loadbalancer_healthmonitor(
                    self.properties.get(self.QUOTA, {}).get(
                        self.QUOTA_LOADBALANCER_HEALTHMONITOR))
            if self.properties.get(self.QUOTA,
                                   {}).get(self.QUOTA_VIRTUAL_IP) is not None:
                obj_1.set_virtual_ip(
                    self.properties.get(self.QUOTA,
                                        {}).get(self.QUOTA_VIRTUAL_IP))
            obj_0.set_quota(obj_1)

        # reference to namespace_refs
        obj_1 = None
        if self.properties.get(self.NAMESPACE_REFS_DATA) is not None:
            for index_0 in range(
                    len(self.properties.get(self.NAMESPACE_REFS_DATA))):
                obj_1 = vnc_api.SubnetType()
                if self.properties.get(
                        self.NAMESPACE_REFS_DATA, {})[index_0].get(
                            self.NAMESPACE_REFS_DATA_IP_PREFIX) is not None:
                    obj_1.set_ip_prefix(
                        self.properties.get(
                            self.NAMESPACE_REFS_DATA, {})[index_0].get(
                                self.NAMESPACE_REFS_DATA_IP_PREFIX))
                if self.properties.get(
                        self.NAMESPACE_REFS_DATA,
                    {})[index_0].get(
                        self.NAMESPACE_REFS_DATA_IP_PREFIX_LEN) is not None:
                    obj_1.set_ip_prefix_len(
                        self.properties.get(
                            self.NAMESPACE_REFS_DATA, {})[index_0].get(
                                self.NAMESPACE_REFS_DATA_IP_PREFIX_LEN))

                if self.properties.get(self.NAMESPACE_REFS):
                    try:
                        ref_obj = self.vnc_lib().namespace_read(
                            id=self.properties.get(
                                self.NAMESPACE_REFS)[index_0])
                    except vnc_api.NoIdError:
                        ref_obj = self.vnc_lib().namespace_read(
                            fq_name_str=self.properties.get(
                                self.NAMESPACE_REFS)[index_0])
                    obj_0.add_namespace(ref_obj, obj_1)

        # reference to floating_ip_pool_refs
        if self.properties.get(self.FLOATING_IP_POOL_REFS):
            for index_0 in range(
                    len(self.properties.get(self.FLOATING_IP_POOL_REFS))):
                try:
                    ref_obj = self.vnc_lib().floating_ip_pool_read(
                        id=self.properties.get(
                            self.FLOATING_IP_POOL_REFS)[index_0])
                except vnc_api.NoIdError:
                    ref_obj = self.vnc_lib().floating_ip_pool_read(
                        fq_name_str=self.properties.get(
                            self.FLOATING_IP_POOL_REFS)[index_0])
                obj_0.add_floating_ip_pool(ref_obj)

        # reference to alias_ip_pool_refs
        if self.properties.get(self.ALIAS_IP_POOL_REFS):
            for index_0 in range(
                    len(self.properties.get(self.ALIAS_IP_POOL_REFS))):
                try:
                    ref_obj = self.vnc_lib().alias_ip_pool_read(
                        id=self.properties.get(
                            self.ALIAS_IP_POOL_REFS)[index_0])
                except vnc_api.NoIdError:
                    ref_obj = self.vnc_lib().alias_ip_pool_read(
                        fq_name_str=self.properties.get(
                            self.ALIAS_IP_POOL_REFS)[index_0])
                obj_0.add_alias_ip_pool(ref_obj)

        try:
            obj_uuid = super(ContrailProject, self).resource_create(obj_0)
        except:
            raise Exception(_('project %s could not be updated.') % self.name)

        self.resource_id_set(obj_uuid)
Ejemplo n.º 22
0
def project():
    proj = vnc_api.Project(name='project-name',
                           parent_obj=vnc_api.Domain(name='domain-name'))
    proj.set_uuid('project-uuid')
    return proj
Ejemplo n.º 23
0
def construct_project():
    return vnc_api.Project(name=VNC_VCENTER_PROJECT)
Ejemplo n.º 24
0
 def setUp(self):
     super(TestTrunk, self).setUp()
     self.project_id = self._vnc_lib.project_create(
         vnc_api.Project('project-%s' % self.id()))
     self.project = self._vnc_lib.project_read(id=self.project_id)
Ejemplo n.º 25
0
def project():
    return vnc_api.Project()