Repository: SODALITE-EU/iac-blueprint-builder

Issue:
Upgrade to cover new KB features and TOSCA upgrade
Has to support:
- TOSCA 1.3 valid creation (constraints, operation defininitions) 
- artifact uploads
- Ansible playbook uploads 
- optimisation DSL 



Discussion:

Patch:
diff --git a/Dockerfile b/Dockerfile
index a538008..9149596 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,5 +3,4 @@ ADD . /parser
 WORKDIR /parser
 RUN pip3 install -r requirements.txt
 EXPOSE 80
-CMD python src/main.py
-
+CMD python src/main.py
\ No newline at end of file
diff --git a/src/iacparser.py b/src/iacparser.py
index 7364420..8939d20 100644
--- a/src/iacparser.py
+++ b/src/iacparser.py
@@ -13,9 +13,9 @@ topology_template = ['  ', 'node_templates: \n']  # header and template nodes
 node_types = ['\nnode_types: \n \n']  # type nodes
 
 participants = []
-ansible_files = []
+ansible_urls = []
 ansible_paths = []
-dependency_files = []
+dependency_urls = []
 dependency_paths = []
 inputs = ['\ntopology_template:\n\n']
 
@@ -40,8 +40,27 @@ def innerdicts(data, tabs, l=[], inList=False):
             value = []  # convert badly parsed empty lists to lists
         if value and isinstance(value, list):
             if key == 'requirements':
-                value = [{('- ' + k.split('/')[-1]): (v) for (k, v) in c.items()} for c in value if isinstance(c, dict)]
-                isList = True
+                dependency_parse_failed = True
+                for requirement in value:
+                    if isinstance(requirement, dict):
+                        subrequirement = requirement[list(dict(requirement).keys())[0]]
+                        if "value" in requirement[list(dict(requirement).keys())[0]]:
+                            item = subrequirement["value"]
+                            if isinstance(item, dict):
+                                dep_type = item["label"]
+                                subitem = item[list(dict(item).keys())[0]]
+                                if "label" in subitem:
+                                    if dependency_parse_failed:
+                                        l.append('  ' * tabs + "requirements: " + "\n")
+                                        dependency_parse_failed = False
+                                    dep_node = subitem["label"]
+                                    l.append('  ' * (tabs + 1) + "- " + dep_type + ": " + dep_node + "\n")
+                if dependency_parse_failed is True:
+                    value = [{('- ' + k.split('/')[-1]): (v) for (k, v) in c.items()} for c in value if
+                             isinstance(c, dict)]
+                    isList = True
+                else:
+                    continue
             elif "occurrences" in key:
                 constraint_value = ""
                 first_el = True
@@ -62,7 +81,7 @@ def innerdicts(data, tabs, l=[], inList=False):
                 l = inputs
                 tabs = 1
             elif 'isNodeTemplate' in value:  # node template or node type
-                if value['isNodeTemplate'] == False:
+                if not value['isNodeTemplate']:
                     l = node_types
                     tabs = 1
                     for i in range(7):
@@ -75,41 +94,49 @@ def innerdicts(data, tabs, l=[], inList=False):
                     tabs = 2
                 l.append('\n')
                 del value['isNodeTemplate']
-            if "https://" in str(key): key = str(key)[str(key).rfind('/') + 1:]
+            if "https://" in str(key):
+                key = str(key)[str(key).rfind('/') + 1:]
             if "Standard" in key:
-                l.append('  ' * (tabs) + "Standard: " + "\n")
+                l.append('  ' * tabs + "Standard: " + "\n")
                 if 'specification' in value:
                     l.append('  ' * (tabs + 1) + "type: tosca.interfaces.node.lifecycle.Standard " + "\n")
                     l.append('  ' * (tabs + 1) + "operations: " + "\n")
                     operations = ['create', 'delete']
-                    for operation in operations:
-                        # implementations don't need to implement all steps anymore
-                        if operation in value['specification']['operations'].keys():
-                            l.append('  ' * (tabs + 2) + operation + ": \n")
-                            innerdicts(value['specification']['operations'][operation], tabs + 3, l, isList)
+                    if 'operations' in value['specification'].keys():
+                        for operation in operations:
+                            # implementations don't need to implement all steps anymore
+                            if operation in value['specification']['operations'].keys():
+                                l.append('  ' * (tabs + 2) + operation + ": \n")
+                                innerdicts(value['specification']['operations'][operation], tabs + 3, l, isList)
             # convert constraints maps to lists
             elif "constraints" in key:
-                l.append('  ' * (tabs) + "constraints: \n")
+                l.append('  ' * tabs + "constraints: \n")
                 for constraint in value.keys():
                     l.append('  ' * (tabs + 1) + '- {}: {}'.format(constraint, value[constraint]) + "\n")
             # concat implementation urls
             elif "implementation" in key:
                 l.append("{}implementation: \n".format('  ' * tabs))
                 if "primary" in value:
-                    ansible_files.append(value['primary']['url'])
-                    temp_path = os.path.join(*value['primary']['url'].split('/')[4:]) + "_" + \
+                    rootpath = "playbooks"  # default folder for playbooks
+                    if "relative_path" in value["primary"]:
+                        rootpath = value["primary"]["relative_path"]
+                    ansible_urls.append(value['primary']['url'])
+                    temp_path = os.path.join(rootpath, *value['primary']['url'].split('/')[4:]) + "_" + \
                                 value['primary']['path'].split('/')[-1]
                     ansible_paths.append(temp_path)
                     l.append("{}primary: {} \n".format('  ' * (tabs + 1), temp_path))
                 if "dependencies" in value:
-                    if "file" in value["dependencies"]:
-                        dep = value['dependencies']['file']
-                        dependency_files.append(dep['url'])
-                        temp_path = dep['path'].split('/')[-1]
-                        dependency_paths.append(temp_path)
+                    rootpath = "artifacts"  # default folder for artifacts
+                    if "relative_path" in value["dependencies"]:
+                        rootpath = value["dependencies"]["relative_path"]
+                    if "files" in value["dependencies"]:
+                        dependency = value["dependencies"]["files"]
                         l.append("{}dependencies: \n".format('  ' * (tabs + 1)))
-                        l.append("{}- file: {} \n".format('  ' * (tabs + 2), temp_path))
-                        l.append("{}type: {} \n".format('  ' * (tabs + 3), "tosca.artifacts.File"))
+                        if isinstance(dependency, list):
+                            for dep in dependency:
+                                extract_dependency(dep, l, tabs, rootpath)
+                        else:
+                            extract_dependency(dependency, l, tabs, rootpath)
             # convert variable accessors to shorthand variants to improve clarity
             elif "default" in value and isinstance(value["default"], dict) and (
                     "get_property" in value["default"].keys() or "get_attribute" in value["default"].keys()):
@@ -131,6 +158,27 @@ def innerdicts(data, tabs, l=[], inList=False):
                                                                                 get_prop_or_att,
                                                                                 default_properties['entity'],
                                                                                 default_properties[prop_or_att]))
+            elif "specification" in value and isinstance(value["specification"], dict) and (
+                 "get_property" in value["specification"].keys() or "get_attribute" in value["specification"].keys()):
+                get_prop_or_att = next(iter(value["specification"]))
+                prop_or_att = get_prop_or_att.split("_")[-1]
+                default_properties = value["specification"][get_prop_or_att]
+                if "req_cap" in default_properties.keys():
+                    l.append(
+                        "{}{:20} {{ {}: [ {}, {}, {} ] }} \n".format('  ' * tabs,
+                                                                     key + ":",
+                                                                     get_prop_or_att,
+                                                                     default_properties['entity'],
+                                                                     default_properties['req_cap'],
+                                                                     default_properties[
+                                                                         prop_or_att]))
+                else:
+                    l.append(
+                        "{}{:20} {{ {}: [ {}, {} ] }} \n".format('  ' * tabs,
+                                                                 key + ":",
+                                                                 get_prop_or_att,
+                                                                 default_properties['entity'],
+                                                                 default_properties[prop_or_att]))
             elif "command" in key and "value" in value.keys():
                 l.append('  ' * (tabs) + "command: \n")
                 if isinstance(value["value"], list):
@@ -149,11 +197,11 @@ def innerdicts(data, tabs, l=[], inList=False):
         else:
             # legacy implementation parser
             if "Ansibles" in str(value):
-                ansible_files.append(str(value))
+                ansible_urls.append(str(value))
                 value = os.path.join(*value.split('/')[4:]) + "_" + data['path'].split('/')[-1]
                 ansible_paths.append(value)
-                l.append('  ' * (tabs) + 'file: ' + str(value) + ' \n')
-                l.append('  ' * (tabs) + 'type: tosca.artifacts.Implementation \n')
+                l.append('  ' * tabs + 'file: ' + str(value) + ' \n')
+                l.append('  ' * tabs + 'type: tosca.artifacts.Implementation \n')
             else:
                 if key == 'type' and '/tosca/tosca.' in value:
                     key = 'derived_from'
@@ -161,7 +209,16 @@ def innerdicts(data, tabs, l=[], inList=False):
                     value = str(value)[str(value).rfind('/') + 1:]
                 elif ": " in str(value) and "description" == str(key):
                     value = str(value).replace(':', ' ')
-                l.append('  ' * (tabs) + str(key) + ': ' + str(value) + ' \n')
+                l.append('  ' * tabs + str(key) + ': ' + str(value) + ' \n')
+
+
+def extract_dependency(dep, l, tabs, origin=""):
+    joined_path = os.path.join(origin, dep['path'].split('/')[-1])
+    if "url" in dep:
+        dependency_urls.append(dep['url'])
+        dependency_paths.append(joined_path)
+    l.append("{}- file: {} \n".format('  ' * (tabs + 2), joined_path))
+    l.append("{}type: {} \n".format('  ' * (tabs + 3), "tosca.artifacts.File"))
 
 
 def remove_extra_hierarchies(s):
@@ -172,7 +229,7 @@ def remove_extra_hierarchies(s):
 
 def parse(data):
     innerdicts(data, 1)
-    return ansible_files, ansible_paths, dependency_files, dependency_paths
+    return ansible_urls, ansible_paths, dependency_urls, dependency_paths
 
 
 def parse_data(name, data):
@@ -190,4 +247,4 @@ def parse_data(name, data):
 
     outfile.write(remove_extra_hierarchies(''.join(s)))
     print('TOSCA generated -------')
-    return ansible_files, ansible_paths, dependency_files, dependency_paths
+    return ansible_urls, ansible_paths, dependency_urls, dependency_paths
diff --git a/src/main.py b/src/main.py
index a2332de..7133956 100644
--- a/src/main.py
+++ b/src/main.py
@@ -49,33 +49,11 @@ def parse():
         os.makedirs(workpath)
     outpath = os.path.join(workpath, body["name"])
     ansible_tuple = iacparser.parse_data(outpath, body["data"])
-    ansibles = ansible_tuple[0]
-    ansible_paths = ansible_tuple[1]
     print('Downloading Ansible files ---------')
-    for i, url in enumerate(ansibles):
-        print('Reading   %s ------- ' % url)
-        temp = str(url).split('/')
-        filename = ansible_paths[i]
-        foldername = os.path.join(workpath, *temp[4:-1])
-        if not os.path.exists(foldername):
-            os.makedirs(foldername)
-        outfile = open(os.path.join(foldername, filename), "w")
-        outfile.write(str(requests.get(url).text))
-        outfile.close()
+    download_dependencies(ansible_tuple[0], ansible_tuple[1], workpath)
     print('Ansible files done ------- ')
-    depen_files = ansible_tuple[2]
-    depen_paths = ansible_tuple[3]
     print('Downloading Dependencies ---------')
-    for i, url in enumerate(depen_files):
-        print('Reading   %s ------- ' % url)
-        temp = str(url).split('/')
-        filename = depen_paths[i]
-        foldername = os.path.join(workpath, *temp[4:-1])
-        if not os.path.exists(foldername):
-            os.makedirs(foldername)
-        outfile = open(os.path.join(foldername, filename), "w")
-        outfile.write(str(requests.get(url).text))
-        outfile.close()
+    download_dependencies(ansible_tuple[2], ansible_tuple[3], workpath)
     print('Dependencies are done loading ------- ')
     print('blueprint2CSAR ongoing ------- ')
     os.system('python3 src/blueprint2CSAR.py %s %s --entry-definitions %s.yml --output %s' %
@@ -85,6 +63,18 @@ def parse():
     return json.loads(response.text)
 
 
+def download_dependencies(urls, filenames, workpath):
+    for url, filename in zip(urls, filenames):
+        print('Reading   %s ------- ' % url)
+        temp = str(filename).split('/')
+        foldername = os.path.join(workpath, *temp[:-1])
+        if not os.path.exists(foldername):
+            os.makedirs(foldername)
+        outfile = open(os.path.join(workpath, filename), "w")
+        outfile.write(str(requests.get(url).text))
+        outfile.close()
+
+
 if __name__ == '__main__':
     http_server = WSGIServer(('', 80), app)
     http_server.serve_forever()


Test patch:
diff --git a/test/fixture.json b/test/fixture.json
index e066f20..81ec29c 100644
--- a/test/fixture.json
+++ b/test/fixture.json
@@ -1,63 +1,63 @@
 {
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/AADM_me7sho52bqqi2qmc2q5vnauvdq": {
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/AADM_92aj0uo7t6l6u8mv5tmh99pjnb": {
     "type": "AbstractApplicationDeploymentModel",
-    "createdBy": "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/27827d44-0f6c-11ea-8d71-362b9e155667",
-    "createdAt": "2020-07-30T20:10:19.152+03:00",
+    "createdBy": "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/27827d44-0f6c-11ea-8d71-362b9e155667",
+    "createdAt": "2020-08-31T12:36:20.722+03:00",
     "version": "1",
     "participants": [
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/configuration-demo1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/topology_template_inputs",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-skyline-extractor1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-network1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-demo-nginx1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/security-rules-snow1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-skyline-alignment1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-shots1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-demo1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-mysql1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-webcam-mockup1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-weather-condition-filter1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/docker-registry-certificate1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-demo-output1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-daily-shots1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm-2_1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-daily-median-aggregator1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-masks1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host-2_1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/docker-registry-certificate-2_1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/docker-registry1",
-      "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-webcam-crawler1"
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-masks",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-skyline-alignment",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host-2",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-weather-condition-filter",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-security-rules",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/topology_template_inputs",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-demo-output",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-shots",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-webcam-crawler",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-mysql",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry-certificate",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-webcam-mockup",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-demo",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-daily-shots",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-daily-median-aggregator",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm-2",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-configuration-demo",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-demo-nginx",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry-certificate-2",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-skyline-extractor",
+      "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-network"
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/configuration-demo1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/sodalite.nodes.ConfigurationDemo",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-masks": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/5nf45bccrr6rmkt2f4cinoi6u/sodalite.nodes.DockerVolume",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/mysql_db_pass": {
-          "value": "{ get_input: mysql-db-pass }",
-          "label": "mysql_db_pass"
+        "https://www.sodalite.eu/ontologies/tosca/name": {
+          "value": "snow_volume_masks",
+          "label": "name"
         }
       }
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/remote_server": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm-2_1": {
-              "label": "snow-vm-2_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
             },
-            "label": "remote_server"
+            "label": "dependency"
           }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
-              "label": "snow-vm_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
+              "label": "snow-vm"
             },
             "label": "host"
           }
