
# 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.


---
# onos-cord-install/tasks/main.yml

- name: Pull base docker image for ONOS
  docker_image:
    name: "{{ onos_docker_image }}"

- name: Create onos_cord directory
  become: yes
  file:
    path: "{{ head_onos_cord_dir }}"
    state: directory
    owner: "{{ ansible_user_id }}"
    group: "{{ ansible_user_gid }}"
    mode: 0755

- name: Create node_key file with SSH private key for compute nodes
  copy:
    src: "{{ ssh_pki_dir }}/client_certs/{{ pod_sshkey_name }}_sshkey"
    dest: "{{ head_onos_cord_dir }}/node_key"
    owner: "{{ ansible_user_id }}"
    group: "{{ ansible_user_gid }}"
    mode: 0600

- name: Create templated ONOS files
  template:
    src: "{{ item }}.j2"
    dest: "{{ head_onos_cord_dir }}/{{ item }}"
  with_items:
    - Dockerfile
    - org.ops4j.pax.logging.cfg
    - docker-compose.yml

- name: Copy SSL Certs to ONOS so docker-compose can find them
  copy:
    src: "{{ pki_dir }}/{{ item.src }}"
    dest: "{{ head_onos_cord_dir }}/{{ item.dest }}"
    owner: "{{ ansible_user_id }}"
  with_items:
    - src: "root_ca/certs/ca_cert.pem"
      dest: "cord_root_ca.crt"
    - src: "{{ site_name }}_im_ca/certs/im_cert.pem"
      dest: "cord_{{ site_name }}_im_ca.crt"

- name: Build xos/onos docker image
  docker_image:
    name: "xos/onos:{{ pull_docker_tag }}"
    path: "{{ head_onos_cord_dir }}"
    pull: False
    force: True

- name: Start ONOS for CORD
  docker_service:
    project_name: "onoscord"
    project_src: "{{ head_onos_cord_dir }}"

