def process_create_port(self, context, data, result): """Implementation of abstract method from ExtensionDriver class.""" port_id = result.get('id') policy_profile_attr = data.get(constants.N1KV_PROFILE) if not attributes.is_attr_set(policy_profile_attr): policy_profile_attr = ( cfg.CONF.ml2_cisco_n1kv.default_policy_profile) with context.session.begin(subtransactions=True): try: n1kv_db.get_policy_binding(port_id, context.session) except n1kv_exc.PortBindingNotFound: if not uuidutils.is_uuid_like(policy_profile_attr): policy_profile = n1kv_db.get_policy_profile_by_name( policy_profile_attr, context.session) if policy_profile: policy_profile_attr = policy_profile.id else: LOG.error( _LE("Policy Profile %(profile)s does " "not exist."), {"profile": policy_profile_attr}) raise ml2_exc.MechanismDriverError() elif not (n1kv_db.get_policy_profile_by_uuid( context.session, policy_profile_attr)): LOG.error( _LE("Policy Profile %(profile)s does not " "exist."), {"profile": policy_profile_attr}) raise ml2_exc.MechanismDriverError() n1kv_db.add_policy_binding(port_id, policy_profile_attr, context.session) result[constants.N1KV_PROFILE] = policy_profile_attr
def process_create_port(self, context, data, result): """Implementation of abstract method from ExtensionDriver class.""" port_id = result.get('id') policy_profile_attr = data.get(constants.N1KV_PROFILE) if not attributes.is_attr_set(policy_profile_attr): policy_profile_attr = (cfg.CONF.ml2_cisco_n1kv. default_policy_profile) with context.session.begin(subtransactions=True): try: n1kv_db.get_policy_binding(port_id, context.session) except n1kv_exc.PortBindingNotFound: if not uuidutils.is_uuid_like(policy_profile_attr): policy_profile = n1kv_db.get_policy_profile_by_name( policy_profile_attr, context.session) if policy_profile: policy_profile_attr = policy_profile.id else: LOG.error(_LE("Policy Profile %(profile)s does " "not exist."), {"profile": policy_profile_attr}) raise ml2_exc.MechanismDriverError() elif not (n1kv_db.get_policy_profile_by_uuid( context.session, policy_profile_attr)): LOG.error(_LE("Policy Profile %(profile)s does not " "exist."), {"profile": policy_profile_attr}) raise ml2_exc.MechanismDriverError() n1kv_db.add_policy_binding(port_id, policy_profile_attr, context.session) result[constants.N1KV_PROFILE] = policy_profile_attr
def test_get_policy_profile_by_name(self): ml2_n1kv_config.cfg.CONF.set_override('n1kv_vsm_ips', TEST_VSM_HOSTS, 'ml2_cisco_n1kv') profile = _create_test_policy_profile_if_not_there(self.session) got_profile = n1kv_db.get_policy_profile_by_name( TEST_POLICY_PROFILE['name']) self.assertEqual(profile.id, got_profile.id) self.assertEqual(profile.name, got_profile.name)
def _get_policy_collection_for_tenant(self, db_session, model, tenant_id): policy_profile_ids = n1kv_db.get_profiles_for_tenant( db_session=db_session, tenant_id=tenant_id, profile_type=n1kv_const.POLICY) # get default policy profile objects default_pp_name = cfg.CONF.ml2_cisco_n1kv.default_policy_profile default_policy_profile = n1kv_db.get_policy_profile_by_name( default_pp_name) # append IDs of default policy profiles to the policy_profile_ids list policy_profile_ids.append(default_policy_profile.id) profiles = db_session.query(model).filter(model.id.in_( policy_profile_ids)) return [self._make_policy_profile_dict(p) for p in profiles]
def _get_policy_collection_for_tenant(self, db_session, model, tenant_id): policy_profile_ids = n1kv_db.get_profiles_for_tenant( db_session=db_session, tenant_id=tenant_id, profile_type=n1kv_const.POLICY) # get default policy profile objects default_pp_name = cfg.CONF.ml2_cisco_n1kv.default_policy_profile default_policy_profile = n1kv_db.get_policy_profile_by_name( default_pp_name) # append IDs of default policy profiles to the policy_profile_ids list policy_profile_ids.append(default_policy_profile.id) profiles = db_session.query(model).filter( model.id.in_(policy_profile_ids)) return [self._make_policy_profile_dict(p) for p in profiles]
def test_create_port_with_default_n1kv_policy_profile_id( self, restrict_policy_profiles=False): """Test port create without passing policy profile id.""" ml2_config.cfg.CONF.set_override('restrict_policy_profiles', restrict_policy_profiles, 'ml2_cisco_n1kv') with self.port() as port: pp = n1kv_db.get_policy_profile_by_name( test_cisco_n1kv_mech.DEFAULT_PP) profile_binding = n1kv_db.get_policy_binding(port['port']['id']) self.assertEqual(profile_binding.profile_id, pp['id']) # assert that binding for default port-profile exists port_tenant = port['port']['tenant_id'] self.assert_profile_binding_exists( binding='policy_profile_bindings', tenant_id=port_tenant, profile_id=pp['id'])
def test_create_port_with_default_n1kv_policy_profile_id( self, restrict_policy_profiles=False): """Test port create without passing policy profile id.""" ml2_config.cfg.CONF.set_override( 'restrict_policy_profiles', restrict_policy_profiles, 'ml2_cisco_n1kv') with self.port() as port: pp = n1kv_db.get_policy_profile_by_name( test_cisco_n1kv_mech.DEFAULT_PP) profile_binding = n1kv_db.get_policy_binding(port['port']['id']) self.assertEqual(profile_binding.profile_id, pp['id']) # assert that binding for default port-profile exists port_tenant = port['port']['tenant_id'] self.assert_profile_binding_exists( binding='policy_profile_bindings', tenant_id=port_tenant, profile_id=pp['id'] )
def process_create_port(self, context, data, result): """Implementation of abstract method from ExtensionDriver class.""" port_id = result.get('id') policy_profile_attr = data.get(constants.N1KV_PROFILE) tenant_id = context.tenant_id or data.get('tenant_id') default_policy_profile_name = (cfg.CONF.ml2_cisco_n1kv. default_policy_profile) if not bc_attr.is_attr_set(policy_profile_attr): policy_profile_attr = default_policy_profile_name with context.session.begin(subtransactions=True): try: if not uuidutils.is_uuid_like(policy_profile_attr): policy_profile = n1kv_db.get_policy_profile_by_name( policy_profile_attr, context.session) else: policy_profile = (n1kv_db.get_policy_profile_by_uuid( context.session, policy_profile_attr)) n1kv_db.get_profile_binding(db_session=context.session, tenant_id=tenant_id, profile_id=policy_profile.id) except n1kv_exc.PolicyProfileNotFound: LOG.error(_LE("Policy Profile %(profile)s does " "not exist."), {"profile": policy_profile_attr}) raise ml2_exc.ExtensionDriverError(driver='N1Kv ML2') except n1kv_exc.ProfileTenantBindingNotFound: if context.is_admin: session = context.session n1kv_db.update_policy_profile_binding_with_tenant_id( policy_profile.id, tenant_id, session) elif (cfg.CONF.ml2_cisco_n1kv.restrict_policy_profiles and policy_profile.name != default_policy_profile_name): LOG.error(_LE("Policy Profile %s is " "not owned by this tenant.") % policy_profile_attr) raise ml2_exc.ExtensionDriverError(driver='N1Kv ML2') n1kv_db.add_policy_binding(port_id, policy_profile.id, context.session) result[constants.N1KV_PROFILE] = policy_profile.id
def process_create_port(self, context, data, result): """Implementation of abstract method from ExtensionDriver class.""" port_id = result.get('id') policy_profile_attr = data.get(constants.N1KV_PROFILE) tenant_id = context.tenant_id or data.get('tenant_id') default_policy_profile_name = (cfg.CONF.ml2_cisco_n1kv. default_policy_profile) if not bc.is_attr_set(policy_profile_attr): policy_profile_attr = default_policy_profile_name with context.session.begin(subtransactions=True): try: if not uuidutils.is_uuid_like(policy_profile_attr): policy_profile = n1kv_db.get_policy_profile_by_name( policy_profile_attr, context.session) else: policy_profile = (n1kv_db.get_policy_profile_by_uuid( context.session, policy_profile_attr)) n1kv_db.get_profile_binding(db_session=context.session, tenant_id=tenant_id, profile_id=policy_profile.id) except n1kv_exc.PolicyProfileNotFound: LOG.error("Policy Profile %(profile)s does " "not exist.", {"profile": policy_profile_attr}) raise ml2_exc.ExtensionDriverError(driver='N1Kv ML2') except n1kv_exc.ProfileTenantBindingNotFound: if context.is_admin: session = context.session n1kv_db.update_policy_profile_binding_with_tenant_id( policy_profile.id, tenant_id, session) elif (cfg.CONF.ml2_cisco_n1kv.restrict_policy_profiles and policy_profile.name != default_policy_profile_name): LOG.error("Policy Profile %s is " "not owned by this tenant." % policy_profile_attr) raise ml2_exc.ExtensionDriverError(driver='N1Kv ML2') n1kv_db.add_policy_binding(port_id, policy_profile.id, context.session) result[constants.N1KV_PROFILE] = policy_profile.id
def test_create_port_with_default_n1kv_policy_profile_id(self): """Test port create without passing policy profile id.""" with self.port() as port: pp = n1kv_db.get_policy_profile_by_name('default-pp') profile_binding = n1kv_db.get_policy_binding(port['port']['id']) self.assertEqual(profile_binding.profile_id, pp['id'])
def test_create_port_with_default_n1kv_policy_profile_id(self): """Test port create without passing policy profile id.""" with self.port() as port: pp = n1kv_db.get_policy_profile_by_name(DEFAULT_PP) profile_binding = n1kv_db.get_policy_binding(port['port']['id']) self.assertEqual(profile_binding.profile_id, pp['id'])
def test_get_policy_profile_by_name(self): profile = _create_test_policy_profile_if_not_there(self.session) got_profile = n1kv_db.get_policy_profile_by_name( TEST_POLICY_PROFILE['name']) self.assertEqual(profile.id, got_profile.id) self.assertEqual(profile.name, got_profile.name)