
    8                        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dl	m
Z
 ddl	mZ dd	lmZ dd
lmZ ddlmZ ddlmZ ej$                   ej&                  ej(                  j*                         G d dej,                                      Z ej&                  ej(                  j0                         G d de             Z ej&                  ej(                  j4                         G d de             Zddie_        y)z3Command for updating network firewall policy rules.    )absolute_import)division)unicode_literals)base_classes)firewall_policy_rule_utils)client)region_client)base)
exceptions)flags)secure_tags_utilsc                   2    e Zd ZdZdZdZdZed        Zd Z	y)UpdateyUpdates a Compute Engine network firewall policy rule.

  *{command}* is used to update network firewall policy rules.
  NFc                    t        j                  dd      | _        | j                  j                  |       t        j                  |d       t        j
                  |d       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |d       t        j                  |d| j                          t        j"                  |       t        j$                  |       t        j&                  |       t        j(                  |       t        j*                  |       t        j,                  || j                   	       t        j.                  || j                   	       t        j0                  || j                   	       t        j2                  || j                   	       t        j4                  |       t        j6                  |       | j                   rit        j8                  |       t        j:                  |       t        j<                  |       t        j>                  |       t        j@                  |       | jB                  r+t        jD                  |       t        jF                  |       y y )
NTupdate)required	operationF)r   updated)r   )r   support_network_scopes)r   )$r   !NetworkFirewallPolicyRuleArgumentNETWORK_FIREWALL_POLICY_ARGAddArgument	AddActionAddRulePriorityAddSrcIpRangesAddDestIpRangesAddLayer4ConfigsAddDirectionAddEnableLoggingAddDisabledAddTargetServiceAccountsAddDescriptionAddNewPriorityAddSrcSecureTagsr   AddTargetSecureTagsAddDestAddressGroupsAddSrcAddressGroupsAddSrcFqdnsAddDestFqdnsAddSrcRegionCodesAddDestRegionCodesAddSrcThreatIntelligenceAddDestThreatIntelligenceAddSecurityProfileGroupAddTlsInspectAddSrcNetworkScopeAddSrcNetworksAddDestNetworkScopeAddSrcNetworkTypeAddDestNetworkTypesupport_target_typeAddTargetTypeAddTargetForwardingRules)clsparsers     =lib/surface/compute/network_firewall_policies/rules/update.pyArgszUpdate.Args+   s4   &+&M&M'C# ##//7	OOFU+	&I6	 	&!	6"	v	6"	f	""6*	 	84	"99
 
f%	v&	f%	f	v	s'A'A 
s'A'A 
""s'A'A 
##s'A'A 
!!&)	
!!v&6"'f%v&
&!$$V,     c                 "   i ddddddddd	d
dddddddddddddddddddddd }t        j                  | j                               }| j                  j	                  ||j
                        }t        j                  ||j                  !      }t        |d"      r!t        j                  ||j                  #      }t        j                  |j                        }g }g }g }	g }
