Ë
    x[hè·  ã                   óz  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/ e0Z1dZ2dZ3e,e-e.dœZ4ddddd œZ5 ejl                  e7«      Z8dAd!„Z9dBd"„Z:d#„ Z; ejx                  d$«      e8jz                  fd%e
e0gdf   fd&„«       Z>d'„ Z?d(e$fd)„Z@d*„ ZAdCd+„ZBdDd,e	eCe0f   fd-„ZDd.„ ZEd/„ ZFd0eee0eGf      d,e	eHe1f   fd1„ZId2eej”                     d,e	eHe1f   fd3„ZKd4„ ZLd5„ ZMd6„ ZNd7„ ZOd8„ ZPd9ej¢                  fd:„ZRd;„ ZSd<„ ZTdBd=„ZUd>„ ZVd?„ ZWe7d@k(  r# ej°                   eUej²                  «      «       yy)Eé    N)ÚOptionalÚTupleÚCallableÚUnion)ÚfeaturesÚnetinfo)Úsignal_handler)Úsources)Úsocket)Ústages)Ú
url_helper)Úutil)Úperformance)Úversion)Úwarnings)Ú	reporting)Úatomic_helper)Ú	lifecycle)Úhandlers)Úlog_utilÚloggers)Úread_cfg_paths)Úcc_set_hostname)ÚModules)Úvalidate_cloudconfig_schema)Úlog_with_downgradable_level)Úevents)ÚPER_INSTANCEÚ
PER_ALWAYSÚPER_ONCEÚCLOUD_CONFIGzOCloud-init v. {version} running '{action}' at {timestamp}. Up {uptime} seconds.zcloud_%s_modules)ÚinstanceÚalwaysÚoncezLocal StagezNetwork StagezConfig StagezFinal Stage)ú
init-localÚinitúmodules-configúmodules-finalc                 óŒ  — | r"t         j                  j                  d| z  «       t         j                  j                  d«       t         j                  j                  d«       t        j                  t         j                  ¬«       t         j                  j                  d«       t         j                  j                  d«       y )Nú%s
z<------------------------------------------------------------ú
)Úfile)ÚsysÚstderrÚwriteÚ	tracebackÚ	print_exc©Úmsgs    ú4/usr/lib/python3/dist-packages/cloudinit/cmd/main.pyr1   r1   T   su   € Ù
Ü�
‰
×Ñ˜ 3™Ô(Ü‡J�J×Ñ�XÔÜ‡J�J×Ñ�TÔÜ×ÑœSŸZ™ZÕ(Ü‡J�J×Ñ�XÔÜ‡J�J×Ñ�TÕó    c                 ó`   — |st        | «      }t        j                  d|z  ddt        ¬«       |S )Nr*   FT)Úconsoler.   Úlog)Úwelcome_formatr   Ú	multi_logÚLOG)Úactionr3   s     r4   Úwelcomer=   ^   s,   € ÙÜ˜VÓ$ˆÜ×Ñ�v ‘~¨u¸TÄsÕKØ€Jr5   c                 ó    — t         j                  t        j                  «       t	        j
                  «       t	        j                  «       | ¬«      S )N)r   ÚuptimeÚ	timestampr<   )ÚWELCOME_MSG_TPLÚformatr   Úversion_stringr   r?   Útime_rfc2822©r<   s    r4   r9   r9   e   s>   € Ü×!Ñ!Ü×&Ñ&Ó(Ü�{‰{‹}Ü×#Ñ#Ó%Øð	 "ó ð r5   úClosing stdinÚloggerc                 ód  — t        j                  t        j                  j	                  «       «      sk | d«       t        t         j                  «      5 }t        j                  |j	                  «       t        j                  j	                  «       «       ddd«       y | d«       y# 1 sw Y   yxY w)zj
    reopen stdin as /dev/null to ensure no side effects

    logger: a function for logging messages
    rF   Nz"Not closing stdin, stdin is a tty.)ÚosÚisattyr-   ÚstdinÚfilenoÚopenÚdevnullÚdup2)rG   Úfps     r4   Úclose_stdinrQ   n   sy   € ô �9‰9”S—Y‘Y×%Ñ%Ó'Ô(ÙˆÔÜ”"—*‘*Óð 	5 Ü�G‰G�B—I‘I“K¤§¡×!1Ñ!1Ó!3Ô4÷	5ð 	5ñ 	Ð3Õ4÷	5ð 	5ús   ÁAB&Â&B/c                 ó´   — g }| j                   rI| j                   D ]:  }|j                  t        j                  j	                  |j
                  «      «       Œ< |S ©N)ÚfilesÚappendrI   ÚpathÚrealpathÚname)ÚargsÚfn_cfgsÚfhs      r4   Úextract_fnsr\   }   sK   € ð €GØ‡z‚zØ—*‘*ò 	6ˆBð �N‰Nœ2Ÿ7™7×+Ñ+¨B¯G©GÓ4Õ5ð	6ð €Nr5   Úmodsc                 óN  — t         |z  }| j                  |«      \  }}t        |«      t        |«      z   }|dk(  rBd|›d|›d�}t        j                  j                  d|z  «       t        j                  |«       g S t        j                  dt        |«      t        |«      «       |S )Nr   zNo 'z ' modules to run under section 'ú'r*   zRan %s modules with %s failures)ÚMOD_SECTION_TPLÚrun_sectionÚlenr-   r.   r/   r;   Údebug)r]   Úaction_nameÚsectionÚfull_section_nameÚ	which_ranÚfailuresÚtotal_attemptedr3   s           r4   Úrun_module_sectionrj   Š   s”   € Ü'¨7Ñ3ÐØ ×,Ñ,Ð->Ó?Ñ€Y�Ü˜)“n¤s¨8£}Ñ4€OØ˜!ÓâÚð
ˆô 	�
‰
×Ñ˜ 3™Ô(Ü�	‰	�#ŒØˆ	ä�	‰	Ø-¬s°9«~¼sÀ8»}ô	
ð ˆr5   c                 óp   — | j                  d«      r%t        j                  | j                  d«      «       y y )Nr   )Úgetr   Úupdate_configuration)Úcfgs    r4   Úapply_reporting_cfgro   �   s*   € Ø
‡w�wˆ{ÔÜ×&Ñ& s§w¡w¨{Ó';Õ<ð r5   c                 óx   — t        j                  | «      }|D ]  }||v sŒ|||   fc S  t        d| ›d|›d�«      ‚)Nz	No keys (z) found in string 'r_   )r   Úkeyval_str_to_dictÚKeyError)ÚcmdlineÚnamesÚdataÚkeys       r4   Úparse_cmdline_urlrw   ¢   sH   € Ü×"Ñ" 7Ó+€DØò "ˆØ�$Š;Ø˜˜S™	�>Ò!ð"õ º'Â5ÐIÓ
JÐJr5   Úreturnc                 ó  — |€t        j                  «       }	 t        |«      \  }}|j                  d«      }|rmt        j                  j                  | «      rN|r/d| ›d|›d�}t        j                  }|rt        j
                  }||fS d| ›d|›d�}t        j                  }||fS |dd	d
dœ}|s|rt        j                  }d|d<   nt        j
                  }d|d<   d}	d}
	 t        j                  d%i |¤Ž}d}|j                  «       rÎd
}t        |t        j                   «      r<	 |t#        |j%                  t'        |
«      ¬«      «      z  }|j                  |
«      s d}n|j*                  j                  |
«      sd}|r|dk(  rgt-        j.                  dddd
¬«      S |dk(  rt        j                  }nt        j                  }|d|› dt1        |
«      › �fS |d|›d|j2                  ›d�fS ||j*                  z   }	t        j6                  | |	d ¬!«       t        j                  d"|›d#|›d$| ›�fS # t        $ r t        j
                  dfcY S w xY w# t(        $ r Y �Œw xY w# t        j4                  $ r}|d|›d|›�fcY d}~S d}~ww xY w)&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.)zfile://ú/zfile 'zC' existed, possibly from local stage download of command line url 'z'. Not re-writing.zE' existed, possibly from previous boot download of command line url 'é
   é   T)ÚurlÚtimeoutÚretriesÚstreamé   Úsec_betweengš™™™™™¹?s   #cloud-configr5   )Ú
chunk_sizeFr}   z!The kernel command line key `url`z22.3zD Please use `cloud-config-url` kernel command line parameter instead©Ú
deprecatedÚdeprecated_versionÚextra_messageÚskip_logúcloud-config-urlzcontents of 'z' did not start with zurl 'z' returned code z. Ignoring.zretrieving url 'z
' failed: i€  )Úmodezwrote cloud-config data from z='z' to © )r   Úget_cmdlinerw   rr   ÚloggingÚDEBUGÚ
startswithrI   rV   ÚexistsÚINFOÚWARNr   Úread_file_or_urlÚokÚ
isinstanceÚUrlResponseÚnextÚiter_contentrb   ÚStopIterationÚcontentsr   Ú	deprecateÚstrÚcodeÚUrlErrorÚ
write_file)rV   Únetworkrs   Úcmdline_namer}   Úpath_is_localÚmÚlevelÚkwargsru   ÚheaderÚrespÚsniffed_contentÚis_cloud_cfgÚes                  r4   Úattempt_cmdline_urlr«   ª   s´  € ð& €Ü×"Ñ"Ó$ˆðDÜ-¨gÓ6Ñˆ�cð —N‘NÐ#3Ó4€MáœŸ™Ÿ™¨Ô-Úò AEÂcðKð ô —L‘LˆEÙÜŸ™�ð �qˆzÐð ò AEÂcðKð ô —L‘LˆEà�qˆzÐà R°AÀÑF€FÙ‘-Ü—‘ˆØ !ˆˆ}Òä—‘ˆØ #ˆˆ}Ñà€DØ€Fð*DÜ×*Ñ*Ñ4¨VÑ4ˆØˆØ�7‰7Œ9ØˆLÜ˜$¤
× 6Ñ 6Ô7ðØ#¤tØ×)Ñ)´S¸³[Ð)ÓAó(ñ �Oð
 '×1Ñ1°&Ô9Ø#(‘LØ—]‘]×-Ñ-¨fÔ5Ø$�ÙØ 5Ò(Ü$×.Ñ.Ø#FØ+1ð'@à!%ôð ð  Ð#5Ò5Ü#ŸL™L‘Eä#ŸL™L�EàØ# C 5Ð(=¼cÀ&»k¸]ÐKðð ñ Ú:=¸t¿y»yÐIðð ð  §¡Ñ.ˆô
 	‡O�O�D˜$ UÕ+ä�Šâš™dð	$ðð øô] ò DÜ—‘ÐBÐCÒCðDûôV %ò Úðûô> ×Ñò DÙº3ÁÐBÐCÕCûðDúsg   ˜H- Ã!AI Ä%'I ÅAI Æ8I ÇI Ç+I È-IÉ
IÉ	IÉI ÉIÉI ÉJÉ1	J É:JÊ Jc                 ó˜  — dt         j                  j                  t         j                  j                  fz  }t        j
                  j                  | j                  j                  d«      d«      }t        j
                  j                  |«      rXt        j                  |«      }||k7  r=t        j                  d«       | j                  d«       t        j                  ||«       yyt        j
                  j                  | j                  j!                  d«      «      rt        j#                  d«       t        j                  ||«       y)	zÊPurge the cache if python version changed on us.

    There could be changes not represented in our cache (obj.pkl) after we
    upgrade to a new version of python, so at that point clear the cache
    z%d.%dru   zpython-versionz-Python version change detected. Purging cacheTÚobj_pklzMWriting python-version file. Cache compatibility status is currently unknown.N)r-   Úversion_infoÚmajorÚminorrI   rV   ÚjoinÚpathsÚ	get_cpathr�   r   Úload_text_filer;   rc   Úpurge_cacherŸ   Úget_ipath_curÚinfo)r&   Úcurrent_python_versionÚpython_version_pathÚcached_python_versions       r4   Ú$purge_cache_on_python_version_changer»     s  € ð %Ü×Ñ×ÑÜ×Ñ×Ñð(ñ Ðô Ÿ'™'Ÿ,™,Ø�
‰
×Ñ˜VÓ$Ð&6óÐô 
‡w�w‡~�~Ð)Ô*Ü $× 3Ñ 3Ð4GÓ HÐð !Ð$:Ò:Ü�I‰IÐEÔFØ×Ñ˜TÔ"Ü�O‰OÐ/Ð1GÕHð ;ô
 �7‰7�>‰>˜$Ÿ*™*×2Ñ2°9Ó=Ô>Ü�H‰HðCôô 	�‰Ð+Ð-CÕDr5   c                 ó^   — t        j                  | j                  d«      ry|j                   S )NÚdisable_network_activationF)r   Úget_cfg_option_boolrn   Úlocal)r&   rY   s     r4   Ú_should_bring_up_interfacesrÀ   5  s&   € Ü×Ñ §¡Ð*FÔGØØ�z‰zˆ>Ðr5   Ú
raw_configc                 ó@  — | syt        j                  | j                  «       dd «      dk7  ry	 t        j                  | «      }t        |t        «      sy
d|v rG|d   D ]?  }|j                  d«      xs i }|j                  dd«      }|sŒ-|j                  d«      rŒ? y |j                  d«      ry|j                  di «      j                  d«      ry|j                  d«      ryy# t
        $ r-}t        t        dt        j                  d|f¬«       Y d}~y	d}~ww xY w)aš  Determine if our cloud-config requires us to wait

    User data requires us to wait during cloud-init network phase if:
    - We have user data that is anything other than cloud-config
      - This can likely be further optimized in the future to include
        other user data types
    - cloud-config contains:
      - bootcmd
      - random_seed command
      - mounts
      - write_files with source
    )Fzno configuration foundNé*   ztext/cloud-config)Tz non-cloud-config user data foundz24.4z'Unexpected failure parsing userdata: %s)rG   r   Úrequested_levelr3   rY   )Tz!failed to parse user data as yaml)Tz(parsed config not in cloud-config formatÚwrite_filesÚsourceÚuriÚ )rz   zfile:)Tz!write_files with source uri foundÚbootcmd)Tzbootcmd foundÚrandom_seedÚcommand)Tzrandom_seed command foundÚmounts)Tzmounts found)Fz8cloud-config does not contain network requiring elements)r   Útype_from_starts_withÚstripÚyamlÚ	safe_loadÚ	Exceptionr   r;   r�   ÚWARNINGr•   Údictrl   r�   )rÁ   Úparsed_yamlrª   ÚitemÚsource_dictÚ
source_uris         r4   Ú_should_wait_via_user_datarØ   ;  s"  € ñ Ø.ô 	×&Ñ& z×'7Ñ'7Ó'9¸#¸2Ð'>Ó?Øò	ð 8ð
9Ü—n‘n ZÓ0ˆô �k¤4Ô(Ø?ð ˜Ñ#Ø Ñ.ò 	AˆDØŸ(™( 8Ó,Ò2°ˆKØ$Ÿ™¨°Ó3ˆJÚ :×#8Ñ#8¸Õ#HÙ@ð		Að
 ‡��yÔ!Ø$Ø‡��} bÓ)×-Ñ-¨iÔ8Ø0Ø‡��xÔ Ø#ØLøô5 ò 9Ü#ÜØÜ#ŸO™OØ9Ø�õ	
ô 9ûð9ús   ¯C' Ã'	DÃ0#DÄDÚ
datasourcec                 ó   — | syt        | j                  «       «      \  }}|rd|› d�fS t        | j                  «       «      \  }}|rd|› d�fS t        | j                  «       «      \  }}|rd|› d�fS dd|› d|› d	|› �fS )
zÙDetermine if we should wait on network connectivity for cloud-init.

    We need to wait during the cloud-init network phase if:
    - We have no datasource
    - We have user data that may require network access
    )Tzno datasource foundTz in user dataz in vendor dataz in vendor data2Fzuser data: z, vendor data: z, vendor data2: )rØ   Úget_userdata_rawÚget_vendordata_rawÚget_vendordata2_raw)rÙ   Úuser_should_waitÚuser_reasonÚvendor_should_waitÚvendor_reasonÚvendor2_should_waitÚvendor2_reasons          r4   Ú_should_wait_on_networkrä   v  sÕ   € ñ Ø*Ü$>Ø×#Ñ#Ó%ó%Ñ!Ð�kñ Ø˜�} MÐ2Ð2Ð2Ü(BØ×%Ñ%Ó'ó)Ñ%Ð˜ñ Ø˜� oÐ6Ð6Ð6Ü*DØ×&Ñ&Ó(ó+Ñ'Ð˜ñ Ø˜Ð'Ð'7Ð8Ð8Ð8ð 	à˜+˜ð 'Ø)˜?ð +Ø+Ð,ð.ðð r5   c                 óâ  ‡— t         j                  t         j                  g}|j                  rt         j                  g}t	        t
        j                  j                  dt        z  d«      |j                   ¬«      gŠ|j                  rdnd}t        |«      }t        j                  ||j                  ¬«      }|j                  t        |«      «       d }d }	 |j                  s2t!        ˆfd„«       t#        j$                  |j&                  | «      \  }}n#t#        j(                  |j&                  | «      \  }}|j8                  r)t.        j9                  d	«       t;        j<                  «        |j                  s4t;        j>                  |j&                  «       tA        |j&                  «       tC        | |¬
«       t.        jE                  dt        jF                  «       |«       ‰D ]  \  }	}t.        jI                  |	|«       Œ 	 |jK                  «        |jL                  }
tO        |«       |j                  rt         jP                  nt         jR                  }|t         jR                  k(  r®tT        jV                  rgt
        j                  jY                  |jL                  j[                  d«      «      s/t.        j9                  d«       |j\                  j_                  «        d}t`        jb                  je                  dtg        jh                  «       z  «       n•d}t#        jj                  |j&                  dd«      }|rt.        j9                  d«       d}nH|
jm                  d«      }t
        j                  jY                  |«      rt.        j9                  d|«       d}|jo                  «        tq        ||«      }	 |js                  |¬«       |t         jR                  k(  r>|jt                  jv                  |k7  r%t.        j9                  d||jt                  «       d g fS t        |«       |j�                  «       }t.        j9                  d|| ||jƒ                  «       «       |t         jP                  k(  rt…        |d d!¬"«       |j}                  |¬«       |t         jP                  k(  rïtT        jV                  rvt‡        |jt                  «      \  }}|rt.        j9                  d#|«       nEt.        j9                  d$|«       t#        jˆ                  |jL                  j[                  d«      d%«       |jt                  jv                  |k7  r/t.        j9                  d&||jt                  «       |jt                  g fS t.        j9                  d'||jt                  «       |j‹                  «        |j�                  «        t…        |d(d)¬"«       	 |j�                  «       j‘                  d*|j’                  t”        gt”        ¬+«      \  }}|s|j“                  t–        «       |jL                  jm                  d-«      }t
        j                  jY                  |«      rXt        j˜                  |«      jš                  d.k7  r6t�        tŸ        j                   t#        j¢                  |«      «      ddd/¬0«       nt.        j9                  d1«       tA        |j&                  «       t¥        |t        |«      |j                  ¬2«      }	 |}|}t#        j(                  |j&                  | «      \  }}||k7  s||k7  r:t.        j§                  d3||«       t#        j$                  |j&                  | «      \  }}t;        j>                  |j&                  «       |j©                  «        t«        |jt                  |j&                  ¬5«       |jt                  t­        || | «      fS # t*        $ rL d}t#        j,                  t.        |«       t1        |«       ‰j3                  t4        j6                  |f«       Y �Œáw xY w# t*        $ r t#        j,                  t.        d«       Y �Œ/w xY w# t         jx                  $ r± |t         jP                  k(  rt.        j9                  d«       nt#        j,                  t.        d«       |jz                  sH|j}                  |¬«       t.        j9                  d|«       |t         jP                  k(  rd g fcY S d dgfcY S t.        j9                  d|«       Y �Œíw xY w# t*        $ r, t#        j,                  t.        d,«       |jt                  d,gfcY S w xY w# t*        $ r t#        j,                  t.        d4«       Y �Œw xY w)6Nz%s.dz91_kernel_cmdline_url.cfg)rV   r    r%   r&   ©Úds_depsÚreporterc                 óF   •— ‰j                  t        j                  | f«      S rS   )rU   r�   rŽ   )r3   Ú
