
    x[h*              
       d   % S 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	J
r
  SSKrSSKJrJrJrJr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  SrS/rSr S\/\S/S.r!\\"S'   \RF                  " \$5      r% " S S5      r&S\S\'4S jr(S r)\SSS4S\4S jjr*S\'S\S\S\+SS4
S  jr,g)!z+Puppet: Install, configure and start puppet    N)suppress)StringIO)ListUnion)helperssubp
temp_utils
url_helperutil)Cloud)Config)
MetaSchema)ALL_DISTROSDistroPackageInstallerError)PER_INSTANCEzKhttps://raw.githubusercontent.com/puppetlabs/install-puppet/main/install.shz--test)puppet-agentpuppet	cc_puppetr   )iddistros	frequencyactivate_by_schema_keysmetac                       \ rS rSrS rSrg)PuppetConstants)   c                     Xl         X l        [        R                  R	                  US5      U l        [        R                  R	                  U R
                  S5      U l        X0l        g )Ncertszca.pem)	conf_pathssl_dirospathjoinssl_cert_dirssl_cert_pathcsr_attributes_path)selfpuppet_conf_filepuppet_ssl_dirr'   s       </usr/lib/python3/dist-packages/cloudinit/config/cc_puppet.py__init__PuppetConstants.__init__*   sH     *%GGLLAWW\\$*;*;XF#6     )r    r'   r%   r&   r!   N)__name__
__module____qualname____firstlineno__r,   __static_attributes__ r.   r+   r   r   )   s    
7r.   r   cloudactionc                     Sn[          H$  n U R                  R                  X S35        Un  O   U(       d+  [
        R                  SUSR                  [         5      5        gg! [        R                   a     Mr  f = f)z8Attempts to perform action on one of the puppet services z.servicez0Could not '%s' any of the following services: %s, N)PUPPET_PACKAGE_NAMESdistromanage_servicer   ProcessExecutionErrorLOGwarningr$   )r5   r6   service_managedpuppet_names       r+   _manage_puppet_servicesrB   7   sz    O+	LL''-x0HI)O	 , >II*+	
  )) 		s    A$$A<;A<c                 Z    [         R                   " U SSU/5      u  p#UR                  5       $ )zGet the config value for a given setting using `puppet config print`
:param puppet_bin: path to puppet binary
:param setting: setting to query
configprint)r   rstrip)
puppet_binsettingout_s       r+   get_config_valuerK   I   s)    
 YY
Hgw?@FC::<r.   Tr;   c                    / nUb  SU/nUb  USU/-  nU(       a  US/-  n[         R                  " USS9R                  n[        R                  " U R                  5       SS9 n[        R                  R                  US	5      n[        R                  " XS
S9  [        R                  " U/U-   SS9sSSS5        $ ! , (       d  f       g= f)a{  Install puppet-agent from the puppetlabs repositories using the one-shot
shell script

:param distro: Instance of Distro
:param url: URL from where to download the install script
:param version: version to install, blank defaults to latest
:param collection: collection to install, blank defaults to latest
:param cleanup: whether to purge the puppetlabs repo after installation
Nz-vz-cz	--cleanup   )urlretriesT)dir	needs_exezpuppet-installi  )modeFcapture)r
   readurlcontentsr	   tempdirget_tmp_exec_pathr"   r#   r$   r   
write_filer   )	r;   rN   version
collectioncleanupargscontenttmpdtmpfs	            r+   install_puppet_aiora   R   s      Dgz""   S!4==G 
		$$&$
	ww||D"23E2yy$$6
 
 
