Repository: incubator-ariatosca Updated Branches: refs/heads/ARIA-174-Refactor-instantiation-phase d6b268958 -> 4b6e51b0a
fixed issue with reqs and caps issue where target capability types are not properly satisfied Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/4b6e51b0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/4b6e51b0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/4b6e51b0 Branch: refs/heads/ARIA-174-Refactor-instantiation-phase Commit: 4b6e51b0a589de8978ee6e90dd84a05f38387f50 Parents: d6b2689 Author: max-orlov <[email protected]> Authored: Sun Jul 30 18:17:07 2017 +0300 Committer: max-orlov <[email protected]> Committed: Sun Jul 30 18:17:07 2017 +0300 ---------------------------------------------------------------------- aria/orchestrator/topology/instance_handler.py | 8 ++++ tests/parser/service_templates.py | 18 +++++++-- tests/parser/test_reqs_caps.py | 29 ++++++++++++++ .../tosca-simple-1.0/reqs_caps/reqs_caps1.yaml | 40 ++++++++++++++++++++ 4 files changed, 91 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/4b6e51b0/aria/orchestrator/topology/instance_handler.py ---------------------------------------------------------------------- diff --git a/aria/orchestrator/topology/instance_handler.py b/aria/orchestrator/topology/instance_handler.py index 2c32466..dbebf48 100644 --- a/aria/orchestrator/topology/instance_handler.py +++ b/aria/orchestrator/topology/instance_handler.py @@ -289,6 +289,14 @@ class Node(common._OperatorHolderHandlerMixin): return target_node_template, target_node_capability + elif requirement_template.target_capability_type is not None: + for target_node_template in \ + self._model.node_template.service_template.node_templates.itervalues(): + target_node_capability = \ + self._get_capability(requirement_template, target_node_template) + if target_node_capability: + return target_node_template, target_node_capability + return None, None def _get_capability(self, requirement_template, target_node_template=None): http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/4b6e51b0/tests/parser/service_templates.py ---------------------------------------------------------------------- diff --git a/tests/parser/service_templates.py b/tests/parser/service_templates.py index 13712df..6b12576 100644 --- a/tests/parser/service_templates.py +++ b/tests/parser/service_templates.py @@ -49,13 +49,23 @@ def consume_use_case(use_case_name, consumer_class_name='instance', cache=True): def consume_node_cellar(consumer_class_name='instance', cache=True): + consume_test_case( + get_service_template_uri('tosca-simple-1.0', 'node-cellar', 'node-cellar.yaml'), + consumer_class_name=consumer_class_name, + inputs_uri=get_service_template_uri('tosca-simple-1.0', 'node-cellar', 'inputs.yaml'), + cache=cache + + ) + + +def consume_test_case(uri, inputs_uri=None, consumer_class_name='instance', cache=True): cachedmethod.ENABLED = cache - uri = get_service_template_uri('tosca-simple-1.0', 'node-cellar', 'node-cellar.yaml') + uri = get_service_template_uri(uri) context = create_context(uri) - context.args.append('--inputs=' + get_service_template_uri('tosca-simple-1.0', 'node-cellar', - 'inputs.yaml')) + if inputs_uri: + context.args.append('--inputs=' + get_service_template_uri(inputs_uri)) consumer, dumper = create_consumer(context, consumer_class_name) consumer.consume() context.validation.dump_issues() assert not context.validation.has_issues - return context, dumper + return context, dumper \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/4b6e51b0/tests/parser/test_reqs_caps.py ---------------------------------------------------------------------- diff --git a/tests/parser/test_reqs_caps.py b/tests/parser/test_reqs_caps.py new file mode 100644 index 0000000..0af2487 --- /dev/null +++ b/tests/parser/test_reqs_caps.py @@ -0,0 +1,29 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .service_templates import consume_test_case +from ..helpers import get_service_template_uri + + +def test_satisfy_capability_type(): + consume_reqs_caps_template('instance') + + +def consume_reqs_caps_template(consumer_class_name, cache=True): + consume_test_case( + get_service_template_uri('tosca-simple-1.0', 'reqs_caps', 'reqs_caps1.yaml'), + consumer_class_name=consumer_class_name, + cache=cache + ) http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/4b6e51b0/tests/resources/service-templates/tosca-simple-1.0/reqs_caps/reqs_caps1.yaml ---------------------------------------------------------------------- diff --git a/tests/resources/service-templates/tosca-simple-1.0/reqs_caps/reqs_caps1.yaml b/tests/resources/service-templates/tosca-simple-1.0/reqs_caps/reqs_caps1.yaml new file mode 100644 index 0000000..466a78e --- /dev/null +++ b/tests/resources/service-templates/tosca-simple-1.0/reqs_caps/reqs_caps1.yaml @@ -0,0 +1,40 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +tosca_definitions_version: tosca_simple_yaml_1_0 + +capability_types: + Socket: + derived_from: tosca.capabilities.Root + +node_types: + Socket: + derived_from: tosca.nodes.Root + capabilities: + socket: Socket + + Plug: + derived_from: tosca.nodes.Root + requirements: + - plug: + capability: Socket + +topology_template: + node_templates: + socket: + type: Socket + + plug: + type: Plug \ No newline at end of file
