o
    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                       s|   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Ubuntu	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/ubuntuputNTc                    s\   t t| j||||d tttg| j|d| _| jdd dkr$d| _	|  j
tg7  _
d S )N)sysrootinitprobe_runtimeremote_exec)primary	fallbackschrootr   	sosreportpkg_managersnapz	/snap/bin)superr   __init__r   r   r   r   package_managerpkg_by_namesos_bin_pathvalid_subclassesr   )selfr   r   r   r   	__class__ =/usr/lib/python3/dist-packages/sos/policies/distros/ubuntu.pyr   !   s&   zUbuntuPolicy.__init__ c                 C   sb   |r| j |v S ztdd}d| v W  d   W S 1 sw   Y  W dS  ty0   Y dS w )z[This method checks to see if we are running on Ubuntu.
           It returns True or False./etc/lsb-releaserr   NF)distroopenreadIOError)clsremotefpr   r   r    check3   s   

(zUbuntuPolicy.checkc              	   C   s   z<t dd,}| }|D ]}d|v r(t|dd    W  d   W S qW d   W dS 1 s5w   Y  W dS  ttfyH   Y dS w )z7 Returns the version stated in DISTRIB_RELEASE
        r"   r#   DISTRIB_RELEASE=   NF)r%   	readlinesintsplitstripr'   
ValueError)r   r*   linesliner   r   r    dist_versionA   s    
zUbuntuPolicy.dist_versionc                    s(   | j | jr| j| jfS tt|  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 )NzCanonical Support File Server)r8   r9   r:   get_upload_urlr>   r   r   r    get_upload_url_stringT   s   z"UbuntuPolicy.get_upload_url_stringc                    sF   | j r
| j | jr| js| jS tj| j}| j| S tt| 	 S r7   )
r8   r9   r:   upload_archive_nameospathbasenamer   r   r?   )r   fnamer   r   r    r?   Z   s   
zUbuntuPolicy.get_upload_url)NNTN)r!   )__name__
__module____qualname__r$   vendorvendor_urlsPATHr:   r;   r<   _upload_methodr   classmethodr+   r6   r=   r@   r?   __classcell__r   r   r   r    r      s(    r   )sos.report.pluginsr   sos.policies.distros.debianr   "sos.policies.package_managers.snapr   "sos.policies.package_managers.dpkgr   sos.policies.package_managersr   rB   r   r   r   r   r    <module>   s   