+
    ˜qgj”@  ã                   óä   a € R t0 t R t^ RIt^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ]P                  ! ]4      tRRR	R
R.R]RR./t] ^ k R R lt ! R R]4      t ! R R4      tRR ltR# )zDRed Hat Subscription: Register Red Hat Enterprise Linux based systemN)ÚsubpÚutil)ÚCloud)ÚConfig)Ú
MetaSchema)ÚPER_INSTANCEÚidÚcc_rh_subscriptionÚdistrosÚfedoraÚrhelÚ	frequencyÚactivate_by_schema_keysÚrh_subscriptionc          
      óL   € V ^8„  d   QhR\         R\        R\        R\        RR/# )é   ÚnameÚcfgÚcloudÚargsÚreturnN)Ústrr   r   Úlist)Úformats   "ÚE/usr/lib/python3/dist-packages/cloudinit/config/cc_rh_subscription.pyÚ__annotate__r      s/   € ÷ 71ñ 71”ð 71œ6ð 71¬%ð 71´tð 71Àñ 71ó    c                 ó  € \        V4      pVP                  4       '       g   \        P                  R V 4       R# VP	                  4       '       EgÕ    VP                  4       w  rVVRJd   \        V4      hVP                  4       pV'       g   \        R4      hVP                  '       dF   VP                  e8   VP                  4       '       g   \        R4      h\        P                  R4       MHVP                  '       d7   VP                  4       '       g   \        R4      h\        P                  R4       VP                  eu   \        VP                  \        4      '       g   Rp\        V4      hVP                  VP                  4      p	V	'       g%   \        R	P!                  VP                  4      4      hVP#                  4       p	V	'       g   \        R
4      hVP$                  '       d!   VP'                  4        VP)                  4        \        P+                  R4       R# \        P+                  R4       R#   \         d?   p
\        P-                  \/        T
4      4       \        P-                  R4        Rp
?
R# Rp
?
ii ; i)z%s: module not configured.NTz-Registration failed or did not run completelyzSetting of service_level failedz(Completed auto_attach with service levelzSetting auto_attach failedzCompleted auto_attachz"Pools must in the format of a listzUnable to attach pools {0}zUnable to add or remove reposz-rh_subscription plugin completed successfullyz4rh_subscription plugin did not complete successfullyzSystem is already registered)ÚSubscriptionManagerÚis_configuredÚLOGÚdebugÚis_registeredÚ_verify_keysÚSubscriptionErrorÚrhn_registerÚauto_attachÚservicelevelÚ_set_service_levelÚ_set_auto_attachÚpoolsÚ
isinstancer   ÚaddPoolr   Úupdate_reposÚrelease_versionÚ_set_release_versionÚ_delete_packagemanager_cacheÚinfoÚwarningr   )r   r   r   r   ÚsmÚverifyÚ
verify_msgÚcontÚ	pool_failÚreturn_statÚes   &&&&       r   Úhandler:      sà  € Ü	˜SÓ	!€BØ×Ñ×ÒÜ�	‰	Ð.°Ô5Ùà×Ñ×Óð.	PØ!#§¡Ó!2ÑˆFØ˜TÓ!Ü'¨
Ó3Ð3Ø—?‘?Ó$ˆDßÜ'ØCóð ð �~�~ˆ~ "§/¡/Ò"=Ø×,Ñ,×.Ò.Ü+Ð,MÓNÐNä—I‘IÐHÕIØ——�Ø×*Ñ*×,Ò,Ü+Ð,HÓIÐIä—I‘IÐ5Ô6à�x‰xÒ#Ü! "§(¡(¬D×1Ò1Ø D�IÜ+¨IÓ6Ð6à Ÿj™j¨¯©Ó2�ß"Ü+Ø4×;Ñ;¸B¿H¹HÓEóð ð Ÿ/™/Ó+ˆKßÜ'Ð(GÓHÐHØ×!×!Ð!Ø×'Ñ'Ô)Ø×/Ñ/Ô1ä�H‰HÐDÖEô
 	�‰Ð/Ö0øô	 !ô 	PÜ�K‰Kœ˜A›ÔÜ�K‰KÐN×OÒOûð	PúsI   Á:H< ÂH< Â*#H< Ã2H< ÄH< ÄA=H< Æ;H< ÇH< Ç.5H< È<JÉ3J Ê Jc                   ó   € ] tR t^TtRtR# )r$   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r<   r   r   r$   r$   T   s   † Ûr   r$   c                   ón   a € ] tR t^Xt o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )r   c                óÔ  € VP                  R / 4      V n        V P                  P                  R4      V n        V P                  P                  R4      V n        V P                  P                  R4      V n        V P                  P                  R4      V n        V P                  P                  RV P                  P                  R4      4      V n        V P                  P                  RV P                  P                  R4      4      V n        V P                  P                  R	V P                  P                  R
