# Copyright 2021 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.
---

# Testcase OMNIA_1.1_PV_TC_001
# Test case to verify the connectivity to powervault and validate product id

- name: OMNIA_1.1_PV_TC_001
  hosts: powervault
  connection: local
  tags: TC_001
  gather_subset:
    - 'min'
  vars_files:
    - ../input_params/base_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - test_vars/test_powervault_vars.yml
  tasks:

    - name: Check login_vars file is encrypted
      command: cat {{ login_vars_path }}
      changed_when: false
      register: config_content
      no_log: true
      tags: always

    - name: Decrpyt login_vars.yml
      command: >-
        ansible-vault decrypt {{ login_vars_path }}
        --vault-password-file {{ login_vars_vault_path }}
      changed_when: false
      when: "'$ANSIBLE_VAULT;' in config_content.stdout"
      no_log: true
      tags: always

    - name: Include variable file login_vars.yml
      include_vars: "{{ login_vars_path }}"
      no_log: true
      tags: always

    - name: Get auth string
      shell: echo -n {{ powervault_me4_username }}_{{ powervault_me4_password }} | sha256sum
      register: auth_string_output
      changed_when: false
      failed_when: false
      no_log: true
      tags: always

    - name: Set the powervault username and password
      set_fact:
        powervault_username: "{{ powervault_me4_username }}"
        powervault_password: "{{ powervault_me4_password }}"
        auth_string: "{{ auth_string_output }}"
      no_log: true
      tags: always

    - name: Encypt login file
      command: >-
        ansible-vault encrypt {{ login_vars_path }}
        --vault-password-file {{ login_vars_vault_path }}
      changed_when: false
      no_log: true
      tags: always

    - name: Ping the powervault device to validate connectivity
      command: ping -c1 {{ inventory_hostname }}
      register: validate_login
      changed_when: false
      failed_when: false
      tags: VERIFY_OMNIA_01

    - name: Validate the powervault connectivity
      assert:
        that:
          - "'ping' in validate_login.stdout"
        success_msg: "{{ connectivity_success_msg }}"
        fail_msg: "{{ connectivity_failure_msg }}"
      tags: VERIFY_OMNIA_01

    - name: Get session key
      uri:
        url: https://{{ inventory_hostname }}/api/login/{{ auth_string.stdout | replace(" -", "") }}
        method: GET
        headers:
          {'datatype': 'json'}
        validate_certs: no
      register: session_key
      tags: VERIFY_OMNIA_01

    - name: Execute show system command
      uri:
        url: https://{{ inventory_hostname }}/api/show/system
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: system_info
      tags: VERIFY_OMNIA_01

    - name: Verify the product id of device
      assert:
        that:
          - scsi_product_id in system_info.json.system[0]['scsi-product-id']
          - system_info.json.system[0]['product-id'] == "ME4012" or
            system_info.json.system[0]['product-id'] == "ME4024" or
            system_info.json.system[0]['product-id'] == "ME4084"
        success_msg: "{{ product_id_success_msg }}"
        fail_msg: "{{ product_id_failure_msg }}"
      tags: VERIFY_OMNIA_01

# Testcase OMNIA_1.1_PV_TC_002
# Test case to verify the powervault management port IP is in dhcp range

- name: OMNIA_1.1_PV_TC_002
  hosts: powervault
  connection: local
  tags: TC_002
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml  
  tasks:

    - name: Set base vars parameters
      lineinfile:
        path: "{{ base_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^mngmnt_network_dhcp_start_range', line: 'mngmnt_network_dhcp_start_range: "{{ dhcp_start_range }}"' }
        - { regexp: '^mngmnt_network_dhcp_end_range', line: 'mngmnt_network_dhcp_end_range: "{{ dhcp_end_range }}"' }

    - name: Execute show controllers command
      uri:
        url: https://{{ inventory_hostname }}/api/show/controllers
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: controller_info

    - name: Assert the IP ranges
      assert:
        that:
          - ip_range in controller_info.json.controllers[0]['ip-address']
          - ip_range in mngmnt_network_dhcp_start_range
          - ip_range in mngmnt_network_dhcp_end_range
        success_msg: "{{ ip_validation_success_msg }}"
        fail_msg: "{{ ip_validation_failure_msg }}"