early_logss    €r4   ú<lambda>zmain_init.<locals>.<lambda>À  s   ø€  J×$5Ñ$5´w·}±}ÀcÐ6JÓ$K€ r5   ú#Failed to setup output redirection!ú@Logging being reset, this logger may no longer be active shortlyr2   ú!PID [%s] started cloud-init '%s'.z0Failed to initialize, likely bad things to come!z.skip-networkz4Will wait for network connectivity before continuingÚtrustr*   ÚcheckÚmanual_cache_cleanFz"manual cache clean set from configÚmanual_clean_markerz(manual cache clean found from marker: %s©Úexistingz)[%s] Exiting. datasource %s in local modezNo local datasource foundz8No instance datasource found! Likely bad things to come!)Úbring_upz[%s] Exiting without datasourcezNo instance datasource found.z2[%s] barreling on in force mode without datasourcez5[%s] %s will now be targeting instance id: %s. new=%sr¿   r    )ÚstageÚretry_stagezTNetwork connectivity determined necessary for cloud-init's network stage. Reason: %szVNetwork connectivity determined unnecessary for cloud-init's network stage. Reason: %srÈ   z.[%s] Exiting. datasource %s not in local mode.z6[%s] %s is in local mode, will apply init modules now.zinit-netzmodules:configÚconsume_data)rY   ÚfreqzConsuming user data failed!Úcloud_configr   T)ÚconfigÚstrictÚlog_detailsÚlog_deprecationsz2Skipping user-data validation. No user-data found.©rè   z#Stdout, stderr changing to (%s, %s)z'Failed to re-adjust output redirection!)rÙ   rn   )Wr
   ÚDEP_FILESYSTEMÚDEP_NETWORKr¿   r«   rI   rV   r±   r!   r9   r   ÚInitrè   Úread_cfgr\   Úskip_log_setuprQ   r   Úfixup_outputrn   Úget_output_cfgrÑ   Úlogexcr;   r1   rU   r�   r’   rc   r   Úreset_loggingÚsetup_loggingro   r=   r·   Úgetppidr8   Ú