4      4      V n        V P                  P                  RV P                  P                  R4      4      V n	        V P                  P                  RV P                  P                  R4      4      V n
        V P                  P                  RV P                  P                  R4      4      V n        V P                  P                  RV P                  P                  R4      4      V n        V P                  P                  RV P                  P                  R4      4      V n        R# )r   ÚorgÚusernameÚpasswordr.   Úrhsm_baseurlzrhsm-baseurlÚserver_hostnamezserver-hostnameÚadd_poolzadd-poolÚactivation_keyzactivation-keyr&   zauto-attachÚenable_repozenable-repoÚdisable_repozdisable-repoÚservice_levelzservice-levelN)ÚgetÚrhel_cfgrD   ÚuseridrF   r.   rG   rH   r*   rJ   r&   rK   rL   r'   )Úselfr   s   &&r   Ú__init__ÚSubscriptionManager.__init__Z   sØ  € ØŸ™Ð 1°2Ó6ˆŒØ—=‘=×$Ñ$ UÓ+ˆŒØ—m‘m×'Ñ'¨
Ó3ˆŒØŸ™×)Ñ)¨*Ó5ˆŒØ#Ÿ}™}×0Ñ0Ð1BÓCˆÔð !ŸM™M×-Ñ-Ø˜DŸM™M×-Ñ-¨nÓ=ó
ˆÔð  $Ÿ}™}×0Ñ0Ø˜tŸ}™}×0Ñ0Ð1BÓCó 
ˆÔð —]‘]×&Ñ&Ø˜Ÿ™×)Ñ)¨*Ó5ó
ˆŒ
ð #Ÿm™m×/Ñ/Ø˜dŸm™m×/Ñ/Ð0@ÓAó
ˆÔð  Ÿ=™=×,Ñ,Ø˜4Ÿ=™=×,Ñ,¨]Ó;ó
ˆÔð  Ÿ=™=×,Ñ,Ø˜4Ÿ=™=×,Ñ,¨]Ó;ó
ˆÔð !ŸM™M×-Ñ-Ø˜DŸM™M×-Ñ-¨nÓ=ó
ˆÔð !ŸM™M×-Ñ-Ø˜TŸ]™]×.Ñ.¨Ó?ó
ˆÖr   c                óp  € V P                   eS   \        P                  ! V P                   4      '       g-   \        P                  ! V P                   4      '       g   RpRV3# V P                  eH   V P                   '       d0   \        P                  ! \        V P                   4      4      '       d   RpRV3# R# )zY
Checks that the keys in the rh_subscription dict from the user-data
are what we expect.
z8The key auto_attach must be a boolean value (True/False)FzqThe service_level key must be used in conjunction with the auto_attach key.  Please re-run with auto_attach: True)TN)r&   r   Úis_trueÚis_falser'   r   )rQ   Únot_boolÚno_autos   &  r   r#   Ú SubscriptionManager._verify_keys   sŸ   € ð ×ÑÒ(Ü�LŠL˜×)Ñ)×*Ò*¬d¯mªm¸D×<LÑ<L×.MÒ.Mð Kð ð ˜(�?Ð"à×ÑÒ)Ø×!×!Ð!¤t§}¢}´S¸×9IÑ9IÓ5J×'KÒ'Kð$ð ð
 ˜'�>Ð!ð Ðr   c                ó\   € R.p \        V4       R#   \        P                   d     R# i ; i)zO
