PHP WebShell

Текущая директория: /usr/lib/python3/dist-packages/cloudinit/sources/helpers/vmware/imc/__pycache__

Просмотр файла: guestcust_util.cpython-310.pyc

o

x[h�O�@s�ddlZddlZddlZddlZddlZddlmZmZmZddl	m
Z
ddlmZm
Z
ddlmZddlmZddlmZdd	lmZdd
lmZddlmZe�e�ZdZd
ZdZdZ dZ!dZ"dd�Z#dXdd�Z$dd�Z%dd�Z&dd�Z'dd�Z(dd�Z)d d!�Z*d"d#�Z+d$d%�Z,	dYd(d)�Z-d*d+�Z.d,d-�Z/d.d/�Z0d0d1�Z1d2d3�Z2	dZd6d7�Z3d8d9�Z4d:d;�Z5d<d=�Z6d>d?�Z7d@dA�Z8dBdC�Z9dDdE�Z:dFdG�Z;dHdI�Z<dJdK�Z=dLdM�Z>dNdO�Z?dPdQ�Z@dRdS�ZAdTdU�ZBdVdW�ZCdS)[�N)�performance�subp�util�)�Config)�PostCustomScript�PreCustomScript)�
ConfigFile)�NicConfigurator)�PasswordConfigurator)�GuestCustErrorEnum)�GuestCustEventEnum)�GuestCustStateEnumz/var/log/cloud-init.log�queryNicsSupported�	connected�/var/run/vmware-imc�	deployPkgzenable-custom-scriptsc
Cs�|sdSd}d}z"t�d|�tjd|gdgd�\}}|r&|��}W||fSW||fStyI}zt�d�t�|�WYd}~||fSd}~ww)N�zError sending the RPC commandzSending RPC command: %szvmware-rpctoolr)�rcszFailed to send RPC command)�logger�debugr�rstrip�	Exception�	exception)�rpc�out�err�e�r�U/usr/lib/python3/dist-packages/cloudinit/sources/helpers/vmware/imc/guestcust_util.py�send_rpc,s$
��
��r cCs<d}|rtd|}nt}d|||f}t|�\}}||fS)Nr�@zdeployPkg.update.state %d %d %s)�CLOUDINIT_LOG_FILEr )�	custstate�	custerror�errormessage�messagerrrrrr�set_customization_statusBsr'c	Cs�|sdSd}tj�|�sdSt�d|����+t|d��
}|�|�}Wd�n1s,wYWd�|SWd�|S1sDwY|S)z�Reads the NICS from the specified file path and returns the content

    @param nicsfilepath: Absolute file path to the NICS.txt file.
    NizReading �r)�os�path�existsr�Timed�open�read)�nicsfilepath�	NICS_SIZE�fp�nicsrrr�get_nics_to_enableOs �(���r3cCs�|s	t�d�dSd}d}d}t|�D]N}t�d|�ttjtj|�\}}|s/t	�
||�q|tkr;t�d�dSt|�D]!}ttjtj|�\}}|r[|t
kr[t�d|�dSt	�
|�q?qt�d|�dS)Nz
No Nics found�rz(Trying to connect interfaces, attempt %dz-NICS connection status query is not supportedzNICS are connected on %d secondz2Can't connect network interfaces after %d attempts)r�warning�rangerr'r�GUESTCUST_STATE_RUNNINGr
�GUESTCUST_EVENT_ENABLE_NICS�time�sleep�QUERY_NICS_SUPPORTED�GUESTCUST_EVENT_QUERY_NICS�NICS_STATUS_CONNECTED�info)r2�enableNicsWaitRetries�enableNicsWaitCount�enableNicsWaitSeconds�attemptr�_err�countrrr�enable_nicsfsD
�
���rEc
Cs�t�d�st�d�|Sddd||g}zt�|�}Wn2tjyL}z%|jdkr3t�dd�|�|�n
t�d||j�t�|�|WYd	}~Sd	}~ww|}t	�
d
|j�}|ri|�d��
�}t�d|||�|St�d
|||�|S)a$Return the value of [section] key from VMTools configuration.

    @param section: String of section to read from VMTools config
    @returns: String value from key in [section] or defaultVal if
              [section] is not present or vmware-toolbox-cmd is
              not installed.
    zvmware-toolbox-cmdz9vmware-toolbox-cmd not installed, returning default value�config�get�EzRvmware-toolbox-cmd returned 69 (unavailable) for cmd: %s. Return default value: %s� zFailed running %s[%s]Nz([^=]+)=(.*)�zGet tools config: [%s] %s = %sz<Tools config: [%s] %s is not found, return default value: %s)r�whichrr�ProcessExecutionError�	exit_code�join�errorr�re�match�stdout�group�strip)�section�key�
defaultVal�cmdrr�retValue�mrrr�get_tools_config�sB
	�
