U
    c                     @   sD   d dl mZ d dlmZ d dlmZ d dlmZ G dd deZdS )    )StepTask)GatlingTask)HttpCmd)FailExceptionc                   @   s   e Zd ZdZdZdZdZdZdZdZ	dZ
dZddddZdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )EnablePrometheusMonitoringNzno-cachezapplication/json)zcache-controlzcontent-typeacceptc                 C   s    t  | _| jjdkrtddS )zChecking task configamzSource must be am componentN)r   http_cmdsourcecomponent_typer   self r   V/mnt/disks/data/xslou/lodestar-fork/pyrock/tests/stress/am/authn_rest/tasks/mytasks.pypre"   s    zEnablePrometheusMonitoring.prec                 C   sp   | j j d| _| jd }| j| _| jddi | jd| j ji | jd| j ji | jj	|| jd dS )	zObtain SSO Token for amadminz/jsonz/authenticateaccept-api-versionzprotocol=2.0,resource=1.0zx-openam-usernamezx-openam-password)urlheadersN)
r
   base_urlrest_urlr   headers_jsonupdate
admin_useradmin_passwordr	   post)r   Zauth_urlr   r   r   step1(   s    
z EnablePrometheusMonitoring.step1c                 C   s>   | j d | _| j| _| jddi | jj| j| jd| _dS )z*Fetch the pay load for enabling monitoringz"/global-config/services/monitoringr   protocol=1.0,resource=1.0r   N)r   monitoring_service_urlr   r   r   r	   getmon_responser   r   r   r   step22   s    z EnablePrometheusMonitoring.step2c                 C   s>   | j  | _d| jd< d| jd< d| jd< td| j  dS )z!Enabling AM monitoring in payloadTenabledZhttpEnabledZ
rmiEnabledzUpdated payload : N)r    jsonmon_payload_jsonprintr   r   r   r   step39   s
    


z EnablePrometheusMonitoring.step3c                 C   s$   dD ]}t d|  | j|= qdS zRemove '_id' from the payload)_idz  removing : N)r%   r$   r   namer   r   r   step4A   s    z EnablePrometheusMonitoring.step4c                 C   s6   | j | _| jddi | jj| j| j| jdd dS z;Update the configuration in AM (send the payload to server)r   r   z"enabled":true)r   	json_dataexpected_stringN)r   r   r   r	   putr   r$   r   r   r   r   step5G   s     z EnablePrometheusMonitoring.step5c                 C   s>   | j d | _| j| _| jddi | jj| j| jd| _dS )z/Fetch the pay load for prometheus configurationz8/global-config/services/monitoring/prometheus/prometheusr   r   r   N)r   prometheus_conf_urlr   r   r   r	   r   prometheus_responser   r   r   r   step6N   s    z EnablePrometheusMonitoring.step6c                 C   s   | j  | _d| jd< dS )z)Enabling prometheus monitoring in payloadTr"   N)r2   r#   prometheus_payload_jsonr   r   r   r   step7U   s    z EnablePrometheusMonitoring.step7c                 C   s$   dD ]}t d|  | j|= qdS r'   )r%   r4   r)   r   r   r   step8Z   s    z EnablePrometheusMonitoring.step8c                 C   s6   | j | _| jddi | jj| j| j| jdd dS r,   )r   r   r   r	   r/   r1   r4   r   r   r   r   step9`   s     z EnablePrometheusMonitoring.step9c                 C   s   | j   |   dS )zPost methodN)r	   closeset_result_passr   r   r   r   r   g   s    
zEnablePrometheusMonitoring.post)__name__
__module____qualname__r	   r   r    r   r$   r2   r1   r4   r   r   r   r   r!   r&   r+   r0   r3   r5   r6   r7   r   r   r   r   r   r      s0   
r   N)	#pyrock.lib.scheduler.tasks.StepTaskr   pyrock.tasks.scenario.gatlingr   shared.lib.utils.HttpCmdr   shared.lib.utils.exceptionr   r   r   r   r   r   <module>   s   