initializer²   r»   ÚDSMODE_LOCALÚDSMODE_NETWORKr   ÚMANUAL_NETWORK_WAITr�   Úget_runpathÚdistroÚwait_for_networkr-   r.   r/   r   Ú
debug_infor¾   r¶   rµ   rÀ   ÚfetchrÙ   ÚdsmodeÚDataSourceNotFoundExceptionÚforceÚapply_network_configÚ_maybe_persist_instance_dataÚ
instancifyÚis_new_instanceÚ_maybe_set_hostnamerä   rŸ   Úsetup_datasourceÚupdateÚcloudifyÚrunrø   r   r   ÚstatÚst_sizer   rÏ   rÐ   r´   r   ÚwarningÚactivate_datasourceÚdi_report_warnrj   )rX   rY   ÚdepsÚbootstage_nameÚw_msgr&   ÚoutfmtÚerrfmtr3   ÚlvlÚpath_helperrŠ   rô   ÚmcfgÚmfileÚbring_up_interfacesÚiidÚshould_waitÚreasonÚranÚ_resultsÚcloud_cfg_pathr]   Úoutfmt_origÚerrfmt_origrê   s                            @r4   Ú	main_initr7  ›  sw  ø€ Ü×"Ñ"¤G×$7Ñ$7Ð8€DØ‡z‚zÜ×&Ñ&Ð'ˆô 	Ü—‘—‘ØœÑ%Ð'Bóð Ÿ
™
�Nô		
ð€Jð, &*§Z¢Z‘\°V€NÜ˜>Ó*€EÜ�;‰;˜t¨d¯m©mÔ<€Dà‡M�M”+˜dÓ#Ô$à€FØ€Fð
/Ø×"Ò"ÜÓKÔLÜ!×.Ñ.¨t¯x©x¸Ó>‰NˆF‘Fä!×0Ñ0°·±¸4Ó@‰NˆF�Fð ‡z‚zä�	‰	ØNô	
ô 	×ÑÔØ×ÒÜ×Ñ˜dŸh™hÔ'Ü˜DŸH™HÔ%ô
 ˆD�eÕÜ‡H�HÐ0´"·*±*³,ÀÔOð ò ‰ˆˆSÜ�‰��SÕððMØ�‰Ôð —*‘*€KÜ(¨Ô.Ø#'§:¢:Œ7×Ò´7×3IÑ3I€DàŒw×%Ñ%Ò%Ü×'Ò'´·±·±Ø�J‰J×"Ñ" ?Ó3ô1
