
    Vh%                         d dl mZmZmZ eZdZdZdZ	 d dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZ d d	lmZ  G d
 de      Zd Zedk(  r e        yy# e$ r Y ?w xY w)    )absolute_importdivisionprint_functiona'  
module: vmware_vasa
version_added: '3.8.0'
short_description: Manage VMware Virtual Volumes storage provider
author:
  - Eugenio Grosso (@genegr) <eugenio.grosso@purestorage.com>
description:
  - This module can be used to register and unregister a VASA provider
options:
  vasa_name:
    description:
    - The name of the VASA provider to be managed.
    type: str
    required: True
  vasa_url:
    description:
    - The url  of the VASA provider to be managed.
    - This parameter is required if O(state=present)
    type: str
    required: True
  vasa_username:
    description:
    - The user account to connect to the VASA provider.
    - This parameter is required if O(state=present)
    type: str
  vasa_password:
    description:
    - The password of the user account to connect to the VASA provider.
    - This parameter is required if O(state=present)
    type: str
  vasa_certificate:
    description:
    - The SSL certificate of the VASA provider.
    - This parameter is required if O(state=present)
    type: str
  state:
    description:
    - Create (V(present)) or remove (V(absent)) a VASA provider.
    choices: [ absent, present ]
    default: present
    type: str
seealso:
- module: community.vmware.vmware_vasa_info
extends_documentation_fragment:
- community.vmware.vmware.documentation
a  
- name: Create Cluster
  community.vmware.vmware_cluster:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    vasa_name: "{{ vasa_name }}"
    vasa_url: "{{ vasa_url }}"
    vasa_username: "{{ vasa_username }}"
    vasa_password: "{{ vasa_password }}"
    vasa_certificate: "{{ vasa_certificate }}"
    state: present
  delegate_to: localhost

- name: Unregister VASA provider
  community.vmware.vmware_vasa:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    vasa_name: "{{ vasa_name }}"
    state: absent
  delegate_to: localhost

)sms)AnsibleModule)SMS	TaskErrorwait_for_sms_task)base_argument_spec)	to_nativec                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )
VMwareVASAc                 *   t         t        |   |       |j                  d   | _        |j                  d   | _        |j                  d   | _        |j                  d   | _        |j                  d   | _        |j                  d   | _	        d | _
        y )N	vasa_namevasa_urlvasa_usernamevasa_passwordvasa_certificatestate)superr   __init__paramsr   r   r   r   r   desired_statestorage_manager)selfmodule	__class__s     p/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/vmware/plugins/modules/vmware_vasa.pyr   zVMwareVASA.__init__e   s    j$(0{3j1#]]?;#]]?; &.@ A#]]73#    c                     | j                   | j                  d| j                  | j                  dd}| j                          | j	                         } || j
                     |           y)z9
        Manage internal states of VASA provider
        )presentabsent)r#   r"   N)state_unregister_vasastate_exit_unchangedstate_register_vasaget_sms_connectioncheck_vasa_configurationr   )r   vasa_statescurrent_states      r   process_statezVMwareVASA.process_stateo   sq      5533
  4422	
 	!557 	7D&&'68r    c           	      F   d\  }}t         j                  j                         }| j                  |_        | j
                  |_        | j                  |_        | j                  |_
        | j                  |_        	 | j                  j                  s}| j                  j!                  |      }t#        |      \  }}t%        |t         j&                  j(                        r:|j                  |_        | j                  j!                  |      }t#        |      \  }}t%        |t         j                  j*                        r|j-                         }|j                  |j.                  |j0                  |j2                  |j4                  |j                  |j6                  g d}|j8                  D ]`  }t;        |j<                        |j>                  t;        |j@                        t;        |jB                        d}|d   jE                  |       b |}| j                  jG                  ||       y# tH        $ r2}	| j                  jK                  dtM        |	      z         Y d}	~	yd}	~	wtN        $ r2}
| j                  jK                  d	tM        |
      z         Y d}
~
yd}
~
ww xY w)
z5
        Register VASA provider with vcenter
        TN)nameuiddescriptionversioncertificate_statusurlstatusrelated_storage_array)activearray_id
