コード例 #1
0
ファイル: n1kv_ext_driver.py プロジェクト: zlzlnet/neutron
 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
コード例 #2
0
ファイル: n1kv_ext_driver.py プロジェクト: Akanksha08/neutron
 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
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
 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]
コード例 #6
0
 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]
コード例 #7
0
 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'])
コード例 #8
0
 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']
         )
コード例 #9
0
 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
コード例 #10
0
 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
コード例 #11
0
 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'])
コード例 #12
0
 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'])
コード例 #13
0
 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)
コード例 #14
0
 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)