def take_action(self, parsed_args): share_client = self.app.client_manager.share share = None if parsed_args.share: share = osc_utils.find_resource(share_client.shares, parsed_args.share) replicas = share_client.share_replicas.list(share=share) columns = [ 'id', 'status', 'replica_state', 'share_id', 'host', 'availability_zone', 'updated_at', ] column_headers = utils.format_column_headers(columns) data = (osc_utils.get_dict_properties(replica._info, columns) for replica in replicas) return (column_headers, data)
def take_action(self, parsed_args): share_client = self.app.client_manager.share search_opts = {} if parsed_args.extra_specs: if share_client.api_version < api_versions.APIVersion("2.43"): raise exceptions.CommandError( "Filtering by 'extra_specs' is available only with " "API microversion '2.43' and above.") search_opts = { 'extra_specs': utils.extract_extra_specs(extra_specs={}, specs_to_add=parsed_args.extra_specs) } share_types = share_client.share_types.list(search_opts=search_opts, show_all=parsed_args.all) formatted_types = [] for share_type in share_types: formatted_types.append(format_share_type(share_type)) values = (oscutils.get_dict_properties(s._info, ATTRIBUTES) for s in formatted_types) columns = utils.format_column_headers(ATTRIBUTES) return (columns, values)
class TestShareReplicaList(TestShareReplica): columns = [ 'id', 'status', 'replica_state', 'share_id', 'host', 'availability_zone', 'updated_at', ] column_headers = utils.format_column_headers(columns) def setUp(self): super(TestShareReplicaList, self).setUp() self.share = manila_fakes.FakeShare.create_one_share() self.shares_mock.get.return_value = self.share self.replicas_list = ( manila_fakes.FakeShareReplica.create_share_replicas(count=2)) self.replicas_mock.list.return_value = self.replicas_list self.values = (oscutils.get_dict_properties(i._info, self.columns) for i in self.replicas_list) self.cmd = osc_share_replicas.ListShareReplica(self.app, None) def test_share_replica_list(self): arglist = [] verifylist = [] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.replicas_mock.list.assert_called_with(share=None) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data)) def test_share_replica_list_for_share(self): arglist = ['--share', self.share.id] verifylist = [('share', self.share.id)] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.replicas_mock.list.assert_called_with(share=self.share) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data))
class TestShareInstanceList(TestShareInstance): columns = [ 'id', 'share_id', 'host', 'status', 'availability_zone', 'share_network_id', 'share_server_id', 'share_type_id', ] column_headers = utils.format_column_headers(columns) def setUp(self): super(TestShareInstanceList, self).setUp() self.instances_list = ( manila_fakes.FakeShareInstance.create_share_instances(count=2)) self.instances_mock.list.return_value = self.instances_list self.share = manila_fakes.FakeShare.create_one_share() self.shares_mock.get.return_value = self.share self.shares_mock.list_instances.return_value = self.instances_list self.shares_mock.list_instances.return_value = self.instances_list self.instance_values = (oscutils.get_dict_properties( instance._info, self.columns) for instance in self.instances_list) self.cmd = osc_share_instances.ShareInstanceList(self.app, None) def test_share_instance_list(self): argslist = [] verifylist = [] parsed_args = self.check_parser(self.cmd, argslist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.assertIs(True, self.instances_mock.list.called) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.instance_values), list(data)) def test_share_instance_list_by_share(self): argslist = ['--share', self.share['id']] verifylist = [('share', self.share.id)] parsed_args = self.check_parser(self.cmd, argslist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.shares_mock.list_instances.assert_called_with(self.share) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.instance_values), list(data)) def test_share_instance_list_by_export_location(self): fake_export_location = '10.1.1.0:/fake_share_el' argslist = ['--export-location', fake_export_location] verifylist = [('export_location', fake_export_location)] parsed_args = self.check_parser(self.cmd, argslist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.instances_mock.list.assert_called_with( export_location=fake_export_location) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.instance_values), list(data)) def test_share_instance_list_by_export_location_invalid_version(self): fake_export_location = '10.1.1.0:/fake_share_el' argslist = ['--export-location', fake_export_location] verifylist = [('export_location', fake_export_location)] self.app.client_manager.share.api_version = api_versions.APIVersion( '2.34') parsed_args = self.check_parser(self.cmd, argslist, verifylist) self.assertRaises(exceptions.CommandError, self.cmd.take_action, parsed_args)
class TestShareGroupList(TestShareGroup): columns = ['id', 'name', 'status', 'description'] column_headers = utils.format_column_headers(columns) def setUp(self): super(TestShareGroupList, self).setUp() self.new_share_group = ( manila_fakes.FakeShareGroup.create_one_share_group()) self.groups_mock.list.return_value = [self.new_share_group] self.share_group = ( manila_fakes.FakeShareGroup.create_one_share_group()) self.groups_mock.get.return_value = self.share_group self.share_groups_list = ( manila_fakes.FakeShareGroup.create_share_groups(count=2)) self.groups_mock.list.return_value = self.share_groups_list self.values = (oscutils.get_dict_properties(s._info, self.columns) for s in self.share_groups_list) self.cmd = osc_share_groups.ListShareGroup(self.app, None) def test_share_group_list(self): arglist = [] verifylist = [] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.groups_mock.list.assert_called_with( search_opts={ 'all_tenants': False, 'name': None, 'status': None, 'share_server_id': None, 'share_group_type': None, 'snapshot': None, 'host': None, 'share_network': None, 'project_id': None, 'limit': None, 'offset': None, 'name~': None, 'description~': None, 'description': None }) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data)) def test_list_share_group_api_version_exception(self): self.app.client_manager.share.api_version = api_versions.APIVersion( "2.35") arglist = ['--description', 'Description'] verifylist = [('description', 'Description')] parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.assertRaises(exceptions.CommandError, self.cmd.take_action, parsed_args) def test_list_share_groups_all_projects(self): all_tenants_list = self.column_headers.copy() all_tenants_list.append('Project ID') list_values = (oscutils.get_dict_properties(s._info, all_tenants_list) for s in self.share_groups_list) arglist = ['--all-projects'] verifylist = [('all_projects', True)] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.groups_mock.list.assert_called_with( search_opts={ 'all_tenants': True, 'name': None, 'status': None, 'share_server_id': None, 'share_group_type': None, 'snapshot': None, 'host': None, 'share_network': None, 'project_id': None, 'limit': None, 'offset': None, 'name~': None, 'description~': None, 'description': None }) self.assertEqual(all_tenants_list, columns) self.assertEqual(list(list_values), list(data)) def test_share_group_list_name(self): arglist = ['--name', self.new_share_group.name] verifylist = [('name', self.new_share_group.name)] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) search_opts = { 'all_tenants': False, 'name': None, 'status': None, 'share_server_id': None, 'share_group_type': None, 'snapshot': None, 'host': None, 'share_network': None, 'project_id': None, 'limit': None, 'offset': None, 'name~': None, 'description~': None, 'description': None } search_opts['name'] = self.new_share_group.name self.groups_mock.list.assert_called_once_with( search_opts=search_opts, ) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data)) def test_share_group_list_description(self): arglist = ['--description', self.new_share_group.description] verifylist = [('description', self.new_share_group.description)] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) search_opts = { 'all_tenants': False, 'name': None, 'status': None, 'share_server_id': None, 'share_group_type': None, 'snapshot': None, 'host': None, 'share_network': None, 'project_id': None, 'limit': None, 'offset': None, 'name~': None, 'description~': None, 'description': None } search_opts['description'] = self.new_share_group.description self.groups_mock.list.assert_called_once_with( search_opts=search_opts, ) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data)) def test_share_group_list_status(self): arglist = [ '--status', self.new_share_group.status, ] verifylist = [ ('status', self.new_share_group.status), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) search_opts = { 'all_tenants': False, 'name': None, 'status': None, 'share_server_id': None, 'share_group_type': None, 'snapshot': None, 'host': None, 'share_network': None, 'project_id': None, 'limit': None, 'offset': None, 'name~': None, 'description~': None, 'description': None } search_opts['status'] = self.new_share_group.status self.groups_mock.list.assert_called_once_with( search_opts=search_opts, ) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data)) def test_share_group_list_marker_and_limit(self): arglist = [ "--marker", self.new_share_group.id, "--limit", "2", ] verifylist = [ ('marker', self.new_share_group.id), ('limit', 2), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) search_opts = { 'all_tenants': False, 'name': None, 'status': None, 'share_server_id': None, 'share_group_type': None, 'snapshot': None, 'host': None, 'share_network': None, 'project_id': None, 'limit': 2, 'offset': self.new_share_group.id, 'name~': None, 'description~': None, 'description': None } self.groups_mock.list.assert_called_once_with( search_opts=search_opts, ) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data)) def test_share_group_list_negative_limit(self): arglist = [ "--limit", "-2", ] verifylist = [ ("limit", -2), ] self.assertRaises(argparse.ArgumentTypeError, self.check_parser, self.cmd, arglist, verifylist)
class TestShareTypeList(TestShareType): share_types = manila_fakes.FakeShareType.create_share_types() columns = utils.format_column_headers(COLUMNS) def setUp(self): super(TestShareTypeList, self).setUp() self.shares_mock.list.return_value = self.share_types # Get the command object to test self.cmd = osc_share_types.ListShareType(self.app, None) self.values = (oscutils.get_dict_properties(s._info, COLUMNS) for s in self.share_types) def test_share_type_list_no_options(self): arglist = [] verifylist = [('all', False)] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.shares_mock.list.assert_called_once_with(search_opts={}, show_all=False) self.assertEqual(self.columns, columns) self.assertEqual(list(self.values), list(data)) def test_share_type_list_all(self): arglist = [ '--all', ] verifylist = [('all', True)] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.shares_mock.list.assert_called_once_with(search_opts={}, show_all=True) self.assertEqual(self.columns, columns) self.assertEqual(list(self.values), list(data)) def test_share_type_list_extra_specs(self): arglist = ['--extra-specs', 'snapshot_support=true'] verifylist = [('extra_specs', ['snapshot_support=true'])] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.shares_mock.list.assert_called_once_with( search_opts={'extra_specs': { 'snapshot_support': 'True' }}, show_all=False) self.assertEqual(self.columns, columns) self.assertEqual(list(self.values), list(data)) def test_share_type_list_api_versions_exception(self): self.app.client_manager.share.api_version = api_versions.APIVersion( "2.42") arglist = ['--extra-specs', 'snapshot_support=true'] verifylist = [('extra_specs', ['snapshot_support=true'])] parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.assertRaises(exceptions.CommandError, self.cmd.take_action, parsed_args)
class TestShareServiceList(TestShareService): columns = ['id', 'binary', 'host', 'zone', 'status', 'state', 'updated_at'] column_headers = utils.format_column_headers(columns) def setUp(self): super(TestShareServiceList, self).setUp() self.services_list = ( manila_fakes.FakeShareService.create_fake_services()) self.services_mock.list.return_value = self.services_list self.values = (oscutils.get_dict_properties(i._info, self.columns) for i in self.services_list) self.cmd = osc_services.ListShareService(self.app, None) def test_share_service_list(self): arglist = [] verifylist = [] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.services_mock.list.assert_called_with( search_opts={ 'host': None, 'binary': None, 'status': None, 'state': None, 'zone': None }) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data)) def test_share_service_list_host_status(self): arglist = [ '--host', self.services_list[0].host, '--status', self.services_list[1].status ] verifylist = [('host', self.services_list[0].host), ('status', self.services_list[1].status)] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.services_mock.list.assert_called_with( search_opts={ 'host': self.services_list[0].host, 'binary': None, 'status': self.services_list[1].status, 'state': None, 'zone': None }) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data)) def test_share_service_list_binary_state_zone(self): arglist = [ '--binary', self.services_list[0].binary, '--state', self.services_list[1].state, '--zone', self.services_list[1].zone ] verifylist = [('binary', self.services_list[0].binary), ('state', self.services_list[1].state), ('zone', self.services_list[1].zone)] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) self.services_mock.list.assert_called_with( search_opts={ 'host': None, 'binary': self.services_list[0].binary, 'status': None, 'state': self.services_list[1].state, 'zone': self.services_list[1].zone }) self.assertEqual(self.column_headers, columns) self.assertEqual(list(self.values), list(data))