
    q\                         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 G d de      Zy)zOrganization Firewall Policy.    )absolute_import)division)unicode_literals)poller)waiterz$compute.globalOrganizationOperationszcompute.firewallPoliciesc                       e Zd Zd Zy)DeletePollerc                      y N )self	operations     >lib/googlecloudsdk/api_lib/compute/firewall_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 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#dZ y)'OrgFirewallPolicyz3Abstracts an organization firewall policy resource.Nc                     || _         || _        || _        |dk(  rdn|| _        | j	                  t
              | _        | j	                  t              | _        y )Ngav1)	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OrgFirewallPolicy.__init__'   sQ     DH)DDO#tOD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OrgFirewallPolicy._HasProject1   sG    oo77DMMO 	o*** 	2111r   c                 .    | j                   j                  S r   )r   apitools_clientr   s    r   _clientzOrgFirewallPolicy._client:   s    ///r   c                 .    | j                   j                  S r   )r   messagesr0   s    r   	_messageszOrgFirewallPolicy._messages>   s    (((r   c                 .    | j                   j                  S r   )r1   firewallPoliciesr0   s    r   _servicezOrgFirewallPolicy._serviceB   s    <<(((r   c                 l    | j                   j                  d| j                  j                  |||      fS )NAddAssociation)firewallPolicyAssociationfirewallPolicyreplaceExistingAssociation)r1   r6   r4   ,ComputeFirewallPoliciesAddAssociationRequest)r   associationfirewall_policy_idreplace_existing_associations       r   _MakeAddAssociationRequestTuplez1OrgFirewallPolicy._MakeAddAssociationRequestTupleF   s?     	%%CC&1-'C 	D 	
 r   c                     | j                   j                  d| j                  j                  | j                  j                         |      fS )NRemoveAssociation)namer;   )r1   r6   r4   /ComputeFirewallPoliciesRemoveAssociationRequestr   Name)r   r?   s     r   "_MakeDeleteAssociationRequestTuplez4OrgFirewallPolicy._MakeDeleteAssociationRequestTupleS   sD    %%FF1C 	G 	
 r   c                 h    | j                   j                  d| j                  j                  |      fS )NListAssociations)targetResource)r1   r6   r4   .ComputeFirewallPoliciesListAssociationsRequest)r   target_resources     r   !_MakeListAssociationsRequestTuplez3OrgFirewallPolicy._MakeListAssociationsRequestTuple\   s7    %%EE* 	F 	
 r   c                 h    | j                   j                  d| j                  j                  |      fS )NDeleter;   )r1   r6   r4   $ComputeFirewallPoliciesDeleteRequestr   fp_ids     r   _MakeDeleteRequestTuplez)OrgFirewallPolicy._MakeDeleteRequestTuplee   s6    %%;;  	< 	
 r   c                    |r4| j                   j                  d| j                  j                  ||      fS | j                   j                  d| j                  j                  | j                  j                         |      fS )NPatch)r;   firewallPolicyResource)r1   r6   r4   #ComputeFirewallPoliciesPatchRequestr   rF   )r   rS   firewall_policys      r   _MakeUpdateRequestTuplez)OrgFirewallPolicy._MakeUpdateRequestTuplen   s~    
,,
'
'

..
<
<"? =   	%%::88==?#2 	; 	
 r   c                    |r3| j                   j                  d| j                  j                  |      fS | j                   j                  d| j                  j                  | j                  j                               fS )NGetrP   )r1   r6   r4   !ComputeFirewallPoliciesGetRequestr   rF   rR   s     r   _MakeDescribeRequestTuplez+OrgFirewallPolicy._MakeDescribeRequestTuple   sy    
,,
'
'

..
:
:" ;   	%%8888==? 	9 	
 r   c                 j    | j                   j                  d| j                  j                  ||      fS )NMove)r;   parentId)r1   r6   r4   "ComputeFirewallPoliciesMoveRequest)r   rS   	parent_ids      r   _MakeMoveRequestTuplez'OrgFirewallPolicy._MakeMoveRequestTuple   s8    %%99 9 	: 	
 r   c                 j    | j                   j                  d| j                  j                  ||      fS )N
