§
    ¥Ä¡euº  ã                   ó6	  — d dl m Z  d dlmZ d dlZd dlZd dlmZ d dlZd dlm	Z	 d dlmZ d dl
Z
d dlZd dlmZ d dlZ e	e¦  «        Z eeddd	ii¬
¦  «        Ze
j                             e¦  «        Ze
j                             ed¦  «        Zej                             e¦  «         e
j                             ed¦  «        Zej                             e¦  «         d dlmZmZ d dlmZmZ d dl m!Z! d dlm"Z"m#Z#m$Z$ d dl%Z%d dl&m'Z' dej(        d<   dej(        d<    e
j)        dd¦  «        Z* e
j)        dd¦  «        Z+ e
j)        dd¦  «        Z, e
j)        dd¦  «        Z-e
j.        d         Z/ G d„ de¦  «        Z0d „ Z1e 2                    d!d"g¬#¦  «        e1d$„ ¦   «         ¦   «         Z3e 2                    d%d"g¬#¦  «        d&„ ¦   «         Z4e 2                    d'd(g¬#¦  «        d)„ ¦   «         Z5e 2                    d*¦  «        e1d+„ ¦   «         ¦   «         Z6e 2                    d,¦  «        e1d-„ ¦   «         ¦   «         Z7e 2                    d.d"g¬#¦  «        d/„ ¦   «         Z8e 2                    d0¦  «        e1d1„ ¦   «         ¦   «         Z9e 2                    d2d"g¬#¦  «        d3„ ¦   «         Z:e 2                    d4d"d5g¬#¦  «        d6„ ¦   «         Z;e 2                    d7g d8¢¬#¦  «        d9„ ¦   «         Z<e 2                    d:d(g¬#¦  «        d;„ ¦   «         Z=e 2                    d<d(g¬#¦  «        e 2                    d=d(g¬#¦  «        d>„ ¦   «         ¦   «         Z>e 2                    d?d"d@g¬#¦  «        dA„ ¦   «         Z?e 2                    dBd(g¬#¦  «        dC„ ¦   «         Z@e 2                    dDd(g¬#¦  «        dE„ ¦   «         ZAdFe0fdG„ZBdH„ ZCe 2                    dId(g¬#¦  «        dJ„ ¦   «         ZDe 2                    dKd"g¬#¦  «        dL„ ¦   «         ZEe 2                    dMd"g¬#¦  «        dN„ ¦   «         ZFe 2                    dOd"g¬#¦  «        dP„ ¦   «         ZGe 2                    dQg dR¢¬#¦  «        dS„ ¦   «         ZHe 2                    dTd"d(g¬#¦  «        e1dU„ ¦   «         ¦   «         ZIedVk    re J                    ¦   «          dS dS )Wé    )Údatetime)ÚEnumN©Úwraps)ÚFlask)ÚCORSz/*ÚoriginsÚ*)Ú	resourceszApp/mainz
App/protos)ÚcloudServiceDAO_pb2ÚcloudServiceDAO_pb2_grpc)ÚCBCManager_pb2ÚCBCManager_pb2_grpc)Úcheck_password_hash)ÚjsonifyÚrequestÚmake_response)ÚMessageToJsonÚ 5adefc2f2a36b60de59f3412a4d8b0f7ÚTF_SECRET_KEYÚ 055d48d7699d412c5015ece728cfd847Ú
SECRET_KEYÚDAO_HOSTzdao.grpcÚDAO_PORTÚ443ÚCBC_HOSTzcbc.grpcÚCBC_PORTÚCBC_SAc                   ó*   — e Zd ZdZdZdZdZdZdZdZ	dS )	ÚSTATUSé   é   é   é   é   é   é   N)
Ú__name__Ú
__module__Ú__qualname__Ú	REQUESTEDÚSUCCESSÚSUPPLY_ERRORÚACTIVEÚINACTIVEÚSERVICE_ERRORÚDELETED© ó    ú./home/gothic/public_html/api_core_daas/main.pyr    r    /   s1   € € € € € Ø€IØ€GØ€LØ€FØ€HØ€MØ€G€G€Gr3   r    c                 ó<   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }|S )Nc                  óv	  •— d }d}d}dt           j        v rt           j        d         }nmdt           j        v rt           j        d         }d}nJt           j        d         r't           j        d         rt           j        d         }d}nt          ddi¦  «        S t	          t
          d	z   d
¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        |¬¦  «        }t          j	        t          › dt          › �|¬¦  «        }	t          j        |	¦  «        }
|r†	 t          j        |t           j        d         dg¬¦  «        }t%          j        |d         ¬¦  «        }|
                     |¦  «        }|st          ddi¦  «        S �n#  t          ddi¦  «        cY S xY w|s†	 t          j        |t           j        d         dg¬¦  «        }t%          j        |d         ¬¦  «        }|
                     |¦  «        }|st          ddi¦  «        S �n�#  t          ddi¦  «        cY S xY wt%          j        t-          t           j        d         ¦  «        ¬¦  «        }|
                     |¦  «        }|st          ddi¦  «        S t1          |j        ¦  «        dk    rt          ddi¦  «        S |j        d         }|j        }g }|�|                     ¦   «         dk    �r	 t9          j        |j        › d�dd|i¬¦  «        }|j        d k    r|                      ¦   «          d!| !                    ¦   «         v r€| !                    ¦   «         d!         d"k    rbtE          j#        d#| !                    ¦   «         d         ¦  «        }| $                    d¦  «         %                    d$¦  «        }d%„ |D ¦   «         }nt          dd&i¦  «        S n-#  t          dd'i¦  «        cY S xY w| &                    |¦  «         |D ]ª}	 t9          j        |j        › d�dd(|› �|d)œ¬¦  «        }|j        d k    rŒ4|                      ¦   «          d*| !                    ¦   «         vs| !                    ¦   «         d*         dk     rt          dd+i¦  «        c S  n#  t          dd,i¦  «        cY c S xY w ‰|g| ¢R i |¤ŽS )-NFzx-daas-tokenztf-daas-tokenTÚauthorizationÚorg_idÚmessagezNo se encuentra autenticadoú/App/certs/csharp_dao/ca.pemÚrb©Úroot_certificatesú:©Úcredentialsr   ÚHS256)Ú
