Renaming 'parameters' to 'input' everywhere
* 'parameters' was not consistent with 'output' for actions and workflows. Change-Id: I74cbf7db37b0908225b97a60433b7da8c3c69b05
This commit is contained in:
parent
f6fad04c59
commit
fcd45511d8
@ -45,7 +45,7 @@ class Task(resource.Resource):
|
||||
state = wtypes.text
|
||||
result = wtypes.text
|
||||
|
||||
parameters = wtypes.text
|
||||
input = wtypes.text
|
||||
output = wtypes.text
|
||||
|
||||
created_at = wtypes.text
|
||||
@ -59,7 +59,7 @@ class Task(resource.Resource):
|
||||
if hasattr(e, key):
|
||||
# Nonetype check for dictionary must be explicit
|
||||
if val is not None and (
|
||||
key == 'parameters' or key == 'output'):
|
||||
key == 'input' or key == 'output'):
|
||||
val = json.dumps(val)
|
||||
setattr(e, key, val)
|
||||
|
||||
@ -75,7 +75,7 @@ class Task(resource.Resource):
|
||||
# TODO(everyone): replace with states.SUCCESS
|
||||
state='SUCCESS',
|
||||
tags=['foo', 'fee'],
|
||||
parameters='{"first_name": "John", "last_name": "Doe"}',
|
||||
input='{"first_name": "John", "last_name": "Doe"}',
|
||||
output='{"task": {"build_greeting": '
|
||||
'{"greeting": "Hello, John Doe!"}}}',
|
||||
created_at='1970-01-01T00:00:00.000000',
|
||||
|
@ -98,7 +98,7 @@ class Task(mb.MistralModelBase):
|
||||
|
||||
# Data Flow properties.
|
||||
in_context = sa.Column(st.JsonDictType())
|
||||
parameters = sa.Column(st.JsonDictType())
|
||||
input = sa.Column(st.JsonDictType())
|
||||
output = sa.Column(st.JsonDictType())
|
||||
|
||||
# Runtime context like iteration_no of a repeater.
|
||||
@ -148,7 +148,7 @@ class Action(mb.MistralModelBase):
|
||||
id = mb.id_column()
|
||||
name = sa.Column(sa.String(200))
|
||||
description = sa.Column(sa.Text())
|
||||
parameters = sa.Column(sa.String(240))
|
||||
input = sa.Column(sa.String(240))
|
||||
|
||||
# Ad-hoc action properties.
|
||||
definition = sa.Column(sa.Text(), nullable=True)
|
||||
|
@ -64,7 +64,7 @@ class RunTask(EngineCommand):
|
||||
|
||||
self.task_db = self._create_db_task(exec_db)
|
||||
|
||||
# Evaluate Data Flow properties ('parameters', 'in_context').
|
||||
# Evaluate Data Flow properties ('input', 'in_context').
|
||||
data_flow.prepare_db_task(
|
||||
self.task_db,
|
||||
self.task_spec,
|
||||
@ -83,7 +83,7 @@ class RunTask(EngineCommand):
|
||||
'name': self.task_spec.get_name(),
|
||||
'state': states.RUNNING,
|
||||
'spec': self.task_spec.to_dict(),
|
||||
'parameters': None,
|
||||
'input': None,
|
||||
'in_context': None,
|
||||
'output': None,
|
||||
'runtime_context': None
|
||||
@ -111,7 +111,7 @@ class RunTask(EngineCommand):
|
||||
action_spec_name
|
||||
)
|
||||
|
||||
action_params = self.task_db.parameters or {}
|
||||
action_input = self.task_db.input or {}
|
||||
|
||||
if action_db.spec:
|
||||
# Ad-hoc action.
|
||||
@ -125,21 +125,21 @@ class RunTask(EngineCommand):
|
||||
base_name
|
||||
)
|
||||
|
||||
base_params = action_spec.get_base_parameters()
|
||||
base_input = action_spec.get_base_input()
|
||||
|
||||
if base_params:
|
||||
action_params = expr.evaluate_recursively(
|
||||
base_params,
|
||||
action_params
|
||||
if base_input:
|
||||
action_input = expr.evaluate_recursively(
|
||||
base_input,
|
||||
action_input
|
||||
)
|
||||
else:
|
||||
action_params = {}
|
||||
action_input = {}
|
||||
|
||||
rpc.get_executor_client().run_action(
|
||||
self.task_db.id,
|
||||
action_db.action_class,
|
||||
action_db.attributes or {},
|
||||
action_params
|
||||
action_input
|
||||
)
|
||||
|
||||
def _run_workflow(self):
|
||||
@ -156,12 +156,12 @@ class RunTask(EngineCommand):
|
||||
|
||||
wf_spec = spec_parser.get_workflow_spec(wf_db.spec)
|
||||
|
||||
wf_input = self.task_db.parameters
|
||||
wf_input = self.task_db.input
|
||||
|
||||
start_params = {'parent_task_id': self.task_db.id}
|
||||
|
||||
for k, v in wf_input.items():
|
||||
if k not in wf_spec.get_parameters():
|
||||
if k not in wf_spec.get_input():
|
||||
start_params[k] = v
|
||||
del wf_input[k]
|
||||
|
||||
|
@ -28,7 +28,7 @@ def validate_workflow_input(wf_db, wf_spec, wf_input):
|
||||
input_param_names = copy.copy((wf_input or {}).keys())
|
||||
missing_param_names = []
|
||||
|
||||
for p_name in wf_spec.get_parameters():
|
||||
for p_name in wf_spec.get_input():
|
||||
if p_name not in input_param_names:
|
||||
missing_param_names.append(p_name)
|
||||
else:
|
||||
|
@ -37,13 +37,13 @@ def get_registered_actions(**kwargs):
|
||||
|
||||
|
||||
def _register_action_in_db(name, action_class, attributes,
|
||||
description=None, parameter_str=None):
|
||||
description=None, input_str=None):
|
||||
values = {
|
||||
'name': name,
|
||||
'action_class': action_class,
|
||||
'attributes': attributes,
|
||||
'description': description,
|
||||
'parameters': parameter_str,
|
||||
'input': input_str,
|
||||
'is_system': True
|
||||
}
|
||||
|
||||
@ -97,13 +97,13 @@ def register_action_classes():
|
||||
action_class_str = mgr[name].entry_point_target.replace(':', '.')
|
||||
action_class = mgr[name].plugin
|
||||
description = i_utils.get_docstring(action_class)
|
||||
parameter_str = i_utils.get_arg_list_as_str(action_class.__init__)
|
||||
input_str = i_utils.get_arg_list_as_str(action_class.__init__)
|
||||
|
||||
attrs = i_utils.get_public_fields(mgr[name].plugin)
|
||||
|
||||
_register_action_in_db(name, action_class_str, attrs,
|
||||
description=description,
|
||||
parameter_str=parameter_str)
|
||||
input_str=input_str)
|
||||
|
||||
_register_dynamic_action_classes()
|
||||
|
||||
|
@ -25,6 +25,7 @@ from mistral.services import action_manager as a_m
|
||||
from mistral.tests import base
|
||||
from mistral.workbook import parser as spec_parser
|
||||
|
||||
# TODO(rakhmerov): Deprecated. Remove it once engine v1 is gone.
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
@ -112,7 +112,9 @@ class FunctionalTest(base.DbTestCase):
|
||||
self.app.get(url, headers={'Accept': 'application/json'})
|
||||
except webtest_app.AppError as error:
|
||||
self.assertIn('Bad response: 404 Not Found', str(error))
|
||||
|
||||
return
|
||||
|
||||
self.fail('Expected 404 Not found but got OK')
|
||||
|
||||
def assertUnauthorized(self, url):
|
||||
@ -120,5 +122,7 @@ class FunctionalTest(base.DbTestCase):
|
||||
self.app.get(url, headers={'Accept': 'application/json'})
|
||||
except webtest_app.AppError as error:
|
||||
self.assertIn('Bad response: 401 Unauthorized', str(error))
|
||||
|
||||
return
|
||||
|
||||
self.fail('Expected 401 Unauthorized but got OK')
|
||||
|
@ -29,7 +29,7 @@ version: '2.0'
|
||||
|
||||
description: My super cool action.
|
||||
base: std.echo
|
||||
base-parameters:
|
||||
base-input:
|
||||
output: "{$.str1}{$.str2}"
|
||||
"""
|
||||
|
||||
@ -57,7 +57,7 @@ UPDATED_ACTION_DEFINITION = """
|
||||
version: '2.0'
|
||||
|
||||
base: std.echo
|
||||
base-parameters:
|
||||
base-input:
|
||||
output: "{$.str1}{$.str2}{$.str3}"
|
||||
"""
|
||||
|
||||
|
@ -38,7 +38,7 @@ TASK_DB = models.Task(
|
||||
state=states.RUNNING,
|
||||
tags=['a', 'b'],
|
||||
in_context={},
|
||||
parameters={},
|
||||
input={},
|
||||
output={},
|
||||
runtime_context={},
|
||||
execution_id='123',
|
||||
@ -50,15 +50,11 @@ TASK = {
|
||||
'id': '123',
|
||||
'name': 'task',
|
||||
'wf_name': 'flow',
|
||||
|
||||
'state': 'RUNNING',
|
||||
'result': '{}',
|
||||
|
||||
'parameters': '{}',
|
||||
'input': '{}',
|
||||
'output': '{}',
|
||||
|
||||
'execution_id': '123',
|
||||
|
||||
'created_at': '1970-01-01 00:00:00',
|
||||
'updated_at': '1970-01-01 00:00:00'
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ WF_DEFINITION = """
|
||||
version: '2.0'
|
||||
|
||||
type: direct
|
||||
parameters:
|
||||
input:
|
||||
- param1
|
||||
|
||||
tasks:
|
||||
@ -61,7 +61,7 @@ UPDATED_WF_DEFINITION = """
|
||||
version: '2.0'
|
||||
|
||||
type: direct
|
||||
parameters:
|
||||
input:
|
||||
- param1
|
||||
|
||||
tasks:
|
||||
|
@ -477,7 +477,7 @@ TASKS = [
|
||||
'state': 'IDLE',
|
||||
'tags': ['deployment'],
|
||||
'in_context': None,
|
||||
'parameters': None,
|
||||
'input': None,
|
||||
'output': None,
|
||||
'runtime_context': None,
|
||||
'created_at': None,
|
||||
@ -493,7 +493,7 @@ TASKS = [
|
||||
'state': 'IDLE',
|
||||
'tags': ['deployment'],
|
||||
'in_context': {'image_id': '123123'},
|
||||
'parameters': {'image_id': '123123'},
|
||||
'input': {'image_id': '123123'},
|
||||
'output': {'vm_id': '343123'},
|
||||
'runtime_context': None,
|
||||
'created_at': None,
|
||||
|
@ -33,9 +33,9 @@ version: '2.0'
|
||||
actions:
|
||||
concat_twice:
|
||||
base: std.echo
|
||||
base-parameters:
|
||||
base-input:
|
||||
output: "{$.s1}+{$.s2}"
|
||||
parameters:
|
||||
input:
|
||||
- s1
|
||||
- s2
|
||||
output: "{$} and {$}"
|
||||
@ -43,7 +43,7 @@ actions:
|
||||
workflows:
|
||||
wf1:
|
||||
type: direct
|
||||
parameters:
|
||||
input:
|
||||
- str1
|
||||
- str2
|
||||
output:
|
||||
@ -78,6 +78,10 @@ class AdhocActionsTest(base.EngineTestCase):
|
||||
|
||||
exec_db = db_api.get_execution(exec_db.id)
|
||||
|
||||
self.assertDictEqual({'workflow_result': 'a+b and a+b',
|
||||
'concat_task_result': 'a+b and a+b'},
|
||||
exec_db.output)
|
||||
self.assertDictEqual(
|
||||
{
|
||||
'workflow_result': 'a+b and a+b',
|
||||
'concat_task_result': 'a+b and a+b'
|
||||
},
|
||||
exec_db.output
|
||||
)
|
||||
|
@ -40,7 +40,7 @@ version: '2.0'
|
||||
workflows:
|
||||
wf1:
|
||||
type: reverse
|
||||
parameters:
|
||||
input:
|
||||
- param1
|
||||
- param2
|
||||
|
||||
@ -109,7 +109,7 @@ class DefaultEngineTest(base.DbTestCase):
|
||||
# Data Flow properties.
|
||||
self._assert_dict_contains_subset(wf_input, task_db.in_context)
|
||||
self.assertIn('__execution', task_db.in_context)
|
||||
self.assertDictEqual({'output': 'Hey'}, task_db.parameters)
|
||||
self.assertDictEqual({'output': 'Hey'}, task_db.input)
|
||||
|
||||
def test_start_workflow_missing_parameters(self):
|
||||
self.assertRaises(
|
||||
@ -158,7 +158,7 @@ class DefaultEngineTest(base.DbTestCase):
|
||||
self.assertIsNone(task_db.runtime_context)
|
||||
self._assert_dict_contains_subset(wf_input, task_db.in_context)
|
||||
self.assertIn('__execution', task_db.in_context)
|
||||
self.assertDictEqual({'output': 'Hey'}, task_db.parameters)
|
||||
self.assertDictEqual({'output': 'Hey'}, task_db.input)
|
||||
|
||||
# Finish 'task1'.
|
||||
task1_db = self.engine.on_task_result(
|
||||
@ -173,7 +173,7 @@ class DefaultEngineTest(base.DbTestCase):
|
||||
# Data Flow properties.
|
||||
self._assert_dict_contains_subset(wf_input, task1_db.in_context)
|
||||
self.assertIn('__execution', task_db.in_context)
|
||||
self.assertDictEqual({'output': 'Hey'}, task1_db.parameters)
|
||||
self.assertDictEqual({'output': 'Hey'}, task1_db.input)
|
||||
self.assertDictEqual(
|
||||
{
|
||||
'result': 'Hey',
|
||||
@ -213,7 +213,7 @@ class DefaultEngineTest(base.DbTestCase):
|
||||
|
||||
self._assert_dict_contains_subset(in_context, task2_db.in_context)
|
||||
self.assertIn('__execution', task_db.in_context)
|
||||
self.assertDictEqual({'output': 'Hi'}, task2_db.parameters)
|
||||
self.assertDictEqual({'output': 'Hi'}, task2_db.input)
|
||||
self.assertDictEqual({'task': {'task2': 'Hi'}}, task2_db.output)
|
||||
|
||||
self.assertEqual(2, len(exec_db.tasks))
|
||||
|
@ -34,7 +34,7 @@ version: '2.0'
|
||||
workflows:
|
||||
wf:
|
||||
type: direct
|
||||
parameters:
|
||||
input:
|
||||
- my_var
|
||||
|
||||
tasks:
|
||||
@ -111,7 +111,7 @@ version: '2.0'
|
||||
workflows:
|
||||
wf:
|
||||
type: direct
|
||||
parameters:
|
||||
input:
|
||||
- my_var
|
||||
|
||||
on-task-complete:
|
||||
|
@ -34,7 +34,7 @@ version: '2.0'
|
||||
workflows:
|
||||
wf1:
|
||||
type: reverse
|
||||
parameters:
|
||||
input:
|
||||
- param1
|
||||
- param2
|
||||
|
||||
|
@ -36,7 +36,7 @@ version: '2.0'
|
||||
workflows:
|
||||
wf1:
|
||||
type: reverse
|
||||
parameters:
|
||||
input:
|
||||
- param1
|
||||
- param2
|
||||
output:
|
||||
|
@ -17,17 +17,19 @@ from mistral.tests import base
|
||||
|
||||
|
||||
class ActionManagerTest(base.DbTestCase):
|
||||
def test_action_parameters(self):
|
||||
def test_action_input(self):
|
||||
std_http = db_api.get_action("std.http")
|
||||
std_email = db_api.get_action("std.email")
|
||||
|
||||
http_action_params = ("url, method=GET, params=None, body=None, "
|
||||
"headers=None, cookies=None, auth=None, "
|
||||
"timeout=None, allow_redirects=None, "
|
||||
"proxies=None")
|
||||
http_action_input = (
|
||||
"url, method=GET, params=None, body=None, "
|
||||
"headers=None, cookies=None, auth=None, "
|
||||
"timeout=None, allow_redirects=None, "
|
||||
"proxies=None"
|
||||
)
|
||||
|
||||
self.assertEqual(http_action_params, std_http.parameters)
|
||||
self.assertEqual("params, settings", std_email.parameters)
|
||||
self.assertEqual(http_action_input, std_http.input)
|
||||
self.assertEqual("params, settings", std_email.input)
|
||||
|
||||
def test_action_description(self):
|
||||
std_http = db_api.get_action("std.http")
|
||||
|
@ -34,13 +34,13 @@ version: '2.0'
|
||||
actions:
|
||||
concat:
|
||||
base: std.echo
|
||||
base-parameters:
|
||||
base-input:
|
||||
output: "{$.str1}{$.str2}"
|
||||
|
||||
workflows:
|
||||
wf1:
|
||||
type: reverse
|
||||
parameters:
|
||||
input:
|
||||
- param1
|
||||
output:
|
||||
result: $.result
|
||||
@ -70,7 +70,7 @@ version: '2.0'
|
||||
actions:
|
||||
concat:
|
||||
base: std.echo
|
||||
base-parameters:
|
||||
base-input:
|
||||
output: "{$.str1}{$.str2}"
|
||||
|
||||
workflows:
|
||||
@ -87,7 +87,7 @@ workflows:
|
||||
|
||||
wf2:
|
||||
type: reverse
|
||||
parameters:
|
||||
input:
|
||||
- param1
|
||||
output:
|
||||
result: $.result
|
||||
|
@ -28,15 +28,9 @@ DATA = {
|
||||
|
||||
SERVERS = {
|
||||
"servers": [
|
||||
{
|
||||
'name': 'centos'
|
||||
},
|
||||
{
|
||||
'name': 'ubuntu'
|
||||
},
|
||||
{
|
||||
'name': 'fedora'
|
||||
}
|
||||
{'name': 'centos'},
|
||||
{'name': 'ubuntu'},
|
||||
{'name': 'fedora'}
|
||||
]
|
||||
}
|
||||
|
||||
@ -87,10 +81,12 @@ class YaqlEvaluatorTest(base.BaseTest):
|
||||
'new_key11': 'new_key1'
|
||||
}
|
||||
}
|
||||
modified_task = expr.evaluate_recursively(task_spec_dict,
|
||||
{
|
||||
'param2': 'val32'
|
||||
})
|
||||
modified_task = expr.evaluate_recursively(
|
||||
task_spec_dict,
|
||||
{
|
||||
'param2': 'val32'
|
||||
}
|
||||
)
|
||||
|
||||
self.assertDictEqual(
|
||||
{
|
||||
@ -103,13 +99,15 @@ class YaqlEvaluatorTest(base.BaseTest):
|
||||
'new_key11': 'new_key1'
|
||||
}
|
||||
},
|
||||
modified_task)
|
||||
modified_task
|
||||
)
|
||||
|
||||
def test_evaluate_recursively_arbitrary_dict(self):
|
||||
context = {
|
||||
"auth_token": "123",
|
||||
"project_id": "mistral"
|
||||
}
|
||||
|
||||
data = {
|
||||
"parameters": {
|
||||
"parameter1": {
|
||||
@ -138,4 +136,5 @@ class YaqlEvaluatorTest(base.BaseTest):
|
||||
},
|
||||
"token": "123"
|
||||
},
|
||||
applied)
|
||||
applied
|
||||
)
|
||||
|
@ -22,10 +22,13 @@ class InspectUtilsTest(base.BaseTest):
|
||||
action_class = std_actions.HTTPAction
|
||||
parameters_str = i_u.get_arg_list_as_str(action_class.__init__)
|
||||
|
||||
http_action_params = ("url, method=GET, params=None, body=None, "
|
||||
"headers=None, cookies=None, auth=None, "
|
||||
"timeout=None, allow_redirects=None, "
|
||||
"proxies=None")
|
||||
http_action_params = (
|
||||
"url, method=GET, params=None, body=None, "
|
||||
"headers=None, cookies=None, auth=None, "
|
||||
"timeout=None, allow_redirects=None, "
|
||||
"proxies=None"
|
||||
)
|
||||
|
||||
self.assertEqual(http_action_params, parameters_str)
|
||||
|
||||
def test_get_parameters_str_all_mandatory(self):
|
||||
|
@ -27,7 +27,7 @@ actions:
|
||||
action1:
|
||||
description: This is a test ad-hoc action
|
||||
base: std.echo
|
||||
base-parameters:
|
||||
base-input:
|
||||
output: "Hello {$.name}!"
|
||||
output: $
|
||||
|
||||
@ -41,7 +41,7 @@ workflows:
|
||||
description: This is a test workflow
|
||||
type: reverse
|
||||
|
||||
parameters:
|
||||
input:
|
||||
- name
|
||||
- age
|
||||
|
||||
@ -136,9 +136,9 @@ class DSLv2ModelTest(base.BaseTest):
|
||||
self.assertEqual('std.echo', action_spec.get_base())
|
||||
self.assertDictEqual(
|
||||
{'output': 'Hello {$.name}!'},
|
||||
action_spec.get_base_parameters()
|
||||
action_spec.get_base_input()
|
||||
)
|
||||
self.assertDictEqual({}, action_spec.get_parameters())
|
||||
self.assertDictEqual({}, action_spec.get_input())
|
||||
self.assertEqual('$', action_spec.get_output())
|
||||
|
||||
# Workflows.
|
||||
@ -165,7 +165,7 @@ class DSLv2ModelTest(base.BaseTest):
|
||||
self.assertEqual('task1', task1_spec.get_name())
|
||||
self.assertEqual('This is a test task', task1_spec.get_description())
|
||||
self.assertEqual('ns1.action1', task1_spec.get_action_name())
|
||||
self.assertEqual({'name': '{$.name}'}, task1_spec.get_parameters())
|
||||
self.assertEqual({'name': '{$.name}'}, task1_spec.get_input())
|
||||
|
||||
policies = task1_spec.get_policies()
|
||||
|
||||
@ -187,7 +187,7 @@ class DSLv2ModelTest(base.BaseTest):
|
||||
self.assertIsNone(task2_spec.get_workflow_name())
|
||||
self.assertEqual(
|
||||
{'output': 'Thanks {$.name}!'},
|
||||
task2_spec.get_parameters()
|
||||
task2_spec.get_input()
|
||||
)
|
||||
|
||||
wf2_spec = wf_specs.get('wf2')
|
||||
@ -220,7 +220,7 @@ class DSLv2ModelTest(base.BaseTest):
|
||||
'param1': None,
|
||||
'param2': False
|
||||
},
|
||||
task3_spec.get_parameters()
|
||||
task3_spec.get_input()
|
||||
)
|
||||
self.assertListEqual(
|
||||
[('task4', '$.my_val = 1')],
|
||||
@ -242,7 +242,7 @@ class DSLv2ModelTest(base.BaseTest):
|
||||
'is_true': True,
|
||||
'object_list': [1, None, 'str'],
|
||||
},
|
||||
task7_spec.get_parameters()
|
||||
task7_spec.get_input()
|
||||
)
|
||||
|
||||
task8_spec = wf2_spec.get_tasks().get('task8')
|
||||
@ -252,7 +252,7 @@ class DSLv2ModelTest(base.BaseTest):
|
||||
'expr_list': ['$.value', '{$.key}'],
|
||||
'expr': '{$.value}',
|
||||
},
|
||||
task8_spec.get_parameters()
|
||||
task8_spec.get_input()
|
||||
)
|
||||
|
||||
def test_adhoc_action_with_base_in_one_string(self):
|
||||
@ -263,7 +263,7 @@ class DSLv2ModelTest(base.BaseTest):
|
||||
|
||||
self.assertEqual("std.echo", action_spec.get_base())
|
||||
self.assertEqual({'output': 'Echo output'},
|
||||
action_spec.get_base_parameters())
|
||||
action_spec.get_base_input())
|
||||
|
||||
def test_to_dict(self):
|
||||
wb_spec = spec_parser.get_workbook_spec_from_yaml(VALID_WB)
|
||||
|
@ -85,7 +85,7 @@ class BaseSpec(object):
|
||||
return val.items()[0] if isinstance(val, dict) else (val, '')
|
||||
|
||||
@staticmethod
|
||||
def _parse_cmd_and_params(cmd_str):
|
||||
def _parse_cmd_and_input(cmd_str):
|
||||
# TODO(rakhmerov): Try to find a way with one expression.
|
||||
cmd_matcher = CMD_PTRN.search(cmd_str)
|
||||
|
||||
|
@ -27,8 +27,8 @@ class ActionSpec(base.BaseSpec):
|
||||
"name": {"type": "string"},
|
||||
"description": {"type": "string"},
|
||||
"base": {"type": "string"},
|
||||
"base-parameters": {"type": "object"},
|
||||
"parameters": {"type": "array"},
|
||||
"base-input": {"type": "object"},
|
||||
"input": {"type": "array"},
|
||||
"output": {"type": ["string", "object", "array", "null"]},
|
||||
},
|
||||
"required": ["version", "name", "base"],
|
||||
@ -43,13 +43,13 @@ class ActionSpec(base.BaseSpec):
|
||||
self._name = data['name']
|
||||
self._description = data.get('description')
|
||||
self._base = data['base']
|
||||
self._base_parameters = data.get('base-parameters', {})
|
||||
self._parameters = data.get('parameters', {})
|
||||
self._base_input = data.get('base-input', {})
|
||||
self._input = data.get('input', {})
|
||||
self._output = data.get('output')
|
||||
|
||||
self._base, params = self._parse_cmd_and_params(self._base)
|
||||
self._base, _input = self._parse_cmd_and_input(self._base)
|
||||
|
||||
utils.merge_dicts(self._base_parameters, params)
|
||||
utils.merge_dicts(self._base_input, _input)
|
||||
|
||||
def get_name(self):
|
||||
return self._name
|
||||
@ -60,11 +60,11 @@ class ActionSpec(base.BaseSpec):
|
||||
def get_base(self):
|
||||
return self._base
|
||||
|
||||
def get_base_parameters(self):
|
||||
return self._base_parameters
|
||||
def get_base_input(self):
|
||||
return self._base_input
|
||||
|
||||
def get_parameters(self):
|
||||
return self._parameters
|
||||
def get_input(self):
|
||||
return self._input
|
||||
|
||||
def get_output(self):
|
||||
return self._output
|
||||
|
@ -32,7 +32,7 @@ class TaskSpec(base.BaseSpec):
|
||||
"description": {"type": "string"},
|
||||
"action": {"type": ["string", "null"]},
|
||||
"workflow": {"type": ["string", "null"]},
|
||||
"parameters": {"type": ["object", "null"]},
|
||||
"input": {"type": ["object", "null"]},
|
||||
"publish": {"type": ["object", "null"]},
|
||||
"policies": {"type": ["object", "null"]},
|
||||
"requires": {"type": ["string", "array", "null"]},
|
||||
@ -53,7 +53,7 @@ class TaskSpec(base.BaseSpec):
|
||||
self._description = data.get('description')
|
||||
self._action = data.get('action')
|
||||
self._workflow = data.get('workflow')
|
||||
self._parameters = data.get('parameters', {})
|
||||
self._input = data.get('input', {})
|
||||
self._publish = data.get('publish', {})
|
||||
self._policies = self._spec_property(
|
||||
'policies',
|
||||
@ -80,12 +80,12 @@ class TaskSpec(base.BaseSpec):
|
||||
params = {}
|
||||
|
||||
if self._action:
|
||||
self._action, params = self._parse_cmd_and_params(self._action)
|
||||
self._action, params = self._parse_cmd_and_input(self._action)
|
||||
elif self._workflow:
|
||||
self._workflow, params = self._parse_cmd_and_params(
|
||||
self._workflow, params = self._parse_cmd_and_input(
|
||||
self._workflow)
|
||||
|
||||
utils.merge_dicts(self._parameters, params)
|
||||
utils.merge_dicts(self._input, params)
|
||||
|
||||
def get_name(self):
|
||||
return self._name
|
||||
@ -99,8 +99,8 @@ class TaskSpec(base.BaseSpec):
|
||||
def get_workflow_name(self):
|
||||
return self._workflow
|
||||
|
||||
def get_parameters(self):
|
||||
return self._parameters
|
||||
def get_input(self):
|
||||
return self._input
|
||||
|
||||
def get_policies(self):
|
||||
return self._policies
|
||||
|
@ -29,7 +29,7 @@ class WorkflowSpec(base.BaseSpec):
|
||||
"on-task-complete": {"type": ["array", "null"]},
|
||||
"on-task-success": {"type": ["array", "null"]},
|
||||
"on-task-error": {"type": ["array", "null"]},
|
||||
"parameters": {"type": ["array", "null"]},
|
||||
"input": {"type": ["array", "null"]},
|
||||
"output": {"type": ["string", "object", "array", "null"]},
|
||||
"tasks": {"type": "object"},
|
||||
},
|
||||
@ -45,9 +45,10 @@ class WorkflowSpec(base.BaseSpec):
|
||||
self._name = data['name']
|
||||
self._description = data.get('description')
|
||||
self._type = data['type']
|
||||
self._parameters = data.get('parameters', {})
|
||||
self._input = data.get('input', [])
|
||||
self._output = data.get('output', {})
|
||||
# TODO(rakhmerov): Build workflow policies specification.
|
||||
|
||||
# TODO(rakhmerov): Implement 'task-defaults' instead.
|
||||
self._policies = None
|
||||
self._on_task_complete = self._as_list_of_tuples("on-task-complete")
|
||||
self._on_task_success = self._as_list_of_tuples("on-task-success")
|
||||
@ -64,8 +65,8 @@ class WorkflowSpec(base.BaseSpec):
|
||||
def get_type(self):
|
||||
return self._type
|
||||
|
||||
def get_parameters(self):
|
||||
return self._parameters
|
||||
def get_input(self):
|
||||
return self._input
|
||||
|
||||
def get_output(self):
|
||||
return self._output
|
||||
|
@ -63,6 +63,8 @@ class WorkflowHandler(object):
|
||||
(before publisher). Instance of mistral.workflow.utils.TaskResult
|
||||
:return List of engine commands that needs to be performed.
|
||||
"""
|
||||
# TODO(rakhmerov): need to ignore result if task is complete.
|
||||
|
||||
task_db.state = \
|
||||
states.ERROR if raw_result.is_error() else states.SUCCESS
|
||||
|
||||
|
@ -31,7 +31,7 @@ CONF = cfg.CONF
|
||||
|
||||
def prepare_db_task(task_db, task_spec, upstream_task_specs, exec_db,
|
||||
cause_task_db=None):
|
||||
"""Prepare Data Flow properties ('in_context' and 'parameters')
|
||||
"""Prepare Data Flow properties ('in_context' and 'input')
|
||||
of given DB task.
|
||||
|
||||
:param task_db: DB task to prepare.
|
||||
@ -59,14 +59,14 @@ def prepare_db_task(task_db, task_spec, upstream_task_specs, exec_db,
|
||||
old_task_output
|
||||
)
|
||||
|
||||
task_db.parameters = evaluate_task_parameters(
|
||||
task_db.input = evaluate_task_input(
|
||||
task_spec,
|
||||
task_db.in_context
|
||||
)
|
||||
|
||||
|
||||
def evaluate_task_parameters(task_spec, context):
|
||||
return expr.evaluate_recursively(task_spec.get_parameters(), context)
|
||||
def evaluate_task_input(task_spec, context):
|
||||
return expr.evaluate_recursively(task_spec.get_input(), context)
|
||||
|
||||
|
||||
def _evaluate_upstream_context(upstream_db_tasks):
|
||||
|
Loading…
Reference in New Issue
Block a user