CloneRules)r;   sourceFirewallPolicy)r1   r6   r4   (ComputeFirewallPoliciesCloneRulesRequest)r   
dest_fp_idsource_firewall_policys      r   _MakeCloneRulesRequestTuplez-OrgFirewallPolicy._MakeCloneRulesRequestTuple   s<     	%%??%!7 	@ 	
 r   c                 h    | j                   j                  d| j                  j                  |      fS )NList)ra   )r1   r6   r4   "ComputeFirewallPoliciesListRequest)r   rc   s     r   _MakeListRequestTuplez'OrgFirewallPolicy._MakeListRequestTuple   s1    %%9999M r   c                 j    | j                   j                  d| j                  j                  ||      fS )NInsert)ra   r;   )r1   r6   r4   $ComputeFirewallPoliciesInsertRequest)r   rY   rc   s      r   _MakeCreateRequestTuplez)OrgFirewallPolicy._MakeCreateRequestTuple   s8    %%;; 	< 	
 r   c                 h    | j                   j                  d| j                  j                  |      fS )NForceStartProgressiveRolloutrP   )r1   r6   r4   :ComputeFirewallPoliciesForceStartProgressiveRolloutRequest)r   rY   s     r   -_MakeForceStartProgressiveRolloutRequestTuplez?OrgFirewallPolicy._MakeForceStartProgressiveRolloutRequestTuple   s7    %%&QQ* 	R 	
 r   c                     |r3| j                  |||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |||      d         }| j                  |d      S )z$Sends request to add an association.   z;Adding an association for the organization firewall policy.message)rA   r   MakeRequestsr7   r9   WaitOperation)r   r>   r?   r@   
batch_modeonly_generate_requestrequestsop_ress           r   r9   z OrgFirewallPolicy.AddAssociation   s     

.
.-/Kh
 ###00::o]])),,+-I	

	F
 M   r   c                     |r1| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         }| j                  |d      S )z'Sends request to delete an association.ry   z>Deleting the association for the organization firewall policy.rz   )rG   r   r|   r7   rC   r}   )r   r?   r~   r   r   r   s         r   DeleteAssociationz#OrgFirewallPolicy.DeleteAssociation   s     99:LMNh"##00::o]],,//0BCAFF L   r   c                     |r1| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         gS )z+Sends request to list all the associations.ry   )rM   r   r|   r7   rI   )r   rL   r~   r   r   s        r   rI   z"OrgFirewallPolicy.ListAssociations   sj    
 88IJh"##00::o 	&&22?CAF	
 r   c                 .   |r2| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         }t        | j                  | j                        }| j                  ||d      S )z8Sends request to delete an organization firewall policy.rS   ry   z*Deleting the organization firewall policy.)operation_pollerr{   )rT   r   r|   r7   rO   r	   r   r}   )r   rS   r~   r   r   r   r   s          r   rO   zOrgFirewallPolicy.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 )zWaits for operation to finish.)has_projectr(   	locationszprojects/locations)r,   )r   Pollerr7   r   r"   r    selfLinkreplacer   Parser   r   WaitFor)r   r   r   r{   operation_refs        r   r}   zOrgFirewallPolicy.WaitOperation  s     
--t/D/D 
)2D2D D$--55
+i OO))'9 * M >>*M7CCr   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S )z8Sends request to update an organization firewall policy.)rS   rY   ry   z*Updating the organization firewall policy.rz   )rZ   r   r|   r7   rV   r}   )r   rS   r   rY   r~   r   r   s          r   UpdatezOrgFirewallPolicy.Update)  s     

&
&? ' h
 ###00::o]]  $$ 	% 	

	F
 D   r   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S )z;Sends request to move the firewall policy to anther parent.)rS   rc   ry   z(Moving the organization firewall policy.rz   )rd   r   r|   r7   r`   r}   )r   r   rS   rc   r~   r   r   s          r   r`   zOrgFirewallPolicy.MoveE  s     ,,5I,NOh"##00::o]]"")"DQGF B   r   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S )zBSends request to clone all the rules from another firewall policy.)ri   rj   ry   z2Cloning rules to the organization firewall policy.rz   )rk   r   r|   r7   rf   r}   )r   r   ri   rj   r~   r   r   s          r   rf   zOrgFirewallPolicy.CloneRulesZ  s     

