Ë
    GKÕiš*  ã                   óä  — d dl Z d dlZd dlZd dlmZmZmZ d dlmZm	Z	m
Z
mZmZmZmZ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mZmZ d d	lmZ d d
lm Z   ejB                  «       Z" ejF                   ejH                  e%«      «      Z&dejN                  de(dee   dee(   de(de(fd„Z)ddœd„Z*ejV                  ejX                   ejZ                  ej\                  «       ej^                  d«      d„ «       «       «       «       Z0 edejb                  ejd                  e0ejf                   e edejh                  jk                  djm                   e
jn                   ejN                  «       ¬«      «      ¬«      dd¬«       edejp                  jk                  d¬«      d ¬!«       ed"ejr                  jk                  d#¬$«      dd#d%gd#¬&«       ed'ejt                  d ¬!«      g¬(«      g¬)«      Z;y)*é    N)ÚAnyÚDictÚList)ÚconfigÚcontractÚentitlementsÚevent_loggerÚ
exceptionsÚmessagesÚstatusÚutil)ÚProgressWrapper)ÚServiceWithDependenciesÚ_dependencies)Ú_enabled_services)Úcli_util)ÚProArgumentÚProArgumentGroupÚ
ProCommand)ÚHelpCategory)ÚCanDisableFailureÚcfgÚserviceÚall_dependenciesÚenabled_service_namesÚcalled_nameÚservice_titlec                 ó   — g }|D ]\  }|j                   |k(  s|j                   |vrŒ!|j                  D ]-  }|j                   |k(  sŒ|j                  |j                   «       Œ/ Œ^ |D ]f  }	t        j                  | |	«      }
t
        j                  j                  ||
¬«      }t        j                  |¬«      rŒQt        j                  ||
¬«      ‚ y )N)Úservice_being_disabledÚdependent_service)Úmsg)ÚnameÚ
depends_onÚappendr   Ú	get_titler   ÚDEPENDENT_SERVICEÚformatr   Úprompt_for_confirmationr
   ÚDependentServiceStopsDisable)r   r   r   r   r   r   Údependent_servicesÚsÚrequirementr    Údependent_service_titleÚuser_msgs               ú6/usr/lib/python3/dist-packages/uaclient/cli/disable.pyÚprompt_for_dependency_handlingr0      sÜ   € ð ÐØò 2ˆØ�6‰6�WÒ §¡Ð.CÑ CØØŸ<™<ò 	2ˆKØ×Ñ 7Ó*Ø"×)Ñ)¨!¯&©&Õ1ñ	2ð2ð 0ò ÐÜ".×"8Ñ"8ØÐ"ó#
Ðô ×-Ñ-×4Ñ4Ø#0Ø5ð 5ó 
ˆô ×+Ñ+°Ö9Ü×9Ñ9Ø'4Ø"9ôð ñó    T)Úupdate_statusc                óz  — | j                   }|�|} |rt        «       }nt        t        j                  |¬«      «      }| j	                  |«      \  }}|s±t
        j                  | j                  «       |�¯t        |t        «      rŸ|j                  �“t
        j                  |j                  j                  «       t
        j                  |j                  j                  |j                  j                  | j                  ¬«       nt
        j                  | j                  «       |rt        j                  |¬«       |S )a  Perform the disable action on a named entitlement.

    :param entitlement_name: the name of the entitlement to enable
    :param cfg: the UAConfig to pass to the entitlement
    :param json_output: output should be json only

    @return: True on success, False otherwise
    ©Ú
assume_yes)Ú	error_msgÚ
error_coder   ©r   )Úenabled_variantr   r   ÚCLIEnableDisableProgressÚdisableÚeventÚservice_failedr"   Ú
isinstancer   ÚmessageÚinfor!   ÚerrorÚservice_processedr   )	Úentitlementr   Újson_outputr5   r2   ÚvariantÚprogressÚretÚreasons	            r/   Úperform_disablerI   >   sø   € ð ×)Ñ)€GØÐØˆáÜ"Ó$‰ä"Ü×-Ñ-¸ÔDó
ˆð ×%Ñ% hÓ/�K€CˆáÜ×Ñ˜[×-Ñ-Ô.àÐ¤*¨VÔ5FÔ"GØ�~‰~Ð)Ü—
‘
˜6Ÿ>™>×-Ñ-Ô.Ü—‘Ø$Ÿn™n×0Ñ0Ø%Ÿ~™~×2Ñ2Ø'×,Ñ,ð õ ô 	×Ñ × 0Ñ 0Ô1áÜ�‰˜#Õà€Jr1   zpro disablec          
      óD
  — g }g }g }g }t         j                  dddœ}| j                  dk(  }| j                  }	t	        j
                  |«      }
