
    Vh                         d dl mZmZmZ eZdZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d	d	d
Z G d de      Zy)    )absolute_importdivisionprint_functionz
---
author:
- Abhijeet Kasurde (@Akasurde)
name : vmware
short_description: HttpApi Plugin for VMware REST API
description:
  - This HttpApi plugin provides methods to connect to VMware vCenter over a HTTP(S)-based APIs.
N)to_text)AnsibleConnectionFailure)	HTTPError)HttpApiBase)ConnectionErrorzapplication/json)zContent-TypeAcceptc                   @    e Zd Zd Zd Zd Zd Zd
dZd
dZd Z	d Z
y	)HttpApic                 
   |r|ri }d}| j                  ||      \  }}nt        d      |dk(  rt        |      |j                  d      st        d|z        d|d   z  | j                  _        |d   | j                  _        y )N/rest/com/vmware/cis/sessionz,Username and password are required for login  valuezPServer returned response without token info during connection authentication: %szvmware-api-session-id:%s)send_requestr   r
   get
connection_session_uid_token)selfusernamepasswordpayloadurlresponseresponse_datas          k/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/vmware/plugins/httpapi/vmware.pyloginzHttpApi.login#   s    G0C&*&7&7W&E#Hm*+YZZs?!-00  )!"tw"  A  A'AMRYDZ'Z$!.w!7    c                 2    | j                  dd d      \  }}y )Nr   DELETEmethod)r   )r   r   dummys      r   logoutzHttpApi.logout4   s    ++,JDYa+b%r    c                 .    | j                   j                  S N)r   r   r   s    r   get_session_uidzHttpApi.get_session_uid7   s    +++r    c                 .    | j                   j                  S r(   )r   r   r)   s    r   get_session_tokenzHttpApi.get_session_token:   s    %%%r    c                    |rt        j                  |      nd}	 | j                  |       | j                  j	                  |||t
        d      \  }}| j                  |      }|j                         | j                  |      fS # t        $ r Y yt        $ r9}|j                  t        j                  |j                               fcY d }~S d }~ww xY w)Nz{}r#   T)r$   headersforce_basic_auth)r   zObject not found)jsondumps_display_requestr   sendBASE_HEADERS_get_response_valuegetcode_response_to_jsonr   r   codeloadsread)	r   pathbody_paramsr$   datar   r   response_valuees	            r   r   zHttpApi.send_request=   s    *5tzz+&4		0!!!0&*oo&:&:4f^j  ~B&:  'C#Hm!55mDN##%t'='=n'MMM' 	+* 	0664::affh///	0s$   A*B 	CC.CCCc                 p    | j                   j                  dd|d| j                   j                         y )NvvvvzWeb Services:  )r   queue_message_url)r   r$   s     r   r2   zHttpApi._display_requestK   s%    %%fvtOcOc.der    c                 4    t        |j                               S r(   )r   getvalue)r   r   s     r   r5   zHttpApi._get_response_valueN   s    }--/00r    c                 l    	 |rt        j                  |      S i S # t        $ r t        d|z        w xY w)NzInvalid JSON response: %s)r0   r9   
ValueErrorr
   )r   response_texts     r   r7   zHttpApi._response_to_jsonQ   s@    	O0=4::m,E2E 	O!"="MNN	Os     3N)POST)__name__
__module____qualname__r   r&   r*   r,   r   r2   r5   r7    r    r   r   r   "   s-    8"c,&0f1Or    r   )
__future__r   r   r   type__metaclass__DOCUMENTATIONr0   ansible.module_utils.basicr   ansible.errorsr   +ansible.module_utils.six.moves.urllib.errorr   ansible.plugins.httpapir	   ansible.module_utils.connectionr
   r4   r   rN   r    r   <module>rX      sK    C B  . 3 A / ; ' 4Ok 4Or    