U
    -_g                     @   sJ   d dl mZmZ d dlZd dlmZ d dlmZmZ G dd deeZ	dS )    )NoOptionErrorNoSectionErrorN)remove)PluginRedHatPluginc                   @   sD   e Zd 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 informationZsubscription_manager)systemZpackagemanagerZsysmgmt)/etc/rhsm/rhsm.conf)zsubscription-managerZrhsm_curl_cfgc           	   	   C   s   d}| dd}|rL| dd}| dd}|r8d| }d| d| | }| dd	}|r|r| dd
}|r| j| j| _t| jddd}|d| d|  W 5 Q R X |d| j 7 }n|d| 7 }|S )z4 return curl options --proxy[-user] per RHSM config  serverproxy_hostnameproxy_scheme
proxy_port:z--proxy ://
proxy_userZproxy_passwordwzutf-8)encodingz--proxy-user z
 --config z --proxy-user )getarchiveZ	dest_pathcurl_config_curl_cfg_fnameopenwrite)	selfconfigproxyr   r   r   r   Z
proxy_passZ_f 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r8d| }d	| d
| dd | | dd S )z- return URL per RHSM config for curl command r   Zinsecure1sr
   portr   r   Zhttpr   Zhostnameprefix)r   len)r   r   Zsecurer"   r   r   r   get_server_url3   s
    z"SubscriptionManager.get_server_urlc           
      C   sN  |  ddddg | jddd | jdd	d | jd
dd | jdddddddgdd | d|    td}| jdd |D dd d}d }d | _z`ddlm} | }| |}| |}d| d|	dd  d!| }|	d"d#}|rd$|i}W n< t
tttfk
r8 }	 z| d%|	  W 5 d }	~	X Y nX | j||d&d' d S )(Nz
/etc/rhsm/z/var/lib/rhsm/z/var/log/rhsm/rhsm.logz/var/log/rhsm/rhsmcertd.logzsubscription-manager identityZsubscription_manager_id)Ztagsz$subscription-manager list --consumedZ"subscription_manager_list_consumedz%subscription-manager list --installedZsubscription_manager_installedz%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)Z
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   ).0Zcertr   r   r   
<listcomp>X   s     z-SubscriptionManager.setup.<locals>.<listcomp>Z*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 ZrhsmZrepo_ca_cert r   no_proxyZNO_PROXYz*Error checking for RHSM cert/proxy issue:    )envZtimeout)Zadd_copy_specZadd_cmd_outputZget_cmd_output_pathglobr   Zrhsm.configr(   r   r%   r   ModuleNotFoundErrorImportErrorr   r   Z
_log_debug)
r   ZcertsZcurlcmdr,   r(   r   r   Z
server_urlr*   errr   r   r   setup=   s`    	


"zSubscriptionManager.setupc                 C   s@   d}d}|  d|| d}d}|  d|| | jr<t| j d S )Nz"(proxy_password(\s)*=(\s)*)(\S+)\nz\1********\nr	   z(password(\s)*=(\s)*)(\S+)\nz/var/lib/rhsm/repo_server_val/*)Zdo_path_regex_subr   r   )r   Z	passwdregreplZregexpr   r   r   postprocp   s    	zSubscriptionManager.postprocN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesfilesZpackagesr   r   r%   r1   r3   r   r   r   r   r      s   
3r   )
configparserr   r   r-   osr   Zsos.report.pluginsr   r   r   r   r   r   r   <module>	   s   