diff --git a/doc/source/command-objects/network.rst b/doc/source/command-objects/network.rst index e0a649c15..9fbc02164 100644 --- a/doc/source/command-objects/network.rst +++ b/doc/source/command-objects/network.rst @@ -18,6 +18,9 @@ Create new network [--share | --no-share] [--availability-zone-hint ] [--external [--default | --no-default] | --internal] + [--provider-network-type ] + [--provider-physical-network ] + [--provider-segmentation-id ] .. option:: --project @@ -83,6 +86,22 @@ Create new network By default, no network is set as an external network. (Network v2 only) +.. option:: --provider-network-type + + The physical mechanism by which the virtual network is implemented. + The supported options are: flat, gre, local, vlan, vxlan + (Network v2 only) + +.. option:: --provider-physical-network + + Name of the physical network over which the virtual network is implemented + (Network v2 only) + +.. option:: --provider-segmentation-id + + VLAN ID for VLAN networks or tunnel-id for GRE/VXLAN networks + (Network v2 only) + .. _network_create-name: .. describe:: diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py index 6fd18efb4..d3b20c0f3 100644 --- a/openstackclient/network/v2/network.py +++ b/openstackclient/network/v2/network.py @@ -165,6 +165,26 @@ class CreateNetwork(common.NetworkAndComputeShowOne): action='store_true', help='Do not use the network as the default external network.' 'By default, no network is set as an external network.') + parser.add_argument( + '--provider-network-type', + metavar='', + choices=['flat', 'gre', 'local', + 'vlan', 'vxlan'], + help='The physical mechanism by which the virtual network ' + 'is implemented. The supported options are: ' + 'flat, gre, local, vlan, vxlan') + parser.add_argument( + '--provider-physical-network', + metavar='', + dest='physical_network', + help='Name of the physical network over which the virtual ' + 'network is implemented') + parser.add_argument( + '--provider-segmentation-id', + metavar='', + dest='segmentation_id', + help='VLAN ID for VLAN networks or tunnel-id for GRE/VXLAN ' + 'networks') return parser def update_parser_compute(self, parser): @@ -185,6 +205,12 @@ class CreateNetwork(common.NetworkAndComputeShowOne): attrs['is_default'] = False if parsed_args.default: attrs['is_default'] = True + if parsed_args.provider_network_type: + attrs['provider:network_type'] = parsed_args.provider_network_type + if parsed_args.physical_network: + attrs['provider:physical_network'] = parsed_args.physical_network + if parsed_args.segmentation_id: + attrs['provider:segmentation_id'] = parsed_args.segmentation_id obj = client.create_network(**attrs) columns = _get_columns(obj) data = utils.get_item_properties(obj, columns, formatters=_formatters) diff --git a/openstackclient/tests/network/v2/test_network.py b/openstackclient/tests/network/v2/test_network.py index 572bc6aee..2493362e2 100644 --- a/openstackclient/tests/network/v2/test_network.py +++ b/openstackclient/tests/network/v2/test_network.py @@ -142,6 +142,9 @@ class TestCreateNetworkIdentityV3(TestNetwork): "--project-domain", identity_fakes_v3.domain_name, "--availability-zone-hint", "nova", "--external", "--default", + "--provider-network-type", "vlan", + "--provider-physical-network", "physnet1", + "--provider-segmentation-id", "400", self._network.name, ] verifylist = [ @@ -152,6 +155,9 @@ class TestCreateNetworkIdentityV3(TestNetwork): ('availability_zone_hints', ["nova"]), ('external', True), ('default', True), + ('provider_network_type', 'vlan'), + ('physical_network', 'physnet1'), + ('segmentation_id', '400'), ('name', self._network.name), ] @@ -166,6 +172,9 @@ class TestCreateNetworkIdentityV3(TestNetwork): 'tenant_id': identity_fakes_v3.project_id, 'is_default': True, 'router:external': True, + 'provider:network_type': 'vlan', + 'provider:physical_network': 'physnet1', + 'provider:segmentation_id': '400', }) self.assertEqual(self.columns, columns) self.assertEqual(self.data, data) diff --git a/releasenotes/notes/add-provider-options-12bbf01d2280dd2f.yaml b/releasenotes/notes/add-provider-options-12bbf01d2280dd2f.yaml new file mode 100644 index 000000000..68de08190 --- /dev/null +++ b/releasenotes/notes/add-provider-options-12bbf01d2280dd2f.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + New options have been added to the ``network create`` command + to support provider network functionality. + These options are ``--provider-network-type``, ``--provider-physical-network``, + and ``--provider-segmentation-id``. + These options are available for Networkv2 only + [Bug `1545537 `_]