File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/zenoss.cpython-310.pyc
o
�N�g� � @ s� d Z ddlZddlZddlZddlZe�e�ZdZ dd� Z
dddd d
ddd
dddd�Zdd� Zd"dd�Z
dd� Zd"dd�Zd"dd�Zd#dd�Zd"d d!�ZdS )$a�
Module for working with the Zenoss API
.. versionadded:: 2016.3.0
:configuration: This module requires a 'zenoss' entry in the master/minion config.
For example:
.. code-block:: yaml
zenoss:
hostname: https://zenoss.example.com
username: admin
password: admin123
verify_ssl: True
ca_bundle: /etc/ssl/certs/ca-certificates.crt
� N�zenossc C s t S )z,
Only load if requests is installed
)�__virtualname__� r r �G/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/zenoss.py�__virtual__ s r Z messagingZ evconsole�processZservice�device�network�templateZ detailnav�reportZmibZzenpack)ZMessagingRouterZEventsRouterZ
ProcessRouterZ
ServiceRouter�DeviceRouterZ
NetworkRouterZTemplateRouterZDetailNavRouterZReportRouterZ MibRouterZ
ZenPackRouterc C sB t d d�} tjjj| �d�| �d�| �dd�| �d�dd id
�S )z@
Create a session to be used when connecting to Zenoss.
�
config.optionr �username�password�
verify_sslT� ca_bundlezContent-typezapplication/json; charset=utf-8)�userr r r �headers)�__salt__�salt�utils�http�session�get)�configr r r �_session5 s
�r c C s� | t vrdS tjj�t| ||ddd�g�}td d�}t�d| |� d� |�
d �t | �}t� j||d
�}t
�d|j�rEt�d� td��tjj�|j��
d
d�S )z1
Make a request to the Zenoss API router
FZrpc� )�action�method�data�type�tidr
r z*Making request to router %s with method %sz{}/zport/dmd/{}_router�hostname�r zname="__ac_name"z&Request failed. Bad username/password.�resultN)�ROUTERSr r �json�dumps�dictr �log�debug�formatr r Zpost�re�search�content�error� Exception�loads)Zrouterr r Zreq_datar �url�responser r r �_router_requestD s �
r4 c C s t d d�dkr
dS dS )zP
If no device class is given when adding a device, this helps determine
�
grains.getZkernel�Linuxz
/Server/LinuxN)r r r r r �_determine_device_class^ s �r7 c C sf di dd�g}t dd|d�}|d D ]}|d | kr*|d |d <