Checks if the system is already registered and returns
True if so, else False
ÚidentityFT)Ú_sub_man_clir   ÚProcessExecutionError)rQ   Úcmds   & r   r"   Ú!SubscriptionManager.is_registered    s7   € ð
 ˆlˆð	Ü˜Ôñ øô ×)Ñ)ô 	Úð	ús   … ’+ª+c                óŒ  € V P                   eÍ   V P                  e¿   RRP                  V P                   4      RP                  V P                  4      .pV P                  e+   VP	                  RP                  V P                  4      4       V P
                  e+   VP	                  RP                  V P
                  4      4        \        VRR7      ^ ,          pEMV P                  eÌ   V P                  e¾   RRP                  V P                  4      RP                  V P                  4      .pV P                  e+   VP	                  RP                  V P                  4      4       V P
                  e+   VP	                  RP                  V P
                  4      4        \        VRR7      ^ ,          pM,\        P                  R4       \        P                  R4       R# VP                  R4      ^,          P!                  4       p\        P#                  RV4       R#   \        P                   d=   pTP                  R	8X  d!   \        P                  R
TP                  4        Rp?R# Rp?ii ; i  \        P                   d=   pTP                  R	8X  d!   \        P                  R
TP                  4        Rp?R# Rp?ii ; i)zv
Registers the system by userid and password or activation key
and org.  Returns True when successful False when not.
NÚregisterz--activationkey={0}z	--org={0}z--baseurl={0}z--serverurl={0}T)Úlogstring_valÚ zRegistration failed due to: %sFz--username={0}z--password={0}z8Unable to register system due to incomplete information.z9Use either activationkey and org *or* userid and passwordzID: z"Registered successfully with ID %s)rJ   rD   r   rG   ÚappendrH   r\   r   r]   Ústdoutr    r2   ÚstderrrP   rF   ÚsplitÚrstripr!   )rQ   r^   Ú
return_outr9   Úreg_ids   &    r   r%   Ú SubscriptionManager.rhn_register®   s/  € ð ×ÑÒ+°$·(±(Ò2Fð Ø%×,Ñ,¨T×-@Ñ-@ÓAØ×"Ñ" 4§8¡8Ó,ðˆCð × Ñ Ò,Ø—
‘
˜?×1Ñ1°$×2CÑ2CÓDÔEà×#Ñ#Ò/Ø—
‘
Ð,×3Ñ3°D×4HÑ4HÓIÔJðÜ)¨#¸TÔBÀ1ÕE’
ð �k‰kÒ%¨D¯M©MÒ,Eð Ø ×'Ñ'¨¯©Ó4Ø ×'Ñ'¨¯©Ó6ðˆCð × Ñ Ò,Ø—
‘
˜?×1Ñ1°$×2CÑ2CÓDÔEà×#Ñ#Ò/Ø—
‘
Ð,×3Ñ3°D×4HÑ4HÓIÔJðÜ)¨#¸TÔBÀ1ÕE‘
ô �K‰KØJôô �K‰KØKôñ à×!Ñ! &Ó)¨!Õ,×3Ñ3Ó5ˆÜ�	‰	Ð6¸Ô?ÙøôS ×-Ñ-ô Ø—8‘8˜r”>Ü—K‘KÐ @À!Ç(Á(ÔKÝûðûô2 ×-Ñ-ô Ø—8‘8˜r”>Ü—K‘KÐ @À!Ç(Á(ÔKÝûðús0   ÃH ÆI2 ÈI/È31I*É*I/É2KÊ1J>Ê>Kc                ó6  € R RRP                  V P                  4      .p \        V4      ^ ,          pTP                  R4       F!  pTR8w  g   K  \        P                  T4       K#  	  R#   \        P                   dš   pTP
                  P                  4       R8w  dB   TP
                  P                  R4       F!  pTR8w  g   K  \        P                  T4       K#  	  M.\        P                  RTP                  P                  4       4        Rp?R# Rp?ii ; i)	Úattachú--autoz--servicelevel={0}rc   Ú
z)Setting the service level failed with: %sNFT)r   r'   r\   r   r]   re   rh   rg   r    r2   rf   Ústripr!   ©rQ   r^   ri   r9   Úlines   &    r   r(   Ú&SubscriptionManager._set_service_levelò   sÞ   € àØØ ×'Ñ'¨×(9Ñ(9Ó:ð
ˆð	Ü% cÓ*¨1Õ-ˆJð ×$Ñ$ TÖ*ˆDØ�rŽzÜ—	‘	˜$–ñ +ñ øô ×)Ñ)ô 
	Ø�x‰x�‰Ó  BÔ&ØŸH™HŸN™N¨4Ö0�DØ˜r–zÜŸ™ DÖ)ò 1ô —‘Ø?Ø—H‘H—N‘NÓ$ôõ ûð
	ús    A* Á*DÁ?ADÃADÄDc                ó  € R R.p \        V4      ^ ,          pTP                  R4       F!  pTR8w  g   K  \        P                  T4       K#  	  R#   \        P                   d"   p\        P	                  RT4        Rp?R# Rp?ii ; i)rm   rn   zauto_attach failed with: %sNFro   rc   T)r\   r   r]   r    r2   rg   r!   rq   s   &    r   r)   Ú$SubscriptionManager._set_auto_attach  sx   € Ø˜Ð"ˆð	Ü% cÓ*¨1Õ-ˆJð ×$Ñ$ TÖ*ˆDØ�rŽzÜ—	‘	˜$–ñ +ñ øô ×)Ñ)ô 	Ü�K‰KÐ5°qÔ9Ýûð	ús   †A ÁBÁ%BÂBc                óä   € . p. p. ROp\        V4      ^ ,          pVP                  4       P                  R4      p. ROp\        V4      ^ ,          pVP                  4       P                  R4      pW3# )zP