@@ -65,102 +65,107 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/topology_template_inputs": {
-    "inputs": [
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/security-groups": {
-          "specification": {
-            "type": "string"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/image-name": {
-          "specification": {
-            "type": "string"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/flavor-name": {
-          "specification": {
-            "type": "string"
-          }
-        }
-      },
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-skyline-alignment": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
+    "isNodeTemplate": true,
+    "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker-network": {
-          "specification": {
-            "type": "string"
-          }
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
+          "value": [
+            "/tmp/docker:/tmp"
+          ],
+          "label": "volumes"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/openstack-network-name": {
-          "specification": {
-            "type": "string"
-          }
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
+          "value": [
+            "8080"
+          ],
+          "label": "exposed_ports"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/ssh-key-name": {
-          "specification": {
-            "type": "string"
-          }
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
+          "value": "snow-skyline-alignment",
+          "label": "alias"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker-registry-cert-organization-name": {
-          "specification": {
-            "type": "string"
-          }
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
+          "value": "{ get_input: docker-registry-url }",
+          "label": "registry_url"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/demo-files-path": {
-          "specification": {
-            "type": "string"
-          }
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
+          "value": "snow-skyline-alignment:latest",
+          "label": "image_name"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker-registry-cert-country-name": {
-          "specification": {
-            "type": "string"
-          }
+        "https://www.sodalite.eu/ontologies/tosca/ports": {
+          "value": [
+            "80:8080",
+            "8081:8080"
+          ],
+          "label": "ports"
         }
-      },
+      }
+    ],
+    "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker-registry-url": {
-          "specification": {
-            "type": "string"
+        "https://www.sodalite.eu/ontologies/tosca/host": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host-2": {
+              "label": "snow-docker-host-2"
+            },
+            "label": "host"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker-registry-cert-email-address": {
-          "specification": {
-            "type": "string"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+              "label": "snow-docker-registry"
+            },
+            "label": "registry"
           }
         }
-      },
+      }
+    ]
+  },
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host-2": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/i5rq2l9e5at501mve07ubclavq/sodalite.nodes.DockerHost",
+    "isNodeTemplate": true,
+    "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/mysql-db-pass": {
-          "specification": {
-            "type": "string"
+        "https://www.sodalite.eu/ontologies/tosca/host": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm-2": {
+              "label": "snow-vm-2"
+            },
+            "label": "host"
           }
         }
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
     "type": "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/sodalite.nodes.OpenStack.VM",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/security_groups": {
-          "value": "{ get_input: security-groups }",
-          "label": "security_groups"
+        "https://www.sodalite.eu/ontologies/tosca/name": {
+          "value": "snow-vm_am_10",
+          "label": "name"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/flavor": {
+          "value": "{ get_input: flavor-name }",
+          "label": "flavor"
         }
       },
       {
@@ -170,27 +175,27 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/name": {
-          "value": "snow-vm_am_10",
-          "label": "name"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
+          "value": "{ get_input: openstack-network-name }",
+          "label": "network"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/key_name": {
-          "value": "{ get_input: ssh-key-name }",
-          "label": "key_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/u1lnsc0k73f78hmqhe2b7jfac3/username": {
+          "value": "centos",
+          "label": "username"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
-          "value": "{ get_input: openstack-network-name }",
-          "label": "network"
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/security_groups": {
+          "value": "{ get_input: security-groups }",
+          "label": "security_groups"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/flavor": {
-          "value": "{ get_input: flavor-name }",
-          "label": "flavor"
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/key_name": {
+          "value": "{ get_input: ssh-key-name }",
+          "label": "key_name"
         }
       }
     ],
@@ -198,8 +203,8 @@
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/protected_by": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/security-rules-snow1": {
-              "label": "security-rules-snow1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-security-rules": {
+              "label": "snow-security-rules"
             },
             "label": "protected_by"
           }
@@ -207,82 +212,156 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-skyline-extractor1": {
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-weather-condition-filter": {
     "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
-          "value": "{ get_input: docker-registry-url }",
-          "label": "registry_url"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
+          "value": [
+            "{{ ansible_date_time.date }}",
+            "34 40 50 62 608 666 822 852 943 1307 6666"
+          ],
+          "label": "command"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
-          "value": [
-            "8080"
-          ],
-          "label": "exposed_ports"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
+          "value": "snow-weather-condition-filter",
+          "label": "alias"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/docker_network_name": {
+          "specification": {
+            "get_property": {
+              "req_cap": "network",
+              "property": "name",
+              "entity": "SELF"
+            }
+          }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "value": "snow-skyline-extractor1:latest",
+          "value": "snow-weather-condition-filter:latest",
           "label": "image_name"
         }
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
-          "value": "/tmp/docker:/tmp",
+          "value": [
+            "snow_volume_daily_shots:/SnowWatch-SODALITE/data/daily_shots",
+            "snow_volume_shots:/SnowWatch-SODALITE/data/shots",
+            "/tmp/conf/config.json:/SnowWatch-SODALITE/config.json"
+          ],
           "label": "volumes"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/ports": {
-          "value": [
-            "8080:8080"
-          ],
-          "label": "ports"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
+          "value": "{ get_input: docker-registry-url }",
+          "label": "registry_url"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "value": "snow-skyline-extractor1",
-          "label": "alias"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/restart_policy": {
+          "value": "always",
+          "label": "restart_policy"
         }
       }
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host-2_1": {
-              "label": "snow-docker-host-2_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-masks": {
+              "label": "snow-docker-volume-masks"
             },
-            "label": "host"
+            "label": "dependency"
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-configuration-demo": {
+              "label": "snow-configuration-demo"
+            },
+            "label": "dependency"
           }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/kuo5nrsil2t33ktj3mb8sfnci2/docker-registry1": {
-              "label": "docker-registry1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+              "label": "snow-docker-registry"
             },
             "label": "registry"
           }
         }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
+            },
+            "label": "host"
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-mysql": {
+              "label": "snow-mysql"
+            },
+            "label": "dependency"
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-shots": {
+              "label": "snow-docker-volume-shots"
+            },
+            "label": "dependency"
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-daily-shots": {
+              "label": "snow-docker-volume-daily-shots"
+            },
+            "label": "dependency"
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-network": {
+              "label": "snow-docker-network"
+            },
+            "label": "network"
+          }
+        }
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-network1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/kijggphp9tsu7g26a5ve5e8ck0/sodalite.nodes.DockerNetwork",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/sodalite.nodes.DockerRegistry",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/name": {
-          "value": "{ get_input: docker-network }",
-          "label": "name"
+        "https://www.sodalite.eu/ontologies/workspace/1/fppvcga90lvljdklahb57ghpt6/docker_registry_url": {
+          "value": "{ get_input: docker-registry-url }",
+          "label": "docker_registry_url"
         }
       }
     ],
@@ -290,8 +369,8 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
-              "label": "snow-vm_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
+              "label": "snow-vm"
             },
             "label": "host"
           }
@@ -300,8 +379,28 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
+            },
+            "label": "dependency"
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry-certificate-2": {
+              "label": "snow-docker-registry-certificate-2"
+            },
+            "label": "dependency"
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry-certificate": {
+              "label": "snow-docker-registry-certificate"
             },
             "label": "dependency"
           }
@@ -309,197 +408,172 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-demo-nginx1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-security-rules": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/sodalite.nodes.OpenStack.SecurityRules",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "value": "snow-nginx",
-          "label": "alias"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/group_name": {
+          "value": "snow",
+          "label": "group_name"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/restart_policy": {
-          "value": "always",
-          "label": "restart_policy"
+        "https://www.sodalite.eu/ontologies/tosca/ports": {
+          "specification": {
+            "http_port": {
+              "protocol": "tcp",
+              "port_range_min": 80,
+              "port_range_max": 80,
+              "remote_ip_prefix": "0.0.0.0/0"
+            },
+            "component_ports": {
+              "remote_ip_prefix": "0.0.0.0/0",
+              "port_range_max": 8081,
+              "port_range_min": 8080,
+              "protocol": "tcp"
+            }
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
-          "value": "{ get_input: docker-registry-url }",
-          "label": "registry_url"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/group_description": {
+          "value": "Snow UC security group",
+          "label": "group_description"
         }
-      },
+      }
+    ]
+  },
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/topology_template_inputs": {
+    "inputs": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "value": "nginx:latest",
-          "label": "image_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/security-groups": {
+          "specification": {
+            "type": "string"
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/docker-network": {
           "specification": {
-            "snow_volume_demo_output": "/usr/share/nginx/html"
+            "type": "string"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
-          "value": [
-            "80"
-          ],
-          "label": "exposed_ports"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/image-name": {
+          "specification": {
+            "type": "string"
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/ports": {
-          "value": [
-            "80:80"
-          ],
-          "label": "ports"
-        }
-      }
-    ],
-    "requirements": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
-            },
-            "label": "host"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/docker-registry-url": {
+          "specification": {
+            "type": "string"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/kuo5nrsil2t33ktj3mb8sfnci2/docker-registry1": {
-              "label": "docker-registry1"
-            },
-            "label": "registry"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/mysql-db-pass": {
+          "specification": {
+            "type": "string"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-demo-output1": {
-              "label": "snow-docker-volume-demo-output1"
-            },
-            "label": "dependency"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/docker-registry-cert-organization-name": {
+          "specification": {
+            "type": "string"
           }
         }
-      }
-    ]
-  },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/security-rules-snow1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/sodalite.nodes.OpenStack.SecurityRules",
-    "isNodeTemplate": true,
-    "properties": [
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/group_description": {
-          "value": "Snow UC security group",
-          "label": "group_description"
-        }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/ports": {
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/demo-files-path": {
           "specification": {
-            "http_port": {
-              "port_range_min": 80,
-              "remote_ip_prefix": "0.0.0.0/0",
-              "port_range_max": 80,
-              "protocol": "tcp"
-            },
-            "component_ports": {
-              "protocol": "tcp",
-              "port_range_max": 8081,
-              "remote_ip_prefix": "0.0.0.0/0",
-              "port_range_min": 8080
-            }
+            "type": "string"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/group_name": {
-          "value": "snow",
-          "label": "group_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/openstack-network-name": {
+          "specification": {
+            "type": "string"
+          }
         }
-      }
-    ]
-  },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-skyline-alignment1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
-    "isNodeTemplate": true,
-    "properties": [
+      },
       {
-        "https://www.sodalite.eu/ontologies/tosca/ports": {
-          "value": [
-            "80:8080",
-            "8081:8080"
-          ],
-          "label": "ports"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/flavor-name": {
+          "specification": {
+            "type": "string"
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
-          "value": "{ get_input: docker-registry-url }",
-          "label": "registry_url"
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/mysql-env": {
+          "specification": {
+            "type": "map"
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
-          "value": [
-            "8080"
-          ],
-          "label": "exposed_ports"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/docker-registry-cert-country-name": {
+          "specification": {
+            "type": "string"
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "value": "snow-skyline-alignment1",
-          "label": "alias"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/ssh-key-name": {
+          "specification": {
+            "type": "string"
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "value": "snow-skyline-alignment1:latest",
-          "label": "image_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/137cf7pcrrq0a2q3e3vgjv5ock/docker-registry-cert-email-address": {
+          "specification": {
+            "type": "string"
+          }
         }
-      },
+      }
+    ]
+  },
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-demo-output": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/5nf45bccrr6rmkt2f4cinoi6u/sodalite.nodes.DockerVolume",
+    "isNodeTemplate": true,
+    "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
-          "value": "/tmp/docker:/tmp",
-          "label": "volumes"
+        "https://www.sodalite.eu/ontologies/tosca/name": {
+          "value": "snow_volume_demo_output",
+          "label": "name"
         }
       }
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host-2_1": {
-              "label": "snow-docker-host-2_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
             },
-            "label": "host"
+            "label": "dependency"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/kuo5nrsil2t33ktj3mb8sfnci2/docker-registry1": {
-              "label": "docker-registry1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
+              "label": "snow-vm"
             },
-            "label": "registry"
+            "label": "host"
           }
         }
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-shots1": {
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-shots": {
     "type": "https://www.sodalite.eu/ontologies/workspace/1/5nf45bccrr6rmkt2f4cinoi6u/sodalite.nodes.DockerVolume",
     "isNodeTemplate": true,
     "properties": [
@@ -511,11 +585,21 @@
       }
     ],
     "requirements": [
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
+            },
+            "label": "dependency"
+          }
+        }
+      },
       {
         "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
-              "label": "snow-vm_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
+              "label": "snow-vm"
             },
             "label": "host"
           }
@@ -523,90 +607,82 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-demo1": {
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-webcam-crawler": {
     "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
     "isNodeTemplate": true,
     "properties": [
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
-          "value": "{ get_input: docker-registry-url }",
-          "label": "registry_url"
-        }
-      },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
           "value": [
-            "/tmp/conf/config.json:/SnowWatch-SODALITE/config.json",
-            "snow_volume_daily_shots: /SnowWatch-SODALITE/data/daily_shots",
-            "snow_volume_demo_output: /SnowWatch-SODALITE/data/output"
+            "snow_volume_daily_shots:/SnowWatch-SODALITE/data/daily_shots",
+            "snow_volume_shots:/SnowWatch-SODALITE/data/shots",
+            "/tmp/conf/config.json:/SnowWatch-SODALITE/WebCamCrawler/config.json"
           ],
           "label": "volumes"
         }
       },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
+          "value": "{ get_input: docker-registry-url }",
+          "label": "registry_url"
+        }
+      },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "value": "snow-demo1",
+          "value": "snow-webcam-crawler",
           "label": "alias"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "value": "snow-demo:latest",
-          "label": "image_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/docker_network_name": {
+          "specification": {
+            "get_property": {
+              "entity": "SELF",
+              "property": "name",
+              "req_cap": "network"
+            }
+          }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
-          "value": "{{ ansible_date_time.date }}",
+          "value": "34,40,50,62,608,666,822,852,943,1307,6666",
           "label": "command"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker_network_name": {}
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/restart_policy": {
-          "value": "always",
-          "label": "restart_policy"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
+          "value": "snow-webcam-crawler:latest",
+          "label": "image_name"
         }
       }
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-demo-output1": {
-              "label": "snow-docker-volume-demo-output1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
             },
-            "label": "dependency"
+            "label": "host"
           }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/kuo5nrsil2t33ktj3mb8sfnci2/docker-registry1": {
-              "label": "docker-registry1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+              "label": "snow-docker-registry"
             },
             "label": "registry"
           }
         }
       },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
-            },
-            "label": "host"
-          }
-        }
-      },
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-daily-shots1": {
-              "label": "snow-docker-volume-daily-shots1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-shots": {
+              "label": "snow-docker-volume-shots"
             },
             "label": "dependency"
           }
@@ -615,8 +691,8 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-mysql1": {
-              "label": "snow-mysql1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-mysql": {
+              "label": "snow-mysql"
             },
             "label": "dependency"
           }
@@ -625,8 +701,8 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/configuration-demo1": {
-              "label": "configuration-demo1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-configuration-demo": {
+              "label": "snow-configuration-demo"
             },
             "label": "dependency"
           }
@@ -635,8 +711,8 @@
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-network1": {
-              "label": "snow-docker-network1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-network": {
+              "label": "snow-docker-network"
             },
             "label": "network"
           }
@@ -644,14 +720,20 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-mysql1": {
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-mysql": {
     "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "value": "mysql",