manageablepriorityr5   changedresultz9Failed to register VASA provider due to task exception %smsgNz3Failed to register VASA due to generic exception %s)(r   providerVasaProviderSpecr   r.   r   usernamer   passwordr   r3   r   certificater   
check_moder   RegisterProvider_Taskr   
isinstancefaultCertificateNotTrustedVasaProviderQueryProviderInfor/   r0   r1   certificateStatusr4   relatedStorageArraystrr6   arrayIdr8   r9   append	exit_jsonr
   	fail_jsonr   	Exception)r   r;   r<   vasa_provider_spectaskprovider_infotemp_provider_infoatemp_storage_arraytask_errgeneric_excs              r   r&   zVMwareVASA.state_register_vasa   sQ    % \\::<"&..&*&8&8#&*&8&8#!%)-)>)>&'	_;;))++AABTU"3D"9 fcii&E&EF5;5G5G&2//EEFXYD&7&=OGVfcll&?&?@$*$<$<$>M - 2 2,00'4'@'@#0#8#8.;.M.M,00"/"6"613	*& +>> _&)!((m()		*-all*;(+AJJ	.* ++BCJJK]^_ 0FKK!!'&!A 	YKK!! 'BDMhDW'X! Y Y 	_KK!! 'EGPQ\G]'^! _ _	_s%   :F1H, ,	J 5(I""J .(JJ c                 p   d\  }}	 | j                   j                  s?| j                  j                  }| j                  j                  |      }t        |      \  }}| j                   j                  ||       y# t        $ r2}| j                   j                  dt        |      z         Y d}~yd}~ww xY w)z*
        Unregister VASA provider
        r-   r:   z5Failed to unregister VASA due to generic exception %sr=   N)r   rD   vasa_provider_infor/   r   UnregisterProvider_Taskr   rP   rR   rQ   r   )r   r;   r<   r/   rT   rZ   s         r   r$   z VMwareVASA.state_unregister_vasa   s     %	_;;))--11++CCCH"3D"9KK!!'&!A 	_KK!! 'EGPQ\G]'^! _ _	_s   A2A: :	B5(B00B5c                 <    | j                   j                  d       y)z)
        Exit without any change
        F)r;   N)r   rP   )r   s    r   r%   zVMwareVASA.state_exit_unchanged   s     	e,r    c           
      &   d| _         | j                  j                         | _        | j                  j	                         }	 |D ]  }|j                         }|j                  | j                  k(  s-|j                  | j                  k7  r3t        d| j                  d|j                  d| j                  d      || _          n | j                   yy# t        $ r2}| j                  j                  dt        |      z  	       Y d}~yd}~ww xY w)
zm
        Check VASA configuration
        Returns: 'Present' if VASA provider exists, else 'absent'

        NzVASA provider 'z' URL 'z(' is inconsistent  with task parameter ''r#   r"   z9Failed to check configuration due to generic exception %sr=   )r\   sms_siQueryStorageManagerr   QueryProviderrJ   r.   r   r3   r   rR   r   rQ   r   )r   storage_providersr?   rU   rZ   s        r   r(   z#VMwareVASA.check_vasa_configuration   s    #'#{{>>@ 00>>@	_-  ( : : < %%7$((DMM9'+/>>=;L;Ldmm)] ^ ^ /<D+ &&. 	_KK!! 'EGPQ\G]'^! _ _	_s   .C 1A"C 	D(DD)
__name__
__module____qualname__r   r+   r&   r$   r%   r(   __classcell__)r   s   @r   r   r   d   s%    $9*2_h_ -_r    r   c                  <   t               } | j                  t        t        dd      t        dd      t        d      t        dd      t        d      t        ddddg      	             t        | dd
dg dgg      }t	        |      }|j                          y )NrM   T)typerequired)rj   )rj   no_logr"   r#   )rj   defaultchoices)r   r   r   r   r   r   r   )r   r   r   )argument_specsupports_check_moderequired_if)r   updatedictr   r   r+   )ro   r   vmware_vasas      r   mainru      s    &(MED1540&d35)$$i02	 	 # i!WX
F V$Kr    __main__N)
__future__r   r   r   rj   __metaclass__DOCUMENTATIONEXAMPLESRETURNpyVmomir   ImportErroransible.module_utils.basicr   Dansible_collections.community.vmware.plugins.module_utils.vmware_smsr	   r
   r   Hansible_collections.community.vmware.plugins.module_utils._argument_specr   ansible.module_utils._textr   r   ru   re    r    r   <module>r      s    A @-^0
	 5  h 0C_ C_L 2 zF W  		s   A AA