From 2ef3c0d44905d7465732630c68308b18f21c0b82 Mon Sep 17 00:00:00 2001 From: Henry Gessau Date: Sat, 26 Nov 2016 01:29:24 -0500 Subject: [PATCH] Use DB field sizes instead of _MAX_LEN constants The following _MAX_LEN constants are being removed from neutron/api/v2/attributes.py in [1]. The corresponding DB field size constants from neutron_lib.db.constants should be used instead. NAME_MAX_LEN --> NAME_FIELD_SIZE TENANT_ID_MAX_LEN --> PROJECT_ID_FIELD_SIZE DESCRIPTION_MAX_LEN --> DESCRIPTION_FIELD_SIZE LONG_DESCRIPTION_MAX_LEN --> LONG_DESCRIPTION_FIELD_SIZE DEVICE_ID_MAX_LEN --> DEVICE_ID_FIELD_SIZE DEVICE_OWNER_MAX_LEN --> DEVICE_NAME_FIELD_SIZE In alembic migration scripts, the raw numerical value shall be used. For more information, see [2]. [1] https://review.openstack.org/399891 [2] http://lists.openstack.org/pipermail/openstack-dev/2016-October/105789.html Change-Id: I26dbaa970acac0327ffd05986dc6bdac522740a4 --- .../2cb4ee992b41_multiple_local_subnets.py | 9 +++-- .../41b509d10b5e_vpnaas_endpoint_groups.py | 8 ++--- neutron_vpnaas/db/vpn/vpn_models.py | 22 ++++++------ .../extensions/vpn_endpoint_groups.py | 10 +++--- neutron_vpnaas/extensions/vpnaas.py | 34 ++++++++++++------- .../tests/tempest/api/test_vpnaas.py | 6 ++-- 6 files changed, 48 insertions(+), 41 deletions(-) diff --git a/neutron_vpnaas/db/migration/alembic_migrations/versions/mitaka/contract/2cb4ee992b41_multiple_local_subnets.py b/neutron_vpnaas/db/migration/alembic_migrations/versions/mitaka/contract/2cb4ee992b41_multiple_local_subnets.py index da162ee39..ff9df3542 100644 --- a/neutron_vpnaas/db/migration/alembic_migrations/versions/mitaka/contract/2cb4ee992b41_multiple_local_subnets.py +++ b/neutron_vpnaas/db/migration/alembic_migrations/versions/mitaka/contract/2cb4ee992b41_multiple_local_subnets.py @@ -26,7 +26,6 @@ from oslo_utils import uuidutils import sqlalchemy as sa from sqlalchemy.sql import expression as sa_expr -from neutron.api.v2 import attributes as attr from neutron.db import migration from neutron_vpnaas.services.vpn.common import constants as v_constants @@ -45,8 +44,8 @@ vpnservices = sa.Table( 'vpnservices', sa.MetaData(), sa.Column('id', sa.String(length=36), nullable=False), sa.Column('tenant_id', sa.String(length=255), nullable=False), - sa.Column('name', sa.String(attr.NAME_MAX_LEN)), - sa.Column('description', sa.String(attr.DESCRIPTION_MAX_LEN)), + sa.Column('name', sa.String(255)), + sa.Column('description', sa.String(255)), sa.Column('status', sa.String(16), nullable=False), sa.Column('admin_state_up', sa.Boolean(), nullable=False), sa.Column('external_v4_ip', sa.String(16)), @@ -58,8 +57,8 @@ ipsec_site_conns = sa.Table( 'ipsec_site_connections', sa.MetaData(), sa.Column('id', sa.String(length=36), nullable=False), sa.Column('tenant_id', sa.String(length=255), nullable=False), - sa.Column('name', sa.String(attr.NAME_MAX_LEN)), - sa.Column('description', sa.String(attr.DESCRIPTION_MAX_LEN)), + sa.Column('name', sa.String(255)), + sa.Column('description', sa.String(255)), sa.Column('peer_address', sa.String(255), nullable=False), sa.Column('peer_id', sa.String(255), nullable=False), sa.Column('route_mode', sa.String(8), nullable=False), diff --git a/neutron_vpnaas/db/migration/alembic_migrations/versions/mitaka/expand/41b509d10b5e_vpnaas_endpoint_groups.py b/neutron_vpnaas/db/migration/alembic_migrations/versions/mitaka/expand/41b509d10b5e_vpnaas_endpoint_groups.py index f64cf261e..43242fdcb 100644 --- a/neutron_vpnaas/db/migration/alembic_migrations/versions/mitaka/expand/41b509d10b5e_vpnaas_endpoint_groups.py +++ b/neutron_vpnaas/db/migration/alembic_migrations/versions/mitaka/expand/41b509d10b5e_vpnaas_endpoint_groups.py @@ -27,8 +27,6 @@ down_revision = '24f28869838b' from alembic import op import sqlalchemy as sa -from neutron.api.v2 import attributes as attr - from neutron_vpnaas.services.vpn.common import constants @@ -37,10 +35,10 @@ def upgrade(): 'vpn_endpoint_groups', sa.Column('id', sa.String(length=36), nullable=False, primary_key=True), - sa.Column('tenant_id', sa.String(length=attr.TENANT_ID_MAX_LEN), + sa.Column('tenant_id', sa.String(length=255), index=True), - sa.Column('name', sa.String(length=attr.NAME_MAX_LEN)), - sa.Column('description', sa.String(length=attr.DESCRIPTION_MAX_LEN)), + sa.Column('name', sa.String(length=255)), + sa.Column('description', sa.String(length=255)), sa.Column('endpoint_type', sa.Enum(constants.SUBNET_ENDPOINT, constants.CIDR_ENDPOINT, constants.VLAN_ENDPOINT, constants.NETWORK_ENDPOINT, diff --git a/neutron_vpnaas/db/vpn/vpn_models.py b/neutron_vpnaas/db/vpn/vpn_models.py index a5f45660c..57f70a5d6 100644 --- a/neutron_vpnaas/db/vpn/vpn_models.py +++ b/neutron_vpnaas/db/vpn/vpn_models.py @@ -13,11 +13,11 @@ # License for the specific language governing permissions and limitations # under the License. +from neutron_lib.db import constants as db_const from neutron_lib.db import model_base import sqlalchemy as sa from sqlalchemy import orm -from neutron.api.v2 import attributes as attr from neutron.db import l3_db from neutron.db import models_v2 @@ -38,8 +38,8 @@ class IPsecPeerCidr(model_base.BASEV2): class IPsecPolicy(model_base.BASEV2, model_base.HasId, model_base.HasProject): """Represents a v2 IPsecPolicy Object.""" __tablename__ = 'ipsecpolicies' - name = sa.Column(sa.String(attr.NAME_MAX_LEN)) - description = sa.Column(sa.String(attr.DESCRIPTION_MAX_LEN)) + name = sa.Column(sa.String(db_const.NAME_FIELD_SIZE)) + description = sa.Column(sa.String(db_const.DESCRIPTION_FIELD_SIZE)) transform_protocol = sa.Column(sa.Enum("esp", "ah", "ah-esp", name="ipsec_transform_protocols"), nullable=False) @@ -65,8 +65,8 @@ class IPsecPolicy(model_base.BASEV2, model_base.HasId, model_base.HasProject): class IKEPolicy(model_base.BASEV2, model_base.HasId, model_base.HasProject): """Represents a v2 IKEPolicy Object.""" __tablename__ = 'ikepolicies' - name = sa.Column(sa.String(attr.NAME_MAX_LEN)) - description = sa.Column(sa.String(attr.DESCRIPTION_MAX_LEN)) + name = sa.Column(sa.String(db_const.NAME_FIELD_SIZE)) + description = sa.Column(sa.String(db_const.DESCRIPTION_FIELD_SIZE)) auth_algorithm = sa.Column(sa.Enum("sha1", "sha256", "sha384", "sha512", name="vpn_auth_algorithms"), @@ -92,8 +92,8 @@ class IPsecSiteConnection(model_base.BASEV2, model_base.HasId, model_base.HasProject): """Represents a IPsecSiteConnection Object.""" __tablename__ = 'ipsec_site_connections' - name = sa.Column(sa.String(attr.NAME_MAX_LEN)) - description = sa.Column(sa.String(attr.DESCRIPTION_MAX_LEN)) + name = sa.Column(sa.String(db_const.NAME_FIELD_SIZE)) + description = sa.Column(sa.String(db_const.DESCRIPTION_FIELD_SIZE)) peer_address = sa.Column(sa.String(255), nullable=False) peer_id = sa.Column(sa.String(255), nullable=False) local_id = sa.Column(sa.String(255), nullable=True) @@ -139,8 +139,8 @@ class IPsecSiteConnection(model_base.BASEV2, model_base.HasId, class VPNService(model_base.BASEV2, model_base.HasId, model_base.HasProject): """Represents a v2 VPNService Object.""" - name = sa.Column(sa.String(attr.NAME_MAX_LEN)) - description = sa.Column(sa.String(attr.DESCRIPTION_MAX_LEN)) + name = sa.Column(sa.String(db_const.NAME_FIELD_SIZE)) + description = sa.Column(sa.String(db_const.DESCRIPTION_FIELD_SIZE)) status = sa.Column(sa.String(16), nullable=False) admin_state_up = sa.Column(sa.Boolean(), nullable=False) external_v4_ip = sa.Column(sa.String(16)) @@ -175,8 +175,8 @@ class VPNEndpointGroup(model_base.BASEV2, model_base.HasId, model_base.HasProject): """Collection of endpoints of a specific type, for VPN connections.""" __tablename__ = 'vpn_endpoint_groups' - name = sa.Column(sa.String(attr.NAME_MAX_LEN)) - description = sa.Column(sa.String(attr.DESCRIPTION_MAX_LEN)) + name = sa.Column(sa.String(db_const.NAME_FIELD_SIZE)) + description = sa.Column(sa.String(db_const.DESCRIPTION_FIELD_SIZE)) endpoint_type = sa.Column(sa.Enum(*constants.VPN_SUPPORTED_ENDPOINT_TYPES, name="vpn_endpoint_type"), nullable=False) diff --git a/neutron_vpnaas/extensions/vpn_endpoint_groups.py b/neutron_vpnaas/extensions/vpn_endpoint_groups.py index e4d0f7753..d964ade26 100644 --- a/neutron_vpnaas/extensions/vpn_endpoint_groups.py +++ b/neutron_vpnaas/extensions/vpn_endpoint_groups.py @@ -16,12 +16,12 @@ import abc import six -from neutron.api.v2 import attributes as attr from neutron.api.v2 import resource_helper from neutron.plugins.common import constants as nconstants from neutron_lib.api import converters from neutron_lib.api import extensions +from neutron_lib.db import constants as db_const from neutron_vpnaas.services.vpn.common import constants @@ -34,14 +34,16 @@ RESOURCE_ATTRIBUTE_MAP = { 'is_visible': True, 'primary_key': True}, 'tenant_id': {'allow_post': True, 'allow_put': False, - 'validate': {'type:string': attr.TENANT_ID_MAX_LEN}, + 'validate': { + 'type:string': db_const.PROJECT_ID_FIELD_SIZE}, 'required_by_policy': True, 'is_visible': True}, 'name': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.NAME_MAX_LEN}, + 'validate': {'type:string': db_const.NAME_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'description': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.DESCRIPTION_MAX_LEN}, + 'validate': { + 'type:string': db_const.DESCRIPTION_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'type': {'allow_post': True, 'allow_put': False, 'validate': { diff --git a/neutron_vpnaas/extensions/vpnaas.py b/neutron_vpnaas/extensions/vpnaas.py index 4dacbf8f5..fd0046b8d 100644 --- a/neutron_vpnaas/extensions/vpnaas.py +++ b/neutron_vpnaas/extensions/vpnaas.py @@ -18,10 +18,10 @@ import abc from neutron_lib.api import converters from neutron_lib.api import extensions from neutron_lib.api import validators as validators +from neutron_lib.db import constants as db_const from neutron_lib import exceptions as nexception import six -from neutron.api.v2 import attributes as attr from neutron.api.v2 import resource_helper from neutron.plugins.common import constants as nconstants from neutron.services import service_base @@ -203,14 +203,16 @@ RESOURCE_ATTRIBUTE_MAP = { 'is_visible': True, 'primary_key': True}, 'tenant_id': {'allow_post': True, 'allow_put': False, - 'validate': {'type:string': attr.TENANT_ID_MAX_LEN}, + 'validate': { + 'type:string': db_const.PROJECT_ID_FIELD_SIZE}, 'required_by_policy': True, 'is_visible': True}, 'name': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.NAME_MAX_LEN}, + 'validate': {'type:string': db_const.NAME_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'description': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.DESCRIPTION_MAX_LEN}, + 'validate': { + 'type:string': db_const.DESCRIPTION_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'subnet_id': {'allow_post': True, 'allow_put': False, 'validate': {'type:uuid_or_none': None}, @@ -236,14 +238,16 @@ RESOURCE_ATTRIBUTE_MAP = { 'is_visible': True, 'primary_key': True}, 'tenant_id': {'allow_post': True, 'allow_put': False, - 'validate': {'type:string': attr.TENANT_ID_MAX_LEN}, + 'validate': { + 'type:string': db_const.PROJECT_ID_FIELD_SIZE}, 'required_by_policy': True, 'is_visible': True}, 'name': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.NAME_MAX_LEN}, + 'validate': {'type:string': db_const.NAME_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'description': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.DESCRIPTION_MAX_LEN}, + 'validate': { + 'type:string': db_const.DESCRIPTION_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'local_id': {'allow_post': True, 'allow_put': True, 'validate': {'type:string': None}, @@ -322,14 +326,16 @@ RESOURCE_ATTRIBUTE_MAP = { 'is_visible': True, 'primary_key': True}, 'tenant_id': {'allow_post': True, 'allow_put': False, - 'validate': {'type:string': attr.TENANT_ID_MAX_LEN}, + 'validate': { + 'type:string': db_const.PROJECT_ID_FIELD_SIZE}, 'required_by_policy': True, 'is_visible': True}, 'name': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.NAME_MAX_LEN}, + 'validate': {'type:string': db_const.NAME_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'description': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.DESCRIPTION_MAX_LEN}, + 'validate': { + 'type:string': db_const.DESCRIPTION_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'transform_protocol': { 'allow_post': True, @@ -386,14 +392,16 @@ RESOURCE_ATTRIBUTE_MAP = { 'is_visible': True, 'primary_key': True}, 'tenant_id': {'allow_post': True, 'allow_put': False, - 'validate': {'type:string': attr.TENANT_ID_MAX_LEN}, + 'validate': { + 'type:string': db_const.PROJECT_ID_FIELD_SIZE}, 'required_by_policy': True, 'is_visible': True}, 'name': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.NAME_MAX_LEN}, + 'validate': {'type:string': db_const.NAME_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'description': {'allow_post': True, 'allow_put': True, - 'validate': {'type:string': attr.DESCRIPTION_MAX_LEN}, + 'validate': { + 'type:string': db_const.DESCRIPTION_FIELD_SIZE}, 'is_visible': True, 'default': ''}, 'auth_algorithm': {'allow_post': True, 'allow_put': True, 'default': 'sha1', diff --git a/neutron_vpnaas/tests/tempest/api/test_vpnaas.py b/neutron_vpnaas/tests/tempest/api/test_vpnaas.py index f2db2585d..5ab520067 100644 --- a/neutron_vpnaas/tests/tempest/api/test_vpnaas.py +++ b/neutron_vpnaas/tests/tempest/api/test_vpnaas.py @@ -13,20 +13,20 @@ # License for the specific language governing permissions and limitations # under the License. +from neutron_lib.db import constants as db_const import six from tempest.lib.common.utils import data_utils from tempest.lib import exceptions as lib_exc from tempest import test -from neutron.api.v2 import attributes as attr from neutron.tests.tempest import config from neutron_vpnaas.tests.tempest.api import base CONF = config.CONF -_LONG_NAME = 'x' * (attr.NAME_MAX_LEN + 1) -_LONG_DESCRIPTION = 'y' * (attr.DESCRIPTION_MAX_LEN + 1) +_LONG_NAME = 'x' * (db_const.NAME_FIELD_SIZE + 1) +_LONG_DESCRIPTION = 'y' * (db_const.DESCRIPTION_FIELD_SIZE + 1) class VPNaaSTestJSON(base.BaseAdminNetworkTest):