CORD-1000 Build and publish XOS images on corddev

Change-Id: I10f9a41220ac42e412b0fb90d574d17556c2c4e8
diff --git a/roles/cord-profile/templates/Dockerfile.xos.j2 b/roles/cord-profile/templates/Dockerfile.xos.j2
new file mode 100644
index 0000000..a8bfc2a
--- /dev/null
+++ b/roles/cord-profile/templates/Dockerfile.xos.j2
@@ -0,0 +1,11 @@
+FROM {{ deploy_docker_registry }}xosproject/xos:{{ deploy_docker_tag }}
+
+ARG XOS_GIT_COMMIT_HASH=unknown
+ARG XOS_GIT_COMMIT_DATE=unknown
+
+LABEL XOS_GIT_COMMIT_HASH=$XOS_GIT_COMMIT_HASH
+LABEL XOS_GIT_COMMIT_DATE=$XOS_GIT_COMMIT_DATE
+
+# Include local certificates for onboarding
+ADD im_cert_chain.pem /usr/local/share/ca-certificates/local_certs.crt
+RUN update-ca-certificates
diff --git a/roles/cord-profile/templates/onboard-chameleon.yaml.j2 b/roles/cord-profile/templates/onboard-chameleon.yaml.j2
index e8f88d8..caefaea 100644
--- a/roles/cord-profile/templates/onboard-chameleon.yaml.j2
+++ b/roles/cord-profile/templates/onboard-chameleon.yaml.j2
@@ -11,7 +11,7 @@
       type: tosca.nodes.Component
       properties:
         command: python chameleon/chameleon/main.py -R 9101 -G xos-core:50055
-        image: xosproject/chameleon
+        image: {{ deploy_docker_registry }}xosproject/chameleon:{{ deploy_docker_tag }}
         ports: 9101:9101
 
     chameleon-to-core:
diff --git a/roles/cord-profile/templates/onboard-gui-extensions-store.yaml.j2 b/roles/cord-profile/templates/onboard-gui-extensions-store.yaml.j2
index 0e83718..02cc72c 100644
--- a/roles/cord-profile/templates/onboard-gui-extensions-store.yaml.j2
+++ b/roles/cord-profile/templates/onboard-gui-extensions-store.yaml.j2
@@ -12,7 +12,7 @@
     gui-extensions-store:
       type: tosca.nodes.Component
       properties:
-        image: node:argon
+        image: {{ deploy_docker_registry }}node:argon
         command: /bin/true
 
     /var/www/dist/extensions:
@@ -23,4 +23,4 @@
       requirements:
           - xos:
              node: gui-extensions-store
-             relationship: tosca.relationships.VolumeOfComponent
\ No newline at end of file
+             relationship: tosca.relationships.VolumeOfComponent
diff --git a/roles/cord-profile/templates/onboard-xos-gui.yaml.j2 b/roles/cord-profile/templates/onboard-xos-gui.yaml.j2
index bcaf3c3..877f444 100644
--- a/roles/cord-profile/templates/onboard-xos-gui.yaml.j2
+++ b/roles/cord-profile/templates/onboard-xos-gui.yaml.j2
@@ -12,7 +12,7 @@
     xos-spa-gui:
       type: tosca.nodes.Component
       properties:
-        image: xosproject/xos-gui
+        image: {{ deploy_docker_registry }}xosproject/xos-gui:{{ deploy_docker_tag }}
         ports: 4000:4000
 
     # UI App Config
@@ -57,7 +57,7 @@
           - xos:
              node: xos-spa-gui
              relationship: tosca.relationships.LinkOfComponent
-    
+
     gui-to-gw:
       type: tosca.nodes.ComponentLink
       properties:
@@ -67,4 +67,4 @@
       requirements:
           - xos:
              node: xos-spa-gui
-             relationship: tosca.relationships.LinkOfComponent
\ No newline at end of file
+             relationship: tosca.relationships.LinkOfComponent
diff --git a/roles/cord-profile/templates/onboard-xos-rest-gw.yaml.j2 b/roles/cord-profile/templates/onboard-xos-rest-gw.yaml.j2
index 22d9fc6..503d6b5 100644
--- a/roles/cord-profile/templates/onboard-xos-rest-gw.yaml.j2
+++ b/roles/cord-profile/templates/onboard-xos-rest-gw.yaml.j2
@@ -12,7 +12,7 @@
     xos-rest-gateway:
       type: tosca.nodes.Component
       properties:
