o 7eB @sddlZddlZddlmZddlmZmZmZddlm Z ddl m Z ddl m Z iddd dd dd dd d dd dd dd ddddddddddddddddddddddddddZdZd Zd!Zd"d#gZd$d%gZedZd&ZGd'd(d(eZdS))N)gettext)ShortcutHandlerShortcutExceptionInvalidShortcutException)SourcesListShortcutHandler)URIShortcutHandler)urlparsefolsomprecisegrizzlyhavanaicehousejunotrustykilolibertymitakanewtonxenialocatapikequeensrockybionicsteintrainussurivictoriafocaljammy)wallabyxenayogazedantelopebobcatcaracalzUbuntu Cloud Archivez.https://wiki.ubuntu.com/OpenStack/CloudArchivez0http://ubuntu-cloud.archive.canonical.com/ubuntuz cloud-archiveucaupdatesproposedzubuntu-cloud-keyringcsjeZdZfddZeddZeddZddZdfd d Zd d Z ddZ ddZ ddZ Z S)CloudArchiveShortcutHandlerc  stt|j|fi|d|_t||||||fs)td|}t ||j |_d|j|_ |j |_ |j t vrKtd|j }t||jtvr[td|j}t|t|j}t|tdph|f}|j|vrtd|j|f}t|td|j|_|j dkr|jd 7_|js|jd |j d |j}d |jpd }|jd td |d |}||dSdS)Nz¬ a valid cloud-archive format: '%s'zcloudarchive-%sz¬ a valid cloud-archive pocket: '%s'znot a valid cloud-archive: '%s'CA_ALLOW_CODENAMEz)cloud-archive for %s only supported on %sz for OpenStack r)z [proposed]-/ main)superr*__init__canameany _match_uca _match_uri_match_sourceslist_rlower _filebasepocketUCA_VALID_POCKETSr RELEASE_MAPsetosgetenvcodename capitalizeUCA _description _source_entryjoin components binary_type UCA_ARCHIVE_set_source_entry) selfshortcutkwargsmsgr@ validnamesdistcompsline __class__A/usr/lib/python3/dist-packages/softwareproperties/cloudarchive.pyr1IsB          z$CloudArchiveShortcutHandler.__init__cCs|jSN)rCrJrTrTrU descriptionrsz'CloudArchiveShortcutHandler.descriptioncCstSrV)WEB_LINKrWrTrTrUweb_linkvsz$CloudArchiveShortcutHandler.web_linkcCstjdtdddS)Nzapt-get install -y T)check) subprocessrunUCA_KEYRING_PACKAGEsplitrWrTrTrUadd_keyzsz#CloudArchiveShortcutHandler.add_keyNcstt|SrV)r0r*_encode_filebase)rJsuffixrRrTrUra~sz,CloudArchiveShortcutHandler._encode_filebasecCsR|d\}}}|tvrdS|d\}}}|sdS||_|p%|jp%t|_dS)N:Fr,T) rpartitionr8 UCA_PREFIXES partitionr2r:UCA_DEFAULT_POCKET)rJrKprefixr7r'r2r:rTrTrUr4s z&CloudArchiveShortcutHandler._match_ucacC&z|t|WStyYdSwNF)_match_handlerrrrJrKrTrTrUr5  z&CloudArchiveShortcutHandler._match_uricCrirj)rkrrrlrTrTrUr6rmz.CloudArchiveShortcutHandler._match_sourceslistcCst|j}|jttjkrdS|jd\}}}|d\}}}t||fs,dS||_|p5|j p5t |_ | |j dS)NFr-r,T) r SourceEntryurihostnamerHrOrfallr2r:rgrIrQ)rJhandlerparsedr@r7r2r:rTrTrUrks z*CloudArchiveShortcutHandler._match_handlerrV)__name__ __module__ __qualname__r1propertyrXrZr`rar4r5r6rk __classcell__rTrTrRrUr*Hs )   r*)r>r\rr7"softwareproperties.shortcuthandlerrrrsoftwareproperties.sourceslistrsoftwareproperties.urir urllib.parserr<rBrYrHrer;rgr^r*rTrTrTrUst