algorithmsÚ	public_id)rC   u6   No se autenticÃ³ correctamente o el token es invÃ¡lidou   token invÃ¡lidor   ©r8   õ4   No se encuentra registrada la organizaciÃ³n indicadar!   õÖ   Se encontraron mÃºltiples organizaciones con el identificador entregado al intentar validar usuario, Ã©sto no deberÃ­a de ser posible e impide reconocer el usuario al que desea hacer referencia. Reporte Ã©ste errorr   Ú z/cloudapi/1.0.0/orgséx   ÚAuthorization©ÚtimeoutÚheadersi–  ÚminorErrorCodeÚNOT_ACCEPTABLEz(?<=\[)(.*)(?=\])ú,c                 ó>   — g | ]}d |v¯|                      ¦   «         ‘ŒS )ÚD)Ústrip©Ú.0Úxs     r4   ú
<listcomp>z5token_required.<locals>.decorator.<locals>.<listcomp>ž   s,   € ð (ð (ð (Ø*+¸sÈ!¸|¸|˜AŸGšG™IœI¸|¸|¸|r3   uQ   La validaciÃ³n de token fallÃ³, reporte Ã©ste error con su proveedor del serviciou*   No fue posible validar versiÃ³n de api VCDzapplication/*;version=)ÚAcceptrI   ÚresultTotalu[   No fue posible validar vigencia de token, reporte Ã©ste error con su proveedor del serviciou   No se autenticÃ³)'r   rL   Úargsr   ÚopenÚPATH_APPÚreadÚgrpcÚssl_channel_credentialsÚsecure_channelÚdao_hostÚdao_portr   ÚservicioDAOServiceStubÚjwtÚdecodeÚappÚconfigr   ÚGetUserVCDRequestÚ
getUserVCDÚGetOrgVCDRequestÚintÚ	getOrgVCDÚlenÚorgsÚapi_versionrR   ÚrequestsÚgetÚhostÚstatus_codeÚraise_for_statusÚjsonÚreÚsearchÚgroupÚsplitÚappend)rY   ÚkwargsÚtokenÚfrom_vcdÚfrom_tfÚtf_tokenÚfpÚca_certÚcredsÚcore_channelÚstubÚdataÚreqÚ
user_foundÚorgrn   Úapi_versionsÚresÚrÚavÚfs                       €r4   Ú	decoratorz!token_required.<locals>.decorator:   sÝ  ø€ àˆØˆØˆà�Wœ_Ð,Ð,Ý”OØôˆEˆEð ¥¤Ð/Ð/Ý” Ô7ˆHØˆGˆGÝŒ_˜_Ô-ð 	Gµ'´,¸xÔ2Hð 	GÝ”O OÔ4ˆEØˆHˆHå˜IÐ'DÐEÑFÔFÐFå•(Ð;Ñ;¸TÑBÔBð 	 ÀbØ—g’g‘i”iˆGð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 åÔ,¸wÐGÑGÔGˆåÔ*­hÐ+CÐ+C½Ð+CÐ+CÐQVÐWÑWÔWˆÝ'Ô>¸|ÑLÔLˆàð v	Dð?Ý”zØ�3œ: oÔ6ÀGÀ9ðñ ô �õ *Ô;ÀdÈ;ÔFWÐXÑXÔX�Ø!Ÿ_š_¨SÑ1Ô1�
à!ð Ý"à%Ð'_ðñô ð ñøð?Ý 	Ð+<Ð=Ñ>Ô>Ð>Ð>Ð>øøøØð e	Dð?Ý”z %­¬°LÔ)AÈwÈiÐXÑXÔX�Ý)Ô;ÀdÈ;ÔFWÐXÑXÔX�Ø!Ÿ_š_¨SÑ1Ô1�
à!ð Ý"à%Ð'_ðñô ð ñøð?Ý 	Ð+<Ð=Ñ>Ô>Ð>Ð>Ð>øøøå%Ô6Ý�7œ<¨Ô1Ñ2Ô2ðñ ô ˆCð —.’.Øñô ˆCð ð 
ÝØÐ WÐXñô ð õ �S”X‘” Ò"Ð"åà!ð  $}ðñô ð ð
 ”(˜1”+ˆCØœ/ˆKØˆLàÐ" k×&7Ò&7Ñ&9Ô&9¸RÒ&?Ñ&?ðÝ"œ,Øœ8Ð9Ð9Ð9Ø #à+¨Uð!ðñ ô �Cð ”¨#Ò-Ð-Ø×,Ò,Ñ.Ô.Ð.à(¨C¯HªH©J¬JÐ6Ð6ØŸHšH™JœJÐ'7Ô8Ð<LÒLÐLåœIÐ&:¸C¿HºH¹J¼JÀyÔ<QÑRÔR˜Ø'(§w¢w¨q¡z¤z×'7Ò'7¸Ñ'<Ô'<˜ð(ð (Ø/;ð(ñ (ô (˜˜õ  'à )Ð+~ðñ ô  ð ð	 %øðÝ"Ø"Ð$PÐQñô ð ð ð øøøð ×#Ò# KÑ0Ô0Ð0à"ð Dð D�ðDÝ"œ,Øœ8Ð9Ð9Ð9Ø #à&C¸rÐ&CÐ&CØ-2ð!ð !ðñ ô �Cð ”¨#Ò-Ð-Ø à×(Ò(Ñ*Ô*Ð*à(¨C¯HªH©J¬JÐ6Ð6¸#¿(º(¹*¼*À]Ô:SÐVWÒ:WÐ:WÝ&à )ð  ,Iðñ ô  ð ð ð ð ˜øðDÝ" IÐ/AÐ#BÑCÔCÐCÐCÐCÐCÐCøøøØˆq�Ð(˜Ð(Ð(Ð( Ð(Ð(Ð(sL   Â.CÃCÃCÄ+A*F ÆF-Æ3A*H  È H5Ë-C&O ÏO*Ð0RÐ8ARÒR,r   )rŒ   r�   s   ` r4   Útoken_requiredrŽ   9   s:   ø€ Ý
ˆ1�X„XðP)ð P)ð P)ð P)ñ „XðP)ðd Ðr3   z/session/terraformÚPOST)Úmethodsc            
      óÚ  — t          dd¦  «        5 } |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        |¬¦  «        }t          j        t
          › dt          › �|¬¦  «        }t          j        |¦  «        }t          j
        t          j        d         ¬¦  «        }|                     |¦  «        }|st          dd	d
œ¦  «        S t          j        |j        j        t&          j                             ¦   «         t'          j        t-          t.          j        d         ¦  «        ¬¦  «        z   dœt0          j        d         d¦  «        }t          d|dœ¦  «        S )Núca.pemr;   r<   r>   r?   Úuser_id)r“   ÚERRORu"   No se encontrÃ³ usuario registrado©Ústatusr9   Úexpiration_time©Úminutes©rC   Úexpr   rA   r,   )r–   r{   )rZ   r\   r]   r^   r_   r`   ra   r   rb   r   rg   r   Úformrh   r   rc   ÚencodeÚuserrC   r   ÚutcnowÚ	timedeltarj   ro   re   rf   )r   r€   r�   r‚   rƒ   r…   r‰   r{   s           r4   Úcreate_tfsessionr¡   Ð   s‘  € õ 
ˆh˜Ñ	Ô	ð  Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô(¸7ÐCÑCÔC€EÝÔ&­(Ð'?Ð'?µXÐ'?Ð'?ÈUÐSÑSÔS€LÝ#Ô:¸<ÑHÔH€Då
Ô
/½¼ÀYÔ8OÐ
PÑ
PÔ
P€CØ
�/Š/˜#Ñ
Ô
€Càð 
ÝØÐ+OÐPÐPñ
ô 
ð 	
õ ŒJàœÔ+ÝÔ$×+Ò+Ñ-Ô-ÝÔ ­­X¬]Ð;LÔ-MÑ)NÔ)NÐOÑOÔOñPð	
ð 	
õ
 	Œ
�?Ô#Øñô €Eõ ˜i°%Ð8Ð8Ñ9Ô9Ð9ó   ‘2²6¹6z/sessionc                  óö  — t           j        } | r| j        r| j        st	          ddddi¦  «        S t          j        d| j        ¦  «        }|st          ddi¦  «        S t          dd	¦  «        5 }| 	                    ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        |¬
¦  «        }t          j        t          › dt          › �|¬¦  «        }t          j        |¦  «        }t#          j        |d         ¬¦  «        }|                     |¦  «        }|st          dd|d         › d�i¦  «        S t)          |j        ¦  «        dk    rt          dd|d         › d�i¦  «        S t#          j        |d         ¬¦  «        }|                     |¦  «        }	|	st          dd|d         › d�i¦  «        S |	j        D ]!}
|
j        |j        d         j        k    r|
}	 nŒ"t7          |	j        | j        ¦  «        rqt9          j        |	j        t>          j                              ¦   «         t?          j!        d¬¦  «        z   dœtD          j#        d         d¦  «        }t          d|i¦  «        S t	          ddddi¦  «        S )Nzcould not verifyi‘  ÚAuthenticationu%   Se requieren datos de autenticaciÃ³n"z	(.*)@(.*)r9   u=   Se espera formato 'usuario@organizaciÃ³n' para autenticaciÃ³nr’   r;   r<   r>   r?   r"   )Únameu8   No se encuentra registrada la organizaciÃ³n con nombre 'ú'r!   u5   Se encontraron mÃºltiples organizaciones con nombre 'u�   ' al intentar validar usuario, Ã©sto no deberÃ­a de ser posible e impide reconocer el usuario al que desea hacer referencia. Reporte Ã©ste error)Ú	user_namez0No se encuentra registro de usuario con nombre 'r   é   r˜   rš   r   rA   r{   u   No se autenticÃ³ correctamente)$r   r7   ÚusernameÚpasswordr   ru   Úmatchr   rZ   r\   r]   r^   r_   r`   ra   r   rb   r   ri   rk   rl   rm   rg   rh   Úusersr8   ÚOrgVcdIdr   rc   r�   rC   r   rŸ   r    re   rf   )ÚauthÚfull_usernamer   r€   r�   r‚   rƒ   r…   r‡   r†   Úufr{   s               r4   Úcreate_sessionr±   ô   s2  € åÔ €Dàð 
�t”}ð 
¨D¬Mð 
ÝØØØÐFÐGñ
ô 
ð 	
õ ”HØ�T”]ñô €Mð ð 
ÝØÐWÐXñ
ô 
ð 	
õ 
ˆh˜Ñ	Ô	ð  Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð åÔ(¸7ÐCÑCÔC€EÝÔ&­(Ð'?Ð'?µXÐ'?Ð'?ÈUÐSÑSÔS€LÝ#Ô:¸<ÑHÔH€DÝ
Ô
.°MÀ!Ô4DÐ
EÑ
EÔ
E€CØ
�.Š.˜Ñ
Ô
€Càð 
ÝàÐiÐVcÐdeÔVfÐiÐiÐiðñ
ô 
ð 	
õ
 
ˆSŒX‰Œ˜Ò	Ð	åàð  vÐS`ÐabÔScð  vð  vð  vðñ
ô 
ð 	
õ Ô
/Ø Ô"ðñ ô €Cð —’ Ñ%Ô%€Jàð 
ÝàÐaÈmÐ\]ÔN^ÐaÐaÐaðñ
ô 
ð 	
ð Ôð ð ˆØŒ9˜œ œÔ,Ò,Ð,ØˆJØˆEð -õ ˜:Ô.°´Ñ>Ô>ð 
)Ý”
à'Ô1ÝÔ(×/Ò/Ñ1Ô1µHÔ4FÈrÐ4RÑ4RÔ4RÑRðð õ ŒJ�|Ô$Øñ
ô 
ˆõ ˜ Ð'Ñ(Ô(Ð(åØØØ	Ð;Ð<ñô ð s   Á-BÂBÂBz/category_servicesÚGETc                  óÐ  — t           j        dk    rÕt          t          dz   d¦  «        5 } |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        |¬¦  «        }t          j        t          › dt          › �|¬¦  «        }t          j        |¦  «        }t          j        ¦   «         }|                     |¦  «        }t          |¦  «         |j        j        S d S )Nr²   r:   r;   r<   r>   r?   )r   ÚmethodrZ   r[   r\   r]   r^   r_   r`   ra   r   rb   r   ÚGetProductTypeRequestÚgetProductTypeÚprintÚresponse©r   r€   r�   r‚   rƒ   r…   r‰   s          r4   Úget_product_typerº   B  s  € õ „~˜ÒÐÝ•(Ð;Ñ;¸TÑBÔBð 	 ÀbØ—g’g‘i”iˆGð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 åÔ,¸wÐGÑGÔGˆÝÔ*­hÐ+CÐ+C½Ð+CÐ+CÐQVÐWÑWÔWˆÝ'Ô>¸|ÑLÔLˆÝ!Ô7Ñ9Ô9ˆØ×!Ò! #Ñ&Ô&ˆåˆc‰
Œ
ˆ
ØŒ|Ô$Ð$ð Ðs   ©A
Á
AÁAz	/servicesc                  óÌ  — t           j        dk    rÓt          dd¦  «        5 } |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   t	          j        |¬¦  «        }t	          j        t          › dt          › �|¬¦  «        }t          j
        |¦  «        }t          j        t          t           j        d         ¦  «        ¬¦  «        }|                     |¦  «        }|S d S )	Nr²   r’   r;   r<   r>   r?   Úservice_type_id)ÚIdProductType)r   r´   rZ   r\   r]   r^   r_   r`   ra   r   rb   r   ÚGetServicesByProductTypeRequestrj   rY   ÚgetServicesCatalogr¹   s          r4   Úget_servicesrÀ   R  s  € õ „~˜ÒÐÝ�(˜DÑ!Ô!ð 	  RØ—g’g‘i”iˆGð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 åÔ,¸wÐGÑGÔGˆÝÔ*­hÐ+CÐ+C½Ð+CÐ+CÐQVÐWÑWÔWˆÝ'Ô>¸|ÑLÔLˆÝ!ÔAÝ�gœlÐ+<Ô=Ñ>Ô>ð
ñ 
ô 
ˆð ×%Ò% cÑ*Ô*ˆàˆ
ð Ðó   ¡AÁAÁ	Az/plansc                  ó°  — t           j        dk    rÅt          dd¦  «        5 } |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   t	          j        |¦  «        }t	          j        t          › dt          › �|¬¦  «        }t          j
        |¦  «        }t          j        t           j        d         ¬¦  «        }|                     |¦  «        }|S d S )Nr²   r’   r;   r>   r?   Ú
service_id)Ú	idService)r   r´   rZ   r\   r]   r^   r_   r`   ra   r   rb   r   ÚGetPlansServiceRequestrY   ÚgetPlansServicer¹   s          r4   Ú	get_plansrÇ   c  s	  € õ „~˜ÒÐÝ�(˜DÑ!Ô!ð 	  RØ—g’g‘i”iˆGð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ Ô,¨WÑ5Ô5ˆÝÔ*­hÐ+CÐ+C½Ð+CÐ+CÐQVÐWÑWÔWˆÝ'Ô>¸|ÑLÔLˆÝ!Ô8Ý”l <Ô0ð
ñ 
ô 
ˆð ×"Ò" 3Ñ'Ô'ˆàˆ
ð ÐrÁ   z/provisioningc                  ó2  — t          dd¦  «        5 } |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          j        t
          › d�|¬¦  «        }t          j        |¦  «        }t          j	        t          t          j        d         ¦  «        t          t          j        d         ¦  «        ¬¦  «        }|                     |¦  «        }t          t          j        |j        j        ¦  «        d         ¦  «        S )	Nr’   r;   ú:444r?   Úplan_idr“   ©rÊ   r“   r   )rZ   r\   r]   r^   r_   r`   r   rb   r   ÚSetContractedServicesRequestrj   r   rœ   ÚsetContractedServicesServicer   rt   Úloadsr¸   r¹   s          r4   ÚproviderÏ   u  s%  € õ 
ˆh˜Ñ	Ô	ð  Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô(¨Ñ1Ô1€EÝÔ&­(Ð'8Ð'8Ð'8ÀeÐLÑLÔL€LÝ#Ô:¸<ÑHÔH€DÝ
Ô
:Ý•G”L Ô+Ñ,Ô,Ý•G”L Ô+Ñ,Ô,ðñ ô €Cð ×
+Ò
+¨CÑ
0Ô
0€Cå•4”:˜cœlÔ3Ñ4Ô4°QÔ7Ñ8Ô8Ð8r¢   z/services_contractedc                  ó°  — t           j        dk    rÅt          dd¦  «        5 } |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   t	          j        |¦  «        }t	          j        t          › dt          › �|¬¦  «        }t          j
        |¦  «        }t          j        t           j        d         ¬¦  «        }|                     |¦  «        }|S d S )Nr²   r’   r;   r>   r?   r“   )ÚidUser)r   r´   rZ   r\   r]   r^   r_   r`   ra   r   rb   r   ÚGetAllContractedServicesRequestrY   ÚgetServicesAllContractedr¹   s          r4   Úget_contractedrÔ   ‡  s	  € õ „~˜ÒÐÝ�(˜DÑ!Ô!ð 	  RØ—g’g‘i”iˆGð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ Ô,¨WÑ5Ô5ˆÝÔ*­hÐ+CÐ+C½Ð+CÐ+CÐQVÐWÑWÔWˆÝ'Ô>¸|ÑLÔLˆÝ!ÔAÝ”< 	Ô*ð
ñ 
ô 
ˆð ×+Ò+¨CÑ0Ô0ˆàˆ
ð ÐrÁ   z)/service/cbc/manage_subscription/<action>c                 ó~  — t          t          dz   d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          j        t          j        t          › dt          › �|¬¦  «        ¦  «        }t          t          dz   d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          j        t          j        t          › dt          › �|¬¦  «        ¦  «        }| dvrt          dd	| › d
�dœ¦  «        S t          j        t          j        d| dk    rt          j        j        nt          j        j        t*          j        d         t*          j        d         t*          j        d         t/          t*          j        d         ¦  «        t*          j        d         t/          t*          j        d         ¦  «        ¬¦  «        ¬¦  «        }|                     |¦  «        }t3          |¦  «         |j        dk    s&t          d|j        › d| dk    rdnd› d�dœ¦  «        fS | dk    �rÉ	 t9          j        t/          t*          j        d         ¦  «        t/          t*          j        d         ¦  «        ¬¦  «        }|                     |¦  «        }|j        j        rd|j        j        vrt          dddœ¦  «        fS tA          j!        |j        j        ¦  «        d          d         }	tE          t/          t*          j        d         ¦  «        ¦  «        D ]ß}
t9          j#        t*          j        d         › |
› �tI          |	¦  «        tI          d!d!|
d"z   › d#t*          j        d         › �d d!d!d!d!d!d!d!d!d!d!d!d!d!d$œgd%œ¦  «        ¬&¦  «        }| %                    |¦  «        }|j        j        rd|j        j        vr<t          dd'|
› d(t/          t*          j        d         ¦  «        |
z
  › d)�dœ¦  «        fc S Œàt          d| dœ¦  «        S )*u  
    NextGen Antivirus - Carbon Black Cloud. ContrataciÃ³n y cancelaciÃ³n de servicio para Tenant/OrganizaciÃ³n especÃ­fica por toma-pedidos dirigido Ã¡rea de mesa de servicio.
    action: contracting, cancel
    mÃ©todos: POST
    retorno: json -> status, message
    ú+/App/certs/python_carbonblackmanager/ca.pemr;   Nr>   r?   r:   )ÚcontractingÚcancelr”   u   AcciÃ³n solicitada 'u   ' invÃ¡lidar•   zNext Gen Antivirusr×   Ú	name_planÚorg_vdcÚpayment_modelÚlicensesÚexpire_dateÚrequest_queue_id)ÚserviceÚmovementTypeÚplanÚorgVdcÚpaymentMethodrÜ   Ú
expireDateÚrequestQueueId)Úservice_formr,   z): No fue posible realizar solicitud para u   contrataciÃ³nu   cancelaciÃ³nu6    de servicio. Intente nuevamente o reporte Ã©ste errorÚplanidr“   rË   Úidun   No fue posible registrar contrataciÃ³n de servicio, solicite que se registre manualmente y reporte Ã©ste errorr   rG   r!   ú/)ÚversionÚvm_nameÚvm_ownerNameÚ
vm_vdcNameÚvm_dateCreatedÚvm_hrefÚsensor_nameÚsensor_loginUserNameÚsensor_registeredTimeÚsensor_deviceTypeÚsensor_osVersionÚsensor_sensorVersionÚsensor_macAddressÚsensor_deviceId)Úapi_hostr{   Úlicense_countr„   )r¥   Úcontracted_services_idÚspecsu   FallÃ³ registro de licencia #uZ   . La peticiÃ³n para contrataciÃ³n se realizÃ³ exitosamente, sin embargo no se registraron un    licencia(s) en nuestra base de datos. Reporte Ã©ste error y solicite que se registren las licencias faltantes)&rZ   r[   r\   r]   r^   r   ÚCBCManagerServiceStubr_   Úcbc_hostÚcbc_portr   rb   r`   ra   r   r   ÚServiceManagementRequestÚServiceFormÚMovementTypeÚCONTRACTINGÚCANCELr   rœ   rj   ÚServiceManager·   r–   r9   r   rÌ   rÍ   r¸   rt   rÎ   ÚrangeÚSetLicensesRequestÚstrÚsetLicensesService)Úactionr   r€   r�   Úcbc_stubÚ	creds_daoÚdao_stubr…   r‰   ÚcsidrU   s              r4   Úmanage_subscriptionr  ™  sn  € õ 
�hÐFÑFÈÑ	MÔ	Mð ÐQSØ—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð åÔ(¨Ñ1Ô1€Eå"Ô8ÝÔ�xÐ4Ð4­(Ð4Ð4À%ÐHÑHÔHñô €Hõ 
�hÐ7Ñ7¸Ñ	>Ô	>ð À"Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô,¨WÑ5Ô5€Iå'Ô>ÝÔ�xÐ4Ð4­(Ð4Ð4À)ÐLÑLÔLñô €Hð Ð.Ð.Ð.ÝØÐ+UÀ&Ð+UÐ+UÐ+UÐVÐVñ
ô 
ð 	
õ Ô
1Ý#Ô/Ø(à˜Ò&Ð&õ (Ô4Ô@Ð@åÔ,Ô3Ý”˜kÔ*Ý”< 	Ô*Ý!œ,Øôõ �œ jÔ1Ñ2Ô2Ý”| MÔ2Ý�wœ|Ð,>Ô?Ñ@Ô@ð
ñ 
ô 
ðñ ô €Cð  ×
 Ò
  Ñ
%Ô
%€Cå	ˆ#�J„J€JàŒ:˜Ò"Ð"åà%Ø"%¤+ð   Oð   OÐkqð  vCò  lCð  lCÐXgÐXgð  IWð   Oð   Oð   Oðð ñô ð
ð 	
ð �ÒÑð 	@Ý!Ô>Ý�œ XÔ.Ñ/Ô/½½W¼\È)Ô=TÑ9UÔ9Uð
ñ 
ô 
ˆð ×3Ò3°CÑ8Ô8ˆàŒ|Ô$ð 	¨°C´LÔ4IÐ(IÐ(Iåà")ð $Tðð ñô ðð õ Œz˜#œ,Ô/Ñ0Ô0°Ô3°DÔ9ˆå•s�7œ<¨
Ô3Ñ4Ô4Ñ5Ô5ð )	ð )	ˆAÝ%Ô8Ýœ YÔ/Ð4°Ð4Ð4Ý'*¨4¡y¤yÝà$&Ø!#Ø,-¨a©CÐ)LÐ)Lµ'´,¸zÔ2JÐ)LÐ)Lð ,-Ø+-Ø02Ø.0Ø24Ø+-Ø/1Ø8:Ø9;Ø57Ø46Ø8:Ø57Ø35ðð ð!ð	ð ñô ðñ ô ˆCð< ×-Ò-¨cÑ2Ô2ˆCà”<Ô(ð ¨D¸¼Ô8MÐ,MÐ,Måà&-ð (vÀqð  (vð  (võ  ehõ  ipô  iuð  v@ô  iAñ  eBô  eBð  EFñ  eFð  (vð  (vð  (vðð ñô ðð ð ð ð -Nõ Ø¨Ð0Ð0ñô ð s   ™:º>Á>Â(C	Ã	CÃCz#/service/cbc/manage_sensor/<action>ÚPUTc                 ón  — t          dd¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        }t	          j        t          j        t          › dt          › �|¬¦  «        ¦  «        }t          j
        t          j        t          › d�|¬¦  «        ¦  «        }t          j        dk    �rP| dk    �rI|j        j        j        }|j        j        j        }	 t%          j        |› d	�d
d|i¬¦  «        }|                     ¦   «          n#  t+          dddœ¦  «        cY S xY w|j        j        }		 	 t%          j        |› d|	› d�d
d|it          j        d         t          j        d         gdt3          t          j        d         ¦  «        rdndidœ¬¦  «        }|                     ¦   «          n,#  t+          ddt          j        d         › �dœ¦  «        cY S xY wt+          ddt          j        d         › �dœ¦  «        S t          j        d         }
|
dk    rt5          |
¦  «        nd}
t          j        d          }|dk    rt5          |¦  «        nd}| |
s[|rYt7          j        |¬!¦  «        }|                     |¦  «        }|j        st+          d|j        › d"�dœ¦  «        fS |j        d         }t7          j         |r|j!        nd|
¬#¦  «        }| "                    |¦  «        }|j        s#t+          d|j        › d$|j!        › d%�dœ¦  «        fS |j        }i }i }|D ]r}|j        }| #                    d&d'¦  «        }tI          j%        |¦  «        }|d(         tM          |d(         ¦  «        d)z
           }|
s|r|d*         dk    r|}|j'        }
 nŒstQ          j)        tQ          j*        t          j        d+         | d,k    rtP          j+        j,        ntP          j+        j-        t          j        d-         |
¬.¦  «        ¬/¦  «        }| .                    |¦  «        }|j/        dk    s.t+          d|j        › d0| d,k    rd1n	| d2k    rd3nd4› d5�dœ¦  «        fS t          j        d6k    �r| d,k    �rt          j        d7         |d*<   t          j        d8         |d9<   t          j        d:         |d;<   t          j        d-         |d<<   t7          j0        |j'        |j1        te          |¦  «        |j!        ¬=¦  «        }| 3                    |¦  «        }|j4        j4        r<d>|j4        j4        vs.tI          j%        |j4        j4        ¦  «        d         d>         d?k    rt+          dd@dœ¦  «        fS t+          ddAdœ¦  «        fS t          j        d6k    r| d2k    rt+          ddBdœ¦  «        fS dS dS )Cu5  
    NextGen Antivirus - Carbon Black Cloud. InstalaciÃ³n, desinstalaciÃ³n y actualizaciÃ³n de estatus de sensores en mÃ¡quinas virtuales de VCD por toma-pedidos dirigido Ã¡rea de mesa de servicio.
    action: install, uninstall, update_status
    mÃ©todos: POST, PUT
    retorno: json -> status, message
    r’   r;   Nr>   r?   rÉ   r  Úupdate_statusú/appservices/v5/orgsrH   úX-AUTH-TOKENrJ   r”   u6   No fue posible recupear org key. Notifique Ã©ste errorr•   z/appservices/v6/orgs/z/device_actionsÚaction_typeÚ	device_idÚtoggleÚtrueÚONÚOFF)r  r  Úoptions)rK   rL   r„   z,No fue posible actualizar estatus de sensor r,   zEstablecido estatus Ú
license_idrG   r   rÞ   ©rÞ   z˜: No fue posible recuperar registro de servicio solicitado, verifique que el valor enviado en request_queue_id es correcto y existe en la base de datos.)rú   Ú
idlicenseszO: No fue posible recuperar registros de licencias con contracted_services_id = zJ, verifique que el valor enviado es correcto y existe en la base de datos.r¦   ú"r„   r!   rë   rÚ   ÚinstallÚhref)râ   rà   ÚhrefVMÚ	licenseId)Úlicense_formz: No fue posible solicitar u   instalaciÃ³n de sensoresÚ	uninstallu   desinstalaciÃ³n de sensoresu#   actualizaciÃ³n de estatus de sensoru*   . Intente nuevamente o reporte Ã©ste errorr�   r¥   Ú	ownerNamerì   Údate_createdrî   rï   )r  r¥   rû   Úid_contracted_servicesÚresultÚexitouk   No fue posible actualizar registro de licencia con datos de MÃ¡quina Virtual objetivo. Reporte Ã©ste error.ur   Solicitud para instalaciÃ³n de sensor exitosa. Espere respuesta a su solicitud desde el portal de administraciÃ³n.uu   Solicitud para desinstalaciÃ³n de sensor exitosa. Espere respuesta a su solicitud desde el portal de administraciÃ³n.)5rZ   r\   r]   r^   r   rü   r_   rý   rþ   r   rb   r`   r   r´   rÜ   rû   rø   r{   ro   rp   rs   r   ÚorganizationÚorgKeyrœ   Úevalrj   r   ÚGetRequestQueueRequestÚgetRequestQueueServiceÚrequestqueuer9   ÚGetLicensesRequestrú   ÚGetLicensesÚreplacert   rÎ   rl   r  r   ÚSensorManagementRequestÚLicenseFormr  ÚINSTALLÚ	UNINSTALLÚSensorManager–   ÚSetUpdateLicensesRequestÚnameLicensesr  ÚsetUpdateLicensesr¸   )r	  r   r€   r�   r
  r  r‰   Úcbc_api_hostÚ	cbc_tokenÚorg_keyr  rÞ   rÜ   r…   Úlicense_specsÚlicense_versionÚls                    r4   Úmanage_sensorrA    sœ  € õ 
ˆh˜Ñ	Ô	ð  Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô(¨Ñ1Ô1€Eõ #Ô8ÝÔ�xÐ4Ð4­(Ð4Ð4À%ÐHÑHÔHñô €Hõ (Ô>ÝÔ�xÐ-Ð-Ð-¸5ÐAÑAÔAñô €Hõ „~˜ÒÑ 6¨_Ò#<Ñ#<ð ŒLÔÔ'ð 	ð ŒLÔÔ$ð 	ð	Ý”,ØÐ5Ð5Ð5ØØ'¨Ð3ðñ ô ˆCð
 × Ò Ñ"Ô"Ð"Ð"øð	Ýà%ØWðð ñô ð ð ð øøøð Ô"Ô)ˆð	ð	Ý”,ØÐNÐN°gÐNÐNÐNØØ'¨Ð3å#*¤<Ø%ô$õ #*¤,¨{Ô";Ð!<à ­$­w¬|¸FÔ/CÑ*DÔ*DÐ"O $ $È%ð ðð ð	ñ ô ˆCð × Ò Ñ"Ô"Ð"Ð"øð	Ýà%ØkÍgÌlÐ[hÔNiÐkÐkðð ñô ð ð ð øøøõ à#ØOµ'´,¸}Ô2MÐOÐOðð ñ
ô 
ð 	
õ ”˜lÔ+€JØ$.°"Ò$4Ð$4•�Z‘”�¸!€Jå”|Ð$6Ô7ÐØ0@ÀBÒ0FÐ0F•sÐ+Ñ,Ô,Ð,ÈAÐà€Hàð "Ð*ð "Ý!Ô8Ø-ð
ñ 
ô 
ˆð ×-Ò-¨cÑ2Ô2ˆàÔð 	åà")Ø&)¤kð  $Lð  $Lð  $Lðð ñô ðð ð Ô˜qÔ!ˆå
Ô
0Ø=MÐT˜sÔ9Ð9ÐSTØðñ ô €Cð ×
Ò
˜sÑ
#Ô
#€CàŒ<ð 
åà%Ø"%¤+ð   eð   eð  Bô  Yð   eð   eð   eðð ñô ð
ð 	
ð Œ|€HØ€MØ€Oàð ð ˆØœˆØ%×-Ò-¨c°3Ñ7Ô7ˆÝœ
 =Ñ1Ô1ˆØ'¨Ô/Ý�˜fÔ%Ñ&Ô&¨Ñ*ô
ˆð ð 	Ð.ð 	°?À9Ô3MÐQSÒ3SÐ3SØˆHØœˆJØˆEøå
Ô
0Ý#Ô/Ý”< 	Ô*à˜Ò"Ð"õ (Ô4Ô<Ð<åÔ,Ô6Ý”< Ô'Ø ð
ñ 
ô 
ð
ñ 
ô 
€Cð ×
Ò
 Ñ
$Ô
$€CàŒ:˜Ò"Ð"åà%Ø"%¤+ð   Oð   OÐhnÐr{Òh{Ðh{ÐJdÐJdð  cið  mxò  cxð  cxð  B_ð  B_ð  ~cð   Oð   Oð   Oðð ñô ð
ð 	
õ „~˜ÒÑ F¨iÒ$7Ñ$7å%,¤\°&Ô%9ˆ˜	Ñ"Ý*1¬,°{Ô*Cˆ˜Ñ'å,3¬L¸Ô,HˆÐ(Ñ)Ý%,¤\°&Ô%9ˆ˜	Ñ"å!Ô:ØÔ*ØÔ&Ý�mÑ$Ô$Ø#+Ô#Bð	
ñ 
ô 
ˆð ×(Ò(¨Ñ-Ô-ˆð ”Ô%ð	à˜sœ|Ô4Ð4Ð4ÝŒz˜#œ,Ô/Ñ0Ô0°Ô3°HÔ=ÀÒHÐHõ à")ð $Qðð ñô ðð õ à'ð  Tðð ñô ð
ð 	
õ „~˜ÒÐ F¨kÒ$9Ð$9åà'ð  Wðð ñô ð
ð 	
ð  ÐÐ$9Ð$9s%   ‘2²6¹6Ã30D$ Ä$D:ÅA<G Ç'G1z*/service/cbc/manage_user_accounts/<action>)r�   r²   r  ÚDELETEc                 ó
  — t          dd¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        }t	          j        t          j        t          › dt          › �|¬¦  «        ¦  «        }t          j
        t          j        t          › dt          › �|¬¦  «        ¦  «        }t          j        t          j        d         t          j        d         ¬¦  «        }|                     |¦  «        }|st%          d	d
