class TestShowNetworkTrunk(test_fakes.TestNeutronClientOSCV2): # The trunk to set. _trunk = fakes.FakeTrunk.create_one_trunk() columns = ( 'admin_state_up', 'description', 'id', 'name', 'port_id', 'project_id', 'status', 'sub_ports', ) data = ( v2_utils.AdminStateColumn(_trunk['admin_state_up']), _trunk['description'], _trunk['id'], _trunk['name'], _trunk['port_id'], _trunk['project_id'], _trunk['status'], format_columns.ListDictColumn(_trunk['sub_ports']), ) def setUp(self): super(TestShowNetworkTrunk, self).setUp() mock.patch('neutronclient.osc.v2.trunk.network_trunk._get_id', new=_get_id).start() self.neutronclient.show_trunk = mock.Mock( return_value={trunk.TRUNK: self._trunk}) # Get the command object to test self.cmd = trunk.ShowNetworkTrunk(self.app, self.namespace) def test_show_no_options(self): arglist = [] verifylist = [] self.assertRaises(tests_utils.ParserException, self.check_parser, self.cmd, arglist, verifylist) def test_show_all_options(self): arglist = [ self._trunk['id'], ] verifylist = [ ('trunk', self._trunk['id']), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.neutronclient.show_trunk.assert_called_once_with( self._trunk['id']) self.assertEqual(self.columns, columns) self.assertItemEqual(self.data, data)
class TestShowIPAvailability(TestIPAvailability): _network = network_fakes.FakeNetwork.create_one_network() _ip_availability = \ network_fakes.FakeIPAvailability.create_one_ip_availability( attrs={'network_id': _network.id}) columns = ( 'network_id', 'network_name', 'project_id', 'subnet_ip_availability', 'total_ips', 'used_ips', ) data = ( _ip_availability.network_id, _ip_availability.network_name, _ip_availability.project_id, format_columns.ListDictColumn(_ip_availability.subnet_ip_availability), _ip_availability.total_ips, _ip_availability.used_ips, ) def setUp(self): super(TestShowIPAvailability, self).setUp() self.network.find_network_ip_availability = mock.Mock( return_value=self._ip_availability) self.network.find_network = mock.Mock(return_value=self._network) # Get the command object to test self.cmd = ip_availability.ShowIPAvailability(self.app, self.namespace) def test_show_no_option(self): arglist = [] verifylist = [] self.assertRaises(tests_utils.ParserException, self.check_parser, self.cmd, arglist, verifylist) def test_show_all_options(self): arglist = [ self._ip_availability.network_name, ] verifylist = [('network', self._ip_availability.network_name)] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.network.find_network_ip_availability.assert_called_once_with( self._ip_availability.network_id, ignore_missing=False) self.network.find_network.assert_called_once_with( self._ip_availability.network_name, ignore_missing=False) self.assertEqual(self.columns, columns) self.assertCountEqual(self.data, data)
def get_data(self): return ( v2_utils.AdminStateColumn(self._trunk['admin_state_up']), self._trunk['description'], self._trunk['id'], self._trunk['name'], self._trunk['port_id'], self._trunk['project_id'], self._trunk['status'], format_columns.ListDictColumn(self._trunk['sub_ports']), )
def test_list_dict_column(self): list_dict_content = [ { 'key1': 'value1' }, { 'key2': 'value2' }, ] col = format_columns.ListDictColumn(list_dict_content) self.assertEqual(list_dict_content, col.machine_readable()) self.assertEqual("key1='value1'\nkey2='value2'", col.human_readable())
class TestUnsetNetworkTrunk(test_fakes.TestNeutronClientOSCV2): _trunk = fakes.FakeTrunk.create_one_trunk() columns = ( 'admin_state_up', 'id', 'name', 'port_id', 'project_id', 'status', 'sub_ports', ) data = ( v2_utils.AdminStateColumn(_trunk['admin_state_up']), _trunk['id'], _trunk['name'], _trunk['port_id'], _trunk['project_id'], _trunk['status'], format_columns.ListDictColumn(_trunk['sub_ports']), ) def setUp(self): super(TestUnsetNetworkTrunk, self).setUp() mock.patch('neutronclient.osc.v2.trunk.network_trunk._get_id', new=_get_id).start() self.neutronclient.trunk_remove_subports = mock.Mock( return_value=None) # Get the command object to test self.cmd = trunk.UnsetNetworkTrunk(self.app, self.namespace) def test_unset_network_trunk_subport(self): subport = self._trunk['sub_ports'][0] arglist = [ "--subport", subport['port_id'], self._trunk['name'], ] verifylist = [ ('trunk', self._trunk['name']), ('unset_subports', [subport['port_id']]), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) self.neutronclient.trunk_remove_subports.assert_called_once_with( self._trunk['name'], {trunk.SUB_PORTS: [{'port_id': subport['port_id']}]} ) self.assertIsNone(result) def test_unset_subport_no_arguments_fail(self): arglist = [ self._trunk['name'], ] verifylist = [ ('trunk', self._trunk['name']), ] self.assertRaises(tests_utils.ParserException, self.check_parser, self.cmd, arglist, verifylist)
class TestSetNetworkTrunk(test_fakes.TestNeutronClientOSCV2): # Create trunks to be listed. _trunk = fakes.FakeTrunk.create_one_trunk() columns = ( 'admin_state_up', 'id', 'name', 'description', 'port_id', 'project_id', 'status', 'sub_ports', ) data = ( v2_utils.AdminStateColumn(_trunk['admin_state_up']), _trunk['id'], _trunk['name'], _trunk['description'], _trunk['port_id'], _trunk['project_id'], _trunk['status'], format_columns.ListDictColumn(_trunk['sub_ports']), ) def setUp(self): super(TestSetNetworkTrunk, self).setUp() mock.patch('neutronclient.osc.v2.trunk.network_trunk._get_id', new=_get_id).start() self.neutronclient.update_trunk = mock.Mock( return_value={trunk.TRUNK: self._trunk}) self.neutronclient.trunk_add_subports = mock.Mock( return_value=self._trunk) # Get the command object to test self.cmd = trunk.SetNetworkTrunk(self.app, self.namespace) def _test_set_network_trunk_attr(self, attr, value): arglist = [ '--%s' % attr, value, self._trunk[attr], ] verifylist = [ (attr, value), ('trunk', self._trunk[attr]), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) attrs = { attr: value, } self.neutronclient.update_trunk.assert_called_once_with( self._trunk[attr], {trunk.TRUNK: attrs}) self.assertIsNone(result) def test_set_network_trunk_name(self): self._test_set_network_trunk_attr('name', 'trunky') def test_test_set_network_trunk_description(self): self._test_set_network_trunk_attr('description', 'description') def test_set_network_trunk_admin_state_up_disable(self): arglist = [ '--disable', self._trunk['name'], ] verifylist = [ ('disable', True), ('trunk', self._trunk['name']), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) attrs = { 'admin_state_up': False, } self.neutronclient.update_trunk.assert_called_once_with( self._trunk['name'], {trunk.TRUNK: attrs}) self.assertIsNone(result) def test_set_network_trunk_admin_state_up_enable(self): arglist = [ '--enable', self._trunk['name'], ] verifylist = [ ('enable', True), ('trunk', self._trunk['name']), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) attrs = { 'admin_state_up': True, } self.neutronclient.update_trunk.assert_called_once_with( self._trunk['name'], {trunk.TRUNK: attrs}) self.assertIsNone(result) def test_set_network_trunk_nothing(self): arglist = [self._trunk['name'], ] verifylist = [('trunk', self._trunk['name']), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) attrs = {} self.neutronclient.update_trunk.assert_called_once_with( self._trunk['name'], {trunk.TRUNK: attrs}) self.assertIsNone(result) def test_set_network_trunk_subports(self): subport = self._trunk['sub_ports'][0] arglist = [ '--subport', 'port=%(port)s,segmentation-type=%(seg_type)s,' 'segmentation-id=%(seg_id)s' % { 'seg_id': subport['segmentation_id'], 'seg_type': subport['segmentation_type'], 'port': subport['port_id']}, self._trunk['name'], ] verifylist = [ ('trunk', self._trunk['name']), ('set_subports', [{ 'port': subport['port_id'], 'segmentation-id': str(subport['segmentation_id']), 'segmentation-type': subport['segmentation_type']}]), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) self.neutronclient.trunk_add_subports.assert_called_once_with( self._trunk['name'], {'sub_ports': [subport]} ) self.assertIsNone(result) def test_set_network_trunk_subports_without_optional_keys(self): subport = copy.copy(self._trunk['sub_ports'][0]) # Pop out the segmentation-id and segmentation-type subport.pop('segmentation_type') subport.pop('segmentation_id') arglist = [ '--subport', 'port=%(port)s' % {'port': subport['port_id']}, self._trunk['name'], ] verifylist = [ ('trunk', self._trunk['name']), ('set_subports', [{ 'port': subport['port_id']}]), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) result = self.cmd.take_action(parsed_args) self.neutronclient.trunk_add_subports.assert_called_once_with( self._trunk['name'], {'sub_ports': [subport]} ) self.assertIsNone(result) def test_set_network_trunk_subports_without_required_key_fail(self): subport = self._trunk['sub_ports'][0] arglist = [ '--subport', 'segmentation-type=%(seg_type)s,' 'segmentation-id=%(seg_id)s' % { 'seg_id': subport['segmentation_id'], 'seg_type': subport['segmentation_type']}, self._trunk['name'], ] verifylist = [ ('trunk', self._trunk['name']), ('set_subports', [{ 'segmentation-id': str(subport['segmentation_id']), 'segmentation-type': subport['segmentation_type']}]), ] with testtools.ExpectedException(argparse.ArgumentTypeError): self.check_parser(self.cmd, arglist, verifylist) self.neutronclient.trunk_add_subports.assert_not_called() def test_set_trunk_attrs_with_exception(self): arglist = [ '--name', 'reallylongname', self._trunk['name'], ] verifylist = [ ('trunk', self._trunk['name']), ('name', 'reallylongname'), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.neutronclient.update_trunk = ( mock.Mock(side_effect=exceptions.CommandError) ) with testtools.ExpectedException(exceptions.CommandError) as e: self.cmd.take_action(parsed_args) self.assertEqual( "Failed to set trunk '%s': " % self._trunk['name'], str(e)) attrs = {'name': 'reallylongname'} self.neutronclient.update_trunk.assert_called_once_with( self._trunk['name'], {trunk.TRUNK: attrs}) self.neutronclient.trunk_add_subports.assert_not_called() def test_set_trunk_add_subport_with_exception(self): arglist = [ '--subport', 'port=invalid_subport', self._trunk['name'], ] verifylist = [ ('trunk', self._trunk['name']), ('set_subports', [{'port': 'invalid_subport'}]), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.neutronclient.trunk_add_subports = ( mock.Mock(side_effect=exceptions.CommandError) ) with testtools.ExpectedException(exceptions.CommandError) as e: self.cmd.take_action(parsed_args) self.assertEqual( "Failed to add subports to trunk '%s': " % self._trunk['name'], str(e)) self.neutronclient.update_trunk.assert_called_once_with( self._trunk['name'], {trunk.TRUNK: {}}) self.neutronclient.trunk_add_subports.assert_called_once_with( self._trunk['name'], {'sub_ports': [{'port_id': 'invalid_subport'}]} )