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

- name: Set Credentials for IB switch
  set_fact:
    username: "{{ lookup('env','ANSIBLE_NET_USERNAME') }}"
    password: "{{ lookup('env','ANSIBLE_NET_PASSWORD') }}"
    global_config: false
    interface_config: false
    filtered_dict: {}
  no_log: true

- name: Authenticate
  block:
    - name: Authenticate to switch- "{{ inventory_hostname }}"
      uri:
        url: http://{{ inventory_hostname }}/admin/launch?script=rh&template=login&action=login
        method: POST
        body_format: form-urlencoded
        body:
          f_user_id: "{{ username }}"
          f_password: "{{ password }}"
          enter: Sign in
        status_code: 302
      register: login
      no_log: true

    - name: Verify authentication status
      fail:
        msg: "Authentication failed"
      when: login.set_cookie is undefined

  rescue:
    - name: Filtered response creation
      set_fact:
        filtered_dict: "{{ filtered_dict |combine({ item.key: item.value }) }}"
      when: item.key not in 'invocation'
      with_dict: "{{ login }}"
      no_log: true

    - name: Authentication failure response
      fail:
        msg: "{{ filtered_dict }}"