Anons79 Mini Shell

Directory : /proc/self/root/lib/python2.7/site-packages/ansible/module_utils/
Upload File :
Current File : //proc/self/root/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyo

�
�Udac@`s�ddlmZmZmZeZddlZddlZddlZddl	Z	dZyddlZe
ZWn#ek
r�eZe	j�ZnXddlmZmZddlmZddlmZd�Zd�Zd�Zd	�Zd
�Zd�Zed�Z ed
�Z!d�Z"d�Z#dde
dd�Z$d�Z%d�Z&dd�Z'dd�Z(dd�Z)d�Z*de+fd��YZ,de+fd��YZ-dS(i(tabsolute_importtdivisiontprint_functionN(tenv_fallbacktmissing_required_lib(tis_mac(t__version__cC`s�tdtdddddgdtdd	d
tdgf�dtdddd
dgdtddd
tdgf�dtdddddgdtdtd
tdgf�dtdddtdtd
tdgf��S(Nthostnamettypetstrtaliasesthosttpooltrequiredtdefaultt	localhosttfallbacktXENSERVER_HOSTtusernametusertadmintroottXENSERVER_USERtpasswordtpasstpwdtno_logtXENSERVER_PASSWORDtvalidate_certstbooltXENSERVER_VALIDATE_CERTS(tdicttFalseRtTrue(((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytxenserver_common_argument_specs(cC`s/idd6dd6dd6dd6}|j|�S(s4Maps XAPI VM power states to module VM power states.t	poweredontrunningt
poweredoffthaltedt	suspendedtpaused(tget(tpower_statetmodule_power_state_map((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytxapi_to_module_vm_power_state4s
cC`s=idd6dd6dd6dd6dd6dd6}|j|�S(	s4Maps module VM power states to XAPI VM power states.R$R#R&R%t	restartedR't
shutdownguesttrebootguest(R)(R*tvm_power_state_map((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytmodule_to_xapi_vm_power_state@s
cC`sr|jd�}t|�dkr%tSxF|D]>}|j�sBtSt|�}|dksf|dkr,tSq,WtS(s�Validates given string as IPv4 address for given string.

    Args:
        ip_addr (str): string to validate as IPv4 address.

    Returns:
        bool: True if string is valid IPv4 address, else False.
    t.iii�(tsplittlenR tisdigittintR!(tip_addrt
ip_addr_splitt
ip_addr_octettip_addr_octet_int((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytis_valid_ip_addrNs	
c	C`s|jd�}t|�dkr%tSddddddd	d
dg	}x|D]}||krMtSqMW|ddkr�|d
dks�|ddks�|ddkr�tS|d
dkr�|ddks�|ddkr�tS|ddkr|ddkrtStS(s�Validates given string as IPv4 netmask.

    Args:
        ip_netmask (str): string to validate as IPv4 netmask.

    Returns:
        bool: True if string is valid IPv4 netmask, else False.
    R2it0t128t192t224t240t248t252t254t255iiii(R3R4R R!(t
ip_netmasktip_netmask_splittvalid_octet_valuestip_netmask_octet((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytis_valid_ip_netmaskhs	!
@0 cC`s<|j�stSt|�}|dks4|dkr8tStS(s�Validates given string as IPv4 prefix.

    Args:
        ip_prefix (str): string to validate as IPv4 prefix.

    Returns:
        bool: True if string is valid IPv4 prefix, else False.
    ii (R5R R6R!(t	ip_prefixt
ip_prefix_int((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytis_valid_ip_prefix�s	cC`sq|rt}nt|�}|ridjgddddgD](}tddt|�>|?d@�^q:�Sd	Sd
S(sbConverts IPv4 prefix to netmask.

    Args:
        ip_prefix (str): IPv4 prefix to convert.
        skip_check (bool): Skip validation of IPv4 prefix
            (default: False). Use if you are sure IPv4 prefix is valid.

    Returns:
        str: IPv4 netmask equivalent to given IPv4 prefix if
        IPv4 prefix is valid, else an empty string.
    R2iiiiI����i i�tN(R!RLtjoinR	R6(RJt
skip_checktip_prefix_validti((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytip_prefix_to_netmask�s	HcC`sj|rt}nt|�}|rbttg|jd�D]!}tt|��jd�^q7��SdSdS(sgConverts IPv4 netmask to prefix.

    Args:
        ip_netmask (str): IPv4 netmask to convert.
        skip_check (bool): Skip validation of IPv4 netmask
            (default: False). Use if you are sure IPv4 netmask is valid.

    Returns:
        str: IPv4 prefix equivalent to given IPv4 netmask if
        IPv4 netmask is valid, else an empty string.
    R2t1RMN(R!RIR	tsumR3tbinR6tcount(REROtip_netmask_validRQ((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytip_netmask_to_prefix�s	AcC`s|j�}|jd�}|ddkr;|jd�n|ddkr[|jd�nt|�dkrqtS|jd�dkr�tS|jd�dkr�|jd�nt|�dkr�tStjd�}x'|D]}t	|j
|��s�tSq�WtS(s�Validates given string as IPv6 address.

    Args:
        ip6_addr (str): string to validate as IPv6 address.

    Returns:
        bool: True if string is valid IPv6 address, else False.
    t:iRMi����iis^[0-9a-f]{1,4}$(tlowerR3tpopR4R RVtremovetretcompileRtmatchR!(tip6_addrtip6_addr_splittip6_addr_hextet_regextip6_addr_hextet((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytis_valid_ip6_addr�s&	
cC`s<|j�stSt|�}|dks4|dkr8tStS(s�Validates given string as IPv6 prefix.

    Args:
        ip6_prefix (str): string to validate as IPv6 prefix.

    Returns:
        bool: True if string is valid IPv6 prefix, else False.
    ii�(R5R R6R!(t
ip6_prefixtip6_prefix_int((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytis_valid_ip6_prefix�s	tVMRMcC`s�tj|�}|dkr$d}n0|dkr9d}n|dkrNd}n|}d}|r�y|jd||f�}Wq�tjk
r�}	|r�|jd	d
|||f�q�q�Xn�|r�y|jd||f�}
Wn-tjk
r}	|jd	d|	j�nX|
sA|r}|jd	d
|||f�q}q�t|
�dkrs|jd	d|||f�q�|
d}n|jd	d||f�|S(sKFinds and returns a reference to arbitrary XAPI object.

    An object is searched by using either name (name_label) or UUID
    with UUID taken precedence over name.

    Args:
        module: Reference to Ansible module object.
        name (str): Name (name_label) of an object to search for.
        uuid (str): UUID of an object to search for.
        obj_type (str): Any valid XAPI object type. See XAPI docs.
        fail (bool): Should function fail with error message if object
            is not found or exit silently (default: True). The function
            always fails if multiple objects with same name are found.
        msg_prefix (str): A string error messages should be prefixed
            with (default: "").

    Returns:
        XAPI reference to found object or None if object is not found
        and fail=False.
    ttemplatetsnapshotRhshome serverRs	ISO imagetVDIs%s.get_by_uuidtmsgs%s%s with UUID '%s' not found!s%s.get_by_name_labelsXAPI ERROR: %ss%s%s with name '%s' not found!is5%smultiple %ss with name '%s' found! Please use UUID.is(%sno valid name or UUID supplied for %s!(stemplateRjN(	tXAPItconnecttNonetxenapi_requesttXenAPItFailuret	fail_jsontdetailsR4(tmoduletnametuuidtobj_typetfailt
msg_prefixtxapi_sessiont
real_obj_typetobj_reftftobj_ref_list((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytget_object_refs8			'# 
cC`s�|s|dkriStj|�}y7|jjj|�}|ddkrt|jjj|d�}||d<n
i|d<g|dD]}|jjj|�^q�}t|dd��}||d<xN|dD]B}|ddkr|jjj|d�}ni}||d<q�Wg|dD]}	|jj	j|	�^q%}
t|
dd��}
|
|d<xN|dD]B}|d	dkr�|jj
j|d	�}ni}||d	<qpW|d
dkr�|jjj|d
�}
|
|d
<n
i|d
<t|�}|ddkrR|d
dkrR|j
d
�rRd|d
dkrRd|d<n
d|d<Wn-tjk
r�}|jdd|j�nX|S(s�Gathers all VM parameters available in XAPI database.

    Args:
        module: Reference to Ansible module object.
        vm_ref (str): XAPI reference to VM.

    Returns:
        dict: VM parameters.
    sOpaqueRef:NULLtaffinitytVBDstkeycS`st|d�S(Nt
userdevice(R6(t
vm_vbd_params((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyt<lambda>fsRktVIFscS`st|d�S(Ntdevice(R6(t
vm_vif_params((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyR�xstnetworkt
guest_metricsiiisfeature-static-ip-settingtothertnativetcustomization_agenttcustomRlsXAPI ERROR: %s(RmRntxenapiRht
get_recordRtVBDtsortedRktVIFR�tVM_guest_metricstget_xenserver_versionR)RqRrRsRt(Rutvm_refR{t	vm_paramstvm_affinityt
vm_vbd_reftvm_vbd_params_listR�t
vm_vdi_paramst
vm_vif_reftvm_vif_params_listR�tvm_network_paramstvm_guest_metricstxenserver_versionR~((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytgather_vm_paramsDsJ

,
,


/
c
C`sX|s
iStj|�}it|dj��d6|dd6|dd6|dd6|dd	6|d
jdd�d6it|d
�d6t|djdd��d6tt|d�d�d6d6gd6id6gd6|djdd�d6|dd6|dd6|d
d
6|dd6|dd6}x|dD]}|d d!kr�|jjj|d"d#�}it|d"d$�d%6|d"dd6|d"dd6|dd&6|dd'6|d(d)6|d*d+6}|dj	|�q7|d d,kr7|d-r|dj
d d.�qG|dj
d d/�|dj
d0|d"d�q7q7Wx|d1D]�}|d2jdi�}i|d3dd6|d4d56|d(d66|d7d86|jd9|d(d�d:6dd;6dd<6dd=6gt|j��D]'}	|	j
d>|d(�r�||	^q�d?6dd@6ddA6}
|ddBkr�|dCr�|dCdDr�|dCdDjdE�dF|
d;<t|
d;�|
d<<n|dG|
d=<|dHr�|dHdDr�|dHdDjdE�dF|
d@<n|dI|
dA<na|ddJkr?|d}xDd;d<d=d@dAgD]*}|jdK|d(|fd�|
|<qWn|dj	|
�qVW|S(Ls�Gathers VM facts.

    Args:
        module: Reference to Ansible module object.
        vm_params (dict): A dictionary with VM parameters as returned
            by gather_vm_params() function.

    Returns:
        dict: VM facts.
    R*tstatet
name_labelRvtname_descriptiont	name_descRwt
is_a_templatetis_templatetother_configtfolderRMt	VCPUs_maxtnum_cpustplatformscores-per-socketRStnum_cpu_cores_per_sockettmemory_dynamic_maxit	memory_mbthardwaretdiskstcdromtnetworksR�thome_servertdomidt
xenstore_dataR�R�RtDiskRktSRtvirtual_sizetsizetsrtsr_uuidR�t	os_deviceR�tvbd_userdevicetCDtemptytnonetisotiso_nameR�R�R�tMACtmact
vif_devicetMTUtmtus%s/iptiptprefixtnetmasktgateways%s/ipv6/tip6tprefix6tgateway6R�tipv4_addressesit/itipv4_gatewaytipv6_addressestipv6_gatewayR�svm-data/networks/%s/%s(RmRnR,RZR)R6R�R�R�tappendtupdateR�tkeyst
startswithR3RR(
RuR�R{tvm_factsR�tvm_disk_sr_paramstvm_disk_paramsR�tvm_guest_metrics_networkstipv6R�tvm_xenstore_dataR~((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytgather_vm_facts�s�
#"
"
+i,cC`s�|s|dkr&|jdd�ntj|�}|jdd�jdd�j�}t|�}t}y�t|jj	j
|�j��}||krc|dkr(|jsZ|dkr�|jj	j|tt�q%|d	kr|jj	j
|tt�q%|d
kr%|jj	j|�q%qZn2|dkrV|jsZ|jj	j|�qZn|dkr�|dkr�|js�|jj	j|�q�qZ|jdd|�n�|d	kr�|dkr�|js�|jj	j|�q�qZ|jdd
|�nb|dkr�|dkr�|js�|dkr;|jj	j|�q�|jjj	j|�}t|||�}	|	r�|jdd|	�q�q�qZ|jdd|�n�|dkrF|dkr/|jsC|dkr�|jj	j|�q,|jjj	j|�}t|||�}	|	r,|jdd|	�q,qCqZ|jdd|�n|jdd|�t}nWn-tjk
r�}
|jdd|
j�nX||fS(s�Controls VM power state.

    Args:
        module: Reference to Ansible module object.
        vm_ref (str): XAPI reference to VM.
        power_state (str): Power state to put VM into. Accepted values:

            - poweredon
            - poweredoff
            - restarted
            - suspended
            - shutdownguest
            - rebootguest

        timeout (int): timeout in seconds (default: 300).

    Returns:
        tuple (bool, str): Bool element is True if VM power state has
        changed by calling this function, else False. Str element carries
        a value of resulting power state as defined by XAPI - 'running',
        'halted' or 'suspended'.
    sOpaqueRef:NULLRls9Cannot set VM power state. Invalid VM reference supplied!t_RMt-R#R%R'R(R-s Cannot restart VM in state '%s'!s Cannot suspend VM in state '%s'!R.is!Guest shutdown task failed: '%s'!s/Cannot shutdown guest when VM is in state '%s'!R/sGuest reboot task failed: '%s'!s-Cannot reboot guest when VM is in state '%s'!s-Requested VM power state '%s' is unsupported!sXAPI ERROR: %s(spauseds	poweredon(RsRmRntreplaceRZR1R R,R�Rhtget_power_statet
check_modetstarttresumetunpauset
hard_shutdownthard_reboottsuspendtclean_shutdowntAsynct
wait_for_tasktclean_rebootR!RqRrRt(RuR�R*ttimeoutR{tvm_power_state_resultingt
state_changedtvm_power_state_currentttask_refttask_resultR~((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytset_vm_power_statesn$!						
c	C`s*|s|dkr&|jdd�ntj|�}d}d}|dkrVd}n|}y�x�|dkr�|jjj|�j�}|dkr�tj|�|dkrb||8}qbqbqb|d	kr�Pqb|}PqbWd
}|jjj	|�Wn-t
jk
r%}|jdd|j�nX|S(sWaits for async XAPI task to finish.

    Args:
        module: Reference to Ansible module object.
        task_ref (str): XAPI reference to task.
        timeout (int): timeout in seconds (default: 300).

    Returns:
        str: failure message on failure, else an empty string.
    sOpaqueRef:NULLRls6Cannot wait for task. Invalid task reference supplied!iRMiitpendingtsuccessR�sXAPI ERROR: %s(
RsRmRnR�ttaskt
get_statusRZttimetsleeptdestroyRqRrRt(	RuR�R�R{tintervaltresultt	time_leftttask_statusR~((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyR�ls2	

cC`st|s|dkr&|jdd�ntj|�}i}yt|jjj|�j��}|dkr�|jdd|�nd}|dkr�d}n|}x�|dkr.|jjj|�}|dkr|jj	j
|�}|d	}	d
|	krPqntj|�|dkr�||8}q�q�W|jdd�Wn-t
jk
ro}
|jdd|
j�nX|S(
siWaits for VM to acquire an IP address.

    Args:
        module: Reference to Ansible module object.
        vm_ref (str): XAPI reference to VM.
        timeout (int): timeout in seconds (default: 300).

    Returns:
        dict: VM guest metrics as retrieved by
        VM_guest_metrics.get_record() XAPI method with info
        on IP address acquired.
    sOpaqueRef:NULLRls=Cannot wait for VM IP address. Invalid VM reference supplied!R#s7Cannot wait for VM IP address when VM is in state '%s'!iiiR�s0/ips$Timed out waiting for VM IP address!sXAPI ERROR: %s(RsRmRnR,R�RhR�RZtget_guest_metricsR�R�R�R�RqRrRt(RuR�R�R{R�tvm_power_stateR�Rtvm_guest_metrics_reftvm_ipsR~((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pytwait_for_vm_ip_address�s4!	

cC`s�tj|�}|jjj|j�}y?g|jjj|�djd�D]}t	|�^qM}Wn t
k
r�dddg}nX|S(s�Returns XenServer version.

    Args:
        module: Reference to Ansible module object.

    Returns:
        list: Element [0] is major version. Element [1] is minor version.
        Element [2] is update number.
    tproduct_versionR2i(RmRnR�tsessiont
get_this_hostt_sessionRtget_software_versionR3R6t
ValueError(RuR{thost_reftversion_numberR�((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyR��s
?
RmcB`s&eZdZdZeed��ZRS(s"Class for XAPI session management.cC`sl|jdk	r|jS|jd}|jd}|jd}|jd}|dkrutj�|_d}d}n~|jd�r�|jd�r�d	|}nytj|d
|�|_Wn#tk
r�tj|�|_nX|s�d}ny|jj||t	d�Wn6tj
k
rH}|jdd
|||jf�nX|ret
j|jj�n|jS(s�Establishes XAPI connection and returns session reference.

        If no existing session is available, establishes a new one
        and returns it, else returns existing one.

        Args:
            module: Reference to Ansible module object.
            disconnect_atexit (bool): Controls if method should
                register atexit handler to disconnect from XenServer
                on module exit (default: True).

        Returns:
            XAPI session reference.
        RRRRRRMshttp://shttps://s	http://%st
ignore_ssltAnsibleRls-Unable to log on to XenServer at %s as %s: %sN(t
_xapi_sessionRotparamsRqt
xapi_localR�tSessiont	TypeErrortlogin_with_passwordtANSIBLE_VERSIONRrRsRttatexittregistertlogout(tclsRutdisconnect_atexitRRRRR~((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyRns2


	 

	$N(t__name__t
__module__t__doc__RoRtclassmethodR!Rn(((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyRm�stXenServerObjectcB`seZdZd�ZRS(soBase class for all XenServer objects.

    This class contains active XAPI session reference and common
    attributes with useful info about XenServer host/pool.

    Attributes:
        module: Reference to Ansible module object.
        xapi_session: Reference to XAPI session.
        pool_ref (str): XAPI reference to a pool currently connected to.
        default_sr_ref (str): XAPI reference to a pool default
            Storage Repository.
        host_ref (str): XAPI rerefence to a host currently connected to.
        xenserver_version (list of str): Contains XenServer major and
            minor version.
    cC`s�ts+|jdtdtd�dt�n||_tj|�|_yM|jj	j
j�d|_|jj	j
j
|j�|_t|�|_Wn0tjk
r�}|jjdd|j�nXdS(s�Inits XenServerObject using common module parameters.

        Args:
            module: Reference to Ansible module object.
        tchangedRlRqt	exceptionisXAPI ERROR: %sN(t
HAS_XENAPIRsR RtXENAPI_IMP_ERRRuRmRnR{R�Rtget_alltpool_reftget_default_SRtdefault_sr_refR�R�RqRrRt(tselfRuR~((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyt__init__Ms%	(RRRR+(((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyR!<s(.t
__future__RRRRt
__metaclass__RR�R]t	tracebackRoR%RqR!R$tImportErrorR t
format_exctansible.module_utils.basicRRt#ansible.module_utils.common.networkRt$ansible.module_utils.ansible_releaseRRR"R,R1R;RIRLRRRXRdRgR�R�R�R�R�RR�tobjectRmR!(((sB/usr/lib/python2.7/site-packages/ansible/module_utils/xenserver.pyt<module>sD

							&	B	V	hj;?	@

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]