o
    id                     @   s,   d dl mZ d dlmZ G dd deZdS )    )
InitSystem)	shell_outc                       s<   e Zd ZdZd fdd	Zdd Zdd Zdd
dZ  ZS )SystemdInitz*InitSystem abstraction for SystemD systemsNc                    s$   t t| jddd|d |   d S )N	systemctlzlist-unit-files --type=servicestatus)init_cmdlist_cmd	query_cmdchroot)superr   __init__load_all_services)selfr
   	__class__ C/usr/lib/python3/dist-packages/sos/policies/init_systems/systemd.pyr      s   
zSystemdInit.__init__c                 C   s0   |  D ]}| dr| d   S qdS )NzActive:   unknown)
splitlinesstrip
startswithsplit)r   outputliner   r   r   parse_query   s
   zSystemdInit.parse_queryc              	   C   sj   t | j| jd dd  }|D ]"}z|dd }| d }||d| j|< W q ty2   Y qw d S )N)r
   r   z.servicer   )nameconfig)r   r   r
   r   r   services
IndexError)r   svcsr   r   r   r   r   r   r   !   s   zSystemdInit.load_all_servicesFc                 C   s0   z|  |}|d dkW S  ty   | Y S w )Nr   active)get_service_status	Exception)r   r   defaultsvcr   r   r   
is_running.   s   
zSystemdInit.is_running)N)F)	__name__
__module____qualname____doc__r   r   r   r&   __classcell__r   r   r   r   r      s    	r   N)sos.policies.init_systemsr   sos.utilitiesr   r   r   r   r   r   <module>   s   