ô �I‰IÐLÔMØ�K‰K×(Ñ(Ô*ØˆÜ�
‰
×Ñ˜¤7×#5Ñ#5Ó#7Ñ8Õ9àˆÜ×'Ñ'¨¯©Ð2FÈÓNˆÙÜ�I‰IÐ:Ô;Ø‰Hà×-Ñ-Ð.CÓDˆEÜ�w‰w�~‰~˜eÔ$Ü—	‘	ÐDÀeÔLØ"�à×ÑÔô 6°d¸DÓAÐðØ�
‰
˜Hˆ
Ô%ð ”7×)Ñ)Ò)¨d¯o©o×.DÑ.DÈÒ.LÜ�I‰IØ;ØØ—‘ôð
 ˜"�:Ðô. ! Ô&à
�/‰/Ó
€CÜ‡I�IØ?ØØØØ×ÑÓôð Œw×#Ñ#Ò#ô 	˜D¨¸YÕGà×ÑÐ':ÐÔ;àŒw×#Ñ#Ò#Ü×'Ò'Ü"9¸$¿/¹/Ó"JÑˆK˜ÙÜ—	‘	ð=àõô —	‘	ð=àôô
 —‘ §
¡
× 6Ñ 6°Ó GÈÔLà�?‰?×!Ñ! TÒ)Ü�I‰IØ@ØØ—‘ôð
 —O‘O RÐ(Ð(ä�I‰IØHØØ—‘ôð 	×ÑÔà‡K�K„MÜ˜ JÐ<LÕMðBð Ÿ-™-›/×-Ñ-ØØ×ÑÜ�Üð	 .ó 
‰ˆˆhñ ð ×ÑœjÔ)ð —Z‘Z×-Ñ-¨nÓ=€NÜ	‡w�w‡~�~�nÔ%¬"¯'©'°.Ó*A×*IÑ*IÈQÒ*NÜ#Ü—>‘>¤$×"5Ñ"5°nÓ"EÓFØØØ!ö		
ô 	�	‰	ÐFÔGä˜Ÿ™Ô!ô �4œ TÓ*°T·]±]ÔC€DðDØˆØˆÜ×.Ñ.¨t¯x©x¸Ó>Ñˆ�Ø˜&Ò  K°6Ò$9Ü�K‰KÐ=¸vÀvÔNÜ#×0Ñ0°·±¸4Ó@ÑˆV�Vô ×Ñ˜$Ÿ(™(Ô#ð 	×ÑÔä˜dŸo™o°4·8±8Õ<ð �O‰OÔ/°°d¸DÓAÐBÐBøôY ò /Ø3ˆÜ�‰”C˜ÔÜ�#ŒØ×Ñœ7Ÿ<™<¨Ð-×.ð	/ûô8 ò MÜ�‰”CÐK×LðMûôT ×.Ñ.ò ð ”7×'Ñ'Ò'Ü�I‰IÐ1Õ2ä�K‰KÜÐOôð �zŠzØ×%Ñ%Ð/BÐ%ÔCÜ�I‰IÐ7¸Ô>Ø”w×+Ñ+Ò+Ø˜b�zÒ!àÐ>Ð?Ð@Ò@ä�I‰IØDÀd÷ð%ûô@ ò BÜ�‰”CÐ6Ô7Ø—‘Ð"?Ð!@ÐAÒAðBûô8 ò DÜ�‰”CÐB×CðDúsl   ÃA!_ È` Î;A"a ×Ad Û2A+e ßA`à`à#aáaáB!dã+dã2dädä2eåeå#e.å-e.c                 óÀ  — d|vrt         j                  d«       y |d   }|€t         j                  d«       y t        |t        «      st         j	                  d|«       y |j                  d«      }|€t         j	                  d«       y t        |t        «      st         j	                  d|«       y | j                  j                  d«      d	   }|j                  t        j                  «      r|t        t        j                  «      d  }nt         j	                  d
| |«       ||v rt         j                  d| ||«       y t        j                  d||t        |«      ¬«       y )NÚ	di_reportzno di_report found in config.zdi_report was None.z%di_report config not a dictionary: %sÚdatasource_listz(no 'datasource_list' found in di_report.z(di_report/datasource_list not a list: %sú.r|   z1Datasource '%s' came from unexpected module '%s'.z:used datasource '%s' from '%s' was in di_report's list: %sÚdsid_missing_source)rÆ   Údslist)r;   rc   r•   rÓ   r"  rl   ÚlistÚ
__module__Ú
rpartitionr�   r
   Ú	DS_PREFIXrb   r   Úshow_warningrœ   )rÙ   rn   Údicfgr=  Úmodnames        r4   r$  r$  “  s7  € Ø˜#ÑÜ�	‰	Ð1Ô2Øà�Ñ€EØ€}ô 	�	‰	Ð'Ô(Øä�eœTÔ"Ü�‰Ð;¸UÔCØà�Y‰YÐ(Ó)€FØ€~Ü�‰Ð>Ô?ØÜ˜¤Ô%Ü�‰Ð>ÀÔGØð ×#Ñ#×.Ñ.¨sÓ3°AÑ6€GØ×Ñœ'×+Ñ+Ô,Øœ#œg×/Ñ/Ó0Ð2Ð3‰ä�‰Ø?ØØô	
ð �&ÑÜ�	‰	ØHØØØô		
ð 	ä×ÑØ˜s¨7¼3¸v»;ör5   c                 óH  — |j                   }| ›d|›�}t        |«      }t        j                  g |j                  ¬«      }|j                  t        |«      «       	 |j                  d¬«       t        |«       t!        |t        |«      |j                  ¬«      }	 |j"                  s*t%        «        t        j&                  |j(                  |«       |j,                  r)t        j-                  d«       t/        j0                  «        |j"                  s4t/        j2                  |j(                  «       t5        |j(                  «       t7        ||¬	«       t        j9                  d
t;        j<                  «       |«       |dk(  rt?        j@                  ddd¬«       tC        |||«      S # t        j                  $ r? d|z  }t        j                  t        |«       t        |«       |j                  s|gcY S Y �Œ‰w xY w# t*        $ r t        j                  t        d«       Y �ŒPw xY w)Nú:ræ   rï   ró   zGCan not apply stage %s, no datasource found! Likely bad things to come!rÿ   rì   rí   r2   rî   r&   z`--mode init`ú24.1úUse `cloud-init init` instead.)r…   r†   r‡   )"rŠ   r9   r   r  rè   r  r\   r  r
   r  r   r  r;   r1   r  r  r   r  rQ   r  rn   rÑ   rc   r   r  r	  ro   r=   r·   rI   r
  r   r›   rj   )rd   rY   rX   r&  r'  r&   r3   r]   s           r4   Úmain_modulesrI  Å  s¶  € Ø�9‰9€Dò !,©TÐ2€NÜ˜>Ó*€EÜ�;‰;˜r¨D¯M©MÔ:€Dà‡M�M”+˜dÓ#Ô$ðØ�
‰
˜Gˆ
Ô$ô ! Ô&ä�4œ TÓ*°T·]±]ÔC€Dð@Ø×"Ò"ÜŒMÜ×Ñ˜dŸh™h¨Ô-ð ‡z‚zä�	‰	ØNô	
ô 	×ÑÔØ×ÒÜ×Ñ˜dŸh™hÔ'Ü˜DŸH™HÔ%ô ˆD�eÕÜ‡H�HÐ0´"·*±*³,ÀÔOàˆv‚~Ü×ÑØ&Ø%Ø:õ	
ô ˜d D¨$Ó/Ð/øôU ×.Ñ.ò 	ðØ $ñ%ð 	ô 	�‰”C˜ÔÜ�#ŒØ�zŠzØ�7ŠNò ð	ûô$ ò @Ü�‰”CÐ>×?ð@ús%   ÁF% Â6G: Æ%AG7Ç6G7Ç:#H!È H!c                 ó   — |j                   }t        | «      }t        j                  g |j                  ¬«      }|j                  t        |«      «       	 |j                  d¬«       t        |«       t!        |t        |«      |j                  ¬«      }|j"                  }|rt        j%                  d|«       |j&                  }|r+t        j%                  d|«       t(        j+                  |«      }	 t-        «        t        j.                  |j0                  d «       |j$                  r)t        j%                  d
«       t5        j6                  «        t5        j8                  |j0                  «       t;        |j0                  «       t=        | |¬«       |j?                  |||«      \  }}	|	rt        jA                  d|«       y|st        jA                  d|«       yy# t        j                  $ r7 t        j                  t        d«       t        d«       |j                  sY yY �Œ¼w xY w# t2        $ r t        j                  t        d	«       Y �Œ2w xY w)Nræ   rï   ró   z;Failed to fetch your datasource, likely bad things to come!r�   rÿ   zUsing passed in arguments %szUsing passed in frequency %srì   rí   r2   zRan %s but it failed!zDid not run %s, does it exist?r   )!rX   r9   r   r  rè   r  r\   r  r
   r  r   r  r;   r1   r  r  r   Úmodule_argsrc   Ú	frequencyÚFREQ_SHORT_NAMESrl   rQ   r  rn   rÑ   r   r  r	  ro   r=   Ú
