U
    id                     @   sX   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
Z
G dd deZdS )	    )UbuntuPlugin)DebianPolicy)SnapPackageManager)DpkgPackageManager)MultiPackageManagerNc                       sx   e Zd ZdZdZddgZdZdZdZdZ	dZ
d fdd	ZedddZdd Z fddZdd Z fddZ  ZS )UbuntuPolicyUbuntuZ	Canonical)zCommunity Websitezhttps://www.ubuntu.com/)zCommercial Supportzhttps://www.canonical.comzb/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/sbin:/usr/local/bin:/snap/binz,https://files.support.canonical.com/uploads/ZubuntuZputNTc                    s\   t t| j||||d tttg| j|d| _| jdd dkrHd| _	|  j
tg7  _
d S )N)sysrootinitprobe_runtimeremote_exec)ZprimaryZ	fallbackschrootr   Z	sosreportZpkg_managerZsnapz	/snap/bin)superr   __init__r   r   r   r	   Zpackage_managerZpkg_by_nameZsos_bin_pathZvalid_subclassesr   )selfr	   r
   r   r   	__class__ =/usr/lib/python3/dist-packages/sos/policies/distros/ubuntu.pyr   !   s&    zUbuntuPolicy.__init__ c              
   C   sZ   |r| j |kS z0tdd}d| kW  5 Q R  W S Q R X W n tk
rT   Y dS X dS )z[This method checks to see if we are running on Ubuntu.
           It returns True or False./etc/lsb-releaserr   FN)distroopenreadIOError)clsZremotefpr   r   r   check3   s    
$zUbuntuPolicy.checkc              
   C   s~   z^t ddH}| }|D ]4}d|krt|dd    W  5 Q R  W S qW 5 Q R X W dS  ttfk
rx   Y dS X dS )z7 Returns the version stated in DISTRIB_RELEASE
        r   r   ZDISTRIB_RELEASE=   FN)r   	readlinesintsplitstripr   
ValueError)r   r   linesliner   r   r   dist_versionA   s    4zUbuntuPolicy.dist_versionc                    s,   | j | jr| j| jfS tt|  S d S N)
upload_url
startswith_upload_url_upload_user_upload_passwordr   r   get_upload_https_authr   r   r   r   r/   N   s    z"UbuntuPolicy.get_upload_https_authc                 C   s   | j | jrdS |  S d S )NzCanonical Support File Server)r*   r+   r,   get_upload_urlr0   r   r   r   get_upload_url_stringT   s    z"UbuntuPolicy.get_upload_url_stringc                    sF   | j r| j | jr8| js | jS tj| j}| j| S tt| 	 S r)   )
r*   r+   r,   Zupload_archive_nameospathbasenamer   r   r1   )r   fnamer   r   r   r1   Z   s    
zUbuntuPolicy.get_upload_url)NNTN)r   )__name__
__module____qualname__r   ZvendorZvendor_urlsPATHr,   r-   r.   Z_upload_methodr   classmethodr   r(   r/   r2   r1   __classcell__r   r   r   r   r      s&     r   )Zsos.report.pluginsr   Zsos.policies.distros.debianr   Z"sos.policies.package_managers.snapr   Z"sos.policies.package_managers.dpkgr   Zsos.policies.package_managersr   r3   r   r   r   r   r   <module>	   s   