Router to OVO
This patch introduces the Router model class to Oslo-Versioned Object Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db Change-Id: I5e0bef20aed884db7694286a398e10faff3b057e
This commit is contained in:
parent
5e08a9b0e7
commit
9f486a2f33
|
@ -19,6 +19,14 @@ from neutron_lib import constants as lib_constants
|
|||
ROUTER_PORT_OWNERS = lib_constants.ROUTER_INTERFACE_OWNERS_SNAT + \
|
||||
(lib_constants.DEVICE_OWNER_ROUTER_GW,)
|
||||
|
||||
ROUTER_STATUS_ACTIVE = 'ACTIVE'
|
||||
ROUTER_STATUS_ALLOCATING = 'ALLOCATING'
|
||||
ROUTER_STATUS_ERROR = 'ERROR'
|
||||
|
||||
VALID_ROUTER_STATUS = (ROUTER_STATUS_ACTIVE,
|
||||
ROUTER_STATUS_ALLOCATING,
|
||||
ROUTER_STATUS_ERROR)
|
||||
|
||||
HA_ROUTER_STATE_KEY = '_ha_state'
|
||||
METERING_LABEL_KEY = '_metering_labels'
|
||||
FLOATINGIP_AGENT_INTF_KEY = '_floatingip_agent_interfaces'
|
||||
|
|
|
@ -309,3 +309,7 @@ class UUIDField(obj_fields.AutoTypedField):
|
|||
|
||||
class FloatingIPStatusEnumField(obj_fields.AutoTypedField):
|
||||
AUTO_TYPE = obj_fields.Enum(valid_values=constants.VALID_FLOATINGIP_STATUS)
|
||||
|
||||
|
||||
class RouterStatusEnumField(obj_fields.AutoTypedField):
|
||||
AUTO_TYPE = obj_fields.Enum(valid_values=constants.VALID_ROUTER_STATUS)
|
||||
|
|
|
@ -185,6 +185,25 @@ class DVRMacAddress(base.NeutronDbObject):
|
|||
return result
|
||||
|
||||
|
||||
@base.NeutronObjectRegistry.register
|
||||
class Router(base.NeutronDbObject):
|
||||
# Version 1.0: Initial version
|
||||
VERSION = '1.0'
|
||||
|
||||
db_model = l3.Router
|
||||
|
||||
fields = {
|
||||
'id': common_types.UUIDField(),
|
||||
'project_id': obj_fields.StringField(nullable=True),
|
||||
'name': obj_fields.StringField(nullable=True),
|
||||
'status': common_types.RouterStatusEnumField(nullable=True),
|
||||
'admin_state_up': obj_fields.BooleanField(nullable=True),
|
||||
'gw_port_id': common_types.UUIDField(nullable=True),
|
||||
'enable_snat': obj_fields.BooleanField(default=True),
|
||||
'flavor_id': common_types.UUIDField(nullable=True),
|
||||
}
|
||||
|
||||
|
||||
@base.NeutronObjectRegistry.register
|
||||
class FloatingIP(base.NeutronDbObject):
|
||||
# Version 1.0: Initial version
|
||||
|
|
|
@ -234,6 +234,10 @@ def get_random_ip_address(version=4):
|
|||
return ip
|
||||
|
||||
|
||||
def get_random_router_status():
|
||||
return random.choice(n_const.VALID_ROUTER_STATUS)
|
||||
|
||||
|
||||
def get_random_floatingip_status():
|
||||
return random.choice(n_const.VALID_FLOATINGIP_STATUS)
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ from neutron.objects import network as net_obj
|
|||
from neutron.objects import ports
|
||||
from neutron.objects.qos import policy as qos_policy
|
||||
from neutron.objects import rbac_db
|
||||
from neutron.objects import router
|
||||
from neutron.objects import securitygroup
|
||||
from neutron.objects import subnet
|
||||
from neutron.objects import utils as obj_utils
|
||||
|
@ -488,6 +489,7 @@ FIELD_TYPE_VALUE_GENERATOR_MAP = {
|
|||
tools.get_random_port_binding_statuses,
|
||||
common_types.PortRangeField: tools.get_random_port,
|
||||
common_types.PortRangeWith0Field: lambda: tools.get_random_port(0),
|
||||
common_types.RouterStatusEnumField: tools.get_random_router_status,
|
||||
common_types.SetOfUUIDsField: get_set_of_random_uuids,
|
||||
common_types.UUIDField: uuidutils.generate_uuid,
|
||||
common_types.VlanIdRangeField: tools.get_random_vlan,
|
||||
|
@ -1517,10 +1519,9 @@ class BaseDbObjectTestCase(_BaseObjectTestCase,
|
|||
attrs = {
|
||||
'name': 'test_router',
|
||||
}
|
||||
# TODO(sindhu): Replace with the router object once its ready
|
||||
router = obj_db_api.create_object(
|
||||
self.context, l3_model.Router, attrs)
|
||||
return router['id']
|
||||
self._router = router.Router(self.context, **attrs)
|
||||
self._router.create()
|
||||
return self._router['id']
|
||||
|
||||
def _create_test_security_group_id(self):
|
||||
sg_fields = self.get_random_object_fields(securitygroup.SecurityGroup)
|
||||
|
|
|
@ -83,6 +83,7 @@ object_data = {
|
|||
'Reservation': '1.0-49929fef8e82051660342eed51b48f2a',
|
||||
'ResourceDelta': '1.0-a980b37e0a52618b5af8db29af18be76',
|
||||
'Route': '1.0-a9883a63b416126f9e345523ec09483b',
|
||||
'Router': '1.0-b8d482cf3164541da4edaec99a644507',
|
||||
'RouterExtraAttributes': '1.0-ef8d61ae2864f0ec9af0ab7939cab318',
|
||||
'RouterL3AgentBinding': '1.0-c5ba6c95e3a4c1236a55f490cd67da82',
|
||||
'RouterPort': '1.0-c8c8f499bcdd59186fcd83f323106908',
|
||||
|
|
|
@ -50,6 +50,23 @@ class RouterExtraAttrsDbObjTestCase(obj_test_base.BaseDbObjectTestCase,
|
|||
{'router_id': lambda: self._create_test_router_id()})
|
||||
|
||||
|
||||
class RouterIfaceObjectTestCase(obj_test_base.BaseObjectIfaceTestCase):
|
||||
|
||||
_test_class = router.Router
|
||||
|
||||
|
||||
class RouterDbObjectTestCase(obj_test_base.BaseDbObjectTestCase,
|
||||
testlib_api.SqlTestCase):
|
||||
|
||||
_test_class = router.Router
|
||||
|
||||
def setUp(self):
|
||||
super(RouterDbObjectTestCase, self).setUp()
|
||||
self.update_obj_fields(
|
||||
{'gw_port_id': lambda: self._create_test_port_id(),
|
||||
'flavor_id': lambda: self._create_test_flavor_id()})
|
||||
|
||||
|
||||
class RouterPortIfaceObjectTestCase(obj_test_base.BaseObjectIfaceTestCase):
|
||||
|
||||
_test_class = router.RouterPort
|
||||
|
|
Loading…
Reference in New Issue