o Hcf{C@sddlmZmZmZddlmZGdddeZGdddeZGdddeZ Gd d d eZ Gd d d e Z Gd ddeZ e ZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGdd d e ZGd!d"d"e ZGd#d$d$e ZGd%d&d&e ZGd'd(d(e ZGd)d*d*e ZGd+d,d,e ZGd-d.d.e ZGd/d0d0e ZGd1d2d2e Z Gd3d4d4e Z!Gd5d6d6e Z"Gd7d8d8e Z#Gd9d:d:e Z$Gd;d<dd>e%Z&Gd?d@d@e%Z'GdAdBdBe Z(GdCdDdDe e Z)e)Z*GdEdFdFe Z+GdGdHdHe Z,GdIdJdJe Z-GdKdLdLe Z.GdMdNdNe Z/GdOdPdPe Z0GdQdRdRe Z1GdSdTdTe Z2GdUdVdVe Z3GdWdXdXe Z4GdYdZdZe Z5Gd[d\d\e Z6Gd]d^d^e Z7Gd_d`d`e Z8Gdadbdbe Z9Gdcdddde Z:Gdedfdfe Z;Gdgdhdhe ZGdmdndne Z?Gdodpdpe Z@Gdqdrdre ZAGdsdtdte?ZBGdudvdve?ZCGdwdxdxe ZDGdydzdze ZEGd{d|d|e ZFGd}d~d~e ZGGddde ZHGddde ZIGddde ZJGddde ZKGddde ZLGddde ZMGddde ZNGddde ZOGdddeOZPGddde ZQGddde ZRGdddeRZSGdddeRZTGdddeRZUGddde ZVGddde ZWGddde ZXGddde ZYGddde ZZGddde Z[Gddde Z\Gddde Z]Gddde Z^Gddde Z_Gddde Z`Gddde ZaGddde ZbGddde ZcGddde ZdGddde ZeGddde ZfGddde ZgGddde ZhGdd„de ZiGddĄde ZjGddƄde ZkGddȄde ZlGddʄde ZmGdd̄de ZnGdd΄de ZoGddЄde ZpGdd҄de ZqGddԄde ZrGddքde ZsdS))ListOptionalTuple)messagesc@ eZdZdS)InPlaceUpgradeNotSupportedErrorN__name__ __module__ __qualname__r r 5/usr/lib/python3/dist-packages/uaclient/exceptions.pyrrc@r)IsProLicensePresentErrorNrr r r r r rrc@r)CancelProLicensePollingNrr r r r rrrc@r)DelayProLicensePollingNrr r r r rrrc s>eZdZ   d dedeedededdf fdd ZZS) ProcessExecutionErrorNcmd exit_codestdoutstderrreturncsH||_||_||_|stjj|d}n tjj|||d}t|dS)N)r)rrr) rrrrSUBP_INVALID_COMMANDformatSUBP_COMMAND_FAILEDsuper__init__)selfrrrrmessage __class__r r rszProcessExecutionError.__init__)Nrr)r r r strrintr __classcell__r r r r rsrc@sFeZdZdZdZdZdZd ddZeddZ ed d Z d d Z dS)UbuntuProErrorzu Base class for all of our custom errors. All possible exceptions from our API should extend this class. NrcKsP|jdur|jjdi||_n|j|_||_|D] \}}t|||qdSNr )_formatted_msgr named_msg_msgadditional_infoitemssetattr)rkwargskeyvaluer r r r5s   zUbuntuProError.__init__cC|jjSNr)msgrr r r r4BzUbuntuProError.msgcCr1r2)r)namer5r r r msg_codeFr6zUbuntuProError.msg_codecCr1r2r3r5r r r __str__JszUbuntuProError.__str__rN) r r r __doc__r*r(rrpropertyr4r8r9r r r r r%*s    r%cs(eZdZdZdejffdd ZZS)AnonymousUbuntuProErrorz For cases where we have a NamedMessage of an Error already but it isn't in exception form, and we need to raise it as an exception. This generally should only be used in cli-only code. r)c tjdi|||_dSr')rrr))rr)r.r r r r[ z AnonymousUbuntuProError.__init__)r r r r;r NamedMessagerr$r r r r r=Tsr=c@eZdZejZdS)APTProcessConflictErrorN)r r r rE_APT_PROCESS_CONFLICTr*r r r r rBe rBc@rA)APTInvalidRepoErrorN)r r r rE_APT_UPDATE_INVALID_URL_CONFIGr(r r r r rEirDrEc@rA)APTUpdateProcessConflictErrorN)r r r rE_APT_UPDATE_PROCESS_CONFLICTr*r r r r rGmrDrGc@rA)APTUpdateInvalidRepoErrorN)r r r rE_APT_UPDATE_INVALID_REPOr(r r r r rIqrDrIc@rA)APTUpdateFailedN)r r r rE_APT_UPDATE_FAILEDr(r r r r rKurDrKc@rA)APTInstallProcessConflictErrorN)r r r rE_APT_INSTALL_PROCESS_CONFLICTr*r r r r rMyrDrMc@rA)APTInstallInvalidRepoErrorN)r r r rE_APT_INSTALL_INVALID_REPOr(r r r r rO}rDrOc@rA)APTInvalidCredentialsN)r r r rE_APT_INVALID_CREDENTIALSr(r r r r rQrDrQc@rA) APTTimeoutN)r r r r E_APT_TIMEOUTr(r r r r rSrDrSc@rA)APTUnexpectedErrorN)r r r rE_APT_UNEXPECTED_ERRORr(r r r r rUrDrUc@rA)APTCommandTimeoutN)r r r rE_APT_COMMAND_TIMEOUTr(r r r r rWrDrWc@rA)SnapNotInstalledErrorN)r r r rE_SNAP_NOT_INSTALLED_ERRORr(r r r r rYrDrYc@rA)UnexpectedSnapdAPIErrorN)r r r rE_UNEXPECTED_SNAPD_API_ERRORr(r r r r r[rDr[c@rA)SnapdAPIConnectionRefusedN)r r r rE_SNAPD_CONNECTION_REFUSEDr*r r r r r]rDr]c@rA)CannotInstallSnapdErrorN)r r r rE_CANNOT_INSTALL_SNAPDr*r r r r r_rDr_c@rA)ErrorInstallingLivepatchN)r r r rE_ERROR_INSTALLING_LIVEPATCHr(r r r r rarDrac@rA)ProxyNotWorkingErrorN)r r r rE_NOT_SETTING_PROXY_NOT_WORKINGr(r r r r rcrDrcc@rA)ProxyInvalidUrlN)r r r rE_NOT_SETTING_PROXY_INVALID_URLr(r r r r rerDrec@rA)PycurlRequiredErrorN)r r r rE_PYCURL_REQUIREDr*r r r r rgrDrgc@rA) PycurlErrorN)r r r rE_PYCURL_ERRORr(r r r r rirDric@rA)ProxyAuthenticationFailedN)r r r rE_PROXY_AUTH_FAILr*r r r r rkrDrkc@s&eZdZejZdZdZdZddZ dS)ExternalAPIErrorNcCsd|j|j|jS)Nz {}: [{}], {})rcodeurlbodyr5r r r r9szExternalAPIError.__str__) r r r rE_EXTERNAL_API_ERRORr(rnrorpr9r r r r rms  rmc@r)ContractAPIErrorNrr r r r rrrrrc@r)SecurityAPIErrorNrr r r r rsrrscs$eZdZejZdfdd ZZS)PycurlCACertificatesErrorrNc r>r')rrro)rror.r r r rr?z"PycurlCACertificatesError.__init__r:)r r r rE_PYCURL_CA_CERTIFICATESr*rr$r r r r rtsrtc@s$eZdZejZdedefddZdS)ConnectivityErrorcauserocCsPt|ddrtt|d}nt|}t||tj|||d||_||_dS)Nreason) cause_errorro)getattrr"IOErrorrr%ryro)rrwroryr r r rs   zConnectivityError.__init__N) r r r rE_CONNECTIVITY_ERRORr( Exceptionr"rr r r r rvsrvc@rA)ContractExpiredErrorN)r r r rE_CONTRACT_EXPIREDr*r r r r r~rDr~c@rA)InvalidServiceOpErrorNr r r rE_INVALID_SERVICE_OP_FAILUREr(r r r r rrDrc@eZdZdZdZejZdS)AlreadyAttachedErrorzDAn exception to be raised when a command needs an unattached system.N)r r r r;rrE_ALREADY_ATTACHEDr(r r r r r rc@r) AttachErrorz@An exception to be raised when we detect a generic attach error.r&N)r r r r;rrE_ATTACH_FAILUREr*r r r r r rrc@rA)AttachInvalidConfigFileErrorN)r r r rE_ATTACH_CONFIG_READ_ERRORr(r r r r rrDrc@rA)AttachInvalidTokenErrorN)r r r rE_ATTACH_INVALID_TOKENr*r r r r rrDrc@rA)AttachForbiddenExpiredN)r r r rE_ATTACH_FORBIDDEN_EXPIREDr(r r r r rrDrc@rA)AttachForbiddenNotYetN)r r r rE_ATTACH_FORBIDDEN_NOT_YETr(r r r r rrDrc@rA)AttachForbiddenNeverN)r r r rE_ATTACH_FORBIDDEN_NEVERr(r r r r r!rDrc@rA)AttachExpiredTokenN)r r r rE_ATTACH_EXPIRED_TOKENr*r r r r r%rDrc@rA) MagicAttachTokenAlreadyActivatedN)r r r r&E_MAGIC_ATTACH_TOKEN_ALREADY_ACTIVATEDr*r r r r r)rDrc@rA)MagicAttachTokenErrorN)r r r rE_MAGIC_ATTACH_TOKEN_ERRORr*r r r r r-rDrc@rA)MagicAttachUnavailableN)r r r rE_MAGIC_ATTACH_UNAVAILABLEr*r r r r r1rDrc@rA)MagicAttachInvalidParamN)r r r rE_MAGIC_ATTACH_INVALID_PARAMr(r r r r r5rDrc@eZdZdZejZdS)MissingAptURLDirectivez@An exception for when the contract server doesn't include aptURLN)r r r r;rE_MISSING_APT_URL_DIRECTIVEr(r r r r r9 rc@r)UnattachedErrorz>An exception to be raised when a machine needs to be attached.N)r r r r;r E_UNATTACHEDr*r r r r r?rrc@rA)UnattachedValidServicesErrorN)r r r r"E_VALID_SERVICE_FAILURE_UNATTACHEDr(r r r r rErDrc@rA)UnattachedMixedServicesErrorN)r r r r#E_MIXED_SERVICES_FAILURE_UNATTACHEDr(r r r r rIrDrc@rA)UnattachedInvalidServicesErrorNrr r r r rMrDrc@rA)EntitlementNotFoundErrorN)r r r rE_ENTITLEMENT_NOT_FOUNDr(r r r r rQrDrcs:eZdZdZejZdeee ej fffdd Z Z S)EntitlementsNotEnabledErrorfailed_servicescs$dd|D}tjd|iddS)NcSs(g|]}|d|dj|djdqS)rr&)r7rntitle)r7r4).0fr r r \sz8EntitlementsNotEnabledError.__init__..services)r+)rr)rr info_dictsr r r rYs  z$EntitlementsNotEnabledError.__init__) r r r rr E_ENTITLEMENTS_NOT_ENABLED_ERRORr*rrr"r@rr$r r r r rUs rc.eZdZejZdedejffdd ZZ S)EntitlementNotEnabledErrorservicerxc&tj|d|j|j|jdiddSNrx)rnrr+)rr+rrr7r4r+rrrxr r r rh z#EntitlementNotEnabledError.__init__) r r r rE_ENTITLEMENT_NOT_ENABLED_ERRORr(r"r@rr$r r r r re rcr)EntitlementNotDisabledErrorrrxcrrrrr r r rxrz$EntitlementNotDisabledError.__init__) r r r r E_ENTITLEMENT_NOT_DISABLED_ERRORr(r"r@rr$r r r r rurrc@rA)AttachFailureDefaultServicesN)r r r r!E_ATTACH_FAILURE_DEFAULT_SERVICESr*r r r r rrDrc@rA)AttachFailureUnknownErrorN)r r r rE_ATTACH_FAILURE_UNEXPECTEDr*r r r r rrDrc@rA) RepoNoAptKeyN)r r r rE_REPO_NO_APT_KEYr(r r r r rrDrc@rA) RepoNoSuitesN)r r r rE_REPO_NO_SUITESr(r r r r rrDrc@rA)RepoPinFailNoOriginN)r r r rE_REPO_PIN_FAIL_NO_ORIGINr(r r r r rrDrc@rA) InvalidContractDeltasServiceTypeN)r r r r&E_INVALID_CONTRACT_DELTAS_SERVICE_TYPEr(r r r r rrDrc@rA)%EntitlementsAPTDirectivesAreNotUniqueN)r r r r,E_ENTITLEMENTS_APT_DIRECTIVES_ARE_NOT_UNIQUEr(r r r r rrDrc@rA)RequiredServiceStopsEnableN)r r r rE_REQUIRED_SERVICE_STOPS_ENABLEr(r r r r rrDrc@rA)IncompatibleServiceStopsEnableN)r r r r#E_INCOMPATIBLE_SERVICE_STOPS_ENABLEr(r r r r rrDrc@rA)DependentServiceStopsDisableN)r r r r!E_DEPENDENT_SERVICE_STOPS_DISABLEr(r r r r rrDrc@rA)LandscapeConfigFailedN)r r r rE_LANDSCAPE_CONFIG_FAILEDr*r r r r rrDrc@rA)#NonInteractiveKernelPurgeDisallowedN)r r r r)E_NON_INTERACTIVE_KERNEL_PURGE_DISALLOWEDr*r r r r rrDrc@seZdZejZdZdS)InvalidProImageN)r r r rE_INVALID_PRO_IMAGEr( error_msgr r r r rsrc@rA)CloudMetadataErrorN)r r r rE_CLOUD_METADATA_ERRORr(r r r r rrDrc@r)GCPServiceAccountErrorz;An exception raised when GCP service account is not enabledN)r r r r;r$E_GCP_SERVICE_ACCT_NOT_ENABLED_ERRORr(r r r r rrrc@rA)AWSNoValidIMDSN)r r r rE_AWS_NO_VALID_IMDSr(r r r r rrDrc@r)CloudFactoryErrorNrr r r r rrrc@rA)CloudFactoryNoCloudErrorN)r r r r E_UNABLE_TO_DETERMINE_CLOUD_TYPEr*r r r r rrDrc@rA)CloudFactoryNonViableCloudErrorN)r r r rE_UNSUPPORTED_AUTO_ATTACHr*r r r r rrDrc@r)NonAutoAttachImageErrorz>Raised when machine isn't running an auto-attach enabled imagerN)r r r r;rr$E_UNSUPPORTED_AUTO_ATTACH_CLOUD_TYPEr(r r r r rrrc@rA)InvalidFileFormatErrorN)r r r rE_INVALID_FILE_FORMATr(r r r r rrDrc@rA)ParsingErrorOnOSReleaseFileN)r r r r"E_ERROR_PARSING_VERSION_OS_RELEASEr(r r r r rrDrc@rA)MissingSeriesOnOSReleaseFileN)r r r rE_MISSING_SERIES_ON_OS_RELEASEr(r r r r rrDrc@rA)InvalidLockFileN)r r r rE_INVALID_LOCK_FILEr(r r r r rrDrc@rA) InvalidJsonN)r r r rE_JSON_PARSER_ERRORr(r r r r rrDrc@rA)InvalidBooleanConfigValueN)r r r rE_INVALID_BOOLEAN_CONFIG_VALUEr(r r r r rrDrc@rA)InvalidPosIntConfigValueN)r r r r"E_CLI_CONFIG_VALUE_MUST_BE_POS_INTr(r r r r rrDrc@rA)InvalidURLConfigValueN)r r r rE_CONFIG_INVALID_URLr(r r r r rrDrc@rA)InvalidFeatureYamlConfigValueN)r r r rE_CONFIG_NO_YAML_FILEr(r r r r rrDrc@rA)InvalidProxyCombinationConfigN)r r r rE_INVALID_PROXY_COMBINATIONr*r r r r r rDrc@rA)MissingDistroInfoFileN)r r r rE_MISSING_DISTRO_INFO_FILEr*r r r r r rDrc@rA)MissingSeriesInDistroInfoFileN)r r r r$E_MISSING_SERIES_IN_DISTRO_INFO_FILEr(r r r r rrDrc@rA)InvalidOptionCombinationN)r r r rE_INVALID_OPTION_COMBINATIONr(r r r r rrDrc@rA) NoHelpContentN)r r r r E_CLI_NO_HELPr(r r r r rrDrc@rA)InvalidSecurityIssueIdFormatN)r r r r#E_SECURITY_FIX_CLI_ISSUE_REGEX_FAILr(r r r r r"rDrc@rA)InvalidArgChoiceN)r r r rE_CLI_VALID_CHOICESr(r r r r r&rDrc@rA)EmptyConfigValueN)r r r rE_CLI_EMPTY_CONFIG_VALUEr(r r r r r *rDr c@rA)GenericInvalidFormatN)r r r rE_CLI_EXPECTED_FORMATr(r r r r r .rDr c@rA)RefreshConfigFailureN)r r r rE_REFRESH_CONFIG_FAILUREr*r r r r r 2rDr c@rA)RefreshContractFailureN)r r r rE_REFRESH_CONTRACT_FAILUREr*r r r r r6rDrc@rA)RefreshMessagesFailureN)r r r rE_REFRESH_MESSAGES_FAILUREr*r r r r r:rDrc@rA)CLIJSONFormatRequireAssumeYesN)r r r r E_JSON_FORMAT_REQUIRE_ASSUME_YESr*r r r r r>rDrc@rA)CLIAttachTokenArgXORConfigN)r r r rE_ATTACH_TOKEN_ARG_XOR_CONFIGr*r r r r rBrDrc@rA)CLIAPIOptionsXORDataN)r r r r"E_API_ERROR_ARGS_AND_DATA_TOGETHERr*r r r r rFrDrc@rA)PromptDeniedErrorN)r r r rE_PROMPT_DENIEDr*r r r r rJrDrc@seZdZdZejZdZdS) LockHeldErrora An exception for when another pro operation is in progress :param lock_request: String of the command requesting the lock :param lock_holder: String of the command that currently holds the lock :param pid: Integer of the process id of the lock_holder N)r r r r;rE_LOCK_HELD_ERRORr(pidr r r r rSsrc@r)NonRootUserErrorz7An exception to be raised when a user needs to be root.N)r r r r;rE_NONROOT_USERr*r r r r r_rrc@r)SecurityAPIMetadataErrorzDAn exception raised with Security API metadata returns invalid data.N)r r r r;rE_SECURITY_API_INVALID_METADATAr(r r r r r err c@rA)SecurityIssueNotFoundN)r r r rE_SECURITY_FIX_NOT_FOUND_ISSUEr(r r r r r"krDr"c@rA)GPGKeyNotFoundN)r r r rE_GPG_KEY_NOT_FOUNDr(r r r r r$orDr$N)ttypingrrruaclientrr}rrrrr{rr%UserFacingErrorr=rBrErGrIrKrMrOrQrSrUrWrYr[r]r_rarcrergrirkrmrrrsrtrvUrlErrorr~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r rrrrrrrrr r"r$r r r r s '