
    <                         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 ddlZej(                   G d dej*                               Zddie_        y)z8Command for updating organization firewall policy rules.    )absolute_import)division)unicode_literals)base_classes)firewall_policy_rule_utils)client)base)
exceptions)firewall_policies_utils)flags)secure_tags_utilsNc                   *    e Zd ZdZdZed        Zd Zy)UpdatezvUpdates a Compute Engine firewall policy rule.

  *{command}* is used to update organization firewall policy rules.
  Nc                    | j                         t        j                   j                  k(  xs+ | j                         t        j                   j                  k(  }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$                  |       t	        j&                  |       t	        j(                  ||       t	        j*                  ||       t	        j,                  ||       t	        j.                  ||       t	        j0                  |       t	        j2                  |       t	        j4                  |       t	        j6                  |       t	        j8                  |       t	        j:                  |       t	        j<                  |       t	        j>                  |d       t	        j@                  |d       | j                         t        j                   j                  k(  s+| j                         t        j                   j                  k(  rjt	        jB                  |       t	        jD                  |       t	        jF                  |       t	        jH                  |       t	        jJ                  |       y y )NTupdate)required	operationF)r   updated)r   )&ReleaseTrackr	   ALPHABETAr   FirewallPolicyRuleArgumentFIREWALL_POLICY_ARGAddArgument	AddActionAddFirewallPolicyIdAddSrcIpRangesAddDestIpRangesAddLayer4ConfigsAddDirectionAddEnableLoggingAddDisabledAddTargetResourcesAddTargetServiceAccountsAddSrcSecureTagsAddTargetSecureTagsAddSrcThreatIntelligenceAddDestThreatIntelligenceAddSrcRegionCodesAddDestRegionCodesAddSrcAddressGroupsAddDestAddressGroupsAddSrcFqdnsAddDestFqdnsAddSecurityProfileGroupAddTlsInspectAddDescriptionAddNewPriorityAddOrganizationAddSrcNetworkScopeAddSrcNetworksAddDestNetworkScopeAddSrcNetworkTypeAddDestNetworkType)clsparsersupport_network_scopess      5lib/surface/compute/firewall_policies/rules/update.pyArgszUpdate.Args)   sm    	d//555 	8!2!2!7!77  $>>C ''/	OOFU+	f	:	 	&!	6"	v	6"	f	V$	""6*	6"	f%	""6+AB	##F,BC	F$:;	V%;<	f%	v&	f	v	!!&)		 	84	&51d//555!2!2!7!77v&6"'f%v& 8    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
                  d!"      }t        j                  ||j                  |j
                  t        j                  | j                               j                         #      }t        j                  ||j                  |j
                  t        j                  | j                               j                         #      }g }t        j                  |j                               }g }	g }
