def setUp(self, plugin=None, ext_mgr=None): cfg.CONF.keystone_authtoken = KeyStoneInfo() from neutron_plugin_contrail import extensions cfg.CONF.api_extensions_path = "extensions:" + extensions.__path__[0] res_handler = ContrailResourceHandler # mimic the project id format change @staticmethod def mock_proj_id_vnc_to_neutron(y): if y is not None: return y.lower() return y @staticmethod def mock_proj_id_neutron_to_vnc(y): if y is not None: return y.upper() return y res_handler._project_id_vnc_to_neutron = mock_proj_id_vnc_to_neutron res_handler._project_id_neutron_to_vnc = mock_proj_id_neutron_to_vnc utils.get_vnc_api_instance = lambda *args, **kwargs: MockVnc() self.domain_obj = vnc_api.Domain() MockVnc().domain_create(self.domain_obj) self._neutron_set_user_auth_token = NeutronPluginContrailCoreV3._set_user_auth_token NeutronPluginContrailCoreV3._set_user_auth_token = lambda *args, **kwargs: None super(JVContrailPluginTestCase, self).setUp(self._plugin_name)
def setUp(self, plugin=None, ext_mgr=None): cfg.CONF.keystone_authtoken = KeyStoneInfo() from neutron_plugin_contrail import extensions cfg.CONF.api_extensions_path = "extensions:" + extensions.__path__[0] res_handler = contrail_res_handler.ContrailResourceHandler # mimic the project id format change @staticmethod def mock_proj_id_vnc_to_neutron(y): if y is not None: return y.lower() return y @staticmethod def mock_proj_id_neutron_to_vnc(y): if y is not None: return y.upper() return y res_handler._project_id_vnc_to_neutron = mock_proj_id_vnc_to_neutron res_handler._project_id_neutron_to_vnc = mock_proj_id_neutron_to_vnc vnc_api.VncApi = MockVnc self.domain_obj = vnc_api.Domain() MockVnc().domain_create(self.domain_obj) super(JVContrailPluginTestCase, self).setUp(self._plugin_name)
def handle_create(self): obj_0 = vnc_api.Domain(name=self.properties[self.NAME]) 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.DOMAIN_LIMITS) is not None: obj_1 = vnc_api.DomainLimitsType() if self.properties.get(self.DOMAIN_LIMITS, {}).get( self.DOMAIN_LIMITS_PROJECT_LIMIT) is not None: obj_1.set_project_limit( self.properties.get(self.DOMAIN_LIMITS, {}).get( self.DOMAIN_LIMITS_PROJECT_LIMIT)) if self.properties.get(self.DOMAIN_LIMITS, {}).get( self.DOMAIN_LIMITS_VIRTUAL_NETWORK_LIMIT) is not None: obj_1.set_virtual_network_limit( self.properties.get(self.DOMAIN_LIMITS, {}).get( self.DOMAIN_LIMITS_VIRTUAL_NETWORK_LIMIT)) if self.properties.get(self.DOMAIN_LIMITS, {}).get( self.DOMAIN_LIMITS_SECURITY_GROUP_LIMIT) is not None: obj_1.set_security_group_limit( self.properties.get(self.DOMAIN_LIMITS, {}).get( self.DOMAIN_LIMITS_SECURITY_GROUP_LIMIT)) obj_0.set_domain_limits(obj_1) try: obj_uuid = super(ContrailDomain, self).resource_create(obj_0) except: raise Exception(_('domain %s could not be updated.') % self.name) self.resource_id_set(obj_uuid)
def sync_domain_to_vnc(self, domain_id): self._get_keystone_conn() self._get_vnc_conn() ks_domain = \ self._ks_domain_get(domain_id.replace('-', '')) dom_obj = vnc_api.Domain(ks_domain['name']) dom_obj.uuid = domain_id self._vnc_lib.domain_create(dom_obj)
def setUp(self, plugin=None, ext_mgr=None): cfg.CONF.keystone_authtoken = KeyStoneInfo() from neutron_plugin_contrail import extensions cfg.CONF.api_extensions_path = "extensions:" + extensions.__path__[0] res_handler = contrail_res_handler.ContrailResourceHandler res_handler._project_id_vnc_to_neutron = lambda x, y: y res_handler._project_id_neutron_to_vnc = lambda x, y: y vnc_api.VncApi = MockVnc self.domain_obj = vnc_api.Domain() MockVnc().domain_create(self.domain_obj) super(JVContrailPluginTestCase, self).setUp(self._plugin_name)
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
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
def sync_domain_to_vnc(self, domain_id): self._get_keystone_conn() self._get_vnc_conn() ks_domain = \ self._ks_domain_get(domain_id.replace('-', '')) display_name = ks_domain['name'] # if earlier domain exists with same name but diff id, # create with uniqified fq_name fq_name = [display_name] try: old_id = self._vnc_lib.fq_name_to_id('domain', fq_name) domain_name = '%s-%s' % (display_name, str(uuid.uuid4())) except vnc_api.NoIdError: domain_name = display_name dom_obj = vnc_api.Domain(domain_name) dom_obj.uuid = domain_id self._vnc_lib.domain_create(dom_obj)
def sync_domain_to_vnc(self, domain_id): self._get_keystone_conn() self._get_vnc_conn() ks_domain = \ self._ks_domain_get(domain_id.replace('-', '')) display_name = ks_domain['name'] domain_name = display_name # if earlier domain exists with same name but diff id, # create with uniqified fq_name fq_name = [display_name] try: old_id = self._vnc_lib.fq_name_to_id('domain', fq_name) if domain_id == old_id: self._vnc_domain_ids.add(domain_id) return # Domain might have been quickly deleted + added. # Since domain delete sync happens only in timer(polling), # try deleting old one synchronously. If delete fails due # to resources being present in domain, proceed/fail # based on configuration try: self._vnc_lib.domain_delete(fq_name=fq_name) except vnc_api.NoIdError: pass except vnc_api.RefsExistError: if self._resync_stale_mode == 'new_unique_fqn': domain_name = '%s-%s' % (display_name, str(uuid.uuid4())) else: errmsg = "Old domain %s fqn %s exists and not empty" % ( old_id, fq_name) self._sandesh_logger.error(errmsg) raise Exception(errmsg) except vnc_api.NoIdError: pass dom_obj = vnc_api.Domain(domain_name) dom_obj.display_name = display_name dom_obj.uuid = domain_id self._vnc_lib.domain_create(dom_obj) self._vnc_domain_ids.add(domain_id)
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
def project(): proj = vnc_api.Project(name='project-name', parent_obj=vnc_api.Domain(name='domain-name')) proj.set_uuid('project-uuid') return proj