---
# ============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 any post-deployment task defined for the scenario
- hosts: localhost
  connection: local
  gather_facts: no
  become: no
  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 }}' scenario
      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: yes
  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 }}' scenario
      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 == True

# run common post-deployment tasks
# NOTE: none of the common post-deployment tasks is currently applicable to the
# clusters provisioned using heat so we execute the role only for the clusters
# provisioned using bifrost.
# in future, when statement could be moved to tasks in role if the current
# tasks become relevant or new tasks are added.
- hosts: all
  gather_facts: yes
  become: yes
  vars_files:
    - "{{ engine_path }}/engine/var/versions.yml"
    - "{{ engine_path }}/engine/var/global.yml"
    - "{{ pdf_file }}"
    - "{{ idf_file }}"

  roles:
    - role: post-deployment
      when: provisioner_type == 'bifrost'

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