Gets the list pools for the active subscription and returns them
in list form.
ro   )r   z--availableú--pool-only)r   z
--consumedrw   )r\   rh   rg   )rQ   Ú	availableÚconsumedr^   Úresultss   &    r   Ú	_getPoolsÚSubscriptionManager._getPools  sq   € ð
 ˆ	Øˆò 5ˆÜ˜sÓ# AÕ&ˆØ—^‘^Ó%×,Ñ,¨TÓ2ˆ	ò 4ˆÜ˜sÓ# AÕ&ˆØ—N‘NÓ$×+Ñ+¨DÓ1ˆàÐ"Ð"r   c                óÀ  € RR.p\        V4      ^ ,          p. pVP                  R4       FA  pRV9   g   K  VP                  VP                  R4      ^,          P                  4       4       KC  	  RR.p\        V4      ^ ,          p. pVP                  R4       FA  pRV9   g   K  VP                  VP                  R4      ^,          P                  4       4       KC  	  W53# )zT
Obtains the current list of active yum repositories and returns
them in list form.
Úreposz--list-enabledro   zRepo ID:Ú:z--list-disabled)r\   rg   rd   rp   )rQ   r^   ri   Úactive_reposÚrepoÚinactive_reposs   &     r   Ú	_getReposÚSubscriptionManager._getRepos+  sÑ   € ð Ð(Ð)ˆÜ! #Ó& qÕ)ˆ
ØˆØ×$Ñ$ TÖ*ˆDØ˜TÖ!Ø×#Ñ# T§Z¡Z°£_°QÕ%7×$>Ñ$>Ó$@ÖAñ +ð Ð)Ð*ˆÜ! #Ó& qÕ)ˆ
àˆØ×$Ñ$ TÖ*ˆDØ˜TÖ!Ø×%Ñ% t§z¡z°#£°qÕ'9×&@Ñ&@Ó&BÖCñ +ð Ð+Ð+r   c                óH  € V'       g   \         P                  R4       R# V P                  4       w  r#. pR.pV FG  pWc9  d)   Wb9   d#   VP                  RP	                  V4      4       K1  \         P                  RV4       KI  	  \        V4      ^ 8”  dU   VP                  V4        \        V4       \         P                  RRP                  V4      P                  RR	4      4       R# R#   \        P                   d#   p\         P                  R
XT4        Rp?R# Rp?ii ; i)zT
Takes a list of subscription pools and "attaches" them to the
current subscription
zNo pools to attachTrm   z
--pool={0}zPool %s is not availablez/Attached the following pools to your system: %sú, z--pool=rc   z"Unable to attach pool %s due to %sNF)r    r!   r{   rd   r   r2   ÚlenÚextendr\   ÚjoinÚreplacer   r]   )rQ   r*   Úpool_availableÚpool_consumedÚ	pool_listr^   Úpoolr9   s   &&      r   r,   ÚSubscriptionManager.addPoolA  sô   € ÷ Ü�I‰IÐ*Ô+Ùà(,¯©Ó(8Ñ%ˆØˆ	ØˆjˆÛˆDØÔ)°Ô0FØ× Ñ  ×!4Ñ!4°TÓ!:Ö;ä—‘Ð6¸Ö=ñ	 ô
 ˆy‹>˜AÔØ�J‰J�yÔ!ð	Ü˜SÔ!Ü—	‘	ØEØ—Y‘Y˜yÓ)×2Ñ2°9¸bÓAôñ ñ øô ×-Ñ-ô Ü—‘Ð@À$ÈÔJÝûðús   Â&A C* Ã*D!Ã?DÄD!c                ó¬  € V P                   pV P                  pVf   . pVf   . p\        V\        4      '       g   \        P                  R4       R# \        V\        4      '       g   \        P                  R4       R# V'       g    V'       g   \        P                  R4       R# V P                  4       w  r4. p. pV F<  pWt9   d#   VP                  RP                  V4      4       K+  VP                  V4       K>  	  . p. p	V F<  pWs9   d#   VP                  RP                  V4      4       K+  V	P                  V4       K>  	  \        V4      ^ 8”  d>   V F7  p
