3
.(]                 @   sv   d dl m Z d dlZd dlZd dlmZmZ yejdd d dlmZ W n e	e
fk
r`   Y nX G dd deZdS )	    )gettextN)GioGLibSnapd1)r   c               @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )LivepatchSnapzcanonical-livepatchc             C   s   t j | _tj | _d S )N)r   ZClient_snapd_clientr   ZCancellable_cancellable)self r   B/usr/lib/python3/dist-packages/softwareproperties/LivepatchSnap.py__init__)   s    
zLivepatchSnap.__init__c             C   s   | j  }|r|j S tjjS )z Get the status of canonical-livepatch snap.

        Returns:
            Snapd.SnapStatus.Enun: An enum indicating the status of the snap.
        )_get_raw_snap
get_statusr   
SnapStatusZUNKNOWN)r
   snapr   r   r   r   -   s    zLivepatchSnap.get_statusc             C   st   | j  }|tjjkr*tjdj| j dS |tjjkr>| j	 S |tjj
krR| j S tjdj| j dtdfS dS )	zEnable or install canonical-livepatch snap.

        Returns:
            (True, '') if successful, (False, error_message) otherwise.
        z{} snap is already activeT z{} snap is in an unknown stateFz-Canonical Livepatch snap cannot be installed.N)Tr   )r   r   r   ZACTIVEloggingZwarningformat	SNAP_NAME	AVAILABLE_install	INSTALLED_enable_)r
   Zstatusr   r   r   enable_or_install6   s    zLivepatchSnap.enable_or_installc             C   s   y| j j| j| jd}W n: tjk
rR } ztjdj|j	 d}W Y dd}~X nX |r\|S y*| j j
tjj| j| jd\}}|d }W n6 tjk
r } ztjdj|j	 W Y dd}~X nX |S )zGet the Sanpd.Snap raw object of the canonical-livepatch snapd.

        Returns:
            Sanpd.Snap if successful, None otherwise.
        )namecancellablez%Snapd.Client.get_snap_sync failed: {}N)flagsZqueryr   r   z!Snapd.Client.find_sync failed: {})r   Zget_snap_syncr   r	   r   Errorr   debugr   messageZ	find_syncr   Z	FindFlagsZ
MATCH_NAME)r
   r   eZsnapsZignoredr   r   r   r   J   s$    $zLivepatchSnap._get_raw_snapc             C   sn   | j  tjjksty| jjtjj| j	| j
d W n2 tjk
rd } zdtdj|jfS d}~X nX dS dS )zInstall canonical-livepatch snap.

        Returns:
            (True, '') if successful, (False, error_message) otherwise.
        )r   r   r   Fz0Canonical Livepatch snap cannot be installed: {}NTr   )Tr   )r   r   r   r   AssertionErrorr   Zinstall2_syncZInstallFlagsZNONEr   r	   r   r   r   r   r!   )r
   r"   r   r   r   r   f   s     zLivepatchSnap._installc             C   sh   | j  tjjksty| jj| j| jd W n2 t	j
k
r^ } zdtdj|jfS d}~X nX dS dS )zEnable the canonical-livepatch snap.

        Returns:
            (True, '') if successful, (False, error_message) otherwise.
        )r   r   Fz.Canonical Livepatch snap cannot be enabled: {}NTr   )Tr   )r   r   r   r   r#   r   Zenable_syncr   r	   r   r   r   r   r!   )r
   r"   r   r   r   r   x   s     zLivepatchSnap._enableN)
__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   #   s   	r   )r   r   r   ZgiZgi.repositoryr   r   Zrequire_versionr   ImportError
ValueErrorobjectr   r   r   r   r   <module>   s   