Integrate Address Scope OVO into DB
This change take advantage of the use of Oslo-Versioned Objects for Address Scope class. Co-Authored-By: Ankur Gupta <ankur.gupta@intel.com> Co-Authored-By: Mohit Malik <mohit.malik@intel.com> Change-Id: I7d063b23f45c65c91750c4482817dd372ea1ac93 Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db
This commit is contained in:
parent
bc5d1a0d58
commit
0d073270a3
|
@ -14,7 +14,6 @@
|
|||
|
||||
from neutron_lib import constants
|
||||
from oslo_utils import uuidutils
|
||||
from sqlalchemy.orm import exc
|
||||
|
||||
from neutron._i18n import _
|
||||
from neutron.api.v2 import attributes as attr
|
||||
|
@ -24,6 +23,8 @@ from neutron.db import api as db_api
|
|||
from neutron.db import db_base_plugin_v2
|
||||
from neutron.db.models import address_scope as address_scope_model
|
||||
from neutron.extensions import address_scope as ext_address_scope
|
||||
from neutron.objects import address_scope as obj_addr_scope
|
||||
from neutron.objects import base as base_obj
|
||||
from neutron.objects import subnetpool as subnetpool_obj
|
||||
|
||||
|
||||
|
@ -45,11 +46,10 @@ class AddressScopeDbMixin(ext_address_scope.AddressScopePluginBase):
|
|||
return db_utils.resource_fields(res, fields)
|
||||
|
||||
def _get_address_scope(self, context, id):
|
||||
try:
|
||||
return self._get_by_id(context, address_scope_model.AddressScope,
|
||||
id)
|
||||
except exc.NoResultFound:
|
||||
obj = obj_addr_scope.AddressScope.get_object(context, id=id)
|
||||
if obj is None:
|
||||
raise ext_address_scope.AddressScopeNotFound(address_scope_id=id)
|
||||
return obj
|
||||
|
||||
def is_address_scope_owned_by_tenant(self, context, id):
|
||||
"""Check if address scope id is owned by the tenant or not.
|
||||
|
@ -74,28 +74,26 @@ class AddressScopeDbMixin(ext_address_scope.AddressScopePluginBase):
|
|||
"""Create an address scope."""
|
||||
a_s = address_scope['address_scope']
|
||||
address_scope_id = a_s.get('id') or uuidutils.generate_uuid()
|
||||
with db_api.context_manager.writer.using(context):
|
||||
pool_args = {'tenant_id': a_s['tenant_id'],
|
||||
'id': address_scope_id,
|
||||
'name': a_s['name'],
|
||||
'shared': a_s['shared'],
|
||||
'ip_version': a_s['ip_version']}
|
||||
address_scope = address_scope_model.AddressScope(**pool_args)
|
||||
context.session.add(address_scope)
|
||||
|
||||
return self._make_address_scope_dict(address_scope)
|
||||
pool_args = {'tenant_id': a_s['tenant_id'],
|
||||
'id': address_scope_id,
|
||||
'name': a_s['name'],
|
||||
'shared': a_s['shared'],
|
||||
'ip_version': a_s['ip_version']}
|
||||
address_scope = obj_addr_scope.AddressScope(context, **pool_args)
|
||||
address_scope.create()
|
||||
return self._make_address_scope_dict(address_scope)
|
||||
|
||||
def update_address_scope(self, context, id, address_scope):
|
||||
a_s = address_scope['address_scope']
|
||||
with db_api.context_manager.writer.using(context):
|
||||
address_scope = self._get_address_scope(context, id)
|
||||
if address_scope.shared and not a_s.get('shared', True):
|
||||
reason = _("Shared address scope can't be unshared")
|
||||
raise ext_address_scope.AddressScopeUpdateError(
|
||||
address_scope_id=id, reason=reason)
|
||||
address_scope.update(a_s)
|
||||
address_scope = self._get_address_scope(context, id)
|
||||
if address_scope.shared and not a_s.get('shared', True):
|
||||
reason = _("Shared address scope can't be unshared")
|
||||
raise ext_address_scope.AddressScopeUpdateError(
|
||||
address_scope_id=id, reason=reason)
|
||||
|
||||
return self._make_address_scope_dict(address_scope)
|
||||
address_scope.update_fields(a_s)
|
||||
address_scope.update()
|
||||
return self._make_address_scope_dict(address_scope)
|
||||
|
||||
def get_address_scope(self, context, id, fields=None):
|
||||
address_scope = self._get_address_scope(context, id)
|
||||
|
@ -104,21 +102,17 @@ class AddressScopeDbMixin(ext_address_scope.AddressScopePluginBase):
|
|||
def get_address_scopes(self, context, filters=None, fields=None,
|
||||
sorts=None, limit=None, marker=None,
|
||||
page_reverse=False):
|
||||
marker_obj = self._get_marker_obj(context, 'addrscope', limit, marker)
|
||||
collection = self._get_collection(context,
|
||||
address_scope_model.AddressScope,
|
||||
self._make_address_scope_dict,
|
||||
filters=filters, fields=fields,
|
||||
sorts=sorts,
|
||||
limit=limit,
|
||||
marker_obj=marker_obj,
|
||||
page_reverse=page_reverse)
|
||||
return collection
|
||||
pager = base_obj.Pager(sorts, limit, page_reverse, marker)
|
||||
address_scopes = obj_addr_scope.AddressScope.get_objects(
|
||||
context, _pager=pager, **filters)
|
||||
|
||||
return [
|
||||
self._make_address_scope_dict(addr_scope, fields)
|
||||
for addr_scope in address_scopes
|
||||
]
|
||||
|
||||
def get_address_scopes_count(self, context, filters=None):
|
||||
return self._get_collection_count(context,
|
||||
address_scope_model.AddressScope,
|
||||
filters=filters)
|
||||
return obj_addr_scope.AddressScope.count(context, **filters)
|
||||
|
||||
def delete_address_scope(self, context, id):
|
||||
with db_api.context_manager.writer.using(context):
|
||||
|
@ -126,7 +120,7 @@ class AddressScopeDbMixin(ext_address_scope.AddressScopePluginBase):
|
|||
address_scope_id=id):
|
||||
raise ext_address_scope.AddressScopeInUse(address_scope_id=id)
|
||||
address_scope = self._get_address_scope(context, id)
|
||||
context.session.delete(address_scope)
|
||||
address_scope.delete()
|
||||
|
||||
def _extend_network_dict_address_scope(self, network_res, network_db):
|
||||
network_res[ext_address_scope.IPV4_ADDRESS_SCOPE] = None
|
||||
|
|
Loading…
Reference in New Issue