misc_fixes_for_os_plugin
Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/bc67b6ae Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/bc67b6ae Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/bc67b6ae Branch: refs/heads/misc_fixes_for_os_plugin Commit: bc67b6ae4f6902627a4340a18d5aed75c302f0b1 Parents: e23f5df Author: max-orlov <[email protected]> Authored: Sun Apr 16 23:08:02 2017 +0300 Committer: max-orlov <[email protected]> Committed: Mon Apr 17 18:51:29 2017 +0300 ---------------------------------------------------------------------- aria/core.py | 22 +++++++++------ aria/modeling/service_template.py | 2 +- .../execution_plugin/ssh/operations.py | 8 +++++- aria/orchestrator/plugin.py | 1 + aria/orchestrator/workflows/builtin/utils.py | 28 ++++++++++---------- aria/parser/consumption/__init__.py | 7 +++-- 6 files changed, 42 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/bc67b6ae/aria/core.py ---------------------------------------------------------------------- diff --git a/aria/core.py b/aria/core.py index 365f39c..d0e8ef4 100644 --- a/aria/core.py +++ b/aria/core.py @@ -75,14 +75,20 @@ class Core(object): 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') + + with self.model_storage._all_api_kwargs['session'].no_autoflush: + # TODO: try this one as well + # consumption.ServiceInstance(context).consume() + consumption.ConsumerChain( + context, + ( + consumption.SatisfyRequirements, + consumption.ValidateCapabilities, + consumption.FindHosts, + consumption.ConfigureOperations + )).consume() + if context.validation.dump_issues(): + raise exceptions.InstantiationError('Failed to instantiate service template') # If the user didn't enter a name for this service, we'll want to auto generate it. # But how will we ensure a unique but simple name? We'll append the services' unique id http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/bc67b6ae/aria/modeling/service_template.py ---------------------------------------------------------------------- diff --git a/aria/modeling/service_template.py b/aria/modeling/service_template.py index 9a07b53..14390fb 100644 --- a/aria/modeling/service_template.py +++ b/aria/modeling/service_template.py @@ -1237,7 +1237,7 @@ class RequirementTemplateBase(TemplateModelMixin): # Find first node that matches the type elif self.target_node_type is not None: - for target_node_template in context.modeling.template.node_templates.itervalues(): + for target_node_template in self.node_template.service_template.node_templates.values(): if self.target_node_type.get_descendant(target_node_template.type.name) is None: continue http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/bc67b6ae/aria/orchestrator/execution_plugin/ssh/operations.py ---------------------------------------------------------------------- diff --git a/aria/orchestrator/execution_plugin/ssh/operations.py b/aria/orchestrator/execution_plugin/ssh/operations.py index 7147a30..4ad5bfd 100644 --- a/aria/orchestrator/execution_plugin/ssh/operations.py +++ b/aria/orchestrator/execution_plugin/ssh/operations.py @@ -130,7 +130,9 @@ def _patch_ctx(ctx): def _hide_output(ctx, groups): """ Hides Fabric's output for every 'entity' in `groups` """ - groups = set(groups or []) + # TODO: restore. + # groups = set(groups or groups) + groups = set(['everything']) if not groups.issubset(constants.VALID_FABRIC_GROUPS): ctx.task.abort('`hide_output` must be a subset of {0} (Provided: {1})' .format(', '.join(constants.VALID_FABRIC_GROUPS), ', '.join(groups))) @@ -144,6 +146,10 @@ def _fabric_env(ctx, fabric_env, warn_only): env.update(fabric_env or {}) env.setdefault('warn_only', warn_only) # validations + + # TODO: this a silly fix, we need intrinsic functions for this to work properly + env['host_string'] = ctx.model.node_template.get_by_name('virtual_ip').nodes[0].runtime_properties['floating_ip_address'] + if (not env.get('host_string')) and (ctx.task) and (ctx.task.actor) and (ctx.task.actor.host): env['host_string'] = ctx.task.actor.host.host_address if not env.get('host_string'): http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/bc67b6ae/aria/orchestrator/plugin.py ---------------------------------------------------------------------- diff --git a/aria/orchestrator/plugin.py b/aria/orchestrator/plugin.py index d526e9c..2dabe67 100644 --- a/aria/orchestrator/plugin.py +++ b/aria/orchestrator/plugin.py @@ -43,6 +43,7 @@ class PluginManager(object): os_props = metadata['build_server_os_properties'] plugin = cls( + name=metadata['package_name'], archive_name=metadata['archive_name'], supported_platform=metadata['supported_platform'], supported_py_versions=metadata['supported_python_versions'], http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/bc67b6ae/aria/orchestrator/workflows/builtin/utils.py ---------------------------------------------------------------------- diff --git a/aria/orchestrator/workflows/builtin/utils.py b/aria/orchestrator/workflows/builtin/utils.py index 722c618..2254d13 100644 --- a/aria/orchestrator/workflows/builtin/utils.py +++ b/aria/orchestrator/workflows/builtin/utils.py @@ -73,13 +73,13 @@ def relationship_tasks(relationship, interface_name, source_operation_name=None, try: if _is_empty_task(relationship, interface_name, source_operation_name): operations.append(StubTask()) - - operations.append( - OperationTask.for_relationship(relationship=relationship, - interface_name=interface_name, - operation_name=source_operation_name, - **kwargs) - ) + else: + operations.append( + OperationTask.for_relationship(relationship=relationship, + interface_name=interface_name, + operation_name=source_operation_name, + **kwargs) + ) except exceptions.OperationNotFoundException: # We will skip relationships which do not have the operation pass @@ -87,13 +87,13 @@ def relationship_tasks(relationship, interface_name, source_operation_name=None, try: if _is_empty_task(relationship, interface_name, target_operation_name): operations.append(StubTask()) - - operations.append( - OperationTask.for_relationship(relationship=relationship, - interface_name=interface_name, - operation_name=target_operation_name, - **kwargs) - ) + else: + operations.append( + OperationTask.for_relationship(relationship=relationship, + interface_name=interface_name, + operation_name=target_operation_name, + **kwargs) + ) except exceptions.OperationNotFoundException: # We will skip relationships which do not have the operation pass http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/bc67b6ae/aria/parser/consumption/__init__.py ---------------------------------------------------------------------- diff --git a/aria/parser/consumption/__init__.py b/aria/parser/consumption/__init__.py index ff1b376..0eec638 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, FindHosts, ConfigureOperations +from .modeling import ServiceTemplate, Types, ServiceInstance, FindHosts, ConfigureOperations, SatisfyRequirements, ValidateCapabilities from .inputs import Inputs __all__ = ( @@ -34,4 +34,7 @@ __all__ = ( 'ServiceTemplate', 'Types', 'ServiceInstance', - 'Inputs') + 'Inputs', + 'SatisfyRequirements', + 'ValidateCapabilities' +)
