Block qos config in floating ip.
Change-Id: I0cdb5b5fcfa3dc6f5771081bb12081ce31b16d3c
This commit is contained in:
committed by
Thomas Bachman
parent
0dbc7a0159
commit
4af9431ab9
@@ -120,6 +120,10 @@ class InvalidNetworkForQos(exceptions.BadRequest):
|
||||
"an external or SVI network.")
|
||||
|
||||
|
||||
class InvalidPolicyTargetForQos(exceptions.BadRequest):
|
||||
message = _("Apic_aim does not support QoS policy for Floating IP.")
|
||||
|
||||
|
||||
class InvalidPreexistingBdForNetwork(exceptions.BadRequest):
|
||||
message = _("The Bridge Domain specified in apic:distinguished_names "
|
||||
"either does not exist in ACI or belongs to another network "
|
||||
|
||||
@@ -28,6 +28,7 @@ from neutron_lib.db import utils as db_utils
|
||||
from neutron_lib import exceptions
|
||||
from neutron_lib.plugins import constants
|
||||
from neutron_lib.plugins import directory
|
||||
from neutron_lib.services.qos import constants as qos_consts
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
|
||||
@@ -36,6 +37,8 @@ from gbpservice.neutron.db import api as db_api
|
||||
from gbpservice.neutron import extensions as extensions_pkg
|
||||
from gbpservice.neutron.extensions import cisco_apic_l3 as l3_ext
|
||||
from gbpservice.neutron.plugins.ml2plus import driver_api as api_plus
|
||||
from gbpservice.neutron.plugins.ml2plus.drivers.apic_aim import (
|
||||
exceptions as aim_exceptions)
|
||||
from gbpservice.neutron.plugins.ml2plus.drivers.apic_aim import (
|
||||
extension_db as extn_db)
|
||||
from gbpservice.neutron.plugins.ml2plus.drivers.apic_aim import (
|
||||
@@ -234,6 +237,8 @@ class ApicL3Plugin(extraroute_db.ExtraRoute_db_mixin,
|
||||
|
||||
@n_utils.transaction_guard
|
||||
def create_floatingip(self, context, floatingip):
|
||||
if floatingip['floatingip'].get(qos_consts.QOS_POLICY_ID):
|
||||
raise aim_exceptions.InvalidPolicyTargetForQos()
|
||||
fip = floatingip['floatingip']
|
||||
# REVISIT: This ensure_tenant call probably isn't needed, as
|
||||
# FIPs don't map directly to any AIM resources. If it is
|
||||
@@ -284,6 +289,8 @@ class ApicL3Plugin(extraroute_db.ExtraRoute_db_mixin,
|
||||
|
||||
@n_utils.transaction_guard
|
||||
def update_floatingip(self, context, id, floatingip):
|
||||
if floatingip['floatingip'].get(qos_consts.QOS_POLICY_ID):
|
||||
raise aim_exceptions.InvalidPolicyTargetForQos()
|
||||
old_fip = self.get_floatingip(context, id)
|
||||
result = super(ApicL3Plugin, self).update_floatingip(
|
||||
context, id, floatingip)
|
||||
|
||||
@@ -26,6 +26,7 @@ from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api
|
||||
from neutron.db.models import securitygroup as sg_models
|
||||
from neutron.db.port_security import models as psec_models
|
||||
from neutron.extensions import dns
|
||||
from neutron.objects.qos import policy as policy_object
|
||||
from neutron.tests.unit.db import test_db_base_plugin_v2 as test_plugin
|
||||
from neutron.tests.unit.extensions import test_address_scope
|
||||
from neutron.tests.unit.extensions import test_securitygroup
|
||||
@@ -36,12 +37,15 @@ from neutron_lib.plugins import constants as pconst
|
||||
from neutron_lib.plugins import directory
|
||||
from opflexagent import constants as ocst
|
||||
from oslo_config import cfg
|
||||
from oslo_utils import uuidutils
|
||||
import webob.exc
|
||||
|
||||
import gbpservice.common.utils as g_utils
|
||||
from gbpservice.neutron.db import api as db_api
|
||||
from gbpservice.neutron.db.grouppolicy import group_policy_mapping_db
|
||||
from gbpservice.neutron.extensions import cisco_apic
|
||||
from gbpservice.neutron.plugins.ml2plus.drivers.apic_aim import (
|
||||
exceptions as exceptions)
|
||||
from gbpservice.neutron.plugins.ml2plus.drivers.apic_aim import (
|
||||
mechanism_driver as md)
|
||||
from gbpservice.neutron.services.grouppolicy.common import (
|
||||
@@ -3468,6 +3472,14 @@ class TestPolicyTarget(AIMBaseTestCase,
|
||||
host='h1')
|
||||
self.assertEqual(2000, mapping['interface_mtu'])
|
||||
|
||||
def _make_qos_policy(self):
|
||||
ctx = nctx.get_admin_context()
|
||||
qos_policy = policy_object.QosPolicy(
|
||||
ctx, project_id=uuidutils.generate_uuid(),
|
||||
shared=False, is_default=False)
|
||||
qos_policy.create()
|
||||
return qos_policy
|
||||
|
||||
def _do_test_gbp_details_no_pt(self, use_as=True, routed=True,
|
||||
pre_vrf=None):
|
||||
# Create port and bind it
|
||||
@@ -3522,6 +3534,15 @@ class TestPolicyTarget(AIMBaseTestCase,
|
||||
'tenant_id': network['tenant_id'],
|
||||
'port_id': port_id}})
|
||||
|
||||
qosPolicy = self._make_qos_policy()
|
||||
self.assertRaises(exceptions.InvalidPolicyTargetForQos,
|
||||
self.l3_plugin.create_floatingip,
|
||||
nctx.get_admin_context(),
|
||||
{'floatingip': {'floating_network_id':
|
||||
ext_net1['id'],
|
||||
'tenant_id': network['tenant_id'],
|
||||
'port_id': port_id,
|
||||
'qos_policy_id': qosPolicy.id}})
|
||||
self._bind_port_to_host(port_id, 'h1')
|
||||
mapping = self.mech_driver.get_gbp_details(
|
||||
self._neutron_admin_context, device='tap%s' % port_id,
|
||||
|
||||
Reference in New Issue
Block a user