
    x[h*              
       \   U d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlZddlmZmZmZmZ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 ddlmZ dZdgZdZ degedgdZ!ee"d<    ejF                  e$      Z% G d d      Z&dede'fdZ(d Z)edddfdefdZ*de'dedede+ddf
d Z,y)!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                       e Zd Zd Zy)PuppetConstantsc                     || _         || _        t        j                  j	                  |d      | _        t        j                  j	                  | j
                  d      | _        || _        y )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__zPuppetConstants.__init__*   sN     *%GGLLAWW\\$*;*;XF#6     N)__name__
__module____qualname__r+    r,   r*   r   r   )   s    
7r,   r   cloudactionc                     d}t         D ]%  }	 | j                  j                  || d       |} n |s+t
        j                  d|dj                  t                      yy# t        j                  $ r Y kw xY w)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#   )r1   r2   service_managedpuppet_names       r*   _manage_puppet_servicesr>   7   s    O+ 	LL'';-x0HI)O	 >II*+	
  )) 		s   !AA54A5c                 Z    t        j                   | dd|g      \  }}|j                         S )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_valuerG   I   s+    
 YY
Hgw?@FC::<r,   Tr7   c                    g }|d|g}||d|gz  }|r|dgz  }t        j                  |d      j                  }t        j                  | j                         d      5 }t        j                  j                  |d	      }t        j                  ||d
       t        j                  |g|z   d      cddd       S # 1 sw Y   yxY w)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   )	r7   rJ   version
collectioncleanupargscontenttmpdtmpfs	            r*   install_puppet_aior]   R   s      Dgz""   S!4==G 
		$$&$
 7	ww||D"23gE2yy$$67 7 7s    AB==CnamecfgrY   returnc                 f   d|vrt         j                  d|        y |d   }t        j                  |dd      }t        j                  |dd       }t        j                  |dd       }t        j                  |dd      }t        j                  |d	d      }	t        j                  |d
d      }
t        j                  |dd      }t        j                  |dt
              }|dk(  rd}d}d}nd}d}d }t        j                  |d|      }|s|rt         j                  d       n|rt         j                  d|r|nd|       |dk(  r|xt        D ]C  }t        t              5  |r||ggn|g}|j                  j                  |       |}	 d d d         n |st         j                  ddj                  t                     n]|r||ggn|g}|j                  j                  |       n7|dk(  rt        |j                  ||||	       nt         j                  d|       d}
t        j                  |dt        |d            }t        j                  |dt        |d            }t        j                  |dt        |d            }t        |||      }d |v rYt        j                   |j"                        }t%        j&                         }|j)                         D cg c]  }|j+                          }}d!j                  |      }|j-                  t/        |      |j"                  "       |d    j1                         D ]  \  }}|d#k(  rt        j2                  |j4                  d$       t        j6                  |j4                  |d       t        j2                  |j8                         t        j6                  |j8                  |d       t        j:                  |j<                  |       t        j6                  |j<                  |d       n|j1                         D ]q  \  }}|d%k(  rT|j?                  d&tA        jB                               }|j?                  d'|jE                               }|jG                         }|jI                  |||       s t        jJ                  |j"                  d(|j"                  z         t        j:                  |j"                  |jM                                 d|v r8t        j:                  |jN                  tQ        jR                  |d   d)             |rtU        |d*       |
rt         j                  d+       |d,g}d-|v r|d-   } tW        | tX        tZ        f      r|j]                  |        nztW        | t^              r |j]                  | ja                                nJt         j                  d.tc        |              |j]                  td               n|j]                  td               tg        jf                  |d/       |rtU        |d0       y y # 1 sw Y   xY wc c}w )1Nr   z9Skipping module named %s, no 'puppet' configuration foundinstallTrV   rW   install_typepackagesrX   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: %sr5   z Unknown puppet install type '%s'	conf_filer@   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 stringrO   start)4r:   debugr   get_cfg_option_boolget_cfg_option_strAIO_INSTALL_URLr;   r6   r   r   r7   install_packagesr#   r]   rG   r   load_text_filer   r   DefaultingConfigParser
splitlineslstrip	read_filer   items
ensure_dirr    chownbynamer$   rU   r%   replacesocketgetfqdnget_instance_idlowersetrename	stringifyr&   yamldumpr>   
isinstancelisttupleextendstrsplittypePUPPET_AGENT_DEFAULT_ARGSr   )!r^   r_   r1   rY   
puppet_cfgrb   rV   rW   rc   rX   runstart_puppetdrh   puppet_userrC   puppet_packagerk   r=   
to_installrm   r    r&   p_constantsrR   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	
 :%##7 	K!"78   ' *734"- #
 55jA'2 	 $KKE		"67 29lG,-|n  --j9U"ow
G 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CC99]3%&{/D/D 	  	
 (/557 !	NMHc 9$  3 3U;  !4!4k6J 8 89  !9!9;O 9 93?  --{F  IIK 	6DAqJ IIdFNN,<=IIdE,A,A,CDGGI!%%h15	6 KK%%x;3H3H'I OOK11=3J3J3LMC!	NF :%++IIj!12uM	

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

8$Hc*

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

45JJ01		#u%w/ w f Ds   )X!X.!X+	)-__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   r6   r   __annotations__	getLoggerr-   r:   r   r   r>   rG   r]   r   r   r0   r,   r*   <module>r      s    2  	      A A ! # . H H +_%J 1  } (z	j  g!7 7
5 
# 
$ 	!7!7Hr0 r06 r0% r0t r0 r0r,   