
Kew:                 @   sv  d  d l  m Z m Z m Z d  d l m Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z	 Gd	 d
   d
 e  Z
 Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z e Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d    d  e  Z Gd! d"   d" e  Z Gd# d$   d$ e  Z Gd% d&   d& e  Z Gd' d(   d( e  Z Gd) d*   d* e  Z Gd+ d,   d, e  Z Gd- d.   d. e  Z Gd/ d0   d0 e  Z Gd1 d2   d2 e  Z  Gd3 d4   d4 e  Z! Gd5 d6   d6 e  Z" Gd7 d8   d8 e  Z# Gd9 d:   d: e  Z$ Gd; d<   d< e  Z% Gd= d>   d> e  Z& Gd? d@   d@ e  Z' GdA dB   dB e'  Z( GdC dD   dD e'  Z) GdE dF   dF e  Z* GdG dH   dH e  Z+ GdI dJ   dJ e  Z, GdK dL   dL e  Z- GdM dN   dN e  Z. GdO dP   dP e  Z/ GdQ dR   dR e  Z0 GdS dT   dT e  Z1 GdU dV   dV e  Z2 GdW dX   dX e  Z3 GdY dZ   dZ e  Z4 Gd[ d\   d\ e  Z5 Gd] d^   d^ e  Z6 Gd_ d`   d` e  Z7 Gda db   db e  Z8 Gdc dd   dd e  Z9 Gde df   df e  Z: Gdg dh   dh e  Z; Gdi dj   dj e  Z< Gdk dl   dl e  Z= Gdm dn   dn e  Z> Gdo dp   dp e>  Z? Gdq dr   dr e>  Z@ Gds dt   dt e  ZA Gdu dv   dv e  ZB Gdw dx   dx e  ZC Gdy dz   dz e  ZD Gd{ d|   d| e  ZE Gd} d~   d~ e  ZF Gd d   d eF  ZG Gd d   d e  ZH Gd d   d e  ZI Gd d   d eI  ZJ Gd d   d eI  ZK Gd d   d eI  ZL Gd d   d e  ZM Gd d   d e  ZN Gd d   d e  ZO Gd d   d e  ZP Gd d   d e  ZQ Gd d   d e  ZR Gd d   d e  ZS Gd d   d e  ZT Gd d   d e  ZU Gd d   d e  ZV Gd d   d e  ZW Gd d   d e  ZX Gd d   d e  ZY Gd d   d e  ZZ Gd d   d e  Z[ Gd d   d e  Z\ Gd d   d e  Z] Gd d   d e  Z^ Gd d   d e  Z_ Gd d   d e  Z` Gd d   d e  Za Gd d   d e  Zb Gd d   d e  Zc Gd d   d e  Zd Gd d   d e  Ze Gd d   d e  Zf Gd d   d e  Zg Gd d   d e  Zh d S)    )ListOptionalTuple)messagesc               @   s   e  Z d  Z d S)InPlaceUpgradeNotSupportedErrorN)__name__
