
    YhK                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ  e            Z G d de          Z G d	 d
e          Z G d de          ZdS )    )StepTask)GatlingTask)HttpCmd)FailException)kubectl)get_pyrock_runc                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
!EnableDsRemotePasswordHashingTaskz ds-password-hashing-microservicec                 b    | j         j                            d          st          d          dS )Checking task configz	ds-idrepoz"Source must be ds-idrepo componentN)sourceinstance_name
startswithr   selfs    Z/mnt/disk1/xslou/workshop/lodestar-fork/pyrock/tests/stress/am/authn_rest/tasks/mytasks.pyprez%EnableDsRemotePasswordHashingTask.pre   s9    {(33K@@ 	F DEEE	F 	F    c                 B    t          d| j         | j                   dS )z8Verify that the password hashing microserice is deployedzget service 	componentN)r   microservice_namer   r   s    r   step1z'EnableDsRemotePasswordHashingTask.step1   s)    7t5774;OOOOOOr   c                 v    t          d| j         d| j                                         | j                   dS )zPScale the password hashing microserice to the same replica number than ds-idrepozscale deployment z --replicas=r   N)r   r   r   get_expected_replica_countr   s    r   step2z'EnableDsRemotePasswordHashingTask.step2#   sL    n 6nnDKDjDjDlDlnnk	
 	
 	
 	
 	
 	
r   c                 0    |                      d           dS )zsIncrease the number of PBKDF2 iterations first to see the gains
        (and to be close to production environment)z--set pbkdf2-iterations:10000N$update_pbkdf2_password_storage_chemer   s    r   step3z'EnableDsRemotePasswordHashingTask.step3*   s     	112QRRRRRr   c                 B    |                      d| j         d           dS )z-Configure the remote password hashing featurez/ --set remote-password-hashing-base-uri:http://zn:8080/ --set remote-password-hashing-connection-timeout:20s --set remote-password-hashing-request-timeout:120sN)r   r   r   s    r   step4z'EnableDsRemotePasswordHashingTask.step4/   sA    11Bd>T B B B	
 	
 	
 	
 	
r   c                 0    |                      d           dS )z*Enable the remote password hashing featurez*--set remote-password-hashing-enabled:trueNr   r   s    r   step5z'EnableDsRemotePasswordHashingTask.step57   s    112^_____r   c                 b    | j         j        D ]!}| j                             |d|            "d S )NzBset-password-storage-scheme-prop --scheme-name PBKDF2-HMAC-SHA256 )podcommand)r   podsdsconfig)r   dsconfig_set_clausesr&   s      r   r   zFEnableDsRemotePasswordHashingTask.update_pbkdf2_password_storage_cheme;   sS    ;# 	 	CK  s]qss !    	 	r   N)__name__
__module____qualname__r   r   r   r   r    r"   r$   r    r   r   r
   r
      s        :F F F
P P P
 
 
S S S

 
 
