File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/lvs.cpython-310.pyc
o
�N�g. � @ s� d Z ddlm mZ ddlZddlmZ ddiZej dd� �Z
dd � Zd
d� Zd&d
d�Z
d'dd�Zd(dd�Z d)dd�Z d*dd�Zd'dd�Zdd� Zdd� Zd(dd�Zd(d d!�Zd(d"d#�Zd'd$d%�ZdS )+z(
Support for LVS (Linux Virtual Server)
� N)�
SaltException�list_�listc C s t jj�d�S )NZipvsadm)�salt�utils�path�which� r r �D/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/lvs.py�__detect_os
s r c C s t � sdS dS )z<
Only load if ipvsadm command exists on the system.
)FzQThe lvs execution module cannot be loaded: the ipvsadm binary is not in the path.Zlvs)r r r r r
�__virtual__ s r c K s� d}d| v rf| d r_d| v rF| d dkr|d� | d �7 }n$| d dkr.|d� | d �7 }n| d dkr>|d � | d �7 }ntd
��| d= ntd��d| v r^| d r^|d
� | d �7 }| d= ntd��| d= d| v r�| d r�|d� | d �7 }d| v r�| d r�| d dkr�|d7 }n| d dkr�|d7 }n| d dkr�|d7 }ntd��| d= d| v r�| d r�|d� | d �7 }| d= ntd��| d= |S )zB
Build a well-formatted ipvsadm command based on kwargs.
� �service_address�protocolZtcpz -t {}Zudpz -u {}Zfwmarkz -f {}z8Error: Only support tcp, udp and fwmark service protocolz Error: protocol should specified� schedulerz -s {}z'Error: service_address should specified�server_addressz -r {}�packet_forward_method�drz -gZtunnelz -iZnatz -mz&Error: only support dr, tunnel and nat�weightz -w {}z&Error: server_address should specified)�formatr )�kwargs�cmdr r r
�
_build_cmd sR ��
�r �wlcc C �H d� t� t| ||d��}td |dd�}|d r |d �� }|S d}|S ) ao
Add a virtual service.
protocol
The service protocol(only support tcp, udp and fwmark service).
service_address
The LVS service address.
scheduler
Algorithm for allocating TCP connections and UDP datagrams to real servers.
CLI Example:
.. code-block:: bash
salt '*' lvs.add_service tcp 1.1.1.1:80 rr
z{} -A {}�r r r �cmd.run_allF�Zpython_shell�retcode�stderrT�r r r �__salt__�strip�r r r r �out�retr r r
�add_serviceV � ���r&