You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ariatosca.apache.org by ra...@apache.org on 2017/04/15 15:22:32 UTC
incubator-ariatosca git commit: integrated operation configuration
into service instantiation process; fixed plugin resolve method storage usage;
fixed a bug in plugin.enabled implementation
Repository: incubator-ariatosca
Updated Branches:
refs/heads/ARIA-48-aria-cli b579d1040 -> 59967548e
integrated operation configuration into service instantiation process; fixed plugin resolve method storage usage; fixed a bug in plugin.enabled implementation
Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/59967548
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/59967548
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/59967548
Branch: refs/heads/ARIA-48-aria-cli
Commit: 59967548e2eab2f9644537fea35d52b7ad563276
Parents: b579d10
Author: Ran Ziv <ra...@gigaspaces.com>
Authored: Sat Apr 15 18:16:31 2017 +0300
Committer: Ran Ziv <ra...@gigaspaces.com>
Committed: Sat Apr 15 18:16:31 2017 +0300
----------------------------------------------------------------------
aria/core.py | 10 +++-
aria/modeling/service_template.py | 49 +++++++++-----------
.../execution_plugin/instantiation.py | 2 +-
aria/parser/consumption/__init__.py | 2 +-
aria/parser/consumption/modeling.py | 3 +-
5 files changed, 36 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/59967548/aria/core.py
----------------------------------------------------------------------
diff --git a/aria/core.py b/aria/core.py
index 3a89a16..365f39c 100644
--- a/aria/core.py
+++ b/aria/core.py
@@ -68,11 +68,19 @@ class Core(object):
# creating an empty ConsumptionContext, initiating a threadlocal context
context = consumption.ConsumptionContext()
+
# setting no autoflush for the duration of instantiation - this helps avoid dependency
# constraints as they're being set up
with self.model_storage._all_api_kwargs['session'].no_autoflush:
- service = service_template.instantiate(None, inputs)
+ service = service_template.instantiate(None, self.model_storage, inputs=inputs)
+ self.model_storage._all_api_kwargs['session'].flush()
+ consumption.ConsumerChain(
+ context,
+ (
+ consumption.FindHosts,
+ consumption.ConfigureOperations
+ )).consume()
if context.validation.dump_issues():
raise exceptions.InstantiationError('Failed to instantiate service template')
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/59967548/aria/modeling/service_template.py
----------------------------------------------------------------------
diff --git a/aria/modeling/service_template.py b/aria/modeling/service_template.py
index c2da22d..9a07b53 100644
--- a/aria/modeling/service_template.py
+++ b/aria/modeling/service_template.py
@@ -280,7 +280,7 @@ class ServiceTemplateBase(TemplateModelMixin):
('interface_types', formatting.as_raw(self.interface_types)),
('artifact_types', formatting.as_raw(self.artifact_types))))
- def instantiate(self, container, inputs=None): # pylint: disable=arguments-differ
+ def instantiate(self, container, model_storage, inputs=None): # pylint: disable=arguments-differ
from . import models
context = ConsumptionContext.get_thread_local()
now = datetime.now()
@@ -295,7 +295,7 @@ class ServiceTemplateBase(TemplateModelMixin):
for plugin_specification in self.plugin_specifications.itervalues():
if plugin_specification.enabled:
- if plugin_specification.resolve():
+ if plugin_specification.resolve(model_storage):
plugin = plugin_specification.plugin
service.plugins[plugin.name] = plugin
else:
@@ -1864,16 +1864,22 @@ class OperationTemplateBase(TemplateModelMixin):
def instantiate(self, container):
from . import models
- if self.plugin_specification and self.plugin_specification.enabled:
- plugin = self.plugin_specification.plugin
- implementation = self.implementation if plugin is not None else None
- # "plugin" would be none if a match was not found. In that case, a validation error
- # should already have been reported in ServiceTemplateBase.instantiate, so we will
- # continue silently here
+ if self.plugin_specification:
+ if self.plugin_specification.enabled:
+ plugin = self.plugin_specification.plugin
+ implementation = self.implementation if plugin is not None else None
+ # "plugin" would be none if a match was not found. In that case, a validation error
+ # should already have been reported in ServiceTemplateBase.instantiate, so we will
+ # continue silently here
+ else:
+ # If the plugin is disabled, the operation should be disabled, too
+ plugin = None
+ implementation = None
else:
- # If the plugin is disabled, the operation should be disabled, too
+ # using the execution plugin
plugin = None
- implementation = None
+ implementation = self.implementation
+
operation = models.Operation(name=self.name,
description=deepcopy_with_locators(self.description),
relationship_edge=self.relationship_edge,
@@ -2119,25 +2125,16 @@ class PluginSpecificationBase(TemplateModelMixin):
def coerce_values(self, container, report_issues):
pass
- def resolve(self):
+ def resolve(self, model_storage):
# TODO: we are planning a separate "instantiation" module where this will be called or
- # moved to. There, we will probably have a context with a storage manager. Until then,
- # this is the only potentially available context, which of course will only be available
- # if we're in a workflow.
- from ..orchestrator import context
- try:
- workflow_context = context.workflow.current.get()
- plugins = workflow_context.model.plugin.list()
- except context.exceptions.ContextException:
- plugins = None
-
+ # moved to.
+ plugins = model_storage.plugin.list()
matching_plugins = []
- if plugins:
- for plugin in plugins:
- # TODO: we need to use a version comparator
- if (plugin.name == self.name) and \
+ for plugin in plugins:
+ # TODO: we need to use a version comparator
+ if (plugin.name == self.name) and \
((self.version is None) or (plugin.package_version >= self.version)):
- matching_plugins.append(plugin)
+ matching_plugins.append(plugin)
self.plugin = None
if matching_plugins:
# Return highest version of plugin
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/59967548/aria/orchestrator/execution_plugin/instantiation.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/execution_plugin/instantiation.py b/aria/orchestrator/execution_plugin/instantiation.py
index 960835c..7627a38 100644
--- a/aria/orchestrator/execution_plugin/instantiation.py
+++ b/aria/orchestrator/execution_plugin/instantiation.py
@@ -27,7 +27,7 @@ def configure_operation(operation):
arguments = OrderedDict()
arguments['script_path'] = operation.implementation
arguments['process'] = _get_process(configuration.pop('process')) \
- if 'process' in configuration else None
+ if 'process' in configuration else dict()
host = None
interface = operation.interface
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/59967548/aria/parser/consumption/__init__.py
----------------------------------------------------------------------
diff --git a/aria/parser/consumption/__init__.py b/aria/parser/consumption/__init__.py
index 7da8490..ff1b376 100644
--- a/aria/parser/consumption/__init__.py
+++ b/aria/parser/consumption/__init__.py
@@ -20,7 +20,7 @@ from .style import Style
from .consumer import Consumer, ConsumerChain
from .presentation import Read
from .validation import Validate
-from .modeling import ServiceTemplate, Types, ServiceInstance
+from .modeling import ServiceTemplate, Types, ServiceInstance, FindHosts, ConfigureOperations
from .inputs import Inputs
__all__ = (
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/59967548/aria/parser/consumption/modeling.py
----------------------------------------------------------------------
diff --git a/aria/parser/consumption/modeling.py b/aria/parser/consumption/modeling.py
index 37787d6..771fd7f 100644
--- a/aria/parser/consumption/modeling.py
+++ b/aria/parser/consumption/modeling.py
@@ -106,7 +106,8 @@ class InstantiateServiceInstance(Consumer):
'template')
return
- self.context.modeling.template.instantiate(None, dict(self.context.modeling.inputs))
+ self.context.modeling.template.instantiate(None, None,
+ inputs=dict(self.context.modeling.inputs))
class CoerceServiceInstanceValues(Consumer):