__module____qualname__ r
   r
   5/usr/lib/python3/dist-packages/uaclient/exceptions.pyr      s   r   c               @   s   e  Z d  Z d S)IsProLicensePresentErrorN)r   r   r	   r
   r
   r
   r   r   
   s   r   c               @   s   e  Z d  Z d S)CancelProLicensePollingN)r   r   r	   r
   r
   r
   r   r      s   r   c               @   s   e  Z d  Z d S)DelayProLicensePollingN)r   r   r	   r
   r
   r
   r   r      s   r   c                   s.   e  Z d  Z e e d   f d d    Z   S)UrlError)causeurlc                sS   t  | d d   r* t t  | d   } n t |  } t   j |  | |  _ d  S)Nreason)getattrstrsuper__init__r   )selfr   r   Zcause_error)	__class__r
   r   r      s
    zUrlError.__init__)r   r   r	   	Exceptionr   r   r
   r
   )r   r   r      s   r   c                   sD   e  Z d  Z d d d e e e e e d d   f d d   Z   S)ProcessExecutionErrorN )cmd	exit_codestdoutstderrreturnc                sn   | |  _  | |  _ | |  _ | s9 t j j d |  } n! t j j d | d | d |  } t   j |  d  S)Nr   r   r   )	r   r   r   r   ZSUBP_INVALID_COMMANDformatZSUBP_COMMAND_FAILEDr   r   )r   r   r   r   r   message)r   r
   r   r   %   s    			zProcessExecutionError.__init__)r   r   r	   r   r   intr   r
   r
   )r   r   r   $   s   r   c               @   sm   e  Z d  Z d Z d Z d Z d Z d d d d    Z e d d    Z	 e d	 d
    Z
 d d   Z d S)UbuntuProErrorzu
    Base class for all of our custom errors.
    All possible exceptions from our API should extend this class.
    N   )r    c             K   sm   |  j  d  k	 r' |  j  j |   |  _ n |  j |  _ | |  _ x* | j   D] \ } } t |  | |  qI Wd  S)N)_formatted_msgr!   	named_msg_msgadditional_infoitemssetattr)r   kwargskeyvaluer
   r
   r   r   C   s    		zUbuntuProError.__init__c             C   s
   |  j  j S)N)r'   msg)r   r
   r
   r   r/   P   s    zUbuntuProError.msgc             C   s
   |  j  j S)N)r'   name)r   r
   r
   r   msg_codeT   s    zUbuntuProError.msg_codec             C   s
   |  j  j S)N)r'   r/   )r   r
   r
   r   __str__X   s    zUbuntuProError.__str__)r   r   r	   __doc__r(   r&   r   r   propertyr/   r1   r2   r
   r
   r
   r   r$   8   s   r$   c                   s4   e  Z d  Z d Z e j d   f d d    Z   S)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                s   t    j |   | |  _ d  S)N)r   r   r'   )r   r'   r,   )r   r
   r   r   i   s    z AnonymousUbuntuProError.__init__)r   r   r	   r3   r   NamedMessager   r
   r
   )r   r   r5   b   s   r5   c               @   s   e  Z d  Z e j Z d S)APTProcessConflictErrorN)r   r   r	   r   ZE_APT_PROCESS_CONFLICTr(   r
   r
   r
   r   r7   s   s   r7   c               @   s   e  Z d  Z e j Z d S)APTInvalidRepoErrorN)r   r   r	   r   ZE_APT_UPDATE_INVALID_URL_CONFIGr&   r
   r
   r
   r   r8   w   s   r8   c               @   s   e  Z d  Z e j Z d S)APTUpdateProcessConflictErrorN)r   r   r	   r   ZE_APT_UPDATE_PROCESS_CONFLICTr(   r
   r
   r
   r   r9   {   s   r9   c               @   s   e  Z d  Z e j Z d S)APTUpdateInvalidRepoErrorN)r   r   r	   r   ZE_APT_UPDATE_INVALID_REPOr&   r
   r
   r
   r   r:      s   r:   c               @   s   e  Z d  Z e j Z d S)APTUpdateFailedN)r   r   r	   r   ZE_APT_UPDATE_FAILEDr&   r
   r
   r
   r   r;      s   r;   c               @   s   e  Z d  Z e j Z d S)APTInstallProcessConflictErrorN)r   r   r	   r   ZE_APT_INSTALL_PROCESS_CONFLICTr(   r
   r
   r
   r   r<      s   r<   c               @   s   e  Z d  Z e j Z d S)APTInstallInvalidRepoErrorN)r   r   r	   r   ZE_APT_INSTALL_INVALID_REPOr&   r
   r
   r
   r   r=      s   r=   c               @   s   e  Z d  Z e j Z d S)APTInvalidCredentialsN)r   r   r	   r   ZE_APT_INVALID_CREDENTIALSr&   r
   r
   r
   r   r>      s   r>   c               @   s   e  Z d  Z e j Z d S)