# Testcase OMNIA_1.1_PV_TC_003
# Test case to verify the users settings

- name: OMNIA_1.1_PV_TC_003
  hosts: powervault
  connection: local
  tags: TC_003
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml  
  tasks:

    - name: Execute show users command
      uri:
        url: https://{{ inventory_hostname }}/api/show/users/{{ powervault_username }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: user_info
      no_log: true
      tags: VERIFY_OMNIA_01

    - name: Verify the user settings
      assert:
        that:
          - user_roles in user_info.json.users[0].roles
          - user_type in user_info.json.users[0]['user-type']
          - user_locale in user_info.json.users[0]['user-locale']
          - "'****' in user_info.json.users[0].password"
        success_msg: "{{ user_validation_success_msg }}"
        fail_msg: "{{ user_validation_failure_msg }}"
      tags: VERIFY_OMNIA_01

# Testcase OMNIA_1.1_PV_TC_018
# Test case to validate linear storage with linear pools and disk groups

- name: OMNIA_1.1_PV_TC_018
  hosts: powervault
  connection: local
  tags: TC_018
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ linear_pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid1_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_1_2 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v1 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v1 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}"  

    - name: Validate powervault playbook execution output
      assert:
        that:
          - success_job_status in job_status.status
        success_msg: "{{ playbook_exec_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

    - name: Execute show disk groups command
      uri:
        url: https://{{ inventory_hostname }}/api/show/disk-groups/pool/{{ disk_group_name_omnia }}/{{ disk_group_name_omnia }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: pools_diskgroup_info
      tags: VERIFY_OMNIA_01

    - name: Verify the pool and disk group additions
      assert:
        that:
          - linear_pool_type in pools_diskgroup_info.json['disk-groups'][0]['storage-type']
          - disk_group_name_omnia in pools_diskgroup_info.json['disk-groups'][0].name
          - disk_group_name_omnia in pools_diskgroup_info.json['disk-groups'][0].pool
          - disk_type_ssdsas in pools_diskgroup_info.json['disk-groups'][0]['disk-description']
          - raid1_level in pools_diskgroup_info.json['disk-groups'][0].raidtype
        success_msg: "{{ pool_diskgroup_config_success_msg }}"
        fail_msg: "{{ pool_diskgroup_config_failure_msg }}"
      tags: VERIFY_OMNIA_01

    - name: Execute show volumes command for k8s
      uri:
        url: https://{{ inventory_hostname }}/api/show/volumes/{{ volume_name_k8s_v1 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: k8s_volumes_info
      tags: VERIFY_OMNIA_01

    - name: Execute show volumes command for slurm
      uri:
        url: https://{{ inventory_hostname }}/api/show/volumes/{{ volume_name_slurm_v1 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: slurm_volumes_info
      tags: VERIFY_OMNIA_01

    - name: Verify the volumes creation
      assert:
        that:
          - volume_name_k8s_v1 in k8s_volumes_info.json.volumes[0]['volume-name']
          - volume_size_100gb in k8s_volumes_info.json.volumes[0].size
          - volume_name_slurm_v1 in slurm_volumes_info.json.volumes[0]['volume-name']
          - volume_size_100gb in slurm_volumes_info.json.volumes[0].size
          - disk_group_name_omnia in k8s_volumes_info.json.volumes[0]['storage-pool-name']
        success_msg: "{{ volumes_creation_success_msg }}"
        fail_msg: "{{ volumes_creation_failure_msg }}"
      tags: VERIFY_OMNIA_01
   
    - name: Delete the disk group created
      uri:
        url: https://{{ inventory_hostname }}/api/remove/disk-groups/{{ disk_group_name_omnia }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_diskgroup