-          "label": "alias"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/env": {
+          "value": "{ get_input: mysql-env }",
+          "label": "env"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
+          "value": "snow-mysql:latest",
+          "label": "image_name"
         }
       },
       {
@@ -663,18 +745,17 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker_network_name": {}
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
-          "value": "--default-authentication-plugin\u003dmysql_native_password",
-          "label": "command"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
+          "value": "mysql",
+          "label": "alias"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "value": "snow-mysql1:latest",
-          "label": "image_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
+          "value": [
+            "3306"
+          ],
+          "label": "exposed_ports"
         }
       },
       {
@@ -684,79 +765,128 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/env": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/docker_network_name": {
           "specification": {
-            "MYSQL_ROOT_PASSWORD": "#set password here",
-            "MYSQL_DATABASE": "wc_crawler_db"
+            "get_property": {
+              "entity": "SELF",
+              "property": "name",
+              "req_cap": "network"
+            }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
-          "value": [
-            "3306"
-          ],
-          "label": "exposed_ports"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
+          "value": "--default-authentication-plugin=mysql_native_password",
+          "label": "command"
         }
       }
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/kuo5nrsil2t33ktj3mb8sfnci2/docker-registry1": {
-              "label": "docker-registry1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-network": {
+              "label": "snow-docker-network"
             },
-            "label": "registry"
+            "label": "network"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-network1": {
-              "label": "snow-docker-network1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
             },
-            "label": "network"
+            "label": "host"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+              "label": "snow-docker-registry"
             },
-            "label": "host"
+            "label": "registry"
           }
         }
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-webcam-mockup1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry-certificate": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/sodalite.nodes.RegistryCertificate",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "value": "snow-webcam-mockup1:latest",
-          "label": "image_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/email_address": {
+          "value": "{ get_input: docker-registry-cert-email-address }",
+          "label": "email_address"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/country_name": {
+          "value": "{ get_input: docker-registry-cert-country-name }",
+          "label": "country_name"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/registry_ip": {
           "value": "{ get_input: docker-registry-url }",
-          "label": "registry_url"
+          "label": "registry_ip"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
-          "value": [
-            "8080"
-          ],
-          "label": "exposed_ports"
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/organization_name": {
+          "value": "{ get_input: docker-registry-cert-organization-name }",
+          "label": "organization_name"
+        }
+      }
+    ],
+    "requirements": [
+      {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
+              "label": "snow-vm"
+            },
+            "label": "host"
+          }
         }
       },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
+            },
+            "label": "dependency"
+          }
+        }
+      }
+    ]
+  },
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/i5rq2l9e5at501mve07ubclavq/sodalite.nodes.DockerHost",
+    "isNodeTemplate": true,
+    "requirements": [
+      {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
+              "label": "snow-vm"
+            },
+            "label": "host"
+          }
+        }
+      }
+    ]
+  },
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-webcam-mockup": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
+    "isNodeTemplate": true,
+    "properties": [
       {
         "https://www.sodalite.eu/ontologies/tosca/ports": {
           "value": [
@@ -766,41 +896,69 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker_network_name": {}
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
+          "value": [
+            "8080"
+          ],
+          "label": "exposed_ports"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
+          "value": "snow-webcam-mockup:latest",
+          "label": "image_name"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
+          "value": "{ get_input: docker-registry-url }",
+          "label": "registry_url"
+        }
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "value": "snow-webcam-mockup1",
+          "value": "snow-webcam-mockup",
           "label": "alias"
         }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/docker_network_name": {
+          "specification": {
+            "get_property": {
+              "req_cap": "network",
+              "entity": "SELF",
+              "property": "name"
+            }
+          }
+        }
       }
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/kuo5nrsil2t33ktj3mb8sfnci2/docker-registry1": {
-              "label": "docker-registry1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
             },
-            "label": "registry"
+            "label": "host"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+              "label": "snow-docker-registry"
             },
-            "label": "host"
+            "label": "registry"
           }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-network1": {
-              "label": "snow-docker-network1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-network": {
+              "label": "snow-docker-network"
             },
             "label": "network"
           }
@@ -808,16 +966,22 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-weather-condition-filter1": {
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-demo": {
     "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
     "isNodeTemplate": true,
     "properties": [
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
+          "value": "{{ ansible_date_time.date }}",
+          "label": "command"
+        }
+      },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
           "value": [
-            "snow_volume_shots:/SnowWatch-SODALITE/data/shots",
+            "snow_volume_daily_shots:/SnowWatch-SODALITE/data/daily_shots",
             "/tmp/conf/config.json:/SnowWatch-SODALITE/config.json",
-            "snow_volume_daily_shots: /SnowWatch-SODALITE/data/daily_shots"
+            "snow_volume_demo_output:/SnowWatch-SODALITE/data/output"
           ],
           "label": "volumes"
         }
@@ -829,16 +993,21 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
-          "value": [
-            "{{ ansible_date_time.date }}",
-            "34 40 50 62 608 666 822 852 943 1307 6666"
-          ],
-          "label": "command"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
+          "value": "snow-demo:latest",
+          "label": "image_name"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker_network_name": {}
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/docker_network_name": {
+          "specification": {
+            "get_property": {
+              "property": "name",
+              "req_cap": "network",
+              "entity": "SELF"
+            }
+          }
+        }
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/restart_policy": {
@@ -848,53 +1017,37 @@
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "value": "snow-weather-condition-filter1",
+          "value": "snow-demo",
           "label": "alias"
         }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "value": "snow-weather-condition-filter1:latest",
-          "label": "image_name"
-        }
       }
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-shots1": {
-              "label": "snow-docker-volume-shots1"
-            },
-            "label": "dependency"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+              "label": "snow-docker-registry"
             },
-            "label": "host"
+            "label": "registry"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-network1": {
-              "label": "snow-docker-network1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-demo-output": {
+              "label": "snow-docker-volume-demo-output"
             },
-            "label": "network"
+            "label": "dependency"
           }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-mysql1": {
-              "label": "snow-mysql1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-mysql": {
+              "label": "snow-mysql"
             },
             "label": "dependency"
           }
@@ -903,8 +1056,8 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-masks1": {
-              "label": "snow-docker-volume-masks1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-configuration-demo": {
+              "label": "snow-configuration-demo"
             },
             "label": "dependency"
           }
@@ -913,44 +1066,62 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-daily-shots1": {
-              "label": "snow-docker-volume-daily-shots1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-daily-shots": {
+              "label": "snow-docker-volume-daily-shots"
             },
             "label": "dependency"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/configuration-demo1": {
-              "label": "configuration-demo1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-network": {
+              "label": "snow-docker-network"
             },
-            "label": "dependency"
+            "label": "network"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/kuo5nrsil2t33ktj3mb8sfnci2/docker-registry1": {
-              "label": "docker-registry1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
             },
-            "label": "registry"
+            "label": "host"
           }
         }
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/i5rq2l9e5at501mve07ubclavq/sodalite.nodes.DockerHost",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-daily-shots": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/5nf45bccrr6rmkt2f4cinoi6u/sodalite.nodes.DockerVolume",
     "isNodeTemplate": true,
+    "properties": [
+      {
+        "https://www.sodalite.eu/ontologies/tosca/name": {
+          "value": "snow_volume_daily_shots",
+          "label": "name"
+        }
+      }
+    ],
     "requirements": [
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
+            },
+            "label": "dependency"
+          }
+        }
+      },
       {
         "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
-              "label": "snow-vm_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
+              "label": "snow-vm"
             },
             "label": "host"
           }
@@ -958,113 +1129,151 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/docker-registry-certificate1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/sodalite.nodes.RegistryCertificate",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-daily-median-aggregator": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/email_address": {
-          "value": "{ get_input: docker-registry-cert-email-address }",
-          "label": "email_address"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
+          "value": "snow-daily-median-aggregator",
+          "label": "alias"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/organization_name": {
-          "value": "{ get_input: docker-registry-cert-organization-name }",
-          "label": "organization_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
+          "value": [
+            "snow_volume_daily_shots:/SnowWatch-SODALITE/data/daily_shots",
+            "snow_volume_shots:/SnowWatch-SODALITE/data/shots",
+            "/tmp/conf/config.json:/SnowWatch-SODALITE/config.json"
+          ],
+          "label": "volumes"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/5nq8pufmcm9ia090hd9rjghaj7/registry_ip": {
-          "value": "{ get_input: docker-registry-url }",
-          "label": "registry_ip"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/docker_network_name": {
+          "specification": {
+            "get_property": {
+              "entity": "SELF",
+              "req_cap": "network",
+              "property": "name"
+            }
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/country_name": {
-          "value": "{ get_input: docker-registry-cert-country-name }",
-          "label": "country_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
+          "value": "snow-daily-median-aggregator:latest",
+          "label": "image_name"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
+          "value": [
+            "{{ ansible_date_time.date }}",
+            "34 40 50 62 608 666 822 852 943 1307 6666"
+          ],
+          "label": "command"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/restart_policy": {
+          "value": "always",
+          "label": "restart_policy"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
+          "value": "{ get_input: docker-registry-url }",
+          "label": "registry_url"
         }
       }
     ],
     "requirements": [
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-network": {
+              "label": "snow-docker-network"
+            },
+            "label": "network"
+          }
+        }
+      },
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-configuration-demo": {
+              "label": "snow-configuration-demo"
             },
             "label": "dependency"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
-              "label": "snow-vm_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-mysql": {
+              "label": "snow-mysql"
             },
-            "label": "host"
+            "label": "dependency"
           }
         }
-      }
-    ]
-  },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-demo-output1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/5nf45bccrr6rmkt2f4cinoi6u/sodalite.nodes.DockerVolume",
-    "isNodeTemplate": true,
-    "properties": [
+      },
       {
-        "https://www.sodalite.eu/ontologies/tosca/name": {
-          "value": "snow_volume_demo_output",
-          "label": "name"
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-daily-shots": {
+              "label": "snow-docker-volume-daily-shots"
+            },
+            "label": "dependency"
+          }
         }
-      }
-    ],
-    "requirements": [
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-shots": {
+              "label": "snow-docker-volume-shots"
+            },
+            "label": "dependency"
+          }
+        }
+      },
       {
         "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
-              "label": "snow-vm_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
             },
             "label": "host"
           }
         }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+              "label": "snow-docker-registry"
+            },
+            "label": "registry"
+          }
+        }
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-daily-shots1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/5nf45bccrr6rmkt2f4cinoi6u/sodalite.nodes.DockerVolume",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm-2": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/sodalite.nodes.OpenStack.VM",
     "isNodeTemplate": true,
     "properties": [
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/flavor": {
+          "value": "{ get_input: flavor-name }",
+          "label": "flavor"
+        }
+      },
       {
         "https://www.sodalite.eu/ontologies/tosca/name": {
-          "value": "snow_volume_daily_shots",
-          "label": "name"
-        }
-      }
-    ],
-    "requirements": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
-              "label": "snow-vm_1"
-            },
-            "label": "host"
-          }
-        }
-      }
-    ]
-  },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm-2_1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/sodalite.nodes.OpenStack.VM",
-    "isNodeTemplate": true,
-    "properties": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/name": {
-          "value": "snow-vm_am_9",
+          "value": "snow-vm_am_9",
           "label": "name"
         }
       },
@@ -1075,15 +1284,15 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/security_groups": {
-          "value": "{ get_input: security-groups }",
-          "label": "security_groups"
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/image": {
+          "value": "{ get_input: image-name }",
+          "label": "image"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/flavor": {
-          "value": "{ get_input: flavor-name }",
-          "label": "flavor"
+        "https://www.sodalite.eu/ontologies/workspace/1/u1lnsc0k73f78hmqhe2b7jfac3/username": {
+          "value": "centos",
+          "label": "username"
         }
       },
       {
@@ -1093,9 +1302,9 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/image": {
-          "value": "{ get_input: image-name }",
-          "label": "image"
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/security_groups": {
+          "value": "{ get_input: security-groups }",
+          "label": "security_groups"
         }
       }
     ],
@@ -1103,8 +1312,8 @@
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/protected_by": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/security-rules-snow1": {
-              "label": "security-rules-snow1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-security-rules": {
+              "label": "snow-security-rules"
             },
             "label": "protected_by"
           }
@@ -1112,93 +1321,109 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-daily-median-aggregator1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-configuration-demo": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/sodalite.nodes.ConfigurationDemo",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker_network_name": {}
-      },
+        "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/mysql_db_pass": {
+          "value": "{ get_input: mysql-db-pass }",
+          "label": "mysql_db_pass"
+        }
+      }
+    ],
+    "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "value": "snow-daily-median-aggregator1:latest",
-          "label": "image_name"
+        "https://www.sodalite.eu/ontologies/tosca/host": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
+              "label": "snow-vm"
+            },
+            "label": "host"
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/restart_policy": {
-          "value": "always",
-          "label": "restart_policy"
+        "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/remote_server": {
+          "value": {
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm-2": {
+              "label": "snow-vm-2"
+            },
+            "label": "remote_server"
+          }
         }
-      },
+      }
+    ]
+  },
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-demo-nginx": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
+    "isNodeTemplate": true,
+    "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "value": "snow-daily-median-aggregator1",
-          "label": "alias"
+        "https://www.sodalite.eu/ontologies/tosca/ports": {
+          "value": [
+            "80:80"
+          ],
+          "label": "ports"
         }
       },
       {
         "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
           "value": [
-            "snow_volume_daily_shots:/SnowWatch-SODALITE/data/daily_shots",
-            "snow_volume_shots:/SnowWatch-SODALITE/data/shots",
-            "/tmp/conf/config.json:/SnowWatch-SODALITE/config.json"
+            "snow_volume_demo_output:/usr/share/nginx/html"
           ],
           "label": "volumes"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
-          "value": "{ get_input: docker-registry-url }",
-          "label": "registry_url"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
+          "value": [
+            "80"
+          ],
+          "label": "exposed_ports"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
-          "value": [
-            "{{ ansible_date_time.date }}",
-            "34 40 50 62 608 666 822 852 943 1307 6666"
-          ],
-          "label": "command"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
+          "value": "nginx:latest",
+          "label": "image_name"
         }
-      }
-    ],
-    "requirements": [
+      },
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/configuration-demo1": {
-              "label": "configuration-demo1"
-            },
-            "label": "dependency"
-          }
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/restart_policy": {
+          "value": "always",
+          "label": "restart_policy"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-shots1": {
-              "label": "snow-docker-volume-shots1"
-            },
-            "label": "dependency"
-          }
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
+          "value": "snow-nginx",
+          "label": "alias"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
+          "value": "{ get_input: docker-registry-url }",
+          "label": "registry_url"
+        }
+      }
+    ],
+    "requirements": [
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-network1": {
-              "label": "snow-docker-network1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+              "label": "snow-docker-registry"
             },
-            "label": "network"
+            "label": "registry"
           }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
             },
             "label": "host"
           }
@@ -1207,68 +1432,60 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-daily-shots1": {
-              "label": "snow-docker-volume-daily-shots1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-volume-demo-output": {
+              "label": "snow-docker-volume-demo-output"
             },
             "label": "dependency"
           }
         }
+      }
+    ]
+  },
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry-certificate-2": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/sodalite.nodes.RegistryCertificate",
+    "isNodeTemplate": true,
+    "properties": [
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/registry_ip": {
+          "value": "{ get_input: docker-registry-url }",
+          "label": "registry_ip"
+        }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-mysql1": {
-              "label": "snow-mysql1"
-            },
-            "label": "dependency"
-          }
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/country_name": {
+          "value": "{ get_input: docker-registry-cert-country-name }",
+          "label": "country_name"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/kuo5nrsil2t33ktj3mb8sfnci2/docker-registry1": {
-              "label": "docker-registry1"
-            },
-            "label": "registry"
-          }
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/organization_name": {
+          "value": "{ get_input: docker-registry-cert-organization-name }",
+          "label": "organization_name"
         }
