#  Copyright 2022 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: Download and untar prometheus stable version
  unarchive:
    src: "{{ prometheus_git_repo }}"
    dest: "{{ installation_dir }}"
    remote_src: yes

- name: Copy prometheus executable to /usr/local/bin
  copy:
    src: "{{ prometheus_exec_path }}"
    dest: "{{ system_local_path }}"
    remote_src: yes
    mode: "{{ file_permission }}"

- name: Configure prometheus for slurm exporter
  blockinfile:
    path: "{{ prometheus_config_file }}"
    insertafter: EOF
    mode: "{{ file_permission }}"
    block: |
      # SLURM resource manager:
        - job_name: 'my_slurm_exporter'
          scrape_interval:  30s
          scrape_timeout:   30s
          static_configs:
            - targets: ['localhost:{{ slurm_exporter_port }}']

- name: Install & configure nginx
  block:
    - name: Install nginx
      package:
        name: nginx
        state: present
      when: ansible_facts['distribution'] != opensuse_os_name

    - name: Install nginx
      zypper:
        name: nginx
        state: present
      when: ansible_facts['distribution'] == opensuse_os_name

    - name: Configure nginx.conf (1/2)
      replace:
        path: "../../k8s_start_services/templates/nginx.conf.j2"
        regexp: '        server_name  .*'
        replace: "        server_name  {{ ansible_default_ipv4.address }};"
      delegate_to: localhost

    - name: Configure nginx.conf (2/2)
      replace:
        path: "../../k8s_start_services/templates/nginx.conf.j2"
        regexp: '          proxy_pass http://.*'
        replace: "          proxy_pass {{ prometheus_ip }};"
      delegate_to: localhost

    - name: Load nginx conf
      template:
        src: "../../k8s_start_services/templates/nginx.conf.j2"
        dest: "{{ nginx_conf_file_path }}"
        mode: "{{ nginx_conf_file_mode }}"

    - name: Validate nginx conf file
      command: nginx -t
      changed_when: false

    - name: Start and enable nginx service
      service:
        name: nginx
        state: restarted
        enabled: yes
  when:
    - grafana_svc_ip != ""
    - grafana_svc_port != ""