Fixed many tests

Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/dd99f0fb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/dd99f0fb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/dd99f0fb

Branch: refs/heads/ARIA-105-integrate-modeling
Commit: dd99f0fbc15bb9550ccae15ffbe5cf4a419848f4
Parents: 5ceb14c
Author: Tal Liron <[email protected]>
Authored: Mon Mar 6 19:35:53 2017 -0600
Committer: Tal Liron <[email protected]>
Committed: Mon Mar 6 19:35:53 2017 -0600

----------------------------------------------------------------------
 aria/modeling/misc.py                           |   2 +-
 aria/modeling/orchestration.py                  |   9 +-
 aria/orchestrator/context/operation.py          |   4 +-
 aria/orchestrator/workflows/api/task.py         |  19 ++-
 .../workflows/builtin/execute_operation.py      |  31 +++--
 aria/orchestrator/workflows/executor/celery.py  |   2 +-
 aria/orchestrator/workflows/executor/process.py |   2 +-
 tests/mock/models.py                            |  23 ++--
 tests/mock/operations.py                        |  46 +++----
 tests/mock/topology.py                          |   6 +-
 tests/orchestrator/context/__init__.py          |   4 -
 tests/orchestrator/context/test_operation.py    | 115 ++++++++++------
 .../context/test_resource_render.py             |   2 +-
 tests/orchestrator/context/test_serialize.py    |  23 ++--
 tests/orchestrator/context/test_toolbelt.py     |  61 +++++----
 tests/orchestrator/context/test_workflow.py     |  10 +-
 tests/orchestrator/workflows/api/test_task.py   | 135 +++++++++++--------
 .../workflows/builtin/test_execute_operation.py |  27 ++--
 .../orchestrator/workflows/core/test_engine.py  |  14 +-
 tests/orchestrator/workflows/core/test_task.py  |  76 ++++++-----
 .../test_task_graph_into_exececution_graph.py   |  27 ++--
 .../workflows/executor/test_executor.py         |   8 +-
 .../executor/test_process_executor_extension.py |  25 ++--
 .../test_process_executor_tracked_changes.py    |  26 ++--
 24 files changed, 418 insertions(+), 279 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/aria/modeling/misc.py
----------------------------------------------------------------------
diff --git a/aria/modeling/misc.py b/aria/modeling/misc.py
index b61a787..0bb5cda 100644
--- a/aria/modeling/misc.py
+++ b/aria/modeling/misc.py
@@ -79,7 +79,7 @@ class ParameterBase(TemplateModelMixin):
                 logging.getLogger('aria').warn('Could not pickle parameter of 
type "{0}": {1}'
                                                .format(self.type_name, value))
                 self._value = pickle.dumps(str(value))
- 
+
     def instantiate(self, context, container):
         from . import models
         return models.Parameter(name=self.name,

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/aria/modeling/orchestration.py
----------------------------------------------------------------------
diff --git a/aria/modeling/orchestration.py b/aria/modeling/orchestration.py
index 8428b69..d9d9908 100644
--- a/aria/modeling/orchestration.py
+++ b/aria/modeling/orchestration.py
@@ -154,7 +154,8 @@ class ServiceUpdateBase(ModelMixin):
 
     __tablename__ = 'service_update' 
 
-    _private_fields = ['execution_fk', 'service_fk']
+    _private_fields = ['execution_fk',
+                       'service_fk']
 
     created_at = Column(DateTime, nullable=False, index=True)
     service_plan = Column(Dict, nullable=False)
@@ -212,10 +213,10 @@ class ServiceUpdateStepBase(ModelMixin):
 
     _action_types = namedtuple('ACTION_TYPES', 'ADD, REMOVE, MODIFY')
     ACTION_TYPES = _action_types(ADD='add', REMOVE='remove', MODIFY='modify')
+
     _entity_types = namedtuple(
         'ENTITY_TYPES',
-        'NODE, RELATIONSHIP, PROPERTY, OPERATION, WORKFLOW, OUTPUT, 
DESCRIPTION, GROUP, '
-        'POLICY_TYPE, POLICY_TRIGGER, PLUGIN')
+        'NODE, RELATIONSHIP, PROPERTY, OPERATION, WORKFLOW, OUTPUT, 
DESCRIPTION, GROUP, PLUGIN')
     ENTITY_TYPES = _entity_types(
         NODE='node',
         RELATIONSHIP='relationship',
@@ -225,8 +226,6 @@ class ServiceUpdateStepBase(ModelMixin):
         OUTPUT='output',
         DESCRIPTION='description',
         GROUP='group',
-        POLICY_TYPE='policy_type',
-        POLICY_TRIGGER='policy_trigger',
         PLUGIN='plugin'
     )
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/aria/orchestrator/context/operation.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/context/operation.py 
b/aria/orchestrator/context/operation.py
index 41093c9..e1a041f 100644
--- a/aria/orchestrator/context/operation.py
+++ b/aria/orchestrator/context/operation.py
@@ -66,11 +66,11 @@ class BaseOperationContext(BaseContext):
         """
         A work directory that is unique to the plugin and the deployment id
         """
-        if not self.task.plugin_name:
+        if self.task.plugin is None:
             return None
         plugin_workdir = '{0}/plugins/{1}/{2}'.format(self._workdir,
                                                       self.service.id,
-                                                      self.task.plugin_name)
+                                                      self.task.plugin.name)
         file.makedirs(plugin_workdir)
         return plugin_workdir
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/aria/orchestrator/workflows/api/task.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/workflows/api/task.py 
b/aria/orchestrator/workflows/api/task.py
index d90b2b1..f1812b1 100644
--- a/aria/orchestrator/workflows/api/task.py
+++ b/aria/orchestrator/workflows/api/task.py
@@ -20,6 +20,7 @@ Provides the tasks to be entered into the task graph
 from ....modeling import models
 from ....utils.collections import OrderedDict
 from ....utils.uuid import generate_uuid
+from ....utils.formatting import full_type_name
 from ... import context
 from .. import exceptions
 
@@ -60,6 +61,8 @@ class OperationTask(BaseTask):
 
     SOURCE_OPERATION = 'source'
     TARGET_OPERATION = 'target'
+    
+    NAME_FORMAT = '{type}:{id}->{interface}/{operation}'
 
     def __init__(self,
                  name,
@@ -94,8 +97,8 @@ class OperationTask(BaseTask):
             for k, v in inputs.iteritems():
                 if not isinstance(v, models.Parameter):
                     inputs[k] = models.Parameter(name=k,
-                                                 type_name='string',
-                                                 value=str(v) if v is not None 
else None)
+                                                 type_name=full_type_name(v),
+                                                 value=v)
 
         self.name = name
         self.actor = actor