run_singler"  )
rX   rY   Úmod_namer'  r&   r]   Úmod_argsÚmod_freqrg   rh   s
             r4   Úmain_singlerR    sÚ  € ð �y‰y€HÜ˜4Ó €EÜ�;‰;˜r¨D¯M©MÔ:€Dà‡M�M”+˜dÓ#Ô$ðØ�
‰
˜Gˆ
Ô$ô ! Ô&ä�4œ TÓ*°T·]±]ÔC€DØ×Ñ€HÙÜ�	‰	Ð0°(Ô;Ø�~‰~€HÙÜ�	‰	Ð0°(Ô;Ü#×'Ñ'¨Ó1ˆð@ÜŒÜ×Ñ˜$Ÿ(™( DÔ)ð ‡z‚zä�	‰	ØNô	
ô 	×ÑÔÜ×Ñ˜$Ÿ(™(Ô#Ü˜Ÿ™Ô!ô ˆD�eÕð !ŸO™O¨H°hÀÓIÑ€Y�ÙÜ�‰Ð+¨XÔ6ØÙÜ�‰Ð4°hÔ?Øð øôe ×.Ñ.ò ô 	�‰ÜÐNô	
ô 	ØIô	
ð �zŠzÙò ðûô4 ò @Ü�‰”CÐ>×?ð@ús%   ÁG Ã0*H& ÇAH#È"H#È&#IÉIc           
      óŠ  — t        «       }|j                  d«      }t        j                  j	                  |j
                  «      }t        j                  j                  |d«      }t        j                  j                  |d«      }t        j                  j                  |d«      }t        j                  j                  |d«      }t        j                  «       }	t        j                  ||f«       |j                  \  }
}| dk(  r|j                  rd}n&d}n#| dk(  rd|j                  z  }nt        d| z  «      ‚|t        vrt        d	j!                  |«      «      ‚g i d d d
œ}dd |j#                  «       |j#                  «       |j#                  «       |j#                  «       dœi}|dk(  r!||||fD ]  }t        j$                  |«       Œ n)	 t'        j(                  t        j*                  |«      «      }||d   vr|j#                  «       |d   |<   |d   }||d<   ||   d   r%||   d   st.        j1                  dt        |   «       t3        t        j4                  «       «      ||   d<   t7        t9        d„ |	j:                  «      «      }|j=                  «       }t?        j@                  ||«       t        jB                  t        j                  jE                  ||«      |d¬«       	  || |«      }|dv r|\  }}|�tG        |«      |d<   n|}||   d   jI                  |D �cg c]  }tG        |«      ‘Œ c}«       t3        t        j4                  «       «      ||   d<   d |d<   |j=                  «       }|jU                  «        |jW                  «       D ];  }||v r'tY        t[        ||   ||   z   «      «      ||   d   |<   Œ.||   ||   d   |<   Œ= t?        j@                  ||«       |dk(  r¸g }|jW                  «       D ]O  }t]        ||   t^        «      sŒ||   ja                  d«      sŒ,|jI                  ||   ja                  dg «      «       ŒQ t?        j@                  |d|d   |dœi«       t        jB                  t        j                  jE                  ||«      |d¬«       tc        ||   d   «      S # t,        $ r Y �ŒÍw xY wc c}w # t,        $ rO}t.        jK                  d|«       tM        d|z  «       ||   d   jO                  tG        |«      «       Y d }~�Œâd }~wtP        $ ri}|jR                  rRt.        jK                  d|«       tM        d|z  «       ||   d   jO                  dtG        |jR                  «      › d�«       Y d }~�ŒRd }~ww xY w# t3        t        j4                  «       «      ||   d<   d |d<   |j=                  «       }|jU                  «        |jW                  «       D ];  }||v r'tY        t[        ||   ||   z   «      «      ||   d   |<   Œ.||   ||   d   |<   Œ= t?        j@                  ||«       w xY w)Nru   zstatus.jsonzresult.jsonr&   r%   Úmodulesú
modules-%szunknown name: %sz'Invalid cloud init mode specified '{0}')ÚerrorsÚrecoverable_errorsÚstartÚfinishedÚv1)rÙ   r&   r%   r'   r(   rö   rX  rY  z=Unexpected start time found for %s. Was this stage restarted?c                 ó6   — t        | t        j                  «      S rS   )r•   r   ÚLogExporter)Úhs    r4   rë   z status_wrapper.<locals>.<lambda>—  s   € ”j ¤G×$7Ñ$7Ó8€ r5   T)r  )r&   r%   rÙ   rV  zfailed stage %szfailed run of stage %sz	sys.exit(z) calledrW  r(   )rÙ   rV  )2r   r³   rI   rV   ÚnormpathÚrun_dirr±   r�   Ú	getLoggerr   Úensure_dirsr<   r¿   rŠ   Ú
ValueErrorÚ
STAGE_NAMErB   ÚcopyÚdel_fileÚjsonÚloadsr´   rÑ   r;   r"  Úfloatr?   r—   Úfilterr   Úexport_logsr   Ú
write_jsonÚsym_linkÚrelpathrœ   ÚextendÚ	exceptionr1   rU   Ú
SystemExitr�   Ú
clean_logsÚkeysr>  Úsetr•   rÓ   rl   rb   )rX   rY   r²   Údata_dÚlink_dÚstatus_pathÚstatus_linkÚresult_pathÚresult_linkÚroot_loggerÚ_nameÚfunctorrŠ   Ú
nullstatusÚstatusÚfrZ  ÚhandlerÚpreexisting_recoverable_errorsÚretrÙ   rV  rª   Únew_recoverable_errorsrv   r£   s                             r4   Ústatus_wrapperr„  L  s  € ÜÓ€EØ�_‰_˜VÓ$€FÜ�W‰W×Ñ˜eŸm™mÓ,€Fä—'‘'—,‘,˜v }Ó5€KÜ—'‘'—,‘,˜v }Ó5€KÜ—'‘'—,‘,˜v }Ó5€KÜ—'‘'—,‘,˜v }Ó5€KÜ×#Ñ#Ó%€Kä×ÑàØð	
ôð —{‘{Ñ€UˆGàˆv‚~Ø�:Š:Ø‰Dà‰DØ	�Ò	Ø˜dŸi™iÑ'‰äÐ+¨dÑ2Ó3Ð3à”:ÑÜØ5×<Ñ<¸TÓBó
ð 	
ð
 Ø ØØñ	€Jð 	ØØ—O‘OÓ%Ø$Ÿ/™/Ó+Ø(Ÿo™oÓ/Ø'Ÿ_™_Ó.ñ
ð€Fð ˆ|ÒØ˜{¨K¸ÐEò 	ˆAÜ�M‰M˜!Õñ	ð	Ü—Z‘Z¤× 3Ñ 3°KÓ @ÓAˆFð �6˜$‘<Ñà'Ÿ_™_Ó.ˆˆt‰�TÑà	�‰€BØ€B€w�KØ	ˆ$�x�Ò  D¡¨*Ò!5ä�‰ØKÜ�tÑô	
ô
 œdŸk™k›mÓ,€B€t�HˆWÑÜÜÙ8¸+×:NÑ:Nó	
ó€Gð
 &-×%8Ñ%8Ó%:Ð"ô ×Ñ˜[¨&Ô1Ü‡M�MÜ
�‰�‰˜ VÓ,¨kÀõð16Ù�d˜DÓ!ˆØÐ)Ñ)Ø#&Ñ ˆZ˜ØÐ%Ü#& z£?��<Ò àˆFà
ˆ4‰�Ñ×!Ñ!°6Ö":¨a¤3 q¥6Ò":Ô;ô(  %¤T§[¡[£]Ó3ˆˆ4‰�ÑØˆˆ7‰ð ")×!4Ñ!4Ó!6ÐØ×ÑÔØ)×.Ñ.Ó0ò 	ˆCØÐ4Ñ4Ü6:ÜØ6°sÑ;Ø0°Ñ5ñ6óó7��4‘Ð-Ñ.¨sÒ3ð 7MØñ7��4‘Ð-Ñ.¨sÒ3ð	ô 	× Ñ  ¨fÔ5àˆÒàˆØ—‘“ò 	7ˆAÜ˜"˜Q™%¤Õ&¨2¨a©5¯9©9°XÕ+>Ø—‘˜b ™eŸi™i¨°"Ó5Õ6ð	7ô 	× Ñ ØØ " \Ñ"2¸fÑEÐFô	
ô 	�‰Ü�G‰G�O‰O˜K¨Ó0°+ÀTõ	
ô ˆr�$‰x˜Ñ!Ó"Ð"øôA ò 	Úð	üòN #;øÜò *Ü�‰Ð'¨Ô.ÜÐ*¨TÑ1Ô2Ø
ˆ4‰�Ñ×!Ñ!¤# a£&×)Ò)ûÜò 	Ið �6Š6ô �M‰MÐ+¨TÔ2ÜÐ.°Ñ5Ô6Øˆt‰H�XÑ×%Ñ%¨	´#°a·f±f³+°¸hÐ&GÔHÿùð	Iûô  %¤T§[¡[£]Ó3ˆˆ4‰�ÑØˆˆ7‰ð ")×!4Ñ!4Ó!6ÐØ×ÑÔØ)×.Ñ.Ó0ò 	ˆCØÐ4Ñ4Ü6:ÜØ6°sÑ;Ø0°Ñ5ñ6óó7��4‘Ð-Ñ.¨sÒ3ð 7MØñ7��4‘Ð-Ñ.¨sÒ3ð	ô 	× Ñ  ¨fÕ5úsc   Ç(R4 Ë':S	 Ì!SÌ3S	 Ò4	SÓ SÓS	 Ó		VÓATÔV ÔVÔ(AVÖV ÖVÖV ÖB.Yr&   c                 óæ   — | j                   re| j                  rX| j                  j                  d«      }t        j
                  j                  |«      s| j                   j                  d¬«       yyyy)zCWrite instance-data.json file if absent and datasource is restored.Úinstance_dataF)Úwrite_cacheN)rÙ   Úds_restoredr²   r  rI   rV   r�   Úpersist_instance_data)r&   Úinstance_data_files     r4   r  r  ç  sX   € à‡‚˜4×+Ò+Ø!ŸZ™Z×3Ñ3°OÓDÐÜ�w‰w�~‰~Ð0Ô1Ø�O‰O×1Ñ1¸eÐ1ÕDð 2ð ,€r5   c           	      ó>  — | j                  «       }t        j                  | j                  |d¬«      \  }}}|r$	 t	        j
                  d| j                  |d«       yy# t        j                  $ r+}t        j                  d||t        |«      «       Y d}~yd}~ww xY w)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.
    T)Úmetadata_onlyÚset_hostnameNzGFailed setting hostname in %s stage. Will retry in %s stage. Error: %s.)
