Merge "Enable resource usage tracking for reference plugins."
This commit is contained in:
commit
4a573e3bde
@ -55,6 +55,7 @@ from neutron.db import extradhcpopt_db
|
|||||||
from neutron.db import models_v2
|
from neutron.db import models_v2
|
||||||
from neutron.db import netmtu_db
|
from neutron.db import netmtu_db
|
||||||
from neutron.db.quota import driver # noqa
|
from neutron.db.quota import driver # noqa
|
||||||
|
from neutron.db import securitygroups_db
|
||||||
from neutron.db import securitygroups_rpc_base as sg_db_rpc
|
from neutron.db import securitygroups_rpc_base as sg_db_rpc
|
||||||
from neutron.db import vlantransparent_db
|
from neutron.db import vlantransparent_db
|
||||||
from neutron.extensions import allowedaddresspairs as addr_pair
|
from neutron.extensions import allowedaddresspairs as addr_pair
|
||||||
@ -74,6 +75,7 @@ from neutron.plugins.ml2 import driver_context
|
|||||||
from neutron.plugins.ml2 import managers
|
from neutron.plugins.ml2 import managers
|
||||||
from neutron.plugins.ml2 import models
|
from neutron.plugins.ml2 import models
|
||||||
from neutron.plugins.ml2 import rpc
|
from neutron.plugins.ml2 import rpc
|
||||||
|
from neutron.quota import resource_registry
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
@ -126,6 +128,13 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
|
|||||||
self._aliases = aliases
|
self._aliases = aliases
|
||||||
return self._aliases
|
return self._aliases
|
||||||
|
|
||||||
|
@resource_registry.tracked_resources(
|
||||||
|
network=models_v2.Network,
|
||||||
|
port=models_v2.Port,
|
||||||
|
subnet=models_v2.Subnet,
|
||||||
|
subnetpool=models_v2.SubnetPool,
|
||||||
|
security_group=securitygroups_db.SecurityGroup,
|
||||||
|
security_group_rule=securitygroups_db.SecurityGroupRule)
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# First load drivers, then initialize DB, then initialize drivers
|
# First load drivers, then initialize DB, then initialize drivers
|
||||||
self.type_manager = managers.TypeManager()
|
self.type_manager = managers.TypeManager()
|
||||||
|
@ -17,6 +17,7 @@ from oslo_config import cfg
|
|||||||
from oslo_db import api as oslo_db_api
|
from oslo_db import api as oslo_db_api
|
||||||
from oslo_db import exception as oslo_db_exception
|
from oslo_db import exception as oslo_db_exception
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
|
from oslo_utils import excutils
|
||||||
from sqlalchemy import event
|
from sqlalchemy import event
|
||||||
|
|
||||||
from neutron.db import api as db_api
|
from neutron.db import api as db_api
|
||||||
@ -191,14 +192,12 @@ class TrackedResource(BaseResource):
|
|||||||
|
|
||||||
@lockutils.synchronized('dirty_tenants')
|
@lockutils.synchronized('dirty_tenants')
|
||||||
def _db_event_handler(self, mapper, _conn, target):
|
def _db_event_handler(self, mapper, _conn, target):
|
||||||
tenant_id = target.get('tenant_id')
|
try:
|
||||||
if not tenant_id:
|
tenant_id = target['tenant_id']
|
||||||
# NOTE: This is an unexpected error condition. Log anomaly but do
|
except AttributeError:
|
||||||
# not raise as this might have unexpected effects on other
|
with excutils.save_and_reraise_exception():
|
||||||
# operations
|
LOG.error(_LE("Model class %s does not have a tenant_id "
|
||||||
LOG.error(_LE("Model class %s does not have tenant_id attribute"),
|
"attribute"), target)
|
||||||
target)
|
|
||||||
return
|
|
||||||
self._dirty_tenants.add(tenant_id)
|
self._dirty_tenants.add(tenant_id)
|
||||||
|
|
||||||
# Retry the operation if a duplicate entry exception is raised. This
|
# Retry the operation if a duplicate entry exception is raised. This
|
||||||
|
@ -30,6 +30,7 @@ from neutron.db import l3_gwmode_db
|
|||||||
from neutron.db import l3_hamode_db
|
from neutron.db import l3_hamode_db
|
||||||
from neutron.db import l3_hascheduler_db
|
from neutron.db import l3_hascheduler_db
|
||||||
from neutron.plugins.common import constants
|
from neutron.plugins.common import constants
|
||||||
|
from neutron.quota import resource_registry
|
||||||
|
|
||||||
|
|
||||||
class L3RouterPlugin(common_db_mixin.CommonDbMixin,
|
class L3RouterPlugin(common_db_mixin.CommonDbMixin,
|
||||||
@ -52,6 +53,8 @@ class L3RouterPlugin(common_db_mixin.CommonDbMixin,
|
|||||||
"extraroute", "l3_agent_scheduler",
|
"extraroute", "l3_agent_scheduler",
|
||||||
"l3-ha"]
|
"l3-ha"]
|
||||||
|
|
||||||
|
@resource_registry.tracked_resources(router=l3_db.Router,
|
||||||
|
floatingip=l3_db.FloatingIP)
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.setup_rpc()
|
self.setup_rpc()
|
||||||
self.router_scheduler = importutils.import_object(
|
self.router_scheduler = importutils.import_object(
|
||||||
|
@ -33,6 +33,9 @@ class TestDhcpRpcCallback(base.BaseTestCase):
|
|||||||
self.callbacks = dhcp_rpc.DhcpRpcCallback()
|
self.callbacks = dhcp_rpc.DhcpRpcCallback()
|
||||||
self.log_p = mock.patch('neutron.api.rpc.handlers.dhcp_rpc.LOG')
|
self.log_p = mock.patch('neutron.api.rpc.handlers.dhcp_rpc.LOG')
|
||||||
self.log = self.log_p.start()
|
self.log = self.log_p.start()
|
||||||
|
set_dirty_p = mock.patch('neutron.quota.resource_registry.'
|
||||||
|
'set_resources_dirty')
|
||||||
|
self.mock_set_dirty = set_dirty_p.start()
|
||||||
|
|
||||||
def test_get_active_networks(self):
|
def test_get_active_networks(self):
|
||||||
plugin_retval = [dict(id='a'), dict(id='b')]
|
plugin_retval = [dict(id='a'), dict(id='b')]
|
||||||
|
@ -452,8 +452,7 @@ class TestSecurityGroups(SecurityGroupDBTestCase):
|
|||||||
'22', '22',
|
'22', '22',
|
||||||
remote_ip_prefix,
|
remote_ip_prefix,
|
||||||
None,
|
None,
|
||||||
None,
|
ethertype=ethertype)
|
||||||
ethertype)
|
|
||||||
res = self._create_security_group_rule(self.fmt, rule)
|
res = self._create_security_group_rule(self.fmt, rule)
|
||||||
self.assertEqual(res.status_int, webob.exc.HTTPBadRequest.code)
|
self.assertEqual(res.status_int, webob.exc.HTTPBadRequest.code)
|
||||||
|
|
||||||
@ -474,8 +473,7 @@ class TestSecurityGroups(SecurityGroupDBTestCase):
|
|||||||
'22', '22',
|
'22', '22',
|
||||||
remote_ip_prefix,
|
remote_ip_prefix,
|
||||||
None,
|
None,
|
||||||
None,
|
ethertype=ethertype)
|
||||||
ethertype)
|
|
||||||
res = self._create_security_group_rule(self.fmt, rule)
|
res = self._create_security_group_rule(self.fmt, rule)
|
||||||
self.assertEqual(res.status_int, 201)
|
self.assertEqual(res.status_int, 201)
|
||||||
res_sg = self.deserialize(self.fmt, res)
|
res_sg = self.deserialize(self.fmt, res)
|
||||||
|
Loading…
Reference in New Issue
Block a user