# Testcase OMNIA_1.1_PV_TC_005
# Test case to validate configuration of pools, disk group and storage volumes with SAS MDL disks, RAID 1 level, storage with rw access 

- name: OMNIA_1.1_PV_TC_005
  hosts: powervault
  connection: local
  tags: TC_005
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../roles/webui_awx/vars/main.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_a }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgA01 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid1_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_5_6 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v1 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v1 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - success_job_status in job_status.status
        success_msg: "{{ playbook_exec_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

    - name: Get session key
      uri:
        url: https://{{ inventory_hostname }}/api/login/{{ auth_string.stdout | replace(" -", "") }}
        method: GET
        headers:
          {'datatype': 'json'}
        validate_certs: no
      register: session_key

    - name: Execute show disk groups command
      uri:
        url: https://{{ inventory_hostname }}/api/show/disk-groups/pool/{{ pool_a }}/{{ disk_group_name_omnia_dgA01 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: pools_diskgroup_info

    - name: Verify the pool and disk group additions
      assert:
        that:
          - pool_type in pools_diskgroup_info.json['disk-groups'][0]['storage-type']
          - disk_group_name_omnia_dgA01 in pools_diskgroup_info.json['disk-groups'][0].name
          - pool_a in pools_diskgroup_info.json['disk-groups'][0].pool
          - disk_type_sasmdl in pools_diskgroup_info.json['disk-groups'][0]['disk-description']
          - raid1_level in pools_diskgroup_info.json['disk-groups'][0].raidtype
        success_msg: "{{ pool_diskgroup_config_success_msg }}"
        fail_msg: "{{ pool_diskgroup_config_failure_msg }}"

    - name: Execute show volumes command
      uri:
        url: https://{{ inventory_hostname }}/api/show/volumes/{{ volume_name_k8s_v1 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: k8s_volumes_info

    - name: Execute show volumes command
      uri:
        url: https://{{ inventory_hostname }}/api/show/volumes/{{ volume_name_slurm_v1 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: slurm_volumes_info

    - name: Verify the volumes creation
      assert:
        that:
          - volume_name_k8s_v1 in k8s_volumes_info.json.volumes[0]['volume-name']
          - volume_size_100gb in k8s_volumes_info.json.volumes[0].size
          - volume_name_slurm_v1 in slurm_volumes_info.json.volumes[0]['volume-name']
          - volume_size_100gb in slurm_volumes_info.json.volumes[0].size
          - pool_a in k8s_volumes_info.json.volumes[0]['storage-pool-name']
        success_msg: "{{ volumes_creation_success_msg }}"
        fail_msg: "{{ volumes_creation_failure_msg }}"

# Testcase OMNIA_1.1_PV_TC_004
# Test case to validate the SNMP trap notification when level is set to none

- name: OMNIA_1.1_PV_TC_004
  hosts: powervault
  connection: local
  tags: TC_004
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
  tasks:

    - name: Execute show snmp parameters command
      uri:
        url: https://{{ inventory_hostname }}/api/show/snmp-parameters
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: snmp_trap_info

    - name: Verify the snmp trap configuration
      assert:
        that:
          - snmp_notify_status_disable in snmp_trap_info.json['snmp-parameters'][0]['snmp-enabled']
          - snmp_notify_level_none in snmp_trap_info.json['snmp-parameters'][0]['snmp-filter']
        success_msg: "{{ snmp_trap_success_msg }}"
        fail_msg: "{{ snmp_trap_failure_msg }}"

# Testcase OMNIA_1.1_PV_TC_014
# Test case to validate the error mesage when mixed type of disks (SSD SAS and SAS MDL disks) are added to the virtual disk groups 

- name: OMNIA_1.1_PV_TC_014
  hosts: powervault
  connection: local
  tags: TC_014
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_a }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgA02 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid1_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_3_4 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v1 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v1 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - failed_job_status in job_status.status
        success_msg: "{{ failed_job_status_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