@@ -130,7 +133,10 @@ class OperationTask(BaseTask):
 
         return cls(
             actor=node,
-            name='{0}.{1}'.format(interface_name, operation_name),
+            name=cls.NAME_FORMAT.format(type='node',
+                                        id=node.id,
+                                        interface=interface_name,
+                                        operation=operation_name),
             plugin=operation.plugin,
             implementation=operation.implementation,
             inputs=cls._merge_inputs(operation.inputs, inputs),
@@ -161,7 +167,10 @@ class OperationTask(BaseTask):
 
         return cls(
             actor=relationship,
-            name='{0}.{1}'.format(interface_name, operation_name),
+            name=cls.NAME_FORMAT.format(type='relationship',
+                                        id=relationship.id,
+                                        interface=interface_name,
+                                        operation=operation_name),
             plugin=operation.plugin,
             implementation=operation.implementation,
             inputs=cls._merge_inputs(operation.inputs, inputs),
@@ -186,7 +195,7 @@ class OperationTask(BaseTask):
 
 class WorkflowTask(BaseTask):
     """
-    Represents an workflow task in the task_graph
+    Represents a workflow task in the task graph
     """
 
     def __init__(self, workflow_func, **kwargs):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/aria/orchestrator/workflows/builtin/execute_operation.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/workflows/builtin/execute_operation.py 
b/aria/orchestrator/workflows/builtin/execute_operation.py
index 7b07fc2..e7c2085 100644
--- a/aria/orchestrator/workflows/builtin/execute_operation.py
+++ b/aria/orchestrator/workflows/builtin/execute_operation.py
@@ -25,7 +25,8 @@ from ... import workflow
 def execute_operation(
         ctx,
         graph,
-        operation,
+        interface_name,
+        operation_name,
         operation_kwargs,
         allow_kwargs_override,
         run_by_dependency_order,
@@ -69,7 +70,8 @@ def execute_operation(
         graph.add_tasks(
             _create_node_instance_task(
                 node=node,
-                operation=operation,
+                interface_name=interface_name,
+                operation_name=operation_name,
                 operation_kwargs=operation_kwargs,
                 allow_kwargs_override=allow_kwargs_override
             )
@@ -87,25 +89,26 @@ def execute_operation(
 
 
 def _filter_node_instances(context, node_template_ids=(), node_ids=(), 
type_names=()):
-    def _is_node_by_id(node_id):
-        return not node_template_ids or node_id in node_template_ids
+    def _is_node_template_by_id(node_template_id):
+        return not node_template_ids or node_template_id in node_template_ids
 
-    def _is_node_instance_by_id(node_instance_id):
-        return not node_ids or node_instance_id in node_ids
+    def _is_node_by_id(node_id):
+        return not node_ids or node_id in node_ids
 
-    def _is_node_by_type(node_type_hierarchy):
-        return not type_names or node_type_hierarchy in type_names
+    def _is_node_by_type(node_type):
+        return not node_type.name in type_names
 
     for node in context.nodes:
-        if all((_is_node_by_id(node.node_template.id),
-                _is_node_instance_by_id(node.id),
-                _is_node_by_type(node.node_template.type_hierarchy))):
+        if all((_is_node_template_by_id(node.node_template.id),
+                _is_node_by_id(node.id),
+                _is_node_by_type(node.node_template.type))):
             yield node
 
 
 def _create_node_instance_task(
         node,
-        operation,
+        interface_name,
+        operation_name,
         operation_kwargs,
         allow_kwargs_override):
     """
@@ -122,6 +125,6 @@ def _create_node_instance_task(
 
     return OperationTask.for_node(
         node=node,
-        interface_name=None, # TODO
-        operation_name=operation,
+        interface_name=interface_name,
+        operation_name=operation_name,
         inputs=operation_kwargs)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/aria/orchestrator/workflows/executor/celery.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/workflows/executor/celery.py 
b/aria/orchestrator/workflows/executor/celery.py
index 8a096b5..baa0375 100644
--- a/aria/orchestrator/workflows/executor/celery.py
+++ b/aria/orchestrator/workflows/executor/celery.py
@@ -44,7 +44,7 @@ class CeleryExecutor(BaseExecutor):
 
     def execute(self, task):
         self._tasks[task.id] = task
-        inputs = task.inputs.copy()
+        inputs = dict((k, v.value) for k, v in task.inputs.iteritems())
         inputs['ctx'] = task.context
         self._results[task.id] = self._app.send_task(
             task.operation_mapping,

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/aria/orchestrator/workflows/executor/process.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/workflows/executor/process.py 
b/aria/orchestrator/workflows/executor/process.py
index a1f0bee..9be834d 100644
--- a/aria/orchestrator/workflows/executor/process.py
+++ b/aria/orchestrator/workflows/executor/process.py
@@ -191,7 +191,7 @@ class ProcessExecutor(base.BaseExecutor):
         return {
             'task_id': task.id,
             'implementation': task.implementation,
-            'operation_inputs': task.inputs,
+            'operation_inputs': dict((k, v.value) for k, v in 
task.inputs.iteritems()),
             'port': self._server_port,
             'context': task.context.serialization_dict,
         }

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/mock/models.py
----------------------------------------------------------------------
diff --git a/tests/mock/models.py b/tests/mock/models.py
index 3ccd97e..78e9373 100644
--- a/tests/mock/models.py
+++ b/tests/mock/models.py
@@ -63,16 +63,17 @@ def create_service(service_template):
 
 
 def create_dependency_node_template(service_template):
-    the_type = service_template.node_types.get_descendant('test_node_type')
+    node_type = service_template.node_types.get_descendant('test_node_type')
+    capability_type = 
service_template.capability_types.get_descendant('test_capability_type')
     
     capability_template = models.CapabilityTemplate(
         name='capability',
-        
type=service_template.capability_types.get_descendant('test_capability_type')
+        type=capability_type
     )
     
     node_template = models.NodeTemplate(
         name=DEPENDENCY_NODE_TEMPLATE_NAME,
-        type=the_type,
+        type=node_type,
         capability_templates=_dictify(capability_template),
         default_instances=1,
         min_instances=1,
@@ -89,7 +90,7 @@ def create_dependent_node_template(service_template, 
dependency_node_template):
     operation_templates = dict((op, models.OperationTemplate(
         name=op,
         implementation='test'))
-                                for op in operations.NODE_OPERATIONS)
+                                for _, op in operations.NODE_OPERATIONS)
     interface_template = models.InterfaceTemplate(
         
type=service_template.interface_types.get_descendant('test_interface_type'),
         operation_templates=operation_templates)
@@ -148,10 +149,9 @@ def create_relationship(source, target):
     )
 
 
-def create_interface_template(service_template, operation_name, 
operation_kwargs=None,
-                              interface_kwargs=None):
+def create_interface_template(service_template, interface_name, operation_name,
+                              operation_kwargs=None, interface_kwargs=None):
     the_type = 
service_template.interface_types.get_descendant('test_interface_type')
-    interface_name, operation_name = operation_name.rsplit('.', 1)
     operation_template = models.OperationTemplate(
         name=operation_name,
         **(operation_kwargs or {})
@@ -164,10 +164,13 @@ def create_interface_template(service_template, 
operation_name, operation_kwargs
     )
 
 
-def create_interface(service, operation_name, operation_kwargs=None, 
interface_kwargs=None):
+def create_interface(service, interface_name, operation_name, 
operation_kwargs=None,
+                     interface_kwargs=None):
     the_type = 
service.service_template.interface_types.get_descendant('test_interface_type')
-    interface_name, operation_name = operation_name.rsplit('.', 1)
-    operation = models.Operation(name=operation_name, **(operation_kwargs or 
{}))
+    operation = models.Operation(
+        name=operation_name,
+        **(operation_kwargs or {})
+    )
     return models.Interface(
         type=the_type,
         operations=_dictify(operation),

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/mock/operations.py
----------------------------------------------------------------------
diff --git a/tests/mock/operations.py b/tests/mock/operations.py
index 5495f6a..c752a8e 100644
--- a/tests/mock/operations.py
+++ b/tests/mock/operations.py
@@ -14,46 +14,46 @@
 # limitations under the License.
 
 NODE_OPERATIONS_INSTALL = [
-    'tosca.interfaces.node.lifecycle.Standard.create',
-    'tosca.interfaces.node.lifecycle.Standard.configure',
-    'tosca.interfaces.node.lifecycle.Standard.start',
+    ('Standard', 'create'),
+    ('Standard', 'configure'),
+    ('Standard', 'start')
 ]
 
 NODE_OPERATIONS_UNINSTALL = [
-    'tosca.interfaces.node.lifecycle.Standard.stop',
-    'tosca.interfaces.node.lifecycle.Standard.delete',
+    ('Standard', 'stop'),
+    ('Standard', 'delete')
 ]
 
 NODE_OPERATIONS = NODE_OPERATIONS_INSTALL + NODE_OPERATIONS_UNINSTALL
 
 RELATIONSHIP_OPERATIONS_INSTALL = [
-    'tosca.interfaces.relationship.Configure.pre_configure_source',
-    'tosca.interfaces.relationship.Configure.pre_configure_target',
-    'tosca.interfaces.relationship.Configure.add_source',
-    'tosca.interfaces.relationship.Configure.add_target',
+    ('Configure', 'pre_configure_source'),
+    ('Configure', 'pre_configure_target'),
+    ('Configure', 'add_source'),
+    ('Configure', 'add_target')
 ]
 
 RELATIONSHIP_OPERATIONS_UNINSTALL = [
-    'tosca.interfaces.relationship.Configure.remove_target',
-    'tosca.interfaces.relationship.Configure.target_changed',
+    ('Configure', 'remove_target'),
+    ('Configure', 'target_changed')
 ]
 
 RELATIONSHIP_OPERATIONS = RELATIONSHIP_OPERATIONS_INSTALL + 
RELATIONSHIP_OPERATIONS_UNINSTALL
 
 OPERATIONS_INSTALL = [
-    'tosca.interfaces.node.lifecycle.Standard.create',
-    'tosca.interfaces.relationship.Configure.pre_configure_source',
-    'tosca.interfaces.relationship.Configure.pre_configure_target',
-    'tosca.interfaces.node.lifecycle.Standard.configure',
-    'tosca.interfaces.node.lifecycle.Standard.start',
-    'tosca.interfaces.relationship.Configure.add_source',
-    'tosca.interfaces.relationship.Configure.add_target',
-    'tosca.interfaces.relationship.Configure.target_changed',
+    ('Standard', 'create'),
+    ('Configure', 'pre_configure_source'),
+    ('Configure', 'pre_configure_target'),
+    ('Standard', 'configure'),
+    ('Standard', 'start'),
+    ('Configure', 'add_source'),
+    ('Configure', 'add_target'),
+    ('Configure', 'target_changed')
 ]
 
 OPERATIONS_UNINSTALL = [
-    'tosca.interfaces.relationship.Configure.remove_target',
-    'tosca.interfaces.relationship.Configure.target_changed',
-    'tosca.interfaces.node.lifecycle.Standard.stop',
-    'tosca.interfaces.node.lifecycle.Standard.delete',
+    ('Configure', 'remove_target'),
+    ('Configure', 'target_changed'),
+    ('Standard', 'stop'),
+    ('Standard', 'delete')
 ]

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/mock/topology.py
----------------------------------------------------------------------
diff --git a/tests/mock/topology.py b/tests/mock/topology.py
index b702783..c7d8087 100644
--- a/tests/mock/topology.py
+++ b/tests/mock/topology.py
@@ -20,13 +20,12 @@ from . import models
 
 def create_simple_topology_single_node(model_storage, create_operation):
     service_template = models.create_service_template()
-
     service = models.create_service(service_template)
 
     node_template = models.create_dependency_node_template(service_template)
     interface_template = models.create_interface_template(
         service_template,
-        'Standard.create',
+        'Standard', 'create',
         operation_kwargs=dict(
             implementation=create_operation,
             inputs={'key': aria_models.Parameter(name='key', value='create', 
type_name='string'),
@@ -37,7 +36,7 @@ def create_simple_topology_single_node(model_storage, 
create_operation):
     node = models.create_dependency_node(node_template, service)
     interface = models.create_interface(
         service,
-        'Standard.create',
+        'Standard', 'create',
         operation_kwargs=dict(
             implementation=create_operation,
             inputs={'key': aria_models.Parameter(name='key', value='create', 
type_name='string'),
@@ -51,7 +50,6 @@ def create_simple_topology_single_node(model_storage, 
create_operation):
 
 def create_simple_topology_two_nodes(model_storage):
     service_template = models.create_service_template()
-
     service = models.create_service(service_template)
 
     # Creating a simple service with node -> node as a graph

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/context/__init__.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/context/__init__.py 
b/tests/orchestrator/context/__init__.py
index ea0fea9..4fde0a7 100644
--- a/tests/orchestrator/context/__init__.py
+++ b/tests/orchestrator/context/__init__.py
@@ -23,10 +23,6 @@ def op_path(func, module_path=None):
     return '{0}.{1}'.format(module_path, func.__name__)
 
 
-def op_name(actor, operation_name):
-    return '{name}.{actor.id}'.format(name=operation_name, actor=actor)
-
-
 def execute(workflow_func, workflow_context, executor):
     graph = workflow_func(ctx=workflow_context)
     eng = engine.Engine(executor=executor, workflow_context=workflow_context, 
tasks_graph=graph)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/context/test_operation.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/context/test_operation.py 
b/tests/orchestrator/context/test_operation.py
index b460b9f..ce3bd84 100644
--- a/tests/orchestrator/context/test_operation.py
+++ b/tests/orchestrator/context/test_operation.py
@@ -28,7 +28,6 @@ from aria.orchestrator.workflows.executor import thread
 from tests import mock, storage
 from . import (
     op_path,
-    op_name,
     execute,
 )
 
@@ -56,11 +55,13 @@ def executor():
 
 
 def test_node_operation_task_execution(ctx, executor):
-    operation_name = 'aria.interfaces.lifecycle.create'
+    interface_name = 'Standard'
+    operation_name = 'create'
 
     node = ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
     interface = mock.models.create_interface(
         node.service,
+        interface_name,
         operation_name,
         operation_kwargs=dict(implementation=op_path(my_operation, 
module_path=__name__))
     )
@@ -72,8 +73,8 @@ def test_node_operation_task_execution(ctx, executor):
     def basic_workflow(graph, **_):
         graph.add_tasks(
             api.task.OperationTask.for_node(
-                interface_name='aria.interfaces.lifecycle',
-                operation_name='create',
+                interface_name=interface_name,
+                operation_name=operation_name,
                 node=node,
                 inputs=inputs
             )
@@ -81,17 +82,27 @@ def test_node_operation_task_execution(ctx, executor):
 
     execute(workflow_func=basic_workflow, workflow_context=ctx, 
executor=executor)
 
-    operation_context = global_test_holder[op_name(node, operation_name)]
+    operation_context = 
global_test_holder[api.task.OperationTask.NAME_FORMAT.format(
+        type='node',
+        id=node.id,
+        interface=interface_name,
+        operation=operation_name
+    )]
 
     assert isinstance(operation_context, 
context.operation.NodeOperationContext)
 
     # Task bases assertions
     assert operation_context.task.actor == node
-    assert operation_context.task.name == op_name(node, operation_name)
-    operations = interface.operations.filter_by(name=operation_name)           
                     # pylint: disable=no-member
-    assert operations.count() == 1
-    assert operation_context.task.implementation == 
operations[0].implementation
-    assert operation_context.task.inputs == inputs
+    assert operation_context.task.name == 
api.task.OperationTask.NAME_FORMAT.format(
+        type='node',
+        id=node.id,
+        interface=interface_name,
+        operation=operation_name
+    )
+    operations = interface.operations
+    assert len(operations) == 1
+    assert operation_context.task.implementation == 
operations.values()[0].implementation
+    assert operation_context.task.inputs['putput'].value is True
 
     # Context based attributes (sugaring)
     assert operation_context.node_template == node.node_template
@@ -99,12 +110,14 @@ def test_node_operation_task_execution(ctx, executor):
 
 
 def test_relationship_operation_task_execution(ctx, executor):
-    operation_name = 'aria.interfaces.relationship_lifecycle.post_configure'
-    relationship = ctx.model.relationship.list()[0]
+    interface_name = 'Configure'
+    operation_name = 'post_configure'
 
+    relationship = ctx.model.relationship.list()[0]
     interface = mock.models.create_interface(
         relationship.source_node.service,
-        operation_name=operation_name,
+        interface_name,
+        operation_name,
         operation_kwargs=dict(implementation=op_path(my_operation, 
module_path=__name__)),
     )
 
@@ -117,30 +130,36 @@ def test_relationship_operation_task_execution(ctx, 
executor):
         graph.add_tasks(
             api.task.OperationTask.for_relationship(
                 relationship=relationship,
-                interface_name='aria.interfaces.relationship_lifecycle',
-                operation_name='post_configure',
+                interface_name=interface_name,
+                operation_name=operation_name,
                 inputs=inputs
             )
         )
 
     execute(workflow_func=basic_workflow, workflow_context=ctx, 
executor=executor)
 
-    operation_context = global_test_holder[op_name(relationship,
-                                                   operation_name)]
+    operation_context = 
global_test_holder[api.task.OperationTask.NAME_FORMAT.format(
+        type='relationship',
+        id=relationship.id,
+        interface=interface_name,
+        operation=operation_name
+    )]
 
     assert isinstance(operation_context, 
context.operation.RelationshipOperationContext)
 
     # Task bases assertions
     assert operation_context.task.actor == relationship
-    assert operation_context.task.name.startswith(operation_name)
-    operation = interface.operations.filter_by(name=operation_name)            
                     # pylint: disable=no-member
-    assert operation_context.task.implementation == 
operation.all()[0].implementation
-    assert operation_context.task.inputs == inputs
+    assert interface_name in operation_context.task.name
+    operations = interface.operations
+    assert operation_context.task.implementation == 
operations.values()[0].implementation
+    assert operation_context.task.inputs['putput'].value is True
 
     # Context based attributes (sugaring)
-    dependency_node_template = 
ctx.model.node_template.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
+    dependency_node_template = ctx.model.node_template.get_by_name(
+        mock.models.DEPENDENCY_NODE_TEMPLATE_NAME)
     dependency_node = 
ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
-    dependent_node_template = 
ctx.model.node_template.get_by_name(mock.models.DEPENDENT_NODE_NAME)
+    dependent_node_template = ctx.model.node_template.get_by_name(
+        mock.models.DEPENDENT_NODE_TEMPLATE_NAME)
     dependent_node = 
ctx.model.node.get_by_name(mock.models.DEPENDENT_NODE_NAME)
 
     assert operation_context.target_node_template == dependency_node_template
@@ -158,42 +177,59 @@ def test_invalid_task_operation_id(ctx, executor):
     :param executor:
     :return:
     """
-    operation_name = 'aria.interfaces.lifecycle.create'
+    interface_name = 'Standard'
+    operation_name = 'create'
+
     other_node, node = ctx.model.node.list()
     assert other_node.id == 1
     assert node.id == 2
 
     interface = mock.models.create_interface(
+        node.service,
+        interface_name=interface_name,
         operation_name=operation_name,
         operation_kwargs=dict(implementation=op_path(get_node_id, 
module_path=__name__))
     )
-    node.interfaces = [interface]
+    node.interfaces[interface.name] = interface
     ctx.model.node.update(node)
 
     @workflow
     def basic_workflow(graph, **_):
         graph.add_tasks(
-            api.task.OperationTask.for_node(name=operation_name, node=node)
+            api.task.OperationTask.for_node(node=node,
+                                            interface_name=interface_name,
+                                            operation_name=operation_name)
         )
 
     execute(workflow_func=basic_workflow, workflow_context=ctx, 
executor=executor)
 
-    op_node_id = global_test_holder[op_name(node, operation_name)]
+    op_node_id = global_test_holder[api.task.OperationTask.NAME_FORMAT.format(
+        type='node',
+        id=node.id,
+        interface=interface_name,
+        operation=operation_name
+    )]
     assert op_node_id == node.id
     assert op_node_id != other_node.id
 
 
 def test_plugin_workdir(ctx, executor, tmpdir):
-    op = 'test.op'
-    plugin_name = 'mock_plugin'
+    interface_name = 'Standard'
+    operation_name = 'create'
+
+    plugin = mock.models.create_plugin()
+    plugin.name = 'mock_plugin'
     node = ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
-    node.interfaces = [mock.models.create_interface(
-        op,
+    interface = mock.models.create_interface(
+        node.service,
+        interface_name,
+        operation_name,
         operation_kwargs=dict(
             implementation='{0}.{1}'.format(__name__, 
_test_plugin_workdir.__name__),
-            plugin=plugin_name)
-    )]
-    node.plugins = [{'name': plugin_name}]
+            plugin=plugin)
+    )
+    node.interfaces[interface.name] = interface
+    node.plugins = [plugin]
     ctx.model.node.update(node)
 
     filename = 'test_file'
@@ -202,12 +238,15 @@ def test_plugin_workdir(ctx, executor, tmpdir):
 
     @workflow
     def basic_workflow(graph, **_):
-        graph.add_tasks(api.task.OperationTask.for_node(
-            name=op, node=node, inputs=inputs))
+        graph.add_tasks(api.task.OperationTask.for_node(node=node,
+                                                        
interface_name=interface_name,
+                                                        
operation_name=operation_name,
+                                                        inputs=inputs)
+        )
 
     execute(workflow_func=basic_workflow, workflow_context=ctx, 
executor=executor)
-    expected_file = tmpdir.join('workdir', 'plugins', 
str(ctx.service_instance.id),
-                                plugin_name,
+    expected_file = tmpdir.join('workdir', 'plugins', str(ctx.service.id),
+                                plugin.name,
                                 filename)
     assert expected_file.read() == content
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/context/test_resource_render.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/context/test_resource_render.py 
b/tests/orchestrator/context/test_resource_render.py
index b924909..696e9b3 100644
--- a/tests/orchestrator/context/test_resource_render.py
+++ b/tests/orchestrator/context/test_resource_render.py
@@ -17,7 +17,7 @@ import pytest
 
 from tests import mock, storage
 
-_IMPLICIT_CTX_TEMPLATE = '{{ctx.service_instance.name}}'
+_IMPLICIT_CTX_TEMPLATE = '{{ctx.service.name}}'
 _IMPLICIT_CTX_TEMPLATE_PATH = 'implicit-ctx.template'
 _VARIABLES_TEMPLATE = '{{variable}}'
 _VARIABLES_TEMPLATE_PATH = 'variables.template'

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/context/test_serialize.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/context/test_serialize.py 
b/tests/orchestrator/context/test_serialize.py
index ed6d724..9e5a0b4 100644
--- a/tests/orchestrator/context/test_serialize.py
+++ b/tests/orchestrator/context/test_serialize.py
@@ -42,14 +42,17 @@ def test_serialize_operation_context(context, executor, 
tmpdir):
 
 @workflow
 def _mock_workflow(ctx, graph):
-    node = 
ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
-    plugin_name = 'mock_plugin'
-    node.interfaces = [mock.models.get_interface(
-        'test.op',
-        operation_kwargs=dict(implementation=_operation_mapping(), 
plugin=plugin_name)
-    )]
-    node.plugins = [{'name': plugin_name}]
-    task = api.task.OperationTask.node(instance=node, name='test.op')
+    node = ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
+    plugin = mock.models.create_plugin()
+    interface = mock.models.create_interface(
+        node.service,
+        'test',
+        'op',
+        operation_kwargs=dict(implementation=_operation_mapping(), 
plugin=plugin)
+    )
+    node.interfaces[interface.name] = interface
+    node.plugins = [plugin]
+    task = api.task.OperationTask.for_node(node=node, interface_name='test', 
operation_name='op')
     graph.add_tasks(task)
     return graph
 
@@ -61,12 +64,12 @@ def _mock_operation(ctx):
     # a correct ctx.task.operation_mapping tells us we kept the correct task_id
     assert ctx.task.implementation == _operation_mapping()
     # a correct ctx.node.name tells us we kept the correct actor_id
-    assert ctx.node.name == mock.models.DEPENDENCY_NODE_INSTANCE_NAME
+    assert ctx.node.name == mock.models.DEPENDENCY_NODE_NAME
     # a correct ctx.name tells us we kept the correct name
     assert ctx.name is not None
     assert ctx.name == ctx.task.name
     # a correct ctx.deployment.name tells us we kept the correct deployment_id
-    assert ctx.service_instance.name == mock.models.SERVICE_NAME
+    assert ctx.service.name == mock.models.SERVICE_NAME
     # Here we test that the resource storage was properly re-created
     test_file_content = ctx.resource.blueprint.read(TEST_FILE_ENTRY_ID, 
TEST_FILE_NAME)
     assert test_file_content == TEST_FILE_CONTENT

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/context/test_toolbelt.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/context/test_toolbelt.py 
b/tests/orchestrator/context/test_toolbelt.py
index 28bd3d3..f04fd4b 100644
--- a/tests/orchestrator/context/test_toolbelt.py
+++ b/tests/orchestrator/context/test_toolbelt.py
@@ -24,7 +24,6 @@ from aria.orchestrator.context.toolbelt import 
RelationshipToolBelt
 from tests import mock, storage
 from . import (
     op_path,
-    op_name,
     execute,
 )
 
@@ -49,22 +48,22 @@ def executor():
 
 def _get_elements(workflow_context):
     dependency_node_template = 
workflow_context.model.node_template.get_by_name(
-        mock.models.DEPENDENCY_NODE_NAME)
+        mock.models.DEPENDENCY_NODE_TEMPLATE_NAME)
     dependency_node_template.host = dependency_node_template
     workflow_context.model.node.update(dependency_node_template)
 
     dependency_node = workflow_context.model.node.get_by_name(
-        mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
+        mock.models.DEPENDENCY_NODE_NAME)
     dependency_node.host_fk = dependency_node.id
     workflow_context.model.node.update(dependency_node)
 
     dependent_node_template = workflow_context.model.node_template.get_by_name(
-        mock.models.DEPENDENT_NODE_NAME)
+        mock.models.DEPENDENT_NODE_TEMPLATE_NAME)
     dependent_node_template.host = dependency_node_template
     workflow_context.model.node_template.update(dependent_node_template)
 
     dependent_node = workflow_context.model.node.get_by_name(
-        mock.models.DEPENDENT_NODE_INSTANCE_NAME)
+        mock.models.DEPENDENT_NODE_NAME)
     dependent_node.host = dependent_node
     workflow_context.model.node.update(dependent_node)
 
@@ -74,21 +73,26 @@ def _get_elements(workflow_context):
 
 
 def test_host_ip(workflow_context, executor):
-    operation_name = 'aria.interfaces.lifecycle.create'
+    interface_name = 'Standard'
+    operation_name = 'create'
     _, dependency_node, _, _, _ = _get_elements(workflow_context)
-    dependency_node.interfaces = [mock.models.get_interface(
-        operation_name,
+    interface = mock.models.create_interface(
+        dependency_node.service,
+        interface_name=interface_name,
+        operation_name=operation_name,
         operation_kwargs=dict(implementation=op_path(host_ip, 
module_path=__name__))
-    )]
+    )
+    dependency_node.interfaces[interface.name] = interface
     workflow_context.model.node.update(dependency_node)
     inputs = {'putput': True}
 
     @workflow
     def basic_workflow(graph, **_):
         graph.add_tasks(
-            api.task.OperationTask.node(
-                instance=dependency_node,
-                name=operation_name,
+            api.task.OperationTask.for_node(
+                node=dependency_node,
+                interface_name=interface_name,
+                operation_name=operation_name,
                 inputs=inputs
             )
         )
@@ -99,15 +103,16 @@ def test_host_ip(workflow_context, executor):
 
 
 def test_relationship_tool_belt(workflow_context, executor):
-    operation_name = 'aria.interfaces.relationship_lifecycle.post_configure'
+    interface_name = 'Configure'
+    operation_name = 'post_configure'
     _, _, _, _, relationship = _get_elements(workflow_context)
-    relationship.interfaces = [
-        mock.models.get_interface(
-            operation_name,
-            operation_kwargs=dict(
-                implementation=op_path(relationship_operation, 
module_path=__name__)),
-            edge='source')
-    ]
+    interface = mock.models.create_interface(
+        relationship.source_node.service,
+        interface_name=interface_name,
+        operation_name=operation_name,
+        operation_kwargs=dict(implementation=op_path(relationship_operation, 
module_path=__name__))
+    )
+    relationship.interfaces[interface.name] = interface
     workflow_context.model.relationship.update(relationship)
 
     inputs = {'putput': True}
@@ -115,18 +120,22 @@ def test_relationship_tool_belt(workflow_context, 
executor):
     @workflow
     def basic_workflow(graph, **_):
         graph.add_tasks(
-            api.task.OperationTask.relationship(
-                instance=relationship,
-                name=operation_name,
-                edge='source',
+            api.task.OperationTask.for_relationship(
+                relationship=relationship,
+                interface_name=interface_name,
+                operation_name=operation_name,
                 inputs=inputs
             )
         )
 
     execute(workflow_func=basic_workflow, workflow_context=workflow_context, 
executor=executor)
 
-    assert isinstance(global_test_holder.get(op_name(relationship, 
operation_name)),
-                      RelationshipToolBelt)
+    assert 
isinstance(global_test_holder.get(api.task.OperationTask.NAME_FORMAT.format(
+        type='relationship',
+        id=relationship.id,
+        interface=interface_name,
+        operation=operation_name
+    )), RelationshipToolBelt)
 
 
 def test_wrong_model_toolbelt():

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/context/test_workflow.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/context/test_workflow.py 
b/tests/orchestrator/context/test_workflow.py
index 049b787..fa1f387 100644
--- a/tests/orchestrator/context/test_workflow.py
+++ b/tests/orchestrator/context/test_workflow.py
@@ -29,7 +29,7 @@ class TestWorkflowContext(object):
     def test_execution_creation_on_workflow_context_creation(self, storage):
         ctx = self._create_ctx(storage)
         execution = storage.execution.get(ctx.execution.id)             # 
pylint: disable=no-member
-        assert execution.service_instance == 
storage.service_instance.get_by_name(
+        assert execution.service == storage.service.get_by_name(
             models.SERVICE_NAME)
         assert execution.workflow_name == models.WORKFLOW_NAME
         assert execution.service_template == 
storage.service_template.get_by_name(
@@ -53,7 +53,7 @@ class TestWorkflowContext(object):
             name='simple_context',
             model_storage=storage,
             resource_storage=None,
-            
service_instance_id=storage.service_instance.get_by_name(models.SERVICE_NAME).id,
+            service_id=storage.service.get_by_name(models.SERVICE_NAME).id,
             workflow_name=models.WORKFLOW_NAME,
             task_max_attempts=models.TASK_MAX_ATTEMPTS,
             task_retry_interval=models.TASK_RETRY_INTERVAL
@@ -64,8 +64,8 @@ class TestWorkflowContext(object):
 def storage():
     workflow_storage = application_model_storage(
         sql_mapi.SQLAlchemyModelAPI, 
initiator=test_storage.init_inmemory_model_storage)
-    workflow_storage.service_template.put(models.get_service_template())
-    blueprint = 
workflow_storage.service_template.get_by_name(models.SERVICE_TEMPLATE_NAME)
-    workflow_storage.service_instance.put(models.get_service(blueprint))
+    workflow_storage.service_template.put(models.create_service_template())
+    service_template = 
workflow_storage.service_template.get_by_name(models.SERVICE_TEMPLATE_NAME)
+    workflow_storage.service.put(models.create_service(service_template))
     yield workflow_storage
     test_storage.release_sqlite_storage(workflow_storage)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/workflows/api/test_task.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/workflows/api/test_task.py 
b/tests/orchestrator/workflows/api/test_task.py
index a9b6a7a..4f5671b 100644
--- a/tests/orchestrator/workflows/api/test_task.py
+++ b/tests/orchestrator/workflows/api/test_task.py
@@ -19,6 +19,7 @@ import pytest
 from aria.orchestrator import context
 from aria.orchestrator.workflows import api
 from aria.modeling import models
+
 from tests import mock, storage
 
 
@@ -30,7 +31,7 @@ def ctx(tmpdir):
     :return:
     """
     simple_context = mock.context.simple(str(tmpdir), inmemory=False)
-    
simple_context.model.execution.put(mock.models.get_execution(simple_context.service_instance))
+    
simple_context.model.execution.put(mock.models.create_execution(simple_context.service))
     yield simple_context
     storage.release_sqlite_storage(simple_context.model)
 
@@ -38,18 +39,23 @@ def ctx(tmpdir):
 class TestOperationTask(object):
 
     def test_node_operation_task_creation(self, ctx):
-        operation_name = 'aria.interfaces.lifecycle.create'
-        interface = mock.models.get_interface(
+        interface_name = 'test_interface'
+        operation_name = 'create'
+
+        plugin = mock.models.create_plugin('package', '0.1')
+        plugin.name = 'test_plugin'
+
+        interface = mock.models.create_interface(
+            ctx.service,
+            interface_name,
             operation_name,
-            operation_kwargs=dict(plugin='plugin', implementation='op_path'))
-
-        node = 
ctx.model.node.get_by_name(mock.models.DEPENDENT_NODE_INSTANCE_NAME)
-        node.interfaces = [interface]
-        node.plugins = [{'name': 'plugin',
-                         'package_name': 'package',
-                         'package_version': '0.1'}]
-        ctx.model.node_template.update(node)
-        inputs = {'name': True}
+            operation_kwargs=dict(plugin=plugin, implementation='op_path'))
+
+        node = ctx.model.node.get_by_name(mock.models.DEPENDENT_NODE_NAME)
+        node.interfaces = {interface.name: interface}
+        node.plugins = [plugin]
+        ctx.model.node.update(node)
+        inputs = {'test_input': True}
         max_attempts = 10
         retry_interval = 10
         ignore_failure = True
@@ -57,113 +63,132 @@ class TestOperationTask(object):
         with context.workflow.current.push(ctx):
             api_task = api.task.OperationTask.for_node(
                 node=node,
-                name=operation_name,
+                interface_name=interface_name,
+                operation_name=operation_name,
                 inputs=inputs,
                 max_attempts=max_attempts,
                 retry_interval=retry_interval,
                 ignore_failure=ignore_failure)
 
-        assert api_task.name == '{0}.{1}'.format(operation_name, node.id)
+        assert api_task.name == api.task.OperationTask.NAME_FORMAT.format(
+            type='node',
+            id=node.id,
+            interface=interface_name,
+            operation=operation_name
+        )
         assert api_task.implementation == 'op_path'
         assert api_task.actor == node
-        assert api_task.inputs == inputs
+        assert api_task.inputs['test_input'].value is True
         assert api_task.retry_interval == retry_interval
         assert api_task.max_attempts == max_attempts
         assert api_task.ignore_failure == ignore_failure
-        assert api_task.plugin == {'name': 'plugin',
-                                   'package_name': 'package',
-                                   'package_version': '0.1'}
+        assert api_task.plugin.name == 'test_plugin'
         assert api_task.runs_on == models.Task.RUNS_ON_NODE
 
     def test_source_relationship_operation_task_creation(self, ctx):
-        operation_name = 'aria.interfaces.relationship_lifecycle.preconfigure'
+        interface_name = 'test_interface'
+        operation_name = 'preconfigure'
+
+        plugin = mock.models.create_plugin('package', '0.1')
+        plugin.name = 'test_plugin'
 
-        interface = mock.models.get_interface(
+        interface = mock.models.create_interface(
+            ctx.service,
+            interface_name,
             operation_name,
-            operation_kwargs=dict(implementation='op_path', plugin='plugin'),
-            edge='source'
+            operation_kwargs=dict(plugin=plugin, implementation='op_path')
         )
 
         relationship = ctx.model.relationship.list()[0]
-        relationship.interfaces = [interface]
-        relationship.source_node.plugins = [{'name': 'plugin',
-                                             'package_name': 'package',
-                                             'package_version': '0.1'}]
-        inputs = {'name': True}
+        relationship.interfaces[interface.name] = interface
+        relationship.source_node.plugins = [plugin]
+        inputs = {'test_input': True}
         max_attempts = 10
         retry_interval = 10
 
         with context.workflow.current.push(ctx):
             api_task = api.task.OperationTask.for_relationship(
                 relationship=relationship,
-                name=operation_name,
-                edge='source',
+                interface_name=interface_name,
+                operation_name=operation_name,
                 inputs=inputs,
                 max_attempts=max_attempts,
                 retry_interval=retry_interval)
 
-        assert api_task.name == '{0}.{1}'.format(operation_name, 
relationship.id)
+        assert api_task.name == api.task.OperationTask.NAME_FORMAT.format(
+            type='relationship',
+            id=relationship.id,
+            interface=interface_name,
+            operation=operation_name
+        )
         assert api_task.implementation == 'op_path'
         assert api_task.actor == relationship
-        assert api_task.inputs == inputs
+        assert api_task.inputs['test_input'].value is True
         assert api_task.retry_interval == retry_interval
         assert api_task.max_attempts == max_attempts
-        assert api_task.plugin == {'name': 'plugin',
-                                   'package_name': 'package',
-                                   'package_version': '0.1'}
+        assert api_task.plugin.name == 'test_plugin'
         assert api_task.runs_on == models.Task.RUNS_ON_SOURCE
 
     def test_target_relationship_operation_task_creation(self, ctx):
-        operation_name = 'aria.interfaces.relationship_lifecycle.preconfigure'
-        interface = mock.models.get_interface(
+        interface_name = 'test_interface'
+        operation_name = 'preconfigure'
+
+        plugin = mock.models.create_plugin('package', '0.1')
+        plugin.name = 'test_plugin'
+
+        interface = mock.models.create_interface(
+            ctx.service,
+            interface_name,
             operation_name,
-            operation_kwargs=dict(implementation='op_path', plugin='plugin'),
-            edge='target'
+            operation_kwargs=dict(plugin=plugin, implementation='op_path')
         )
 
         relationship = ctx.model.relationship.list()[0]
-        relationship.interfaces = [interface]
-        relationship.target_node.plugins = [{'name': 'plugin',
-                                             'package_name': 'package',
-                                             'package_version': '0.1'}]
-        inputs = {'name': True}
+        relationship.interfaces[interface.name] = interface
+        relationship.target_node.plugins = [plugin]
+        inputs = {'test_input': True}
         max_attempts = 10
         retry_interval = 10
 
         with context.workflow.current.push(ctx):
             api_task = api.task.OperationTask.for_relationship(
                 relationship=relationship,
-                name=operation_name,
-                edge='target',
+                interface_name=interface_name,
+                operation_name=operation_name,
                 inputs=inputs,
                 max_attempts=max_attempts,
-                retry_interval=retry_interval)
+                retry_interval=retry_interval,
+                runs_on=models.Task.RUNS_ON_TARGET)
 
-        assert api_task.name == '{0}.{1}'.format(operation_name, 
relationship.id)
+        assert api_task.name == api.task.OperationTask.NAME_FORMAT.format(
+            type='relationship',
+            id=relationship.id,
+            interface=interface_name,
+            operation=operation_name
+        )
         assert api_task.implementation == 'op_path'
         assert api_task.actor == relationship
-        assert api_task.inputs == inputs
+        assert api_task.inputs['test_input'].value is True
         assert api_task.retry_interval == retry_interval
         assert api_task.max_attempts == max_attempts
-        assert api_task.plugin == {'name': 'plugin',
-                                   'package_name': 'package',
-                                   'package_version': '0.1'}
+        assert api_task.plugin.name == 'test_plugin'
         assert api_task.runs_on == models.Task.RUNS_ON_TARGET
 
     def test_operation_task_default_values(self, ctx):
-        dependency_node_instance = ctx.model.node.get_by_name(
-            mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
+        dependency_node = ctx.model.node.get_by_name(
+            mock.models.DEPENDENCY_NODE_NAME)
+
         with context.workflow.current.push(ctx):
             task = api.task.OperationTask(
                 name='stub',
                 implementation='',
-                actor=dependency_node_instance)
+                actor=dependency_node)
 
         assert task.inputs == {}
         assert task.retry_interval == ctx._task_retry_interval
         assert task.max_attempts == ctx._task_max_attempts
         assert task.ignore_failure == ctx._task_ignore_failure
-        assert task.plugin == {}
+        assert task.plugin is None
         assert task.runs_on is None
 
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/workflows/builtin/test_execute_operation.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/workflows/builtin/test_execute_operation.py 
b/tests/orchestrator/workflows/builtin/test_execute_operation.py
index cc9a8a8..0e5a506 100644
--- a/tests/orchestrator/workflows/builtin/test_execute_operation.py
+++ b/tests/orchestrator/workflows/builtin/test_execute_operation.py
@@ -18,28 +18,33 @@ import pytest
 from aria.orchestrator.workflows.api import task
 from aria.orchestrator.workflows.builtin.execute_operation import 
execute_operation
 
-from tests import mock
-from tests import storage
+from tests import mock, storage
 
 
 @pytest.fixture
 def ctx(tmpdir):
-    context = mock.context.simple(str(tmpdir))
+    context = mock.context.simple(str(tmpdir), inmemory=False)
     yield context
     storage.release_sqlite_storage(context.model)
 
 
 def test_execute_operation(ctx):
-    node = 
ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
-    node.interfaces = 
[mock.models.get_interface(mock.operations.NODE_OPERATIONS_INSTALL[0])]
+    node = ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
+    interface_name, operation_name = mock.operations.NODE_OPERATIONS_INSTALL[0]
+    interface = mock.models.create_interface(
+        ctx.service,
+        interface_name,
+        operation_name
+    )
+    node.interfaces[interface.name] = interface
     ctx.model.node.update(node)
-    operation_name = mock.operations.NODE_OPERATIONS_INSTALL[0]
 
     execute_tasks = list(
         task.WorkflowTask(
             execute_operation,
             ctx=ctx,
-            operation=operation_name,
+            interface_name=interface_name,
+            operation_name=operation_name,
             operation_kwargs={},
             allow_kwargs_override=False,
             run_by_dependency_order=False,
@@ -50,8 +55,12 @@ def test_execute_operation(ctx):
     )
 
     assert len(execute_tasks) == 1
-    assert execute_tasks[0].name == '{0}.{1}'.format(operation_name, node.id)
-
+    assert execute_tasks[0].name == task.OperationTask.NAME_FORMAT.format(
+        type='node',
+        id=node.id,
+        interface=interface_name,
+        operation=operation_name
+    )
 
 
 # TODO: add more scenarios

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/workflows/core/test_engine.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/workflows/core/test_engine.py 
b/tests/orchestrator/workflows/core/test_engine.py
index 8c5511a..6f97952 100644
--- a/tests/orchestrator/workflows/core/test_engine.py
+++ b/tests/orchestrator/workflows/core/test_engine.py
@@ -60,15 +60,19 @@ class BaseTest(object):
             max_attempts=None,
             retry_interval=None,
             ignore_failure=None):
-        node = 
ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
-        node.interfaces = [mock.models.get_interface(
-            'aria.interfaces.lifecycle.create',
+        node = ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
+        interface = mock.models.create_interface(
+            node.service,
+            'aria.interfaces.lifecycle',
+            'create',
             
operation_kwargs=dict(implementation='{name}.{func.__name__}'.format(name=__name__,
                                                                                
  func=func))
-        )]
+        )
+        node.interfaces[interface.name] = interface
         return api.task.OperationTask.for_node(
             node=node,
-            name='aria.interfaces.lifecycle.create',
+            interface_name='aria.interfaces.lifecycle',
+            operation_name='create',
             inputs=inputs,
             max_attempts=max_attempts,
             retry_interval=retry_interval,

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/workflows/core/test_task.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/workflows/core/test_task.py 
b/tests/orchestrator/workflows/core/test_task.py
index 26564c5..d03597d 100644
--- a/tests/orchestrator/workflows/core/test_task.py
+++ b/tests/orchestrator/workflows/core/test_task.py
@@ -19,6 +19,7 @@ from datetime import (
 
 import pytest
 
+from aria.modeling import models
 from aria.orchestrator.context import workflow as workflow_context
 from aria.orchestrator.workflows import (
     api,
@@ -28,8 +29,10 @@ from aria.orchestrator.workflows import (
 
 from tests import mock, storage
 
-OP_NAME = 'tosca.interfaces.node.lifecycle.Standard.create'
-RELATIONSHIP_OP_NAME = 'tosca.interfaces.relationship.Configure.pre_configure'
+NODE_INTERFACE_NAME = 'Standard'
+NODE_OPERATION_NAME = 'create'
+RELATIONSHIP_INTERFACE_NAME = 'Configure'
+RELATIONSHIP_OPERATION_NAME = 'pre_configure'
 
 
 @pytest.fixture
@@ -37,15 +40,22 @@ def ctx(tmpdir):
     context = mock.context.simple(str(tmpdir))
 
     relationship = context.model.relationship.list()[0]
-    relationship.interfaces = [
-        mock.models.get_interface(RELATIONSHIP_OP_NAME, edge='source'),
-        mock.models.get_interface(RELATIONSHIP_OP_NAME, edge='target')
-    ]
+    interface = mock.models.create_interface(
+        relationship.source_node.service,
+        RELATIONSHIP_INTERFACE_NAME,
+        RELATIONSHIP_OPERATION_NAME
+    )
+    relationship.interfaces[interface.name] = interface
     context.model.relationship.update(relationship)
 
-    dependent_node = 
context.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
-    dependent_node.interfaces = [mock.models.get_interface(OP_NAME)]
-    context.model.node.update(dependent_node)
+    node = context.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
+    interface = mock.models.create_interface(
+        node.service,
+        NODE_INTERFACE_NAME,
+        NODE_OPERATION_NAME
+    )
+    node.interfaces[interface.name] = interface
+    context.model.node.update(node)
 
     yield context
     storage.release_sqlite_storage(context.model)
@@ -55,39 +65,43 @@ class TestOperationTask(object):
 
     def _create_node_operation_task(self, ctx, node):
         with workflow_context.current.push(ctx):
-            api_task = api.task.OperationTask.node(
-                instance=node,
-                name='tosca.interfaces.node.lifecycle.Standard.create')
+            api_task = api.task.OperationTask.for_node(
+                node=node,
+                interface_name=NODE_INTERFACE_NAME,
+                operation_name=NODE_OPERATION_NAME)
             core_task = core.task.OperationTask(api_task=api_task)
         return api_task, core_task
 
-    def _create_relationship_operation_task(self, ctx, relationship, 
operation_name, edge):
+    def _create_relationship_operation_task(self, ctx, relationship, runs_on):
         with workflow_context.current.push(ctx):
-            api_task = api.task.OperationTask.relationship(
-                instance=relationship, name=operation_name, edge=edge)
+            api_task = api.task.OperationTask.for_relationship(
+                relationship=relationship,
+                interface_name=RELATIONSHIP_INTERFACE_NAME,
+                operation_name=RELATIONSHIP_OPERATION_NAME,
+                runs_on=runs_on)
             core_task = core.task.OperationTask(api_task=api_task)
         return api_task, core_task
 
     def test_node_operation_task_creation(self, ctx):
-        storage_plugin = mock.models.get_plugin(package_name='p1', 
package_version='0.1')
-        storage_plugin_other = mock.models.get_plugin(package_name='p0', 
package_version='0.0')
+        storage_plugin = mock.models.create_plugin(package_name='p1', 
package_version='0.1')
+        storage_plugin_other = mock.models.create_plugin(package_name='p0', 
package_version='0.0')
         ctx.model.plugin.put(storage_plugin_other)
         ctx.model.plugin.put(storage_plugin)
-        node = 
ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
+        node = ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
         node_template = node.node_template
-        plugin_name = 'plugin1'
-        node_template.plugins = [{'name': 'plugin1',
-                                  'package_name': 'p1',
-                                  'package_version': '0.1'}]
-        node.interfaces = [mock.models.get_interface(
-            'tosca.interfaces.node.lifecycle.Standard.create',
-            operation_kwargs=dict(plugin='plugin1')
-        )]
+        node_template.plugins = [storage_plugin]
+        interface = mock.models.create_interface(
+            node.service,
+            NODE_INTERFACE_NAME,
+            NODE_OPERATION_NAME,
+            operation_kwargs=dict(plugin=storage_plugin)
+        )
+        node.interfaces[interface.name] = interface
         ctx.model.node_template.update(node_template)
         ctx.model.node.update(node)
         api_task, core_task = self._create_node_operation_task(ctx, node)
         storage_task = ctx.model.task.get_by_name(core_task.name)
-        assert storage_task.plugin_name == plugin_name
+        assert storage_task.plugin is storage_plugin
         assert storage_task.execution_name == ctx.execution.name
         assert storage_task.runs_on == core_task.context.node
         assert core_task.model_task == storage_task
@@ -101,17 +115,17 @@ class TestOperationTask(object):
         relationship = ctx.model.relationship.list()[0]
         ctx.model.relationship.update(relationship)
         _, core_task = self._create_relationship_operation_task(
-            ctx, relationship, RELATIONSHIP_OP_NAME, 'source')
+            ctx, relationship, models.Task.RUNS_ON_SOURCE)
         assert core_task.model_task.runs_on == relationship.source_node
 
     def test_target_relationship_operation_task_creation(self, ctx):
         relationship = ctx.model.relationship.list()[0]
         _, core_task = self._create_relationship_operation_task(
-            ctx, relationship, RELATIONSHIP_OP_NAME, 'target')
+            ctx, relationship, models.Task.RUNS_ON_TARGET)
         assert core_task.model_task.runs_on == relationship.target_node
 
     def test_operation_task_edit_locked_attribute(self, ctx):
-        node = 
ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
+        node = ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
 
         _, core_task = self._create_node_operation_task(ctx, node)
         now = datetime.utcnow()
@@ -127,7 +141,7 @@ class TestOperationTask(object):
             core_task.due_at = now
 
     def test_operation_task_edit_attributes(self, ctx):
-        node = 
ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
+        node = ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
 
         _, core_task = self._create_node_operation_task(ctx, node)
         future_time = datetime.utcnow() + timedelta(seconds=3)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/workflows/core/test_task_graph_into_exececution_graph.py
----------------------------------------------------------------------
diff --git 
a/tests/orchestrator/workflows/core/test_task_graph_into_exececution_graph.py 
b/tests/orchestrator/workflows/core/test_task_graph_into_exececution_graph.py
index 167004e..0a95d43 100644
--- 
a/tests/orchestrator/workflows/core/test_task_graph_into_exececution_graph.py
+++ 
b/tests/orchestrator/workflows/core/test_task_graph_into_exececution_graph.py
@@ -23,10 +23,16 @@ from tests import storage
 
 
 def test_task_graph_into_execution_graph(tmpdir):
-    operation_name = 'tosca.interfaces.node.lifecycle.Standard.create'
+    interface_name = 'Standard'
+    operation_name = 'create'
     task_context = mock.context.simple(str(tmpdir))
-    node = 
task_context.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
-    node.interfaces = [mock.models.get_interface(operation_name)]
+    node = 
task_context.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
+    interface = mock.models.create_interface(
+        node.service,
+        interface_name,
+        operation_name
+    )
+    node.interfaces[interface.name] = interface
     task_context.model.node.update(node)
 
     def sub_workflow(name, **_):
@@ -34,14 +40,17 @@ def test_task_graph_into_execution_graph(tmpdir):
 
     with context.workflow.current.push(task_context):
         test_task_graph = api.task.WorkflowTask(sub_workflow, 
name='test_task_graph')
-        simple_before_task = api.task.OperationTask.node(instance=node,
-                                                         name=operation_name)
-        simple_after_task = api.task.OperationTask.node(instance=node,
-                                                        name=operation_name)
+        simple_before_task = api.task.OperationTask.for_node(node=node,
+                                                             
interface_name=interface_name,
+                                                             
operation_name=operation_name)
+        simple_after_task = api.task.OperationTask.for_node(node=node,
+                                                            
interface_name=interface_name,
+                                                            
operation_name=operation_name)
 
         inner_task_graph = api.task.WorkflowTask(sub_workflow, 
name='test_inner_task_graph')
-        inner_task = api.task.OperationTask.node(instance=node,
-                                                 name=operation_name)
+        inner_task = api.task.OperationTask.for_node(node=node,
+                                                     
interface_name=interface_name,
+                                                     
operation_name=operation_name)
         inner_task_graph.add_tasks(inner_task)
 
     test_task_graph.add_tasks(simple_before_task)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/workflows/executor/test_executor.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/workflows/executor/test_executor.py 
b/tests/orchestrator/workflows/executor/test_executor.py
index 2421fa9..0e96ba3 100644
--- a/tests/orchestrator/workflows/executor/test_executor.py
+++ b/tests/orchestrator/workflows/executor/test_executor.py
@@ -43,7 +43,9 @@ def test_execute(executor):
     expected_value = 'value'
     successful_task = MockTask(mock_successful_task)
     failing_task = MockTask(mock_failing_task)
-    task_with_inputs = MockTask(mock_task_with_input, 
inputs=dict(input='value'))
+    #task_with_inputs = MockTask(mock_task_with_input, 
inputs=dict(input='value'))
+    task_with_inputs = MockTask(mock_task_with_input, inputs={'input': 
models.Parameter(
+        name='input', type_name='string', value='value')})
 
     for task in [successful_task, failing_task, task_with_inputs]:
         executor.execute(task)
@@ -105,7 +107,8 @@ class MockTask(object):
         self.exception = None
         self.id = str(uuid.uuid4())
         name = func.__name__
-        implementation = 
'tests.orchestrator.workflows.executor.test_executor.{name}'.format(
+        implementation = '{module}.{name}'.format(
+            module=__name__,
             name=name)
         self.implementation = implementation
         self.logger = logging.getLogger()
@@ -151,6 +154,7 @@ def register_signals():
     def failure_handler(task, exception, *args, **kwargs):
         task.states.append('failure')
         task.exception = exception
+
     events.start_task_signal.connect(start_handler)
     events.on_success_task_signal.connect(success_handler)
     events.on_failure_task_signal.connect(failure_handler)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/workflows/executor/test_process_executor_extension.py
----------------------------------------------------------------------
diff --git 
a/tests/orchestrator/workflows/executor/test_process_executor_extension.py 
b/tests/orchestrator/workflows/executor/test_process_executor_extension.py
index ac95554..0988fae 100644
--- a/tests/orchestrator/workflows/executor/test_process_executor_extension.py
+++ b/tests/orchestrator/workflows/executor/test_process_executor_extension.py
@@ -29,25 +29,32 @@ from tests import storage
 def test_decorate_extension(context, executor):
     inputs = {'input1': 1, 'input2': 2}
 
-    def get_node_instance(ctx):
-        return 
ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
+    def get_node(ctx):
+        return ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
 
     @workflow
     def mock_workflow(ctx, graph):
-        node_instance = get_node_instance(ctx)
-        op = 'test.op'
-        node_instance.interfaces = [mock.models.get_interface(
-            op,
+        node = get_node(ctx)
+        interface_name = 'test_interface'
+        operation_name = 'operation'
+        interface = mock.models.create_interface(
+            ctx.service,
+            interface_name,
+            operation_name,
             operation_kwargs=dict(implementation='{0}.{1}'.format(__name__,
                                                                   
_mock_operation.__name__))
-        )]
-        task = api.task.OperationTask.node(instance=node_instance, name=op, 
inputs=inputs)
+        )
+        node.interfaces[interface.name] = interface
+        task = api.task.OperationTask.for_node(node=node,
+                                               interface_name=interface_name,
+                                               operation_name=operation_name,
+                                               inputs=inputs)
         graph.add_tasks(task)
         return graph
     graph = mock_workflow(ctx=context)  # pylint: 
disable=no-value-for-parameter
     eng = engine.Engine(executor=executor, workflow_context=context, 
tasks_graph=graph)
     eng.execute()
-    out = get_node_instance(context).runtime_properties['out']
+    out = get_node(context).runtime_properties['out']
     assert out['wrapper_inputs'] == inputs
     assert out['function_inputs'] == inputs
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/dd99f0fb/tests/orchestrator/workflows/executor/test_process_executor_tracked_changes.py
----------------------------------------------------------------------
diff --git 
a/tests/orchestrator/workflows/executor/test_process_executor_tracked_changes.py
 
b/tests/orchestrator/workflows/executor/test_process_executor_tracked_changes.py
index d3b3300..d84a153 100644
--- 
a/tests/orchestrator/workflows/executor/test_process_executor_tracked_changes.py
+++ 
b/tests/orchestrator/workflows/executor/test_process_executor_tracked_changes.py
@@ -45,7 +45,7 @@ def test_track_changes_of_failed_operation(context, executor):
 
 
 def _assert_tracked_changes_are_applied(context):
-    instance = 
context.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
+    instance = context.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
     assert instance.runtime_properties == _TEST_RUNTIME_PROPERTIES
 
 
@@ -67,7 +67,7 @@ def test_apply_tracked_changes_during_an_operation(context, 
executor):
     }
 
     expected_initial = context.model.node.get_by_name(
-        mock.models.DEPENDENCY_NODE_INSTANCE_NAME).runtime_properties
+        mock.models.DEPENDENCY_NODE_NAME).runtime_properties
 
     out = _run_workflow(context=context, executor=executor, 
op_func=_mock_updating_operation,
                         inputs=inputs)
@@ -87,19 +87,27 @@ def test_apply_tracked_changes_during_an_operation(context, 
executor):
 def _run_workflow(context, executor, op_func, inputs=None):
     @workflow
     def mock_workflow(ctx, graph):
-        node = 
ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_INSTANCE_NAME)
-        node.interfaces = [mock.models.get_interface(
-            'test.op', 
operation_kwargs=dict(implementation=_operation_mapping(op_func)))]
-        task = api.task.OperationTask.node(instance=node,
-                                           name='test.op',
-                                           inputs=inputs or {})
+        node = ctx.model.node.get_by_name(mock.models.DEPENDENCY_NODE_NAME)
+        interface_name = 'test_interface'
+        operation_name = 'operation'
+        interface = mock.models.create_interface(
+            ctx.service,
+            interface_name,
+            operation_name,
+            operation_kwargs=dict(implementation=_operation_mapping(op_func))
+        )
+        node.interfaces[interface.name] = interface
+        task = api.task.OperationTask.for_node(node=node,
+                                               interface_name=interface_name,
+                                               operation_name=operation_name,
+                                               inputs=inputs or {})
         graph.add_tasks(task)
         return graph
     graph = mock_workflow(ctx=context)  # pylint: 
disable=no-value-for-parameter
     eng = engine.Engine(executor=executor, workflow_context=context, 
tasks_graph=graph)
     eng.execute()
     return context.model.node.get_by_name(
-        
mock.models.DEPENDENCY_NODE_INSTANCE_NAME).runtime_properties.get('out')
+        mock.models.DEPENDENCY_NODE_NAME).runtime_properties.get('out')
 
 
 @operation

Reply via email to