
    rE                         d 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 dZ	dZ
 G d	 d
ej                        Z G d de      Z G d de      Zy)zOrganization Security policy.    )absolute_import)division)unicode_literals)poller)waiterz$compute.globalOrganizationOperationsz$compute.organizationSecurityPoliciesc                       e Zd Zd Zy)DeletePollerc                      y N )self	operations     Blib/googlecloudsdk/api_lib/compute/org_security_policies/client.py	GetResultzDeletePoller.GetResult   s         N)__name__
__module____qualname__r   r   r   r   r	   r	      s    r   r	   c                   .   e Zd ZdZ	 	 	 	 ddZd Zed        Zed        Zed        Z	d Z
d	 Zd
 ZddZddZddZddZ	 	 ddZd Z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y)%OrgSecurityPolicyz/Abstracts Organization SecurityPolicy resource.Nc                     || _         || _        || _        || _        | j	                  t
              | _        | j	                  t              | _        y r   )	ref_compute_client
_resources_version_HasProjectOP_COLLECTION_NAME_op_has_projectAPI_COLLECTION_NAME_api_has_project)r   r   compute_client	resourcesversions        r   __init__zOrgSecurityPolicy.__init__'   sI    
 DH)DDODM++,>?D ,,-@ADr   c                     | j                   j                  || j                        }d|j                  v xs d|j                  v S )Nprojects)r   GetCollectionInfor   pathbase_url)r   
collectioncollection_infos      r   r   zOrgSecurityPolicy._HasProject3   sA    oo77
8<GO---W?W?W1WWr   c                 .    | j                   j                  S r   )r   apitools_clientr   s    r   _clientzOrgSecurityPolicy._client8   s    ///r   c                 .    | j                   j                  S r   )r   messagesr.   s    r   	_messageszOrgSecurityPolicy._messages<   s    (((r   c                 .    | j                   j                  S r   )r/   organizationSecurityPoliciesr.   s    r   _servicezOrgSecurityPolicy._service@   s    <<444r   c                 l    | j                   j                  d| j                  j                  |||      fS )NAddAssociation)securityPolicyAssociationsecurityPolicyreplaceExistingAssociation)r/   r4   r2   8ComputeOrganizationSecurityPoliciesAddAssociationRequest)r   associationsecurity_policy_idreplace_existing_associations       r   _MakeAddAssociationRequestTuplez1OrgSecurityPolicy._MakeAddAssociationRequestTupleD   sB     	113COO&1-'C 	P 	EF Fr   c                     | j                   j                  d| j                  j                  | j                  j                         |      fS )NRemoveAssociation)namer9   )r/   r4   r2   ;ComputeOrganizationSecurityPoliciesRemoveAssociationRequestr   Name)r   r=   s     r   "_MakeDeleteAssociationRequestTuplez4OrgSecurityPolicy._MakeDeleteAssociationRequestTupleM   sG    LL557JNNHHXX]]_5G I IJ Jr   c                 h    | j                   j                  d| j                  j                  |      fS )NListAssociations)targetResource)r/   r4   r2   :ComputeOrganizationSecurityPoliciesListAssociationsRequest)r   target_resources     r   !_MakeListAssociationsRequestTuplez3OrgSecurityPolicy._MakeListAssociationsRequestTupleS   s7    LL557INNGG. H 01 1r   c                 h    | j                   j                  d| j                  j                  |      fS )NDeleter9   )r/   r4   r2   0ComputeOrganizationSecurityPoliciesDeleteRequestr   sp_ids     r   _MakeDeleteRequestTuplez)OrgSecurityPolicy._MakeDeleteRequestTupleY   s6    LL55xNNKK$ L &' 'r   c                    |r4| j                   j                  d| j                  j                  ||      fS | j                   j                  d| j                  j                  | j                  j                         |      fS )NPatch)r9   securityPolicyResource)r/   r4   r2   /ComputeOrganizationSecurityPoliciesPatchRequestr   rD   )r   rQ   security_policys      r   _MakeUpdateRequestTuplez)OrgSecurityPolicy._MakeUpdateRequestTuple^   s    ll77nnLL!& M PQ Q LL55wNNJJ#xx}}'6 K 89 9r   c                    |r3| j                   j                  d| j                  j                  |      fS | j                   j                  d| j                  j                  | j                  j                               fS )NGetrN   )r/   r4   r2   -ComputeOrganizationSecurityPoliciesGetRequestr   rD   rP   s     r   _MakeDescribeRequestTuplez+OrgSecurityPolicy._MakeDescribeRequestTupleh   sy    ll77nnJJ!& K () ) LL55uNNHH#xx}} I 01 1r   c                 j    | j                   j                  d| j                  j                  ||      fS )NMove)r9   parentId)r/   r4   r2   .ComputeOrganizationSecurityPoliciesMoveRequest)r   rQ   	parent_ids      r   _MakeMoveRequestTuplez'OrgSecurityPolicy._MakeMoveRequestTupleq   s8    LL55vNNII$y J :; ;r   c                 j    | j                   j                  d| j                  j                  ||      fS )N	CopyRules)r9   sourceSecurityPolicy)r/   r4   r2   3ComputeOrganizationSecurityPoliciesCopyRulesRequest)r   
dest_sp_idsource_security_policys      r   _MakeCopyRulesRequestTuplez,OrgSecurityPolicy._MakeCopyRulesRequestTuplev   s;     LL55{NNNN)%; O => >r   c                 h    | j                   j                  d| j                  j                  |      fS )NList)r_   )r/   r4   r2   .ComputeOrganizationSecurityPoliciesListRequest)r   ra   s     r   _MakeListRequestTuplez'OrgSecurityPolicy._MakeListRequestTuple~   s6    LL55vNNII" J $% %r   c                 j    | j                   j                  d| j                  j                  ||      fS )NInsert)r_   r9   )r/   r4   r2   0ComputeOrganizationSecurityPoliciesInsertRequest)r   rW   ra   s      r   _MakeCreateRequestTuplez)OrgSecurityPolicy._MakeCreateRequestTuple   s;    LL55xNNKK"? L DE Er   c                     |r3| j                  |||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |||      d         }| j                  |d      S )z$Sends request to add an association.   z4Add association of the organization Security Policy.message)r?   r   MakeRequestsr5   r7   WaitOperation)r   r<   r=   r>   
batch_modeonly_generate_requestrequestsop_ress           r   r7   z OrgSecurityPolicy.AddAssociation   s     

