---
# Copyright 2019, Rackspace US, Inc.
#
# 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: Default pxelinux.0 config
  template:
    src: pxelinux-default.j2
    dest: "{{ ironic_inspector_tftpboot_dir }}/pxelinux.cfg/default"
    mode: "0644"

- name: Copy Inspector iPXE Configuration
  template:
    src: inspector.ipxe.j2
    dest: "{{ ironic_http_root }}/inspector.ipxe"
    owner: "{{ ironic_system_user_name }}"
    group: "{{ ironic_system_group_name }}"
    mode: "0644"

- name: Download IPA Images
  get_url:
    url: "{{ item.url }}"
    dest: "{{ ironic_inspector_httpboot_dir }}/{{ item.name }}"
    checksum: "sha256:{{ item.sha_url }}"
    owner: "{{ ironic_system_user_name }}"
    group: "{{ ironic_system_group_name }}"
    mode: '0644'
  with_items: "{{ ironic_deploy_image_list }}"

- name: Configure nginx when inspector boot mode is http
  when: ironic_inspector_boot_mode == 'http'
  block:

    - name: Disable default nginx configuration
      file:
        path: /etc/nginx/sites-enabled/default
        state: absent
      notify:
        - Restart web server

    - name: Remove default nginx config
      file:
        path: /etc/nginx/conf.d/default.conf
        state: absent
      notify:
        - Restart web server

    - name: Ensure nginx configuration directories exist
      file:
        path: "{{ item }}"
        state: directory
        mode: "0755"
      with_items:
        - "/etc/nginx/{{ ironic_nginx_conf_path }}"

    - name: Write alternate nginx.conf for rh like systems
      template:
        src: nginx-nodefault.conf.j2
        dest: "/etc/nginx/nginx-nodefault.conf"
        mode: "0644"
      when:
        - ansible_facts['pkg_mgr'] == 'dnf'
      notify:
        - Restart web server

    - name: Create systemd dropin for rh like systems
      import_role:
        name: systemd_service
      when:
        - ansible_facts['pkg_mgr'] == 'dnf'
      vars:
        systemd_services:
          - service_name: "nginx"
            systemd_overrides_only: true
            load: false
            systemd_overrides:
              Service:
                ExecStart:
                  - ''
                  - '/usr/sbin/nginx -c /etc/nginx/nginx-nodefault.conf'
      notify:
        - Restart web server

    - name: Configure nginx virtual hosts
      template:
        src: ironic-ipxe.conf.j2
        dest: "/etc/nginx/{{ ironic_nginx_conf_path }}/ironic-ipxe.conf"
        mode: "0644"
      notify:
        - Restart web server

    - name: Link to enable nginx virtual hosts
      file:
        src: "/etc/nginx/sites-available/ironic-ipxe.conf"
        path: "/etc/nginx/sites-enabled/ironic-ipxe.conf"
        state: link
      when:
        - ansible_facts['os_family'] == "Debian"
      notify:
        - Restart web server