
    0                     6   d Z ddlmZ ddlmZ ddlmZ ddl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mZ ddlZej8                   ej:                  ej<                  j>                         G d dej@                                      Z! ej:                  ej<                  jD                         G d de!             Z# ej:                  ej<                  jH                         G d de#             Z%y)z2Command for update to instance network interfaces.    )absolute_import)division)unicode_literalsN)alias_ip_range_utils)base_classes)	constants)utils)poller)waiter)base)
exceptions)flagsc                   2    e Zd ZdZdZdZdZed        Zd Z	y)UpdateV  Update a Compute Engine virtual machine network interface.

  *{command}* updates network interfaces of a Compute Engine
  virtual machine. For example:

    $ {command} example-instance --zone us-central1-a --aliases r1:172.16.0.1/32

  sets 172.16.0.1/32 from range r1 of the default interface's subnetwork
  as the interface's alias IP.
  FNc                 *   t         j                  j                  |       t        j                  |       t        j
                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       t        j                  |       | j                  r*t        j                   |       t        j"                  |       | j$                  rt        j&                  |       t)        j*                  d      | _        | j,                  j                  |       y )Nzinstance network interface)resource)instances_flagsINSTANCE_ARGAddArgumentnetwork_interfaces_flagsAddNetworkInterfaceArgForUpdateAddNetworkArgAddSubnetworkArgAddPrivateNetworkIpArgAddAliasesArgAddStackTypeArgAddIpv6NetworkTierArgAddExternalIpv6AddressArgAddExternalIpv6PrefixLengthArgAddInternalIpv6AddressArgAddInternalIpv6PrefixLengthArgsupport_ipv6_assignmentAddIpv6AddressArgAddIpv6PrefixLengthArgsupport_igmp_queryAddIgmpQueryArgsecurity_policy_flags/SecurityPolicyRegionalArgumentForTargetResourceSECURITY_POLICY_ARG)clsparsers     :lib/surface/compute/instances/network_interfaces/update.pyArgszUpdate.Args;   s     ,,V4<<VD**62--f533F;**62,,V4226:66v>;;FC66v>;;FC
""00855f=
..v6 	MM1	
 
 ''/    c                    t        j                  | j                               }|j                  j                  }|j                  j
                  }|j                  }t        j                  j                  ||j                  t        j                  |j                              }|j                  j                   |j                  d%i |j                               }|j                   D ])  }|j"                  |j$                  k(  s|j&                  }	 nb t)        j*                  ddj-                  |j$                  dj/                  |j                   D cg c]  }|j"                   c}                  t1        |dd       5t1        |dd       r5| j2                  j                  ||j                        j5                         }
nd }
|j7                  |j$                  g|
      }|j9                  |j:                  |j<                  |j>                  |      }|j                  jA                  |      }|j                  jC                  |jD                  d	      }tG        jH                  |j                        }tK        jL                  ||d