-      }
-    ]
-  },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-masks1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/5nf45bccrr6rmkt2f4cinoi6u/sodalite.nodes.DockerVolume",
-    "isNodeTemplate": true,
-    "properties": [
+      },
       {
-        "https://www.sodalite.eu/ontologies/tosca/name": {
-          "value": "snow_volume_masks",
-          "label": "name"
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/email_address": {
+          "value": "{ get_input: docker-registry-cert-email-address }",
+          "label": "email_address"
         }
       }
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
-              "label": "snow-vm_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host-2": {
+              "label": "snow-docker-host-2"
             },
-            "label": "host"
+            "label": "dependency"
           }
         }
-      }
-    ]
-  },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host-2_1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/i5rq2l9e5at501mve07ubclavq/sodalite.nodes.DockerHost",
-    "isNodeTemplate": true,
-    "requirements": [
+      },
       {
         "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm-2_1": {
-              "label": "snow-vm-2_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm-2": {
+              "label": "snow-vm-2"
             },
             "label": "host"
           }
@@ -1276,51 +1493,69 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/docker-registry-certificate-2_1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/sodalite.nodes.RegistryCertificate",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-skyline-extractor": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/email_address": {
-          "value": "{ get_input: docker-registry-cert-email-address }",
-          "label": "email_address"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
+          "value": "snow-skyline-extractor",
+          "label": "alias"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/organization_name": {
-          "value": "{ get_input: docker-registry-cert-organization-name }",
-          "label": "organization_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
+          "value": "snow-skyline-extractor:latest",
+          "label": "image_name"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/country_name": {
-          "value": "{ get_input: docker-registry-cert-country-name }",
-          "label": "country_name"
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
+          "value": [
+            "/tmp/docker:/tmp"
+          ],
+          "label": "volumes"
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/5nq8pufmcm9ia090hd9rjghaj7/registry_ip": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
           "value": "{ get_input: docker-registry-url }",
-          "label": "registry_ip"
+          "label": "registry_url"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
+          "value": [
+            "8080"
+          ],
+          "label": "exposed_ports"
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/ports": {
+          "value": [
+            "8080:8080"
+          ],
+          "label": "ports"
         }
       }
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host-2_1": {
-              "label": "snow-docker-host-2_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-registry": {
+              "label": "snow-docker-registry"
             },
-            "label": "dependency"
+            "label": "registry"
           }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm-2_1": {
-              "label": "snow-vm-2_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host-2": {
+              "label": "snow-docker-host-2"
             },
             "label": "host"
           }
@@ -1328,33 +1563,23 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/docker-registry1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/sodalite.nodes.DockerRegistry",
+  "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-network": {
+    "type": "https://www.sodalite.eu/ontologies/workspace/1/kijggphp9tsu7g26a5ve5e8ck0/sodalite.nodes.DockerNetwork",
     "isNodeTemplate": true,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/5nq8pufmcm9ia090hd9rjghaj7/docker_registry_url": {
-          "value": "{ get_input: docker-registry-url }",
-          "label": "docker_registry_url"
+        "https://www.sodalite.eu/ontologies/tosca/name": {
+          "value": "{ get_input: docker-network }",
+          "label": "name"
         }
       }
     ],
     "requirements": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host-2_1": {
-              "label": "snow-docker-host-2_1"
-            },
-            "label": "dependency"
-          }
-        }
-      },
       {
         "https://www.sodalite.eu/ontologies/tosca/host": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-vm_1": {
-              "label": "snow-vm_1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-vm": {
+              "label": "snow-vm"
             },
             "label": "host"
           }
@@ -1363,8 +1588,8 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
+            "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/snow-docker-host": {
+              "label": "snow-docker-host"
             },
             "label": "dependency"
           }
@@ -1372,145 +1597,44 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-webcam-crawler1": {
-    "type": "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent",
-    "isNodeTemplate": true,
+  "https://www.sodalite.eu/ontologies/workspace/1/5nf45bccrr6rmkt2f4cinoi6u/sodalite.nodes.DockerVolume": {
+    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
+    "isNodeTemplate": false,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "value": "snow-webcam-crawler1",
-          "label": "alias"
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
-          "value": "34,40,50,62,608,666,822,852,943,1307,6666",
-          "label": "command"
+        "https://www.sodalite.eu/ontologies/tosca/component_version": {
+          "description": "Domain-specific software component version.",
+          "specification": {
+            "required": false,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/version": {
+                "label": "version"
+              }
+            }
+          }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
-          "value": "{ get_input: docker-registry-url }",
-          "label": "registry_url"
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/dr6n3fi2vs3sre2st451bjsf3l/docker_network_name": {}
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "value": "snow-webcam-crawler1:latest",
-          "label": "image_name"
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
-          "value": [
-            "snow_volume_daily_shots:/SnowWatch-SODALITE/data/daily_shots",
-            "/tmp/conf/config.json: /SnowWatch-SODALITE/WebCamCrawler/config.json",
-            "snow_volume_shots:/SnowWatch-SODALITE/data/shots"
-          ],
-          "label": "volumes"
-        }
-      }
-    ],
-    "requirements": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-mysql1": {
-              "label": "snow-mysql1"
-            },
-            "label": "dependency"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/kuo5nrsil2t33ktj3mb8sfnci2/docker-registry1": {
-              "label": "docker-registry1"
-            },
-            "label": "registry"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-network1": {
-              "label": "snow-docker-network1"
-            },
-            "label": "network"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-volume-shots1": {
-              "label": "snow-docker-volume-shots1"
-            },
-            "label": "dependency"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/snow-docker-host1": {
-              "label": "snow-docker-host1"
+        "https://www.sodalite.eu/ontologies/tosca/name": {
+          "description": "The name of the volume",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
             },
-            "label": "host"
+            "required": true
           }
         }
       },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "value": {
-            "https://www.sodalite.eu/ontologies/workspace/1/cem2u0h71q2odl4fm8o6k69g5k/configuration-demo1": {
-              "label": "configuration-demo1"
-            },
-            "label": "dependency"
-          }
-        }
-      }
-    ]
-  },
-  "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/sodalite.nodes.ConfigurationDemo": {
-    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
-    "isNodeTemplate": false,
-    "properties": [
       {
         "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
           "description": "The optional credential that can be used to authenticate to the software component.",
           "specification": {
-            "required": false,
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
                 "label": "tosca.datatypes.Credential"
               }
-            }
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/mysql_db_pass": {
-          "description": "MYSQL database password",
-          "specification": {
-            "required": true,
-            "type": "string"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/component_version": {
-          "description": "Domain-specific software component version.",
-          "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/version": {
-                "label": "version"
-              }
             },
             "required": false
           }
@@ -1519,8 +1643,8 @@
     ],
     "attributes": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/state": {
-          "description": "The state of the node instance.",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
+          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -1531,8 +1655,8 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
-          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
+        "https://www.sodalite.eu/ontologies/tosca/state": {
+          "description": "The state of the node instance.",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -1543,8 +1667,8 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
-          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
+          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -1559,15 +1683,15 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "specification": {
+            "occurrences": [
+              "0",
+              "UNBOUNDED"
+            ],
             "capability": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
                 "label": "tosca.capabilities.Node"
               }
             },
-            "occurrences": [
-              "0",
-              "UNBOUNDED"
-            ],
             "relationship": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
                 "label": "tosca.relationships.DependsOn"
@@ -1582,39 +1706,18 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/remote_server": {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "specification": {
-            "node": {
-              "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/sodalite.nodes.OpenStack.VM": {
-                "label": "sodalite.nodes.OpenStack.VM"
-              }
-            },
-            "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
-                "label": "tosca.relationships.DependsOn"
-              }
-            },
             "capability": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
                 "label": "tosca.capabilities.Compute"
               }
-            }
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
-          "specification": {
+            },
             "relationship": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
                 "label": "tosca.relationships.HostedOn"
               }
             },
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
-                "label": "tosca.capabilities.Compute"
-              }
-            },
             "node": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
                 "label": "tosca.nodes.Compute"
@@ -1641,178 +1744,227 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/Standard": {
           "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
+                "label": "tosca.interfaces.node.lifecycle.Standard"
+              }
+            },
             "operations": {
               "create": {
+                "implementation": {
+                  "primary": {
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/add_volume.yml",
+                    "url": "http://160.40.52.200:8084/Ansibles/97d6afb6-7ed5-4400-af71-f1e6afc9bef5"
+                  }
+                },
                 "inputs": {
-                  "mysql_db_pass": {
+                  "volume_name": {
                     "default": {
                       "get_property": {
-                        "property": "mysql_db_pass",
+                        "property": "name",
                         "entity": "SELF"
                       }
                     }
-                  },
-                  "remote_server": {
-                    "default": {
-                      "get_attribute": {
-                        "attribute": "public_address",
-                        "entity": "SELF",
-                        "req_cap": "remote_server"
-                      }
-                    }
                   }
-                },
+                }
+              },
+              "delete": {
                 "implementation": {
-                  "dependencies": {
-                    "file": {
-                      "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/snow-uc/snow-demo/playbooks/config.json.tmpl",
-                      "url": "http://160.40.52.200:8084/Ansibles/e008e756-1380-4c85-acb2-91f34ea3115d"
-                    }
-                  },
                   "primary": {
-                    "url": "http://160.40.52.200:8084/Ansibles/2d57b396-0e23-479e-972e-49f1ee33417c",
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/snow-uc/snow-demo/playbooks/configure_demo.yml"
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/remove_volume.yml",
+                    "url": "http://160.40.52.200:8084/Ansibles/8472698e-044e-470b-9805-7bc5046f3146"
+                  }
+                },
+                "inputs": {
+                  "volume_name": {
+                    "default": {
+                      "get_property": {
+                        "property": "name",
+                        "entity": "SELF"
+                      }
+                    }
                   }
                 }
               }
-            },
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
-                "label": "tosca.interfaces.node.lifecycle.Standard"
-              }
             }
           }
         }
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/sodalite.nodes.OpenStack.VM": {
-    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute",
+  "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent": {
+    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
     "isNodeTemplate": false,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/key_name": {
-          "description": "OpenStack SSH key name that should be placed on the VM",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/restart_policy": {
+          "description": "Restart policy [no, on-failure, always, unless-stopped]",
           "specification": {
             "required": false,
-            "type": "string"
+            "default": "always",
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/flavor": {
-          "description": "OpenStack flavor id (flavor names are not accepted)",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/docker_network_name": {
+          "description": "Alias name for docker container",
           "specification": {
-            "type": "string",
-            "required": false
+            "default": "",
+            "required": false,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/image": {
-          "description": "OpenStack image id (image names are not accepted)",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/env": {
+          "description": "Map for docker enviroment variables key-value dictionary",
           "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/map": {
+                "label": "map"
+              }
+            },
             "required": false,
-            "type": "string"
+            "default": "{}"
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/name": {
-          "description": "Name that should be given to the VM in OpenStack",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
+          "description": "The name of the image on the host",
           "specification": {
-            "type": "string",
-            "required": false
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "required": true
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/security_groups": {
-          "description": "OpenStack names of the security groups to which the instance should be added.Comma separated string.",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sleep": {
+          "description": "Sleep after image is deployed",
           "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/integer": {
+                "label": "integer"
+              }
+            },
             "required": false,
-            "type": "string"
+            "default": 0
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
-          "description": "OpenStack network id (network names are not accepted)",
-          "specification": {
-            "required": false,
-            "type": "string"
-          }
-        }
-      }
-    ],
-    "attributes": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/state": {
-          "description": "The state of the node instance.",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
+          "description": "Exposed ports of the container like \"8081\"",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
                 "label": "string"
               }
-            }
+            },
+            "default": [],
+            "required": false
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/ports": {
-          "description": "The list of logical ports assigned to the compute host instance and information about them.",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
+          "description": "The URL of the registry containing images",
           "specification": {
-            "entry_schema": {
-              "type": {
-                "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.network.PortInfo": {
-                  "label": "tosca.datatypes.network.PortInfo"
-                }
+            "required": true,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
+          "description": "The optional credential that can be used to authenticate to the software component.",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
+                "label": "tosca.datatypes.Credential"
               }
             },
+            "required": false
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/ports": {
+          "description": "Port binding for the docker container \"exposed:internal\" like \"8081:8080\"",
+          "specification": {
+            "required": false,
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/map": {
-                "label": "map"
+              "https://www.sodalite.eu/ontologies/tosca/list": {
+                "label": "list"
               }
-            }
+            },
+            "default": []
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/public_address": {
-          "description": "The primary public IP address assigned by the cloud provider that applications may use to access the Compute node.",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
+          "description": "Commands list for starting the container",
           "specification": {
+            "required": false,
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/string": {
-                "label": "string"
+              "https://www.sodalite.eu/ontologies/tosca/list": {
+                "label": "list"
               }
-            }
+            },
+            "default": ""
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/ansible_ip": {
-          "description": "ansible ipv4",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
+          "description": "A list of mounted volumes for the docker container \"host_path:container_path\" like \"/tmp/docker:/tmp\"",
           "specification": {
-            "type": "string"
+            "required": false,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/list": {
+                "label": "list"
+              }
+            },
+            "default": []
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
-          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
+        "https://www.sodalite.eu/ontologies/tosca/component_version": {
+          "description": "Domain-specific software component version.",
           "specification": {
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/string": {
-                "label": "string"
+              "https://www.sodalite.eu/ontologies/tosca/version": {
+                "label": "version"
               }
-            }
+            },
+            "required": false
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
-          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
+          "description": "Alias name for docker container",
           "specification": {
+            "required": true,
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
                 "label": "string"
@@ -1822,16 +1974,23 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/id": {
-          "description": "OpenStack id of the VM",
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/hostname": {
+          "description": "The container's hostname",
           "specification": {
-            "type": "string"
+            "required": false,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
           }
         }
-      },
+      }
+    ],
+    "attributes": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/private_address": {
-          "description": "The primary private IP address assigned by the cloud provider that applications may use to access the Compute node.",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
+          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -1842,23 +2001,24 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/networks": {
-          "description": "The list of logical networks assigned to the compute host instance and information about them.",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
+          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
           "specification": {
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/map": {
-                "label": "map"
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
               }
             }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/entry_schema": {
+        "https://www.sodalite.eu/ontologies/tosca/state": {
+          "description": "The state of the node instance.",
           "specification": {
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.network.NetworkInfo": {
-                "label": "tosca.datatypes.network.NetworkInfo"
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
               }
             }
           }
@@ -1867,105 +2027,61 @@
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
           "specification": {
             "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
-                "label": "tosca.capabilities.Node"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Network": {
+                "label": "tosca.capabilities.Network"
               }
             },
             "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
-                "label": "tosca.nodes.Root"
+              "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerNetwork": {
+                "label": "sodalite.nodes.DockerNetwork"
               }
             },
             "relationship": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
                 "label": "tosca.relationships.DependsOn"
               }
-            },
-            "occurrences": [
-              "0",
-              "UNBOUNDED"
-            ]
+            }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/local_storage": {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "specification": {
-            "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Storage.BlockStorage": {
-                "label": "tosca.nodes.Storage.BlockStorage"
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
+                "label": "tosca.capabilities.Compute"
               }
             },
