Anons79 Mini Shell

Directory : /lib/python2.7/site-packages/ansible/modules/system/
Upload File :
Current File : //lib/python2.7/site-packages/ansible/modules/system/service.pyo

�
�Udac@`sddlmZmZmZeZidd6dgd6dd6ZdZd	Zdd
l	Z	dd
l
Z
dd
lZdd
lZdd
l
Z
dd
lZdd
lZdd
lZdd
lZdd
lZdd
lZej�dkr�ddlmZndd
lmZmZddlmZddlmZmZddlm Z m!Z!de"fd��YZ#de#fd��YZ$de#fd��YZ%de%fd��YZ&de#fd��YZ'de#fd��YZ(de#fd��YZ)de#fd ��YZ*d!�Z+e,d"kre+�nd
S(#i(tabsolute_importtdivisiontprint_functions1.1tmetadata_versiontstableinterfacetstatustcoretsupported_bys�

---
module: service
version_added: "0.1"
short_description:  Manage services
description:
    - Controls services on remote hosts. Supported init systems include BSD init,
      OpenRC, SysV, Solaris SMF, systemd, upstart.
    - For Windows targets, use the M(win_service) module instead.
options:
    name:
        description:
        - Name of the service.
        type: str
        required: true
    state:
        description:
          - C(started)/C(stopped) are idempotent actions that will not run
            commands unless necessary.
          - C(restarted) will always bounce the service.
          - C(reloaded) will always reload.
          - B(At least one of state and enabled are required.)
          - Note that reloaded will start the service if it is not already started,
            even if your chosen init system wouldn't normally.
        type: str
        choices: [ reloaded, restarted, started, stopped ]
    sleep:
        description:
        - If the service is being C(restarted) then sleep this many seconds
          between the stop and start command.
        - This helps to work around badly-behaving init scripts that exit immediately
          after signaling a process to stop.
        - Not all service managers support sleep, i.e when using systemd this setting will be ignored.
        type: int
        version_added: "1.3"
    pattern:
        description:
        - If the service does not respond to the status command, name a
          substring to look for as would be found in the output of the I(ps)
          command as a stand-in for a status result.
        - If the string is found, the service will be assumed to be started.
        type: str
        version_added: "0.7"
    enabled:
        description:
        - Whether the service should start on boot.
        - B(At least one of state and enabled are required.)
        type: bool
    runlevel:
        description:
        - For OpenRC init scripts (e.g. Gentoo) only.
        - The runlevel that this service belongs to.
        type: str
        default: default
    arguments:
        description:
        - Additional arguments provided on the command line.
        type: str
        aliases: [ args ]
    use:
        description:
        - The service module actually uses system specific modules, normally through auto detection, this setting can force a specific module.
        - Normally it uses the value of the 'ansible_service_mgr' fact and falls back to the old 'service' module when none matching is found.
        type: str
        default: auto
        version_added: 2.2
notes:
    - For AIX, group subsystem names can be used.
seealso:
- module: win_service
author:
    - Ansible Core Team
    - Michael DeHaan
s�
- name: Start service httpd, if not started
  service:
    name: httpd
    state: started

- name: Stop service httpd, if started
  service:
    name: httpd
    state: stopped

- name: Restart service httpd, in all cases
  service:
    name: httpd
    state: restarted

- name: Reload service httpd, in all cases
  service:
    name: httpd
    state: reloaded

- name: Enable service httpd, and not touch the state
  service:
    name: httpd
    enabled: yes

- name: Start service foo, based on running process /usr/bin/foo
  service:
    name: foo
    pattern: /usr/bin/foo
    state: started

- name: Restart network service for interface eth0
  service:
    name: network
    state: restarted
    args: eth0
NtSunOS(tLooseVersion(t
AnsibleModuletload_platform_subclass(tfail_if_missing(tPY2tb(tto_bytestto_texttServicecB`s�eZdZdZd
Zd�Zd�Zd�Zd�Z	d�Z
d�Zed�Z
d	�Zd
�Zd�Zd�ZRS(sT
    This is the generic Service manipulation class that is subclassed
    based on platform.

    A subclass should override the following action methods:-
      - get_service_tools
      - service_enable
      - get_service_status
      - service_control

    All subclasses MUST define platform and distribution (which may be None).
    tGenericcO`stt||�S(N(RR(tclstargstkwargs((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyt__new__�scC`s�||_|jd|_|jd|_|jd|_|jd|_|jd|_|jd|_t|_	d|_d|_d|_
d|_d|_d|_d|_|jjdd�|_d|_d|_d|_t|_dS(	Ntnametstatetsleeptpatterntenabledtrunlevelt	argumentst(tmoduletparamsRRRRtenableRtFalsetchangedtNonetrunningtcrashedtactiontsvc_cmdtsvc_initscripttsvc_initctlt
enable_cmdtgetRtrcconf_filet
rcconf_keytrcconf_valuet
svc_change(tselfR((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyt__init__�s(												cC`s|jjdd�dS(Ntmsgs4get_service_tools not implemented on target platform(Rt	fail_json(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytget_service_tools�scC`s|jjdd�dS(NR3s1service_enable not implemented on target platform(RR4(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytservice_enable�scC`s|jjdd�dS(NR3s5get_service_status not implemented on target platform(RR4(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytget_service_status�scC`s|jjdd�dS(NR3s2service_control not implemented on target platform(RR4(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytservice_control�sc
`s�|s7tdddddd�}|jj|d|�Stj��tj�}|dkr�tj�d�tjtjtj	�}|dkr�tj
|d�n|dkr�tj
|d�n|dkr�tj
|d�n|dkr�tj|�ntj�}|dkr%tjd�ntj�tj
d	�tj�}|dkrdtjd�ntr�t|d
d�}tj|�}n@t|d
d�}gtj|�D]}t|d
d�^q�}tdddddd�}tj|dtd
tjdtjd|d�fd��}td�}td�}	|j|jg}
x�|
rAtj|
g|
d�\}}}
|||
r�|j�dk	r�Pn|j|kr�tj|jj�d�}|s�|
j|j�n||7}n|j|krRtj|jj�d�}|s1|
j|j�n|	|7}	qRqRW|j �t!j"|j#t|�t|	�g�}tj$�dt|d
d��tj�d�tjd�n�|dkr�|jj%dd�n�tj�d�tj&|d�td�}xst'rxtj�dgg�dg�\}}}
�d|krtj�dd�}|shPn||7}qqWt!j(t|d
d��SdS(NtLANGtCtLC_ALLtLC_MESSAGEStenviron_updateiiit/terrorstsurrogate_or_stricttshelltstdouttstderrtenvt
preexec_fnc`stj�d�S(Ni(tostclose((tpipe(sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyt<lambda>	sRii����R3sunable to fork(iii()tdictRtrun_commandRFRHtforkRGtopentdevnulltO_RDWRtdup2t_exittsetsidtchdirR
RtshlextsplitRt
subprocesstPopenR"tPIPERRBRCtselecttpollR$treadtfilenotremovetwaittjsontdumpst
returncodetwriteR4twaitpidtTruetloads(R1tcmdt	daemonizetlang_envtpidtfdtctpRBRCtfdstrfdtwfdtefdtdattblobtdata((RHsB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytexecute_command�s�

.<	!!

' 	,cC`s�tj�dkrd}nd}|jjdt�}|jd||f�\}}}|dkr�t|_|jd�}x9|D].}|j	|kr�d|kr�t|_Pq�q�WndS(	NRs-eftauxwwtpss%s %sis
spattern=(
tplatformtsystemRtget_bin_pathRdRtR"R%RUR(R1tpsflagstpsbintrctpsouttpserrtlinestline((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytcheck_ps2s	"	
	c	C`s�|jr.|jdkr.|jjdd�n|jrS|jd	krSt|_n?|jrw|jd
krwt|_n|jdkr�t|_n|jjr�|jr�|jjdtdd�ndS(NR3s@failed determining service state, possible typo of service name?treloadedtstartedtstoppedt	restartedR#sservice state changed(R�R�(R�R�(	RR%R$RR4RdR0t
check_modet	exit_json(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytcheck_service_changedGscC`s�|jr�|jdkr$d|_nv|jrI|jdkrId|_nQ|jdkrdd|_n6|jdkrd|_n|jdkr�d|_n|jjr�|jjd	td
d�n|j�Sd}d
}d
}|||fSdS(NR�tstartR�R�tstoptreloadR�trestartR#R3schanging service stateiR(sstarted(	R0RR'R%RR�R�RdR8(R1R|terrtout((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytmodify_service_stateTs$	
cC`s;|jdks-|jdks-|jdkrC|jjdd�nd|_d|j|jf}t|jd�}g}x�|D]�}tj	|dt
�}t|�dkr d|dkr |dj	dd�\}}||jkr |j�|jkrt
|_Pq|}t
|_q n|j|j�d	�q�W|j�|jdkrm|j|�t
|_n|jt
kr7|jjr�|jjd
t
dd�ntjj|j�}tjj|j�}	tjd|d
d|	�\}
}x|D]}tj|
|�q�Wtj|
�|jj||j�ndS(NR3sIservice_enable_rcconf() requires rcconf_file, rcconf_key and rcconf_values%s="%s"
trtcommentsit=is
R#schanging service enablementtdirtprefixs%s-(R-R$R.R/RR4R#RMRTRURdtlentupperR"tappendtstripRGR�R�RFtpathtdirnametbasenamettempfiletmkstempRbtatomic_move(R1tentrytRCFILEtnew_rc_conftrclinetrcarraytkeytvaluet
rcconf_dirtrcconf_baset
TMP_RCCONFttmp_rcconf_file((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytservice_enable_rcconfps>-	
"	

"

N(t__name__t
__module__t__doc__RwR$tdistributionRR2R5R6R7R8R"RtR�R�R�R�(((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR�s						]		
	tLinuxServicecB`sYeZdZdZd	Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�ZRS(
s�
    This is the Linux Service manipulation class - it is currently supporting
    a mixture of binaries and init scripts for controlling services started at
    boot, as well as for controlling the current state.
    tLinuxc
`s2ddddg}ddddd	d
ddd
ddg}dg}t��x*|D]"}|jj|d|��|<qRWx?|D]7}d||jf}tjj|�r||_qqW�fd�}|�r�|j|_�d|_	�d|_
n��jd
t�r�tjj
d|j�r��d
|_
td�|_yvtjd�}|jjd�d
�\}	}
}|	dkr�|j|
�}|r�t|j�d�|_q�nWntk
r�nX�d
|_	n��jdt�r�d|_	�d	|_
dS|jr~�jdt�r7�d|_
q~�jdd�rY�d|_
q~�jdt�r~�d|_
q~n|j
dkr�t|jt|jdd�n|j	dkr��jdt�r��d|_	n|j	dkr|jr|jjdd�n�jd
t�r.�d
|_ndS(Ns/sbins	/usr/sbins/bins/usr/bintservicet	chkconfigsupdate-rc.ds
rc-services	rc-updatetinitctlt	systemctlR�R�R�tinsservs/etc/init.dtopt_dirss%s/%sc`s��jdt�r�x-dddgD]}tjj|�r"tSq"Wytdd�}Wntk
ritSXx!|D]}d|krqtSqqWntS(NR�s/run/systemd/system/s/dev/.run/systemd/s/dev/.systemd/s/proc/1/commR�tsystemd(R,R"RFR�texistsRdRMtIOError(tcanarytfR�(tlocation(sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyt
check_systemd�s

s/etc/init/%s.confs0.0.0s\(upstart (.*)\)s
%s versioniR3thostsbcannot find 'service' binary or init script for service,  possible typo in service name?, aborting(RJRRyRRFR�tisfileR)t_LinuxService__systemd_unitR(R+R,R"R�R	tupstart_versiontretcompileRKtsearchtgroupst	ExceptionR$RR4R*(
R1tpathstbinariest	initpathstbinarytinitdirt
initscriptR�t
version_reR|RBRCtres((R�sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR5�s^'		
 
	
+
##


	!cC`s�d�}d�}|j}|jd|j|f�\}}}|dkrPtS|jd�rctS||�ry||�StSdS(NcS`sd|}tj|tj�S(Ns/etc/init.d/(RFtaccesstX_OK(Rtscript((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytsysv_existss
cS`sttjd|��S(Ns/etc/rc?.d/S??(tbooltglob(R((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytsysv_is_enabledss%s is-enabled %sitdisabled(R�RtR+Rdt
startswithR"(R1R�R�tservice_nameR|R�R�((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytget_systemd_service_enableds			%
c	C`s�|jd|j|jf�\}}}|dkrZ|jjdd||j|f�n/d|kr�|jjdd|j|f�nd}g}i}x�|j�D]�}d|kry|s8|jdd�\}}|j�j	d	�r%|j
�jd
�r|||<d}q5|j|�qv|||<d}q�|j
�jd
�ridj
|�||<d}q�|j|�q�|j|�q�W|S(Ns%s show '%s'iR3s,failure %d running systemctl show for %r: %ssLoadState=not-founds5systemd could not find the requested service "%r": %sR�it{t}s
(RtR+R�RR4R$t
splitlinesRUtlstripR�trstriptendswithR�tjoin(	R1R|R�R�R�tvalue_buffertstatus_dictR�R�((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytget_systemd_status_dict&s2(&#
	
		cC`s�|j�}|jd�dkr6t|_t|_nq|jd�dkr`t|_t|_nG|jd�dkr�|jjdd|j	f�nt|_t|_|jS(NtActiveStatetactivetfailedR3s4No ActiveState value in systemctl show output for %r(
R�R,RdR%R"R&R$RR4R�(R1td((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytget_systemd_service_statusNs		 		cC`s�|jr%|jjd�r%|j�Sd|_|j�\}}}|jr�|jdkr�|jd|j|j	|j
f�\}}}d|kr�t|_q�d|kr�t|_q�n|jr/|jjd�r/|jdkr/|jd|j|j	f�\}}}	d|k|_d	|	k|_
n|jdkrV|dkrVt|_n|jdkrX|jd�d
krX|j�j|j	j�d�}
d|
kr�t|_qXd|
kr�d|
k|_qXd|
kr�d|
kr�t|_qXd|
kr
t|_qXd|
kr%t|_qXd|
kr=t|_qXd|
krXt|_qXn|jdkr|dkrt|_n|jdkr�|j	dkr�d|kr�t|_q�n|jS(NR�Rs%s status %s %ssstop/waitings
start/runnings
rc-services%s %s statusR�R&iiiiiEs
RR�trunsnot R�scould not access pid filesis dead and pid file existssdead but subsys lockedsdead but pid file existsitiptablestACCEPT(iiiiiE(R(R�R�R'R8R*R%R$RtRRR"RdR&tcounttlowertreplace(R1R|t
status_stdoutt
status_stderrt
initctl_rctinitctl_status_stdouttinitctl_status_stderrt	openrc_rctopenrc_status_stdouttopenrc_status_stderrtcleanout((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR7`sL
	.*($!c
C`s�	|jdkr,|jjdd|j�nt|_d}|jjd�r\d�}d}|jt	d�kr�t
jdt
jt
j
B�}d}n"t
jd	t
jt
j
B�}d
}d||jf}d||jf}t|��}|j�}	WdQX|j|	�r$|jjdd
�nt|_tjj|�r�t|��}
|
j�}WdQX|jr�|j|�r�t|_|jd|�}q�|jr�|j|�r�t|_dj||f�}q�n|js�t|_|}n|jjr|jjd|j�n|jrXy|||�WqXtk
rT|jjdd�qXXndS|jjd�re|jr�d}nd}|jd|j|jf�\}
}}d|j|kr	|jd|j|jf�|jd|j|jf�\}
}}n|j|kr5|jjdd|j�nd||kred||kret|_dSn|jjd�r�|jr�d}nd}|j�}|j|kr�t|_dSn|jjd�r�|jr�d}nd }|jd!|j�\}
}}x�|j�D]�}|jd"�\}}|j�}||jkrLqnt
jd#|�}|jr�|j |kr�t|_n%|jr�|j |kr�t|_nPqW|js�t|_n|js�dSn|jjd$�r�t}t!j!d%|j�}|rt}n|j|krst|_|jr�d}t!j!d&|j�}|s�|jjs�|jd'|j|jf�\}
}}|
d(kr�|r�|jjd|�q�|jjd|�|j|j|fq�q�q�nd}|jjs||jd)|j|j|f�\}
}}|
d(krp|rD|jjd|�qm|jjd|�|j|j|fqpq|n	t|_dS|jjd*�r�|jr�|jd+|j|jf�\}
}}n(|jd,|j|jf�\}
}}t|_xk|j�D]]}|jr5|j"d-�d.kr5t|_Pn|jr|j"d/�d.krt|_PqqW|jjr�|jjd|j�n|js�dS|jr|jd0|j|jf�\}
}}|
d(ks�|dkr|jjdd1|
||f�n|
||fS|jd2|j|jf�\}
}}|
d(ksP|dkrs|jjdd3|
||f�n|
||fSnt|_|jjd�r�|j||jd4|j f}n?|jjd�r�|j||j#f}n|j|j|f}|jjr%	|jjd|j�n|jd)|�\}
}}|
d(kr�	|r|	|jjdd5||j|
|f�q�	|jjdd6||j|
|f�n|
||fS(7NR3sScannot detect command to enable service %s, typo or init system potentially unknownR�cS`s*t|d�}|j|�|j�dS(Ntw(RMRbRG(t	file_namet
file_contentst
override_file((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytwrite_to_override_file�s
s	/etc/inits0.6.7s^manual\s*$smanual
s^start on manual\s*$sstart on manual
s
%s/%s.confs%s/%s.overrides+manual stanza not supported in a .conf fileRs
R#sCould not modify override fileR�tontoffs%s --list %sschkconfig --add %ss%s --add %ss%service %s does not support chkconfigs3:%ss5:%sR�R!tdisables	rc-updatetaddtdeletes%s showt|s\s+supdate-rc.ds/etc/rc?.d/S??s/etc/rc?.d/K??s%s %s defaultsis%s %s %sR�s%s -n -v %ss%s -n -r -v %ssenable servicei����sremove services%s %ss3Failed to install service. rc: %s, out: %s, err: %ss%s -r %ss2Failed to remove service. rc: %s, out: %s, err: %st s$Error when trying to %s %s: rc=%s %ssFailure for %s %s: rc=%s %s($R+R$RR4RRdR#R�R�R	R�R�tMtIRMR[R�R"RFR�R�R!tsubR�R�R�R�RtR�R�RUR�RR�tfindR�(R1R'R�tinitpathtmanregtconfig_linetconf_file_nametoverride_file_nametconf_file_fhtconf_file_contenttoverride_fhtoverride_file_contentstoverride_stateR|R�R�tservice_enabledR�R�t	runlevelsRtslinkstklinksR((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR6�s$										
		(+ 											(2+/		+(					(#
(#	#))c
C`sd}|j}|jr�|jjd�st|jjd�r[|j}d|j|f}q�d|j|jf}q�|j}d|j|f}n(|jdkr�|jr�d|j}n|jr|jjd�r|jdkr|jr|j	d|d	t
�n|jd
kr�|dkrT|j	d||j|fd	t
�\}}}q|j	d|j|j|fd	t
�\}}}n�|jr�|jjd�r�|j	d||j|fd	t
�\}}}n7|dkr|j	d|d|fd	t
�\}}}n.|j	dd|j|fd	t
�\}}}|jrXtj|j�n|dkr�|j	d|d|fd	t
�\}	}
}n.|j	dd|j|fd	t
�\}	}
}|d
kr�|	d
kr�|	}|
}|}n||	}||
}||}|||fS(NRR�R�s%s %ss%ss
rc-serviceR�s%s zapRgR�s%s %s %sR�i(
RR(R�RR�R$R)R'R&RtRdRttime(R1R(Rtrc_stateRBRCtrc1tstdout1tstderr1trc2tstdout2tstderr2((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR8�sH				3141..	..	


N(
R�R�R�RwR$R�R5R�R�R�R7R6R8(((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR��s	_		(		>	�tFreeBsdServicecB`s>eZdZdZdZd�Zd�Zd�Zd�Z	RS(s�
    This is the FreeBSD Service manipulation class - it uses the /etc/rc.conf
    file for controlling services started at boot and the 'service' binary to
    check status and perform direct service manipulation.
    tFreeBSDcC`sP|jjdt�|_|js7|jjdd�n|jjd�|_dS(NR�R3sunable to find service binarytsysrc(RRyRdR(R4t	sysrc_cmd(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR5�s	cC`s�|jd|j|jd|jf�\}}}|jdkrRd|k|_n0|dkrjt|_n|dkr�t|_ndS(Ns%s %s %s %st	onestatustpftEnabledii(RtR(RRR%R"Rd(R1R|RBRC((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR7�s1cC`s�|jrd|_n	d|_dddg}x,|D]$}tjj|�r4||_q4q4W|jd|j|jd|j	f�\}}}yt
j|dt�}Wnt
k
r�nX|s�|jjd	d
d|d|�nx9|D]1}d
|kr�|jd
d�\|_}Pq�q�W|jdkrO|jjd	d
d|d|�n|jr�|jd|j|jf�\}}	}|dkr�|}	n|	j�j�|jkr�t|_|jjr�|jjdtd	d�n|jd|j|j|jf�\}}
}|dkr=|jjd	dd|
d|�n|jd|j|jdf�\}}}
|j|dkkr�|jjd	dd|
d|�q�q�t|_n5y|j�SWn$t
k
r�|jjd	d�nXdS(NtYEStNOs/etc/rc.confs/etc/rc.conf.locals/usr/local/etc/rc.confs%s %s %s %strcvarR�R3sunable to determine rcvarRBRCR�is%s -n %siR#schanging service enablements
%s %s="%s"sunable to set rcvar using sysrcs%s %s %sRs/unable to set rcvar: sysrc did not change valuesunable to set rcvar(R!R/RFR�R�R-RtR(RRRTRURdR�RR4R.R$R!R�R�R#R�R�R"R�(R1trcfilestrcfileR|RBRCtrcvarsR'tdefault_rcconf_valuetcurrent_rcconf_valuet
change_stdoutt
change_stderrtcheck_stdouttcheck_stderr((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR6�sN		
1
"
"	(		."+%
cC`s�|jdkrd|_n|jdkr6d|_n|jdkrQd|_n|jd|j|j|j|jf�}|jr�tj|j�n|S(NR�tonestartR�tonestopR�t	onereloads%s %s %s %s(R'RtR(RRRR(R1tret((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR84s+	N(
R�R�R�RwR$R�R5R7R6R8(((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR�s		
	CtDragonFlyBsdServicecB`s#eZdZdZdZd�ZRS(s�
    This is the DragonFly BSD Service manipulation class - it uses the /etc/rc.conf
    file for controlling services started at boot and the 'service' binary to
    check status and perform direct service manipulation.
    t	DragonFlycC`s|jrd|_n	d|_dg}x,|D]$}tjj|�r.||_q.q.Wdtj|jdd�|_	|j
�S(NR%R&s/etc/rc.confs%st-t_(R!R/RFR�R�R-tstringR�RR.R�(R1R(R)((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR6Os			
N(R�R�R�RwR$R�R6(((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR5EstOpenBsdServicecB`s>eZdZdZdZd�Zd�Zd�Zd�Z	RS(s�
    This is the OpenBSD Service manipulation class - it uses rcctl(8) or
    /etc/rc.d scripts for service control. Enabling a service is
    only supported if rcctl is present.
    tOpenBSDcC`s�|jjd�|_|jr-|j|_n7d}d||jf}tjj|�rd||_n|js�|jjdd�ndS(Ntrcctls	/etc/rc.ds%s/%sR3sunable to find svc_cmd(	RRyR+R(RRFR�R�R4(R1trcdirt	rc_script((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR5is		cC`s�|jr7|jd|jd|jf�\}}}n%|jd|jdf�\}}}|rx|jjd|�n|dkr�t|_n|dkr�t|_ndS(Ns%s %s %stchecks%s %sR3ii(	R+RtR(RRR4R"R%Rd(R1R|RBRC((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR7xs	.%cC`sS|jr2|jd|j|j|jfdt�S|jd|j|jf�SdS(Ns%s -f %s %sRgs%s -f %s(R+RtR(R'RRd(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR8�s	)c
C`so|jstt|�j�S|jd|jd|jdf�\}}}|rf|jjd|�n|j�}|dks�|dkr�d}n|}|jd|jd|jdf�\}}}|r�|jjd|�n|j�}|dks|dkrd}n|}|j	r:|j	|kr:|j	}n%|j	rY||krYd	}nd}|jd|jd|jd
f�\}}}|j
r�|dkr�|r�dS|dkr�d|j}	nd}	|r�d
|j|f}
qd}
n#|dkrdSd|j}	d}
|	r;|
r;|jjdd�n|jjrc|jjdt
dd�nd}|	r�|jd|j|	f�\}}}|dkr�|r�|jjd|�q�|jjdd�nd}n|
rb|jd|j|
f�\}}}|dkrb|r4|r+d|}qI|}n|rCd}nd}|jjd|�qbnt
|_dS(Ns%s %s %s %stgetdeftflagsR3R%R&RR,RRisset %s status onsset %s flags %sisset %s status offsFneither status_action or status_flags is set, this should never happenR#schanging service enablements%s %ss%rcctl failed to modify service statuss7rcctl modified service status but failed to set flags: s5rcctl modified service status but failed to set flagss$rcctl failed to modify service flags(R+tsuperR:R6RtRRR4R�RR!R�R�RdR#(
R1R|RBRCt
getdef_stringt
default_flagst
get_stringt
current_flagst
changed_flagst
status_actiontflags_actiontstatus_modifiedt
error_message((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR6�sv	.	.		.		
%	%
		N(
R�R�R�RwR$R�R5R7R8R6(((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR:_s			t
NetBsdServicecB`s>eZdZdZdZd�Zd�Zd�Zd�Z	RS(s=
    This is the NetBSD Service manipulation class - it uses the /etc/rc.conf
    file for controlling services started at boot, check status and perform
    direct service manipulation. Init scripts in /etc/rcd are used for
    controlling services (start/stop) as well as for controlling the current
    state.
    tNetBSDcC`sndg}x?|D]7}d||jf}tjj|�r||_qqW|jsj|jjdd�ndS(Ns	/etc/rc.ds%s/%sR3sunable to find rc.d script(RRFR�R�R)RR4(R1R�R�R�((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR5s	
	cC`s|jrd|_n	d|_dg}x,|D]$}tjj|�r.||_q.q.Wdtj|jdd�|_	|j
�S(NR%R&s/etc/rc.confs%sR7R8(R!R/RFR�R�R-R9R�RR.R�(R1R(R)((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR6s			
cC`sid|j|_|jd|jdf�\}}}|dkrMt|_n|dkret|_ndS(Ns%ss%s %sR"ii(R)R(RtR"R%Rd(R1R|RBRC((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR7s%cC`si|jdkrd|_n|jdkr6d|_nd|j|_|jd|j|jfdt�S(NR�R1R�R2s%ss%s %sRg(R'R)R(RtRd(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR8"sN(
R�R�R�RwR$R�R5R6R7R8(((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyRL�s			tSunOSServicecB`sPeZdZdZdZd�Zd�Zd�Zd�Z	d�Z
d�ZRS(	s�
    This is the SunOS Service manipulation class - it uses the svcadm
    command for controlling services, and svcs command for checking status.
    It also tries to be smart about taking the service out of maintenance
    state if necessary.
    RcC`s�|jjdt�|_|js7|jjdd�n|jjdt�|_|jsn|jjdd�n|j�r�d|_n	d|_dS(NtsvcsR3sunable to find svcs binarytsvcadmsunable to find svcadm binarys-sR(RRyRdtsvcs_cmdR4t
svcadm_cmdtsvcadm_supports_synctsvcadm_sync(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR56s		cC`s\xUtdd�j�D]>}tjd|j��}|r|j�ddkrtSqWdS(Ns/etc/releaseR�s\s+Oracle Solaris (\d+\.\d+).*igffffff&@(RMt	readlinesR�tmatchR�R�Rd(R1R�tm((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyRSFscC`s1|j�}|dkr$t|_n	t|_dS(Ntonline(tget_sunos_svcs_statusRdR%R"(R1R((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR7NscC`s�|jd|j|jf�\}}}|dkrf|rP|jjd|�qf|jjd|�n|jd�jd�}|djd�d}|S(Ns%s %siR3s
i����Ri(RtRQRRR4R�RU(R1R|RBRCRR((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyRYWs(c	
C`s�|jd|j|jf�\}}}|dkrf|rP|jjd|�qf|jjd|�nt}t}xS|jd�D]B}|jd�r�d|kr�t}nd|kr�t}q�q�q�W|r�|p�|o�|}|j	r�|r�dS|j	r
|r
dS|jj
s�|j	r(d}nd	}|jd
|j||jf�\}}}|dkr�|r�|jjd|�q�|jjd|�q�nt|_dS(Ns%s -l %siR3s
Rttruet	temporarys
enable -rss
disable -ss%s %s %s(
RtRQRRR4R"RUR�RdR!R�RRR#(	R1R|RBRCRR[R�tstartup_enabledtsubcmd((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR6es8(			+cC`s[|j�}|jdkrw|dkrw|jd|j|jf�\}}}|dkrh|||fS|j�}n|dkr�|jjdd	|�n|jdkr�d
}n�|jdkr�d}nn|jdkr�d
|j}nO|jdkr|dkrd|j}n$|jdkr;|dkr;d
}n|jd|j||jf�S(NR�R�R�tmaintenancetdegradeds%s clear %siR3s)Failed to bring service out of %s status.senable -rstR�sdisable -sts
refresh %sRXs
restart %ss%s %s %s(sstartsreloadsrestart(R^R_(R^R_(RYR'RtRRRRR4RT(R1RR|RBRCR]((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR8�s&(
			N(R�R�R�RwR$R�R5RSR7RYR6R8(((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyRN,s						2tAIXcB`s>eZdZdZdZd�Zd�Zd�Zd�Z	RS(s
    This is the AIX Service (SRC) manipulation class - it uses lssrc, startsrc, stopsrc
    and refresh for service control. Enabling a service is currently not supported.
    Would require to add an entry in the /etc/inittab file (mkitab, chitab and rmitab
    commands)
    R`cC`s�|jjdt�|_|js7|jjdd�n|jjdt�|_|jsn|jjdd�n|jjdt�|_|js�|jjdd�n|jjdt�|_|js�|jjdd	�ndS(
NtlssrcR3sunable to find lssrc binarytstartsrcsunable to find startsrc binarytstopsrcsunable to find stopsrc binarytrefreshsunable to find refresh binary(RRyRdt	lssrc_cmdR4tstartsrc_cmdtstopsrc_cmdtrefresh_cmd(R1((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR5�s				cC`s1|j�}|dkr$t|_n	t|_dS(NR�(tget_aix_src_statusRdR%R"(R1R((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR7�scC`s5|jd|j|jf�\}}}|dkr�|jd|j|jf�\}}}|dkr�|r�|jjd|�q�|jjd|�q1|j�}xN|dD]<}|j�dj�dkr�|j�dj�}Pq�q�Wd}|Sn3|jd�jd�}|djd�d}|SdS(	Ns%s -s %sis%s -g %sR3i����R�s
R(	RtReRRR4R�RUR�R�(R1R|RBRCRRR((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyRi�s"((cC`s�|jd|j�\}}}|dkr]|rG|jjd|�q	|jjd|�n�|j�}g}g}xa|dD]U}|j�dj�}|j�dj�}	|j|�|	r�|j|	�q�q�W|j|kr�d}
n|j|kr	d}
n|j	dkr$|j
}nq|j	dkr?|j}nV|j	d	krZ|j}n;|j	d
kr�|jd|j|
|jf�|j
}n|j
r�|j	dkr�|jd||j
|
|jf�S|jd||
|jf�SdS(
Ns%s -aiR3is-ss-gR�R�R�R�s%s %s %ss%s -a "%s" %s %s(RtReRR4R�RUR�R�RR'RfRgRhR(R1R|RBRCRt
subsystemsR�R�t	subsystemtgrouptsrccmd_parametertsrccmd((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR8�s<
		 #N(
R�R�R�RwR$R�R5R7RiR8(((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyR`�s				 cC`s�tdtdtdddt�dtddddd	d
dg�dtdd
�dtdd�dtdd�dtdddd�dtddddddg��dtdddgg�}t|�}|jd|j�|jr�|jd|j�nd}d}d}i}|j|d<|j�|j	j
ddk	r\|j�|j
|d<n|j
ddkr�|j|d<|j|�n|j|d<|jr�|j�n
|j�|j�|j�\}}}|dkr%|r�d|kr�q%|r|jd|�q%|jd|�n|j|jB|d<|j	j
ddk	rf|j	j
d|d<n|j	j
ds�|j�}|dkr�d|d<q�|tkr�d|d<q�d	|d<n-|j	j
dd kr�d|d<n
d	|d<|j|�dS(!Nt
argument_specRttypetstrtrequiredRtchoicesR�R�R�R�RtintRRR�RtdefaultRRtaliasesRtsupports_check_modetrequired_one_ofs"Service instantiated - platform %ss&Service instantiated - distribution %siR#sJob is already runningR3tabsent(sreloadeds	restartedsstarted(R
RJRdRtdebugRwR�RR5RR R$R6R!R#R�RRR�R7R�R�R4R0R"(RR�R|R�R�tresultR((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pytmain)sj!!	




	







t__main__(-t
__future__RRRRpt
__metaclass__tANSIBLE_METADATAt
DOCUMENTATIONtEXAMPLESR�R_RFRwR�RYRTR9RVR�RRxtdistutils.versionR	tansible.module_utils.basicR
Rtansible.module_utils.serviceRtansible.module_utils.sixR
Rtansible.module_utils._textRRtobjectRR�RR5R:RLRNR`R|R�(((sB/usr/lib/python2.7/site-packages/ansible/modules/system/service.pyt<module>sJ


K'���.o�8�w	[

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]