
    x[h                     v    d dl Z d dlmZmZ d dlmZmZ d dlmZm	Z	  e j                  e      Z G d de      Zy)    N)IterableList)subputil)PackageManagerUninstalledPackagesc                   H    e Zd ZdZdefdZdddZdedefdZ	e
d	        Zy
)Snapsnapreturnc                 >    t        t        j                  d            S )Nr   )boolr   which)selfs    K/usr/lib/python3/dist-packages/cloudinit/distros/package_management/snap.py	availablezSnap.available   s    DJJv&''    F)forcec                     y )N )r   r   s     r   update_package_sourceszSnap.update_package_sources   s    r   pkglistc                 ,   t        j                  dt        |            }g }|D ]-  }	 t        j                  ddg|j	                  dd      z          / |S # t        j
                  $ r* |j                  |       t        j                  d|       Y nw xY w)Nz%s=%sr   install=   zFailed to 'snap install %s'!)	r   expand_package_listlistr   splitProcessExecutionErrorappendLOGinfo)r   r   failedpkgs       r   install_packageszSnap.install_packages   s     **7DMB 	>C>		69-		#q0AAB	>  -- >c"7=>s   *A:BBc                     g d} d }	 t        j                   |       }t        j                  |j                        j	                  di       j	                  d      }|dk(  rt        j                  d|       y t        j                   ddg       y # t         j
                  $ r!}t        j                  d| |       Y d }~cd }~ww xY w)N)r   getsystemz-drefreshholdz9Continuing to snap refresh. Unable to run command: %s: %sforeverz9Skipping snap refresh because refresh.hold is set to '%s'r   )r   r   	load_jsonstdoutr(   r    r"   r#   )command	snap_holdresultes       r   upgrade_packageszSnap.upgrade_packages$   s    1	
	YYw'Fv}}-11)R@DDVL  	!HHK
 IIvy)* )) 	HHK 	s   AB C"B>>CN)__name__
__module____qualname__namer   r   r   r   r   r&   staticmethodr3   r   r   r   r
   r
      sE    D(4 ( /4  5H  + +r   r
   )loggingtypingr   r   	cloudinitr   r   4cloudinit.distros.package_management.package_managerr   r   	getLoggerr4   r"   r
   r   r   r   <module>r>      s3     !  
 g!++> ++r   