NSX-mh: allow names with underscore for l2gw transport
This patch: 1) adds ipsec_stt and ipsec_gre as valid names for l2 gw device tranport types. The corresponding names without the underscore are anyway still valid 2) raises an exception if an invalid transport type is specified, rather than creating a node without transport connector, as that is not the expected behaviour. Change-Id: If43b854e553b9cf927a566496cc95b85ae70c414 Closes-bug: #1474834
This commit is contained in:
parent
565908091a
commit
25924649a3
|
@ -65,6 +65,11 @@ class L2GatewayAlreadyInUse(n_exc.Conflict):
|
|||
message = _("Gateway Service %(gateway)s is already in use")
|
||||
|
||||
|
||||
class InvalidTransportType(NsxPluginException):
|
||||
message = _("The transport type %(transport_type)s is not recognized "
|
||||
"by the backend")
|
||||
|
||||
|
||||
class InvalidSecurityCertificate(NsxPluginException):
|
||||
message = _("An invalid security certificate was specified for the "
|
||||
"gateway device. Certificates must be enclosed between "
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
# under the License.
|
||||
#
|
||||
|
||||
from neutron.i18n import _LE
|
||||
from oslo_log import log
|
||||
from oslo_serialization import jsonutils
|
||||
|
||||
|
@ -121,8 +122,15 @@ def _build_gateway_device_body(tenant_id, display_name, neutron_id,
|
|||
utils.NetworkTypes.GRE: "GREConnector",
|
||||
utils.NetworkTypes.BRIDGE: "BridgeConnector",
|
||||
'ipsec%s' % utils.NetworkTypes.STT: "IPsecSTT",
|
||||
'ipsec%s' % utils.NetworkTypes.GRE: "IPsecGRE"}
|
||||
'ipsec%s' % utils.NetworkTypes.GRE: "IPsecGRE",
|
||||
'ipsec_%s' % utils.NetworkTypes.STT: "IPsecSTT",
|
||||
'ipsec_%s' % utils.NetworkTypes.GRE: "IPsecGRE"}
|
||||
nsx_connector_type = connector_type_mappings.get(connector_type)
|
||||
if connector_type and not nsx_connector_type:
|
||||
LOG.error(_LE("There is no NSX mapping for connector type %s"),
|
||||
connector_type)
|
||||
raise nsx_exc.InvalidTransportType(transport_type=connector_type)
|
||||
|
||||
body = {"display_name": utils.check_and_truncate(display_name),
|
||||
"tags": utils.get_tags(os_tid=tenant_id,
|
||||
q_gw_dev_id=neutron_id),
|
||||
|
|
|
@ -19,6 +19,7 @@ from neutron.tests.unit.api.v2 import test_base
|
|||
from oslo_serialization import jsonutils
|
||||
|
||||
from vmware_nsx.neutron.plugins.vmware.api_client import exception
|
||||
from vmware_nsx.neutron.plugins.vmware.common import exceptions as nsx_exc
|
||||
from vmware_nsx.neutron.plugins.vmware.common import utils as nsx_utils
|
||||
from vmware_nsx.neutron.plugins.vmware import nsxlib
|
||||
from vmware_nsx.neutron.plugins.vmware.nsxlib import l2gateway as l2gwlib
|
||||
|
@ -195,6 +196,18 @@ class L2GatewayTestCase(base.NsxlibTestCase):
|
|||
jsonutils.dumps(expected_req_body, sort_keys=True),
|
||||
cluster=self.fake_cluster)
|
||||
|
||||
def test_create_gw_device_with_invalid_transport_type_raises(self):
|
||||
display_name = 'fake-device'
|
||||
neutron_id = 'whatever'
|
||||
connector_type = 'foo'
|
||||
connector_ip = '1.1.1.1'
|
||||
client_certificate = 'this_should_be_a_certificate'
|
||||
self.assertRaises(nsx_exc.InvalidTransportType,
|
||||
l2gwlib.create_gateway_device,
|
||||
self.fake_cluster, 'fake_tenant', display_name,
|
||||
neutron_id, 'fake_tz_uuid', connector_type,
|
||||
connector_ip, client_certificate)
|
||||
|
||||
def test_update_gw_device(self):
|
||||
# NOTE(salv-orlando): This unit test mocks backend calls rather than
|
||||
# leveraging the fake NSX API client
|
||||
|
|
Loading…
Reference in New Issue