-        image: xosproject/xos-rest-gw
+        image: {{ deploy_docker_registry }}xosproject/xos-rest-gw:{{ deploy_docker_tag }}
         command: npm start -- --config gateway-config.yml
         ports: 3000:3000
 
@@ -47,4 +47,4 @@
       requirements:
           - xos:
              node: xos-rest-gateway
-             relationship: tosca.relationships.LinkOfComponent
\ No newline at end of file
+             relationship: tosca.relationships.LinkOfComponent
diff --git a/roles/cord-profile/templates/xos-bootstrap-docker-compose.yaml.j2 b/roles/cord-profile/templates/xos-bootstrap-docker-compose.yaml.j2
index bf79d65..ed24bd5 100644
--- a/roles/cord-profile/templates/xos-bootstrap-docker-compose.yaml.j2
+++ b/roles/cord-profile/templates/xos-bootstrap-docker-compose.yaml.j2
@@ -11,7 +11,7 @@
 
 services:
   xos_db:
-    image: xosproject/xos-postgres
+    image: {{ deploy_docker_registry }}xosproject/xos-postgres:{{ deploy_docker_tag }}
     networks:
 {% for network in xos_docker_networks %}
       - {{ network }}
@@ -21,7 +21,7 @@
 
 {% if use_redis %}
   xos_redis:
-    image: redis
+    image: {{ deploy_docker_registry }}redis:{{ deploy_docker_tag }}
     networks:
 {% for network in xos_docker_networks %}
      - {{ network }}
@@ -34,7 +34,7 @@
 {% endif %}
 
   xos_bootstrap_ui:
-    image: xosproject/xos
+    image: {{ deploy_docker_registry }}xosproject/xos:{{ deploy_docker_tag }}
     command: python /opt/xos/manage.py runserver 0.0.0.0:{{ xos_bootstrap_ui_port }} --insecure --makemigrations
     networks:
 {% for network in xos_docker_networks %}
@@ -69,7 +69,7 @@
         max-file: "5"
 
   xos_synchronizer_onboarding:
-    image: xosproject/xos
+    image: {{ deploy_docker_registry }}xosproject/xos:{{ deploy_docker_tag }}
     command: bash -c "cd /opt/xos/synchronizers/onboarding; ./run.sh"
     networks:
 {% for network in xos_docker_networks %}
@@ -95,4 +95,3 @@
       options:
         max-size: "1000k"
         max-file: "5"
-
diff --git a/roles/cord-profile/templates/xos-gui-extensions-onboard.yml.j2 b/roles/cord-profile/templates/xos-gui-extensions-onboard.yml.j2
new file mode 100644
index 0000000..a46c188
--- /dev/null
+++ b/roles/cord-profile/templates/xos-gui-extensions-onboard.yml.j2
@@ -0,0 +1,28 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Onboard xos-sample-gui-extension
+
+imports:
+   - custom_types/xos.yaml
+
+topology_template:
+  node_templates:
+
+    # UI Extensions
+{% for ext in enabled_gui_extensions %}
+    gui-extensions-{{ext.name}}:
+      type: tosca.nodes.Component
+      properties:
+        image: {{ deploy_docker_registry }}xosproject/gui-extension-{{ ext.name }}:{{ deploy_docker_tag }}
+        command: npm run build
+
+    gui-extensions-store-{{ ext.name }}:
+      type: tosca.nodes.ComponentVolumeContainer
+      properties:
+          container: gui-extensions-store
+      requirements:
+          - xos:
+             node: gui-extensions-{{ext.name}}
+             relationship: tosca.relationships.VolumeContainerOfComponent
+{% endfor %}
+
diff --git a/roles/cord-profile/templates/xos-gui-extensions.yml.j2 b/roles/cord-profile/templates/xos-gui-extensions.yml.j2
new file mode 100644
index 0000000..6b5be5e
--- /dev/null
+++ b/roles/cord-profile/templates/xos-gui-extensions.yml.j2
@@ -0,0 +1,17 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Persist xos-sample-gui-extension
+
+imports:
+   - custom_types/xos.yaml
+
+topology_template:
+  node_templates:
+
+    # UI Extension
+{% for ext in enabled_gui_extensions %}
+    {{ext.name}}:
+      type: tosca.nodes.XOSGuiExtension
+      properties:
+        files: /spa/extensions/{{ext.name}}/vendor.js, /spa/extensions/{{ext.name}}/app.js
+{% endfor %}