# Copyright 2020 Dell Inc. or its subsidiaries. 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.
---

- name: Initialize variables
  set_fact:
    cobbler_container_status: false
    cobbler_image_status: false
    cobbler_config_status: false
    backup_map_status: false
    new_node_status: false
  tags: install

- name: Check if any backup file exists
  block:
  - name: Check status of backup file
    stat:
      path: "{{ role_path }}/files/backup_mapping_file.csv"
    register: backup_map

  - name: Set status for backup file
    set_fact:
      backup_map_status: true
    when: backup_map.stat.exists == true  
  rescue:
  - name: Message
    debug:
      msg: "All nodes are new"
      verbosity: 2

- name: Inspect the cobbler image
  docker_image_info:
    name: cobbler
  register: cobbler_image_result
  tags: install
  vars:
    ansible_python_interpreter: "/usr/bin/python3"

- name: Check cobbler status on the machine
  docker_container_info:
    name: cobbler
  register: cobbler_result
  tags: install
  vars:
    ansible_python_interpreter: "/usr/bin/python3"

- name: Update cobbler image status
  set_fact:
    cobbler_image_status: true
  when: cobbler_image_result.images| length==1
  tags: install

- name: Update cobbler container status
  set_fact:
    cobbler_container_status: true
  when: cobbler_result.exists
  tags: install

- name: Fetch cobbler profile list
  command: docker exec cobbler cobbler profile list
  changed_when: false
  register: cobbler_profile_list
  ignore_errors: true
  when: cobbler_container_status == true

- name: Check crontab list
  command: docker exec cobbler crontab -l
  changed_when: false
  register: crontab_list
  ignore_errors: true
  when: cobbler_container_status == true

- name: Update cobbler container status
  set_fact:
    cobbler_config_status: true
  when:
    - cobbler_container_status == true
    - "'CentOS' in cobbler_profile_list.stdout"
    - "'* * * * * ansible-playbook /root/tftp.yml' in crontab_list.stdout"
    - "'5 * * * * ansible-playbook /root/inventory_creation.yml' in crontab_list.stdout"