# Copyright (c) 2024 VEXXHOST, 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: Detect if InitiatorName is set
  ansible.builtin.slurp:
    src: /etc/iscsi/initiatorname.iscsi
  register: portworx_iscsi_initiatorname

- name: Configure InitiatorName
  when: "'InitiatorName' not in portworx_iscsi_initiatorname.content | b64decode"
  block:
    - name: Generate a new InitiatorName
      changed_when: true
      ansible.builtin.command:
        cmd: iscsi-iname
      register: portworx_iscsi_iname

    - name: Write the new InitiatorName
      ansible.builtin.copy:
        content: "InitiatorName={{ portworx_iscsi_iname.stdout }}"
        dest: /etc/iscsi/initiatorname.iscsi
        owner: root
        group: root
        mode: "0644"

- name: Create namespace
  kubernetes.core.k8s:
    state: present
    definition:
      apiVersion: v1
      kind: Namespace
      metadata:
        name: portworx

- name: Install Portworx
  run_once: true
  kubernetes.core.k8s:
    state: present
    template:
      - portworx.yml
      - config.yml

- name: Wait till the CRDs are created
  run_once: true
  kubernetes.core.k8s_info:
    api_version: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    name: storageclusters.core.libopenstorage.org
  # NOTE(mnaser): Portworx operator creates the CRDs for the cluster
  #               so we need to make sure they're created before we proceed.
  retries: 60
  delay: 5
  register: _result
  until: _result.resources | length > 0

- name: Create Portworx Storage Cluster
  run_once: true
  kubernetes.core.k8s:
    state: present
    template:
      - storage_cluster.yml
      - storage_class.yml
