CORD-1081 corebuilder playbooks

Change-Id: I1d9d03d57d096ae1ee439ca5c37d854abfa4f4cf
diff --git a/roles/cord-profile/templates/cord-services.yaml.j2 b/roles/cord-profile/templates/cord-services.yaml.j2
index 7343ad1..f6295ae 100644
--- a/roles/cord-profile/templates/cord-services.yaml.j2
+++ b/roles/cord-profile/templates/cord-services.yaml.j2
@@ -70,7 +70,7 @@
         public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
         private_key_fn: /opt/xos/services/volt/keys/volt_rsa
       artifacts:
-        pubkey: /opt/xos/services/volt/keys/volt_rsa.pub
+        pubkey: /opt/cord_profile/key_import/volt_rsa.pub
 
     addresses_vsg:
       type: tosca.nodes.AddressPool
@@ -103,7 +103,7 @@
 #       node_label: label_vsg
         replaces: service_vsg
       artifacts:
-        pubkey: /opt/xos/services/vsg/keys/vsg_rsa.pub
+        pubkey: /opt/cord_profile/key_import/vsg_rsa.pub
 
     service#vrouter:
       type: tosca.nodes.VRouterService
diff --git a/roles/cord-profile/templates/xos.yaml.j2 b/roles/cord-profile/templates/xos.yaml.j2
index b886d87..db10d44 100644
--- a/roles/cord-profile/templates/xos.yaml.j2
+++ b/roles/cord-profile/templates/xos.yaml.j2
@@ -16,6 +16,8 @@
         docker_project_name: {{ cord_profile | regex_replace('\W','') }}
         db_container_name: {{ cord_profile | regex_replace('\W','') }}bs_xos_db_1
         source_ui_image: {{ xos_docker_image }}
+#        dest_ui_image: docker-registry:5000/xosproject/xos-ui:candidate
+#        no_build: True
 {% if use_redis %}
         redis_container_name: {{ cord_profile | regex_replace('\W','') }}bs_xos_redis_1
 {% endif %}
diff --git a/roles/exampleservice-config/templates/test-exampleservice.yaml.j2 b/roles/exampleservice-config/templates/test-exampleservice.yaml.j2
index 9e5f4e5..08b98ee 100644
--- a/roles/exampleservice-config/templates/test-exampleservice.yaml.j2
+++ b/roles/exampleservice-config/templates/test-exampleservice.yaml.j2
@@ -104,7 +104,7 @@
         private_key_fn: /opt/xos/services/exampleservice/keys/exampleservice_rsa
         service_message: hello
       artifacts:
-        pubkey: /opt/xos/services/exampleservice/keys/exampleservice_rsa.pub
+        pubkey: /opt/cord_profile/key_import/exampleservice_rsa.pub
 
     tenant#exampletenant1:
       type: tosca.nodes.ExampleTenant
diff --git a/roles/xos-core-build/defaults/main.yml b/roles/xos-core-build/defaults/main.yml
new file mode 100644
index 0000000..6805c14
--- /dev/null
+++ b/roles/xos-core-build/defaults/main.yml
@@ -0,0 +1,10 @@
+---
+
+cord_dir: "{{ playbook_dir + '/../..' }}"
+build_docker_tag: candidate
+
+deploy_docker_registry: "localhost:5000"
+deploy_docker_tag: "candidate"
+
+xos_libraries:
+  - "ng-xos-lib"
diff --git a/roles/xos-core-build/tasks/main.yml b/roles/xos-core-build/tasks/main.yml
new file mode 100644
index 0000000..09ea5b9
--- /dev/null
+++ b/roles/xos-core-build/tasks/main.yml
@@ -0,0 +1,54 @@
+---
+# xos-core-build/tasks/main.yml
+
+- name: Intialize recipe list
+  set_fact:
+    recipes: []
+
+- name: Generate list of recipes
+  set_fact:
+    recipes: "{{ recipes }} + [ '/opt/cord/{{ item.path }}/xos/{{ item.name }}-{{ item.operation | default('onboard') }}.yaml']"
+  with_items: "{{ xos_services }}"
+
+- name: Generate list of libraries
+  set_fact:
+    recipes: "{{ recipes }} + [ '/opt/cord/orchestration/xos_libraries/{{ item }}/{{ item }}-onboard.yaml']"
+  with_items: "{{ xos_libraries }}"
+
+- name: Join the list of recipes
+  set_fact:
+    recipes_string: "{{ recipes | join(' ') }}"
+
+- debug:
+    msg: "{{ recipes }}"
+
+- name: Create the BUILD directory
+  file:
+    path: "{{ cord_dir | realpath }}/orchestration/xos/containers/xos/BUILD"
+    state: directory
+    mode: 0755
+
+# Run the corebuilder tool -- we can't do this using a docker ansible command,
+# as we have to wait for the tool to complete before continuing.
+
+- name: Run the corebuilder tool
+  shell: >
+    docker run
+    --rm
+    -v {{ cord_dir | realpath }}:/opt/cord
+    -v {{ cord_dir | realpath }}/orchestration/xos/containers/xos/BUILD:/opt/xos_corebuilder/BUILD
+    xosproject/xos-corebuilder:candidate
+    {{ recipes_string }}
+  tags:
+   - skip_ansible_lint # running a build task
+
+- name: Build UI image
+  docker_image:
+    name: "xosproject/xos-ui"
+    path: "{{ cord_dir | realpath }}/orchestration/xos"
+    tag: "{{ build_docker_tag }}"
+    dockerfile: "containers/xos/Dockerfile.UI"
+    pull: False
+
+
+
diff --git a/roles/xos-core-publish/defaults/main.yml b/roles/xos-core-publish/defaults/main.yml
new file mode 100644
index 0000000..cfc4100
--- /dev/null
+++ b/roles/xos-core-publish/defaults/main.yml
@@ -0,0 +1,6 @@
+---
+
+build_docker_tag: candidate
+
+deploy_docker_registry: "localhost:5000"
+deploy_docker_tag: "candidate"
diff --git a/roles/xos-core-publish/tasks/main.yml b/roles/xos-core-publish/tasks/main.yml
new file mode 100644
index 0000000..803f5a4
--- /dev/null
+++ b/roles/xos-core-publish/tasks/main.yml
@@ -0,0 +1,10 @@
+---
+# xos-core-deploy/tasks/main.yml
+
+- name: Tag and push the UI image
+  docker_image:
+    name: "xosproject/xos-ui:{{ build_docker_tag }}"
+    repository: "{{ deploy_docker_registry }}/xosproject/xos-ui:{{ deploy_docker_tag }}"
+    push: True
+
+