
    gr                        d dl Z d dl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 d dlmZ i ddd	dd
ddddddddddddddddddddddddddddddddddddddd	Zd Zd!Zd"Zd#d$gZd%d&gZed    Zd'Z G d( d)e      Zy)*    N)gettext)ShortcutHandlerShortcutExceptionInvalidShortcutException)SourcesListShortcutHandler)URIShortcutHandler)urlparsefolsomprecisegrizzlyhavanaicehousejunotrustykilolibertymitakanewtonxenialocatapikequeensrockybionicsteintrainussurivictoriafocaljammynoble)	wallabyxenayogazedantelopebobcatcaracal	dalmatianepoxyzUbuntu Cloud Archivez.https://wiki.ubuntu.com/OpenStack/CloudArchivez0http://ubuntu-cloud.archive.canonical.com/ubuntuzcloud-archiveucaupdatesproposedzubuntu-cloud-keyringc                   h     e Zd Z fdZed        Zed        Zd Zd
 fd	Zd Z	d Z
d Zd	 Z xZS )CloudArchiveShortcutHandlerc                     t        t        | 
  |fi | d | _        t	        | j                  |      | j                  |      | j                  |      f      st        d      |z  }t        |      | j                  j                         | _        d| j                  z  | _        | j                  j                         | _        | j                  t        vr#t        d      | j                  z  }t        |      | j                  t        vr#t        d      | j                  z  }t        |      t        | j                     }t!        |t#        j$                  d      xs |f      }| j&                  |vrAt        d      | j                  j)                         |j)                         fz  }t        |      t*         d| j                  j)                          | _        | j                  dk(  r| xj,                  d	z  c_        | j.                  st| j&                   d
| j                   d| j                   }dj1                  | j2                        xs d}| j4                   dt6         d| d| }| j9                  |       y y )Nz&not a valid cloud-archive format: '%s'zcloudarchive-%sz&not a valid cloud-archive pocket: '%s'znot a valid cloud-archive: '%s'CA_ALLOW_CODENAMEz)cloud-archive for %s only supported on %sz for OpenStack r-   z [proposed]-/ main)superr/   __init__canameany
_match_uca
_match_uri_match_sourceslist_r   lower	_filebasepocketUCA_VALID_POCKETSr   RELEASE_MAPsetosgetenvcodename
capitalizeUCA_description_source_entryjoin
componentsbinary_typeUCA_ARCHIVE_set_source_entry)
selfshortcutkwargsmsgrF   
validnamesdistcompsline	__class__s
            A/usr/lib/python3/dist-packages/softwareproperties/cloudarchive.pyr7   z$CloudArchiveShortcutHandler.__init__K   s'   )49(MfM DOOH-OOH-++H57 8 =>IC*3//kk'')*T[[8kk''){{//=>LC#C(({{k)67$++EC#C((t{{+(BII.A$B$NhOP
==
*@AKK**,h.A.A.CDEC#C(("e?4;;3I3I3K2LM;;*$.!!mm_Adkk]!DKK=ADHHT__-7E&&'qQtfAeWED""4(	 "    c                     | j                   S N)rI   rP   s    rY   descriptionz'CloudArchiveShortcutHandler.descriptiont   s       rZ   c                     t         S r\   )WEB_LINKr]   s    rY   web_linkz$CloudArchiveShortcutHandler.web_linkx   s    rZ   c                 \    t        j                  dt         j                         d       y )Nzapt-get install -y T)check)
subprocessrunUCA_KEYRING_PACKAGEsplitr]   s    rY   add_keyz#CloudArchiveShortcutHandler.add_key|   s$    ,-@,ABHHJRVWrZ   c                 (    t         t        |          S r\   )r6   r/   _encode_filebase)rP   suffixrX   s     rY   rj   z,CloudArchiveShortcutHandler._encode_filebase   s    0$HJJrZ   c                     |j                  d      \  }}}|j                         t        vry|j                  d      \  }}}|sy|| _        |xs | j
                  xs t        | _        y)N:Fr2   T)
rpartitionr>   UCA_PREFIXES	partitionr8   r@   UCA_DEFAULT_POCKET)rP   rQ   prefixr=   r+   r8   r@   s          rY   r:   z&CloudArchiveShortcutHandler._match_uca   se    #..s3C||~-!mmC0FAA/ArZ   c                 V    	 | j                  t        |            S # t        $ r Y yw xY wNF)_match_handlerr   r   rP   rQ   s     rY   r;   z&CloudArchiveShortcutHandler._match_uri   s0    	&&'9('CDD' 		    	((c                 V    	 | j                  t        |            S # t        $ r Y yw xY wrt   )ru   r   r   rv   s     rY   r<   z.CloudArchiveShortcutHandler._match_sourceslist   s0    	&&'A('KLL' 		rw   c                    t        |j                         j                        }|j                  t        t              j                  k7  ry|j                         j
                  j                  d      \  }}}|j                  d      \  }}}t        ||f      sy|| _        |xs | j                  xs t        | _	        | j                  |j                         j                         y)NFr3   r2   T)r	   SourceEntryurihostnamerN   rU   rp   allr8   r@   rq   rO   rW   )rP   handlerparsedrF   r=   r8   r@   s          rY   ru   z*CloudArchiveShortcutHandler._match_handler   s    '--/334??h{3<<< ' 3 3 5 : : D DS I1f ( 2 23 71fHf%&AA/Aw22499:rZ   r\   )__name__
__module____qualname__r7   propertyr^   ra   rh   rj   r:   r;   r<   ru   __classcell__)rX   s   @rY   r/   r/   J   sQ    ')R ! !  XKrZ   r/   )rD   rd   r   r=   "softwareproperties.shortcuthandlerr   r   r   softwareproperties.sourceslistr   softwareproperties.urir   urllib.parser	   rB   rH   r`   rN   ro   rA   rq   rf   r/    rZ   rY   <module>r      s[  , 
   J J E 5 !iy i 		
 H H x h h X H h X X X  h!" #$ 58 ;@'
+ &q) , b/ brZ   