dœ¦  «        S |j        }|j        }		 t+          j        |› d�dd|	i¬¦  «        }|                     ¦   «          n#  t%          dddœ¦  «        cY S xY w|j        j        }
|j        j        }t          j        dk    r¬| dk    r¦t9          j        |	|||
t9          j        t          j        d         t          j        d         t          j        d         t          j        d         t          j        d         t          j        d         ¬¦  «        ¬¦  «        }|                     |¦  «        }t          j        dk    r2| dk    r,t9          j         |	||
¬¦  «        }| !                    |¦  «        }t          j        dk    rß| d k    rÙt9          j         |	||
¬¦  «        }| !                    |¦  «        }t9          j"        |	||
t          j        d!         |t9          j        |d"         j#        t          j        d!         t          j        d         t          j        d         |d"         j$        t          j        d         ¬¦  «        ¬#¦  «        }| %                    |¦  «        }t          j        d$k    rj| d%k    rdt9          j         |	||
¬¦  «        }| !                    |¦  «        }t9          j&        |	||d"         j$        |
¬&¦  «        }| %                    |¦  «        }t%          |¦  «        S )'u  
    NextGen Antivirus - Carbon Black Cloud. CreaciÃ³n, recuperaciÃ³n, actualizaciÃ³n y borrado de cuentas de usuario con rol fijo de Analista 3.
    action: add, get, change, delete
    mÃ©todos: POST, GET, PUT, DELETE
    retorno: json -> status, message
    r’   r;   Nr>   r?   r8   rÃ   )r8   rÄ   r,   uo   No se encontraron licencias relacionadas a usuario, revise si la informaciÃ³n es correcta o reporte Ã©ste errorr•   r  rH   r  rJ   r”   z<No fue posible recuperar org key de ambiente de carbon blackr�   ÚaddÚ
