ó
    x[hˆ  ã                   óê   • S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJrJrJr  SS	KJrJrJrJrJr  S
r\SSSSS/rS/rSS jrSS jrS rS r\ S:X  a  \" 5         gg)zFDefine 'clean' utility and handler as part of cloud-init command line.é    N)Úsettings)Úuses_systemd)Úlog_util)ÚCLOUDINIT_NETPLAN_FILE)ÚInit)ÚProcessExecutionErrorÚrunpartsÚsubp)Údel_dirÚdel_fileÚget_config_logfilesÚis_linkÚ
write_filez/etc/machine-idz-/etc/NetworkManager/conf.d/99-cloud-init.confz?/etc/NetworkManager/conf.d/30-cloud-init-ip6-addr-gen-mode.confz@/etc/NetworkManager/system-connections/cloud-init-*.nmconnectionz,/etc/systemd/network/10-cloud-init-*.networkz+/etc/network/interfaces.d/50-cloud-init.cfgz)/etc/ssh/sshd_config.d/50-cloud-init.confc           
      ó  • U (       d  [         R                  " SSS9n U R                  SSSSSS	S
9  U R                  SSSSS9  U R                  SSSSSS9  U R                  SSSSSSS
9  U R                  SS/ SQ/ SSSS9  U $ )a  Build or extend an arg parser for clean utility.

@param parser: Optional existing ArgumentParser instance representing the
    clean subcommand which will be extended to support the args of
    this utility.

@returns: ArgumentParser with proper argument configuration.
ÚcleanzJRemove logs, configs and artifacts so cloud-init re-runs on a clean system)ÚprogÚdescriptionz-lz--logsÚ
store_trueFÚremove_logszRemove cloud-init logs.)ÚactionÚdefaultÚdestÚhelpz--machine-idz§Set /etc/machine-id to 'uninitialized
' for golden imagecreation. On next boot, systemd generates a new machine-id. Remove /etc/machine-id on non-systemd environments.)r   r   r   z-rz--rebootz;Reboot system after logs are cleaned so cloud-init re-runs.z-sz--seedÚremove_seedz5Remove cloud-init seed directory /var/lib/cloud/seed.z-cz	--configs)ÚallÚ
ssh_configÚnetworkÚ+Úremove_configzbRemove cloud-init generated config files of a certain type. Config types: all, ssh_config, network)Úchoicesr   Únargsr   r   )ÚargparseÚArgumentParserÚadd_argument©Úparsers    Ú5/usr/lib/python3/dist-packages/cloudinit/cmd/clean.pyÚ
get_parserr(   *   sì   € ö Ü×(Ò(Øð$ñ
ˆð ×ÑØØØØØØ&ð ñ ð ×ÑØØØðCð ñ 	ð ×ÑØØØØØJð ñ ð ×ÑØØØØØØDð ñ ð ×ÑØØò
ð
 ØØð2ð ñ ð €Mó    c           
      óö  • U R                  5         U(       a'  [        U R                  5       H  n[        U5        M     U(       aV  [	        U5      R                  SS/5      (       a5  [         H+  n[        R                  " U5       H  n[        U5        M     M-     U(       a9  [	        U5      R                  SS/5      (       a  [         H  n[        U5        M     [        R                  R                  U R                  R                  5      (       d  g[        R                  R                  U R                  R                  S5      n[        R                  " SU R                  R                  -  5       H^  nXW:X  a	  U(       d  M   [        R                  R                  U5      (       a  [        U5      (       d  [!        U5        MS  [        U5        M`      [-        [.        R0                  5        g! ["         a:  n[$        R&                  " SR)                  U[+        U5      5      5         SnA  g	SnAff = f! [2         a4  n[$        R&                  " S
[.        R0                   SU 35         SnAg	SnAff = f)a’  Helper which removes artifacts dir and optionally log files.

@param: init: Init object to use
@param: remove_logs: Boolean. Set True to delete the cloud_dir path. False
    preserves them.
@param: remove_seed: Boolean. Set True to also delete seed subdir in
    paths.cloud_dir.
@param: remove_config: List of strings.
    Can be any of: all, network, ssh_config.
@returns: 0 on success, 1 otherwise.
r   r   r   r   Úseedz%s/*zCould not remove {0}: {1}Né   zFailure during run-parts of z: )Úread_cfgr   Úcfgr   ÚsetÚintersectionÚGEN_NET_CONFIG_FILESÚglobÚGEN_SSH_CONFIG_FILESÚosÚpathÚisdirÚpathsÚ	cloud_dirÚjoinr   r   ÚOSErrorr   ÚerrorÚformatÚstrr	   r   ÚCLEAN_RUNPARTS_DIRÚ	Exception)	Úinitr   r   r   Úlog_filer5   ÚconfÚ	seed_pathÚes	            r'   Úremove_artifactsrE   m   sÁ  € ð 	‡M�M„OÞÜ+¨D¯H©HÖ5ˆHÜ�XÖñ 6æœ˜]Ó+×8Ñ8¸%ÀÐ9K×LÑLß(ˆDÜŸ	š	 $ž�Ü˜–ó (ñ )ö œ˜]Ó+×8Ñ8Ø	�Ð÷ñ ÷ )ˆDÜ�TŽNñ )ô �7‰7�=‰=˜Ÿ™×-Ñ-×.Ñ.ØÜ—‘—‘˜TŸZ™Z×1Ñ1°6Ó:€IÜ—	’	˜& 4§:¡:×#7Ñ#7Ñ7Ö8ˆØÓ¦[Ùð	Ü�w‰w�}‰}˜T×"Ñ"¬7°4¯=©=Ü˜–ä˜–ñ 9ðÜ”×,Ñ,Ô-ð øô ó 	Ü�NŠNÐ6×=Ñ=¸dÄCÈÃFÓKÔLÝûð	ûô
 ó Ü�ŠØ*¬8×+FÑ+FÐ*GÀrÈ!ÈÐMô	
ô ûð	ús6   Æ?G3Ç	G3ÇH: Ç3
H7Ç=/H2È2H7È:
I8É*I3É3I8c           	      óü  • [        / S9n[        X!R                  UR                  UR                  5      nUR
                  (       a.  [        5       (       a  [        [        SSS9  O[        [        5        US:X  a9  UR                  (       a(  UR                  R                  SSSS	9n [        US
S9  U$ U$ ! [         a<  n[        R                   " SR#                  U[%        U5      5      5        Sn SnAU$ SnAff = f)z3Handle calls to 'cloud-init clean' as a subcommand.)Úds_depszuninitialized
i$  )Úmoder   ÚrebootÚnowN)rH   ÚdelayÚmessageF)Úcapturez-Could not reboot this system using "{0}": {1}r,   )r   rE   r   r   r   Ú
machine_idr   r   ÚETC_MACHINE_IDr   rI   ÚdistroÚshutdown_commandr
   r   r   r;   r<   r=   )ÚnameÚargsr@   Ú	exit_codeÚcmdrD   s         r'   Úhandle_clean_argsrV   Ÿ   sá   € ä˜Ñ€DÜ Ø×Ñ × 0Ñ 0°$×2DÑ2Dó€Ið ‡‡Ü�>‰>ä”~Ð'8¸uÓEô ”^Ô$Ø�Aƒ~˜$Ÿ+Ÿ+Ø�k‰k×*Ñ*Ø °ð +ð 
ˆð	Ü�˜eÒ$ð Ðˆ9Ðøô %ó 	Ü�NŠNØ?×FÑFØœ˜Q›óôð
 ŒIØÐûð	ús   Â'
B5 Â5
C;Â?1C6Ã6C;c                  ót   • [        5       n [        R                  " [        SU R	                  5       5      5        g)z4Tool to collect and tar all cloud-init related logs.r   N)r(   ÚsysÚexitrV   Ú
parse_argsr%   s    r'   Úmainr[   ¼   s&   € ä‹\€FÜ‡H‚HÔ˜w¨×(9Ñ(9Ó(;Ó<Õ=r)   Ú__main__)N)FN)!Ú__doc__r"   r2   r4   rX   Ú	cloudinitr   Úcloudinit.distrosr   Úcloudinit.logr   Úcloudinit.net.netplanr   Úcloudinit.stagesr   Úcloudinit.subpr   r	   r
   Úcloudinit.utilr   r   r   r   r   rO   r1   r3   r(   rE   rV   r[   Ú__name__© r)   r'   Ú<module>rg      s�   ðñ Mã Û Û 	Û 
å Ý *Ý "Ý 8Ý !ß @Ñ @÷õ ð #€àØ3ØEØFØ2Ø1ðÐ ð 0ðÐ ô
@ôF/òdò:>ð ˆzÓÙ…Fð r)   