---
# ============LICENSE_START=======================================================
#  Copyright (C) 2019 The Nordix Foundation. All rights reserved.
# ================================================================================
# 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================

# check if post-deployment.yml exists in engine cache on localhost
- hosts: localhost
  connection: local
  gather_facts: true
  become: yes
  vars_files:
    - "{{ engine_path }}/engine/var/versions.yml"
    - "{{ engine_path }}/engine/var/global.yml"
    - "{{ sdf_file }}"

  tasks:
    - name: Check if any post-deployment task defined for '{{ deploy_scenario }}' role
      stat:
        path: "{{ engine_cache }}/repos/swconfig/{{ scenario[deploy_scenario].installers[installer_type].role }}/tasks/post-deployment.yml"
      register: post_deployment_yml

# run the scenario post-deployment tasks before running the common post-deployment tasks
- hosts: all
  gather_facts: true
  become: yes
  vars_files:
    - "{{ engine_path }}/engine/var/versions.yml"
    - "{{ engine_path }}/engine/var/global.yml"
    - "{{ sdf_file }}"

  tasks:
    - name: Execute post-deployment tasks of '{{ deploy_scenario }}' role
      include_role:
        name: "{{ engine_cache }}/repos/swconfig/{{ scenario[deploy_scenario].installers[installer_type].role }}"
        tasks_from: post-deployment
      when:
        - hostvars['localhost'].post_deployment_yml.stat.exists

# run common post-deployment tasks
- hosts: baremetal
  remote_user: root
  gather_facts: true
  become: true
  vars_files:
    - "roles/post-deployment/vars/main.yml"

  tasks:
    - name: Install necessary utilities for CEPH
      apt:
        name:
          - xfsprogs
          - gdisk
        state: present
    - name: Remove existing rook data directories
      file:
        path: "{{ rook_data_dir_path }}"
        state: absent
      ignore_errors: yes
      tags: reset
    - name: Remove existing rook storage directories
      file:
        path: "{{ rook_storage_dir_path }}"
        state: absent
      ignore_errors: yes
      tags: reset
    - name: Remove existing rook ceph osds
      script: "roles/post-deployment/files/clean-ceph-osd.sh {{ rook_node_device_filter }}"
      ignore_errors: yes
      tags: reset

- hosts: localhost
  connection: local
  gather_facts: true
  become: yes
  vars_files:
    - "{{ engine_path }}/engine/var/versions.yml"
    - "{{ engine_path }}/engine/var/global.yml"
    - "{{ pdf_file }}"
    - "{{ idf_file }}"

  roles:
    - role: post-deployment

# vim: set ts=2 sw=2 expandtab:
