# 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 aria.modeling import models as aria_models 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', operation_kwargs=dict( function=create_operation, arguments={'key': aria_models.Argument.wrap('key', 'create'), 'value': aria_models.Argument.wrap('value', True)}) ) node_template.interface_templates[interface_template.name] = interface_template # pylint: disable=unsubscriptable-object node = models.create_node(node_template, service, name=models.DEPENDENCY_NODE_NAME) interface = models.create_interface( service, 'Standard', 'create', operation_kwargs=dict( function=create_operation, arguments={'key': aria_models.Argument.wrap('key', 'create'), 'value': aria_models.Argument.wrap('value', True)}) ) node.interfaces[interface.name] = interface # pylint: disable=unsubscriptable-object model_storage.service_template.put(service_template) model_storage.service.put(service) 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 dependency_node_template = models.create_dependency_node_template(service_template) dependent_node_template = models.create_dependent_node_template(service_template, dependency_node_template) dependency_node = models.create_node( dependency_node_template, service, models.DEPENDENCY_NODE_NAME) dependent_node = models.create_node( dependent_node_template, service, models.DEPENDENT_NODE_NAME) dependent_node.outbound_relationships.append(models.create_relationship( # pylint: disable=no-member source=dependent_node, target=dependency_node )) model_storage.service_template.put(service_template) model_storage.service.put(service) return service.id def create_simple_topology_three_nodes(model_storage): ################################################################################# # Creating a simple deployment with the following topology: # node1 <----| # | <- node0 # node2 <----| # meaning node0 has two relationships: node1 and node2 (one each). service_id = create_simple_topology_two_nodes(model_storage) service = model_storage.service.get(service_id) third_node_template = models.create_dependency_node_template( service.service_template, name='another_dependency_node_template') third_node = models.create_node(third_node_template, service, 'another_dependency_node') new_relationship = models.create_relationship( source=model_storage.node.get_by_name(models.DEPENDENT_NODE_NAME), target=third_node, ) model_storage.relationship.put(new_relationship) return service_id