APTTimeoutN)r   r   r	   r   ZE_APT_TIMEOUTr&   r
   r
   r
   r   r?      s   r?   c               @   s   e  Z d  Z e j Z d S)APTUnexpectedErrorN)r   r   r	   r   ZE_APT_UNEXPECTED_ERRORr&   r
   r
   r
   r   r@      s   r@   c               @   s   e  Z d  Z e j Z d S)APTCommandTimeoutN)r   r   r	   r   ZE_APT_COMMAND_TIMEOUTr&   r
   r
   r
   r   rA      s   rA   c               @   s   e  Z d  Z e j Z d S)SnapNotInstalledErrorN)r   r   r	   r   ZE_SNAP_NOT_INSTALLED_ERRORr&   r
   r
   r
   r   rB      s   rB   c               @   s   e  Z d  Z e j Z d S)UnexpectedSnapdAPIErrorN)r   r   r	   r   ZE_UNEXPECTED_SNAPD_API_ERRORr&   r
   r
   r
   r   rC      s   rC   c               @   s   e  Z d  Z e j Z d S)SnapdAPIConnectionRefusedN)r   r   r	   r   ZE_SNAPD_CONNECTION_REFUSEDr(   r
   r
   r
   r   rD      s   rD   c               @   s   e  Z d  Z e j Z d S)CannotInstallSnapdErrorN)r   r   r	   r   ZE_CANNOT_INSTALL_SNAPDr(   r
   r
   r
   r   rE      s   rE   c               @   s   e  Z d  Z e j Z d S)ErrorInstallingLivepatchN)r   r   r	   r   ZE_ERROR_INSTALLING_LIVEPATCHr&   r
   r
   r
   r   rF      s   rF   c               @   s   e  Z d  Z e j Z d S)ProxyNotWorkingErrorN)r   r   r	   r   ZE_NOT_SETTING_PROXY_NOT_WORKINGr&   r
   r
   r
   r   rG      s   rG   c               @   s   e  Z d  Z e j Z d S)ProxyInvalidUrlN)r   r   r	   r   ZE_NOT_SETTING_PROXY_INVALID_URLr&   r
   r
   r
   r   rH      s   rH   c               @   s   e  Z d  Z e j Z d S)PycurlRequiredErrorN)r   r   r	   r   ZE_PYCURL_REQUIREDr(   r
   r
   r
   r   rI      s   rI   c               @   s   e  Z d  Z e j Z d S)PycurlErrorN)r   r   r	   r   ZE_PYCURL_ERRORr&   r
   r
   r
   r   rJ      s   rJ   c               @   s   e  Z d  Z e j Z d S)ProxyAuthenticationFailedN)r   r   r	   r   ZE_PROXY_AUTH_FAILr(   r
   r
   r
   r   rK      s   rK   c               @   s   e  Z d  Z e j Z d S)ConnectivityErrorN)r   r   r	   r   ZE_CONNECTIVITY_ERRORr(   r
   r
   r
   r   rL      s   rL   c               @   s7   e  Z d  Z e j Z d Z d Z d Z d d   Z	 d S)ExternalAPIErrorNc             C   s   d j  |  j |  j |  j  S)Nz{}: [{}], {})r!   coder   body)r   r
   r
   r   r2      s    zExternalAPIError.__str__)