*
*#%; + h ###00::o]]%%((!:P 	) 	

	F
 L   r   c                     |r2| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         gS )z,Sends request to describe a firewall policy.r   ry   )r^   r   r|   r7   r\   )r   rS   r~   r   r   s        r   DescribezOrgFirewallPolicy.Describew  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 firewall policies.ry   )ro   r   r|   r7   rm   )r   rc   r~   r   r   s        r   rm   zOrgFirewallPolicy.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 firewall policy.ry   z*Creating the organization firewall policy.rz   )rs   r   r|   r7   rq   r}   )r   rY   rc   r~   r   r   r   s          r   CreatezOrgFirewallPolicy.Create  s     ..	JKh"##00::o]]!!$$_i@CF D   r   c                     |r1| j                  |      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |      d         }| j                  |d      S )z4Sends request to start rollout of a firewall policy.ry   z5Starting rollout of the organization firewall policy.rz   )rw   r   r|   r7   ru   r}   )r   rY   r~   r   r   r   s         r   ru   z.OrgFirewallPolicy.ForceStartProgressiveRollout  s     

<
<_
Mh ###00::o]]77::?KANF O   r   )NNNr   r   NN)NNFFF)NFF)NFNF)FNNFNNFF)!r   r   r   __doc__r&   r   propertyr1   r4   r7   rA   rG   rM   rT   rZ   r^   rd   rk   ro   rs   rw   r9   r   rI   rO   r}   r   r`   rf   r   rm   r   ru   r   r   r   r   r   $   sC   ; DHB 0 0 ) ) ) )$" 59
 #(!@ !	2 KP$ AF&D$ !< ". "!< AFO	J !0 !	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 )OrgFirewallPolicyRulez+Abstracts Organization FirewallPolicy Rule.c                 4    t         t        |   ||||       y N)r   r#   r$   r%   )superr   r&   r   r   r#   r$   r%   	__class__s        r   r&   zOrgFirewallPolicyRule.__init__  s&     

/%	 0 r   c                 j    | j                   j                  d| j                  j                  ||      fS )NAddRuler;   firewallPolicyRule)r1   r6   r4   %ComputeFirewallPoliciesAddRuleRequestr   rY   firewall_policy_rules      r   _MakeCreateRuleRequestTuplez1OrgFirewallPolicyRule._MakeCreateRuleRequestTuple  s;     	%%<<*3 	= 	
 r   c                 j    | j                   j                  d| j                  j                  ||      fS )N
RemoveRuler;   priority)r1   r6   r4   (ComputeFirewallPoliciesRemoveRuleRequestr   r   rY   s      r   _MakeDeleteRuleRequestTuplez1OrgFirewallPolicyRule._MakeDeleteRuleRequestTuple  s9    %%??*X 	@ 	
 r   c                 j    | j                   j                  d| j                  j                  ||      fS )NGetRuler   )r1   r6   r4   %ComputeFirewallPoliciesGetRuleRequestr   s      r   _MakeDescribeRuleRequestTuplez3OrgFirewallPolicyRule._MakeDescribeRuleRequestTuple  s8    %%<<*X 	= 	
 r   c                 l    | j                   j                  d| j                  j                  |||      fS )N	PatchRuler   r;   r   )r1   r6   r4   'ComputeFirewallPoliciesPatchRuleRequestr   r   rY   r   s       r   _MakeUpdateRuleRequestTuplez1OrgFirewallPolicyRule._MakeUpdateRuleRequestTuple  s>     	%%>>*3 	? 	
 r   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S z=Sends request to create an organization firewall policy rule.)rY   r   ry   z2Adding a rule to the organization firewall policy.rz   )r   r   r|   r7   r   r}   r   rY   r   r~   r   r   r   s          r   
CreateRulez OrgFirewallPolicyRule.CreateRule  s     

*
*-#7 + h ###00::o]]""((+!5 	) 	
 	F L   r   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S z=Sends request to delete an organization firewall policy rule.r   rY   ry   z6Deleting a rule from the organization firewall policy.rz   )r   r   r|   r7   r   r}   r   r   r?   r~   r   r   r   s          r   
DeleteRulez OrgFirewallPolicyRule.DeleteRule  s     

