x[hvddlZddlmZmZddlmZmZddlmZm Z eje Z GddeZ y)N)IterableList)subputil)PackageManagerUninstalledPackagescHeZdZdZdefdZdddZdedefdZ e d Z y ) Snapsnapreturnc>ttjdS)Nr )boolrwhich)selfs K/usr/lib/python3/dist-packages/cloudinit/distros/package_management/snap.py availablezSnap.availablesDJJv&''F)forcecy)N)rrs rupdate_package_sourceszSnap.update_package_sourcess rpkglistc,tjdt|}g}|D]-} tjddg|j ddz/|S#tj $r*|j |tjd|YnwxYw)Nz%s=%sr install=zFailed to 'snap install %s'!) rexpand_package_listlistrsplitProcessExecutionErrorappendLOGinfo)rrfailedpkgs rinstall_packageszSnap.install_packagess**7DMB >C > 69- #q0AAB >  -- > c"7= >s*A:BBcgd}d} tj|}tj|jj dij d}|dk(rt jd|ytjddgy#tj $r!}t jd||Yd}~cd}~wwxYw)N)r getsystemz-drefreshholdz9Continuing to snap refresh. Unable to run command: %s: %sforeverz9Skipping snap refresh because refresh.hold is set to '%s'r )rr load_jsonstdoutr(r r"r#)command snap_holdresultes rupgrade_packageszSnap.upgrade_packages$s1  YYw'Fv}}-11)R@DDVL   ! HHK  IIvy) *))  HHK   sABC"B>>CN) __name__ __module__ __qualname__namerrrrrr& staticmethodr3rrrr r sE D(4(/4   5H ++rr )loggingtypingrr cloudinitrr4cloudinit.distros.package_management.package_managerrr getLoggerr4r"r rrrr>s3!  g!++>++r