r   r   r	   r   ZE_EXTERNAL_API_ERRORr&   rN   r   rO   r2   r
   r
   r
   r   rM      s
   	rM   c               @   s   e  Z d  Z d S)ContractAPIErrorN)r   r   r	   r
   r
   r
   r   rP      s   rP   c               @   s   e  Z d  Z d S)SecurityAPIErrorN)r   r   r	   r
   r
   r
   r   rQ      s   rQ   c                   s4   e  Z d  Z e j Z d d   f d d    Z   S)PycurlCACertificatesErrorN)r    c                s   t    j |   | |  _ d  S)N)r   r   r   )r   r   r,   )r   r
   r   r      s    z"PycurlCACertificatesError.__init__)r   r   r	   r   ZE_PYCURL_CA_CERTIFICATESr(   r   r
   r
   )r   r   rR      s   	rR   c               @   s   e  Z d  Z e j Z d S)InvalidServiceOpErrorN)r   r   r	   r   E_INVALID_SERVICE_OP_FAILUREr&   r
   r
   r
   r   rS      s   rS   c               @   s%   e  Z d  Z d Z d Z e j Z d S)AlreadyAttachedErrorzDAn exception to be raised when a command needs an unattached system.   N)r   r   r	   r3   r   r   ZE_ALREADY_ATTACHEDr&   r
   r
   r
   r   rU      s   rU   c               @   s%   e  Z d  Z d Z d Z e j Z d S)AttachErrorz@An exception to be raised when we detect a generic attach error.r%   N)r   r   r	   r3   r   r   ZE_ATTACH_FAILUREr(   r
   r
   r
   r   rW      s   rW   c               @   s   e  Z d  Z e j Z d S)AttachInvalidConfigFileErrorN)r   r   r	   r   ZE_ATTACH_CONFIG_READ_ERRORr&   r
   r
   r
   r   rX     s   rX   c               @   s   e  Z d  Z e j Z d S)AttachInvalidTokenErrorN)r   r   r	   r   ZE_ATTACH_INVALID_TOKENr(   r
   r
   r
   r   rY   
  s   rY   c               @   s   e  Z d  Z e j Z d S)AttachForbiddenExpiredN)r   r   r	   r   ZE_ATTACH_FORBIDDEN_EXPIREDr&   r
   r
   r
   r   rZ     s   rZ   c               @   s   e  Z d  Z e j Z d S)AttachForbiddenNotYetN)r   r   r	   r   ZE_ATTACH_FORBIDDEN_NOT_YETr&   r
   r
   r
   r   r[     s   r[   c               @   s   e  Z d  Z e j Z d S)AttachForbiddenNeverN)r   r   r	   r   ZE_ATTACH_FORBIDDEN_NEVERr&   r
   r
   r
   r   r\     s   r\   c               @   s   e  Z d  Z e j Z d S)AttachExpiredTokenN)r   r   r	   r   ZE_ATTACH_EXPIRED_TOKENr(   r
   r
   r
   r   r]     s   r]   c               @   s   e  Z d  Z e j Z d S) MagicAttachTokenAlreadyActivatedN)r   r   r	   r   Z&E_MAGIC_ATTACH_TOKEN_ALREADY_ACTIVATEDr(   r
   r
   r
   r   r^     s   r^   c               @   s   e  Z d  Z e j Z d S)MagicAttachTokenErrorN)r   r   r	   r   ZE_MAGIC_ATTACH_TOKEN_ERRORr(   r
   r
   r
   r   r_   "  s   r_   c               @   s   e  Z d  Z e j Z d S)MagicAttachUnavailableN)r   r   r	   r   ZE_MAGIC_ATTACH_UNAVAILABLEr(   r
   r
   r
   r   r`   &  s   r`   c               @   s   e  Z d  Z e j Z d S)MagicAttachInvalidParamN)r   r   r	   r   ZE_MAGIC_ATTACH_INVALID_PARAMr&   r
   r
   r
   r   ra   *  s   ra   c               @   s   e  Z d  Z d Z e j Z d S)MissingAptURLDirectivez@An exception for when the contract server doesn't include aptURLN)r   r   r	   r3   r   ZE_MISSING_APT_URL_DIRECTIVEr&   r
   r
   r
   r   rb   .  s   rb   c               @   s   e  Z d  Z d Z e j Z d S)UnattachedErrorz>An exception to be raised when a machine needs to be attached.N)r   r   r	   r3   r   ZE_UNATTACHEDr(   r
   r
   r
   r   rc   4  s   rc   c               @   s   e  Z d  Z e j Z d S)UnattachedValidServicesErrorN)r   r   r	   r   Z"E_VALID_SERVICE_FAILURE_UNATTACHEDr&   r
   r
   r
   r   rd   :  s   rd   c               @   s   e  Z d  Z e j Z d S)UnattachedMixedServicesErrorN)r   r   r	   r   Z#E_MIXED_SERVICES_FAILURE_UNATTACHEDr&   r
   r
   r
   r   re   >  s   re   c               @   s   e  Z d  Z e j Z d S)UnattachedInvalidServicesErrorN)r   r   r	   r   rT   r&   r
   r
   r
   r   rf   B  s   rf   c               @   s   e  Z d  Z e j Z d S)EntitlementNotFoundErrorN)r   r   r	   r   ZE_ENTITLEMENT_NOT_FOUNDr&   r
   r
   r
   r   rg   F  s   rg   c                   sK   e  Z d  Z d Z e j Z e e e	 e j
 f d   f d d    Z   S)EntitlementsNotEnabledError   )failed_servicesc                s0   d d   | D } t    j d d | i  d  S)Nc          	   S   s:   g  |  ]0 } d  | d d | d j  d | d j i  q S)r0   r   rN   r%   title)r0   r/   ).0fr
   r
   r   
