Minor fixes to help integration of CORD-912

Change-Id: I8dd69bf2eae091ca60bbbfbfebce465405662a58
diff --git a/.gitignore b/.gitignore
index 497a91a..045bbce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
 credentials/*
 cord_profile/
+*.retry
+*.swp
 
 # Java
 *.class
diff --git a/deploy-onos-playbook.yml b/deploy-onos-playbook.yml
index 67ff1b4..dce692b 100644
--- a/deploy-onos-playbook.yml
+++ b/deploy-onos-playbook.yml
@@ -3,7 +3,7 @@
 # Deploys ONOS in Docker containers on the CORD head node
 
 - name: Include vars
-  hosts: all
+  hosts: head
   tasks:
     - name: Include variables
       include_vars: "{{ item }}"
@@ -15,5 +15,6 @@
   hosts: head
   roles:
     - onos-cord-install
-    - onos-fabric-install
+    - { role: onos-fabric-install, when: use_fabric }
+
 
diff --git a/deploy-xos-gui-extensions-playbook.yml b/deploy-xos-gui-extensions-playbook.yml
deleted file mode 100644
index 257c282..0000000
--- a/deploy-xos-gui-extensions-playbook.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-# deploy-xos-gui-extensions-playbook.yml
-
-- name: Include vars
-  hosts: head
-  tasks:
-    - name: Include variables
-      include_vars: "{{ item }}"
-      with_items:
-        - "profile_manifests/{{ cord_profile }}.yml"
-        - profile_manifests/local_vars.yml
-
-- name: Build GUI Extensions docker images
-  hosts: head
-  roles:
-    - xos-gui-extension-build
-
-- include: add-bootstrap-containers-playbook.yml
-
-- name: Onboard GUI Extensions
-  hosts: xos_bootstrap_ui
-  connection: docker
-  roles:
-    - xos-gui-extension-onboard
\ No newline at end of file
diff --git a/inventory/head-localhost b/inventory/head-localhost
index 6446998..f900e15 100644
--- a/inventory/head-localhost
+++ b/inventory/head-localhost
@@ -1,7 +1,13 @@
 ; used to bootstrap CiaB configs
 
+[config]
+localhost ansible_connection=local
+
 [head]
 localhost ansible_connection=local
 
+[build]
+localhost ansible_connection=local
+
 [compute]
 ; empty, but needed to avoid template issues
diff --git a/pki/.gitignore b/pki/.gitignore
index e58b508..85fb566 100644
--- a/pki/.gitignore
+++ b/pki/.gitignore
@@ -1,4 +1,4 @@
 openssl.cfg
-intermediate_ca
+*_im_ca
 root_ca
 
diff --git a/profile_manifests/ecord-global.yml b/profile_manifests/ecord-global.yml
index ebeb70e..be7b9a1 100644
--- a/profile_manifests/ecord-global.yml
+++ b/profile_manifests/ecord-global.yml
@@ -26,12 +26,6 @@
 xos_other_templates:
  - fabric-network-cfg.json
 
-cord_profile_dir: "{{ ansible_user_dir + '/cord_profile' }}"
-
-xos_docker_volumes:
-  - host: "{{ cord_profile_dir }}/images"
-    container: /opt/xos/images
-
 # GUI Config [new GUI]
 gui_project_name: "E-CORD"
 gui_background: "cord-bg.jpg" # TODO find ecord image
@@ -133,12 +127,6 @@
 
 juju_config_path: /usr/local/src/juju_config.yml
 
-# Pull ONOS from local Docker registry rather than Docker Hub
-onos_docker_image: "docker-registry:5000/onosproject/onos:candidate"
-
-# Pull XOS from local Docker registry
-xos_docker_image: "docker-registry:5000/xosproject/xos:candidate"
-
 keystone_admin_password: "{{ lookup('password', 'credentials/cord_keystone_admin chars=ascii_letters,digits') }}"
 
 deployment_flavors:
diff --git a/profile_manifests/ecord.yml b/profile_manifests/ecord.yml
index 09d1750..75af41b 100644
--- a/profile_manifests/ecord.yml
+++ b/profile_manifests/ecord.yml
@@ -29,12 +29,6 @@
 xos_other_templates:
   - fabric-network-cfg.json
 
-cord_profile_dir: "{{ ansible_user_dir + '/cord_profile' }}"
-
-xos_docker_volumes:
-  - host: "{{ cord_profile_dir }}/images"
-    container: /opt/xos/images
-
 # GUI Config [new GUI]
 gui_project_name: "E-CORD"
 gui_background: "cord-bg.jpg" # TODO find ecord image
@@ -147,12 +141,6 @@
 
 juju_config_path: /usr/local/src/juju_config.yml
 
-# Pull ONOS from local Docker registry rather than Docker Hub
-onos_docker_image: "docker-registry:5000/onosproject/onos:candidate"
-
-# Pull XOS from local Docker registry
-xos_docker_image: "docker-registry:5000/xosproject/xos:candidate"
-
 keystone_admin_password: "{{ lookup('password', 'credentials/cord_keystone_admin chars=ascii_letters,digits') }}"
 
 deployment_flavors:
diff --git a/profile_manifests/frontend.yml b/profile_manifests/frontend.yml
index f6b3ff6..eb8d7a9 100644
--- a/profile_manifests/frontend.yml
+++ b/profile_manifests/frontend.yml
@@ -39,5 +39,3 @@
   - name: sample
     path: orchestration/xos-sample-gui-extension
 
-# Frontend's XOS does not use docker registry
-xos_docker_image: "xosproject/xos:candidate"
diff --git a/profile_manifests/mcord.yml b/profile_manifests/mcord.yml
index bb0c315..f300928 100644
--- a/profile_manifests/mcord.yml
+++ b/profile_manifests/mcord.yml
@@ -29,12 +29,6 @@
 xos_other_templates:
   - fabric-network-cfg.json
 
-cord_profile_dir: "{{ ansible_user_dir + '/cord_profile' }}"
-
-xos_docker_volumes:
-  - host: "{{ cord_profile_dir }}/images"
-    container: /opt/xos/images
-
 # GUI branding [OLD GUI to be removed]
 gui_branding_name: "MCORD"
 gui_branding_icon: "/static/mcord-logo.png"
@@ -179,12 +173,6 @@
 
 juju_config_path: /usr/local/src/juju_config.yml
 
-# Pull ONOS from local Docker registry rather than Docker Hub
-onos_docker_image: "docker-registry:5000/onosproject/onos:candidate"
-
-# Pull XOS from local Docker registry
-xos_docker_image: "docker-registry:5000/xosproject/xos:candidate"
-
 keystone_admin_password: "{{ lookup('password', 'credentials/cord_keystone_admin chars=ascii_letters,digits') }}"
 
 deployment_flavors:
diff --git a/profile_manifests/mock-rcord.yml b/profile_manifests/mock-rcord.yml
index 93ebad0..cc8bacb 100644
--- a/profile_manifests/mock-rcord.yml
+++ b/profile_manifests/mock-rcord.yml
@@ -5,12 +5,13 @@
 site_name: mock-rcord
 deployment_type: "Mock R-CORD Pod"
 
-credentials_dir: "{{ playbook_dir }}/credentials"
 xos_admin_user: "xosadmin@opencord.org"
 xos_admin_pass: "{{ lookup('password', credentials_dir ~ '/xosadmin@opencord.org chars=ascii_letters,digits') }}"
 xos_admin_first: XOS
 xos_admin_last: Admin
 
+credentials_dir: "{{ playbook_dir }}/credentials"
+
 # head == config for mocks
 head_cord_profile_dir: "{{ ansible_user_dir + '/cord_profile' }}"
 head_cord_dir: "{{ ansible_user_dir + '/cord' }}"
diff --git a/profile_manifests/opencloud.yml b/profile_manifests/opencloud.yml
index 296d540..ab9eea9 100644
--- a/profile_manifests/opencloud.yml
+++ b/profile_manifests/opencloud.yml
@@ -2,24 +2,6 @@
 # profile_manifests/opencloud.yml
 # Generic OpenCloud Site
 
-# redefined here for running XOS start/config on localhost
-cord_profile: opencloud
-
-# These are source paths, used only on the config host, and should be redefined
-# on a per-pod basis when installing multiple pods
-config_cord_dir: "{{ ansible_user_dir + '/cord' }}"
-config_cord_profile_dir: "{{ ansible_user_dir + '/cord_profile' }}"
-
-# Locations on head node (same on all pods)
-head_cord_dir: "/opt/cord"
-head_cord_profile_dir: "/opt/cord_profile"
-head_onos_cord_dir: "/opt/onos-cord"
-
-# Credentials and PKI
-credentials_dir: "{{ playbook_dir }}/credentials"
-pki_dir: "{{ playbook_dir }}/pki"
-ssh_pki_dir: "{{ playbook_dir }}/ssh_pki"
-
 # site configuration
 site_name: generic_opencloud
 site_humanname: "Generic OpenCloud"
@@ -44,10 +26,6 @@
 
 build_xos_base_image: True
 
-xos_docker_volumes:
-  - host: "/opt/cord_profile/images"
-    container: /opt/xos/images
-
 # GUI Branding
 # Not neeeded, default is OpenCloud
 
@@ -86,32 +64,6 @@
     subj: "{{ ssl_cert_subj_prefix }}/CN=xos-core.{{ site_suffix }}"
     altnames:
       - "DNS:xos-core.{{ site_suffix }}"
-  - cn: "docker.{{ site_suffix }}"
-    subj: "{{ ssl_cert_subj_prefix }}/CN=docker.{{ site_suffix }}"
-    altnames:
-      - "DNS:docker.{{ site_suffix }}"
-      - "DNS:head.{{ site_suffix }}"
-      - "IP:127.0.0.1"
-      - "IP:{{ mgmt_ipv4_first_octets }}.1"
-      - "IP:{{ hostvars[headnode_name].ansible_default_ipv4.address }}"
-  - cn: "registry.{{ site_suffix }}"
-    subj: "{{ ssl_cert_subj_prefix }}/CN=registry.{{ site_suffix }}"
-    altnames:
-      - "DNS:registry.{{ site_suffix }}"
-      - "DNS:head.{{ site_suffix }}"
-      - "IP:127.0.0.1"
-      - "IP:{{ mgmt_ipv4_first_octets }}.1"
-      - "IP:{{ hostvars[headnode_name].ansible_default_ipv4.address }}"
-
-client_certs:
-  - cn: "dockerclient"
-    subj: "{{ ssl_cert_subj_prefix }}/CN=dockerclient"
-    altnames:
-      - "email:dockerclient@{{ site_suffix }}"
-  - cn: "dockerbuildhost"
-    subj: "{{ ssl_cert_subj_prefix }}/CN=dockerbuildhost"
-    altnames:
-      - "email:dockerbuildhost@{{ site_suffix }}"
 
 # docker registry users
 docker_registry_users:
@@ -186,8 +138,11 @@
 management_network_ip: 172.27.0.1/24
 data_plane_ip: 10.168.0.253/24
 
+# External interface name on compute nodes
+compute_external_interface: eth0
+
 # ONOS version
-onos_docker_image: "opencord/onos:1.8.2"
+onos_docker_image: "onosproject/onos:1.8.7"
 
 on_maas: False
 on_cloudlab: False
diff --git a/profile_manifests/rcord.yml b/profile_manifests/rcord.yml
index 4f1bb7c..22713e2 100644
--- a/profile_manifests/rcord.yml
+++ b/profile_manifests/rcord.yml
@@ -16,6 +16,7 @@
 xos_users: []
 
 use_vtn: True
+use_fabric: True
 
 xos_tosca_config_templates:
   - openstack.yaml
@@ -30,12 +31,6 @@
 xos_other_templates:
   - fabric-network-cfg.json
 
-cord_profile_dir: "{{ ansible_user_dir + '/cord_profile' }}"
-
-xos_docker_volumes:
-  - host: "{{ cord_profile_dir }}/images"
-    container: /opt/xos/images
-
 # GUI branding [OLD GUI to be removed]
 gui_branding_name: "CORD"
 gui_branding_icon: "/static/cord-logo.png"
@@ -150,12 +145,6 @@
 
 juju_config_path: /usr/local/src/juju_config.yml
 
-# Pull ONOS from local Docker registry rather than Docker Hub
-onos_docker_image: "docker-registry:5000/onosproject/onos:candidate"
-
-# Pull XOS from local Docker registry
-xos_docker_image: "docker-registry:5000/xosproject/xos:candidate"
-
 keystone_admin_password: "{{ lookup('password', 'credentials/cord_keystone_admin chars=ascii_letters,digits') }}"
 
 deployment_flavors:
@@ -165,12 +154,11 @@
   - m1.xlarge
 
 charm_versions:
-  ceilometer: "cs:trusty/ceilometer-17"
   ceilometer-agent: "cs:trusty/ceilometer-agent-13"
+  ceilometer: "cs:trusty/ceilometer-17"
   glance: "cs:trusty/glance-28"
   keystone: "cs:trusty/keystone-33"
   mongodb: "cs:trusty/mongodb-33"
-  percona-cluster: "cs:trusty/percona-cluster-31"
   nagios: "cs:trusty/nagios-10"
   neutron-api: "cs:~cordteam/trusty/neutron-api-5"
   nova-cloud-controller: "cs:trusty/nova-cloud-controller-64"
@@ -178,6 +166,7 @@
   nrpe: "cs:trusty/nrpe-4"
   ntp: "cs:trusty/ntp-14"
   openstack-dashboard: "cs:trusty/openstack-dashboard-19"
+  percona-cluster: "cs:trusty/percona-cluster-31"
   rabbitmq-server: "cs:trusty/rabbitmq-server-42"
 
 head_vm_list: []
diff --git a/roles/cord-profile/defaults/main.yml b/roles/cord-profile/defaults/main.yml
index 542ac64..d867ef6 100644
--- a/roles/cord-profile/defaults/main.yml
+++ b/roles/cord-profile/defaults/main.yml
@@ -12,12 +12,6 @@
 head_cord_profile_dir: "/opt/cord_profile"
 head_cord_dir: "/opt/cord"
 
-deploy_docker_registry: "" # was: "localhost:5000/"
-deploy_docker_tag: "candidate"
-
-# name of docker image to use in onboarding synchronizer
-xos_docker_image: "{{ deploy_docker_registry }}xosproject/xos{{ deploy_docker_tag }}"
-
 # For storing OpenStack images
 image_dir: /opt/images
 
@@ -35,11 +29,13 @@
 
 use_vtn: True
 
+# Docker related settings
+deploy_docker_registry: ""
+deploy_docker_tag: "candidate"
+
 xos_docker_networks:
   - "xos"
 
-xos_docker_volumes: []
-
 xos_bootstrap_ui_port: 9001
 xos_ui_port: 9000
 
diff --git a/roles/cord-profile/files/fixtures.yaml b/roles/cord-profile/files/fixtures.yaml
index 00da082..02e0f6f 100644
--- a/roles/cord-profile/files/fixtures.yaml
+++ b/roles/cord-profile/files/fixtures.yaml
@@ -90,45 +90,45 @@
     Customize:
       type: tosca.nodes.DashboardView
       properties:
-          url: template:xosDashboardManager
-          custom_icon: true
+        url: template:xosDashboardManager
+        custom_icon: true
 
     Diagnostic:
       type: tosca.nodes.DashboardView
       properties:
-          url: template:xosDiagnostic
-          custom_icon: true
+        url: template:xosDiagnostic
+        custom_icon: true
 
     Truckroll:
       type: tosca.nodes.DashboardView
       properties:
-          url: template:xosTruckroll
-          custom_icon: true
+        url: template:xosTruckroll
+        custom_icon: true
 
     Monitoring:
       type: tosca.nodes.DashboardView
       properties:
-          url: template:xosCeilometerDashboard
+        url: template:xosCeilometerDashboard
 
     Subscribers:
       type: tosca.nodes.DashboardView
       properties:
-          url: template:xosSubscribers
+        url: template:xosSubscribers
 
     Tenant:
       type: tosca.nodes.DashboardView
       properties:
-          url: template:xosTenant
+        url: template:xosTenant
 
     Developer:
       type: tosca.nodes.DashboardView
       properties:
-          url: template:xosDeveloper
+        url: template:xosDeveloper
 
     Services Grid:
       type: tosca.nodes.DashboardView
       properties:
-          url: template:xosServiceGrid
+        url: template:xosServiceGrid
 
 # -----------------------------------------------------------------------------
 # Network Templates
@@ -137,20 +137,20 @@
     Private:
       type: tosca.nodes.NetworkTemplate
       properties:
-          visibility: private
-          translation: none
+        visibility: private
+        translation: none
 
     Public shared IPv4:
       type: tosca.nodes.NetworkTemplate
       properties:
-          visibility: private
-          translation: NAT
-          shared_network_name: nat-net
+        visibility: private
+        translation: NAT
+        shared_network_name: nat-net
 
     Public dedicated IPv4:
       type: tosca.nodes.NetworkTemplate
       properties:
-          visibility: public
-          translation: none
-          shared_network_name: ext-net
+        visibility: public
+        translation: none
+        shared_network_name: ext-net
 
diff --git a/roles/cord-profile/templates/deployment.yaml.j2 b/roles/cord-profile/templates/deployment.yaml.j2
index 0987b7c..d1c4626 100644
--- a/roles/cord-profile/templates/deployment.yaml.j2
+++ b/roles/cord-profile/templates/deployment.yaml.j2
@@ -21,9 +21,9 @@
       type: tosca.nodes.Deployment
       requirements:
 {% for flavor in deployment_flavors %}
-          - {{ flavor }}:
-              node: {{ flavor }}
-              relationship: tosca.relationships.SupportsFlavor
+        - {{ flavor }}:
+            node: {{ flavor }}
+            relationship: tosca.relationships.SupportsFlavor
 
 {% endfor %}
 
@@ -31,9 +31,9 @@
     {{ site_name }}:
       type: tosca.nodes.Site
       properties:
-          display_name: {{ site_humanname }}
-          site_url: http://{{ site_name }}.opencloud.us/
-          hosts_nodes: true
+        display_name: {{ site_humanname }}
+        site_url: http://{{ site_name }}.opencloud.us/
+        hosts_nodes: true
       requirements:
         - deployment:
             node: {{ deployment_type }}
@@ -43,12 +43,12 @@
     Tenant:
       type: tosca.nodes.DashboardView
       properties:
-          no-create: true
-          no-delete: true
+        no-create: true
+        no-delete: true
       requirements:
-          - deployment:
-              node: {{ deployment_type }}
-              relationship: tosca.relationships.SupportsDeployment
+        - deployment:
+            node: {{ deployment_type }}
+            relationship: tosca.relationships.SupportsDeployment
 
 # XOS Users
 # Default admin user account
@@ -64,8 +64,8 @@
             node: {{ site_name }}
             relationship: tosca.relationships.MemberOfSite
         - tenant_dashboard:
-              node: Tenant
-              relationship: tosca.relationships.UsesDashboard
+            node: Tenant
+            relationship: tosca.relationships.UsesDashboard
 
 # All other users
 {% for user in xos_users %}
@@ -81,8 +81,8 @@
             node: {{ site_name }}
             relationship: tosca.relationships.MemberOfSite
         - tenant_dashboard:
-              node: Tenant
-              relationship: tosca.relationships.UsesDashboard
+            node: Tenant
+            relationship: tosca.relationships.UsesDashboard
 
 {% endfor %}
 
diff --git a/roles/cord-profile/templates/xos_common_config.j2 b/roles/cord-profile/templates/xos_common_config.j2
index ba67acd..af7b2a0 100644
--- a/roles/cord-profile/templates/xos_common_config.j2
+++ b/roles/cord-profile/templates/xos_common_config.j2
@@ -1,5 +1,5 @@
 ; xos_common_config
-; generated by platform-install/roles/cord-profile
+; generated by cord-profile/templates/xos_common_config.j2
 
 [plc]
 name=plc
diff --git a/roles/docker-install/handlers/main.yml b/roles/docker-install/handlers/main.yml
deleted file mode 100644
index 697fec7..0000000
--- a/roles/docker-install/handlers/main.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-# docker-install/handlers/main.yml
-
-- name: docker-restart
-  become: yes
-  service:
-    name: docker
-    state: restarted
-
diff --git a/roles/docker-install/tasks/main.yml b/roles/docker-install/tasks/main.yml
index 826d5bb..2beb5c7 100644
--- a/roles/docker-install/tasks/main.yml
+++ b/roles/docker-install/tasks/main.yml
@@ -5,9 +5,9 @@
 - name: Prereqs and SSL support for apt for SSL
   become: yes
   apt:
-    name={{ item }}
-    update_cache=yes
-    cache_valid_time=3600
+    name: "{{ item }}"
+    update_cache: yes
+    cache_valid_time: 3600
   with_items:
     - apt-transport-https
     - ca-certificates
@@ -26,9 +26,9 @@
 - name: Install docker
   become: yes
   apt:
-    update_cache=yes
-    cache_valid_time=3600
-    name=docker-engine
+    name: docker-engine
+    update_cache: yes
+    cache_valid_time: 3600
 
 # docker fails without docker-py, docker-compose >1.9 fails with docker-py installed
 - name: Install docker-compose and docker-py
diff --git a/roles/juju-compute-setup/tasks/main.yml b/roles/juju-compute-setup/tasks/main.yml
index d6a92c8..fdb5ef3 100644
--- a/roles/juju-compute-setup/tasks/main.yml
+++ b/roles/juju-compute-setup/tasks/main.yml
@@ -58,7 +58,7 @@
   delay: 30
   with_items: "{{ groups['compute'] }}"
 
-- name: verify that the nodes appear in nova
+- name: Verify that the nodes appear in nova
   action: shell bash -c "source /opt/cord_profile/admin-openrc.sh; nova hypervisor-list | grep '{{ item }}'"
   register: result
   until: result | success
diff --git a/roles/onos-cord-install/defaults/main.yml b/roles/onos-cord-install/defaults/main.yml
index bdf6d18..b6f25f0 100644
--- a/roles/onos-cord-install/defaults/main.yml
+++ b/roles/onos-cord-install/defaults/main.yml
@@ -6,8 +6,10 @@
 ssh_pki_dir: "{{ playbook_dir }}/ssh_pki"
 head_onos_cord_dir: "/opt/onos_cord"
 
-# Should probably be set to a specific version
-onos_docker_image: "opencord/onos:latest"
+# ONOS docker image to use
+deploy_docker_registry: ""
+deploy_docker_tag: "candidate"
+onos_docker_image: "{{ deploy_docker_registry }}onosproject/onos:{{ deploy_docker_tag }}"
 
 # log level for ONOS
 onos_log_level: "INFO"
diff --git a/roles/onos-fabric-install/defaults/main.yml b/roles/onos-fabric-install/defaults/main.yml
index 2c70fc8..aaa91e9 100644
--- a/roles/onos-fabric-install/defaults/main.yml
+++ b/roles/onos-fabric-install/defaults/main.yml
@@ -4,7 +4,8 @@
 # paths
 head_onos_fabric_dir: "/opt/onos_fabric"
 
-# Should probably be set to a specific version
-onos_docker_image: "opencord/onos:latest"
-
+# ONOS docker image to use
+deploy_docker_registry: ""
+deploy_docker_tag: "candidate"
+onos_docker_image: "{{ deploy_docker_registry }}onosproject/onos:{{ deploy_docker_tag }}"
 
diff --git a/roles/prereqs-common/defaults/main.yml b/roles/prereqs-common/defaults/main.yml
index 1425db4..6c66757 100644
--- a/roles/prereqs-common/defaults/main.yml
+++ b/roles/prereqs-common/defaults/main.yml
@@ -17,7 +17,7 @@
   - 199.7.91.13
 
 http_dl_url: "http://cord.staging.wpengine.com/wp-content/uploads/2016/07/cord-tm-logo.png"
-http_dl_cksum: "sha256:9a69c741a4bb609ad7e49bd0fd335a95db2e66dc0d72866569e11385df9dcc28"
+http_dl_cksum: "sha256:099c777e4c8ad76a066299159622b4fa6bd2515cefafc2851df67f7f4cce6ee8"
 
 https_dl_url: "https://jenkins.opencord.org/static/8d0f081d/images/headshot.png"
 https_dl_cksum: "sha256:690e82fb98ffb2b4b232d9b9cf9cc52eb7972e56a84902f6d1150b75456058c6"
diff --git a/roles/prereqs-common/tasks/main.yml b/roles/prereqs-common/tasks/main.yml
index 642a1b4..f9ac2cd 100644
--- a/roles/prereqs-common/tasks/main.yml
+++ b/roles/prereqs-common/tasks/main.yml
@@ -43,10 +43,14 @@
     url: "{{ http_dl_url }}"
     checksum: "{{ http_dl_cksum }}"
     dest: /tmp/http_dl_check
+  retries: 3
+  delay: 1
 
 - name: HTTPS Download Check
   get_url:
     url: "{{ https_dl_url }}"
     checksum: "{{ https_dl_cksum }}"
     dest: /tmp/https_dl_check
+  retries: 3
+  delay: 1
 
diff --git a/roles/pull-xos-docker-images/defaults/main.yml b/roles/pull-xos-docker-images/defaults/main.yml
index bf12830..a5ba971 100644
--- a/roles/pull-xos-docker-images/defaults/main.yml
+++ b/roles/pull-xos-docker-images/defaults/main.yml
@@ -1 +1,4 @@
-deploy_docker_tag: candidate
\ No newline at end of file
+---
+# pull-xos-docker-images/defaults/main.yml
+
+deploy_docker_tag: "candidate"
diff --git a/roles/pull-xos-docker-images/tasks/main.yml b/roles/pull-xos-docker-images/tasks/main.yml
index ad394cd..96a94e6 100644
--- a/roles/pull-xos-docker-images/tasks/main.yml
+++ b/roles/pull-xos-docker-images/tasks/main.yml
@@ -4,7 +4,7 @@
 - name: Pull latest versions of images if not present
   docker_image:
     name: "{{ item }}:latest"
-    repository: "{{ item }}:candidate"
+    repository: "{{ item }}:{{ deploy_docker_tag }}"
   with_items:
     - xosproject/vsg
     - redis
diff --git a/roles/teardown-openstack/tasks/main.yml b/roles/teardown-openstack/tasks/main.yml
index 857beb9..36f227b 100644
--- a/roles/teardown-openstack/tasks/main.yml
+++ b/roles/teardown-openstack/tasks/main.yml
@@ -1,3 +1,6 @@
+---
+# teardown-openstack/tasks/main.yml
+
 - name: Remove Juju directory
   file:
     path: "{{ ansible_user_dir }}/.juju"
@@ -10,11 +13,3 @@
     state: absent
   with_items: "{{ head_lxd_list }}"
 
-- name: Remove PKI directories
-  become: yes
-  file:
-    path: "{{ item }}"
-    state: absent
-  with_items:
-    - /opt/cord/build/platform-install/pki/intermediate_ca
-    - /opt/cord/build/platform-install/pki/root_ca
diff --git a/roles/xos-core-build/defaults/main.yml b/roles/xos-core-build/defaults/main.yml
index 2772a14..1114d07 100644
--- a/roles/xos-core-build/defaults/main.yml
+++ b/roles/xos-core-build/defaults/main.yml
@@ -4,7 +4,7 @@
 build_cord_dir: "{{ playbook_dir ~ '/../..' }}"
 build_docker_tag: "candidate"
 
-deploy_docker_registry: "localhost:5000"
+deploy_docker_registry: ""
 deploy_docker_tag: "candidate"
 
 xos_libraries:
diff --git a/roles/xos-core-publish/defaults/main.yml b/roles/xos-core-publish/defaults/main.yml
index cfc4100..91b3a50 100644
--- a/roles/xos-core-publish/defaults/main.yml
+++ b/roles/xos-core-publish/defaults/main.yml
@@ -1,6 +1,7 @@
 ---
+# xos-core-publish/defaults/main.yml
 
-build_docker_tag: candidate
+build_docker_tag: "candidate"
 
-deploy_docker_registry: "localhost:5000"
+deploy_docker_registry: ""
 deploy_docker_tag: "candidate"
diff --git a/roles/xos-core-publish/tasks/main.yml b/roles/xos-core-publish/tasks/main.yml
index 2f80638..4d6efe4 100644
--- a/roles/xos-core-publish/tasks/main.yml
+++ b/roles/xos-core-publish/tasks/main.yml
@@ -1,5 +1,5 @@
 ---
-# xos-core-deploy/tasks/main.yml
+# xos-core-publish/tasks/main.yml
 
 - name: Remove old local UI image
   docker_image:
diff --git a/roles/xos-gui-extension-build/defaults/main.yml b/roles/xos-gui-extension-build/defaults/main.yml
deleted file mode 100644
index 0dd8561..0000000
--- a/roles/xos-gui-extension-build/defaults/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-# xos-gui-extension-build/defaults/main.yml
-
-head_cord_dir: "/opt/cord"
-head_cord_profile_dir: "/opt/cord_profile"
-
-enabled_gui_extensions: []
diff --git a/roles/xos-gui-extension-build/tasks/main.yml b/roles/xos-gui-extension-build/tasks/main.yml
deleted file mode 100644
index b337d4f..0000000
--- a/roles/xos-gui-extension-build/tasks/main.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-# xos-gui-extension-build/tasks/main.yml
-# Dockerfile.xos-gui-extension-builder
-
-# Create a base image with installed deps (to speedup the process)
-- name: Build xos-gui-extension-builder image
-  docker_image:
-    name: "xosproject/xos-gui-extension-builder"
-    path: "{{ head_cord_dir }}/orchestration/xos-gui/"
-    dockerfile: "Dockerfile.xos-gui-extension-builder"
-  register: "xos-gui-extension-builder"
-
-# Build extensions images
-- name: Build xos-gui-extensions docker images
-  docker_image:
-    name: "xosproject/gui-extension-{{ item.name }}"
-    path: "{{ head_cord_dir }}/{{ item.path }}"
-    pull: false
-  with_items: "{{ enabled_gui_extensions }}"
-
-# Compile the TOSCA to onboard and persist extensions
-- name: Create templated TOSCA to onboard extensions
-  template:
-    src: "{{ item }}.j2"
-    dest: "{{ head_cord_profile_dir }}/{{ item }}"
-    mode: 0644
-  with_items:
-    - xos-gui-extensions-onboard.yml
-    - xos-gui-extensions.yml
-
diff --git a/roles/xos-gui-extension-build/templates/xos-gui-extensions-onboard.yml.j2 b/roles/xos-gui-extension-build/templates/xos-gui-extensions-onboard.yml.j2
deleted file mode 100644
index 435daa3..0000000
--- a/roles/xos-gui-extension-build/templates/xos-gui-extensions-onboard.yml.j2
+++ /dev/null
@@ -1,28 +0,0 @@
-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: xosproject/gui-extension-{{ ext.name }}
-        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/xos-gui-extension-build/templates/xos-gui-extensions.yml.j2 b/roles/xos-gui-extension-build/templates/xos-gui-extensions.yml.j2
deleted file mode 100644
index 6b5be5e..0000000
--- a/roles/xos-gui-extension-build/templates/xos-gui-extensions.yml.j2
+++ /dev/null
@@ -1,17 +0,0 @@
-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 %}
diff --git a/roles/xos-gui-extension-onboard/defaults/main.yml b/roles/xos-gui-extension-onboard/defaults/main.yml
deleted file mode 100644
index 450ea3d..0000000
--- a/roles/xos-gui-extension-onboard/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-# xos-gui-extension-onboard/defaults/main.yml
-
-xos_admin_user: "xosadmin@opencord.org"
-
diff --git a/roles/xos-gui-extension-onboard/tasks/main.yaml b/roles/xos-gui-extension-onboard/tasks/main.yaml
deleted file mode 100644
index 5ea8897..0000000
--- a/roles/xos-gui-extension-onboard/tasks/main.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-# xos-gui-extension-onboard/tasks/main.yml
-
-- name: Execute xos-gui-extensions onboard TOSCA recipe
-  command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/xos-gui-extensions-onboard.yml"
-  tags:
-    - skip_ansible_lint # TOSCA loading should be idempotent
-
-- name: Execute xos-gui-extensions persist TOSCA recipe
-  command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/xos-gui-extensions.yml"
-  tags:
-    - skip_ansible_lint # TOSCA loading should be idempotent
-