# Copyright (c) 2018 Intel Corporation.
#
# 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.
---
- hosts: jumphost
  become: yes
  vars:
    installation_mode: "{{ INSTALLATION_MODE | default('baremetal') }}"
    yardstick_dir: "{{ YARDSTICK_DIR | default('/home/opnfv/repos/yardstick') }}"
    virtual_environment: "{{ VIRTUAL_ENVIRONMENT | default(False) }}"
    nsb_dir: "{{ NSB_DIR | default('/opt/nsb_bin/') }}"

  pre_tasks:

    - name: Create NSB binaries directory, accesible to any user
      file:
        path: "{{ nsb_dir }}"
        state: directory
        owner: root
        mode: 0777

  roles:
    - add_repos_jumphost
    - install_dependencies_jumphost
    - install_yardstick
    - configure_uwsgi
    - configure_nginx
    - configure_gui
    - download_trex
    - install_trex
    - configure_rabbitmq

  post_tasks:

    - service:
        name: nginx
        state: restarted
      when: installation_mode != inst_mode_container

    - shell: uwsgi -i /etc/yardstick/yardstick.ini
      when: installation_mode != inst_mode_container


- name: Prepare baremetal and standalone servers
  hosts: yardstick-baremetal,yardstick-standalone
  become: yes
  environment: "{{ proxy_env }}"

  roles:
    - add_custom_repos
    - role: set_package_installer_proxy
      when: proxy_env is defined and proxy_env
    # can't update grub in chroot/docker
    # ?? - enable_iommu_on_boot
    - enable_hugepages_on_boot
    # needed for collectd plugins
    - increase_open_file_limits
    - install_image_dependencies
    - role: download_dpdk
    # dpdk_version: "17.02"
    - install_dpdk
    - download_trex
    - install_trex
    - download_civetweb
    - install_civetweb
    - download_samplevnfs
    - role: install_samplevnf
      vnf_name: PROX
    - role: install_samplevnf
      vnf_name: UDP_Replay
    - role: install_samplevnf
      vnf_name: ACL
    - role: install_samplevnf
      vnf_name: FW
    - role: install_samplevnf
      vnf_name: CGNAPT
    # build shared DPDK for collectd only, required DPDK downloaded already
    - install_dpdk_shared
    - install_rabbitmq
    - download_intel_cmt_cat
    - install_intel_cmt_cat
    - download_pmu_tools
    - install_pmu_tools
    - download_collectd
    - install_collectd


- hosts: jumphost
  become: yes
  vars:
    img_prop_item: "{{ IMG_PROPERTY }}"
    img_arch: "{{ YARD_IMG_ARCH }}"

  tasks:
    - name: Include pre-build
      include_role:
        name: build_yardstick_image
        tasks_from: pre_build.yml


- hosts: chroot_image
  connection: chroot
  become: yes
  vars:
    img_property: "{{ IMG_PROPERTY }}"
  environment: "{{ proxy_env }}"

  tasks:
    - name: Include image build
      include_role:
        name: build_yardstick_image
        tasks_from: "cloudimg_modify_{{ img_property }}.yml"


- hosts: jumphost
  become: yes

  tasks:
    - name: Include post-build
      include_role:
        name: build_yardstick_image
        tasks_from: post_build.yml