Edit File: rpm_packages_statistics.cpython-37.opt-1.pyc
B 5/9eS � @ s� d dl mZ d dlZd dlmZmZmZ d dlmZm Z m Z mZ d dlm Z d dlmZ e�d�Zee ee e e f d�d d �Zdd� ZdS ) � )�absolute_importN)�CalledProcessError�Popen�PIPE)�Dict�AnyStr�Optional�List)� serialize_evr)� is_ubuntuz(cloudlinux-summary.get_rpm_packages_info)�returnc C s\ t � } d}t� }|rd}nd}d}d}y:t|ttdddd�}|�� \}}||kr^t�|� | S W n4 ttfk r� } zt� d || � | S d } ~ X Y nX |j dkr�tjd|||j ||d �d� | S |�� � d�} x�| D ]�}yt||�\}} }}}W n. tk �r tjd||d|id� w�Y nX | dk�r.d n| } | �|| |||t| ||g�d�� q�W | S )z� Get full info about all of rpm packages: - name - epoch - version - release - arch - serialized_version z"Thread died in Berkeley DB libraryz9dpkg-query -f '${Package} ${Version} ${Architecture} ' -WzYrpm -qa --queryformat '%{name} %|epoch?{%{epoch}}:{None}| %{version} %{release} %{arch} 'z1Can't get information about rpm packages, becausezYServer has broken rpmdb. We can't get statistics about rpm packages and skip its getting.Tz /bin/bash)�stdout�stderr�shell� executable�textz%s exception "%sNr z)%s command "%s" return non-zero code "%s")r r )Zextra� zRThe result of call "%s" has an invalid line "%s". It should contain five elements.r �None)�name�epoch�version�release�archZserialized_version)�listr r r Zcommunicate� app_loggerZwarningr �OSError� exception� returncode�error�strip�split�parse_package_manager_output� ValueError�appendr )�resultZrpm_db_error_pattern�is_ubuntu_osZrpm_cmdZ error_messageZrpm_db_warn_msg�pr r r �lines�liner r r r r � r) �'py/clsummary/rpm_packages_statistics.py�get_rpm_packages_info sv r+ c C sr |rP| � d�\}}}d}d|kr.|� d�\}}|� d�^}}|rJd�|�nd}n| � d�\}}}}}|||||fS )aR rpm -qa already returns data in needed format, e.g: lve-utils None 6.2.3 2.el7.cloudlinux.1639593336.cloudlinux.1639595623 x86_64 but, dpkg-query output needed to be parsed a bit, cause version column cannot be split by util to epoch:version:release lve-utils 6.2.2.1639220776 amd64 � N�:�-)r �join)r( r% r r r r r r) r) r* r! m s r! )Z __future__r Zlogging� subprocessr r r �typingr r r r Zclcommon.evr_utilsr Zclcommon.lib.cleditionr Z getLoggerr r+ r! r) r) r) r* �<module> s "X