g }g }g }g }g }g }g }g }g }g }g }g }g }d }d }d!}d }d }d }d }d }g } d }!|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|j0                  }|j%                  d      r|j2                  }|j%                  d      r*t5        j6                  |j                  |j8                        }|j%                  d      r*t5        j6                  |j                  |j:                        }|j%                  d      r|j<                  }d$}|j%                  d      r|j>                  }d$}|j%                  d      r|j@                  }d$}|j%                  d      r|jB                  }d$}|j%                  d      rE|jD                  D #cg c].  }#tG        jH                  |#|jJ                  ||jL                        0 }}#d$}|j%                  d      rE|jN                  D #cg c].  }#tG        jH                  |#|jJ                  ||jL                        0 }}#d$}|j%                  d	      r|jP                  }d$}|j%                  d      r|jR                  }d$}|j%                  d      r8tG        jT                  |jV                  |jJ                  ||jL                  &      }n1|j%                  d'      r |jX                  d(k7  r|j#                  d       |j%                  d)      r|jZ                  }|j%                  d*      r|j\                  }|j%                  d+      r|j^                  }|j%                  d,      r t        j                  |j`                        }$n|}$| j                         tb        j                  jd                  k(  s,| j                         tb        j                  jf                  k(  r|j%                  d-      r&|j%                  d.      rti        jj                  d/      |j%                  d0      r&|j%                  d1      rti        jj                  d2      |j%                  d-      r||jl                  s5|j                  j.                  jn                  jp                  jr                  }n9|j                  j.                  jn                  jq                  |jl                        }d$}|j%                  d      r|jt                  } d$}|j%                  d0      r||jv                  s5|j                  j.                  jn                  jx                  jr                  }!n9|j                  j.                  jn                  jy                  |jv                        }!d$}|j%                  d.      r||jz                  s5|j                  j.                  jn                  jp                  jr                  }n9|j                  j.                  jn                  jq                  |jz                        }d$}|j%                  d1      r||j|                  s5|j                  j.                  jn                  jx                  jr                  }!n9|j                  j.                  jn                  jy                  |j|                        }!d$}|H||j                  j.                  jn                  jp                  j~                  k7  r|j#                  d       |r| j                         tb        j                  jd                  k(  s+| j                         tb        j                  jf                  k(  r5|j                  j.                  jo                  |	|
||||||||||| |!|3      }n1|j                  j.                  jo                  |	|
||||||||||4      }|j%                  d5      rx|j                  d6k(  r5|j                  j.                  j                  j                  j                  }n4|j                  j.                  j                  j                  j                  }|j                  j.                  j                  |$|jX                  ||||||j                  ||||7      }%tG        j                  ||jL                  |jJ                  8      }&|j                  j                  j                  |      5  |j                  ||&|%9      cd d d        S c c}#w c c}#w # 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_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_resourcestargetResourcestarget_service_accountstargetServiceAccountssrc_secure_tagssrcSecureTagstarget_secure_tagstargetSecureTagsF)with_project)refcompute_client	resourcesversionTlayer4_configs)rK   optional_organizationfirewall_policy_clientfirewall_policy_idactionapply_security_profile_grouptls_inspect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srcAddressGroupsdestAddressGroupssrcFqdns	destFqdnssrcRegionCodesdestRegionCodessrcThreatIntelligencesdestThreatIntelligencessrcNetworkScopesrcNetworksdestNetworkScoperR   )rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rR   	directionINGRESS)priorityr^   matchrv   rN   rT   rP   descriptionenableLoggingrb   rL   
tlsInspect)organization)rx   firewall_policyfirewall_policy_rule)Jr   ComputeApiHolderr   r   ResolveAsResourcerX   r   OrgFirewallPolicysix	text_typelowerOrgFirewallPolicyRule
rule_utilsConvertPriorityToIntNameIsKnownAndSpecifiedGetValueappendIsSpecifiedr@   rA   ParseLayer4ConfigsrZ   messagesrM   rO   r   $TranslateSecureTagsForFirewallPolicyrQ   rS   rH   rI   rB   rC   rF   r   BuildAddressGroupUrlr}   r~   rG   rD   rE   BuildSecurityProfileGroupUrlrK   r^   r`   ra   rb   rc   r	   r   r   r
   ToolExceptionrd   FirewallPolicyRuleMatcherSrcNetworkScopeValueValuesEnumUNSPECIFIEDrJ   rf   DestNetworkScopeValueValuesEnumre   rg   VPC_NETWORKSrv   FirewallPolicyRuleDirectionValueValuesEnumrw   EGRESSrz   GetFirewallPolicyIdapitools_clientIncludeFields
UpdateRule)'selfargs clearable_arg_name_to_field_nameholderrV   org_firewall_policyfirewall_policy_rule_clientcleared_fieldsrx   r@   rA   layer4_config_listrM   rO   rQ   rS   rF   rG   rD   rE   rB   rC   rH   rI   ra   rb   should_setup_matchtraffic_directmatcherrK   r`   rd   rJ   rf   argxrc   r   r]   s'                                          r<   Runz
Update.RunV   s
   (,(.( 	2( 	4	(
 	%( 	'( 	6( 	8( 	"#A( 	#$C( 	+( 	!"8( 	-( 	"#:( 	?(  	0!($$ **4+<+<+>?F

"
"
4
4fU 5 C !22}}""d//1288:	 #)">">}}""d//1288:	# N..sxxz:HMN OIJ !NHNG!KL/		!	!#	&t}}S/A>sCD 0 (((m()**n()%88


v}}55 *+..12 $ < <)*)NN
----o ,-

@
@mmT44 
 12 $ < <23!%!>!>*+..+,00,-
 **	 +a "
6
6""$79M9M +	    -.
 ++	 ,a "
6
6""$79M9M ,	    $..i%??j01
!
>
>%)%@%@$($5$5%8!%!5!5	  	"KK9923&$$k()**n
#h'44T5F5FGll 	t00666$"3"3"8"88			-	.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 



!2!2!8!8
8 D$5$5$:$::--((BB%',/1 +-#:$<-$/) C 
$ --((BB%',/1 +-#:$<) C 
 $	9	$MM""55NNVV 	
 MM""55NNUU 	 "==11DD{{ (+5$$$3 E  1DD#&& 
	&	&	4	4^	D(33,3 4  
E	D}l 
E	Ds   3k23k*kk)__name__
__module____qualname____doc__r   classmethodr=   r    r>   r<   r   r       s(    
 *' *'Xlr>   r   EXAMPLESa!      To update a rule with priority ``10" in an organization firewall policy
    with ID ``123456789" to change the action to ``allow" and description to
    ``new-example-rule", run:

      $ {command} 10 --firewall-policy=123456789 --action=allow
      --description=new-example-rule
    )r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r   0googlecloudsdk.api_lib.compute.firewall_policiesr   googlecloudsdk.callioper	   r
   4googlecloudsdk.command_lib.compute.firewall_policiesr   r   <googlecloudsdk.command_lib.compute.network_firewall_policiesr   r   UniverseCompatibleUpdateCommandr   detailed_helpr   r>   r<   <module>r      sm    ? &  ' 7 S C ( . X F Z 
 aT a aJ  	 r>   