%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python2.7/site-packages/salt/runners/
Upload File :
Create Path :
Current File : //lib/python2.7/site-packages/salt/runners/f5.pyo

�
���^c@@s�dZddlmZmZmZddlmZyddljZ	e
ZWnek
rde
ZnXd�Zdefd��YZd�Zd	d
�Zd�Zd�Zd
�Zd�ZdS(u�
Runner to provide F5 Load Balancer functionality

:depends:   - pycontrol Python module

:configuration: In order to connect to a F5 Load Balancer, you must specify
    in the Salt master configuration the currently available load balancers

    .. code-block:: yaml

        load_balancers:
          bigip1.example.com
            username: admin
            password: secret
          bigip2.example.com:
            username: admin
            password: secret
i(tabsolute_importtprint_functiontunicode_literals(tCommandExecutionErrorNcC@sts
tStS(N(t
HAS_PYCONTROLtFalsetTrue(((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyt__virtual__ stF5MgmtcB@s\eZd�Zd�Zd�Zdd�Zd�Zd�Zd�Zd�Z	d	�Z
RS(
cC@s)||_||_||_|j�dS(N(tlbtusernametpasswordt_connect(tselfR	R
R((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyt__init__'s			cC@spy@tjd|jd|jd|jdtdddg�|_Wn)tk
rktdj|j���nXtS(	u
        Connect to F5
        thostnameR
RtfromurltwsdlsuLocalLB.VirtualServeruLocalLB.PooluUnable to connect to {0}(	tf5tBIGIPR	R
RRtbigIPt	Exceptiontformat(R
((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyR-s		
c	C@s|jjj}|jjd�}||_||_||_|jjd�}	g|	D]3}
|
djd�d|j	�krU|
d^qU}|r�||_
ntd��|jjd�}|g|_|jjd�}
|jjd	�}|
j
|_||_|jjd
�}|g|_|jjd�}|jjd�}|j|_||_|jjd�}||_|jjd�}d
|_|jjd�}|||g|_y,|jd|ddgd|d|g�Wn+tk
r
}tdj||���nXtS(u)
        Create a virtual server
        uCommon.VirtualServerDefinitionuCommon.ProtocolTypeiu_iuUnknown protocoluCommon.VirtualServerSequenceu'LocalLB.VirtualServer.VirtualServerTypeu+LocalLB.VirtualServer.VirtualServerResourceu3LocalLB.VirtualServer.VirtualServerResourceSequenceuLocalLB.ProfileContextTypeu*LocalLB.VirtualServer.VirtualServerProfileu
oneconnectu2LocalLB.VirtualServer.VirtualServerProfileSequencetdefinitionst	wildmasksu255.255.255.255t	resourcestprofilesu*Unable to create `{0}` virtual server

{1}(RtLocalLBt
VirtualServerttypefactorytcreatetnametaddresstporttsplittuppertprotocolRtitemtRESOURCE_TYPE_POOLttypetdefault_pool_nametPROFILE_CONTEXT_TYPE_ALLtprofile_contexttprofile_nameRRR(R
RtipR!R$tprofilet	pool_nametvstvs_deftcommon_protocolstitpt
vs_def_seqtvs_typetvs_resourcetresource_seqt
vs_contextt
vs_profiletvs_profile_httptvs_profile_conntvs_profile_seqte((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyt	create_vs?sX			@																			uROUND_ROBINcC@s�|jjjjjd�}g|D]6}|djdd�d|j�kr"|d^q"}|r�|j|�r�y2|jjjjd|gd|gdgg�Wq�tk
r�}td	j	||���q�Xntd
��t
S(u7
        Create a pool on the F5 load balancer
        uLocalLB.LBMethodiu_ii����t
pool_namest
lb_methodstmembersu Unable to create `{0}` pool

{1}uUnsupported method(RRtPoolRRR"R#t
check_poolRRR(R
Rtmethodt	lbmethodsR2tsupported_methodR=((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pytcreate_pool�s	
6	cC@s�|j|�s'tdj|���n|jjjjjd�}g|_|jjjjjd�}||_	||_
|jj|�y)|jjjjd|gd|g�Wn.t
k
r�}t
dj|||���nXtS(u&
        Add a node to a pool
        u{0} pool does not existsuCommon.IPPortDefinitionSequenceuCommon.IPPortDefinitionR?RAu!Unable to add `{0}` to `{1}`

{2}(RCRRRRRBRRtitemsR R!tappendt
add_memberRR(R
RR!R.tmembers_seqtmemberR=((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pytadd_pool_member�s(						cC@sG|jjj}x1|j�D]#}|jd�d|krtSqWtS(u/
        Check to see if a pool exists
        u/i����(RRRBtget_listR"RR(R
Rtpoolstpool((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyRC�s
cC@sG|jjj}x1|j�D]#}|jd�d|krtSqWtS(u9
        Check to see if a virtual server exists
        u/i����(RRRRNR"RR(R
RR/tv((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pytcheck_virtualserver�s
cC@sJ|jjjjd|g�d}x!|D]}||jkr)tSq)WtS(u?
        Check a pool member exists in a specific pool
        R?i(RRRBt
get_memberR RR(R
RLR.RAtmem((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pytcheck_member_pool�s
"
cC@sF|jjjjjd�}g|D] }|djdd�d^q"S(u4
        List all the load balancer methods
        uLocalLB.LBMethodiu_ii����(RRRBRRR"(R
tmethodsRD((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyRE�s	(t__name__t
__module__RRR>RGRMRCRRRURE(((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyR&s			I	"	
	
	
c
C@s�tdj|d�r9ttd|j��\}}ntdj|���t|||�}	|	j||||||�t	S(u�
    Create a virtual server

    CLI Examples:

    .. code-block:: bash

        salt-run f5.create_vs lbalancer vs_name 10.0.0.1 80 tcp http poolname
    uload_balancersu"Unable to find `{0}` load balancerN(
t__opts__tgettNonetlisttvaluesRRRR>R(
R	RR,R!R$R-R.R
RtF5((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyR>�s
#uROUND_ROBINcC@sttdj|d�r9ttd|j��\}}ntdj|���t|||�}|j||�t	S(u�
    Create a pool on the F5 load balancer

    CLI Examples:

    .. code-block:: bash

        salt-run f5.create_pool load_balancer pool_name loadbalance_method
        salt-run f5.create_pool load_balancer my_pool ROUND_ROBIN
    uload_balancersu"Unable to find `{0}` load balancerN(
RYRZR[R\R]RRRRGR(R	RRDR
RR^((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyRG�s#cC@swtdj|d�r9ttd|j��\}}ntdj|���t|||�}|j|||�t	S(u�
    Add a node to a pool

    CLI Examples:

    .. code-block:: bash

        salt-run f5.add_pool_member load_balancer 10.0.0.1 80 my_pool
    uload_balancersu"Unable to find `{0}` load balancerN(
RYRZR[R\R]RRRRMR(R	RR!R.R
RR^((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyRMs
#cC@smtdj|d�r9ttd|j��\}}ntdj|���t|||�}|j|�S(u�
    Check to see if a pool exists

    CLI Examples:

    .. code-block:: bash

        salt-run f5.check_pool load_balancer pool_name
    uload_balancersu"Unable to find `{0}` load balancerN(	RYRZR[R\R]RRRRC(R	RR
RR^((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyRC&s

#cC@smtdj|d�r9ttd|j��\}}ntdj|���t|||�}|j|�S(u�
    Check to see if a virtual server exists

    CLI Examples:

    .. code-block:: bash

        salt-run f5.check_virtualserver load_balancer virtual_server
    uload_balancersu"Unable to find `{0}` load balancerN(	RYRZR[R\R]RRRRR(R	RR
RR^((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyRR8s

#cC@sptdj|d�r9ttd|j��\}}ntdj|���t|||�}|j||�S(u�
    Check a pool member exists in a specific pool

    CLI Examples:

    .. code-block:: bash

        salt-run f5.check_member_pool load_balancer 10.0.0.1 my_pool
    uload_balancersu"Unable to find `{0}` load balancerN(	RYRZR[R\R]RRRRU(R	RLR.R
RR^((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyRUJs

#(t__doc__t
__future__RRRtsalt.exceptionsRtpycontrol.pycontrolt	pycontrolRRRtImportErrorRRtobjectRR>RGRMRCRRRU(((s3/usr/lib/python2.7/site-packages/salt/runners/f5.pyt<module>s


	�				

Zerion Mini Shell 1.0