# Testcase OMNIA_1.1_PV_TC_015
# Test case to validate the error in addition of virtual disk groups when the specified disks are already part of an existing disk group 

- name: OMNIA_1.1_PV_TC_015
  hosts: powervault
  connection: local
  tags: TC_015
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_a }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgA02 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid1_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_5_6 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v1 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v1 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - failed_job_status in job_status.status
        success_msg: "{{ failed_job_status_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

# Testcase OMNIA_1.1_PV_TC_016
# Test case to validate error when specified name is already in use while adding disk groups

- name: OMNIA_1.1_PV_TC_016
  hosts: powervault
  connection: local
  tags: TC_016
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_a }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgA01 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid1_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_2_3 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v1 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v1 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - failed_job_status in job_status.status
        success_msg: "{{ failed_job_status_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

# Testcase OMNIA_1.1_PV_TC_017
# Test case to validate error when specified name is already in use while creating volumes

- name: OMNIA_1.1_PV_TC_017
  hosts: powervault
  connection: local
  tags: TC_017
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_a }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgA02 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid1_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_2_3 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v1 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v2 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - failed_job_status in job_status.status
        success_msg: "{{ failed_job_status_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

    - name: Get session key
      uri:
        url: https://{{ inventory_hostname }}/api/login/{{ auth_string.stdout | replace(" -", "") }}
        method: GET
        headers:
          {'datatype': 'json'}
        validate_certs: no
      register: session_key

    - name: Delete the disk group created
      uri:
        url: https://{{ inventory_hostname }}/api/remove/disk-groups/{{ disk_group_name_omnia_dgA02 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_diskgroup

    - name: Delete the volumes created
      uri:
        url: https://{{ inventory_hostname }}/api/delete/volumes/{{ volume_name_slurm_v2 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_volumes

# Testcase OMNIA_1.1_PV_TC_012
# Test case to validate error when same name is used for creation of both volumes

- name: OMNIA_1.1_PV_TC_012
  hosts: powervault
  connection: local
  tags: TC_012
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_a }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgA02 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid1_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_2_3 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v2 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_k8s_v2 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - failed_job_status in job_status.status
        success_msg: "{{ failed_job_status_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

    - name: Get session key
      uri:
        url: https://{{ inventory_hostname }}/api/login/{{ auth_string.stdout | replace(" -", "") }}
        method: GET
        headers:
          {'datatype': 'json'}
        validate_certs: no
      register: session_key

    - name: Delete the disk group created
      uri:
        url: https://{{ inventory_hostname }}/api/remove/disk-groups/{{ disk_group_name_omnia_dgA02 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_diskgroup

    - name: Delete the volumes created
      uri:
        url: https://{{ inventory_hostname }}/api/delete/volumes/{{ volume_name_k8s_v2 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_volumes

# Testcase OMNIA_1.1_PV_TC_006
# Test case to validate configuration of pools and disk group with SSD SAS disks, RAID 5 level 