contact_idÚemailÚ
first_nameÚ	last_nameÚlogin_idÚphone)rE  rF  rG  rH  rI  rJ  )Ú
auth_tokenr;  r8   r=  Ú	user_datar²   rp   )rK  r;  r=  r  ÚchangeÚ
login_namer!   )rK  r;  r=  rN  r8   rL  rB  Údelete)rK  r;  rI  r=  )'rZ   r\   r]   r^   r   rü   r_   rý   rþ   r   rb   r`   ra   r   r0  r   rœ   r1  r   rø   r{   ro   rp   rs   r*  r+  rè   r´   r   ÚCreateUserAccountRequestÚUserAccountÚCreateUserAccountÚUserAccountsRequestÚGetUserAccountsÚUpdateUserAccountRequestrE  rI  ÚUpdateUserAccountÚDeleteUserAccountRequest)r	  r   r€   r�   r
  r  r…   r‰   rø   r{   r=  r8   s               r4   Úmanage_user_accountsrX  ò  s]  € õ 
ˆh˜Ñ	Ô	ð  Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô(¨Ñ1Ô1€Eõ #Ô8ÝÔ�xÐ4Ð4­(Ð4Ð4À%ÐHÑHÔHñô €Hõ (Ô>ÝÔ�xÐ4Ð4­(Ð4Ð4À%ÐHÑHÔHñô €Hõ Ô
0ÝŒ|˜HÔ%µ´¸lÔ1Kðñ ô €Cð ×
Ò
˜sÑ
#Ô
#€Càð 
Ýà#ð Mðð ñ
ô 
ð 	
ð Œ|€HØŒI€Eð
ÝŒlØÐ-Ð-Ð-ØØ# UÐ+ð
ñ 
ô 
ˆð
 	×ÒÑÔÐÐøð
Ýà!ØYðð ñ
ô 
ð 	
ð 	
ð 	
øøøð ÔÔ%€GØÔÔ €Få„~˜ÒÐ F¨e¢O OÝÔ5ØØ!ØØÝ$Ô0Ý"œ<¨Ô5Ý”l 7Ô+Ý"œ<¨Ô5Ý!œ, {Ô3Ý œ jÔ1Ý”l 7Ô+ðñ ô ð
ñ 
ô 
ˆð ×(Ò(¨Ñ-Ô-ˆå„~˜ÒÐ 6¨U¢? ?ÝÔ0Ø¨8¸Wð
ñ 
ô 
ˆð ×&Ò& sÑ+Ô+ˆå„~˜ÒÐ 6¨XÒ#5Ð#5ÝÔ0ØØ!Øð
ñ 
ô 
ˆð
 ×&Ò& sÑ+Ô+ˆåÔ5ØØ!ØÝ”| LÔ1ØÝ$Ô0Ø˜qœ6Ô,Ý”l <Ô0Ý"œ<¨Ô5Ý!œ, {Ô3Ø˜QœœÝ”l 7Ô+ðñ ô ð
ñ 
ô 
ˆð ×(Ò(¨Ñ-Ô-ˆå„~˜Ò!Ð! f°Ò&8Ð&8ÝÔ0ØØ!Øð
ñ 
ô 
ˆð
 ×&Ò& sÑ+Ô+ˆåÔ5ØØ!Ø˜”V”_Øð	
ñ 
ô 
ˆð ×(Ò(¨Ñ-Ô-ˆå�3‰<Œ<Ðs   ‘2²6¹6Ä-0E ÅE4z/service/cbc/retrieve/vmsc                  ó:  — t          t          j                             d¦  «        ¦  «        dk    rt          j        d         nd} t          t          j                             d¦  «        ¦  «        dk    rt          j        d         nd}t	          t
          dz   d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          j
        t          j        t          › dt          › �|¬¦  «        ¦  «        }t	          t
          d	z   d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          j        t          j        t           › dt"          › �|¬¦  «        ¦  «        }t%          j        t)          | ¦  «        ¬
¦  «        }|                     |¦  «        }	|	st-          dddœ¦  «        S t          |	j        ¦  «        dk    rt-          dddœ¦  «        S |	j        d         }	t1          j        ||	j        t6          d|	j        |	j        ¬¦  «        }|                     |¦  «        }
|
j        dk    rt-          d|
j         dœ¦  «        S tC          |
¦  «        S )uö   
    NextGen Antivirus - Carbon Black Cloud. Recupera listado de mÃ¡quinas virtuales en formato XML, purga informaciÃ³n que puede cambiar en un futuro y se retorna en formato JSON.
    mÃ©todos: GET
    retorno: json -> status, message, json
    r8   r   rÚ   NrÖ   r;   r>   r?   r:   rD   r”   rE   r•   r!   rF   T)Úvdc_idÚvcd_api_hostr®   Úis_basic_authrn   Útenant)"rl   r   rY   ÚgetlistrZ   r[   r\   r]   r^   r   rü   r_   rý   rþ   r   rb   r`   ra   r   ri   rj   rk   r   rm   r   ÚRetrieveVMsRequestrq   r   rn   r¥   ÚRetrieveVMsr–   r9   r   )Ú