-            "occurrences": [
-              "0",
-              "UNBOUNDED"
-            ],
             "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.AttachesTo": {
-                "label": "tosca.relationships.AttachesTo"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
+                "label": "tosca.relationships.HostedOn"
               }
             },
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Attachment": {
-                "label": "tosca.capabilities.Attachment"
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
+                "label": "tosca.nodes.Compute"
               }
             }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/protected_by": {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
           "specification": {
             "node": {
-              "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/sodalite.nodes.OpenStack.SecurityRules": {
-                "label": "sodalite.nodes.OpenStack.SecurityRules"
-              }
-            },
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
-                "label": "tosca.capabilities.Node"
+              "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/sodalite.nodes.DockerRegistry": {
+                "label": "sodalite.nodes.DockerRegistry"
               }
             },
             "relationship": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
                 "label": "tosca.relationships.DependsOn"
               }
-            }
-          }
-        }
-      }
-    ],
-    "capabilities": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/os": {
-          "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.OperatingSystem": {
-                "label": "tosca.capabilities.OperatingSystem"
-              }
-            }
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/endpoint": {
-          "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Endpoint.Admin": {
-                "label": "tosca.capabilities.Endpoint.Admin"
-              }
-            }
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/feature": {
-          "specification": {
-            "valid_source_types": {},
-            "type": {
+            },
+            "capability": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
                 "label": "tosca.capabilities.Node"
               }
@@ -1974,47 +2090,38 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/scalable": {
-          "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Scalable": {
-                "label": "tosca.capabilities.Scalable"
-              }
-            }
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/binding": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.network.Bindable": {
-                "label": "tosca.capabilities.network.Bindable"
+            "occurrences": [
+              "0",
+              "UNBOUNDED"
+            ],
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
+                "label": "tosca.nodes.Root"
               }
-            }
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
-          "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
-                "label": "tosca.capabilities.Compute"
+            },
+            "relationship": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
+                "label": "tosca.relationships.DependsOn"
               }
             },
-            "valid_source_types": [
-              "tosca.nodes.SoftwareComponent"
-            ]
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
+                "label": "tosca.capabilities.Node"
+              }
+            }
           }
         }
-      },
+      }
+    ],
+    "capabilities": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/tosca/feature": {
           "specification": {
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
-                "label": "tosca.capabilities.Compute"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
+                "label": "tosca.capabilities.Node"
               }
             }
           }
@@ -2025,87 +2132,137 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/Standard": {
           "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
+                "label": "tosca.interfaces.node.lifecycle.Standard"
+              }
+            },
             "operations": {
-              "delete": {
-                "implementation": {
-                  "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/vm_delete.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/3828dab9-220f-4f38-b425-59a459315f4c"
-                  }
-                },
+              "create": {
                 "inputs": {
-                  "id": {
+                  "command": {
                     "default": {
-                      "get_attribute": {
+                      "get_property": {
                         "entity": "SELF",
-                        "attribute": "id"
+                        "property": "command"
                       }
                     }
-                  }
-                }
-              },
-              "create": {
-                "implementation": {
-                  "primary": {
-                    "url": "http://160.40.52.200:8084/Ansibles/e8f67cde-c4b5-4beb-94a8-5c08e94cac22",
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/vm_create.yml"
-                  }
-                },
-                "inputs": {
-                  "security_groups": {
+                  },
+                  "restart_policy": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "security_groups"
+                        "property": "restart_policy"
                       }
                     }
                   },
-                  "key_name": {
+                  "alias": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "key_name"
+                        "property": "alias"
                       }
                     }
                   },
-                  "image": {
+                  "exposed_ports": {
                     "default": {
                       "get_property": {
-                        "property": "image",
+                        "property": "exposed_ports",
                         "entity": "SELF"
                       }
                     }
                   },
-                  "network": {
+                  "docker_network_name": {
                     "default": {
                       "get_property": {
-                        "entity": "SELF",
-                        "property": "network"
+                        "property": "docker_network_name",
+                        "entity": "SELF"
                       }
                     }
                   },
-                  "vm_name": {
+                  "image_name": {
+                    "default": {
+                      "get_property": {
+                        "property": "image_name",
+                        "entity": "SELF"
+                      }
+                    }
+                  },
+                  "env": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "name"
+                        "property": "env"
                       }
                     }
                   },
-                  "flavor": {
+                  "sleep": {
                     "default": {
                       "get_property": {
-                        "property": "flavor",
+                        "property": "sleep",
+                        "entity": "SELF"
+                      }
+                    }
+                  },
+                  "registry_url": {
+                    "default": {
+                      "get_property": {
+                        "property": "docker_registry_url",
+                        "req_cap": "registry",
                         "entity": "SELF"
                       }
                     }
+                  },
+                  "public_address": {
+                    "default": {
+                      "get_attribute": {
+                        "entity": "SELF",
+                        "attribute": "public_address",
+                        "req_cap": "host"
+                      }
+                    }
+                  },
+                  "ports": {
+                    "default": {
+                      "get_property": {
+                        "entity": "SELF",
+                        "property": "ports"
+                      }
+                    }
+                  },
+                  "volumes": {
+                    "default": {
+                      "get_property": {
+                        "entity": "SELF",
+                        "property": "volumes"
+                      }
+                    }
+                  }
+                },
+                "implementation": {
+                  "primary": {
+                    "url": "http://160.40.52.200:8084/Ansibles/e0a2fe8a-b902-4a05-ab00-8638b4308705",
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/add_container.yml"
+                  }
+                }
+              },
+              "delete": {
+                "inputs": {
+                  "alias": {
+                    "default": {
+                      "get_property": {
+                        "entity": "SELF",
+                        "property": "alias"
+                      }
+                    }
+                  }
+                },
+                "implementation": {
+                  "primary": {
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/remove_container.yml",
+                    "url": "http://160.40.52.200:8084/Ansibles/ffdf5083-a0b3-48e4-9891-8237d259e4e3"
                   }
                 }
-              }
-            },
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
-                "label": "tosca.interfaces.node.lifecycle.Standard"
               }
             }
           }
@@ -2113,17 +2270,20 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sodalite.nodes.DockerizedComponent": {
+  "https://www.sodalite.eu/ontologies/workspace/1/i5rq2l9e5at501mve07ubclavq/sodalite.nodes.DockerHost": {
     "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
     "isNodeTemplate": false,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/ports": {
-          "description": "Port binding for the docker container \"exposed:internal\" like \"8081:8080\"",
+        "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
+          "description": "The optional credential that can be used to authenticate to the software component.",
           "specification": {
             "required": false,
-            "default": [],
-            "type": "list"
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
+                "label": "tosca.datatypes.Credential"
+              }
+            }
           }
         }
       },
@@ -2139,130 +2299,24 @@
             "required": false
           }
         }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/sleep": {
-          "description": "Sleep after image is deployed",
-          "specification": {
-            "default": 0,
-            "required": false,
-            "type": "integer"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/exposed_ports": {
-          "description": "Exposed ports of the container like \"8081\"",
-          "specification": {
-            "required": false,
-            "type": "string",
-            "default": []
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/env": {
-          "description": "Map for docker enviroment variables key-value dictionary",
-          "specification": {
-            "default": "{}",
-            "required": false,
-            "type": "map"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/image_name": {
-          "description": "The name of the image on the host",
-          "specification": {
-            "type": "string",
-            "required": true
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/restart_policy": {
-          "description": "Restart policy [no, on-failure, always, unless-stopped]",
-          "specification": {
-            "required": false,
-            "type": "string",
-            "default": "always"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/command": {
-          "description": "Commands list for starting the container",
-          "specification": {
-            "type": "list",
-            "required": false,
-            "default": ""
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/volumes": {
-          "description": "A list of mounted volumes for the docker container \"host_path:container_path\" like \"/tmp/docker:/tmp\"",
-          "specification": {
-            "required": false,
-            "type": "list",
-            "default": []
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry_url": {
-          "description": "The URL of the registry containing images",
-          "specification": {
-            "type": "string",
-            "required": true
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/alias": {
-          "description": "Alias name for docker container",
-          "specification": {
-            "required": true,
-            "type": "string"
-          }
-        }
-      },
+      }
+    ],
+    "attributes": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
-          "description": "The optional credential that can be used to authenticate to the software component.",
+        "https://www.sodalite.eu/ontologies/tosca/state": {
+          "description": "The state of the node instance.",
           "specification": {
-            "required": false,
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
-                "label": "tosca.datatypes.Credential"
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
               }
             }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/hostname": {
-          "description": "The container hostname",
-          "specification": {
-            "type": "string",
-            "required": false
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/kijggphp9tsu7g26a5ve5e8ck0/docker_network_name": {
-          "description": "Alias name for docker container",
-          "specification": {
-            "type": "string",
-            "required": false
-          }
-        }
-      }
-    ],
-    "attributes": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/state": {
-          "description": "The state of the node instance.",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
+          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -2285,8 +2339,8 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
-          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
+        "https://www.sodalite.eu/ontologies/tosca/public_address": {
+          "description": "Host's IP",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -2306,61 +2360,396 @@
                 "label": "tosca.capabilities.Compute"
               }
             },
-            "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
-                "label": "tosca.relationships.HostedOn"
-              }
-            },
             "node": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
                 "label": "tosca.nodes.Compute"
               }
+            },
+            "relationship": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
+                "label": "tosca.relationships.HostedOn"
+              }
             }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/registry": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "specification": {
             "capability": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
                 "label": "tosca.capabilities.Node"
               }
             },
-            "node": {
-              "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/sodalite.nodes.DockerRegistry": {
-                "label": "sodalite.nodes.DockerRegistry"
-              }
-            },
+            "occurrences": [
+              "0",
+              "UNBOUNDED"
+            ],
             "relationship": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
                 "label": "tosca.relationships.DependsOn"
               }
-            }
+            },
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
+                "label": "tosca.nodes.Root"
+              }
+            }
+          }
+        }
+      }
+    ],
+    "capabilities": [
+      {
+        "https://www.sodalite.eu/ontologies/tosca/feature": {
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
+                "label": "tosca.capabilities.Node"
+              }
+            }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "specification": {
-            "node": {
-              "https://www.sodalite.eu/ontologies/workspace/1/kijggphp9tsu7g26a5ve5e8ck0/sodalite.nodes.DockerNetwork": {
-                "label": "sodalite.nodes.DockerNetwork"
+            "valid_source_types": [
+              "sodalite.nodes.DockerizedComponent"
+            ],
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
+                "label": "tosca.capabilities.Node"
+              }
+            }
+          }
+        }
+      }
+    ],
+    "interfaces": [
+      {
+        "https://www.sodalite.eu/ontologies/tosca/Standard": {
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
+                "label": "tosca.interfaces.node.lifecycle.Standard"
               }
             },
-            "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
-                "label": "tosca.relationships.DependsOn"
+            "operations": {
+              "create": {
+                "implementation": {
+                  "primary": {
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/create_docker_host.yml",
+                    "url": "http://160.40.52.200:8084/Ansibles/4728fc1a-6c69-483e-a85c-a768ef7b5c4f"
+                  }
+                },
+                "inputs": {
+                  "host_public_address": {
+                    "default": {
+                      "get_attribute": {
+                        "entity": "SELF",
+                        "req_cap": "host",
+                        "attribute": "public_address"
+                      }
+                    }
+                  }
+                }
+              },
+              "delete": {
+                "implementation": {
+                  "primary": {
+                    "url": "http://160.40.52.200:8084/Ansibles/1ef463c3-ea3e-4e2d-9ed0-f0e9c3d2bf4f",
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/delete_docker_host.yml"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    ]
+  },
+  "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/sodalite.nodes.OpenStack.VM": {
+    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute",
+    "isNodeTemplate": false,
+    "properties": [
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/floating_ip_pools": {
+          "description": "Name of floating IP pool from which to choose a floating IP",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
               }
             },
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Network": {
-                "label": "tosca.capabilities.Network"
+            "default": "",
+            "required": false
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/u1lnsc0k73f78hmqhe2b7jfac3/username": {
+          "description": "Username for SSH connection",
+          "specification": {
+            "required": false,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/timeout": {
+          "description": "Timeout to instantiate the VM",
+          "specification": {
+            "default": 600,
+            "required": false,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/integer": {
+                "label": "integer"
               }
             }
           }
         }
       },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/security_groups": {
+          "description": "OpenStack names of the security groups to which the instance should be added.Comma separated string.",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "required": false
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/userdata": {
+          "description": "Additional userdata applied to configure the VM",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "required": false,
+            "default": ""
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/flavor": {
+          "description": "OpenStack flavor id (flavor names are not accepted)",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "required": false
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/name": {
+          "description": "Name that should be given to the VM in OpenStack",
+          "specification": {
+            "required": false,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/image": {
+          "description": "OpenStack image id (image names are not accepted)",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "required": false
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/kijggphp9tsu7g26a5ve5e8ck0/network": {
+          "description": "OpenStack network id (network names are not accepted)",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "required": false
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/key_name": {
+          "description": "OpenStack SSH key name that should be placed on the VM",
+          "specification": {
+            "required": false,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/include_exporter": {
+          "description": "Flag to include exporter",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/boolean": {
+                "label": "boolean"
+              }
+            },
+            "required": false,
+            "default": true
+          }
+        }
+      }
+    ],
+    "attributes": [
+      {
+        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
+          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/state": {
+          "description": "The state of the node instance.",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
+          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/entry_schema": {
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.network.NetworkInfo": {
+                "label": "tosca.datatypes.network.NetworkInfo"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/ports": {
+          "description": "The list of logical ports assigned to the compute host instance and information about them.",
+          "specification": {
+            "entry_schema": {
+              "type": {
+                "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.network.PortInfo": {
+                  "label": "tosca.datatypes.network.PortInfo"
+                }
+              }
+            },
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/map": {
+                "label": "map"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/private_address": {
+          "description": "The primary private IP address assigned by the cloud provider that applications may use to access the Compute node.",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/public_address": {
+          "description": "The primary public IP address assigned by the cloud provider that applications may use to access the Compute node.",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/id": {
+          "description": "OpenStack id of the VM",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/ansible_ip": {
+          "description": "ansible ipv4",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/networks": {
+          "description": "The list of logical networks assigned to the compute host instance and information about them.",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/map": {
+                "label": "map"
+              }
+            }
+          }
+        }
+      }
+    ],
+    "requirements": [
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "specification": {
@@ -2373,14 +2762,60 @@
               "0",
               "UNBOUNDED"
             ],
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
+                "label": "tosca.nodes.Root"
+              }
+            },
             "relationship": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
                 "label": "tosca.relationships.DependsOn"
               }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/local_storage": {
+          "specification": {
+            "occurrences": [
+              "0",
+              "UNBOUNDED"
+            ],
+            "relationship": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.AttachesTo": {
+                "label": "tosca.relationships.AttachesTo"
+              }
+            },
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Attachment": {
+                "label": "tosca.capabilities.Attachment"
+              }
             },
             "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
-                "label": "tosca.nodes.Root"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Storage.BlockStorage": {
+                "label": "tosca.nodes.Storage.BlockStorage"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/protected_by": {
+          "specification": {
+            "node": {
+              "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/sodalite.nodes.OpenStack.SecurityRules": {
+                "label": "sodalite.nodes.OpenStack.SecurityRules"
+              }
+            },
+            "relationship": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
+                "label": "tosca.relationships.DependsOn"
+              }
+            },
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
+                "label": "tosca.capabilities.Node"
               }
             }
           }