�
��
	��r[cCs|r
|jr
d|}t|�SdS)Nzinfo-set guestinfo.gc.status %s)�post_gc_statusr )rF�gcMsgrrrr�
set_gc_status�s
r^cCstS�N)�IMC_DIR_PATHrrrr�get_imc_dir_path�srac
Cs�iddif\}}}}t|d�t|�\}}t||�}	|	r%t||||�s%dSt||�s,dSzt�d�t|dd|j�|d<Wnt	yZ}
zt
dt|
�tj
|�WYd}
~
dSd}
~
wwt|�ttjtj�t|d�||||fS)N�Started)NNNNz#Preparing the Network configurationT�networkz%Error preparing Network Configuration�
Successful)r^�)get_non_network_data_from_vmware_cust_cfg�
check_markers�do_special_customization�recheck_markersrr�%get_network_data_from_vmware_cust_cfg�osfamilyr�set_cust_error_status�strr
�$GUESTCUST_EVENT_NETWORK_SETUP_FAILED�connect_nicsr'r�GUESTCUST_STATE_DONEr�GUESTCUST_ERROR_SUCCESS)�	cloud_dir�
scripts_cpath�cust_cfg�cust_cfg_dir�distro�md�ud�vd�cfg�is_special_customizationrrrr�get_data_from_imc_cust_cfg�sB

�


�����
r{c	
Cs�t|d�d\}}}|j}|r�tj�t�|�}tj�|�s)tdd|tj	|�dSzt
�|�}WntyM}ztdt
|�tj	|�WYd}~dSd}~wwzt�d�t�|�}Wntjyw}ztdt
|�tj|�WYd}~nd}~ww|j}|r�tj�t�|�}tj�|�s�tdd	|tj	|�dSzt
�|��d
d�}Wnty�}ztdt
|�tj	|�WYd}~dSd}~wwttjtj�t|d
�|||fS)Nrb)NNNz,Error locating the cloud-init meta data filezMeta data file is not found: %sz'Error loading cloud-init meta data filez'Validating if meta data is valid or notz&Error parsing the cloud-init meta dataz+Error locating the cloud-init userdata filezUserdata file is not found: %s�
rz&Error loading cloud-init userdata filerd)r^�meta_data_namer)r*rNrar+rkr
� GUESTCUST_EVENT_CUSTOMIZE_FAILEDr�load_text_filerrlrr�yaml�	safe_load�	YAMLErrorr�!GUESTCUST_ERROR_WRONG_META_FORMAT�user_data_name�replacer'rrorp)	rsrvrwrx�md_file�md_pathr�ud_file�ud_pathrrr�#get_data_from_imc_raw_data_cust_cfg�s�

����	
�������	�

r�cCs^ii}}|jr|jr|jd|j|d<n|j|d<|jr#|j|d<|jr+|j|d<||fS)N�.zlocal-hostname�timezonezinstance-id)�	host_name�domain_namer��instance_id)rsrvryrrrre7s
�


reTFcCs(t|j|j|j|�}|�||�}t|�Sr_)r
r2�name_servers�dns_suffixes�generate�gen_v2_network_config)rs�use_system_devices�	configurerj�nicConfigurator�ethernets_dictrrrriGs�ricCs
d|d�S)NrJ)�version�	ethernetsr)r�rrrr�Us
r�cCs:tj�|d�}tj�|�rt�d|�tt|��dSdS)Nznics.txtz%s file found, to connect nics)r)r*rNr+rrrEr3)rt�	nics_filerrrrnYs
�rncCst�|dd�S)N�disable_vmware_customizationT�r�get_cfg_option_bool)�sys_cfgrrr�is_vmware_cust_enabled`s�r�cCst�|dd�S)N�allow_raw_dataTr�)�ds_cfgrrr�is_raw_data_cust_enabledfsr�cCs^t|�}t�d��
td|�}Wd�n1swY|r(t�d|�|St�d�dS)N�3Waiting for VMware customization configuration filezcust.cfgz3Found VMware customization configuration file at %sz0No VMware customization configuration file found)�get_max_wait_from_cfgrr,�wait_for_cust_cfg_filerr)r��max_wait�cust_cfg_file_pathrrr�get_cust_cfg_filejs���
r��r4cCs^d}||krd}||kr-tj�||�}tj�|�r|St�d�t�|�||7}||ksdS)Nrrr�)r)r*rN�isfilerrr9r:)�filename�maxwait�naplen�dirpath�waited�fileFullPathrrrr��s

�r�cCsjd}d}|}|s
|Sz
t|�||��}Wnty$t�d||�Ynw|dkr3t�d|||�|}|S)N��vmware_cust_file_max_waitzFailed to get '%s', using %srz/Invalid value '%s' for '%s', using '%s' instead)�intrG�
ValueErrorrr5)r��default_max_wait�max_wait_cfg_optionr�rrrr��s.���r�cCs$|j}t|tj�|d��}|o|S)N�data)�	marker_id�check_marker_existsr)r*rN)rqrs�product_marker�has_marker_filerrrrf�s
�
rfcCs2|sdStj�|d|d�}tj�|�rdSdS)ag
    Check the existence of a marker file.
    Presence of marker file determines whether a certain code path is to be
    executed. It is needed for partial guest customization in VMware.
    @param markerid: is an unique string representing a particular product
                     marker.
    @param: marker_dir: The directory in which markers exist.
    F�.markerfile-�.txtT)r)r*rNr+)�markerid�
marker_dir�
markerfilerrrr��s	r�cCs|j}|rt||�sdSdS)NFT)r��create_marker_file)rqrsr�rrrrh�s

rhc
CsXzt|jtj�|d��WdSty+}ztdt|�tj	|�WYd}~dSd}~ww)Nr�zError creating marker filesFT)
�setup_marker_filesr�r)r*rNrrkrlr
r~)rqrsrrrrr��s	����r�cCs`t�d�tj�|d|d�}t�|�D]}|�d�r&t�tj�||��qt	|d��
�dS)a#
    Create a new marker file.
    Marker files are unique to a full customization workflow in VMware
    environment.
    @param marker_id: is an unique string representing a particular product
                      marker.
    @param: marker_dir: The directory in which markers exist.
    zHandle marker creationr�r�z.markerfile�wN)rrr)r*rN�listdir�
