%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3/dist-packages/cloudinit/cmd/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3/dist-packages/cloudinit/cmd/__pycache__/main.cpython-35.pyc



"�T`���@s�ddlZddlZddlZddlZddlZddlZddlmZej�ddlm	Z
ddlmZddlmZddlm
Z
ddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZmZmZmZddlmZddlmZddlmZdZdZ dededeiZ!e
j"�Z#ddd�Z$ddd�Z%dd�Z&dd�Z'd d!�Z(d"d#�Z)d@d&d'�Z*d(dd)d*�Z+d+d,�Z,d-d.�Z-d/d0�Z.d1d2�Z/ddd3d4�Z0d5d6�Z1d7d8�Z2d9d:�Z3dd;d<�Z4e5d=kr�d>ej6kr�d?ej6d><e4ej7�Z8e8r�ej9e8�dS)A�N)�patcher)�log)�netinfo)�signal_handler)�sources)�stages)�
url_helper)�util)�version)�warnings)�	reporting)�events)�PER_INSTANCE�
PER_ALWAYS�PER_ONCE�CLOUD_CONFIG)�
atomic_helper)�cc_set_hostname)�
dhclient_hookzOCloud-init v. {version} running '{action}' at {timestamp}. Up {uptime} seconds.zcloud_%s_modules�instance�always�once�cCsy|rtjjd|�tjjdd�tjjd�tjdtj�tjjdd�tjjd�dS)Nz%s
�-�<�
�file)�sys�stderr�write�	traceback�	print_exc)�msg�r#�4/usr/lib/python3/dist-packages/cloudinit/cmd/main.pyr!Bsr!cCs9|st|�}tjd|dddddt�|S)Nz%s
ZconsoleFrTr)�welcome_formatr	Z	multi_log�LOG)�actionr"r#r#r$�welcomeLs
r(c	Cs4tjdtj�dtj�dtj�d|�S)Nr
�uptimeZ	timestampr')�WELCOME_MSG_TPL�formatr
�version_stringr	r)Ztime_rfc2822)r'r#r#r$r%Ts
	r%cCsCg}|jr?x-|jD]"}|jtjj|j��qW|S)N)�files�append�os�path�realpath�name)�argsZfn_cfgsZfhr#r#r$�extract_fns\s
	 r4cCs�t|}|j|�\}}t|�t|�}|dkrvd||f}tjjd|�tj|�gStjdt|�t|��|SdS)Nrz)No '%s' modules to run under section '%s'z%s
zRan %s modules with %s failures)�MOD_SECTION_TPLZrun_section�lenrrrr&�debug)�mods�action_nameZsectionZfull_section_name�	which_ran�failuresZtotal_attemptedr"r#r#r$�run_module_sectionis


	r<cCs)|jd�r%tj|jd��dS)Nr)�getrZupdate_configuration)�cfgr#r#r$�apply_reporting_cfgysr?�cloud-config-url�urlcCsTtj|�}x(|D] }||kr|||fSqWtd||f��dS)Nz!No keys (%s) found in string '%s')r	Zkeyval_str_to_dict�KeyError)�cmdline�names�data�keyr#r#r$�parse_cmdline_url~s
rGTc
Cs+|dkrtj�}yt|�\}}Wntk
rOtjdfSYnX|jd�pk|jd�}|r�tjj	|�r�|r�d||f}tj
}|r�tj}nd||f}tj}||fSd|dd	d
di}|s�|rtj}d|d
<ntj}d|d
<d}	d}
y�tj
|�}|j�r�|j}	|jj|
�s�|dkr�tj}n	tj
}|d||
ffSn|d||jffSWn<tjk
r�}z|d||ffSWYdd}~XnXtj||	dd�tj
d|||ffS)a�Write data from url referenced in command line to path.

    path: a file to write content to if downloaded.
    network: should network access be assumed.
    cmdline: the cmdline to parse for cloud-config-url.

    This is used in MAAS datasource, in "ephemeral" (read-only root)
    environment where the instance netboots to iscsi ro root.
    and the entity that controls the pxe config has to configure
    the maas datasource.

    An attempt is made on network urls even in local datasource
    for case of network set up in initramfs.

    Return value is a tuple of a logger function (logging.DEBUG)
    and a message indicating what happened.
    Nz!No kernel command line url found.zfile://�/z_file '%s' existed, possibly from local stage download of command line url '%s'. Not re-writing.zafile '%s' existed, possibly from previous boot download of command line url '%s'. Not re-writing.rAZtimeout�
Zretries��Zsec_betweeng�������?s
#cloud-configzcloud-config-urlz&contents of '%s' did not start with %sz$url '%s' returned code %s. Ignoring.zretrieving url '%s' failed: %s�modei�z*wrote cloud-config data from %s='%s' to %s)r	Zget_cmdlinerGrB�logging�DEBUG�
startswithr/r0�exists�INFO�WARNrZread_file_or_url�ok�contents�codeZUrlErrorZ
write_file)
r0�networkrCZcmdline_namerAZ
path_is_local�m�level�kwargsrE�headerZresp�er#r#r$�attempt_cmdline_url�sX

	
	
	
	
		'r\c-Cs�tjtjg}|jr'tjg}tdtjjdtd�d|j�g}|jsnt	|�}nt	d|�}t
jd|d|j�}|j
t|��d}d}y?|jtjdf�tj�tj|j|�\}}WnHtk
rAd	}tjt|�t|�|jtj|f�YnX|jrbtjd
�tj�tj|j�t|j�t|d|�x$|D]\}	}tj |	|�q�Wy|j!�Wn"tk
r�tjtd�YnX|j"}
|jrtj#ntj$}|tj$kr�d
}t%j&j'dt(j)��tjd�tjj|
j*d�d�g}
g}x-|
D]%}tjj+|�rw|j|�qwW|r�tjd||�dgfStjd�n�d}tj,|jdd�}|r
tjd�d
}n7|
j-d�}tjj.|�rDtjd|�d
}|j/�tj0tjj|
j*d�d��yU|j1d|�|tj$kr�|j2j3|kr�tjd||j2�dgfSWn�tj4k
rt|tj#kr�tjd�ntjtd�|j5s`|j6d|j�tjd|�|tj#krPdgfSdd gfSntjd!|�YnXt7|�|j8�}tjd"||||j9��|tj#kr�t:|d#d$d%d�|j6dt;|tj#k��|tj#krH|j2j3|kr2tjd&||j2�|j2gfStjd'||j2�|j<�|j=�t:|d#d(d%d)�yG|j>�j?d*|j@d+tAgd,tA�\}}|s�|j@tB�Wn2tk
r�tjtd-�|j2d-gfSYnXt|j�t
jC|t|�d|j�}yq|}|}tjD|j|�\}}||ks^||kr�tjEd.||�tj|j|�\}}Wn"tk
r�tjtd/�YnXtj|j�|jF�tGd0|j2d1|j�|j2tH|||�fS)2Nr0z%s.dz91_kernel_cmdline_url.cfgrVz%s-local�ds_deps�reporterzClosing stdin.z#Failed to setup output redirection!z@Logging being reset, this logger may no longer be active shortlyr"z0Failed to initialize, likely bad things to come!�trustz%s
zjChecking to see if files that we need already exist from a previous run that would allow us to stop early.rEzno-netz"[%s] Exiting. stop file %s existedzQExecution continuing, no previous run detected that would allow us to stop early.ZcheckZmanual_cache_cleanFz"manual cache clean set from configZmanual_clean_markerz(manual cache clean found from marker: %s�existingz)[%s] Exiting. datasource %s in local modezNo local datasource foundz8No instance datasource found! Likely bad things to come!Zbring_upz[%s] Exiting without datasourcezNo instance datasource found.z2[%s] barreling on in force mode without datasourcez5[%s] %s will now be targeting instance id: %s. new=%s�stage�local�retry_stagez.[%s] Exiting. datasource %s not in local mode.z6[%s] %s is in local mode, will apply init modules now.zinit-netzmodules:config�consume_datar3ZfreqzConsuming user data failed!z#Stdout, stderr changing to (%s, %s)z'Failed to re-adjust output redirection!�
datasourcer>)IrZDEP_FILESYSTEMZDEP_NETWORKrbr\r/r0�joinrr%r�Initr^�read_cfgr4r.rMrNr	�close_stdin�fixup_outputr>�	Exception�logexcr&r!rRr7�resetLogging�setupLoggingr?r(rZ
initialize�pathsZDSMODE_LOCALZDSMODE_NETWORKrrrrZ
debug_infoZ	get_cpath�isfileZget_cfg_option_boolZ
get_ipath_currPZpurge_cache�del_file�fetchreZdsmode�DataSourceNotFoundException�forceZapply_network_config�_maybe_persist_instance_dataZ
instancifyZis_new_instance�_maybe_set_hostname�boolZsetup_datasource�update�cloudifyZrunrdrr�ModulesZget_output_cfg�warningZactivate_datasource�di_report_warnr<)r2r3ZdepsZ
early_logs�w_msg�initZoutfmtZerrfmtr"ZlvlZpath_helperrLr`Z
stop_filesZexisting_files�fnZmcfgZmfileZiidZranZ_resultsr8Zoutfmt_origZerrfmt_origr#r#r$�	main_init�s�			


	



	
!
	


	
%!	
	
	
		

	


		