*
*1C + h
 ###00::o]]%%((/A 	) 	

	F
 P   r   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         S z1Sends request to describe a firewall policy rule.r   ry   )r   r   r|   r7   r   r   r   r?   r~   r   r   s         r   DescribeRulez"OrgFirewallPolicyRule.DescribeRule/  s     

,
,1C - h
 ###00::o==  **/A 	+ 	

	 r   c                     |r4| j                  |||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |||      d         }| j                  |d      S z=Sends request to update an organization firewall policy rule.)r   rY   r   ry   z4Updating a rule in the organization firewall policy.rz   )r   r   r|   r7   r   r}   r   r   rY   r   r~   r   r   r   s           r   
UpdateRulez OrgFirewallPolicyRule.UpdateRuleH  s     

*
*-#7 + h ###00::o]]$$((+!5 	) 	
 		F N   r   )NNNbetar   NNNr   NNNFFr   r   r   r   r&   r   r   r   r   r   r   r   r   __classcell__r   s   @r   r   r     s    3 DJ 8<
 GK !@ !< !6 !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 )$OrgFirewallPolicyPacketMirroringRulez<Abstracts Organization FirewallPolicy Packet Mirroring Rule.c                 4    t         t        |   ||||       y r   )r   r   r&   r   s        r   r&   z-OrgFirewallPolicyPacketMirroringRule.__init__m  s&     

.>%	 ? r   c                 j    | j                   j                  d| j                  j                  ||      fS )NAddPacketMirroringRuler   )r1   r6   r4   4ComputeFirewallPoliciesAddPacketMirroringRuleRequestr   s      r   r   z@OrgFirewallPolicyPacketMirroringRule._MakeCreateRuleRequestTuplew  s<     	%% KK*3 	L 	
 r   c                 j    | j                   j                  d| j                  j                  ||      fS )NRemovePacketMirroringRuler   )r1   r6   r4   7ComputeFirewallPoliciesRemovePacketMirroringRuleRequestr   s      r   r   z@OrgFirewallPolicyPacketMirroringRule._MakeDeleteRuleRequestTuple  s9    %%#NN*X 	O 	
 r   c                 j    | j                   j                  d| j                  j                  ||      fS )NGetPacketMirroringRuler   )r1   r6   r4   4ComputeFirewallPoliciesGetPacketMirroringRuleRequestr   s      r   r   zBOrgFirewallPolicyPacketMirroringRule._MakeDescribeRuleRequestTuple  s9    %% KK*X 	L 	
 r   c                 l    | j                   j                  d| j                  j                  |||      fS )NPatchPacketMirroringRuler   )r1   r6   r4   6ComputeFirewallPoliciesPatchPacketMirroringRuleRequestr   s       r   r   z@OrgFirewallPolicyPacketMirroringRule._MakeUpdateRuleRequestTuple  s?     	%%"MM*3 	N 	
 r   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S r   )r   r   r|   r7   r   r}   r   s          r   r   z/OrgFirewallPolicyPacketMirroringRule.CreateRule  s     

*
*-#7 + h ###00::o]]11((+!5 	) 	
 	F L   r   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         }| j                  |d      S r   )r   r   r|   r7   r   r}   r   s          r   r   z/OrgFirewallPolicyPacketMirroringRule.DeleteRule  s     

*
*1C + h
 ###00::o]]44((/A 	) 	

	F
 P   r   c                     |r3| j                  ||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  ||      d         S r   )r   r   r|   r7   r   r   s         r   r   z1OrgFirewallPolicyPacketMirroringRule.DescribeRule  s     

,
,1C - h
 ###00::o==//**/A 	+ 	

	 r   c                     |r4| j                  |||      g}|s| j                  j                  |      S |S | j                  j	                  | j                  |||      d         }| j                  |d      S r   )r   r   r|   r7   r   r}   r   s           r   r   z/OrgFirewallPolicyPacketMirroringRule.UpdateRule  s     

*
*-#7 + h ###00::o]]33((+!5 	) 	
 		F N   r   )NNNalphar   r   r   r   r   r   s   @r   r   r   j  s    D DK 8<
 GK !@ !< !6 !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   r   <module>r      sc    $ &  ' < .; 0 6== V Vrj- jZj+< jr   