W£9   d   \        P                  RV
4       K!  \        P                  R	V
4       K9  	  \        V	4      ^ 8”  d    V	 F  p
\        P                  R
V
4       K  	  R.p\        V4      ^ 8”  d   VP                  V4       \        V4      ^ 8”  d   VP                  V4        \        V4       \        T4      ^ 8”  d6   \        P                  RRP                  T4      P!                  RR4      4       \        T4      ^ 8”  d6   \        P                  RRP                  T4      P!                  RR4      4       R#   \        P                   d"   p\        P                  RT4        Rp?R# Rp?ii ; i)z±
Takes a list of yum repo ids that need to be disabled or enabled; then
it verifies if they are already enabled or disabled and finally
executes the action to disable or enable
Nz&Repo IDs must in the format of a list.Fz No repo IDs to enable or disableTz--enable={0}z--disable={0}zRepo %s is already enabledz Repo %s does not appear to existz.Repo %s not disabled because it is not enabledr~   zUnable to alter repos due to %szEnabled the following repos: %sr†   z	--enable=rc   z Disabled the following repos: %sz
--disable=)rK   rL   r+   r   r    r2   r!   rƒ   rd   r   r‡   rˆ   r\   r   r]   r‰   rŠ   )rQ   ÚereposÚdreposr€   r‚   Úenable_listÚenable_list_failÚrepoidÚdisable_listÚdisable_list_failÚfailr^   r9   s   &            r   r-   Ú SubscriptionManager.update_reposa  sb  € ð ×!Ñ!ˆØ×"Ñ"ˆØŠ>ØˆFØŠ>ØˆFÜ˜&¤$×'Ò'Ü�K‰KÐ@ÔAÙä˜&¤$×'Ò'Ü�K‰KÐ@ÔAÙ÷ §Ü�I‰IÐ8Ô9Ùà'+§~¡~Ó'7Ñ$ˆàˆØÐÛˆFØÔ'Ø×"Ñ" >×#8Ñ#8¸Ó#@ÖAà ×'Ñ'¨Ö/ñ	 ð ˆØÐÛˆFØÔ%Ø×#Ñ# O×$:Ñ$:¸6Ó$BÖCà!×(Ñ(¨Ö0ñ	 ô ÐÓ  1Ô$Û(�àÔ'Ü—I‘IÐ:¸DÖAä—K‘KÐ BÀDÖIñ )ô Ð Ó! AÔ%Û)�Ü—	‘	ØDÀdöñ *ð
 ˆiˆÜˆ|Ó˜qÔ Ø�J‰J�|Ô$äˆ{Ó˜aÔØ�J‰J�{Ô#ð	Ü˜Ôô
 ˆ{Ó˜aÔÜ�I‰IØ1Ø—‘˜;Ó'×0Ñ0°¸bÓAôô ˆ|Ó˜qÔ Ü�I‰IØ2Ø—‘˜<Ó(×1Ñ1°,ÀÓCôñ øô ×)Ñ)ô 	Ü�K‰KÐ9¸1Ô=Ýûð	ús   ÈJ ÊKÊ2KËKc                ó|   € \        V P                  ;'       d    V P                  ;'       g    V P                  4      # )N)ÚboolrP   rF   rJ   )rQ   s   &r   r   Ú!SubscriptionManager.is_configuredµ  s+   € Ü�T—[‘[×2Ð2 T§]¡]×JÐJ°t×7JÑ7JÓKÐKr   c                ó˜   € RRV P                    2.p \        V4       R#   \        P                   d   p\	        RT 24      ThRp?ii ; i)zo
Execute "subscription-manager release --set=<release_version>"
Raises Subscription error if the command fails
Úreleasez--set=z%Unable to set release_version using: N)r.   r\   r   r]   r$   )rQ   r^   r9   s   &  r   r/   Ú(SubscriptionManager._set_release_version¸  sY   € ð ˜F 4×#7Ñ#7Ð"8Ð9Ð:ˆð	Ü˜ÖøÜ×)Ñ)ô 	Ü#Ø7¸°uÐ=óàðûð	ús   “   A	µAÁA	c                óÈ   € \         P                  R4        \        P                  ! R4       \        P                  ! R4       R#   \         d   p\        R4      ThRp?ii ; i)zS
Delete the package manager cache.
Raises Subscription error if the deletion fails
z"Deleting the package manager cachez/var/cache/dnfz/var/cache/yumz*Unable to delete the package manager cacheN)r    r!   r   Údel_dirÚ	Exceptionr$   )rQ   r9   s   & r   r0   Ú0SubscriptionManager._delete_packagemanager_cacheÆ  sS   € ô
 	�	‰	Ð6Ô7ð	Ü�LŠLÐ)Ô*Ü�LŠLÐ)Ö*øÜô 	Ü#Ø<óàðûð	ús   —,A ÁA!ÁAÁA!)rJ   r&   rL   rK   rD   rF   r*   r.   rO   rG   rH   r'   rP   N)r=   r>   r?   r@   rR   r#   r"   r%   r(   r)   r{   rƒ   r,   r-   r   r/   r0   rA   Ú__classdictcell__)Ú__classdict__s   @r   r   r   X   sS   ø‡ € ò#
