File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/omapi.cpython-310.pyc
o
�N�gR �
@ s� d Z ddlZddlZddlZe�e�ZzddlZ dZ
W n ey/ Z zdZ
W Y dZ[ndZ[ww dd� Z
dd� Zd
d d
�Zddd�ZdS )z�
This module interacts with an ISC DHCP Server via OMAPI.
server_ip and server_port params may be set in the minion
config or pillar:
.. code-block:: yaml
omapi.server_ip: 127.0.0.1
omapi.server_port: 7991
:depends: pypureomapi Python module
� NTFc C s t rdS dS )z+
Confirm pypureomapi is available.
�omapi)Fz]The omapi execution module cannot be loaded: the pypureomapi python library is not available.)�
omapi_support� r r �F/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/omapi.py�__virtual__ s r c C s� t �dt�dd��} t �dt�dd��}t �dt�dd ��}t �dt�dd ��}|r1tjj�|�}|r:tjj�|�}tj| |||d�S )Nzomapi.server_ipz 127.0.0.1zomapi.server_porti7 z omapi.keyz
omapi.user)�username�key) Z
__pillar__�getZ__opts__�salt�utils�stringutils�to_bytesr ZOmapi)Z server_ipZserver_portr r r r r �_conn+ s ��r c
C s2 d}t � }tj�d�}|j�dt�dd�f� |j�dt�dd�f� |j�dt� | �f� |j�dt�dd�f� |rG|j�d t�
|�f� |rV|j�d
tjj
�|�f� |re|j�dtjj
�|�f� |ro|d|� d
�7 }|r{|r{|d|� d
�7 }|r�|j�dtjj
�|�f� |�|�} | jtjkr�dS dS )aH
Add a host object for the given mac.
CLI Example:
.. code-block:: bash
salt dhcp-server omapi.add_host ab:ab:ab:ab:ab:ab name=host1
Add ddns-hostname and a fixed-ip statements:
.. code-block:: bash
salt dhcp-server omapi.add_host ab:ab:ab:ab:ab:ab name=host1 ip=10.1.1.1 ddns=true
� � hosts create� !I� s exclusive� hardware-address�
hardware-types
ip-address� names groupzoption host-name "z"; zddns-hostname "s
statementsFT)r r �OmapiMessage�open�message�append�struct�pack�obj�pack_macZpack_ipr
r r r
�query_server�opcode�OMAPI_OP_UPDATE)
�mac�name�ipZddns�groupZsupersede_hostZ
statements�o�msg�responser r r �add_host; s.
r( c C s� | s|st d��t� }tj�d�}| r*|j�dt�| �f� |j�dt� dd�f� |r9|j�dt
jj�
|�f� |�|�}|jtjkrFdS |jd krMd
S |�tj�|j��}|jtjkr_d
S dS )z�
Delete the host with the given mac or name.
CLI Examples:
.. code-block:: bash
salt dhcp-server omapi.delete_host name=host1
salt dhcp-server omapi.delete_host mac=ab:ab:ab:ab:ab:ab
z!At least one argument is requiredr r r r r r Nr FT)� TypeErrorr r r r r r r r r r
r r r
r r r �handle�deleteZOMAPI_OP_STATUS)r! r"