r  r   Úget_hostname_fqdnrn   r   ÚhandleÚSetHostnameErrorr;   rc   rœ   )r&   rö   r÷   ÚcloudÚhostnameÚ_fqdnÚ_rª   s           r4   r  r  ï  s“   € ð �M‰M‹O€EÜ×1Ñ1Ø�‰�% tôÑ€Xˆu�añ ð		Ü×"Ñ" >°4·8±8¸UÀDÕIð øô ×/Ñ/ò 	Ü�I‰Ið1àØÜ�A“÷ñ ûð	ús   º"A ÁBÁ1!BÂBc                 ó”   — t         j                  j                  dj                  t	        t
        j                  «      «      dz   «       y )Nr+   )r-   Ústdoutr/   r±   Úsortedr   ÚFEATURES)rX   rY   s     r4   Úmain_featuresr™    s-   € Ü‡J�J×Ñ�T—Y‘Yœv¤g×&6Ñ&6Ó7Ó8¸4Ñ?Õ@r5   c           
      óh	  — t        j                  «        | st        j                  } t	        j
                  | j                  d«      ¬«      }|j                  ddddt        j                  «       z   d¬«       |j                  d	d
ddd¬«       |j                  ddddd¬«       |j                  ddddd¬«       |j                  d ¬«       |j                  dd¬«      }|j                  dd¬«      }|j                  dddd d¬«       |j                  d!d"d#d$d%t	        j                  d&«      ¬'«       |j                  dt        f¬(«       |j                  d)d*¬«      }t        j                   d+d,d-d.¬/«      j"                  }|j                  d0d1d2d3|› �d4d5¬6«       |j                  d!d"d#d$d%t	        j                  d&«      ¬'«       |j                  d)t$        f¬(«       |j                  d7d8¬«      }|j                  d9d:d2d;d.¬<«       |j                  d=d2d>dt'        t(        j+                  «       «      ¬?«       |j                  d@ddAd¬<«       |j                  dBdCdDdE¬F«       |j                  d!d"d#d$d%t	        j                  d&«      ¬'«       |j                  d7t,        f¬(«       |j                  dGdH¬«      }|j                  dIdJ¬«      }|j                  dIt.        f¬(«       |j                  dKdL¬«      }	|j                  dMdN¬«      }
|j                  dOdP¬«      }|j                  dQdR¬«      }|j                  dSdT¬«      }|j                  dUdV¬«      }| �rt1        dW„ | D «       d «      }|dKk(  rddXlm}  ||	«       nø|dMk(  rddXlm}  ||
«       nä|dOk(  r&ddYlm}m}  ||¬Z«       |j                  dO|f¬(«       n¹|dQk(  r%dd[lm}m}  ||«       |j                  dQ|f¬(«       n�|dGk(  r%dd\l m}m!}  ||«       |j                  d]|f¬(«       ne|dUk(  r%dd^l"m}m#}  ||«       |j                  dU|f¬(«       n;|dSk(  r6dd_l$m}m%}  ||«       |j                  dS|f¬(«       n|jM                  d`«       |jO                  | ¬a«      }tQ        |dbd«       |jR                  stU        |«      S tS        |«      S )cNr   )Úprogz	--versionz-vr   z	%(prog)s z'Show program's version number and exit.)r<   r   Úhelpz--debugz-dÚ
store_truez:Show additional pre-action logging (default: %(default)s).F)r<   rœ  Údefaultz--forcezDForce running even if no datasource is found (use at your own risk).r  )r<   rœ  Údestrž  z--all-stagesÚ
all_stageszsRun cloud-init's stages under a single process using a syncronization protocol. This is not intended for CLI usage.)rŸ  r<   rœ  rž  rÿ   ÚSubcommandsÚ
subcommand)ÚtitlerŸ  r&   z2Initialize cloud-init and perform initial modules.)rœ  ú--localz-lz+Start in local mode (default: %(default)s).z--filez-frU   rT   z(Use additional yaml configuration files.Úrb)r<   rŸ  rœ  ÚtyperE   rT  z1Activate modules using a given configuration key.z`init`rG  rH  Tr„   z--modez-mÚstorez9Module configuration name to use (default: %(default)s). rû   )r&   rû   Úfinal)r<   rœ  rž  ÚchoicesÚsinglezRun a single module.z--namez-nzModule name to run.)r<   rœ  Úrequiredz--frequencyzModule frequency for this run.)r<   rœ  r«  r©  z--reportzEnable reporting.rK  Ú*Úargumentz0Any additional arguments to pass to this module.)ÚnargsÚmetavarrœ  Úqueryz;Query standardized instance metadata from the command line.r   zList defined features.Úanalyzez-Devel tool: Analyze cloud-init logs and data.ÚdevelzRun development tools.zcollect-logsz*Collect and tar all cloud-init debug info.Úcleanz3Remove logs and artifacts so cloud-init can re-run.r~  z/Report cloud-init status or wait on completion.Úschemaz-Validate cloud-config files using jsonschema.c              3   óD   K  — | ]  }|j                  d «      rŒ|–— Œ y­w)ú-N)r�   )Ú.0Úposargs     r4   ú	<genexpr>zmain.<locals>.<genexpr>»  s   è ø€ ÒJ˜°6×3DÑ3DÀSÕ3IŒVÑJùs   ‚ ™ )Ú
get_parser)rº  Úhandle_collect_logs_args)Úparser)rº  Úhandle_clean_args)rº  Úhandle_argsÚrender)rº  Úhandle_schema_args)rº  Úhandle_status_argsza subcommand is required©rY   r  )+r   Úconfigure_root_loggerr-   ÚargvÚargparseÚArgumentParserÚpopÚadd_argumentr   rC   Úset_defaultsÚadd_subparsersÚ
add_parserÚFileTyper7  r   r›   ÚmessagerI  r>  rM  rr  rR  r™  r—   Úcloudinit.analyzerº  Úcloudinit.cmd.devel.parserÚcloudinit.cmd.devel.logsr»  Úcloudinit.cmd.cleanr½  Úcloudinit.cmd.queryr¾  Úcloudinit.config.schemarÀ  Úcloudinit.cmd.statusrÁ  ÚerrorÚ
parse_argsÚsetattrr   Úsub_main)Ú	sysv_argsr¼  Ú
subparsersÚparser_initÚ
parser_modÚ
extra_helpÚparser_singleÚparser_queryÚparser_featuresÚparser_analyzeÚparser_develÚparser_collect_logsÚparser_cleanÚparser_statusÚparser_schemar¢  Úanalyze_parserÚdevel_parserÚlogs_parserr»  Úclean_parserr½  Úquery_parserÚhandle_query_argsÚschema_parserrÀ  Ústatus_parserrÁ  rY   s                                r4   Úmainrï  
  sË  € Ü×!Ñ!Ô#ÙÜ—H‘Hˆ	Ü×$Ñ$¨)¯-©-¸Ó*:Ô;€Fð ×ÑØØØØœw×5Ñ5Ó7Ñ8Ø6ð ô ð ×ÑØØØØIØð ô ð ×ÑØØð-ð Øð ô 	ð ×ÑØØØðKð ð ô 	ð ×Ñ ÐÔ&Ø×&Ñ&¨]ÀÐ&ÓN€Jð ×'Ñ'ØÐIð (ó €Kð ×ÑØØØØ:Øð ô ð ×ÑØØØØØ7Ü×Ñ˜tÓ$ð ô ð ×Ñ V¬YÐ$7ÐÔ8ð ×&Ñ&ØÐKð 'ó €Jô ×$Ñ$ØØ!Ø6Øô	÷
 �gð ð ×ÑØØØðØˆ|ðð Ø+ð ô 