var_org_idÚvar_org_vdcr   r€   r�   r
  r  r  r…   r‡   r‰   s              r4   Úget_vmsrc  q  s  € õ ,/­w¬|×/CÒ/CÀHÑ/MÔ/MÑ+NÔ+NÐQRÒ+RÐ+R•”˜hÔ'Ð'ÐXY€JÝ-0µ´×1EÒ1EÀiÑ1PÔ1PÑ-QÔ-QÐTUÒ-UÐ-U•'”,˜yÔ)Ð)Ð[_€Kå	�hÐFÑFÈÑ	MÔ	Mð ÐQSØ—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð åÔ(¨Ñ1Ô1€Eå"Ô8ÝÔ�xÐ4Ð4­(Ð4Ð4À%ÐHÑHÔHñô €Hõ 
�hÐ7Ñ7¸Ñ	>Ô	>ð À"Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô,¨WÑ5Ô5€Iå'Ô>ÝÔ�xÐ4Ð4­(Ð4Ð4À)ÐLÑLÔLñô €Hõ Ô
.µc¸*±o´oÐ
FÑ
FÔ
F€CØ
×
Ò
˜SÑ
!Ô
!€Càð 
Ýà!ØRðð ñ
ô 
ð 	
õ 
ˆSŒX‰Œ˜Ò	Ð	åà!ð uðð ñ
ô 
ð 	
ð Œ(�1Œ+€Cå
Ô
+ØØ”XÝØØ”OØŒxðñ ô €Cð ×
Ò
˜sÑ
#Ô
#€Cà
„z�WÒÐÝà!Øœ;ðð ñ
ô 
ð 	
õ ˜ÑÔÐs$   Â!CÃCÃ	CÄ0EÅEÅEz/service/cbc/retrieve/sensorsz(/service/cbc/retrieve/sensors/<deviceid>c                 óÈ  — t          dd¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          j        t
          › dt          › �|¬¦  «        }t          j        |¦  «        }t          j
        t          j        d         ¬¦  «        }|                     |¦  «        }|st          dd	d
