vFW and vDNS support added to azure-plugin
[multicloud/azure.git] / azure / aria / aria-extension-cloudify / src / aria / tests / mock / topology.py
diff --git a/azure/aria/aria-extension-cloudify/src/aria/tests/mock/topology.py b/azure/aria/aria-extension-cloudify/src/aria/tests/mock/topology.py
new file mode 100644 (file)
index 0000000..9f0521f
--- /dev/null
@@ -0,0 +1,96 @@
+# 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