ð ×ÑØØØØØ7Ü×Ñ˜tÓ$ð ô ð ×Ñ I¬|Ð#<ÐÔ=ð ×)Ñ)ØÐ-ð *ó €Mð ×ÑØØØØ"Øð ô ð ×ÑØØØ-ØÜÔ%×*Ñ*Ó,Ó-ð ô ð ×ÑØØØ Øð	 ô ð ×ÑØØØØ?ð	 ô ð ×ÑØØØØØ7Ü×Ñ˜tÓ$ð ô ð ×Ñ x´Ð&=ÐÔ>à×(Ñ(ØØJð )ó €Lð
 !×+Ñ+ØÐ1ð ,ó €Oð × Ñ ¨´]Ð(CÐ ÔDà×*Ñ*ØÐGð +ó €Nð ×(Ñ(ØÐ.ð )ó €Lð %×/Ñ/ØÐIð 0ó Ðð ×(Ñ(ØÐKð )ó €Lð ×)Ñ)ØÐHð *ó €Mð ×)Ñ)ØÐFð *ó €Mò äÙJ )ÔJØó
ˆ
ð ˜Ò"ÝFñ ˜>Õ*Ø˜7Ò"ÝMñ ˜Õ&Ø˜>Ò)÷ñ
 Ð2Õ3Ø×,Ñ,Ø&Ð(@ÐAð -õ ð ˜7Ò"÷ñ
 ˜Ô&Ø×%Ñ%¨gÐ7HÐ-IÐ%ÕJØ˜7Ò"÷ñ
 ˜Ô&Ø×%Ñ%¨hÐ8IÐ-JÐ%ÕKØ˜8Ò#÷ñ
 ˜-Ô(Ø×&Ñ&¨xÐ9KÐ.LÐ&ÕMØ˜8Ò#÷ñ
 ˜-Ô(Ø×&Ñ&¨xÐ9KÐ.LÐ&ÕMà�‰Ð/Ô0à×Ñ )ÐÓ,€DÜˆDÐ" EÔ*Ø�?Š?Ü˜‹~ÐÜ�fÓÐr5   c                 óÎ  — t         j                  d«       t        j                  dddd«      }t        j                  d«        |d«      5  | j                  ddg¬	«      }d
|_        t        |«      |_        ddd«        |d«      5  | j                  dg¬	«      }d|_        t        |«      |_        ddd«        |d«      5  | j                  ddg¬	«      }d|_        t        |«      |_        ddd«        |d«      5  | j                  ddg¬	«      }d|_        t        |«      |_        ddd«       |j                  rLd}|j                  rd|j                  › �}t        j                  d|› d�«       t        j                  d«       yt        j                  d«       t        j                  d«       y# 1 sw Y   �Œ@xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒâxY w# 1 sw Y   Œ²xY w)z>Run all stages in a single process using an ordering protocol.z*Running cloud-init in single process mode.r¿   r    rû   r¨  zREADY=1r&   r¤  rÂ  FNTrT  z--mode=configz--mode=finalz%a stage of cloud-init exited non-zerozfirst exception received: zSTATUS=Completed with failure, z2. Run 'cloud-init status --long' for more details.z
STOPPING=1r�   zSTATUS=Completed)r;   r·   r   Ú
SocketSyncÚ	sd_notifyrÖ  r  rØ  Úsystemd_exit_codeÚexperienced_any_errorÚfirst_exception)r¼  ÚsyncrY   rÍ  s       r4   r   r   ü  sÖ  € ä‡H�HÐ9Ô:ô ×Ñ˜W i°¸7ÓC€Dô ×Ñ�YÔá	ˆg‹ñ 0à× Ñ  v¨yÐ&9Ð Ó:ˆØ#ˆÔä!)¨$£ˆÔ÷0ñ 
ˆi‹ñ 0à× Ñ  v hÐ Ó/ˆØ"ˆÔä!)¨$£ˆÔ÷0ñ 
ˆh‹ñ 0à× Ñ  y°/Ð&BÐ ÓCˆØ"ˆÔä!)¨$£ˆÔ÷0ñ 
ˆg‹ñ 0à× Ñ  y°.Ð&AÐ ÓBˆØ"ˆÔä!)¨$£ˆÔ÷0ð ×!Ò!Ø9ˆØ×ÒØ2°4×3GÑ3GÐ2HÐIˆGÜ×ÑØ-¨g¨Yð 7)ð )ô	
ô 	×Ñ˜Ô&àä×ÑÐ+Ô,Ü×Ñ˜Õ&÷[0ñ 0ú÷0ñ 0ú÷0ð 0ú÷0ð 0ús0   Á,F5Â+GÃ,GÃ>,GÆ5F?ÇGÇGÇG$c                 óž  — | j                   \  }}|dvr@t        j                  | j                  rt        j
                  nt        j                  «       n | j                  rt        j                  «        t        j                  «        d|k(  sd|k(  rd| j                  k7  rt        }d }d}|dk(  r| j                  rd\  }}ncd\  }}n]|dk(  rd| j                  z  d| j                  z  }}n9|d	k(  r+d
| j                  z  d| j                  z  }}| j                  }n	|}d|z  }d}t        j                  |||¬«      | _        | j                   5  t#        j$                  d|› d�«      5   ||| «      }d d d «       d d d «       t'        j(                  «        d|k(  rd| j                  k(  rt+        «      }S # 1 sw Y   ŒFxY w# 1 sw Y   ŒJxY w)N)r&   rT  r&   rT  T)r%   zsearching for local datasources)zinit-networkz!searching for network datasourcesrU  zrunning modules for %srª  z	single/%szrunning single module %szrunning 'cloud-init %s'F)Úreporting_enabledzcloud-init stage: 'r_   )r<   r   Úsetup_basic_loggingrc   r�   rŽ   rÒ   r	   Úattach_handlersrŠ   r„  r¿   rX   Úreportr   ÚReportEventStackrè   r   ÚTimedr   Úflush_eventsrb   )rY   rX   r|  ÚrnameÚ	report_onÚrdescÚretvals          r4   rØ  rØ  7  s¾  € ð —k‘k�O€Tˆ7ð Ð&Ñ&Ü×#Ñ#Ø!ŸZšZŒG�MŠM¬W¯_©_õ	
ð 
�ŠÜ×#Ñ#Ô%ô ×"Ñ"Ô$ð
 �‚~˜) tÒ+°¸$¿)¹)Ò0CÜ ˆà€EØ€IØˆv‚~Ø�:Š:ØL‰LˆE‘5ð‰LˆE‘5ð 