œ¦  «        S |j        }|j        }	t          j        t"          › dt$          › �|¬¦  «        }t'          j        |¦  «        }t+          j        ||	|j        j        ¬¦  «        }|                     |¦  «        }t          |¦  «        S )uþ   
    NextGen Antivirus - Carbon Black Cloud. Recupera listado de sensores de tipo Workload en formato CSV, purga informaciÃ³n que pudiese cambiar en un futuro y se retorna en formato JSON.
    mÃ©todos: GET
    retorno: json -> status, message, json
    r’   r;   Nr>   r?   rú   ©rú   r”   uf   No se encontraron licencias dadas de alta, revise si la informaciÃ³n es correcta o reporte Ã©ste errorr•   )r;  rK  r=  )rZ   r\   r]   r^   r_   r`   ra   r   rb   r   r0  r   rœ   r1  r   rø   r{   rý   rþ   r   rü   r   ÚRetrieveSensorsRequestr*  r+  ÚRetrieveWorkloadSensors)
Údeviceidr   r€   r�   Ú
ms_channelrƒ   r…   r‰   rø   r{   s
             r4   Úget_sensorsrj  ¹  s¤  € õ 
ˆh˜Ñ	Ô	ð  Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô(¨Ñ1Ô1€EÝÔ$­Ð%=Ð%=µ8Ð%=Ð%=È5ÐQÑQÔQ€JÝ#Ô:¸:ÑFÔF€Då
Ô
0Ý&œ|Ð,DÔEðñ ô €Cð ×
Ò
˜3Ñ
Ô
€Càð 
Ýà!ð Dðð ñ
ô 
ð 	
ð Œ|€HØŒI€EåÔ$­Ð%=Ð%=µ8Ð%=Ð%=È5ÐQÑQÔQ€JÝÔ4°ZÑ@Ô@€DÝ
Ô
/Ø¨%¸Ô9IÔ9Pðñ ô €Cð ×
&Ò
& sÑ
+Ô
+€CÝ�3‰<Œ<Ðr¢   z'/service/daas/manage_contracts/<action>rB  c                 ó:  — dt           j        vrt          dddœ¦  «        S t           j        dk    r?| dk    r9t	          t           j        d         ¦  «        }t          |t          j        ¦  «        }t           j        dk    r?| dk    r9t	          t           j        d         ¦  «        }t          |t          j        ¦  «        }t           j        dk    r?| d	k    r9t	          t           j        d         ¦  «        }t          |t          j	        ¦  «        }t          |¦  «        S )
NrÞ   r”   u   No se recibiÃ³ request_queue_idr•   rB  rO  r�   ÚpauseÚ
reactivate)
r   rœ   r   r´   rj   Úupdate_contract_statusr    r1   r/   r.   )r	  rÞ   r(  s      r4   Úmanage_contractsro  â  sñ   € ð ¥¤Ð-Ð-Ý 'Ð6WÐXÐXÑYÔYÐYå„~˜Ò!Ð! f°Ò&8Ð&8Ý�wœ|Ð,>Ô?Ñ@Ô@Ðå'Ð(8½&¼.ÑIÔIˆå„~˜ÒÐ F¨gÒ$5Ð$5Ý�wœ|Ð,>Ô?Ñ@Ô@Ðå'Ð(8½&¼/ÑJÔJˆå„~˜ÒÐ F¨lÒ$:Ð$:Ý�wœ|Ð,>Ô?Ñ@Ô@Ðå'Ð(8½&¼-ÑHÔHˆå�6‰?Œ?Ðr3   z/service/daas/deployments/<id>c                 ó¤  — t          dd¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          j        t
          › d�|¬¦  «        }t          j        |¦  «        }| st          ddg dœ¦  «        S t          j
        t          | ¦  «        ¬¦  «        }	 |                     |¦  «        }nA# t          j        j        $ r*}t          dt          |¦  «        g dœ¦  «        cY d }~S d }~ww xY w|j        st          dd	| › d
�g dœ¦  «        S t          ddd„ |j        D ¦   «         dœ¦  «        S )Nr’   r;   rÉ   r?   r”   zSe requiere request_queue_id©r–   r9   r„   r  ú7No fue posible encontrar registro con request_queue_id=õP   . Verifique que la informaciÃ³n proporcionada es correcta o reporte Ã©ste error.r,   rG   c                 óT   — g | ]%}t          j        t          |d ¬¦  «        ¦  «        ‘Œ&S ©T)Úincluding_default_value_fields©rt   rÎ   r   rS   s     r4   rV   z#get_deployments.<locals>.<listcomp>.  ó1   € ÐqÐqÐqÐ[\•T”Z¥¨aÐPTÐ UÑ UÔ UÑVÔVÐqÐqÐqr3   ©rZ   r\   r]   r^   r_   r`   r   rb   r   r   r-  rj   r.  Ú_channelÚ_InactiveRpcErrorr  r/  )	rè   r   r€   r�   ri  rƒ   r…   r‰   Úes	            r4   Úget_deploymentsr}  ü  s  € õ 
ˆh˜Ñ	Ô	ð  Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô(¨Ñ1Ô1€EåÔ$­Ð%6Ð%6Ð%6ÀEÐJÑJÔJ€JÝ#Ô:¸:ÑFÔF€Dàð Ýà!Ø9Øðð ñ
ô 
ð 	
õ "Ô8Ý  ™WœWð
ñ 
ô 
ˆð		Ø×-Ò-¨cÑ2Ô2ˆCˆCøÝŒ}Ô.ð 	ð 	ð 	Ýà%Ý" 1™vœvØðð ñô ð ð ð ð ð ð øøøøð	øøøð Ôð 
Ýà!ð jÐUWð  jð  jð  jØðð ñ
ô 
ð 	
õ àØØqÐqÐ`cÔ`pÐqÑqÔqð	
ð 	
ñô ð ó*   ‘2²6¹6Â;C ÃDÃ%D
ÄDÄ
Dz;/service/daas/deployments/contract/<contracted_services_id>c                 ó¤  — t          dd¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          j        t
          › d�|¬¦  «        }t          j        |¦  «        }| st          ddg dœ¦  «        S t          j
        t          | ¦  «        ¬¦  «        }	 |                     |¦  «        }nA# t          j        j        $ r*}t          dt          |¦  «        g dœ¦  «        cY d }~S d }~ww xY w|j        st          dd	| › d
