
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


---
# xos-core-build/tasks/main.yml

- name: Intialize recipe list
  set_fact:
    recipes: ['/opt/cord/orchestration/xos/xos/core/core-onboard.yaml']

- 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: Add in the profile library
  set_fact:
    recipes: "{{ recipes }} + [ '/opt/cord/orchestration/profiles/{{ profile_library }}/xos/{{ profile_library }}-onboard.yaml']"
  when:
    profile_library != ""

- name: Join the list of recipes
  set_fact:
    recipes_string: "{{ recipes | join(' ') }}"

- debug:
    msg: "{{ recipes }}"

- name: Create the BUILD directory
  file:
    path: "{{ build_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 {{ build_cord_dir | realpath }}:/opt/cord
    -v {{ build_cord_dir ~ "/orchestration/xos/containers/xos/BUILD" | realpath }}:/opt/xos_corebuilder/BUILD
    xosproject/xos-corebuilder:{{ build_docker_tag }}
    {{ recipes_string }}
  tags:
   - skip_ansible_lint # running a build task

- name: Build UI image
  docker_image:
    name: "xosproject/xos-ui"
    path: "{{ build_cord_dir | realpath }}/orchestration/xos"
    tag: "{{ build_docker_tag }}"
    dockerfile: "containers/xos/Dockerfile.UI"
    pull: False
    force: True