!	


r�cCsYd|krtjd�dS|d}|dkrDtjd�dSt|t�sgtjd|�dS|jd�}|dkr�tjd�dSt|t�s�tjd|�dS|jjd�d	}|j	t
j�r�|tt
j�d�}ntjd
||�||kr3tjd|||�dSt
jd|d
|dt|��dS)NZ	di_reportzno di_report found in config.zdi_report was None.z%di_report config not a dictionary: %sZdatasource_listz(no 'datasource_list' found in di_report.z(di_report/datasource_list not a list: %s�.rJz1Datasource '%s' came from unexpected module '%s'.z:used datasource '%s' from '%s' was in di_report's list: %sZdsid_missing_source�source�dslist)r&r7�
isinstance�dictr{r=�list�
__module__�
rpartitionrOrZ	DS_PREFIXr6rZshow_warning�str)rer>Zdicfgr��modnamer#r#r$r|�s8



	
	
r|cCs�|j}td||f�}tjdgd|j�}|jt|��y|jdd�WnItj	k
r�d|}t
jt|�t
|�|js�|gSYnXt|�tj|t|�d|j�}y.tjd�t
j�t
j|j|�Wn"tk
r*t
jtd�YnX|jrKtjd	�tj�tj|j�t|j�t|d
|�t|||�S)Nz%s:%sr]r^r`r_zGCan not apply stage %s, no datasource found! Likely bad things to come!z
Closing stdinz#Failed to setup output redirection!z@Logging being reset, this logger may no longer be active shortlyr")rLr%rrgr^rhr4rrrrsr	rlr&r!rtrurzr7rirjr>rkrMrmrnr?r(r<)r9r3r2r}r~r"r8r#r#r$�main_modules�s8	
	
!


	


r�c
Cs|j}t|�}tjdgd|j�}|jt|��y|jdd�Wn<tj	k
r�t
jtd�t
d�|js�dSYnXt|�tj|t|�d|j�}|j}|r�tjd|�|j}|rtjd|�tj|�}y.tjd	�t
j�t
j|jd�Wn"tk
r`t
jtd
�YnX|jr�tjd�tj�tj|j�t|j�t|d|�|j|||�\}}	|	r�tj d
|�dS|s�tj d|�dSdSdS)Nr]r^r`r_z;Failed to fetch your datasource, likely bad things to come!rKzUsing passed in arguments %szUsing passed in frequency %sz
Closing stdinz#Failed to setup output redirection!z@Logging being reset, this logger may no longer be active shortlyr"zRan %s but it failed!zDid not run %s, does it exist?r)!r2r%rrgr^rhr4rrrrsr	rlr&r!rtrurz�module_argsr7Z	frequency�FREQ_SHORT_NAMESr=rirjr>rkrMrmrnr?r(Z
run_singler{)
r2r3�mod_namer}r~r8Zmod_argsZmod_freqr:r;r#r#r$�main_singlesT		
		
!		


	


	r�cCs|dkrtjjd�}|dkr<tjjd�}tjj|d�}tjj|d�}tjj|d�}tjj|d�}tj||f�|j\}}	|dkr�|jr�d}
qd}
n,|dkr�d|j}
nt	d	|��d}|
|kr,t	d
j
|
���d}|
dkrkx[||||fD]}
tj|
�qQWn1ytj
tj|��}Wntk
r�YnXdgddddi}|dkr�dii}d|dd<x2|D]*}||dkr�|j�|d|<q�W|d}|
|d<tj�||
d<tj||�tjtjj||�|dd�yk|	||�}|
dkr�|\}}|dk	r�t|�|d<n|}dd�|D�||
d<Wn]tk
r6}z=tjtd|
�td|
�t|�g||
d<WYdd}~XnXtj�||
d<d|d<tj||�|
dkr�g}x9|D]1}||dr~|j||jdg��q~Wtj|dd|dd|ii�tjtjj||�|dd�t||
d�S)Nz/var/lib/cloud/dataz/run/cloud-initzstatus.jsonzresult.jsonr~�
init-local�modulesz
modules-%szunknown name: %s�modules-init�modules-config�
modules-finalz'Invalid cloud init mode specified '{0}'�errors�startZfinished�v1rerartTcSsg|]}t|��qSr#)r�)�.0r[r#r#r$�
<listcomp>�s	z"status_wrapper.<locals>.<listcomp>zfailed stage %szfailed run of stage %s)�initr�r�r�r�)r�r�)r/r0�normpathrfr	Zensure_dirsr'rbrL�
ValueErrorr+rq�json�loadsZ	load_filerk�copy�timerZ
write_jsonZsym_link�relpathr�rlr&r!�extendr=r6)r2r3Zdata_dZlink_dZstatus_pathZstatus_linkZresult_pathZresult_link�_name�functorrLZmodes�status�fZ
nullstatusrWr�Zretrer�r[r#r#r$�status_wrapperLs�			



*

!r�cCsJ|jrFtjj|jjtj�}tjj|�sF|j	j
�dS)zCWrite instance-data.json file if absent and datasource is restored.N)Zds_restoredr/r0rfroZrun_dirrZINSTANCE_JSON_FILErPreZpersist_instance_data)r~Zinstance_data_filer#r#r$ru�s
		rucCs�|j�}tj|j|dd�\}}|r�y tjd|j|td�WnDtjk
r�}z!tjd||t	|��WYdd}~XnXdS)z�Call set-hostname if metadata, vendordata or userdata provides it.

    @param stage: String representing current stage in which we are running.
    @param retry_stage: String represented logs upon error setting hostname.
    Z
metadata_onlyTzset-hostnameNzGFailed setting hostname in %s stage. Will retry in %s stage. Error: %s.)
ryr	Zget_hostname_fqdnr>rZhandler&ZSetHostnameErrorr7r�)r~rarcZcloudZhostnameZ_fqdnr[r#r#r$rv�s rvcCs*tjjdjttj��d�dS)Nr)r�stdoutrrf�sortedr
ZFEATURES)r2r3r#r#r$�
main_features�sr�cCs)|stj}tjd|d�}|dd�}|jddddddtj��|jd	d
dddd
dddtjd��|jdddddddd�|jddddddddd�|jdd�|j	dddd�}d|_
|jd dd!�}|jd"d#dddd$dd�|jdd tf�|jd%dd&�}|jd'd(dd)dd*dd+d,db�|jdd%t
f�|jd.dd/�}|jd0d1dd)dd2d3d�|jd4dd)dd5d3dd,ttj���|jd6dddd7d3d�|jd8d9d:d;d<dd=�|jdd.tf�|jd>dd?�}|jtjdtj�}tj|�|jd@ddA�}|jdd@tf�|jdBddC�}	|jdDddE�}
|jdFddG�}|jdHddI�}|jdJddK�}
|r�|ddBkrdddLlm}||	�nN|ddDkr�ddLlm}||
�n!|ddFkr�ddMlm}m}||�|jddF|f�n�|ddHkr#ddNlm}m}||�|jddH|f�n�|dd>krlddOlm}m}||�|jddP|f�nF|ddJkr�ddQlm}m }||
�|
jddJ|f�|j!dR|�}|j"\}}|j#r�t$j%�t&j'�|dckrt(}d}d}|d krA|j)r2dd\}}q�de\}}ns|d%krkdW|j*dX|j*}}nI|d.kr�dY|j+dZ|j+}}|j,}n|}d[|}d}t-j.||d\|�|_/|j/�Jt0j1d]t2j#d^d_|d`dda|dR||f�}t3j4�|SWdQRXdS)fN�progrrKz	--versionz-vr'r
z	%(prog)s z--filez-fr.�destr-�helpz*additional yaml configuration files to use�type�rbz--debugz-d�
store_truez9show additional pre-action logging (default: %(default)s)�defaultFz--forcezCforce running even if no datasource is found (use at your own risk)rtr^�titleZSubcommandsZ
subcommandTr~z3initializes cloud-init and performs initial modulesz--localz-lz*start in local mode (default: %(default)s)r�z1activates modules using a given configuration keyz--modez-mZstorez7module configuration name to use (default: %(default)s)�config�choices�finalZsinglezrun a single module z--namez-nzmodule name to run�requiredz--frequencyzfrequency of the modulez--reportzenable reportingr��nargs�*�metavarZargumentz/any additional arguments to pass to this moduleZqueryz;Query standardized instance metadata from the command line.Zfeatureszlist defined featuresZanalyzez,Devel tool: Analyze cloud-init logs and dataZdevelzRun development toolszcollect-logsz)Collect and tar all cloud-init debug infoZcleanz3Remove logs and artifacts so cloud-init can re-run.r�z/Report cloud-init status or wait on completion.)�
get_parser)r��handle_collect_logs_args)r��handle_clean_args)r��handle_argsZrender)r��handle_status_argsr3�
init-local�searching for local datasources�init-network�!searching for network datasourcesz
modules-%szrunning modules for %sz	single/%szrunning single module %szrunning 'cloud-init %s'Zreporting_enabledZlogfuncr"zcloud-init mode '%s'Z
get_uptime�func)�initzconfigzfinal)zmodulesr�)r�r�)r�r�)5r�argv�argparse�ArgumentParser�add_argumentr
r,ZFileTypeZset_defaultsZadd_subparsersr�Z
add_parserr�r�r�r��keysr�r�NAME�__doc__r�r�Zcloudinit.analyze.__main__Zcloudinit.cmd.devel.parserZcloudinit.cmd.devel.logsr�Zcloudinit.cmd.cleanr�Zcloudinit.cmd.queryr�Zcloudinit.cmd.statusr��
parse_argsr'r7rMZsetupBasicLoggingrZattach_handlersr�rbrLr2Zreportr
ZReportEventStackr^r	Zlog_timer&rZflush_events)Z	sysv_args�parserZ
subparsersZparser_initZ
parser_modZ
parser_singleZparser_queryZparser_dhclientZparser_featuresZparser_analyzeZparser_develZparser_collect_logsZparser_cleanZ
parser_statusZanalyze_parserZdevel_parserZlogs_parserr�Zclean_parserr�Zquery_parserZhandle_query_argsZ
status_parserr�r3r2r�ZrnameZ	report_onZrdescZretvalr#r#r$�main�s�						
	


	
	
	
	
	

	



	
r��__main__ZTZz:/etc/localtime)r@zurl):r�r�r/rr�r Z	cloudinitrZpatchrrMrrrrrr	r
rrZcloudinit.reportingr
Zcloudinit.settingsrrrrrZcloudinit.configrrr*r5r�Z	getLoggerr&r!r(r%r4r<r?rGr\r�r|r�r�r�rurvr�r��__name__�environr�Zreturn_value�exitr#r#r#r$�<module>sf
"

	N�*4Fd	�


Zerion Mini Shell 1.0