�g dœ¦  «        S t          ddd„ |j        D ¦   «         dœ¦  «        S )Nr’   r;   rÉ   r?   r”   z!Se requiere contracted_service_idrq  re  z<No fue posible encontrar registro con contracted_service_id=rs  r,   rG   c                 óT   — g | ]%}t          j        t          |d ¬¦  «        ¦  «        ‘Œ&S ru  rw  rS   s     r4   rV   z+get_deployment_contract.<locals>.<listcomp>d  rx  r3   ry  )	rú   r   r€   r�   ri  rƒ   r…   r‰   r|  s	            r4   Úget_deployment_contractr�  2  s
  € õ 
ˆh˜Ñ	Ô	ð  Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô(¨Ñ1Ô1€EåÔ$­Ð%6Ð%6Ð%6ÀEÐJÑJÔJ€JÝ#Ô:¸:ÑFÔF€Dà!ð Ýà!Ø>Øðð ñ
ô 
ð 	
õ "Ô8Ý#&Ð'=Ñ#>Ô#>ð
ñ 
ô 
ˆð		Ø×-Ò-¨cÑ2Ô2ˆCˆCøÝŒ}Ô.ð 	ð 	ð 	Ýà%Ý" 1™vœvØðð ñô ð ð ð ð ð ð øøøøð	øøøð Ôð 
Ýà!ð CÐZpð  Cð  Cð  CØðð ñ
ô 
ð 	
õ àØØqÐqÐ`cÔ`pÐqÑqÔqð	
ð 	
ñô ð r~  r–   c                 óÆ  — t          dd¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          j        t
          › d�|¬¦  «        }t          j        |¦  «        }t          j	        | ¬¦  «        }| 
                    |¦  «        }|j        s	dd| › d�d	œS |j        d
         }	|	j        }