j-                  |j$                  |jO                                     S d }t1        |dd       8|jC                  |jP                  d|j:                  id	      j5                         }d }tS        jT                  |j>                        }t1        |dd       9|jC                  |jV                  |j:                  |dd	      j5                         }t1        |dd       }t1        |dd       }t1        |dd       }t1        |dd       }t1        |dd       }t1        |dd       }t1        |dd       }t1        |dd       }||jX                  j[                  |      }t1        |dd       }g }||j]                  t^        j`                  |j\                  jb                  jd                        }|j\                  jg                  |      |_4        |s|r|}|s|r|}|rA	 tk        jl                  to        jp                  |             ||_9        |r||_<        nd|_<        |g}|ri	 dto        jp                  |      v r)tk        jz                  to        jp                  |             n(tk        jl                  to        jp                  |             |jY                  t}        j~                  |d|j                        ||t1        |dd       |||	||	      }ns|1|jX                  j                  |      } |jY                  ||| |	       }n@|jY                  t}        j~                  |d|j                        ||t1        |dd       |	!      }|j                  |j:                  |j<                  |j>                  |j$                  |"      }g }!|j                  s|!j                  d#       |j                  |!      5  |j                  j                  |      }d d d        |j                  jC                  jD                  d	      }tG        jH                  |j                        }tK        jL                  ||d$j-                  |j$                  |jO                                     S c c}w # tt        $ r. t        jv                  |||      j5                         |_9        Y w xY w# tt        $ r) t        jv                  |||      j5                         }Y ?w xY w# 1 sw Y   xY w)&N)scope_listerznetwork-interfacezMInstance does not have a network interface [{}], present interfaces are [{}].z, security_policy)networkInterfacessecurityPolicy)projectinstancezone!instancesSetSecurityPolicyRequestzcompute.zoneOperations)
collectionzESetting security policy for network interface [{0}] of instance [{1}]networkr5   zcompute.networks
subnetwork)r5   regionzcompute.subnetworks
igmp_query
stack_typeipv6_addressipv6_prefix_lengthexternal_ipv6_addressexternal_ipv6_prefix_lengthinternal_ipv6_addressinternal_ipv6_prefix_lengthipv6_network_tier)nametype`   /Tprivate_network_ip)	aliasIpRangesr:   r;   	networkIP	stackTypeipv6AccessConfigsfingerprintipv6AddressinternalIpv6PrefixLength)r:   r;   	igmpQueryrO   )rK   r:   r;   rL   rO   )r5   r6   r7   networkInterfacenetworkInterfaceResourcerK   z2Updating network interface [{0}] of instance [{1}] )Gr   ComputeApiHolderReleaseTrackclientapitools_clientmessages	resourcesr   r   ResolveAsResourcer   GetDefaultScopeLister	instancesGetComputeInstancesGetRequestAsDictr3   rF   network_interfacerO   r   UnknownArgumentExceptionformatjoingetattrr*   SelfLink!InstancesSetSecurityPolicyRequest(ComputeInstancesSetSecurityPolicyRequestr5   r6   r7   SetSecurityPolicyParseselfLinkr
   Pollerr   WaitForNamer:   	api_utilsZoneNameToRegionNamer;   NetworkInterfaceStackTypeValueValuesEnumAccessConfigr   DEFAULT_IPV6_ACCESS_CONFIG_NAMETypeValueValuesEnumDIRECT_IPV6NetworkTierValueValuesEnumnetworkTier	ipaddress
ip_addresssix	text_typeexternalIpv6
ValueErrorGetAddressRefexternalIpv6PrefixLength
ip_networkr   $CreateAliasIpRangeMessagesFromStringaliasesIgmpQueryValueValuesEnum-ComputeInstancesUpdateNetworkInterfaceRequestrK   appendIncludeFieldsUpdateNetworkInterface)"selfargsholderrX   rZ   r[   instance_refr6   irO   security_policy_refrequest_bodyrequest	operationoperation_refoperation_pollernetwork_urisubnetwork_urir<   r=   r>   r?   r@   rA   rB   rC   rD   stack_type_enumrE   ipv6_access_configsipv6_access_configpatch_network_interfaceigmp_query_enumcleared_fieldss"                                     r-   Runz
Update.RunX   sC   **4+<+<+>?F]]**F}}%%H  I"//AA00? B L ##+++Dl.A.A.CDH ''	
4))	)mm (
 //
))/$$ii)C)CD)CA)CDE*  t&-9	($	/"66HH&""$$,HJ 	 #??!334, @ l AA&&((  ,8	 B g ""44W=i&&,,


)A - m  v'7'78^^

6$00,2C2C2EF	  KtY%1OO
,,l**
+' $  	
	  N++L,=,=>Ft\4(4 
//"**f
=* '  	
	  |T2J|T2J46L ';TB#D*A4H")+T# $D*A4H")+T#  11JJ
o "$(;TB		&%22::&&::FF 3 

 !!<<=NO 	& %".
*/A(:
%   /D!EF.C+ )+ 7 ;=712	
	CMM"788  /D!EF  /D!EF !) 9 9"GGD$,, #D"6=#/!+#> !: ! 
	 11JJ
o !) 9 9##!	 !: ! !) 9 9"GGD$,, #D"6=! !: 
! DD$$&&//!8 E G N"00O,			n	-""99'Bi 
.$$**'? + M }}V%5%56>><CC""L$5$5$7	
 ] Ez  .=.K.K0&/hj +(  	"1"?"?.#HJ  	l 
.	-s7   [*-/[/ 3A(\) ]/3\&%\&).]]]()
__name__
__module____qualname____doc__r#   r&   r*   classmethodr.   r   rU   r/   r-   r   r   (   s3    	 "0 08Mr/   r   c                       e Zd ZdZdZdZy)
UpdateBetar   FTNr   r   r   r   r#   r&   rU   r/   r-   r   r   (  s    	 "r/   r   c                       e Zd ZdZdZdZy)UpdateAlphar   TNr   rU   r/   r-   r   r   9  s    	 !r/   r   )&r   
__future__r   r   r   rz   googlecloudsdk.api_lib.computer   r   r   r	   rp   )googlecloudsdk.api_lib.compute.operationsr
   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   r   "googlecloudsdk.command_lib.computer   ,googlecloudsdk.command_lib.compute.instancesr   ?googlecloudsdk.command_lib.compute.instances.network_interfacesr   4googlecloudsdk.command_lib.compute.security_policiesr(   r|   UniverseCompatibleReleaseTracksrW   GAUpdateCommandr   BETAr   ALPHAr   rU   r/   r-   <module>r      s    9 &  '  ? 7 4 = < . ( . 4 Q m  D%%((){T { * {| D%%**+  ,  D%%++,*  -r/   