Repository: incubator-ariatosca Updated Branches: refs/heads/ARIA-48-aria-cli 744be225c -> 81e5847ac
fixed execution inputs Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/81e5847a Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/81e5847a Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/81e5847a Branch: refs/heads/ARIA-48-aria-cli Commit: 81e5847ac7cbca1d55d9c870a28574b7c11fe39a Parents: 744be22 Author: Ran Ziv <[email protected]> Authored: Thu Mar 30 16:32:33 2017 +0300 Committer: Ran Ziv <[email protected]> Committed: Thu Mar 30 16:32:33 2017 +0300 ---------------------------------------------------------------------- aria/modeling/orchestration.py | 5 ++++- aria/orchestrator/workflow_runner.py | 24 ++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/81e5847a/aria/modeling/orchestration.py ---------------------------------------------------------------------- diff --git a/aria/modeling/orchestration.py b/aria/modeling/orchestration.py index a2ac6dd..f00571e 100644 --- a/aria/modeling/orchestration.py +++ b/aria/modeling/orchestration.py @@ -96,7 +96,6 @@ class ExecutionBase(ModelMixin): ended_at = Column(DateTime, nullable=True, index=True) error = Column(Text, nullable=True) is_system_workflow = Column(Boolean, nullable=False, default=False) - parameters = Column(Dict) status = Column(Enum(*STATES, name='execution_status'), default=PENDING) workflow_name = Column(Text) @@ -104,6 +103,10 @@ class ExecutionBase(ModelMixin): def service(cls): return relationship.many_to_one(cls, 'service') + @declared_attr + def inputs(cls): + return relationship.many_to_many(cls, 'parameter', prefix='inputs', dict_key='name') + # region foreign keys @declared_attr http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/81e5847a/aria/orchestrator/workflow_runner.py ---------------------------------------------------------------------- diff --git a/aria/orchestrator/workflow_runner.py b/aria/orchestrator/workflow_runner.py index a529a84..124104e 100644 --- a/aria/orchestrator/workflow_runner.py +++ b/aria/orchestrator/workflow_runner.py @@ -32,7 +32,7 @@ from ..utils.imports import import_fullname DEFAULT_TASK_MAX_ATTEMPTS = 1 DEFAULT_TASK_RETRY_INTERVAL = 1 -# TODO move this constant somewhere in the DSL parser +# TODO move this constant somewhere in the DSL parser? WORKFLOW_POLICY_INTERNAL_PROPERTIES = ('implementation', 'dependencies') @@ -67,9 +67,10 @@ class WorkflowRunner(object): task_max_attempts=task_max_attempts, task_retry_interval=task_retry_interval) - # merged_inputs_dict = {input.name: input.value for input in self.execution.inputs.values()} - # self._tasks_graph = workflow_fn(ctx=workflow_context, **merged_inputs_dict) - self._tasks_graph = workflow_fn(ctx=workflow_context) + # transforming the execution inputs to dict, to pass them to the workflow function + execution_inputs_dict = {input.name: input.value for input in + self.execution.inputs.values()} + self._tasks_graph = workflow_fn(ctx=workflow_context, **execution_inputs_dict) self._engine = Engine( executor=ProcessExecutor(plugin_manager=plugin_manager), @@ -96,14 +97,17 @@ class WorkflowRunner(object): execution = models.Execution( created_at=datetime.utcnow(), service=self.service, - workflow_name=self._workflow_name) + workflow_name=self._workflow_name, + inputs={}) - # workflow_inputs = {k: v for k, v in - # self.service.workflows[self._workflow_name].properties - # if k not in WORKFLOW_POLICY_INTERNAL_PROPERTIES} + # built-in workflows don't have any inputs, and are also + # not a part of the service's workflows field + if self._workflow_name not in BUILTIN_WORKFLOWS: + workflow_inputs = {k: v for k, v in + self.service.workflows[self._workflow_name].properties + if k not in WORKFLOW_POLICY_INTERNAL_PROPERTIES} - # input_models = modeling_utils.create_inputs(inputs, workflow_inputs) - # execution.parameters = input_models + execution.inputs = modeling_utils.create_inputs(inputs, workflow_inputs) self._model_storage.execution.put(execution) return execution
