diff --git a/heatclient/tests/unit/test_shell.py b/heatclient/tests/unit/test_shell.py index 34fff410..85eaaab7 100644 --- a/heatclient/tests/unit/test_shell.py +++ b/heatclient/tests/unit/test_shell.py @@ -3483,6 +3483,10 @@ class MockShellTestUserPass(MockShellBase): ' --marker fake_id' ' --filters=status=COMPLETE' ' --filters=status=FAILED' + ' --tags=tag1,tag2' + ' --tags-any=tag3,tag4' + ' --not-tags=tag5,tag6' + ' --not-tags-any=tag7,tag8' ' --global-tenant' ' --show-deleted' ' --show-hidden') @@ -3506,6 +3510,10 @@ class MockShellTestUserPass(MockShellBase): expected_query_dict = {'limit': ['2'], 'status': ['COMPLETE', 'FAILED'], 'marker': ['fake_id'], + 'tags': ['tag1,tag2'], + 'tags_any': ['tag3,tag4'], + 'not_tags': ['tag5,tag6'], + 'not_tags_any': ['tag7,tag8'], 'global_tenant': ['True'], 'show_deleted': ['True'], 'show_hidden': ['True']} diff --git a/heatclient/v1/shell.py b/heatclient/v1/shell.py index 3d228cf7..bcf92f78 100644 --- a/heatclient/v1/shell.py +++ b/heatclient/v1/shell.py @@ -517,6 +517,18 @@ def do_stack_cancel_update(hc, args): 'This can be specified multiple times, or once with parameters ' 'separated by a semicolon.'), action='append') +@utils.arg('-t', '--tags', metavar='', + help=_('Show stacks containing these tags, combine multiple tags ' + 'using the boolean AND expression')) +@utils.arg('--tags-any', metavar='', + help=_('Show stacks containing these tags, combine multiple tags ' + 'using the boolean OR expression')) +@utils.arg('--not-tags', metavar='', + help=_('Show stacks not containing these tags, combine multiple ' + 'tags using the boolean AND expression')) +@utils.arg('--not-tags-any', metavar='', + help=_('Show stacks not containing these tags, combine multiple ' + 'tags using the boolean OR expression')) @utils.arg('-l', '--limit', metavar='', help=_('Limit the number of stacks returned.')) @utils.arg('-m', '--marker', metavar='', @@ -535,6 +547,10 @@ def do_stack_list(hc, args=None): kwargs = {'limit': args.limit, 'marker': args.marker, 'filters': utils.format_parameters(args.filters), + 'tags': args.tags, + 'tags_any': args.tags_any, + 'not_tags': args.not_tags, + 'not_tags_any': args.not_tags_any, 'global_tenant': args.global_tenant, 'show_deleted': args.show_deleted, 'show_hidden': args.show_hidden}