o
    O6ufº  ã                   @   s>   d dl mZmZ d dlZd dlmZmZ G dd„ deeƒZdS )é    )ÚNoOptionErrorÚNoSectionErrorN)ÚPluginÚRedHatPluginc                   @   s@   e Zd ZdZdZdZdZdZdd„ Zdd	„ Z	d
d„ Z
dd„ ZdS )ÚSubscriptionManagerz subscription-manager informationÚsubscription_manager)ÚsystemÚpackagemanagerÚsysmgmt)ú/etc/rhsm/rhsm.conf)zsubscription-managerc                 C   s�   d}|  dd¡}|r&|  dd¡}|  dd¡}|rd| }d|› d|› |› �}|  dd	¡}|rF|rF|d
|› �7 }|  dd¡}|rF|d|› �7 }|S )z4 return curl options --proxy[-user] per RHSM config Ú ÚserverÚproxy_hostnameÚproxy_schemeÚ
proxy_portú:z--proxy ú://Ú
proxy_userz --proxy-user Úproxy_password)Úget)ÚselfÚconfigÚproxyr   r   r   r   r   © r   úI/usr/lib/python3/dist-packages/sos/report/plugins/subscription_manager.pyÚget_proxy_string   s   z$SubscriptionManager.get_proxy_stringc              	   C   s`   |  dd¡dkr
dnd}|  dd¡}t|ƒdkrd| }d	|› d
|  dd¡› |› |  dd¡› �S )z- return URL per RHSM config for curl command r   ÚinsecureÚ1Úsr   Úportr   r   Úhttpr   ÚhostnameÚprefix)r   Úlen)r   r   Úsecurer   r   r   r   Úget_server_url*   s   
ÿz"SubscriptionManager.get_server_urlc           
      C   s:  |   g d¢¡ | jddd� | jddd� | jddd� | jg d	¢d
d� |  d|  ¡ › �¡ t d¡}| jdd„ |D ƒdd� d}d }z0ddlm} |ƒ }|  |¡}|  |¡}d|› d| dd¡› d|› �}| dd¡}|rsd|i}W n t	t
ttfy’ }	 z|  d|	› �¡ W Y d }	~	nd }	~	ww | j||dd� d S )N)z
/etc/rhsm/z/var/lib/rhsm/z/var/log/rhsm/rhsm.logz/var/log/rhsm/rhsmcertd.logzsubscription-manager identityÚsubscription_manager_id)Útagsz$subscription-manager list --consumedÚ"subscription_manager_list_consumedz%subscription-manager list --installedÚsubscription_manager_installed)z%subscription-manager list --availablez+subscription-manager list --all --availablez#subscription-manager release --showz#subscription-manager release --listzsyspurpose showz&subscription-manager syspurpose --showzsubscription-manager statusT)Ú
cmd_as_tagzFrhsm-debug system --sos --no-archive --no-subscriptions --destination z/etc/pki/product-default/*.pemc                 S   s   g | ]}d |› �‘qS )zrct cat-cert r   )Ú.0Úcertr   r   r   Ú
<listcomp>O   s    z-SubscriptionManager.setup.<locals>.<listcomp>Ú*subscription_manager_installed_product_idszccurl -vv --cacert /etc/rhsm/ca/redhat-uep.pem https://subscription.rhsm.redhat.com:443/subscriptionr   )Úget_config_parserz	curl -vv z
 --cacert ÚrhsmÚrepo_ca_certú r   Úno_proxyÚNO_PROXYz*Error checking for RHSM cert/proxy issue: é   )ÚenvÚtimeout)Úadd_copy_specÚadd_cmd_outputÚget_cmd_output_pathÚglobÚrhsm.configr/   r   r%   r   ÚModuleNotFoundErrorÚImportErrorr   r   Ú
_log_debug)
r   ÚcertsÚcurlcmdr6   r/   r   r   Ú
server_urlr3   Úerrr   r   r   Úsetup4   sV   ÿÿÿ
ø	þ
ÿ


ÿÿ€ÿ€þzSubscriptionManager.setupc                 C   s0   d}d}|   d||¡ d}d}|   d||¡ d S )Nz"(proxy_password(\s)*=(\s)*)(\S+)\nz\1********\nr   z(password(\s)*=(\s)*)(\S+)\nz/var/lib/rhsm/repo_server_val/*)Údo_path_regex_sub)r   Ú	passwdregÚreplÚregexpr   r   r   Úpostprocf   s   	zSubscriptionManager.postprocN)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚfilesÚpackagesr   r%   rD   rI   r   r   r   r   r      s    
2r   )Úconfigparserr   r   r;   Úsos.report.pluginsr   r   r   r   r   r   r   Ú<module>   s   