<listcomp>S  s   	z8EntitlementsNotEnabledError.__init__.<locals>.<listcomp>r)   services)r   r   )r   rj   Z
info_dicts)r   r
   r   r   O  s    	
z$EntitlementsNotEnabledError.__init__)r   r   r	   r   r   Z E_ENTITLEMENTS_NOT_ENABLED_ERRORr(   r   r   r   r6   r   r
   r
   )r   r   rh   J  s   	rh   c               @   s   e  Z d  Z e j Z d S)AttachFailureDefaultServicesN)r   r   r	   r   Z!E_ATTACH_FAILURE_DEFAULT_SERVICESr(   r
   r
   r
   r   rp   [  s   rp   c               @   s   e  Z d  Z e j Z d S)AttachFailureUnknownErrorN)r   r   r	   r   ZE_ATTACH_FAILURE_UNEXPECTEDr(   r
   r
   r
   r   rq   _  s   rq   c               @   s   e  Z d  Z e j Z d S)RepoNoAptKeyN)r   r   r	   r   ZE_REPO_NO_APT_KEYr&   r
   r
   r
   r   rr   c  s   rr   c               @   s   e  Z d  Z e j Z d S)RepoNoSuitesN)r   r   r	   r   ZE_REPO_NO_SUITESr&   r
   r
   r
   r   rs   g  s   rs   c               @   s   e  Z d  Z e j Z d S)RepoPinFailNoOriginN)r   r   r	   r   ZE_REPO_PIN_FAIL_NO_ORIGINr&   r
   r
   r
   r   rt   k  s   rt   c               @   s   e  Z d  Z e j Z d S) InvalidContractDeltasServiceTypeN)r   r   r	   r   Z&E_INVALID_CONTRACT_DELTAS_SERVICE_TYPEr&   r
   r
   r
   r   ru   o  s   ru   c               @   s   e  Z d  Z e j Z d Z d S)InvalidProImageN)r   r   r	   r   ZE_INVALID_PRO_IMAGEr&   	error_msgr
   r
   r
   r   rv   x  s   	rv   c               @   s   e  Z d  Z e j Z d S)CloudMetadataErrorN)r   r   r	   r   ZE_CLOUD_METADATA_ERRORr&   r
   r
   r
   r   rx   }  s   rx   c               @   s   e  Z d  Z d Z e j Z d S)GCPServiceAccountErrorz;An exception raised when GCP service account is not enabledN)r   r   r	   r3   r   Z$E_GCP_SERVICE_ACCT_NOT_ENABLED_ERRORr&   r
   r
   r
   r   ry     s   ry   c               @   s   e  Z d  Z e j Z d S)AWSNoValidIMDSN)r   r   r	   r   ZE_AWS_NO_VALID_IMDSr&   r
   r
   r
   r   rz     s   rz   c               @   s   e  Z d  Z d S)CloudFactoryErrorN)r   r   r	   r
   r
   r
   r   r{     s   r{   c               @   s   e  Z d  Z e j Z d S)CloudFactoryNoCloudErrorN)r   r   r	   r   Z E_UNABLE_TO_DETERMINE_CLOUD_TYPEr(   r
   r
   r
   r   r|     s   r|   c               @   s   e  Z d  Z e j Z d S)CloudFactoryNonViableCloudErrorN)r   r   r	   r   ZE_UNSUPPORTED_AUTO_ATTACHr(   r
   r
   r
   r   r}     s   r}   c               @   s%   e  Z d  Z d Z d Z e j Z d S)NonAutoAttachImageErrorz>Raised when machine isn't running an auto-attach enabled imager   N)r   r   r	   r3   r   r   Z$E_UNSUPPORTED_AUTO_ATTACH_CLOUD_TYPEr&   r
   r
   r
   r   r~     s   r~   c               @   s   e  Z d  Z e j Z d S)InvalidFileFormatErrorN)r   r   r	   r   ZE_INVALID_FILE_FORMATr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)ParsingErrorOnOSReleaseFileN)r   r   r	   r   Z"E_ERROR_PARSING_VERSION_OS_RELEASEr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)MissingSeriesOnOSReleaseFileN)r   r   r	   r   ZE_MISSING_SERIES_ON_OS_RELEASEr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidLockFileN)r   r   r	   r   ZE_INVALID_LOCK_FILEr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidJsonN)r   r   r	   r   ZE_JSON_PARSER_ERRORr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidBooleanConfigValueN)r   r   r	   r   ZE_INVALID_BOOLEAN_CONFIG_VALUEr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidPosIntConfigValueN)r   r   r	   r   Z"E_CLI_CONFIG_VALUE_MUST_BE_POS_INTr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidURLConfigValueN)r   r   r	   r   ZE_CONFIG_INVALID_URLr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidFeatureYamlConfigValueN)r   r   r	   r   ZE_CONFIG_NO_YAML_FILEr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidProxyCombinationConfigN)r   r   r	   r   ZE_INVALID_PROXY_COMBINATIONr(   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)MissingDistroInfoFileN)r   r   r	   r   ZE_MISSING_DISTRO_INFO_FILEr(   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)MissingSeriesInDistroInfoFileN)r   r   r	   r   Z$E_MISSING_SERIES_IN_DISTRO_INFO_FILEr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidOptionCombinationN)r   r   r	   r   ZE_INVALID_OPTION_COMBINATIONr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)NoHelpContentN)r   r   r	   r   ZE_CLI_NO_HELPr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidSecurityIssueIdFormatN)r   r   r	   r   Z#E_SECURITY_FIX_CLI_ISSUE_REGEX_FAILr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)InvalidArgChoiceN)r   r   r	   r   ZE_CLI_VALID_CHOICESr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)GenericInvalidFormatN)r   r   r	   r   ZE_CLI_EXPECTED_FORMATr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)RefreshConfigFailureN)r   r   r	   r   ZE_REFRESH_CONFIG_FAILUREr(   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)RefreshContractFailureN)r   r   r	   r   ZE_REFRESH_CONTRACT_FAILUREr(   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)RefreshMessagesFailureN)r   r   r	   r   ZE_REFRESH_MESSAGES_FAILUREr(   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)CLIJSONFormatRequireAssumeYesN)r   r   r	   r   Z E_JSON_FORMAT_REQUIRE_ASSUME_YESr(   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)CLIAttachTokenArgXORConfigN)r   r   r	   r   ZE_ATTACH_TOKEN_ARG_XOR_CONFIGr(   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)CLIAPIOptionsXORDataN)r   r   r	   r   Z"E_API_ERROR_ARGS_AND_DATA_TOGETHERr(   r
   r
   r
   r   r      s   r   c               @   s%   e  Z d  Z d Z e j Z d Z d S)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	   r3   r   ZE_LOCK_HELD_ERRORr&   pidr
   r
   r
   r   r   	  s   	r   c               @   s   e  Z d  Z d Z e j Z d S)NonRootUserErrorz7An exception to be raised when a user needs to be root.N)r   r   r	   r3   r   ZE_NONROOT_USERr(   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z d Z e j Z d S)SecurityAPIMetadataErrorzDAn exception raised with Security API metadata returns invalid data.N)r   r   r	   r3   r   ZE_SECURITY_API_INVALID_METADATAr&   r
   r
   r
   r   r     s   r   c               @   s   e  Z d  Z e j Z d S)SecurityIssueNotFoundN)r   r   r	   r   ZE_SECURITY_FIX_NOT_FOUND_ISSUEr&   r
   r
   r
   r   r   !  s   r   c               @   s   e  Z d  Z e j Z d S)GPGKeyNotFoundN)r   r   r	   r   ZE_GPG_KEY_NOT_FOUNDr&   r
   r
   r
   r   r   %  s   r   N)itypingr   r   r   uaclientr   r   r   r   r   r   IOErrorr   r   r$   ZUserFacingErrorr5   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rP   rQ   rR   rS   rU   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   rp   rq   rr   rs   rt   ru   rv   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r
   r
   r   <module>   s   '		
			