.
.{<N/KMh ###00::o]])),,[:L-I	KKL	NOF N  P Pr   c                     |r1| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         }| j                  |d      S )z'Sends request to delete an association.rs   z7Delete association of the organization Security Policy.rt   )rE   r   rv   r5   rA   rw   )r   r=   rx   ry   rz   r{   s         r   DeleteAssociationz#OrgSecurityPolicy.DeleteAssociation   s     99:LMNh"##00::o]],,//0BCAFHFI  K Kr   c                     |r1| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         gS )z+Sends request to list all the associations.rs   )rK   r   rv   r5   rG   )r   rJ   rx   ry   rz   s        r   rG   z"OrgSecurityPolicy.ListAssociations   sk     88IJh"##00::o 	&&22?CAF	H r   c                 .   |r2| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         }t        | j                  | j                        }| j                  ||d      S )z*Sends request to delete a security policy.rQ   rs   z(Delete the organization Security Policy.)operation_pollerru   )rR   r   rv   r5   rM   r	   r   rw   )r   rQ   rx   ry   rz   r{   r   s          r   rM   zOrgSecurityPolicy.Delete   s     ..U.;<h"##00::o]]!!$">">U">"KA"NOF#DMM488<):  < <r   c                 l   |s6t        j                  | j                  | j                  | j                        }| j
                  r/d|j                  vr!|j                  j                  dd      |_        | j                  j                  |j                  t              }t        j                  |||      S )N)has_projectr&   	locationszprojects/locations)r*   )r   Pollerr5   r   r    r   selfLinkreplacer   Parser   r   WaitFor)r   r   r   ru   operation_refs        r   rw   zOrgSecurityPolicy.WaitOperation   s    
--t/D/DF
)2D2D D$--55k6JLiOO))'9 * ;M>>*M7CCr   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S )z*Sends request to update a security policy.)rQ   rW   rs   z(Update the organization Security Policy.rt   )rX   r   rv   r5   rT   rw   )r   rQ   ry   rW   rx   rz   r{   s          r   UpdatezOrgSecurityPolicy.Update   s     

&
&? ' <h ###00::o]]  $$ 	% 	::;	=>F B  D Dr   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S )z;Sends request to move the security policy to anther parent.)rQ   ra   rs   z&Move the organization Security Policy.rt   )rb   r   rv   r5   r^   rw   )r   ry   rQ   ra   rx   rz   r{   s          r   r^   zOrgSecurityPolicy.Move   s     ,,5I,NOh"##00::o]]"")"DQGIF@  B Br   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S )zASends request to copy all the rules from another security policy.)rg   rh   rs   z0Copy rules for the organization Security Policy.rt   )ri   r   rv   r5   rd   rw   )r   ry   rg   rh   rx   rz   r{   s          r   rd   zOrgSecurityPolicy.CopyRules  s     

)
)#%; * =h
 ###00::o]]$$''!#9 	( 	;;<	>?F J  L Lr   c                     |r2| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         gS )z,Sends request to describe a security policy.r   rs   )r\   r   rv   r5   rZ   )r   rQ   rx   ry   rz   s        r   DescribezOrgSecurityPolicy.Describe  sg     00u0=>h"##00::oMMd<<5<I!LMNNr   c                     |r1| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         gS )z0Sends request to list all the security policies.rs   )rm   r   rv   r5   rk   )r   ra   rx   ry   rz   s        r   rk   zOrgSecurityPolicy.List'  sa     ,,Y78h"##00::oMMt99)DQGHIIr   c                     |r2| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S )z*Sends request to create a security policy.rs   z(Create the organization Security Policy.rt   )rq   r   rv   r5   ro   rw   )r   rW   ra   rx   ry   rz   r{   s          r   CreatezOrgSecurityPolicy.Create2  s     ..	JKh"##00::o]]!!$$_i@CEFB  D Dr   NNNbetar   NN)NNFFF)NFF)NFNF)FNNFNNFF)r   r   r   __doc__r$   r   propertyr/   r2   r5   r?   rE   rK   rR   rX   r\   rb   ri   rm   rq   r7   r}   rG   rM   rw   r   r^   rd   r   rk   r   r   r   r   r   r   $   s7   7 "	