startswithr�del_filer-�close)r�r��marker_file�fnamerrrr��s
	
�r�c
Cstd}d}d}d}|j}|rt|�}|rt|||�}t||�}|r0|r0tj�|d�}	t||||	�}|r8|o7|o7|S|S)NFzper-instance)�custom_script_name�check_custom_script_enablement�do_pre_custom_script�do_password_customizationr)r*rN�do_post_custom_script)
rrrsrtru�is_pre_custom_successful�is_password_custom_successful�is_post_custom_successful�is_custom_script_enabled�
custom_script�ccScriptsDirrrrrg�s0�
���rgc
CsTzt||�}|��WdSty)}ztdt|�tj|�WYd}~dSd}~ww)Nz(Error executing pre-customization scriptFT)r�executerrkrlr
r~)rsr�rt�precustrrrrr�s

	����r�c
CsVz
t|||�}|��WdSty*}ztdt|�tj|�WYd}~dSd}~ww)Nz)Error executing post-customization scriptFT)rr�rrkrlr
r~)rsr�rtr��postcustrrrrr�s
	����r�cCsPd}d}|jrt�d�d}ttt|�}|��dkr$tddtj	|�|Sd}|S)NF�falsez=Set default value to true due to customization configuration.�truez-Custom script is disabled by VM Administratorz'Error checking custom script enablementT)
�default_run_post_scriptrrr[�IMC_TOOLS_CONF_GROUPNAME�"IMC_TOOLS_CONF_ENABLE_CUST_SCRIPTS�lowerrkr�GUESTCUST_ERROR_SCRIPT_DISABLED)rsr��
default_value�custom_script_enablementrrrr�$s,����r�c
Cs�t�d�t�}|j}z|j}|s|r|�|||�WdSt�d�WdStyA}ztdt|�t	j
|�WYd}~dSd}~ww)NzApplying password customizationzChanging password is not neededz%Error applying password configurationFT)rrr�admin_password�reset_passwordr�rrkrlr
r~)rsru�pwdConfigurator�	admin_pwd�	reset_pwdrrrrr�=s(
�	����r�cCstt|��Sr_)rr	)�cfg_filerrr�parse_cust_cfgRsr�cCs:d\}}|jrd}t�d�||fSd}t�d�||fS)N)FFTz!raw cloudinit data cust cfg foundzvmware cust cfg found)r}rr)rs�is_vmware_cust_cfg�is_raw_data_cust_cfgrrr�get_cust_cfg_typeVs
�
r�cCs6d}d}|D]}t||�}|rt�d|�dSqdS)N)z/usr/lib/vmware-toolsz/usr/lib64/vmware-toolsz/usr/lib/open-vm-toolsz/usr/lib64/open-vm-toolsz'/usr/lib/x86_64-linux-gnu/open-vm-toolsz(/usr/lib/aarch64-linux-gnu/open-vm-toolsz%/usr/lib/i386-linux-gnu/open-vm-toolszlibdeployPkgPlugin.soz$Found the customization plugin at %sTF)�search_filerr)�search_paths�cust_pluginr*�cust_plugin_pathrrr�is_cust_plugin_availableas	
��r�cCs@|r|sdSt�|�D]\}}}||vrtj�||�SqdSr_)r)�walkr*rN)r�r��root�_dirs�filesrrrr�vs�r�cCs*t�td||�ttj|�t||�dS)zS
    Set customization status to the underlying VMware Virtualization Platform
    z%s: %sN)r�logexcrr'rr7r^)�prefixrO�eventrsrrrrk�srkr_)TFN)r�r4r)D�loggingr)rPr9r��	cloudinitrrrrFr�config_custom_scriptrr�config_filer	�
config_nicr
�
config_passwdr�guestcust_errorr�guestcust_eventr
�guestcust_stater�	getLogger�__name__rr"r;r=r`r�r�r r'r3rEr[r^rar{r�rerir�rnr�r�r�r�r�rfr�rhr�r�rgr�r�r�r�r�r�r�r�rkrrrr�<module>sp



*2(B
�
�

Выполнить команду


Для локальной разработки. Не используйте в интернете!