@@ -2388,9 +2823,79 @@
       }
     ],
     "capabilities": [
+      {
+        "https://www.sodalite.eu/ontologies/tosca/scalable": {
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Scalable": {
+                "label": "tosca.capabilities.Scalable"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
+          "specification": {
+            "valid_source_types": [
+              "tosca.nodes.SoftwareComponent"
+            ],
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
+                "label": "tosca.capabilities.Compute"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
+                "label": "tosca.capabilities.Compute"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/os": {
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.OperatingSystem": {
+                "label": "tosca.capabilities.OperatingSystem"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/binding": {
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.network.Bindable": {
+                "label": "tosca.capabilities.network.Bindable"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/endpoint": {
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Endpoint.Admin": {
+                "label": "tosca.capabilities.Endpoint.Admin"
+              }
+            }
+          }
+        }
+      },
       {
         "https://www.sodalite.eu/ontologies/tosca/feature": {
           "specification": {
+            "valid_source_types": {},
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
                 "label": "tosca.capabilities.Node"
@@ -2406,126 +2911,132 @@
           "specification": {
             "operations": {
               "create": {
-                "implementation": {
-                  "primary": {
-                    "url": "http://160.40.52.200:8084/Ansibles/045b57b7-2a2b-4490-98b1-764516af2a65",
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/add_container.yml"
-                  }
-                },
                 "inputs": {
-                  "ports": {
+                  "image": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "ports"
+                        "property": "image"
                       }
                     }
                   },
-                  "registry_url": {
+                  "userdata": {
                     "default": {
                       "get_property": {
-                        "property": "docker_registry_url",
-                        "req_cap": "registry",
+                        "property": "userdata",
                         "entity": "SELF"
                       }
                     }
                   },
-                  "exposed_ports": {
+                  "floating_ip_pools": {
                     "default": {
                       "get_property": {
-                        "entity": "SELF",
-                        "property": "exposed_ports"
+                        "property": "floating_ip_pools",
+                        "entity": "SELF"
                       }
                     }
                   },
-                  "volumes": {
+                  "timeout": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "volumes"
+                        "property": "timeout"
                       }
                     }
                   },
-                  "env": {
+                  "vm_name": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "env"
+                        "property": "name"
                       }
                     }
                   },
-                  "restart_policy": {
+                  "ansible_user": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "restart_policy"
+                        "property": "username"
                       }
                     }
                   },
-                  "command": {
-                    "default": {
-                      "get_property": {
-                        "property": "command",
-                        "entity": "SELF"
-                      }
-                    }
-                  },
-                  "public_address": {
+                  "key_name": {
                     "default": {
-                      "get_attribute": {
+                      "get_property": {
                         "entity": "SELF",
-                        "req_cap": "host",
-                        "attribute": "public_address"
+                        "property": "key_name"
                       }
                     }
                   },
-                  "docker_network_name": {
+                  "network": {
                     "default": {
                       "get_property": {
-                        "property": "docker_network_name",
-                        "entity": "SELF"
+                        "entity": "SELF",
+                        "property": "network"
                       }
                     }
                   },
-                  "sleep": {
+                  "include_exporter": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "sleep"
+                        "property": "include_exporter"
                       }
                     }
                   },
-                  "alias": {
+                  "security_groups": {
                     "default": {
                       "get_property": {
-                        "property": "alias",
+                        "property": "security_groups",
                         "entity": "SELF"
                       }
                     }
                   },
-                  "image_name": {
+                  "flavor": {
                     "default": {
                       "get_property": {
-                        "property": "image_name",
+                        "property": "flavor",
                         "entity": "SELF"
                       }
                     }
                   }
+                },
+                "implementation": {
+                  "primary": {
+                    "url": "http://160.40.52.200:8084/Ansibles/76d494af-219b-492e-b263-886a42414399",
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/vm_create.yml"
+                  },
+                  "dependencies": {
+                    "files": [
+                      {
+                        "url": "http://160.40.52.200:8084/Ansibles/ecc0d4dd-f559-4ce7-b0eb-c72992362326",
+                        "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/egi_refresh_token.yml"
+                      }
+                    ]
+                  }
                 }
               },
               "delete": {
                 "implementation": {
+                  "dependencies": {
+                    "files": [
+                      {
+                        "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/egi_refresh_token.yml",
+                        "url": "http://160.40.52.200:8084/Ansibles/8960e765-1f31-4bf2-a3cf-aadf7a96c5af"
+                      }
+                    ]
+                  },
                   "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/remove_container.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/a9ffd599-fb40-4a19-a9d6-30db5407d1ae"
+                    "url": "http://160.40.52.200:8084/Ansibles/b9a151d2-e838-4ff4-94b8-1083e2984d7a",
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/vm_delete.yml"
                   }
                 },
                 "inputs": {
-                  "alias": {
+                  "id": {
                     "default": {
-                      "get_property": {
+                      "get_attribute": {
                         "entity": "SELF",
-                        "property": "alias"
+                        "attribute": "id"
                       }
                     }
                   }
@@ -2542,7 +3053,7 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/kijggphp9tsu7g26a5ve5e8ck0/sodalite.nodes.DockerNetwork": {
+  "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/sodalite.nodes.DockerRegistry": {
     "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
     "isNodeTemplate": false,
     "properties": [
@@ -2550,55 +3061,35 @@
         "https://www.sodalite.eu/ontologies/tosca/component_version": {
           "description": "Domain-specific software component version.",
           "specification": {
+            "required": false,
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/version": {
                 "label": "version"
               }
-            },
-            "required": false
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
-          "description": "The optional credential that can be used to authenticate to the software component.",
-          "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
-                "label": "tosca.datatypes.Credential"
-              }
-            },
-            "required": false
+            }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/name": {
-          "description": "The name of the network",
-          "specification": {
-            "type": "string",
-            "required": true
-          }
-        }
-      }
-    ],
-    "attributes": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
-          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
+        "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/docker_user": {
+          "description": "Docker Hub login",
           "specification": {
+            "required": false,
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
                 "label": "string"
               }
-            }
+            },
+            "default": ""
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/state": {
-          "description": "The state of the node instance.",
+        "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/docker_pass": {
+          "description": "Docker Hub password",
           "specification": {
+            "default": "",
+            "required": false,
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
                 "label": "string"
@@ -2608,190 +3099,48 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
-          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
+        "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/docker_registry_url": {
+          "description": "Docker Hub login",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
                 "label": "string"
               }
-            }
-          }
-        }
-      }
-    ],
-    "requirements": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
-          "specification": {
-            "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
-                "label": "tosca.relationships.DependsOn"
-              }
-            },
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
-                "label": "tosca.capabilities.Node"
-              }
-            },
-            "occurrences": [
-              "0",
-              "UNBOUNDED"
-            ],
-            "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
-                "label": "tosca.nodes.Root"
-              }
-            }
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
-          "specification": {
-            "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
-                "label": "tosca.nodes.Compute"
-              }
-            },
-            "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
-                "label": "tosca.relationships.HostedOn"
-              }
             },
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
-                "label": "tosca.capabilities.Compute"
-              }
-            }
-          }
-        }
-      }
-    ],
-    "capabilities": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/feature": {
-          "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
-                "label": "tosca.capabilities.Node"
-              }
-            }
+            "required": false
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
+        "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
+          "description": "The optional credential that can be used to authenticate to the software component.",
           "specification": {
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Network": {
-                "label": "tosca.capabilities.Network"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
+                "label": "tosca.datatypes.Credential"
               }
             },
-            "valid_source_types": [
-              "sodalite.nodes.DockerizedComponent"
-            ]
+            "required": false
           }
         }
       }
     ],
-    "interfaces": [
+    "attributes": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/Standard": {
+        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
+          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
           "specification": {
-            "operations": {
-              "delete": {
-                "inputs": {
-                  "docker_network_name": {
-                    "default": {
-                      "get_property": {
-                        "entity": "SELF",
-                        "property": "name"
-                      }
-                    }
-                  }
-                },
-                "implementation": {
-                  "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/remove_network.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/f7913d15-7974-4241-99b3-cfd6d0ec793b"
-                  }
-                }
-              },
-              "create": {
-                "inputs": {
-                  "docker_network_name": {
-                    "default": {
-                      "get_property": {
-                        "entity": "SELF",
-                        "property": "name"
-                      }
-                    }
-                  }
-                },
-                "implementation": {
-                  "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/add_network.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/b4cc6090-4790-468d-9e7b-8d6ce85e0424"
-                  }
-                }
-              }
-            },
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
-                "label": "tosca.interfaces.node.lifecycle.Standard"
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
               }
             }
           }
         }
-      }
-    ]
-  },
-  "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/sodalite.nodes.OpenStack.SecurityRules": {
-    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root",
-    "isNodeTemplate": false,
-    "properties": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/ports": {
-          "specification": {
-            "entry_schema": {
-              "type": {
-                "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/sodalite.datatypes.OpenStack.SecurityRule": {
-                  "label": "sodalite.datatypes.OpenStack.SecurityRule"
-                }
-              }
-            },
-            "constraints": {
-              "min_length": 1
-            },
-            "type": "map",
-            "required": false
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/group_name": {
-          "description": "Name of the security group in openstack.",
-          "specification": {
-            "required": true,
-            "type": "string"
-          }
-        }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/group_description": {
-          "description": "Description of the security group in openstack",
-          "specification": {
-            "required": true,
-            "type": "string"
-          }
-        }
-      }
-    ],
-    "attributes": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
-          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
+        "https://www.sodalite.eu/ontologies/tosca/state": {
+          "description": "The state of the node instance.",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -2802,8 +3151,8 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
-          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
+          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -2812,41 +3161,50 @@
             }
           }
         }
-      },
+      }
+    ],
+    "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/state": {
-          "description": "The state of the node instance.",
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/string": {
-                "label": "string"
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
+                "label": "tosca.capabilities.Compute"
+              }
+            },
+            "relationship": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
+                "label": "tosca.relationships.HostedOn"
+              }
+            },
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
+                "label": "tosca.nodes.Compute"
               }
             }
           }
         }
-      }
-    ],
-    "requirements": [
+      },
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "specification": {
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
+                "label": "tosca.capabilities.Node"
+              }
+            },
             "node": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
                 "label": "tosca.nodes.Root"
               }
             },
-            "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
-                "label": "tosca.relationships.DependsOn"
-              }
-            },
             "occurrences": [
               "0",
               "UNBOUNDED"
             ],
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
-                "label": "tosca.capabilities.Node"
+            "relationship": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
+                "label": "tosca.relationships.DependsOn"
               }
             }
           }
@@ -2876,55 +3234,55 @@
               }
             },
             "operations": {
-              "create": {
+              "delete": {
+                "inputs": {
+                  "docker_registry_url": {
+                    "default": {
+                      "get_property": {
+                        "property": "docker_registry_url",
+                        "entity": "SELF"
+                      }
+                    }
+                  }
+                },
                 "implementation": {
                   "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/security_rule_create.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/d60fe710-7d65-4cca-aa8e-737eab3e3a26"
+                    "url": "http://160.40.52.200:8084/Ansibles/013923c7-4f85-42f9-9a7a-800a5c9af1dd",
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/logout_user.yml"
                   }
-                },
+                }
+              },
+              "create": {
                 "inputs": {
-                  "ports": {
+                  "docker_registry_url": {
                     "default": {
                       "get_property": {
-                        "property": "ports",
-                        "entity": "SELF"
+                        "entity": "SELF",
+                        "property": "docker_registry_url"
                       }
                     }
                   },
-                  "group_description": {
+                  "docker_pass": {
                     "default": {
                       "get_property": {
-                        "property": "group_description",
-                        "entity": "SELF"
+                        "entity": "SELF",
+                        "property": "docker_pass"
                       }
                     }
                   },
-                  "group_name": {
+                  "docker_user": {
                     "default": {
                       "get_property": {
-                        "entity": "SELF",
-                        "property": "group_name"
+                        "property": "docker_user",
+                        "entity": "SELF"
                       }
                     }
                   }
-                }
-              },
-              "delete": {
+                },
                 "implementation": {
                   "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/security_rule_delete.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/2461b289-4435-4031-a999-1de0d0a6c5ff"
-                  }
-                },
-                "inputs": {
-                  "group_name": {
-                    "default": {
-                      "get_property": {
-                        "entity": "SELF",
-                        "property": "group_name"
-                      }
-                    }
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/login_user.yml",
+                    "url": "http://160.40.52.200:8084/Ansibles/35d91cc4-f4f0-44f2-af2d-080607a18456"
                   }
                 }
               }
@@ -2934,42 +3292,55 @@
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/5nf45bccrr6rmkt2f4cinoi6u/sodalite.nodes.DockerVolume": {
-    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
+  "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/sodalite.nodes.OpenStack.SecurityRules": {
+    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root",
     "isNodeTemplate": false,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
-          "description": "The optional credential that can be used to authenticate to the software component.",
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/group_name": {
+          "description": "Name of the security group in openstack.",
           "specification": {
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
-                "label": "tosca.datatypes.Credential"
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
               }
             },
-            "required": false
+            "required": true
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/name": {
-          "description": "The name of the volume",
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/group_description": {
+          "description": "Description of the security group in openstack",
           "specification": {
-            "required": true,
-            "type": "string"
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "required": true
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/component_version": {
-          "description": "Domain-specific software component version.",
+        "https://www.sodalite.eu/ontologies/tosca/ports": {
           "specification": {
-            "required": false,
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/version": {
-                "label": "version"
+              "https://www.sodalite.eu/ontologies/tosca/map": {
+                "label": "map"
               }
-            }
+            },
+            "constraints": {
+              "min_length": 1
+            },
+            "entry_schema": {
+              "type": {
+                "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/sodalite.datatypes.OpenStack.SecurityRule": {
+                  "label": "sodalite.datatypes.OpenStack.SecurityRule"
+                }
+              }
+            },
+            "required": false
           }
         }
       }
@@ -3016,6 +3387,15 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "specification": {
+            "occurrences": [
+              "0",
+              "UNBOUNDED"
+            ],
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
+                "label": "tosca.nodes.Root"
+              }
+            },
             "relationship": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
                 "label": "tosca.relationships.DependsOn"
@@ -3025,36 +3405,6 @@
               "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
                 "label": "tosca.capabilities.Node"
               }
-            },
-            "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
-                "label": "tosca.nodes.Root"
-              }
-            },
-            "occurrences": [
-              "0",
-              "UNBOUNDED"
-            ]
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
-          "specification": {
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
-                "label": "tosca.capabilities.Compute"
-              }
-            },
-            "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
-                "label": "tosca.nodes.Compute"
-              }
-            },
-            "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
-                "label": "tosca.relationships.HostedOn"
-              }
             }
           }
         }
@@ -3077,58 +3427,143 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/Standard": {
           "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
-                "label": "tosca.interfaces.node.lifecycle.Standard"
-              }
-            },
             "operations": {
               "create": {
-                "implementation": {
-                  "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/add_volume.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/520afe9e-b083-444e-9b93-74765c7e90ac"
-                  }
-                },
                 "inputs": {
-                  "volume_name": {
+                  "group_name": {
+                    "default": {
+                      "get_property": {
+                        "property": "group_name",
+                        "entity": "SELF"
+                      }
+                    }
+                  },
+                  "ports": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "name"
+                        "property": "ports"
+                      }
+                    }
+                  },
+                  "group_description": {
+                    "default": {
+                      "get_property": {
+                        "property": "group_description",
+                        "entity": "SELF"
                       }
                     }
                   }