òJòBòBòHò2
ò#ò(,ò,ò@RòhLò÷ð r   r   c                óB   € \         P                   ! R.V ,           VR7      # )z§
Uses the preferred cloud-init subprocess def of subp.subp
and runs subscription-manager.  Breaking this to a
separate function for later use in mocking and unittests
zsubscription-manager)Ú	logstring)r   )r^   rb   s   &&r   r\   r\   Õ  s   € ô �9Š9Ð,Ð-°Õ3¸}ÔMÐMr   c                ó@   € V ^8„  d   Qh/ ^ \         9   d
   \        ;R&   # )r   Úmeta)Ú__conditional_annotations__r   )r   s   "r   r   r      s   € × JÑ J÷ò „jñ ò Kr   )F)rª   Ú__doc__ÚloggingÚ	cloudinitr   r   Úcloudinit.cloudr   Úcloudinit.configr   Úcloudinit.config.schemar   Úcloudinit.settingsr   Ú	getLoggerr=   r    r©   r:   r¢   r$   r   r\   r   )rª   s   @r   Ú<module>r³      s   øðö Kã ç  Ý !Ý #Ý .Ý +à×Ò˜Ó!€ð 	Ð
Ø�˜&Ð!Ø�ØÐ 1Ð2ð	€ó õ71ôt	˜	ô 	÷zñ zözNr   