- name: OMNIA_1.1_PV_TC_006
  hosts: powervault
  connection: local
  tags: TC_006
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_a }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgA02 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid5_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_0_2 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v2 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v2 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - success_job_status in job_status.status
        success_msg: "{{ playbook_exec_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

    - name: Get session key
      uri:
        url: https://{{ inventory_hostname }}/api/login/{{ auth_string.stdout | replace(" -", "") }}
        method: GET
        headers:
          {'datatype': 'json'}
        validate_certs: no
      register: session_key

    - name: Execute show disk groups command
      uri:
        url: https://{{ inventory_hostname }}/api/show/disk-groups/pool/{{ pool_a }}/{{ disk_group_name_omnia_dgA02 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: pools_diskgroup_info

    - name: Verify the pool and disk group additions
      assert:
        that:
          - pool_type in pools_diskgroup_info.json['disk-groups'][0]['storage-type']
          - disk_group_name_omnia_dgA02 in pools_diskgroup_info.json['disk-groups'][0].name
          - pool_a in pools_diskgroup_info.json['disk-groups'][0].pool
          - disk_type_ssdsas in pools_diskgroup_info.json['disk-groups'][0]['disk-description']
          - raid5_level in pools_diskgroup_info.json['disk-groups'][0].raidtype
        success_msg: "{{ pool_diskgroup_config_success_msg }}"
        fail_msg: "{{ pool_diskgroup_config_failure_msg }}"

    - name: Delete the disk group created
      uri:
        url: https://{{ inventory_hostname }}/api/remove/disk-groups/{{ disk_group_name_omnia_dgA02 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_diskgroup

    - name: Delete the volumes created
      uri:
        url: https://{{ inventory_hostname }}/api/delete/volumes/{{ volume_name_k8s_v2 }},{{ volume_name_slurm_v2 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_volumes

# Testcase OMNIA_1.1_PV_TC_007
# Test case to validate configuration of pools and disk group with SAS MDL disks, RAID 6 level

- name: OMNIA_1.1_PV_TC_007
  hosts: powervault
  connection: local
  tags: TC_007
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_b }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgB01 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid6_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_7_10 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v2 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v2 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - success_job_status in job_status.status
        success_msg: "{{ playbook_exec_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

    - name: Get session key
      uri:
        url: https://{{ inventory_hostname }}/api/login/{{ auth_string.stdout | replace(" -", "") }}
        method: GET
        headers:
          {'datatype': 'json'}
        validate_certs: no
      register: session_key

    - name: Execute show disk groups command
      uri:
        url: https://{{ inventory_hostname }}/api/show/disk-groups/pool/{{ pool_b }}/{{ disk_group_name_omnia_dgB01 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: pools_diskgroup_info

    - name: Verify the pool and disk group additions
      assert:
        that:
          - pool_type in pools_diskgroup_info.json['disk-groups'][0]['storage-type']
          - disk_group_name_omnia_dgB01 in pools_diskgroup_info.json['disk-groups'][0].name
          - pool_b in pools_diskgroup_info.json['disk-groups'][0].pool
          - disk_type_sasmdl in pools_diskgroup_info.json['disk-groups'][0]['disk-description']
          - raid6_level in pools_diskgroup_info.json['disk-groups'][0].raidtype
        success_msg: "{{ pool_diskgroup_config_success_msg }}"
        fail_msg: "{{ pool_diskgroup_config_failure_msg }}"

    - name: Delete the disk group created
      uri:
        url: https://{{ inventory_hostname }}/api/remove/disk-groups/{{ disk_group_name_omnia_dgB01 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_diskgroup

    - name: Delete the volumes created
      uri:
        url: https://{{ inventory_hostname }}/api/delete/volumes/{{ volume_name_k8s_v2 }},{{ volume_name_slurm_v2 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_volumes

# Testcase OMNIA_1.1_PV_TC_008
# Test case to validate configuration of pools and disk group with SAS MDL disks, RAID 10 level