-                }
-              },
-              "delete": {
+                },
                 "implementation": {
+                  "dependencies": {
+                    "files": [
+                      {
+                        "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/egi_refresh_token.yml",
+                        "url": "http://160.40.52.200:8084/Ansibles/f8b77694-50d3-4491-ad2c-570d66936562"
+                      }
+                    ]
+                  },
                   "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/remove_volume.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/f7180043-ff5f-4693-be05-014f90b7977c"
+                    "url": "http://160.40.52.200:8084/Ansibles/9c0a5a59-ea21-4674-b29a-cccb3eb8c2a5",
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/security_rule_create.yml"
                   }
-                },
+                }
+              },
+              "delete": {
                 "inputs": {
-                  "volume_name": {
+                  "group_name": {
                     "default": {
                       "get_property": {
-                        "property": "name",
-                        "entity": "SELF"
+                        "entity": "SELF",
+                        "property": "group_name"
                       }
                     }
                   }
+                },
+                "implementation": {
+                  "primary": {
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/security_rule_delete.yml",
+                    "url": "http://160.40.52.200:8084/Ansibles/d0ee2abc-ec33-43f8-bf43-7164753394e0"
+                  },
+                  "dependencies": {
+                    "files": [
+                      {
+                        "url": "http://160.40.52.200:8084/Ansibles/9082492d-a625-4ce7-8b12-9388db367d3a",
+                        "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/openstack/playbooks/egi_refresh_token.yml"
+                      }
+                    ]
+                  }
                 }
               }
+            },
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
+                "label": "tosca.interfaces.node.lifecycle.Standard"
+              }
+            }
+          }
+        }
+      }
+    ]
+  },
+  "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/sodalite.nodes.RegistryCertificate": {
+    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
+    "isNodeTemplate": false,
+    "properties": [
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/registry_ip": {
+          "description": "IP of the SODALITE docker registry",
+          "specification": {
+            "default": "localhost",
+            "required": true,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/country_name": {
+          "description": "Country name field of the certificate signing request subject.",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "required": true
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/email_address": {
+          "description": "The email address field of the certificate signing request subject.",
+          "specification": {
+            "required": true,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
             }
           }
         }
-      }
-    ]
-  },
-  "https://www.sodalite.eu/ontologies/workspace/1/i5rq2l9e5at501mve07ubclavq/sodalite.nodes.DockerHost": {
-    "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
-    "isNodeTemplate": false,
-    "properties": [
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/organization_name": {
+          "description": "The organizationName field of the certificate signing request subject.",
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "required": true
+          }
+        }
+      },
       {
         "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
           "description": "The optional credential that can be used to authenticate to the software component.",
@@ -3146,20 +3581,20 @@
         "https://www.sodalite.eu/ontologies/tosca/component_version": {
           "description": "Domain-specific software component version.",
           "specification": {
-            "required": false,
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/version": {
                 "label": "version"
               }
-            }
+            },
+            "required": false
           }
         }
       }
     ],
     "attributes": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
-          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
+          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -3182,8 +3617,8 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
-          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
+          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -3202,9 +3637,9 @@
               "0",
               "UNBOUNDED"
             ],
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
-                "label": "tosca.capabilities.Node"
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
+                "label": "tosca.nodes.Root"
               }
             },
             "relationship": {
@@ -3212,9 +3647,9 @@
                 "label": "tosca.relationships.DependsOn"
               }
             },
-            "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
-                "label": "tosca.nodes.Root"
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
+                "label": "tosca.capabilities.Node"
               }
             }
           }
@@ -3228,35 +3663,21 @@
                 "label": "tosca.capabilities.Compute"
               }
             },
-            "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
-                "label": "tosca.nodes.Compute"
-              }
-            },
             "relationship": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
                 "label": "tosca.relationships.HostedOn"
               }
+            },
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
+                "label": "tosca.nodes.Compute"
+              }
             }
           }
         }
       }
     ],
     "capabilities": [
-      {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
-          "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
-                "label": "tosca.capabilities.Node"
-              }
-            },
-            "valid_source_types": [
-              "sodalite.nodes.DockerizedComponent"
-            ]
-          }
-        }
-      },
       {
         "https://www.sodalite.eu/ontologies/tosca/feature": {
           "specification": {
@@ -3273,106 +3694,149 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/Standard": {
           "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
+                "label": "tosca.interfaces.node.lifecycle.Standard"
+              }
+            },
             "operations": {
               "create": {
+                "inputs": {
+                  "country_name": {
+                    "default": {
+                      "get_property": {
+                        "property": "country_name",
+                        "entity": "SELF"
+                      }
+                    }
+                  },
+                  "organization_name": {
+                    "default": {
+                      "get_property": {
+                        "property": "organization_name",
+                        "entity": "SELF"
+                      }
+                    }
+                  },
+                  "email_address": {
+                    "default": {
+                      "get_property": {
+                        "property": "email_address",
+                        "entity": "SELF"
+                      }
+                    }
+                  },
+                  "public_ipv4_address": {
+                    "default": {
+                      "get_attribute": {
+                        "req_cap": "host",
+                        "attribute": "public_address",
+                        "entity": "SELF"
+                      }
+                    }
+                  },
+                  "registry_ip": {
+                    "default": {
+                      "get_property": {
+                        "property": "registry_ip",
+                        "entity": "SELF"
+                      }
+                    }
+                  }
+                },
                 "implementation": {
+                  "dependencies": {
+                    "relative_path": "artifacts",
+                    "files": [
+                      {
+                        "path": "/home/yosu/Projects/Sodalite/Git/ide/dsl/org.sodalite.dsl.examples/certificates/docker/ca.key",
+                        "url": "http://160.40.52.200:8084/Ansibles/76c43a80-16a4-48bf-b08e-036dc72a864b"
+                      },
+                      {
+                        "path": "/home/yosu/Projects/Sodalite/Git/ide/dsl/org.sodalite.dsl.examples/certificates/docker/ca.crt",
+                        "url": "http://160.40.52.200:8084/Ansibles/8499031d-0281-414f-b608-938833f4f0d1"
+                      }
+                    ]
+                  },
                   "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/create_docker_host.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/acbb3d50-f145-4279-91e9-be4d0aa5733a"
+                    "relative_path": "playbooks",
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/add_cert.yml",
+                    "url": "http://160.40.52.200:8084/Ansibles/3749fe0a-c9c3-4107-9eee-6f0fd75a4dcf"
                   }
                 }
               },
               "delete": {
+                "inputs": {
+                  "registry_ip": {
+                    "default": {
+                      "get_property": {
+                        "property": "registry_ip",
+                        "entity": "SELF"
+                      }
+                    }
+                  }
+                },
                 "implementation": {
                   "primary": {
-                    "url": "http://160.40.52.200:8084/Ansibles/08fae0a3-5b2b-421e-b61f-c5a97e43e07d",
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/delete_docker_host.yml"
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/remove_cert.yml",
+                    "url": "http://160.40.52.200:8084/Ansibles/b1953769-a682-4acc-93f0-a1cd6e92dded"
                   }
                 }
               }
-            },
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
-                "label": "tosca.interfaces.node.lifecycle.Standard"
-              }
             }
           }
         }
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/sodalite.nodes.RegistryCertificate": {
+  "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/sodalite.nodes.ConfigurationDemo": {
     "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
     "isNodeTemplate": false,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/email_address": {
-          "description": "The email address field of the certificate signing request subject.",
-          "specification": {
-            "required": true,
-            "type": "string"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/registry_ip": {
-          "description": "IP of the SODALITE docker registry",
-          "specification": {
-            "default": "localhost",
-            "type": "string",
-            "required": true
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/organization_name": {
-          "description": "The organizationName field of the certificate signing request subject.",
-          "specification": {
-            "required": true,
-            "type": "string"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/component_version": {
-          "description": "Domain-specific software component version.",
+        "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
+          "description": "The optional credential that can be used to authenticate to the software component.",
           "specification": {
             "required": false,
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/version": {
-                "label": "version"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
+                "label": "tosca.datatypes.Credential"
               }
             }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
-          "description": "The optional credential that can be used to authenticate to the software component.",
+        "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/mysql_db_pass": {
+          "description": "MYSQL database password",
           "specification": {
-            "required": false,
+            "required": true,
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
-                "label": "tosca.datatypes.Credential"
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
               }
             }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/aaqsft03mc3fdn03nrh40st7rc/country_name": {
-          "description": "Country name field of the certificate signing request subject.",
+        "https://www.sodalite.eu/ontologies/tosca/component_version": {
+          "description": "Domain-specific software component version.",
           "specification": {
-            "required": true,
-            "type": "string"
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/version": {
+                "label": "version"
+              }
+            },
+            "required": false
           }
         }
       }
     ],
     "attributes": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/state": {
-          "description": "The state of the node instance.",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
+          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -3383,8 +3847,8 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
-          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
+          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -3395,8 +3859,8 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_name": {
-          "description": "Reflects the name of the Node Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment.",
+        "https://www.sodalite.eu/ontologies/tosca/state": {
+          "description": "The state of the node instance.",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -3409,46 +3873,67 @@
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+        "https://www.sodalite.eu/ontologies/workspace/1/l111tnd79mgoukfr0p1sss0j0t/remote_server": {
           "specification": {
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
+                "label": "tosca.capabilities.Compute"
+              }
+            },
             "relationship": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
                 "label": "tosca.relationships.DependsOn"
               }
             },
             "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
-                "label": "tosca.nodes.Root"
+              "https://www.sodalite.eu/ontologies/workspace/1/nt606dkcar8p0v51ir0kaeb1l/sodalite.nodes.OpenStack.VM": {
+                "label": "sodalite.nodes.OpenStack.VM"
+              }
+            }
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
+          "specification": {
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
+                "label": "tosca.nodes.Compute"
+              }
+            },
+            "relationship": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
+                "label": "tosca.relationships.HostedOn"
               }
             },
-            "occurrences": [
-              "0",
-              "UNBOUNDED"
-            ],
             "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
-                "label": "tosca.capabilities.Node"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
+                "label": "tosca.capabilities.Compute"
               }
             }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "specification": {
-            "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
-                "label": "tosca.nodes.Compute"
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
+                "label": "tosca.capabilities.Node"
               }
             },
-            "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
-                "label": "tosca.relationships.HostedOn"
+            "occurrences": [
+              "0",
+              "UNBOUNDED"
+            ],
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
+                "label": "tosca.nodes.Root"
               }
             },
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
-                "label": "tosca.capabilities.Compute"
+            "relationship": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
+                "label": "tosca.relationships.DependsOn"
               }
             }
           }
@@ -3472,118 +3957,67 @@
       {
         "https://www.sodalite.eu/ontologies/tosca/Standard": {
           "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
-                "label": "tosca.interfaces.node.lifecycle.Standard"
-              }
-            },
             "operations": {
-              "delete": {
-                "implementation": {
-                  "primary": {
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/remove_cert.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/5341320a-25ea-4b47-9fa9-afa7528da585"
-                  }
-                },
-                "inputs": {
-                  "registry_ip": {
-                    "default": {
-                      "get_property": {
-                        "entity": "SELF",
-                        "property": "registry_ip"
-                      }
-                    }
-                  }
-                }
-              },
               "create": {
                 "inputs": {
-                  "email_address": {
-                    "default": {
-                      "get_property": {
-                        "entity": "SELF",
-                        "property": "email_address"
-                      }
-                    }
-                  },
-                  "public_ipv4_address": {
+                  "remote_server": {
                     "default": {
                       "get_attribute": {
                         "attribute": "public_address",
-                        "req_cap": "host",
-                        "entity": "SELF"
-                      }
-                    }
-                  },
-                  "registry_ip": {
-                    "default": {
-                      "get_property": {
-                        "property": "registry_ip",
-                        "entity": "SELF"
-                      }
-                    }
-                  },
-                  "country_name": {
-                    "default": {
-                      "get_property": {
-                        "property": "country_name",
+                        "req_cap": "remote_server",
                         "entity": "SELF"
                       }
                     }
                   },
-                  "organization_name": {
+                  "mysql_db_pass": {
                     "default": {
                       "get_property": {
                         "entity": "SELF",
-                        "property": "organization_name"
+                        "property": "mysql_db_pass"
                       }
                     }
                   }
                 },
                 "implementation": {
                   "dependencies": {
-                    "file": {
-                      "url": "http://160.40.52.200:8084/Ansibles/93e3668b-2edd-4a4a-8f9a-999213d14a40",
-                      "path": "/home/yosu/Projects/Sodalite/Git/ide/dsl/org.sodalite.dsl.examples/certificates/docker/ca.crt"
-                    },
-                    "relative_path": "artifacts"
+                    "files": [
+                      {
+                        "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/snow-uc/snow-demo/playbooks/config.json.tmpl",
+                        "url": "http://160.40.52.200:8084/Ansibles/b8ddac49-6c25-4815-b6e1-2029590f1fd6"
+                      }
+                    ]
                   },
                   "primary": {
-                    "relative_path": "playbooks",
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/add_cert.yml",
-                    "url": "http://160.40.52.200:8084/Ansibles/73b225c6-0cdd-4f77-8345-8702e3535322"
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/snow-uc/snow-demo/playbooks/configure_demo.yml",
+                    "url": "http://160.40.52.200:8084/Ansibles/afcc8b50-3807-49ab-97f4-e2b38a966acb"
                   }
                 }
               }
+            },
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
+                "label": "tosca.interfaces.node.lifecycle.Standard"
+              }
             }
           }
         }
       }
     ]
   },
-  "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/sodalite.nodes.DockerRegistry": {
+  "https://www.sodalite.eu/ontologies/workspace/1/kijggphp9tsu7g26a5ve5e8ck0/sodalite.nodes.DockerNetwork": {
     "type": "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.SoftwareComponent",
     "isNodeTemplate": false,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/docker_registry_url": {
-          "description": "Docker Hub login",
-          "specification": {
-            "type": "string",
-            "required": false
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/tosca/component_version": {
-          "description": "Domain-specific software component version.",
+        "https://www.sodalite.eu/ontologies/tosca/name": {
+          "description": "The name of the network",
           "specification": {
             "type": {
-              "https://www.sodalite.eu/ontologies/tosca/version": {
-                "label": "version"
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
               }
             },
-            "required": false
+            "required": true
           }
         }
       },
@@ -3591,32 +4025,25 @@
         "https://www.sodalite.eu/ontologies/tosca/admin_credential": {
           "description": "The optional credential that can be used to authenticate to the software component.",
           "specification": {
+            "required": false,
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.Credential": {
                 "label": "tosca.datatypes.Credential"
               }
-            },
-            "required": false
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/docker_user": {
-          "description": "Docker Hub login",
-          "specification": {
-            "type": "string",
-            "required": false,
-            "default": ""
+            }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/h2tk1f9lv7h5d722a7tr5bvmqk/docker_pass": {
-          "description": "Docker Hub password",
+        "https://www.sodalite.eu/ontologies/tosca/component_version": {
+          "description": "Domain-specific software component version.",
           "specification": {
-            "required": false,
-            "default": "",
-            "type": "string"
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/version": {
+                "label": "version"
+              }
+            },
+            "required": false
           }
         }
       }