| j                  r|	rt        j                  dd¬«      ‚t        | dg «      }t        j                  ||«      \  }}t        |«      j                  D �cg c]  }|j                  ‘Œ }}t        |«      j                   }d	}|D �]¯  }t        j"                  ||| j                  ¬
«      }|j$                  }|�|}|	s&	 t'        ||j                  ||||j(                  ¬«       |rt7        «       }nt7        t	        j8                  |	¬«      «      }|j;                  «       |_        	 |j?                  |«      \  }}tA        j@                  |¬«       |s–d}|jC                  |«       |�ÏtE        |tF        «      r¿|jH                  �³ |
|jH                  j0                  «       |jC                  d|j                  |jH                  j0                  |jH                  j                  dœ«       nN|jC                  |«       |jK                  «       }|r+d	|d<    |
t2        jL                  j                  d¬«      «       �Œ² |rÃd}ddjU                  t        jV                  |¬«      «      z   dz   }djU                  tY        jZ                  |ddd¬«      «      }t        j\                  ddjU                  |«      |¬«      } |
|j0                  «       |jC                  dd|j0                  |jP                  |jR                  dœ«       t_        j`                  |«      }|jc                  «        |rl|je                  «        |je                  «        |rdnd|d<   ||d <   ||d!<   ||d"<   ||d#<   tg        ti        jj                  |tl        jn                  d	¬$«      «       |rd%S d&S c c}w # t        j*                  $ rd}t,        j/                  |«        |
|j0                  «        |
t2        j4                  j                  |j(                  ¬«      «       d}Y d}~�Œˆd}~ww xY w# t        j*                  $ rŸ}d}|jC                  |«        |
|j0                  «        |
t2        jN                  j                  |j(                  ¬«      «       |jC                  d|j                  |j0                  |jP                  |jR                  dœ«       Y d}~�Œ=d}~ww xY w)'zbPerform the disable action on a list of entitlements.

    @return: 0 on success, 1 otherwise
    ÚsuccessF)Ú_schema_versionÚresultÚneeds_rebootÚjsonú--purgeú--assume-yes)Úoption1Úoption2r   T)r   r"   ÚpurgeN)r   r   )Útitler4   r8   )Útyper   r?   Úmessage_coderN   zdisable operation)Ú	operation)rV   r   r?   rW   Úadditional_infozTry ú, ú.ú
éP   )ÚwidthÚbreak_long_wordsÚbreak_on_hyphensr;   )rX   Úinvalid_serviceÚservice_msgÚsystemÚfailurerM   Úprocessed_servicesÚfailed_servicesÚerrorsÚwarnings)ÚclsÚ	sort_keysr   é   )8r	   ÚJSON_SCHEMA_VERSIONr'   r5   r   Ú&create_interactive_only_print_functionrT   r
   ÚInvalidOptionCombinationÚgetattrr   Úget_valid_entitlement_namesr   Úenabled_servicesr"   r   ÚservicesÚentitlement_factoryr9   r0   rU   ÚUbuntuProErrorÚLOGÚ	exceptionr!   r   ÚENABLE_FAILEDr   r:   Úcalculate_total_disable_stepsÚtotal_stepsr;   r   r$   r>   r   r?   Ú_check_for_rebootÚENABLE_REBOOT_REQUIRED_TMPLÚDISABLE_FAILED_TMPLÚmsg_coderY   ÚjoinÚvalid_servicesÚtextwrapÚwrapÚInvalidServiceOpErrorr   ÚUAContractClientÚupdate_activity_tokenÚsortÚprintrO   Údumpsr   ÚDatetimeAwareJSONEncoder)Úargsr   Úkwargsre   rf   rg   rh   Újson_responserD   r5   Úinteractive_only_printÚnamesÚentitlements_foundÚentitlements_not_foundr+   r   r   rG   Úent_nameÚentrE   ÚerF   Údisable_retrH   Úent_reboot_requiredÚvalid_namesrb   ÚerrÚcontract_clients                                 r/   Úaction_disabler˜   l   sâ  € ð ÐØ€OØ€FØ€Hô (×;Ñ;ØØñ€Mð —+‘+ Ñ'€KØ—‘€Jô
 &×LÑLØóÐð ‡z‚z‘jÜ×1Ñ1Ø ~ô
ð 	
ô �D˜) RÓ(€Eô 	×0Ñ0°¸Ó<ñØØô *¨#Ó.×?Ñ?öØˆ�‹ðÐð ô % SÓ)×2Ñ2Ðà
€CØ&ó TˆÜ×.Ñ.ØØØ—*‘*ô
ˆð ×%Ñ%ˆØÐØˆCáðÜ.ØØ—H‘HØ$Ø)Ø (Ø"%§)¡)õñ" Ü&Ó(‰Hä&Ü×1Ñ1¸ZÔHóˆHð  #×@Ñ@ÓBˆÔð-	Ø"%§+¡+¨hÓ"7ÑˆK˜Ü�M‰M˜cÕ"áØ�Ø×&Ñ& xÔ0ØÐ%¬*ØÔ-ô+ð —~‘~Ð1Ù.¨v¯~©~×/AÑ/AÔBØŸ™à(1Ø+.¯8©8Ø+1¯>©>×+=Ñ+=Ø06·±×0CÑ0Cñ	õð #×)Ñ)¨(Ô3Ø&)×&;Ñ&;Ó&=Ð#Ù&Ø48�M .Ñ1Ù*Ü ×<Ñ<×CÑCØ&9ð Dó ôùðATñl Øˆà�T—Y‘Yœ|×:Ñ:¸sÔCÓDÑDÀsÑJð 	ð —i‘iÜ�M‰MØØØ!&Ø!&ô	ó
ˆô ×.Ñ.ØØ ŸI™IÐ&<Ó=Ø#ô
ˆñ
 	˜sŸw™wÔ'Ø�‰à ØØŸ7™7Ø #§¡Ø#&×#6Ñ#6ñô	
ô ×/Ñ/°Ó4€OØ×)Ñ)Ô+áØ×ÑÔ!Ø×ÑÔá/2¡)¸	ˆ�hÑØ.@ˆÐ*Ñ+Ø+:ˆÐ'Ñ(Ø"(ˆ�hÑØ$,ˆ�jÑ!äÜ�J‰JØÜ×1Ñ1Øôô	
ñ ˆ1Ð˜Ðùò]øô: ×,Ñ,ò Ü—‘˜aÔ Ù& q§u¡uÔ-Ù&Ü×*Ñ*×1Ñ1¸¿	¹	Ð1ÓBôð �Ýûðûô\ ×(Ñ(ò 	ØˆCØ×"Ñ" 8Ô,Ù" 1§5¡5Ô)Ù"Ü×,Ñ,×3Ñ3¸#¿)¹)Ð3ÓDôð �M‰Mà%Ø"Ÿx™xØ Ÿu™uØ$%§J¡JØ'(×'8Ñ'8ñ÷ò ûð	ús9   Â/O.Ä%O3Å=DQ-Ï3Q*ÐAQ%Ñ%Q*Ñ-TÒ BTÔTr;   rZ   r8   )ÚoptionsÚstoreú+)ÚhelpÚactionÚnargsrQ   )ÚcommandÚ
store_true)rœ   r�   z--formatÚcli)ÚdefaultrO   )rœ   r�   Úchoicesr¢   rP   )Ú	arguments)rœ   Údescriptionr�   Úhelp_categoryÚargument_groups)<rO   Úloggingr€   Útypingr   r   r   Úuaclientr   r   r   r	   r
   r   r   r   Úuaclient.apir   Ú+uaclient.api.u.pro.services.dependencies.v1r   r   Ú-uaclient.api.u.pro.status.enabled_services.v1r   Úuaclient.clir   Úuaclient.cli.commandsr   r   r   Úuaclient.cli.parserr   Ú(uaclient.entitlements.entitlement_statusr   Úget_event_loggerr<   Ú	getLoggerÚreplace_top_level_logger_nameÚ__name__ru   ÚUAConfigÚstrr0   rI   Úverify_json_format_argsÚassert_rootÚassert_attachedÚ&_raise_enable_disable_unattached_errorÚassert_lock_filer˜   ÚCLI_ROOT_DISABLEÚCLI_DISABLE_DESCÚOTHERÚCLI_DISABLE_SERVICEr'   r~   r   ÚCLI_ASSUME_YESÚCLI_FORMAT_DESCÚ	CLI_PURGEÚdisable_command© r1   r/   ú<module>rÆ      s(  ðÛ Û Û ß "Ñ "÷	÷ 	ó 	õ )÷õ LÝ !ß KÑ KÝ ,Ý Fà%ˆ×%Ñ%Ó'€Ø€g×ÑÐ:˜×:Ñ:¸8ÓDÓE€ðØ	�‰ðàðð Ð2Ñ3ðð   ™9ð	ð
 ðð óð@ AEô+ð\ 
×!Ñ!Ø	×ÑØ€×Ñ˜(×IÑIÓJØ€×Ñ˜=Ó)ñró *ó Kó ó "ðrñj ØØ	×	"Ñ	"Ø×)Ñ)ØØ×$Ñ$ááØØ!×5Ñ5×<Ñ<Ø $§	¡	Ø7˜L×7Ñ7¸O¸F¿O¹OÓ<MÔNó!ð =ó ð
 #Øô	ñ Ø"Ø!×0Ñ0×7Ñ7À	Ð7ÓJØ'ôñ
 ØØ!×1Ñ1×8Ñ8ÀÐ8ÓGØ"Ø" F˜OØ!ôñ ØØ!×+Ñ+Ø'ôð/ô	
ð ô'�r1   