a '¡Dg•6ã@sLUdZddlZddlZddlZddlmZmZddlmZddl m Z m Z m Z ddl mZddlmZddlmZdd lmZed d gƒZd d gedgeeƒdœZeed<e e¡ZdZdZdZe dœdd„Z!e dœdd„Z"d+edœdd„Z#d,dd„Z$edœdd „Z%e e&d!œd"d#„Z'e dœd$d%„Z(e dœd&d'„Z)e*eeedd(œd)d*„Z+dS)-z1ubuntu_pro: Configure Ubuntu Pro support serviceséN)ÚAnyÚList)Úurlparse)Ú performanceÚsubpÚutil)ÚCloud)ÚConfig)Ú MetaSchema)Ú PER_INSTANCEzubuntu-advantageZubuntu_advantageZ cc_ubuntu_proZubuntuÚ ubuntu_pro)ÚidZdistrosZ frequencyZactivate_by_schema_keysÚmetaÚREDACTEDzUUnable to determine if this is an Ubuntu Pro instance. Fallback to normal Pro attach.)Z http_proxyZ https_proxyZglobal_apt_http_proxyZglobal_apt_https_proxyZua_apt_http_proxyZua_apt_https_proxy)Ú pro_sectioncCs„d|vr dS|d}t|tƒs@dt|ƒj›}t |¡t|ƒ‚d|vrLdS|d}t|tƒs€dt|ƒj›}t |¡t|ƒ‚dS)NÚfeaturesz.'ubuntu_pro.features' should be a dict, not a Údisable_auto_attachzB'ubuntu_pro.features.disable_auto_attach' should be a bool, not a )Ú isinstanceÚdictÚtypeÚ__name__ÚLOGÚerrorÚ RuntimeErrorÚbool)rrÚmsgr©rúB/usr/lib/python3.9/site-packages/cloudinit/config/cc_ubuntu_pro.pyÚvalidate_schema_features*s( ÿÿ  ÿÿ r)Ú pro_configc Cs¦g}t| ¡ƒD]x\}}|tvr0t d|¡qn |dur:qz&t|ƒ}|jdvr^| d|›¡Wqtt fy†| d|›¡Yq0q|r¢t d  d  |¡¡ƒ‚dS)a·Validate user-provided ua:config option values. This function supplements flexible jsonschema validation with specific value checks to aid in triage of invalid user-provided configuration. Note: It does not log/raise config values as they could be urls containing sensitive auth info. @param pro_config: Dictionary of config value under 'ubuntu_pro'. @raises: ValueError describing invalid values provided. z4Not validating unknown ubuntu_pro.config.%s propertyN)ÚhttpÚhttpsz-Expected URL scheme http/https for ua:config:zExpected a URL for ua:config:z$Invalid ubuntu_pro configuration: {}Ú ) ÚsortedÚitemsÚKNOWN_PRO_CONFIG_PROPSrÚwarningrÚschemeÚappendÚAttributeErrorÚ ValueErrorÚformatÚjoin)rÚerrorsÚkeyÚvalueZ parsed_urlrrrÚsupplemental_schema_validationEs, þ ÿÿr0c Cs”|dur dSt|tƒs,tdt|ƒj›dƒ‚t|ƒg}t| ¡ƒD]\}}d}i}|durxt  d|¡ddd|g}nh|›d}t  d|¡t   d |¡r°|›d t   |¡›}n|›d |›}ddd |g}d |dd …|gi}zt j |fi|¤ŽWqDt jyJ}z8t|ƒ} |dur(|  |t¡} | || f¡WYd}~qDd}~00qD|r|D]\} } t d| | ¡qXtd d dd„|Dƒ¡¡ƒ‚dS)Nz+ubuntu_pro: config should be a dict, not a z%; skipping enabling config parameterszDisabling Pro config for %sÚproÚconfigZunsetz =REDACTEDzEnabling Pro config %sz\sú=ÚsetÚ logstringéÿÿÿÿz#Failure enabling/disabling "%s": %sz3Failure enabling/disabling Ubuntu Pro config(s): {}ú, css|]\}}d |¡VqdS)z"{}"N)r+)Ú.0ÚparamÚ_rrrÚ “óz!set_pro_config..)rrrrrr0r#r$rÚdebugÚreÚsearchÚescaperÚProcessExecutionErrorÚstrÚreplacerr(r&r+r,) rÚ enable_errorsr.r/Zredacted_key_valueZ subp_kwargsZ config_cmdÚ key_valueÚeÚerr_msgr9rrrrÚset_pro_configlsL ÿÿ       & ÿÿrHc Csz|durg}nÚtypingrrÚ urllib.parserZ cloudinitrrrZcloudinit.cloudrZcloudinit.configr Zcloudinit.config.schemar Zcloudinit.settingsr r4rsrQrÚ__annotations__Z getLoggerrrrrer%rrr0rHrXr]rrhrjrorBrwrrrrÚs<       ü ÿ ', d"