BX
 0 0 ) ) 5 5FJ1'
91; -18<>%
E "&(,27 %+0P0 ,0#(.3K& (,"'-2"< 	D #(!	D. "'	B$ ','+ 	L0	O	J "#(	Dr   r   c                        e Zd ZdZ	 	 	 	 d f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 xZS )OrgSecurityPolicyRulez+Abstracts Organization SecurityPolicy Rule.c                 4    t         t        |   ||||       y )N)r   r!   r"   r#   )superr   r$   )r   r   r!   r"   r#   	__class__s        r   r$   zOrgSecurityPolicyRule.__init__H  s&    
 

/%	 0 r   c                 j    | j                   j                  d| j                  j                  ||      fS )NAddRule)r9   securityPolicyRule)r/   r4   r2   1ComputeOrganizationSecurityPoliciesAddRuleRequest)r   rW   security_policy_rules      r   _MakeCreateRuleRequestTuplez1OrgSecurityPolicyRule._MakeCreateRuleRequestTupleS  s;     LL55yNNLL.#7 M 9: :r   c                 j    | j                   j                  d| j                  j                  ||      fS )N
RemoveRuler9   priority)r/   r4   r2   4ComputeOrganizationSecurityPoliciesRemoveRuleRequestr   r   rW   s      r   _MakeDeleteRuleRequestTuplez1OrgSecurityPolicyRule._MakeDeleteRuleRequestTuple[  s;    LL55|NNOO. P CD Dr   c                 j    | j                   j                  d| j                  j                  ||      fS )NGetRuler   )r/   r4   r2   1ComputeOrganizationSecurityPoliciesGetRuleRequestr   s      r   _MakeDescribeRuleRequestTuplez3OrgSecurityPolicyRule._MakeDescribeRuleRequestTuple`  s;    LL55yNNLL. M CD Dr   c                 l    | j                   j                  d| j                  j                  |||      fS )N	PatchRule)r   r9   r   )r/   r4   r2   3ComputeOrganizationSecurityPoliciesPatchRuleRequest)r   r   rW   r   s       r   _MakeUpdateRuleRequestTuplez1OrgSecurityPolicyRule._MakeUpdateRuleRequestTuplee  s>     LL55{NNNN!.#7 O 9: :r   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S )z/Sends request to create a security policy rule.)rW   r   rs   z/Add a rule of the organization Security Policy.rt   )r   r   rv   r5   r   rw   )r   rW   r   rx   ry   rz   r{   s          r   r   zOrgSecurityPolicyRule.Createo  s     

*
*-#7 + 9h
 ###00::o]]""((+!5 	) 	778	:;F I  K Kr   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S )z/Sends request to delete a security policy rule.r   rW   rs   z2Delete a rule of the organization Security Policy.rt   )r   r   rv   r5   r   rw   )r   r   r=   rx   ry   rz   r{   s          r   rM   zOrgSecurityPolicyRule.Delete  s     

*
*1C + Eh ###00::o]]%%((/A 	) 	CCD	FGF L  N Nr   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         S )z1Sends request to describe a security policy rule.r   rs   )r   r   rv   r5   r   )r   r   r=   rx   ry   rz   s         r   r   zOrgSecurityPolicyRule.Describe  s     

,
,1C - Eh ###00::o==  **/A 	+ 	CCD	FG Gr   c                     |r4| j                  |||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |||      d         }| j                  |d      S )z/Sends request to update a security policy rule.)r   rW   r   rs   z2Update a rule of the organization Security Policy.rt   )r   r   rv   r5   r   rw   )r   r   rW   r   rx   ry   rz   r{   s           r   r   zOrgSecurityPolicyRule.Update  s     

*
*-#7 + 9h ###00::o]]$$((+!5 	) 	7 89	:;F
 L  N Nr   r   r   )NNNr   )NNNFF)r   r   r   r   r$   r   r   r   r   r   rM   r   r   __classcell__)r   s   @r   r   r   E  s    3 "		 377;:D
D ,0267;: ""&#(	K2  $#(	N. "&%*	G* !"&#(Nr   r   N)r   
__future__r   r   r   )googlecloudsdk.api_lib.compute.operationsr   googlecloudsdk.api_lib.utilr   r   r   r   r	   objectr   r   r   r   r   <module>r      sW    $ &  ' < .; < 6== ^D ^DB	EN- ENr   