d }d }d }d }d$}d }g }g }d }g }d }d }g }g }|D ]:  }|j                  |      s|j                  |      r'|j!                  ||          < |j#                  d      r|j$                  }d%}|j#                  d      r|j&                  }d%}|j#                  d&      r6d%}t        j(                  |j*                  |j                  j,                        }	|j#                  d      r|j.                  }
|j#                  d'      r|j0                  }|j#                  d(      r|j2                  }|j#                  d)      r t        j                  |j4                        }n|}|j#                  d      r,t7        j8                  |j                  |j:                        }d%}|j#                  d      r*t7        j8                  |j                  |j<                        }| j>                  r|j#                  d*      r&|j#                  d+      rtA        jB                  d,      |j#                  d-      r&|j#                  d.      rtA        jB                  d/      |j#                  d*      r||jD                  s5|j                  j,                  jF                  jH                  jJ                  }n9|j                  j,                  jF                  jI                  |jD                        }d%}|j#                  d      r|jL                  }d%}|j#                  d-      r||jN                  s5|j                  j,                  jF                  jP                  jJ                  }n9|j                  j,                  jF                  jQ                  |jN                        }d%}|j#                  d+      r||jR                  s5|j                  j,                  jF                  jH                  jJ                  }n9|j                  j,                  jF                  jI                  |jR                        }d%}|j#                  d.      r||jT                  s5|j                  j,                  jF                  jP                  jJ                  }n9|j                  j,                  jF                  jQ                  |jT                        }d%}|H||j                  j,                  jF                  jH                  jV                  k7  r|j!                  d       | j>                  r-|j                  j,                  jG                  |||	||||0      }n)|j                  j,                  jG                  |||	|1      }|j#                  d      r|jX                  |_-        d%}|j#                  d      r|j\                  |_/        d%}|j#                  d	      r|j`                  |_1        d%}|j#                  d      r|jd                  |_3        d%}|j#                  d      r|jh                  |_5        d%}|j#                  d      r|jl                  |_7        d%}|j#                  d      r|jp                  |_9        d%}|j#                  d      r|jt                  |_;        d%}|j#                  d      r|jx                  }n1|j#                  d2      r |jz                  d3k7  r|j!                  d       |j#                  d4      r|j|                  }|sd }|j#                  d5      rx|j~                  d6k(  r5|j                  j,                  j                  j                  j                  }n4|j                  j,                  j                  j                  j                  }| j                  rg|j#                  d7      r9|j                  j,                  j                  j                  |j                        }|j#                  d      r|j                  }|j                  j,                  j                  ||jz                  |||
|j                  |||||8      }| j                  r||_I        ||_J        |j                  j                  j                  |      5  |j                  ||j                  |d$9      cd d d        S # 1 sw Y   y xY w):Nsrc_ip_rangeszmatch.srcIpRangesdest_ip_rangeszmatch.destIpRangessrc_region_codeszmatch.srcRegionCodesdest_region_codeszmatch.destRegionCodes	src_fqdnszmatch.srcFqdns
dest_fqdnszmatch.destFqdnssrc_secure_tagszmatch.srcSecureTagssrc_address_groupszmatch.srcAddressGroupsdest_address_groupszmatch.destAddressGroupssrc_threat_intelligencezmatch.srcThreatIntelligencesdest_threat_intelligencezmatch.destThreatIntelligencessrc_networkszmatch.srcNetworkssecurity_profile_groupsecurityProfileGrouptarget_secure_tagstargetSecureTagstarget_service_accountstargetServiceAccountstarget_forwarding_rulestargetForwardingRules)refcompute_clientregion)rT   FTlayer4_configsenable_loggingdisablednew_prioritysrc_network_scopesrc_network_typezGAt most one of src_network_scope and src_network_type can be specified.dest_network_scopedest_network_typezIAt most one of dest_network_scope and dest_network_type can be specified.)srcIpRangesdestIpRangeslayer4ConfigssrcSecureTagssrcNetworkScopesrcNetworksdestNetworkScope)r^   r_   r`   ra   actionapply_security_profile_grouptls_inspect	directionINGRESStarget_type)priorityre   matchrh   rP   descriptionenableLoggingrX   rN   rL   
tlsInspect)rk   firewall_policyfirewall_policy_ruleonly_generate_request)Or   ComputeApiHolderReleaseTrackr   ResolveAsResource	resourcesr   NetworkFirewallPolicyRulehasattrr	   RegionNetworkFirewallPolicyRule
rule_utilsConvertPriorityToIntrk   IsKnownAndSpecifiedGetValueappendIsSpecifiedr?   r@   ParseLayer4ConfigsrV   messagesrO   rW   rX   rY   r   $TranslateSecureTagsForFirewallPolicyrE   rM   r   r   ToolExceptionrZ   FirewallPolicyRuleMatcherSrcNetworkScopeValueValuesEnumUNSPECIFIEDrJ   r\   DestNetworkScopeValueValuesEnumr[   r]   VPC_NETWORKSrF   srcAddressGroupsrG   destAddressGroupsrC   srcFqdnsrD   	destFqdnsrA   srcRegionCodesrB   destRegionCodesrH   srcThreatIntelligencesrI   destThreatIntelligencesrK   re   rg   rh   FirewallPolicyRuleDirectionValueValuesEnumri   EGRESSr6   TargetTypeValueValuesEnumrj   rQ   rm   
targetTyperR   apitools_clientIncludeFields
UpdateRulerp   )selfargs clearable_arg_name_to_field_nameholderrS   #network_firewall_policy_rule_clientrk   r?   r@   layer4_config_listrO   rK   rg   rW   rX   should_setup_matchtraffic_directrE   rM   rZ   rJ   r\   rj   rQ   cleared_fieldsargrY   matcherrq   s                                r;   Runz
Update.Run^   sc	   (,(.( 	2( 	4	(
 	%( 	'( 	0( 	6( 	8( 	"#A( 	#$C( 	+( 	!"8( 	0( 	"#:(  	"#:!($$ **4+<+<+>?F

*
*
<
<fC +1*J*J+' sH

7
7&-- * ..t}}=HMN !KNHNOLK N/		!	!#	&t}}S/A>sCD 0 (((m()**n()%88


v}}55 12 $ < <()**n
#h'44T5F5FGll)*)NN
----o  ,-

@
@mmT44 
 ""			-	.43C3C
4 &&
 	
 
		.	/D4D4D
5 &&
 	
 
		-	.%%mm$$>>]]ii  %mm44NNmm$$
 "			.	)((!			.	/&&mm$$>>^^jj   &}}55OOoo%% 
 "			,	- $$mm$$>>]]ii  %mm44NNmm##
 "			-	. %%mm$$>>^^jj   &}}55OOoo$$ 
 " 
']]##==\\iij 	12""&&@@#%*'+"- A g &&@@#%*'	 A g ,-!%!8!8g-."&":":g$g%//g*+#44g+, $ 6 6g12'+'C'Cg$23(,(E(Eg%01#::"KK9923&$$kg$	9	$MM""55NNVV 	
 MM""55NNUU 	 			-	(MM""55OO   	
 
		3	4"&">">!==11DD{{ 5$$$+3 E  (3%3J0		&	&	4	4^	D0;;..3 %	 <  
E	D	Ds   ff)
__name__
__module____qualname____doc__r   r   r6   classmethodr<   r    r=   r;   r   r      s4    
 !% 0- 0-d~r=   r   c                       e Zd ZdZdZdZy)
UpdateBetar   TFNr   r   r   r   r   r6   r   r=   r;   r   r   _  s    
  r=   r   c                       e Zd ZdZdZdZy)UpdateAlphar   TNr   r   r=   r;   r   r   j  s    
  r=   r   EXAMPLESa$      To update a rule with priority ``10'' in a global network firewall policy
    with name ``my-policy'' to change the action to ``allow'' and description to
    ``new example rule'', run:

      $ {command} 10 --firewall-policy=my-policy --action=allow --description="new example rule"
    N)r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   rz   8googlecloudsdk.api_lib.compute.network_firewall_policiesr   r	   googlecloudsdk.callioper
   r   <googlecloudsdk.command_lib.compute.network_firewall_policiesr   r   UniverseCompatibleReleaseTracksrt   GAUpdateCommandr   BETAr   ALPHAr   detailed_helpr   r=   r;   <module>r      s    : &  ' 7 S K R ( . N Z D%%((){T { * {|	 D%%**+  , D%%++,&  -   r=   