|
dk    s|
€|
nt          |
¦  «        }
|	j        }|dk    s|
€|nt          |¦  «        }|	j        }|dk    s|
€|nt          |¦  «        }t          j        | |	j        |	j        |
|||	j        |j        |	j        |	j        |	j        |	j        |	j        ¬¦  «        }|                     |¦  «        }|j        j        r<d|j        j        vs.t9          j        |j        j        ¦  «        d
         d         dk    r	dd| › d�d	œS ddd	œS )Nr’   r;   rÉ   r?   r  r”   rr  rs  r•   r   rG   )rÞ   rú   Úresource_specsÚrequest_datetimeÚsupply_datetimeÚdown_datetimeÚsupply_status_idÚservice_status_idÚ	error_logÚidentificatorÚname_appr–   Úportr(  r)  zENo fue posible actualizar estatus para registro con request_queue_id=u   . Reporte Ã©ste error.r,   uS   Se actualizÃ³ estatus correctamente. Se aplicarÃ¡n los cambios de estatus en breve.)rZ   r\   r]   r^   r_   r`   r   rb   r   r-  r.  r/  r„  Úpatch_dateformatr…  r†  ÚSetUpdateRequestQueueRequestrú   rƒ  r‡  Úvaluer‰  rŠ  r‹  r–   rŒ  ÚsetUpdateRequestQueuer¸   rt   rÎ   )rÞ   r–   r   r€   r�   ri  rƒ   r…   r‰   Úrequest_contractÚ
r_datetimeÚ
s_datetimeÚ
d_datetimes                r4   rn  rn  i  s¯  € Ý	ˆh˜Ñ	Ô	ð  Ø—'’'‘)”)ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô(¨Ñ1Ô1€EåÔ$­Ð%6Ð%6Ð%6ÀEÐJÑJÔJ€JÝ#Ô:¸:ÑFÔF€Då
Ô
4ÐFVÐ
WÑ
WÔ
W€CØ
×
%Ò
% cÑ
*Ô
*€CàÔð 
àð tÐQað  tð  tð  tð
ð 
ð 	
ð
 Ô'¨Ô*Ðà!Ô2€Jð ˜ÒÐ˜zÐ1ð 	ˆ
å˜jÑ)Ô)ð ð
 "Ô1€Jð ˜ÒÐ˜zÐ1ð 	ˆ
å˜jÑ)Ô)ð ð
 "Ô/€Jð ˜ÒÐ˜zÐ1ð 	ˆ
å˜jÑ)Ô)ð õ Ô
:Ø)Ø/ÔFØ'Ô6Ø#Ø"Ø Ø)Ô:Ø œ,Ø"Ô,Ø&Ô4Ø!Ô*ØÔ&ØÔ"ðñ ô €Cð ×
$Ò
$ SÑ
)Ô
)€Cð ŒLÔ!ð
à˜3œ<Ô0Ð0Ð0ÝŒ:�c”lÔ+Ñ,Ô,¨QÔ/°Ô9¸WÒDÐDð ð HÐ_oð  Hð  Hð  Hð
ð 
ð 	
ð Øhðð ð r¢   c                 ó¤   — 	 t          j        | d¦  «        } n%# t          $ r t          j        | d¦  «        } Y nw xY w|                      d¦  «        S )Nz%m/%d/%Y %I:%M:%S %pz%d/%m/%Y %H:%M:%Sz%Y-%m-%d %H:%M:%S.%f)r   ÚstrptimeÚ
ValueErrorÚstrftime)Údatetime_strs    r4   r�  r�  ±  sj   € ðLÝÔ(¨Ð7MÑNÔNˆˆøÝð Lð Lð LÝÔ(¨Ð7JÑKÔKˆˆˆðLøøøð × Ò Ð!7Ñ8Ô8Ð8s   ‚ ˜:¹:z/services_securityc                  ó
  — t           j        dk    rpt          t           j                             d¦  «        ¦  «        dk    rt           j        d         nd} | dk    r(ddlm} |                     t           t          ¦  «        S d S d S )Nr²   Ú
events_idsr   ÚNOTFOUNDzsrv-apigateway)ÚAxwaySrv)r   r´   rl   rœ   r^  r�  Úmainr[   )r›  Úaxways     r4   Úservices_securityr   ¹  s†   € õ „~˜ÒÐÝ36µw´|×7KÒ7KÈLÑ7YÔ7YÑ3ZÔ3ZÐ]^Ò3^Ð3^•W”\ ,Ô/Ð/Ðdnˆ
ØÐ)Ò)Ð)Ø2Ð2Ð2Ð2Ð2Ð2Ø—:’:�g¥xÑ0Ô0Ð0ð	 Ðà)Ð)r3   z/wsoac                  ó
  — t           j        dk    rpt          t           j                             d¦  «        ¦  «        dk    rt           j        d         nd} | dk    r(ddlm} |                     t           t          ¦  «        S d S d S )Nr�   r›  r   rœ  zsrv-woa)ÚWSOA)r   r´   rl   rœ   r^  r¢  rž  r[   )r›  Úwsoas     r4   r£  r£  Ã  s…   € õ „~˜ÒÐÝ36µw´|×7KÒ7KÈLÑ7YÔ7YÑ3ZÔ3ZÐ]^Ò3^Ð3^•W”\ ,Ô/Ð/Ðdnˆ
Ø˜Ò"Ð"Ø)Ð)Ð)Ð)Ð)Ð)Ø—9’9�W¥hÑ/Ô/Ð/ð	  Ðà"Ð"r3   z/kmshsm/<action>c                 ó„   — t           j        dk    r/ddlm}  |t           t          | ¦  «                             ¦   «         S d S )Nr�   r   )ÚFortanix)r   r´   r¥  r[   rž  )r	  Úfrtnxs     r4   Úfortanixr§  Í  sK   € õ „~˜ÒÐØ.Ð.Ð.Ð.Ð.Ð.Øˆu•W�h¨Ñ/Ô/×4Ò4Ñ6Ô6Ð6ð  Ðr3   z/admin/savedatavcloudc                 ó„   — t           j        dk    r/ddlm}  |t           t          | ¦  «                             ¦   «         S d S )Nr�   r   )Ú	AdminDaaS)r   r´   r©  r[   Úsavedatavcloud)r	  Úadmdss     r4   Ú	ffortanixr¬  Õ  sK   € õ „~˜ÒÐØ0Ð0Ð0Ð0Ð0Ð0Øˆu•W�h¨Ñ/Ô/×>Ò>Ñ@Ô@Ð@ð  Ðr3   z/srvcdn/<path:remaining_path>)r²   r�   r  rB  ÚPATCHc                 ó`   — ddl m }  |t          t          | ¦  «                             ¦   «         S )Nr   )ÚCDN)r¯  r   r[   rž  )Úremaining_pathÚcdn_apis     r4   r±  r±  Ý  s6   € ð #Ð"Ð"Ð"Ð"Ð"Øˆ7•7�H nÑ5Ô5×:Ò:Ñ<Ô<Ð<r3   z/helloc                 ó   — d| › �S )NzHELLO FROM FLASK r2   )rŽ   s    r4   Úhellor³  å  s   € ð 0˜~Ð/Ð/Ð/r3   Ú__main__)Kr   Úenumr   rt   ro   Ú	functoolsr   ru   Úflaskr   Úosr]   Ú
flask_corsr   Úsysr(   re   ÚcorsÚpathÚdirnameÚ__file__r[   ÚjoinÚpath_app_mainry   Úpath_app_protosÚ
csharp_daor   r   Úpython_carbonblackmanagerr   r   Úwerkzeug.securityr   r   r   r   rc   Úgoogle.protobuf.json_formatr   rf   Úgetenvr`   ra   rý   rþ   Úenvironr   r    rŽ   Úrouter¡   r±   rº   rÀ   rÇ   rÏ   rÔ   r  rA  rX  rc  rj  ro  r}  r�  rn  r�  r   r£  r§  r¬  r±  r³  Úrunr2   r3   r4   ú<module>rÊ     s,  ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à 	€	€	€	Ø €€€à Ð Ð Ð Ð Ð Ø 
€
€
€
à€eˆH�o„o€Ø€tˆC˜E I¨sÐ#3Ð4Ð5Ñ5Ô5€àŒ7�?Š?˜HÑ&Ô&€à”—’˜h¨
Ñ4Ô4€Ø „‡‚�Ñ Ô Ð Ø”'—,’, ¨,Ñ8Ô8€Ø „‡‚�Ñ  Ô  Ð  à DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 1Ð 1Ð 1Ð 1Ð 1Ð 1à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 
€
€
€
Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð A€„
ˆ?Ñ ð 'ð „
Øñð ˆ2Œ9�Z Ñ,Ô,€Øˆ2Œ9�Z Ñ'Ô'€Øˆ2Œ9�Z Ñ,Ô,€Øˆ2Œ9�Z Ñ'Ô'€Ø	Œ�HÔ	€ðð ð ð ð ˆTñ ô ð ðTð Tð Tðn ‡‚Ð¨&¨€Ñ2Ô2Øð:ð :ñ „ñ 3Ô2ð:ðD ‡‚ˆ: ˜x€Ñ(Ô(ðJð Jñ )Ô(ðJðZ ‡‚Ð¨%¨€Ñ1Ô1ð%ð %ñ 2Ô1ð%ð ‡‚ˆ;ÑÔØðð ñ „ñ Ôðð ‡‚ˆ8ÑÔØðð ñ „ñ Ôðð  ‡‚ˆ? V H€Ñ-Ô-ð9ð 9ñ .Ô-ð9ð  ‡‚Ð!Ñ"Ô"Øðð ñ „ñ #Ô"ðð  ‡‚Ð6ÀÀ€ÑIÔIð{ð {ñ JÔIð{ð| ‡‚Ð0¸6À5¸/€ÑJÔJðT
ð T
ñ KÔJðT
ðn ‡‚Ø0Ø,Ð,Ð,ð ñ ô ð
wð wñô ð
wðt ‡‚Ð&°°€Ñ8Ô8ðCð Cñ 9Ô8ðCðL ‡‚Ð*°U°G€Ñ<Ô<Ø‡‚Ð5À¸w€ÑGÔGð#ð #ñ HÔGñ =Ô<ð#ðL ‡‚Ø-Ø�XÐð ñ ô ð
ð ñô ð
ð* ‡‚Ø$ØˆGð ñ ô ð
/ð /ñô ð
/ðb ‡‚ØAØˆGð ñ ô ð
/ð /ñô ð
/ðdE°Vð Eð Eð Eð EðP9ð 9ð 9ð ‡‚Ð¨¨€Ñ0Ô0ð1ð 1ñ 1Ô0ð1ð ‡‚ˆ7˜F˜8€Ñ$Ô$ð0ð 0ñ %Ô$ð0ð ‡‚Ð v h€Ñ/Ô/ð7ð 7ñ 0Ô/ð7ð ‡‚Ð"¨F¨8€Ñ4Ô4ðAð Añ 5Ô4ðAð ‡‚Ð*Ð4]Ð4]Ð4]€Ñ^Ô^ð=ð =ñ _Ô^ð=ð ‡‚ˆ8˜V U˜O€Ñ,Ô,Øð0ð 0ñ „ñ -Ô,ð0ð ˆzÒÐØ‡G‚G�I„I€I€I€Ið Ðr3   