コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
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))
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
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))