s   #AB;;
C	namecfgr]   returnc                 &   SU;  a  [         R                  SU 5        g US   n[        R                  " USS5      n[        R                  " USS 5      n[        R                  " USS 5      n[        R                  " USS5      n[        R                  " US	S5      n	[        R                  " US
SS9n
[        R                  " USSS9n[        R                  " US[
        S9nUS:X  a  SnSnSnOSnSnS n[        R                  " USU5      nU(       d  U(       a  [         R                  S5        GOU(       Ga  [         R                  SU(       a  UOSU5        US:X  a  Uc  [         HH  n[        [        5         U(       a  UU//OU/nUR                  R                  U5        Un S S S 5          O   U(       d)  [         R                  SSR                  [        5      5        OaU(       a  UU//OU/nUR                  R                  U5        O6US:X  a  [        UR                  XXy5        O[         R                  SU5        Sn
[        R                  " US[        US5      5      n[        R                  " US[        US5      5      n[        R                  " US[        US5      5      n[        UUU5      nS U;   Gaj  [        R                   " UR"                  5      n[$        R&                  " 5       nUR)                  5        Vs/ s H  nUR+                  5       PM     nnS!R                  U5      nUR-                  [/        U5      UR"                  S"9  US    R1                  5        GH  u  nnUS#:X  a  [        R2                  " UR4                  S$5        [        R6                  " UR4                  US5        [        R2                  " UR8                  5        [        R6                  " UR8                  US5        [        R:                  " UR<                  U5        [        R6                  " UR<                  US5        OUR1                  5        Ht  u  nnUS%:X  aU  UR?                  S&[@        RB                  " 5       5      nUR?                  S'URE                  5       5      nURG                  5       nURI                  UUU5        Mv     [        RJ                  " UR"                  S(UR"                  -  5        [        R:                  " UR"                  URM                  5       5        GM     SU;   a7  [        R:                  " URN                  [P        RR                  " US   SS)95        U(       a  [U        US*5        U
(       a  [         R                  S+5        US,/nS-U;   a  US-   n [W        U [X        [Z        45      (       a  UR]                  U 5        O[W        U [^        5      (       a   UR]                  U Ra                  5       5        OJ[         R                  S.[c        U 5      5        UR]                  [d        5        OUR]                  [d        5        [f        Rf                  " USS/9  U(       a  [U        US05        g g ! , (       d  f       GM#  = fs  snf )1Nr   z9Skipping module named %s, no 'puppet' configuration foundinstallTrZ   r[   install_typepackagesr\   execF)defaultstart_serviceaio_install_urlaiorootz/opt/puppetlabs/bin/puppetr   package_namez@Puppet install set to false but version supplied, doing nothing.z'Attempting to install puppet %s from %slatestz+No installable puppet package in any of: %sr9   z Unknown puppet install type '%s'	conf_filerD   r!   ssldirr'   csr_attributesconf
)sourceca_certi  certnamez%fz%iz%s.old)default_flow_styleenablezRunning puppet-agentagent	exec_argszOUnknown type %s provided for puppet 'exec_args' expected list, tuple, or stringrS   start)4r>   debugr   get_cfg_option_boolget_cfg_option_strAIO_INSTALL_URLr?   r:   r   r   r;   install_packagesr$   ra   rK   r   load_text_filer    r   DefaultingConfigParser
splitlineslstrip	read_filer   items
ensure_dirr!   chownbynamer%   rY   r&   replacesocketgetfqdnget_instance_idlowersetrename	stringifyr'   yamldumprB   
isinstancelisttupleextendstrsplittypePUPPET_AGENT_DEFAULT_ARGSr   )!rb   rc   r5   r]   
puppet_cfgrf   rZ   r[   rg   r\   runstart_puppetdrl   puppet_userrG   puppet_packagero   rA   
to_installrq   r!   r'   p_constantsrV   puppet_configicleaned_linescleaned_contentscfg_nameovcmdcmd_argss!                                    r+   handler   v   s   s		G	
 	XJ&&z9dCG%%j)TBG((\4HJ**NJL &&z9dCG

"
":vu
EC,,OTM --%O
 u1
'
**NNL wN	
 
		5GH	
 :%##7K!"78  ' *734"- #
 55jA'2 98 $8 $KKE		"67 29lG,-|n  --j9U"o
 KK:LIC''K!1*h!GI %%I/
HEG 11%56 ")W6IJK &&{'<'<=668 .6-@-@-BC-B-BC99]3%&{/D/D 	  	
 (/557MHc 9$  3 3U;  !4!4k6J 8 89  !9!9;O 9 93?  --{F  IIKDAqJ IIdFNN,<=IIdE,A,A,CDGGI!%%h15 ( KK%%x;3H3H'I OOK11=3J3J3LMC 8F :%++IIj!12uM	

 x0 		()7#*$!+.H(T5M22

8$Hc**

8>>+,! N	 

45JJ01		#u%w/ w 98f Ds   :.Y;Z;
Z	)-__doc__loggingr"   r   
contextlibr   ior   typingr   r   r   	cloudinitr   r   r	   r
   r   cloudinit.cloudr   cloudinit.configr   cloudinit.config.schemar   cloudinit.distrosr   r   r   cloudinit.settingsr   r   r   r:   r   __annotations__	getLoggerr/   r>   r   r   rB   rK   ra   r   r   r4   r.   r+   <module>r      s    2  	      A A ! # . H H +_%J 1  } (z	j  !7 7
5 
# 
$ 	!7!7Hr0 r06 r0% r0t r0 r0r.   