Added 'tap_enabled' parameter for Port-pair-group
Adding 'tap_enabled' parameters to port-pair-group. If '--enable-tap' set to True, port pairs in port-pair-group will be deployed as passive Tap service function. Change-Id: I7267b7ce782f040d0951a3b522d183931debe818
This commit is contained in:
		 Vikash082
					Vikash082
				
			
				
					committed by
					
						 Akihiro Motoki
						Akihiro Motoki
					
				
			
			
				
	
			
			
			 Akihiro Motoki
						Akihiro Motoki
					
				
			
						parent
						
							0907ccc4df
						
					
				
				
					commit
					d24c41dde5
				
			| @@ -36,6 +36,7 @@ _attr_map = ( | |||||||
|     ('description', 'Description', nc_osc_utils.LIST_LONG_ONLY), |     ('description', 'Description', nc_osc_utils.LIST_LONG_ONLY), | ||||||
|     ('group_id', 'Loadbalance ID', nc_osc_utils.LIST_LONG_ONLY), |     ('group_id', 'Loadbalance ID', nc_osc_utils.LIST_LONG_ONLY), | ||||||
|     ('project_id', 'Project',  nc_osc_utils.LIST_LONG_ONLY), |     ('project_id', 'Project',  nc_osc_utils.LIST_LONG_ONLY), | ||||||
|  |     ('tap_enabled', 'Tap Enabled', nc_osc_utils.LIST_BOTH) | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -60,6 +61,19 @@ class CreateSfcPortPairGroup(command.ShowOne): | |||||||
|             action='append', |             action='append', | ||||||
|             help=_('Port pair (name or ID). ' |             help=_('Port pair (name or ID). ' | ||||||
|                    'This option can be repeated.')) |                    'This option can be repeated.')) | ||||||
|  |         tap_enable = parser.add_mutually_exclusive_group() | ||||||
|  |         tap_enable.add_argument( | ||||||
|  |             '--enable-tap', | ||||||
|  |             action='store_true', | ||||||
|  |             help=_('Port pairs of this port pair group are deployed as ' | ||||||
|  |                    'passive tap service function') | ||||||
|  |         ) | ||||||
|  |         tap_enable.add_argument( | ||||||
|  |             '--disable-tap', | ||||||
|  |             action='store_true', | ||||||
|  |             help=_('Port pairs of this port pair group are deployed as l3 ' | ||||||
|  |                    'service function (default)') | ||||||
|  |         ) | ||||||
|         parser.add_argument( |         parser.add_argument( | ||||||
|             '--port-pair-group-parameters', |             '--port-pair-group-parameters', | ||||||
|             metavar='lb-fields=<lb-fields>', |             metavar='lb-fields=<lb-fields>', | ||||||
| @@ -285,6 +299,10 @@ def _get_attrs(attrs, parsed_args): | |||||||
|             parsed_args.port_pair_group_parameters is not None): |             parsed_args.port_pair_group_parameters is not None): | ||||||
|         attrs['port_pair_group_parameters'] = ( |         attrs['port_pair_group_parameters'] = ( | ||||||
|             _get_ppg_param(attrs, parsed_args.port_pair_group_parameters)) |             _get_ppg_param(attrs, parsed_args.port_pair_group_parameters)) | ||||||
|  |     if parsed_args.enable_tap: | ||||||
|  |         attrs['tap_enabled'] = True | ||||||
|  |     if parsed_args.disable_tap: | ||||||
|  |         attrs['tap_enabled'] = False | ||||||
|  |  | ||||||
|  |  | ||||||
| def _get_id(client, id_or_name, resource): | def _get_id(client, id_or_name, resource): | ||||||
|   | |||||||
| @@ -107,7 +107,8 @@ class FakeSfcPortPairGroup(object): | |||||||
|             'description': 'description', |             'description': 'description', | ||||||
|             'port_pairs': uuidutils.generate_uuid(), |             'port_pairs': uuidutils.generate_uuid(), | ||||||
|             'port_pair_group_parameters': '{"lb_fields": []}', |             'port_pair_group_parameters': '{"lb_fields": []}', | ||||||
|             'project_id': uuidutils.generate_uuid() |             'project_id': uuidutils.generate_uuid(), | ||||||
|  |             'tap_enabled': False | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         # port_pair_group_attrs default attributes. |         # port_pair_group_attrs default attributes. | ||||||
|   | |||||||
| @@ -33,17 +33,19 @@ class TestCreateSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | |||||||
|                'Name', |                'Name', | ||||||
|                'Port Pair', |                'Port Pair', | ||||||
|                'Port Pair Group Parameters', |                'Port Pair Group Parameters', | ||||||
|                'Project') |                'Project', | ||||||
|  |                'Tap Enabled') | ||||||
|  |  | ||||||
|     def get_data(self): |     def get_data(self, ppg): | ||||||
|         return ( |         return ( | ||||||
|             self._port_pair_group['description'], |             ppg['description'], | ||||||
|             self._port_pair_group['id'], |             ppg['id'], | ||||||
|             self._port_pair_group['group_id'], |             ppg['group_id'], | ||||||
|             self._port_pair_group['name'], |             ppg['name'], | ||||||
|             self._port_pair_group['port_pairs'], |             ppg['port_pairs'], | ||||||
|             self._port_pair_group['port_pair_group_parameters'], |             ppg['port_pair_group_parameters'], | ||||||
|             self._port_pair_group['project_id'] |             ppg['project_id'], | ||||||
|  |             ppg['tap_enabled'] | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
| @@ -53,7 +55,7 @@ class TestCreateSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | |||||||
|             new=_get_id).start() |             new=_get_id).start() | ||||||
|         self.neutronclient.create_sfc_port_pair_group = mock.Mock( |         self.neutronclient.create_sfc_port_pair_group = mock.Mock( | ||||||
|             return_value={'port_pair_group': self._port_pair_group}) |             return_value={'port_pair_group': self._port_pair_group}) | ||||||
|         self.data = self.get_data() |         self.data = self.get_data(self._port_pair_group) | ||||||
|         # Get the command object to test |         # Get the command object to test | ||||||
|         self.cmd = sfc_port_pair_group.CreateSfcPortPairGroup(self.app, |         self.cmd = sfc_port_pair_group.CreateSfcPortPairGroup(self.app, | ||||||
|                                                               self.namespace) |                                                               self.namespace) | ||||||
| @@ -73,7 +75,8 @@ class TestCreateSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | |||||||
|         self.neutronclient.create_sfc_port_pair_group.assert_called_once_with({ |         self.neutronclient.create_sfc_port_pair_group.assert_called_once_with({ | ||||||
|             'port_pair_group': { |             'port_pair_group': { | ||||||
|                 'name': self._port_pair_group['name'], |                 'name': self._port_pair_group['name'], | ||||||
|                 'port_pairs': [self._port_pair_group['port_pairs']]} |                 'port_pairs': [self._port_pair_group['port_pairs']] | ||||||
|  |             } | ||||||
|         }) |         }) | ||||||
|         self.assertEqual(self.columns, columns) |         self.assertEqual(self.columns, columns) | ||||||
|         self.assertEqual(self.data, data) |         self.assertEqual(self.data, data) | ||||||
| @@ -102,6 +105,46 @@ class TestCreateSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | |||||||
|         self.assertEqual(self.columns, columns) |         self.assertEqual(self.columns, columns) | ||||||
|         self.assertEqual(self.data, data) |         self.assertEqual(self.data, data) | ||||||
|  |  | ||||||
|  |     def test_create_tap_enabled_port_pair_group(self): | ||||||
|  |         arglist = [ | ||||||
|  |             "--description", self._port_pair_group['description'], | ||||||
|  |             "--port-pair", self._port_pair_group['port_pairs'], | ||||||
|  |             self._port_pair_group['name'], | ||||||
|  |             "--enable-tap" | ||||||
|  |         ] | ||||||
|  |         verifylist = [ | ||||||
|  |             ('port_pairs', [self._port_pair_group['port_pairs']]), | ||||||
|  |             ('name', self._port_pair_group['name']), | ||||||
|  |             ('description', self._port_pair_group['description']), | ||||||
|  |             ('enable_tap', True) | ||||||
|  |         ] | ||||||
|  |  | ||||||
|  |         expected_data = self._update_expected_response_data( | ||||||
|  |             data={ | ||||||
|  |                 'tap_enabled': True | ||||||
|  |             } | ||||||
|  |         ) | ||||||
|  |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|  |         columns, data = (self.cmd.take_action(parsed_args)) | ||||||
|  |  | ||||||
|  |         self.neutronclient.create_sfc_port_pair_group.assert_called_once_with({ | ||||||
|  |             'port_pair_group': { | ||||||
|  |                 'name': self._port_pair_group['name'], | ||||||
|  |                 'port_pairs': [self._port_pair_group['port_pairs']], | ||||||
|  |                 'description': self._port_pair_group['description'], | ||||||
|  |                 'tap_enabled': True | ||||||
|  |             } | ||||||
|  |         }) | ||||||
|  |         self.assertEqual(self.columns, columns) | ||||||
|  |         self.assertEqual(expected_data, data) | ||||||
|  |  | ||||||
|  |     def _update_expected_response_data(self, data): | ||||||
|  |         # REVISIT(vks1) - This method can be common for other test functions. | ||||||
|  |         ppg = fakes.FakeSfcPortPairGroup.create_port_pair_group(data) | ||||||
|  |         self.neutronclient.create_sfc_port_pair_group.return_value = { | ||||||
|  |             'port_pair_group': ppg} | ||||||
|  |         return self.get_data(ppg) | ||||||
|  |  | ||||||
|  |  | ||||||
| class TestDeleteSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | class TestDeleteSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | ||||||
|  |  | ||||||
| @@ -136,22 +179,25 @@ class TestDeleteSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | |||||||
|  |  | ||||||
| class TestListSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | class TestListSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | ||||||
|     _ppgs = fakes.FakeSfcPortPairGroup.create_port_pair_groups(count=1) |     _ppgs = fakes.FakeSfcPortPairGroup.create_port_pair_groups(count=1) | ||||||
|     columns = ('ID', 'Name', 'Port Pair', 'Port Pair Group Parameters') |     columns = ('ID', 'Name', 'Port Pair', 'Port Pair Group Parameters', | ||||||
|  |                'Tap Enabled') | ||||||
|     columns_long = ('ID', 'Name', 'Port Pair', 'Port Pair Group Parameters', |     columns_long = ('ID', 'Name', 'Port Pair', 'Port Pair Group Parameters', | ||||||
|                     'Description', 'Loadbalance ID', 'Project') |                     'Description', 'Loadbalance ID', 'Project', 'Tap Enabled') | ||||||
|     _port_pair_group = _ppgs[0] |     _port_pair_group = _ppgs[0] | ||||||
|     data = [ |     data = [ | ||||||
|         _port_pair_group['id'], |         _port_pair_group['id'], | ||||||
|         _port_pair_group['name'], |         _port_pair_group['name'], | ||||||
|         _port_pair_group['port_pairs'], |         _port_pair_group['port_pairs'], | ||||||
|         _port_pair_group['port_pair_group_parameters'] |         _port_pair_group['port_pair_group_parameters'], | ||||||
|  |         _port_pair_group['tap_enabled'] | ||||||
|     ] |     ] | ||||||
|     data_long = [ |     data_long = [ | ||||||
|         _port_pair_group['id'], |         _port_pair_group['id'], | ||||||
|         _port_pair_group['name'], |         _port_pair_group['name'], | ||||||
|         _port_pair_group['port_pairs'], |         _port_pair_group['port_pairs'], | ||||||
|         _port_pair_group['port_pair_group_parameters'], |         _port_pair_group['port_pair_group_parameters'], | ||||||
|         _port_pair_group['description'] |         _port_pair_group['description'], | ||||||
|  |         _port_pair_group['tap_enabled'] | ||||||
|     ] |     ] | ||||||
|     _port_pair_group1 = {'port_pair_groups': _port_pair_group} |     _port_pair_group1 = {'port_pair_groups': _port_pair_group} | ||||||
|     _port_pair_id = _port_pair_group['id'] |     _port_pair_id = _port_pair_group['id'] | ||||||
| @@ -181,7 +227,8 @@ class TestListSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | |||||||
|             ppg['id'], |             ppg['id'], | ||||||
|             ppg['name'], |             ppg['name'], | ||||||
|             ppg['port_pairs'], |             ppg['port_pairs'], | ||||||
|             ppg['port_pair_group_parameters'] |             ppg['port_pair_group_parameters'], | ||||||
|  |             ppg['tap_enabled'] | ||||||
|         ] |         ] | ||||||
|         self.assertEqual(list(self.columns), columns) |         self.assertEqual(list(self.columns), columns) | ||||||
|         self.assertEqual(self.data, data) |         self.assertEqual(self.data, data) | ||||||
| @@ -197,7 +244,8 @@ class TestListSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | |||||||
|             ppg['name'], |             ppg['name'], | ||||||
|             ppg['port_pairs'], |             ppg['port_pairs'], | ||||||
|             ppg['port_pair_group_parameters'], |             ppg['port_pair_group_parameters'], | ||||||
|             ppg['description'] |             ppg['description'], | ||||||
|  |             ppg['tap_enabled'] | ||||||
|         ] |         ] | ||||||
|         parsed_args = self.check_parser(self.cmd, arglist, verifylist) |         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||||
|         columns_long = self.cmd.take_action(parsed_args)[0] |         columns_long = self.cmd.take_action(parsed_args)[0] | ||||||
| @@ -301,7 +349,8 @@ class TestShowSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | |||||||
|         _ppg['name'], |         _ppg['name'], | ||||||
|         _ppg['port_pairs'], |         _ppg['port_pairs'], | ||||||
|         _ppg['port_pair_group_parameters'], |         _ppg['port_pair_group_parameters'], | ||||||
|         _ppg['project_id']) |         _ppg['project_id'], | ||||||
|  |         _ppg['tap_enabled']) | ||||||
|     _port_pair_group = {'port_pair_group': _ppg} |     _port_pair_group = {'port_pair_group': _ppg} | ||||||
|     _port_pair_group_id = _ppg['id'] |     _port_pair_group_id = _ppg['id'] | ||||||
|     columns = ( |     columns = ( | ||||||
| @@ -311,7 +360,9 @@ class TestShowSfcPortPairGroup(fakes.TestNeutronClientOSCV2): | |||||||
|         'Name', |         'Name', | ||||||
|         'Port Pair', |         'Port Pair', | ||||||
|         'Port Pair Group Parameters', |         'Port Pair Group Parameters', | ||||||
|         'Project') |         'Project', | ||||||
|  |         'Tap Enabled' | ||||||
|  |     ) | ||||||
|  |  | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|         super(TestShowSfcPortPairGroup, self).setUp() |         super(TestShowSfcPortPairGroup, self).setUp() | ||||||
|   | |||||||
| @@ -0,0 +1,4 @@ | |||||||
|  | --- | ||||||
|  | features: | ||||||
|  |   - | | ||||||
|  |     Add OSC support to create Port pair group for Tap service functions. | ||||||
		Reference in New Issue
	
	Block a user