Merge "Introduce filters on listing containers"

This commit is contained in:
Zuul
2018-04-25 15:04:47 +00:00
committed by Gerrit Code Review
3 changed files with 84 additions and 3 deletions

View File

@@ -275,6 +275,42 @@ class ListContainer(command.Lister):
metavar='<sort-dir>',
choices=['desc', 'asc'],
help='Direction to sort. "asc" or "desc".')
parser.add_argument(
'--name',
metavar='<name>',
help='List containers according to their name.')
parser.add_argument(
'--image',
metavar='<image>',
help='List containers according to their image.')
parser.add_argument(
'--project-id',
metavar='<project-id>',
help='List containers according to their project_id')
parser.add_argument(
'--user-id',
metavar='<user-id>',
help='List containers according to their user_id')
parser.add_argument(
'--task-state',
metavar='<task-state>',
help='List containers according to their task-state')
parser.add_argument(
'--status',
metavar='<status>',
help='List containers according to their Status')
parser.add_argument(
'--memory',
metavar='<memory>',
help='List containers according to their memory size in MiB')
parser.add_argument(
'--host',
metavar='<host>',
help='List containers according to their hostname')
parser.add_argument(
'--auto-remove',
metavar='<auto-remove>',
help='List conatiner whether they are auto-removed on existing')
return parser
def take_action(self, parsed_args):
@@ -285,6 +321,15 @@ class ListContainer(command.Lister):
opts['limit'] = parsed_args.limit
opts['sort_key'] = parsed_args.sort_key
opts['sort_dir'] = parsed_args.sort_dir
opts['image'] = parsed_args.image
opts['name'] = parsed_args.name
opts['project_id'] = parsed_args.project_id
opts['user_id'] = parsed_args.user_id
opts['host'] = parsed_args.host
opts['task_state'] = parsed_args.task_state
opts['memory'] = parsed_args.memory
opts['auto_remove'] = parsed_args.auto_remove
opts['status'] = parsed_args.status
opts = zun_utils.remove_null_parms(**opts)
containers = client.containers.list(**opts)
for c in containers:

View File

@@ -44,7 +44,7 @@ class ContainerManager(base.Manager):
return '/v1/containers'
def list(self, marker=None, limit=None, sort_key=None,
sort_dir=None, detail=False, all_projects=False):
sort_dir=None, detail=False, all_projects=False, **kwargs):
"""Retrieve a list of containers.
:param all_projects: Optional, list containers in all projects
@@ -77,7 +77,6 @@ class ContainerManager(base.Manager):
filters = utils.common_filters(marker, limit, sort_key,
sort_dir, all_projects)
path = ''
if detail:
path += 'detail'
@@ -86,7 +85,7 @@ class ContainerManager(base.Manager):
if limit is None:
return self._list(self._path(path),
"containers")
"containers", qparams=kwargs)
else:
return self._list_pagination(self._path(path),
"containers",

View File

@@ -191,6 +191,34 @@ def do_create(cs, args):
metavar='<sort-dir>',
choices=['desc', 'asc'],
help='Direction to sort. "asc" or "desc".')
@utils.arg('--name',
metavar='<name>',
help='List containers according to their name.')
@utils.arg('--image',
metavar='<image>',
help='List containers according to their image.')
@utils.arg('--project-id',
metavar='<project-id>',
help='List containers according to their Project_id')
@utils.arg('--user-id',
metavar='<user-id>',
help='List containers according to their user_id')
@utils.arg('--task-state',
metavar='<task-state>',
help='List containers according to their task-state')
@utils.arg('--status',
metavar='<status>',
help='List containers according to their status')
@utils.arg('--memory',
metavar='<memory>',
help='List containers according to their memory size in MiB')
@utils.arg('--host',
metavar='<host>',
help='List containers according to their hostname')
@utils.arg('--auto-remove',
metavar='<auto-remove>',
help='List container according to whether they are'
'auto-removed on existing')
def do_list(cs, args):
"""Print a list of available containers."""
opts = {}
@@ -199,6 +227,15 @@ def do_list(cs, args):
opts['limit'] = args.limit
opts['sort_key'] = args.sort_key
opts['sort_dir'] = args.sort_dir
opts['image'] = args.image
opts['name'] = args.name
opts['project_id'] = args.project_id
opts['user_id'] = args.user_id
opts['host'] = args.host
opts['task_state'] = args.task_state
opts['memory'] = args.memory
opts['auto_remove'] = args.auto_remove
opts['status'] = args.status
opts = zun_utils.remove_null_parms(**opts)
containers = cs.containers.list(**opts)
zun_utils.list_containers(containers)