- name: OMNIA_1.1_PV_TC_008
  hosts: powervault
  connection: local
  tags: TC_008
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml 
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_b }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgB01 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid10_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_8_11 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v2 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v2 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - success_job_status in job_status.status
        success_msg: "{{ playbook_exec_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

    - name: Get session key
      uri:
        url: https://{{ inventory_hostname }}/api/login/{{ auth_string.stdout | replace(" -", "") }}
        method: GET
        headers:
          {'datatype': 'json'}
        validate_certs: no
      register: session_key

    - name: Execute show disk groups command
      uri:
        url: https://{{ inventory_hostname }}/api/show/disk-groups/pool/{{ pool_b }}/{{ disk_group_name_omnia_dgB01 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: pools_diskgroup_info

    - name: Verify the pool and disk group additions
      assert:
        that:
          - pool_type in pools_diskgroup_info.json['disk-groups'][0]['storage-type']
          - disk_group_name_omnia_dgB01 in pools_diskgroup_info.json['disk-groups'][0].name
          - pool_b in pools_diskgroup_info.json['disk-groups'][0].pool
          - disk_type_sasmdl in pools_diskgroup_info.json['disk-groups'][0]['disk-description']
          - raid10_level in pools_diskgroup_info.json['disk-groups'][0].raidtype
        success_msg: "{{ pool_diskgroup_config_success_msg }}"
        fail_msg: "{{ pool_diskgroup_config_failure_msg }}"

    - name: Delete the disk group created
      uri:
        url: https://{{ inventory_hostname }}/api/remove/disk-groups/{{ disk_group_name_omnia_dgB01 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_diskgroup

    - name: Delete the volumes created
      uri:
        url: https://{{ inventory_hostname }}/api/delete/volumes/{{ volume_name_k8s_v2 }},{{ volume_name_slurm_v2 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_volumes

# Testcase OMNIA_1.1_PV_TC_009
# Test case to validate configuration of pools and disk group with SAS MDL disks, ADAPT level

- name: OMNIA_1.1_PV_TC_009
  hosts: powervault
  connection: local
  tags: TC_009
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_b }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgB01 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid_adapt_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_0_11 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v2 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v2 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - failed_job_status in job_status.status
        success_msg: "{{ failed_job_status_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

# Testcase OMNIA_1.1_PV_TC_011
# Test case to validate the success of volume creation when volume size is more than the pool size

- name: OMNIA_1.1_PV_TC_011
  hosts: powervault
  connection: local
  tags: TC_011
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Get session key
      uri:
        url: https://{{ inventory_hostname }}/api/login/{{ auth_string.stdout | replace(" -", "") }}
        method: GET
        headers:
          {'datatype': 'json'}
        validate_certs: no
      register: session_key

    - name: Execute show disk groups command
      uri:
        url: https://{{ inventory_hostname }}/api/show/pools/{{ pool_a }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: pools_info

    - name: Set the volume size
      set_fact:
        volume_size_overcommit: "{{ (pools_info.json['pools'][0]['total-size'] | regex_replace('GB','') | regex_replace('MB','')) | int + 1000 }}GB"
 
    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_a }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgA02 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid1_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_2_3 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v2 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v2 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_overcommit }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: false
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - success_job_status in job_status.status
        success_msg: "{{ playbook_exec_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

    - name: Execute show k8s volumes command
      uri:
        url: https://{{ inventory_hostname }}/api/show/volumes/{{ volume_name_k8s_v2 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: k8s_volumes_info
    
    - name: Execute show slurm volumes command
      uri:
        url: https://{{ inventory_hostname }}/api/show/volumes/{{ volume_name_slurm_v2 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: slurm_volumes_info

    - name: Verify the volumes creation
      assert:
        that:
          - volume_name_k8s_v2 in k8s_volumes_info.json.volumes[0]['volume-name']
          - volume_name_slurm_v2 in slurm_volumes_info.json.volumes[0]['volume-name']
          - pool_a in slurm_volumes_info.json.volumes[0]['storage-pool-name']
        success_msg: "{{ volumes_creation_success_msg }}"
        fail_msg: "{{ volumes_creation_failure_msg }}"

    - name: Delete the disk group created
      uri:
        url: https://{{ inventory_hostname }}/api/remove/disk-groups/{{ disk_group_name_omnia_dgA02 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_diskgroup

    - name: Delete the volumes created
      uri:
        url: https://{{ inventory_hostname }}/api/delete/volumes/{{ volume_name_k8s_v2 }},{{ volume_name_slurm_v2 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_volumes

# Testcase OMNIA_1.1_PV_TC_013
#Test case to validate the SNMP trap notification when level is set to crit

