fixed compatibility issues between mistral and client

removed the namespace field from the action formatter to fix
compatibility issues between the client and older versions
of mistral.

now the action-list command takes the namespace
(with --namespace) as an argument and returns a list of the
actions in that namespace.

the command without --namespace would return the actions
of the default namespace ''.

fixed issues with execution-list command, the field "nulls"
is removed if its empty

Change-Id: Ibf64ff8d841ea1192b410902589b0c690b0b2fca
Signed-off-by: ali <ali.abdelal@nokia.com>
This commit is contained in:
ali
2020-04-05 11:32:13 +00:00
parent 7acca6deff
commit 67560c9ee7
5 changed files with 34 additions and 15 deletions

View File

@@ -30,9 +30,12 @@ class ActionManager(base.ResourceManager):
# If the specified definition is actually a file, read in the # If the specified definition is actually a file, read in the
# definition file # definition file
definition = utils.get_contents_if_file(definition) definition = utils.get_contents_if_file(definition)
url = '/actions?scope=%s' % scope
if namespace:
url += '&namespace=%s' % namespace
return self._create( return self._create(
'/actions?scope=%s&namespace=%s' % (scope, namespace), url,
definition, definition,
response_key='actions', response_key='actions',
dump_json=False, dump_json=False,
@@ -42,7 +45,10 @@ class ActionManager(base.ResourceManager):
def update(self, definition, scope='private', id=None, namespace=''): def update(self, definition, scope='private', id=None, namespace=''):
self._ensure_not_empty(definition=definition) self._ensure_not_empty(definition=definition)
params = '?scope=%s&namespace=%s' % (scope, namespace) params = '?scope=%s' % scope
if namespace:
params += '&namespace=%s' % namespace
url = ('/actions/%s' % id if id else '/actions') + params url = ('/actions/%s' % id if id else '/actions') + params
# If the specified definition is actually a file, read in the # If the specified definition is actually a file, read in the
# definition file # definition file
@@ -57,7 +63,10 @@ class ActionManager(base.ResourceManager):
) )
def list(self, marker='', limit=None, sort_keys='', sort_dirs='', def list(self, marker='', limit=None, sort_keys='', sort_dirs='',
fields='', **filters): fields='', namespace='', **filters):
if namespace:
filters['namespace'] = namespace
query_string = self._build_query_params( query_string = self._build_query_params(
marker=marker, marker=marker,
limit=limit, limit=limit,

View File

@@ -80,6 +80,10 @@ class ExecutionManager(base.ResourceManager):
if task: if task:
filters['task_execution_id'] = task filters['task_execution_id'] = task
# for backwards compatibility
if 'nulls' in filters and not filters['nulls']:
filters.pop('nulls')
query_string = self._build_query_params( query_string = self._build_query_params(
marker=marker, marker=marker,
limit=limit, limit=limit,

View File

@@ -27,7 +27,6 @@ class ActionFormatter(base.MistralFormatter):
COLUMNS = [ COLUMNS = [
('id', 'ID'), ('id', 'ID'),
('name', 'Name'), ('name', 'Name'),
('namespace', 'Namespace'),
('is_system', 'Is system'), ('is_system', 'Is system'),
('input', 'Input'), ('input', 'Input'),
('description', 'Description'), ('description', 'Description'),
@@ -47,7 +46,6 @@ class ActionFormatter(base.MistralFormatter):
data = ( data = (
action.id, action.id,
action.name, action.name,
action.namespace,
action.is_system, action.is_system,
input_, input_,
desc, desc,
@@ -74,6 +72,13 @@ class List(base.MistralLister):
def get_parser(self, prog_name): def get_parser(self, prog_name):
parser = super(List, self).get_parser(prog_name) parser = super(List, self).get_parser(prog_name)
parser.add_argument(
'--namespace',
nargs='?',
default='',
help="Namespace of the actions.",
)
return parser return parser
def _get_resources(self, parsed_args): def _get_resources(self, parsed_args):
@@ -85,6 +90,7 @@ class List(base.MistralLister):
sort_keys=parsed_args.sort_keys, sort_keys=parsed_args.sort_keys,
sort_dirs=parsed_args.sort_dirs, sort_dirs=parsed_args.sort_dirs,
fields=ActionFormatter.fields(), fields=ActionFormatter.fields(),
namespace=parsed_args.namespace,
**base.get_filters(parsed_args) **base.get_filters(parsed_args)
) )

View File

@@ -121,7 +121,7 @@ class TestActionsV2(base.BaseClientV2Test):
last_request = self.requests_mock.last_request last_request = self.requests_mock.last_request
self.assertEqual('scope=private&namespace=', last_request.query) self.assertEqual('scope=private', last_request.query)
self.assertEqual('text/plain', last_request.headers['content-type']) self.assertEqual('text/plain', last_request.headers['content-type'])
self.assertEqual(ACTION_DEF, last_request.text) self.assertEqual(ACTION_DEF, last_request.text)
@@ -136,7 +136,7 @@ class TestActionsV2(base.BaseClientV2Test):
last_request = self.requests_mock.last_request last_request = self.requests_mock.last_request
self.assertEqual('scope=private&namespace=', last_request.query) self.assertEqual('scope=private', last_request.query)
self.assertEqual('text/plain', last_request.headers['content-type']) self.assertEqual('text/plain', last_request.headers['content-type'])
self.assertEqual(ACTION_DEF, last_request.text) self.assertEqual(ACTION_DEF, last_request.text)
@@ -175,7 +175,7 @@ class TestActionsV2(base.BaseClientV2Test):
self.assertEqual(ACTION_DEF, actions[0].definition) self.assertEqual(ACTION_DEF, actions[0].definition)
last_request = self.requests_mock.last_request last_request = self.requests_mock.last_request
self.assertEqual('scope=private&namespace=', last_request.query) self.assertEqual('scope=private', last_request.query)
self.assertEqual('text/plain', last_request.headers['content-type']) self.assertEqual('text/plain', last_request.headers['content-type'])
self.assertEqual(ACTION_DEF, last_request.text) self.assertEqual(ACTION_DEF, last_request.text)

View File

@@ -60,7 +60,7 @@ class TestCLIActionsV2(base.BaseCommandTest):
result = self.call(action_cmd.Create, app_args=['1.txt']) result = self.call(action_cmd.Create, app_args=['1.txt'])
self.assertEqual( self.assertEqual(
[('1234-4567-7894-7895', 'a', 'test_namespace', True, "param1", [('1234-4567-7894-7895', 'a', True, "param1",
'My cool action', 'test', '1', '1')], 'My cool action', 'test', '1', '1')],
result[1] result[1]
) )
@@ -75,7 +75,7 @@ class TestCLIActionsV2(base.BaseCommandTest):
) )
self.assertEqual( self.assertEqual(
[('1234-4567-7894-7895', 'a', 'test_namespace', True, "param1", [('1234-4567-7894-7895', 'a', True, "param1",
'My cool action', 'test', '1', '1')], 'My cool action', 'test', '1', '1')],
result[1] result[1]
) )
@@ -101,7 +101,7 @@ class TestCLIActionsV2(base.BaseCommandTest):
result = self.call(action_cmd.Create, app_args=['1.txt']) result = self.call(action_cmd.Create, app_args=['1.txt'])
self.assertEqual( self.assertEqual(
[('1234-4567-7894-7895', 'a', 'test_namespace', [('1234-4567-7894-7895', 'a',
True, cmd_base.cut(long_input), 'My cool action', True, cmd_base.cut(long_input), 'My cool action',
'test', '1', '1')], 'test', '1', '1')],
result[1] result[1]
@@ -114,7 +114,7 @@ class TestCLIActionsV2(base.BaseCommandTest):
result = self.call(action_cmd.Update, app_args=['my_action.yaml']) result = self.call(action_cmd.Update, app_args=['my_action.yaml'])
self.assertEqual( self.assertEqual(
[('1234-4567-7894-7895', 'a', 'test_namespace', True, "param1", [('1234-4567-7894-7895', 'a', True, "param1",
'My cool action', 'test', '1', '1')], 'My cool action', 'test', '1', '1')],
result[1] result[1]
) )
@@ -129,7 +129,7 @@ class TestCLIActionsV2(base.BaseCommandTest):
) )
self.assertEqual( self.assertEqual(
[('1234-4567-7894-7895', 'a', 'test_namespace', True, "param1", [('1234-4567-7894-7895', 'a', True, "param1",
'My cool action', 'test', '1', '1')], 'My cool action', 'test', '1', '1')],
result[1] result[1]
) )
@@ -145,7 +145,7 @@ class TestCLIActionsV2(base.BaseCommandTest):
result = self.call(action_cmd.List) result = self.call(action_cmd.List)
self.assertEqual( self.assertEqual(
[('1234-4567-7894-7895', 'a', 'test_namespace', True, "param1", [('1234-4567-7894-7895', 'a', True, "param1",
'My cool action', 'test', '1', '1')], 'My cool action', 'test', '1', '1')],
result[1] result[1]
) )
@@ -156,7 +156,7 @@ class TestCLIActionsV2(base.BaseCommandTest):
result = self.call(action_cmd.Get, app_args=['name']) result = self.call(action_cmd.Get, app_args=['name'])
self.assertEqual( self.assertEqual(
('1234-4567-7894-7895', 'a', 'test_namespace', True, "param1", ('1234-4567-7894-7895', 'a', True, "param1",
'My cool action', 'test', '1', '1'), 'My cool action', 'test', '1', '1'),
result[1] result[1]
) )