Your IP : 18.119.133.214


Current Path : /usr/lib/python3.6/site-packages/tuned/plugins/__pycache__/
Upload File :
Current File : //usr/lib/python3.6/site-packages/tuned/plugins/__pycache__/plugin_script.cpython-36.pyc

3

�<�e�@sVddljZddlmZddlZddlZddlmZm	Z	ej
j�ZGdd�dej
�ZdS)�N�)�base)�Popen�PIPEcsbeZdZdZedd��Zdd�Zdd�Zdd	�Z�fd
d�Z	�fdd
�Z
ejf�fdd�	Z
�ZS)�ScriptPluginac
	`script`::
	
	Executes an external script or binary when the profile is loaded or
	unloaded. You can choose an arbitrary executable.
	+
	IMPORTANT: The `script` plug-in is provided mainly for compatibility
	with earlier releases. Prefer other *TuneD* plug-ins if they cover
	the required functionality.
	+
	*TuneD* calls the executable with one of the following arguments:
	+
	--
	** `start` when loading the profile
	** `stop` when unloading the profile
	--
	+
	You need to correctly implement the `stop` action in your executable
	and revert all settings that you changed during the `start`
	action. Otherwise, the roll-back step after changing your *TuneD*
	profile will not work.
	+
	Bash scripts can import the [filename]`/usr/lib/tuned/functions`
	Bash library and use the functions defined there. Use these
	functions only for functionality that is not natively provided
	by *TuneD*. If a function name starts with an underscore, such as
	`_wifi_set_power_level`, consider the function private and do not
	use it in your scripts, because it might change in the future.
	+
	Specify the path to the executable using the `script` parameter in
	the plug-in configuration.
	+
	.Running a Bash script from a profile
	====
	To run a Bash script named `script.sh` that is located in the profile
	directory, use:
	
	----
	[script]
	script=${i:PROFILE_DIR}/script.sh
	----
	====
	cCsddiS)N�script�)�selfrr�#/usr/lib/python3.6/plugin_script.py�_get_config_options6sz ScriptPlugin._get_config_optionscCsFd|_d|_|jddk	r<t|jdt�s.t�|jd|_ng|_dS)NTFr)Z_has_static_tuningZ_has_dynamic_tuningZoptions�
isinstance�list�AssertionError�_scripts)r	�instancerrr
�_instance_init<szScriptPlugin._instance_initcCsdS)Nr)r	rrrr
�_instance_cleanupFszScriptPlugin._instance_cleanupc
Csd}�x|D�]�}tj}|j|jj��tjd|t|�f�tjdtt	|j
����ytt|g|ttd|dtj
j|�d�}|j�\}}t|�r�tjd||dd
�f�|jr�tjd||jf�d}Wqttfk
�r
}	ztjd	||	f�d}WYdd}	~	XqXqW|S)NTz'calling script '%s' with arguments '%s'zusing environment '%s')�stdout�stderrZ	close_fds�envZuniversal_newlines�cwdzscript '%s' error output: '%s'rz#script '%s' returned error code: %dFzscript '%s' error: %s���)�os�environ�updateZ
_variablesZget_env�log�info�str�debugr
�itemsrr�path�dirnameZcommunicate�len�error�
returncode�OSError�IOError)
r	�scriptsZ	arguments�retrr�proc�out�err�errr
�
_call_scriptsIs,
zScriptPlugin._call_scriptscs$tt|�j|�|j|jdg�dS)N�start)�superr�_instance_apply_staticr-r)r	r)�	__class__rr
r0asz#ScriptPlugin._instance_apply_staticcstd}tt|�j|||�dkr d}dg}|r4|dg7}|j|j|�dkrZtjtj|j�ntj	tj
|j�d}|S)NTFZverify�ignore_missing)r/r�_instance_verify_staticr-rrr�constsZSTR_VERIFY_PROFILE_OKr#ZSTR_VERIFY_PROFILE_FAIL)r	rr2Zdevicesr(�args)r1rr
r3es
z$ScriptPlugin._instance_verify_staticcsBdg}|tjkr|dg}|jt|j�|�tt|�j||�dS)N�stopZ
full_rollback)r4Z
ROLLBACK_FULLr-�reversedrr/r�_instance_unapply_static)r	rZrollbackr5)r1rr
r8ts


z%ScriptPlugin._instance_unapply_static)�__name__�
__module__�__qualname__�__doc__�classmethodrrrr-r0r3r4Z
ROLLBACK_SOFTr8�
__classcell__rr)r1r
r	s+
r)Ztuned.constsr4�rZ
tuned.logsZtunedr�
subprocessrrZlogs�getrZPluginrrrrr
�<module>s



?>