�Ò	à˜4Ÿ9™9Ñ$Ø$ t§y¡yÑ0ð ‰ð 
�Ò	à˜$Ÿ)™)Ñ#Ø&¨¯©Ñ2ð ˆð —K‘K‰	àˆØ)¨DÑ0ˆØˆ	ä×+Ñ+Øˆu¨	ô€D„Mð 
�‰ñ )Ü×ÑÐ!4°U°G¸1Ð=Ó>ñ 	)Ù˜T 4Ó(ˆF÷	)÷)ô ×ÑÔð �DÒ˜V t§y¡yÒ0Ü�V“ˆà€M÷	)ð 	)ú÷)ð )ús$   ÅGÅ(
F7Å2GÆ7G 	Æ<GÇGÚ__main__)rÈ   rS   ))r‰   r}   )TN)ZrÅ  rf  rI   r-   r0   r�   rÏ   Útypingr   r   r   r   Ú	cloudinitr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Úcloudinit.logr   r   Úcloudinit.cmd.develr   Úcloudinit.configr   Úcloudinit.config.modulesr   rÓ  r   Úcloudinit.lifecycler   Úcloudinit.reportingr   Úcloudinit.settingsr   r   r    r!   rœ   ÚReasonrA   r`   rM  rc  r`  Ú__name__r;   r1   r=   r9   Útimedrc   rQ   r\   rj   ro   rw   Úintr«   r»   rÀ   ÚbytesÚboolrØ   Ú
DataSourcerä   r7  r$  rI  rR  r„  r  r  r  r™  rï  r   rØ  ÚexitrÄ  r‹   r5   r4   ú<module>r     s  ðó Û Û 	Û 
Û Û Û ß 3Ó 3ç 'Ý $Ý Ý Ý Ý  Ý Ý !Ý Ý Ý Ý #Ý Ý ß +Ý .Ý ,Ý ,Ý ?Ý ;Ý &÷ó ð 
€ð(ð ð %€ð
 ØØñÐ ð  ØØ$Ø"ñ	€
ð €g×Ñ˜Ó!€ó
óòð €×Ñ�?Ó#Ø03·	±	ñ 5˜ # ¨ Ñ-ò 5ó $ð5ò
ð˜Wó ò&=ó
Kñj¸UÀ3ÈÀ8¹_ó jòZEò<ð8MØ˜˜s E˜zÑ*Ñ+ð8Mà
ˆ4�ˆ<Ñó8Mðv"Ø˜×+Ñ+Ñ,ð"à
ˆ4�ˆ<Ñó"òJuCòp/òd>0òBCòLX#ðvE v§{¡{ó Eòò.Aóoòd8'òvBðJ ˆzÒØ€C‡H�H‰T�#—(‘(‹^Õð r5   