File: //lib/python3/dist-packages/cloudinit/distros/package_management/__pycache__/snap.cpython-38.pyc
U
Ӈg � @ sV d dl Z d dlmZmZ d dlmZmZ d dlmZm Z e �
e�ZG dd� de�Z
dS )� N)�Iterable�List)�subp�util)�PackageManager�UninstalledPackagesc @ sH e Zd ZdZed�dd�Zdd�dd�Zeed �d
d�Z e
dd
� �ZdS )�Snap�snap)�returnc C s t t�d��S )Nr )�boolr Zwhich)�self� r
�K/usr/lib/python3/dist-packages/cloudinit/distros/package_management/snap.py� available s zSnap.availableF)�forcec C s d S )Nr
)r r r
r
r �update_package_sources s zSnap.update_package_sources)�pkglistr
c C sn t �dt|��}g }|D ]P}zt�ddg|�dd� � W q tjk
rf |�|� t�d|� Y qX q|S )Nz%s=%sr �install�=� zFailed to 'snap install %s'!) r Zexpand_package_list�listr �split�ProcessExecutionError�append�LOG�info)r r Zfailed�pkgr
r
r �install_packages s
zSnap.install_packagesc
C s� ddddg} d }z(t � | �}t�|j��di ��d�}W n2 t jk
rj } zt�d| |� W 5 d }~X Y nX |dkr�t�d |� nt � ddg� d S )
Nr �get�systemz-dZrefreshZholdz9Continuing to snap refresh. Unable to run command: %s: %sZforeverz9Skipping snap refresh because refresh.hold is set to '%s')r r Z load_json�stdoutr r r r )ZcommandZ snap_hold�result�er
r
r �upgrade_packages$ s$
���zSnap.upgrade_packagesN)�__name__�
__module__�__qualname__�namer r r r r r �staticmethodr# r
r
r
r r s
r )Zlogging�typingr r Z cloudinitr r Z4cloudinit.distros.package_management.package_managerr r Z getLoggerr$ r r r
r
r
r �<module> s