
    Vh                         d dl mZmZmZ eZdZdZdZ	 d dl	m
Z
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_functionax  
---
module: vmware_datacenter
short_description: Manage VMware vSphere Datacenters
description:
    - This module can be used to manage (create, delete) VMware vSphere Datacenters.
author:
- Joseph Callen (@jcpowermac)
- Kamil Szczygiel (@kamsz)
options:
    datacenter_name:
      description:
      - The name of the datacenter the cluster will be created in.
      required: true
      type: str
    state:
      description:
      - If the datacenter should be present or absent.
      choices: [ present, absent ]
      default: present
      type: str
extends_documentation_fragment:
- community.vmware.vmware.documentation

aB  
- name: Create Datacenter
  community.vmware.vmware_datacenter:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_username }}'
    password: '{{ vcenter_password }}'
    datacenter_name: '{{ datacenter_name }}'
    state: present
  delegate_to: localhost

- name: Delete Datacenter
  community.vmware.vmware_datacenter:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_username }}'
    password: '{{ vcenter_password }}'
    datacenter_name: '{{ datacenter_name }}'
    state: absent
  delegate_to: localhost
  register: datacenter_delete_result
z#
)vimvmodl)AnsibleModule)PyVmomifind_datacenter_by_namewait_for_task)base_argument_spec)	to_nativec                   6     e Zd Z fdZd Zd Zd Zd Z xZS )VmwareDatacenterManagerc                     t         t        |   |       | j                  j	                  d      | _        | j                         | _        y )Ndatacenter_name)superr   __init__paramsgetr   get_datacenterdatacenter_obj)selfmodule	__class__s     v/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/vmware/plugins/modules/vmware_datacenter.pyr   z VmwareDatacenterManager.__init__K   s:    %t5f=#{{/@A"113    c                     | j                   j                  j                  d      }|dk(  r| j                          |dk(  r| j	                          y y )Nstatepresentabsent)r   r   r   create_datacenterdestroy_datacenter)r   r   s     r   ensurezVmwareDatacenterManager.ensureP   sI    ""&&w/I""$H##% r   c           	         	 t        | j                  | j                        }|S # t        j                  t        j
                  f$ rI}| j                  j                  d| j                  dt        |j                               Y d }~y d }~wt        $ r?}| j                  j                  d| j                  dt        |             Y d }~y d }~ww xY w)NzFailed to get datacenter '' due to : msg' due to generic error: )r
   contentr   r   MethodFaultRuntimeFaultr   	fail_jsonr   r'   	Exception)r   r   runtime_faultgeneric_excs       r   r   z&VmwareDatacenterManager.get_datacenterY   s    
	c4T\\4CWCWXN!!!!5#5#56 	WKK!!8<8L8L8A-BSBS8T'V! W W  	cKK!!JNJ^J^JST_J`'b! c c	cs!   !$ #C?BC5CCc           	      \   | j                   j                  }d}	 | j                  s4| j                  j                  sd}|j                  | j                         | j                  j                  |       y # t        j                  j                  $ r | j                  j                  |       Y y t        j                  j                  $ rI}| j                  j                  d| j                  dt        |j                               Y d }~y d }~wt        j                  j                   $ rI}| j                  j                  d| j                  d	t        |j                               Y d }~y d }~wt        j"                  t        j$                  f$ rI}| j                  j                  d
| j                  dt        |j                               Y d }~y d }~wt&        $ r?}| j                  j                  d
| j                  dt        |             Y d }~y d }~ww xY w)NFT)namechangedzSpecified datacenter name 'z' is an invalid name : r&   zTrying to create a datacenter 'z"' on an incorrect folder object : zFailed to create a datacenter 'r%   r(   )r)   
rootFolderr   r   
check_modeCreateDatacenterr   	exit_jsonr   faultDuplicateNameInvalidNamer,   r   r'   r   NotSupportedr+   r*   r-   )r   folderr3   invalid_namenot_supportedr.   r/   s          r   r!   z)VmwareDatacenterManager.create_datacenterf   s   ((	c&&t{{/E/E''T-A-A'BKK!!'!2yy&& 	3KK!!'!2yy$$ 	\KK!!>B>R>R>GHXHX>Y'[! \ \ {{'' 	kKK!!LPL`L`LUVcVgVgLh'j! k k ""E$5$56 	\KK!!=A=Q=Q=F}GXGX=Y'[! \ \  	cKK!!JNJ^J^JST_J`'b! c c	csB   AA7 79H+2H+?D H+2?E66&H+?G  H+,5H&&H+c           	         t        d      }	 | j                  rH| j                  j                  s2| j                  j	                         }t        |      \  }}||d<   ||d<    | j                  j                  d	i | y # t        j                  j                  t        j                  t        j                  f$ rI}| j                  j                  d| j                  dt        |j                                Y d }~y d }~wt"        $ r?}| j                  j                  d| j                  dt        |             Y d }~y d }~ww xY w)
NFr2   r3   resultzFailed to delete a datacenter 'r%   r&   r(    )dictr   r   r5   Destroy_Taskr   r7   r   r8   VimFaultr   r+   r*   r,   r   r   r'   r-   )r   resultstaskr3   r@   r.   r/   s          r   r"   z*VmwareDatacenterManager.destroy_datacenter   s   u%	c""4;;+A+A**779"/"5%,	"$*!!DKK!!,G,		""E$6$68I8IJ 	\KK!!=A=Q=Q=F}GXGX=Y'[! \ \  	cKK!!JNJ^J^JST_J`'b! c c	cs$   A0A? ?<E
;?C??E
5EE
)	__name__
__module____qualname__r   r#   r   r!   r"   __classcell__)r   s   @r   r   r   J   s    4
&cc8cr   r   c            
          t               } | j                  t        t        dd      t        dddgd                   t        | d      }t	        |      }|j                          y )	NTstr)requiredtyper   r    )defaultchoicesrN   )r   r   )argument_specsupports_check_mode)r   updaterB   r   r   r#   )rQ   r   vmware_datacenter_mgrs      r   mainrU      s`    &(M $U;y9h2GeT	
 DQF3F;  "r   __main__N)
__future__r   r   r   rN   __metaclass__DOCUMENTATIONEXAMPLESRETURNpyVmomir   r   ImportErroransible.module_utils.basicr   @ansible_collections.community.vmware.plugins.module_utils.vmwarer	   r
   r   Hansible_collections.community.vmware.plugins.module_utils._argument_specr   ansible.module_utils._textr   r   rU   rG   rA   r   r   <module>rb      s    A @4*
	" 5 | | g 0Hcg HcV# zF E  		s   A AA