From 0220f6f093955944485b3e23022b8d555827a3f5 Mon Sep 17 00:00:00 2001 From: Rudrajit Tapadar Date: Fri, 16 Aug 2013 14:53:32 -0700 Subject: [PATCH] Add multi-segment and trunk support to N1KV Neutron client Change-Id: I7e1f8ffb0c5aadfbfd1b808e49495f27aae4ef12 Implements: blueprint neutron-client-n1000v-multisegment-trunk --- neutronclient/neutron/v2_0/networkprofile.py | 12 +++++++-- .../tests/unit/test_cli20_networkprofile.py | 25 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/neutronclient/neutron/v2_0/networkprofile.py b/neutronclient/neutron/v2_0/networkprofile.py index 7c24b4f2a..760d66934 100644 --- a/neutronclient/neutron/v2_0/networkprofile.py +++ b/neutronclient/neutron/v2_0/networkprofile.py @@ -14,6 +14,7 @@ # #@author Abhishek Raut, Cisco Systems #@author Sergey Sudakovich, Cisco Systems +#@author Rudrajit Tapadar, Cisco Systems import logging @@ -22,7 +23,8 @@ from neutronclient.neutron.v2_0 import parse_args_to_dict from neutronclient.openstack.common.gettextutils import _ RESOURCE = 'network_profile' -SEGMENT_TYPE_CHOICES = ['vlan', 'vxlan'] +SEGMENT_TYPE_CHOICES = ['vlan', 'vxlan', 'multi-segment', 'trunk'] +SEGMENT_SUBTYPE_CHOICES = ['vlan', 'vxlan'] class ListNetworkProfile(neutronV20.ListCommand): @@ -31,7 +33,7 @@ class ListNetworkProfile(neutronV20.ListCommand): resource = RESOURCE log = logging.getLogger(__name__ + '.ListNetworkProfile') _formatters = {} - list_columns = ['id', 'name', 'segment_type', 'segment_range', + list_columns = ['id', 'name', 'segment_type', 'sub_type', 'segment_range', 'physical_network', 'multicast_ip_index', 'multicast_ip_range'] @@ -56,6 +58,9 @@ class CreateNetworkProfile(neutronV20.CreateCommand): parser.add_argument('segment_type', choices=SEGMENT_TYPE_CHOICES, help='Segment type') + parser.add_argument('--sub_type', + choices=SEGMENT_SUBTYPE_CHOICES, + help='Sub-type for the Segment') parser.add_argument('--segment_range', help='Range for the Segment') parser.add_argument('--physical_network', @@ -70,6 +75,9 @@ class CreateNetworkProfile(neutronV20.CreateCommand): if parsed_args.segment_type: body['network_profile'].update({'segment_type': parsed_args.segment_type}) + if parsed_args.sub_type: + body['network_profile'].update({'sub_type': + parsed_args.sub_type}) if parsed_args.segment_range: body['network_profile'].update({'segment_range': parsed_args.segment_range}) diff --git a/neutronclient/tests/unit/test_cli20_networkprofile.py b/neutronclient/tests/unit/test_cli20_networkprofile.py index 61d9ede6a..e96a2c62e 100644 --- a/neutronclient/tests/unit/test_cli20_networkprofile.py +++ b/neutronclient/tests/unit/test_cli20_networkprofile.py @@ -84,3 +84,28 @@ class CLITestV20NetworkProfile(test_cli20.CLITestV20Base): myid = 'myid' args = [myid] self._test_delete_resource(resource, cmd, myid, args) + + def test_create_networkprofile_trunk(self): + """Create networkprofile: myid.""" + resource = 'network_profile' + cmd = networkprofile.CreateNetworkProfile(test_cli20. + MyApp(sys.stdout), None) + name = 'myname' + myid = 'myid' + segment_type = 'trunk' + args = [name, segment_type, '--sub_type', 'vlan'] + position_names = ['name', 'segment_type', ] + position_values = [name, segment_type, ] + self._test_create_resource(resource, cmd, name, myid, args, + position_names, position_values, + sub_type='vlan') + + def test_list_networkprofile_trunk_detail(self): + """List networkprofile: -D.""" + resources = 'network_profiles' + cmd = networkprofile.ListNetworkProfile(test_cli20.MyApp(sys.stdout), + None) + contents = [{'name': 'myname', 'segment_type': 'trunk', + '--sub_type': 'vlan'}] + self._test_list_resources(resources, cmd, True, + response_contents=contents)