@@ -3635,8 +4062,8 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
-          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
+        "https://www.sodalite.eu/ontologies/tosca/state": {
+          "description": "The state of the node instance.",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -3647,8 +4074,8 @@
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/state": {
-          "description": "The state of the node instance.",
+        "https://www.sodalite.eu/ontologies/tosca/tosca_id": {
+          "description": "A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type",
           "specification": {
             "type": {
               "https://www.sodalite.eu/ontologies/tosca/string": {
@@ -3661,46 +4088,46 @@
     ],
     "requirements": [
       {
-        "https://www.sodalite.eu/ontologies/tosca/host": {
+        "https://www.sodalite.eu/ontologies/tosca/dependency": {
           "specification": {
+            "occurrences": [
+              "0",
+              "UNBOUNDED"
+            ],
             "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
-                "label": "tosca.capabilities.Compute"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
+                "label": "tosca.capabilities.Node"
               }
             },
             "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
-                "label": "tosca.nodes.Compute"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
+                "label": "tosca.nodes.Root"
               }
             },
             "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
-                "label": "tosca.relationships.HostedOn"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
+                "label": "tosca.relationships.DependsOn"
               }
             }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/tosca/dependency": {
+        "https://www.sodalite.eu/ontologies/tosca/host": {
           "specification": {
-            "occurrences": [
-              "0",
-              "UNBOUNDED"
-            ],
             "relationship": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.DependsOn": {
-                "label": "tosca.relationships.DependsOn"
+              "https://www.sodalite.eu/ontologies/tosca/tosca.relationships.HostedOn": {
+                "label": "tosca.relationships.HostedOn"
               }
             },
-            "node": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Root": {
-                "label": "tosca.nodes.Root"
+            "capability": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Compute": {
+                "label": "tosca.capabilities.Compute"
               }
             },
-            "capability": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Node": {
-                "label": "tosca.capabilities.Node"
+            "node": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.nodes.Compute": {
+                "label": "tosca.nodes.Compute"
               }
             }
           }
@@ -3718,47 +4145,40 @@
             }
           }
         }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/nn14rfsf92t6ha9jbeiemr8drd/network": {
+          "specification": {
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.capabilities.Network": {
+                "label": "tosca.capabilities.Network"
+              }
+            },
+            "valid_source_types": [
+              "sodalite.nodes.DockerizedComponent"
+            ]
+          }
+        }
       }
     ],
     "interfaces": [
       {
         "https://www.sodalite.eu/ontologies/tosca/Standard": {
           "specification": {
-            "type": {
-              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
-                "label": "tosca.interfaces.node.lifecycle.Standard"
-              }
-            },
             "operations": {
               "create": {
                 "implementation": {
                   "primary": {
-                    "url": "http://160.40.52.200:8084/Ansibles/7c81cd34-aa8e-4666-a978-c874557278fe",
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/login_user.yml"
+                    "url": "http://160.40.52.200:8084/Ansibles/9cb93c9d-aa87-4188-8b72-14934b25bee8",
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/add_network.yml"
                   }
                 },
                 "inputs": {
-                  "docker_registry_url": {
-                    "default": {
-                      "get_property": {
-                        "entity": "SELF",
-                        "property": "docker_registry_url"
-                      }
-                    }
-                  },
-                  "docker_pass": {
-                    "default": {
-                      "get_property": {
-                        "entity": "SELF",
-                        "property": "docker_pass"
-                      }
-                    }
-                  },
-                  "docker_user": {
+                  "docker_network_name": {
                     "default": {
                       "get_property": {
-                        "entity": "SELF",
-                        "property": "docker_user"
+                        "property": "name",
+                        "entity": "SELF"
                       }
                     }
                   }
@@ -3766,22 +4186,27 @@
               },
               "delete": {
                 "inputs": {
-                  "docker_registry_url": {
+                  "docker_network_name": {
                     "default": {
                       "get_property": {
-                        "property": "docker_registry_url",
-                        "entity": "SELF"
+                        "entity": "SELF",
+                        "property": "name"
                       }
                     }
                   }
                 },
                 "implementation": {
                   "primary": {
-                    "url": "http://160.40.52.200:8084/Ansibles/6aedac32-1dd9-445d-8e05-5d02bcf8e580",
-                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/logout_user.yml"
+                    "url": "http://160.40.52.200:8084/Ansibles/5a924a8d-16a1-4263-b620-5334a2c10514",
+                    "path": "/home/yosu/Projects/Sodalite/Git/iac-management/use-cases/modules/docker/playbooks/remove_network.yml"
                   }
                 }
               }
+            },
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.interfaces.node.lifecycle.Standard": {
+                "label": "tosca.interfaces.node.lifecycle.Standard"
+              }
             }
           }
         }
@@ -3793,35 +4218,37 @@
     "isNodeTemplate": false,
     "properties": [
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/remote_ip_prefix": {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/port_range_min": {
           "specification": {
-            "default": "0.0.0.0/0",
             "required": true,
-            "type": "string"
-          }
-        }
-      },
-      {
-        "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/port_range_min": {
-          "specification": {
-            "type": "tosca.datatypes.network.PortDef",
-            "required": true
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.network.PortDef": {
+                "label": "tosca.datatypes.network.PortDef"
+              }
+            }
           }
         }
       },
       {
-        "https://www.sodalite.eu/ontologies/workspace/1/i33oic0aohevnjrr7gibsjt5cv/port_range_max": {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/port_range_max": {
           "specification": {
             "required": true,
-            "type": "tosca.datatypes.network.PortDef"
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/tosca.datatypes.network.PortDef": {
+                "label": "tosca.datatypes.network.PortDef"
+              }
+            }
           }
         }
       },
       {
         "https://www.sodalite.eu/ontologies/tosca/protocol": {
           "specification": {
-            "default": "tcp",
-            "type": "string",
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
             "required": true,
             "constraints": {
               "valid_values": [
@@ -3829,7 +4256,21 @@
                 "udp",
                 "icmp"
               ]
-            }
+            },
+            "default": "tcp"
+          }
+        }
+      },
+      {
+        "https://www.sodalite.eu/ontologies/workspace/1/vbeit9auui3d3j0tdekbljfndl/remote_ip_prefix": {
+          "specification": {
+            "required": true,
+            "type": {
+              "https://www.sodalite.eu/ontologies/tosca/string": {
+                "label": "string"
+              }
+            },
+            "default": "0.0.0.0/0"
           }
         }
       }
diff --git a/test/test_parser.py b/test/test_parser.py
index 75d601e..10455ee 100644
--- a/test/test_parser.py
+++ b/test/test_parser.py
@@ -6,46 +6,54 @@ from src import parse
 
 def test_parser():
     # expected ansible_files, expected ansible_paths, expected dependency_files, expected dependency_paths
-    expected = (['http://160.40.52.200:8084/Ansibles/2d57b396-0e23-479e-972e-49f1ee33417c',
-                 'http://160.40.52.200:8084/Ansibles/e8f67cde-c4b5-4beb-94a8-5c08e94cac22',
-                 'http://160.40.52.200:8084/Ansibles/3828dab9-220f-4f38-b425-59a459315f4c',
-                 'http://160.40.52.200:8084/Ansibles/045b57b7-2a2b-4490-98b1-764516af2a65',
-                 'http://160.40.52.200:8084/Ansibles/a9ffd599-fb40-4a19-a9d6-30db5407d1ae',
-                 'http://160.40.52.200:8084/Ansibles/b4cc6090-4790-468d-9e7b-8d6ce85e0424',
-                 'http://160.40.52.200:8084/Ansibles/f7913d15-7974-4241-99b3-cfd6d0ec793b',
-                 'http://160.40.52.200:8084/Ansibles/d60fe710-7d65-4cca-aa8e-737eab3e3a26',
-                 'http://160.40.52.200:8084/Ansibles/2461b289-4435-4031-a999-1de0d0a6c5ff',
-                 'http://160.40.52.200:8084/Ansibles/520afe9e-b083-444e-9b93-74765c7e90ac',
-                 'http://160.40.52.200:8084/Ansibles/f7180043-ff5f-4693-be05-014f90b7977c',
-                 'http://160.40.52.200:8084/Ansibles/acbb3d50-f145-4279-91e9-be4d0aa5733a',
-                 'http://160.40.52.200:8084/Ansibles/08fae0a3-5b2b-421e-b61f-c5a97e43e07d',
-                 'http://160.40.52.200:8084/Ansibles/73b225c6-0cdd-4f77-8345-8702e3535322',
-                 'http://160.40.52.200:8084/Ansibles/5341320a-25ea-4b47-9fa9-afa7528da585',
-                 'http://160.40.52.200:8084/Ansibles/7c81cd34-aa8e-4666-a978-c874557278fe',
-                 'http://160.40.52.200:8084/Ansibles/6aedac32-1dd9-445d-8e05-5d02bcf8e580'],
+    expected = (['http://160.40.52.200:8084/Ansibles/97d6afb6-7ed5-4400-af71-f1e6afc9bef5',
+                 'http://160.40.52.200:8084/Ansibles/8472698e-044e-470b-9805-7bc5046f3146',
+                 'http://160.40.52.200:8084/Ansibles/e0a2fe8a-b902-4a05-ab00-8638b4308705',
+                 'http://160.40.52.200:8084/Ansibles/ffdf5083-a0b3-48e4-9891-8237d259e4e3',
+                 'http://160.40.52.200:8084/Ansibles/4728fc1a-6c69-483e-a85c-a768ef7b5c4f',
+                 'http://160.40.52.200:8084/Ansibles/1ef463c3-ea3e-4e2d-9ed0-f0e9c3d2bf4f',
+                 'http://160.40.52.200:8084/Ansibles/76d494af-219b-492e-b263-886a42414399',
+                 'http://160.40.52.200:8084/Ansibles/b9a151d2-e838-4ff4-94b8-1083e2984d7a',
+                 'http://160.40.52.200:8084/Ansibles/35d91cc4-f4f0-44f2-af2d-080607a18456',
+                 'http://160.40.52.200:8084/Ansibles/013923c7-4f85-42f9-9a7a-800a5c9af1dd',
+                 'http://160.40.52.200:8084/Ansibles/9c0a5a59-ea21-4674-b29a-cccb3eb8c2a5',
+                 'http://160.40.52.200:8084/Ansibles/d0ee2abc-ec33-43f8-bf43-7164753394e0',
+                 'http://160.40.52.200:8084/Ansibles/3749fe0a-c9c3-4107-9eee-6f0fd75a4dcf',
+                 'http://160.40.52.200:8084/Ansibles/b1953769-a682-4acc-93f0-a1cd6e92dded',
+                 'http://160.40.52.200:8084/Ansibles/afcc8b50-3807-49ab-97f4-e2b38a966acb',
+                 'http://160.40.52.200:8084/Ansibles/9cb93c9d-aa87-4188-8b72-14934b25bee8',
+                 'http://160.40.52.200:8084/Ansibles/5a924a8d-16a1-4263-b620-5334a2c10514'],
 
-                ['2d57b396-0e23-479e-972e-49f1ee33417c_configure_demo.yml',
-                 'e8f67cde-c4b5-4beb-94a8-5c08e94cac22_vm_create.yml',
-                 '3828dab9-220f-4f38-b425-59a459315f4c_vm_delete.yml',
-                 '045b57b7-2a2b-4490-98b1-764516af2a65_add_container.yml',
-                 'a9ffd599-fb40-4a19-a9d6-30db5407d1ae_remove_container.yml',
-                 'b4cc6090-4790-468d-9e7b-8d6ce85e0424_add_network.yml',
-                 'f7913d15-7974-4241-99b3-cfd6d0ec793b_remove_network.yml',
-                 'd60fe710-7d65-4cca-aa8e-737eab3e3a26_security_rule_create.yml',
-                 '2461b289-4435-4031-a999-1de0d0a6c5ff_security_rule_delete.yml',
-                 '520afe9e-b083-444e-9b93-74765c7e90ac_add_volume.yml',
-                 'f7180043-ff5f-4693-be05-014f90b7977c_remove_volume.yml',
-                 'acbb3d50-f145-4279-91e9-be4d0aa5733a_create_docker_host.yml',
-                 '08fae0a3-5b2b-421e-b61f-c5a97e43e07d_delete_docker_host.yml',
-                 '73b225c6-0cdd-4f77-8345-8702e3535322_add_cert.yml',
-                 '5341320a-25ea-4b47-9fa9-afa7528da585_remove_cert.yml',
-                 '7c81cd34-aa8e-4666-a978-c874557278fe_login_user.yml',
-                 '6aedac32-1dd9-445d-8e05-5d02bcf8e580_logout_user.yml'],
+                ['playbooks/97d6afb6-7ed5-4400-af71-f1e6afc9bef5_add_volume.yml',
+                 'playbooks/8472698e-044e-470b-9805-7bc5046f3146_remove_volume.yml',
+                 'playbooks/e0a2fe8a-b902-4a05-ab00-8638b4308705_add_container.yml',
+                 'playbooks/ffdf5083-a0b3-48e4-9891-8237d259e4e3_remove_container.yml',
+                 'playbooks/4728fc1a-6c69-483e-a85c-a768ef7b5c4f_create_docker_host.yml',
+                 'playbooks/1ef463c3-ea3e-4e2d-9ed0-f0e9c3d2bf4f_delete_docker_host.yml',
+                 'playbooks/76d494af-219b-492e-b263-886a42414399_vm_create.yml',
+                 'playbooks/b9a151d2-e838-4ff4-94b8-1083e2984d7a_vm_delete.yml',
+                 'playbooks/35d91cc4-f4f0-44f2-af2d-080607a18456_login_user.yml',
+                 'playbooks/013923c7-4f85-42f9-9a7a-800a5c9af1dd_logout_user.yml',
+                 'playbooks/9c0a5a59-ea21-4674-b29a-cccb3eb8c2a5_security_rule_create.yml',
+                 'playbooks/d0ee2abc-ec33-43f8-bf43-7164753394e0_security_rule_delete.yml',
+                 'playbooks/3749fe0a-c9c3-4107-9eee-6f0fd75a4dcf_add_cert.yml',
+                 'playbooks/b1953769-a682-4acc-93f0-a1cd6e92dded_remove_cert.yml',
+                 'playbooks/afcc8b50-3807-49ab-97f4-e2b38a966acb_configure_demo.yml',
+                 'playbooks/9cb93c9d-aa87-4188-8b72-14934b25bee8_add_network.yml',
+                 'playbooks/5a924a8d-16a1-4263-b620-5334a2c10514_remove_network.yml'],
 
-                ['http://160.40.52.200:8084/Ansibles/e008e756-1380-4c85-acb2-91f34ea3115d',
-                 'http://160.40.52.200:8084/Ansibles/93e3668b-2edd-4a4a-8f9a-999213d14a40'],
+                ['http://160.40.52.200:8084/Ansibles/ecc0d4dd-f559-4ce7-b0eb-c72992362326',
+                 'http://160.40.52.200:8084/Ansibles/8960e765-1f31-4bf2-a3cf-aadf7a96c5af',
+                 'http://160.40.52.200:8084/Ansibles/f8b77694-50d3-4491-ad2c-570d66936562',
+                 'http://160.40.52.200:8084/Ansibles/9082492d-a625-4ce7-8b12-9388db367d3a',
+                 'http://160.40.52.200:8084/Ansibles/76c43a80-16a4-48bf-b08e-036dc72a864b',
+                 'http://160.40.52.200:8084/Ansibles/8499031d-0281-414f-b608-938833f4f0d1',
+                 'http://160.40.52.200:8084/Ansibles/b8ddac49-6c25-4815-b6e1-2029590f1fd6'],
 
-                ['config.json.tmpl', 'ca.crt'])
+                ['artifacts/egi_refresh_token.yml',
+                 'artifacts/ca.key',
+                 'artifacts/ca.crt',
+                 'artifacts/config.json.tmpl'])
 
     with open('test/fixture.json') as f:
         t = json.load(f)