` ` `    r   r
   c                       e Zd Zd Zd ZdS )ConfigureCTSPurgec                     dS )z
Pre methodNr.   r   s    r   r   zConfigureCTSPurge.preD   s    r   c                 d    t                               d          }|                    d           dS )z"Reduce the replication purge delayzds-ctsi`T  N)
pyrock_runget_componentset_replication_purge_delay)r   
ds_cts_idps     r   r   zConfigureCTSPurge.step1H   s/    --h77
..u55555r   N)r+   r,   r-   r   r   r.   r   r   r0   r0   C   s2          6 6 6 6 6r   r0   c                       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 Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd ZdS )EnablePrometheusMonitoringNzno-cachezapplication/json)zcache-controlzcontent-typeacceptc                 j    t                      | _        | j        j        dk    rt	          d          dS )r   amzSource must be am componentN)r   http_cmdr   component_typer   r   s    r   r   zEnablePrometheusMonitoring.preZ   s4    		;%-- =>>> .-r   c                 l   | j         j         d| _        | j        dz   }| j        | _        | j                            ddi           | j                            d| j         j        i           | j                            d| j         j        i           | j        	                    || j                   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_urlrA   headers_jsonupdate
admin_useradmin_passwordr<   post)r   auth_urls     r   r   z EnablePrometheusMonitoring.step1`   s    ;/666=?2 L  "68S!TUUU  "5t{7M!NOOO  "5t{7Q!RSSSx1BCCCCCr   c                     | j         dz   | _        | j        | _        | j                            ddi           | j                            | j        | j                  | _        dS )z*Fetch the pay load for enabling monitoringz"/global-config/services/monitoringr?   protocol=1.0,resource=1.0rA   N)rC   monitoring_service_urlrA   rD   rE   r<   getmon_responser   s    r   r   z EnablePrometheusMonitoring.step2j   sd    &*m6Z&Z# L  "68S!TUUU M--d.ISWSd-eer   c                     | j                                         | _        d| j        d<   d| j        d<   d| j        d<   t          d| j                    dS )z!Enabling AM monitoring in payloadTenabledhttpEnabled
rmiEnabledzUpdated payload : N)rO   jsonmon_payload_jsonprintr   s    r   r    z EnablePrometheusMonitoring.step3q   s`     $ 1 6 6 8 8+/i(/3m,.2l+:4#8::;;;;;r   c                 D    dD ]}t          d|            | j        |= dS zRemove '_id' from the payload)_idz  removing : N)rV   rU   r   names     r   r"   z EnablePrometheusMonitoring.step4y   s@     	, 	,D($(()))%d++	, 	,r   c                     | j         | _        | j                            ddi           | j                            | j        | j        | j        d           dS z;Update the configuration in AM (send the payload to server)r?   rK   z"enabled":true)rA   	json_dataexpected_stringN)rA   rD   rE   r<   putrM   rU   r   s    r   r$   z EnablePrometheusMonitoring.step5   sh     L  "68S!TUUU'%+,	 	 	
 	
 	
 	
 	
r   c                     | j         dz   | _        | j        | _        | j                            ddi           | j                            | j        | j                  | _        dS )z/Fetch the pay load for prometheus configurationz8/global-config/services/monitoring/prometheus/prometheusr?   rK   rL   N)rC   prometheus_conf_urlrA   rD   rE   r<   rN   prometheus_responser   s    r   step6z EnablePrometheusMonitoring.step6   sd    #'=3m#m  L  "68S!TUUU#'=#4#4T5MW[Wh#4#i#i   r   c                 V    | j                                         | _        d| j        d<   dS )z)Enabling prometheus monitoring in payloadTrQ   N)rc   rT   prometheus_payload_jsonr   s    r   step7z EnablePrometheusMonitoring.step7   s,    '+'?'D'D'F'F$26$Y///r   c                 D    dD ]}t          d|            | j        |= dS rX   )rV   rf   rZ   s     r   step8z EnablePrometheusMonitoring.step8   s@     	3 	3D($(())),T22	3 	3r   c                     | j         | _        | j                            ddi           | j                            | j        | j        | j        d           dS r]   )rA   rD   rE   r<   r`   rb   rf   r   s    r   step9z EnablePrometheusMonitoring.step9   sh     L  "68S!TUUU$%2,	 	 	
 	
 	
 	
 	
r   c                 `    | j                                          |                                  dS )zPost methodN)r<   closeset_result_passr   s    r   rH   zEnablePrometheusMonitoring.post   s.    r   )r+   r,   r-   r<   rC   rO   rM   rU   rc   rb   rf   rD   rA   r   r   r   r    r"   r$   rd   rg   ri   rk   rH   r.   r   r   r8   r8   N   s       HHL!"L *<NZlmmG? ? ?D D Df f f< < <, , ,	
 	
 	
j j j7 7 7
3 3 3	
 	
 	
    r   r8   N)#pyrock.lib.scheduler.tasks.StepTaskr   pyrock.tasks.scenario.gatlingr   shared.lib.utils.HttpCmdr   shared.lib.utils.exceptionr   shared.lib.cloud_utilsr   pyrock.lib.PyRockRunr   r3   r
   r0   r8   r.   r   r   <module>ru      s   9 8 8 8 8 8 5 5 5 5 5 5 , , , , , , 4 4 4 4 4 4 * * * * * * / / / / / /^
) ) ) ) ) ) ) )X6 6 6 6 6 6 6 6\ \ \ \ \ \ \ \ \ \r   