File: //usr/lib/python3.9/site-packages/ipaplatform/base/__pycache__/services.cpython-39.pyc
a
�N(iiJ � @ s� d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl m
Z
ddlmZ ddl
mZ ddlmZ e�e�Zg d�Zd gd
dgd
dgd
dgd�Zd
ZG dd� de�ZG dd� d�ZG dd� de�Zddd�ZeZei �Zg d�ZdS )zj
This base module contains default implementations of IPA interface for
interacting with system services.
� )�absolute_importN)�ipautil)�paths)�tasks)�Mapping) Z
certmonger�dirsrvZhttpdZipaZkrb5kdcZdbusZnslcdZnscd�ntpdZportmapZrpcbindZkadminZsshdZautofsZrpcgssdZ rpcidmapdZpki_tomcatd�chronydZ
domainnameZnamedZ
ods_enforcerdZods_signerdZgssproxyz nfs-utilsZsssdZNetworkManagerzipa-custodiazipa-dnskeysyncdzipa-otpdzipa-ods-exporterzsystemd-resolvedZunboundi� i� i� )r zpki-tomcatd@pki-tomcat.servicez
pki-tomcatzpki-tomcatdg�������?c @ s@ e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� Zdd
� Z dS )�
KnownServicesz�
KnownServices is an abstract class factory that should give out instances
of well-known platform services. Actual implementation must create these
instances as its own attributes on first access (or instance creation)
and cache them.
c C s
|| _ d S �N��_KnownServices__d)�self�d� r �=/usr/lib/python3.9/site-packages/ipaplatform/base/services.py�__init__N s zKnownServices.__init__c C s
| j | S r r )r �keyr r r �__getitem__Q s zKnownServices.__getitem__c C s
t | j�S r )�iterr
�r r r r �__iter__T s zKnownServices.__iter__c C s
t | j�S r )�lenr
r r r r �__len__W s zKnownServices.__len__c C s t �| j�S r )�sixZ
itervaluesr
r r r r �__call__Z s zKnownServices.__call__c C s, z| j | W S ty& t|��Y n0 d S r )r
�KeyError�AttributeError)r �namer r r �__getattr__] s zKnownServices.__getattr__N)
�__name__�
__module__�__qualname__�__doc__r r r r r r r r r r r
G s r
c @ s� e Zd ZdZd%dd�Zd&dd�Zd'd d
�Zd(dd�Zd)d
d�Zd*dd�Z d+dd�Z
dd� Zd,dd�Zd-dd�Z
d.dd�Zd/dd�Zd0dd�Zd1dd �Zd2d!d"�Zd3d#d$�ZdS )4�PlatformServicez�
PlatformService abstracts out external process running on the system
which is possible to administer (start, stop, check status, etc).
Nc C sB dd l }|| _|d ur|| _n |j| _tjdj| d�tdd� d S )Nr zC{s.__class__.__name__}('{s.service_name}', api=None) is deprecated.)�s� )�
stacklevel)�ipalib�service_name�api�warnings�warn�format�RuntimeWarning)r r) r* r( r r r r k s ��zPlatformService.__init__� Tc C s� |sdS g }z:t tjd��}t�|�}W d � n1 s:0 Y W n tyX Y n0 | j|vrp|�| j� t tjd��}t�||� W d � n1 s�0 Y dS )z�
When a service is started record the fact in a special file.
This allows ipactl stop to always stop all services that have
been started via ipa tools
N�r�w) �openr �
SVC_LIST_FILE�json�load� Exceptionr) �append�dump)r �
instance_name�capture_output�wait�update_service_list�svc_list�fr r r �starty s ,
zPlatformService.startc C s� |sdS g }z:t tjd��}t�|�}W d � n1 s:0 Y W n tyX Y n0 | j|v rr|�| j� qZt tjd��}t�||� W d � n1 s�0 Y dS )zQ
When a service is stopped remove it from the service list file.
Nr0 r1 ) r2 r r3 r4 r5 r6 r) �remover8 )r r9 r: r<