diff --git a/magnumclient/tests/v1/test_containers.py b/magnumclient/tests/v1/test_containers.py index 40dd57a..2a70ff5 100644 --- a/magnumclient/tests/v1/test_containers.py +++ b/magnumclient/tests/v1/test_containers.py @@ -59,6 +59,17 @@ fake_responses = { CREATE_CONTAINER, ), }, + '/v1/containers/?bay_ident=25d5d872-1f4e-4134-ae15-c5fa38cb09a3': + { + 'GET': ( + {}, + {'containers': [CONTAINER1, CONTAINER2]}, + ), + 'POST': ( + {}, + CREATE_CONTAINER, + ), + }, '/v1/containers/%s' % CONTAINER1['id']: { 'GET': ( @@ -205,6 +216,16 @@ class ContainerManagerTest(testtools.TestCase): self.assertEqual(expect, self.api.calls) self.assertThat(containers, matchers.HasLength(2)) + def test_container_list_with_bay(self): + containers = self.mgr.list( + bay_ident='25d5d872-1f4e-4134-ae15-c5fa38cb09a3') + expect = [ + ('GET', '/v1/containers/?bay_ident=25d5d872-1f4e-4134' + '-ae15-c5fa38cb09a3', {}, None), + ] + self.assertEqual(expect, self.api.calls) + self.assertThat(containers, matchers.HasLength(2)) + def test_container_show(self): container = self.mgr.get(CONTAINER1['id']) expect = [ diff --git a/magnumclient/tests/v1/test_containers_shell.py b/magnumclient/tests/v1/test_containers_shell.py index 25bf45a..d9ae855 100644 --- a/magnumclient/tests/v1/test_containers_shell.py +++ b/magnumclient/tests/v1/test_containers_shell.py @@ -24,6 +24,11 @@ class ShellTest(shell_test_base.TestCommandLineArgument): self._test_arg_success('container-list') self.assertTrue(mock_list.called) + @mock.patch('magnumclient.v1.containers.ContainerManager.list') + def test_container_list_success_with_bay(self, mock_list): + self._test_arg_success('container-list --bay bay_uuid') + self.assertTrue(mock_list.called) + @mock.patch('magnumclient.v1.containers.ContainerManager.list') def test_container_list_failure(self, mock_list): self._test_arg_failure('container-list --wrong', diff --git a/magnumclient/v1/containers.py b/magnumclient/v1/containers.py index 1a3435d..bfd39cf 100644 --- a/magnumclient/v1/containers.py +++ b/magnumclient/v1/containers.py @@ -31,11 +31,17 @@ class ContainerManager(base.Manager): resource_class = Container @staticmethod - def _path(id=None): - return '/v1/containers/%s' % id if id else '/v1/containers' + def _path(id=None, bay_ident=None): + + if id: + return '/v1/containers/%s' % id + elif bay_ident: + return '/v1/containers/?bay_ident=%s' % (bay_ident) + else: + return '/v1/containers' def list(self, marker=None, limit=None, sort_key=None, - sort_dir=None, detail=False): + sort_dir=None, detail=False, bay_ident=None): """Retrieve a list of containers. :param marker: Optional, the UUID of a containers, eg the last @@ -75,11 +81,14 @@ class ContainerManager(base.Manager): if limit is None: # TODO(yuanying): if endpoint returns "map", # change None to response_key - return self._list(self._path(path), "containers") + return self._list(self._path(path, bay_ident=bay_ident), + "containers") else: # TODO(yuanying): if endpoint returns "map", # change None to response_key - return self._list_pagination(self._path(path), "containers", + return self._list_pagination(self._path(path, + bay_ident=bay_ident), + "containers", limit=limit) def get(self, id): diff --git a/magnumclient/v1/containers_shell.py b/magnumclient/v1/containers_shell.py index c5d4b06..0cb1f3e 100644 --- a/magnumclient/v1/containers_shell.py +++ b/magnumclient/v1/containers_shell.py @@ -57,10 +57,14 @@ def do_container_create(cs, args): _show_container(cs.containers.create(**opts)) +@utils.arg('--bay', + metavar='', help="UUID or Name of Bay") def do_container_list(cs, args): """Print a list of available containers.""" - containers = cs.containers.list() - columns = ('uuid', 'name', 'status') + opts = {} + opts['bay_ident'] = args.bay + containers = cs.containers.list(**opts) + columns = ('uuid', 'name', 'status', 'bay_uuid') utils.print_list(containers, columns, {'versions': magnum_utils.print_list_field('versions')})