- name: OMNIA_1.1_PV_TC_013
  hosts: powervault
  connection: local
  tags: TC_013
  gather_subset:
    - 'min'
  vars_files:
    - test_vars/test_powervault_vars.yml
    - ../input_params/powervault_me4_vars.yml
    - ../input_params/base_vars.yml
    - ../roles/webui_awx/vars/main.yml
  tasks:

    - name: Set base vars parameters
      lineinfile:
        path: "{{ base_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^snmp_trap_destination', line: 'snmp_trap_destination: "{{ snmp_destination }}"' }

    - name: Set powervault parameters
      lineinfile:
        path: "{{ powervault_me4_var_path }}"
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      loop:
        - { regexp: '^powervault_me4_snmp_notify_level', line: 'powervault_me4_snmp_notify_level: "{{ snmp_notify_level_crit }}"' }
        - { regexp: '^powervault_me4_pool', line: 'powervault_me4_pool: "{{ pool_a }}"' }
        - { regexp: '^powervault_me4_pool_type', line: 'powervault_me4_pool_type: "{{ pool_type }}"' }
        - { regexp: '^powervault_me4_disk_group_name', line: 'powervault_me4_disk_group_name: "{{ disk_group_name_omnia_dgA02 }}"' }
        - { regexp: '^powervault_me4_raid_levels', line: 'powervault_me4_raid_levels: "{{ raid1_level }}"' }
        - { regexp: '^powervault_me4_disk_range', line: 'powervault_me4_disk_range: "{{ disk_range_2_3 }}"' }
        - { regexp: '^powervault_me4_k8s_volume_name', line: 'powervault_me4_k8s_volume_name: "{{ volume_name_k8s_v2 }}"' }
        - { regexp: '^powervault_me4_slurm_volume_name', line: 'powervault_me4_slurm_volume_name: "{{ volume_name_slurm_v2 }}"' }
        - { regexp: '^powervault_me4_volume_size', line: 'powervault_me4_volume_size: "{{ volume_size_input_100gb }}"' }

    - name: Execute powervault playbook using AWX collections
      vars:
        inventory_name: "{{ powervault_inventory_name }}"
        template_name: "{{ template_value }}"
        job_template_name: "{{ job_name }}"
        playbook_path: "{{ powervault_playbook_path }}"
        delete_status: true
      include_tasks: "{{ awx_script_path }}" 

    - name: Validate powervault playbook execution output
      assert:
        that:
          - success_job_status in job_status.status
        success_msg: "{{ playbook_exec_success_msg }}"
        fail_msg: "{{ playbook_exec_fail_msg }}"
      changed_when: false

    - name: Get session key
      uri:
        url: https://{{ inventory_hostname }}/api/login/{{ auth_string.stdout | replace(" -", "") }}
        method: GET
        headers:
          {'datatype': 'json'}
        validate_certs: no
      register: session_key

    - name: Execute show snmp parameters command
      uri:
        url: https://{{ inventory_hostname }}/api/show/snmp-parameters
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: snmp_trap_info

    - name: Verify the snmp trap configuration
      assert:
        that:
          - snmp_notify_status_enable in snmp_trap_info.json['snmp-parameters'][0]['snmp-enabled']
          - snmp_notify_level_crit in snmp_trap_info.json['snmp-parameters'][0]['snmp-filter']
        success_msg: "{{ snmp_trap_enable_success_msg }}"
        fail_msg: "{{ snmp_trap_failure_msg }}"
   
    - name: Delete the disk group created
      uri:
        url: https://{{ inventory_hostname }}/api/remove/disk-groups/{{ disk_group_name_omnia_dgA02 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_diskgroup

    - name: Delete the volumes created
      uri:
        url: https://{{ inventory_hostname }}/api/delete/volumes/{{ volume_name_k8s_v2 }},{{ volume_name_slurm_v2 }}
        method: GET
        body_format: json
        validate_certs: no
        use_proxy: no
        headers:
          {'sessionKey': "{{ session_key.json.status[0].response }}", 'datatype':'json'}
      register: delete_volumes
