
    >G                     6   S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  SSK
Jr  SS	KJr  SS
KJr  SrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r# " S  S!\RH                  5      r%\%RL                  4S" jr'g)#znotebooks instances api helper.    )absolute_import)division)unicode_literalsN)environments)util)	arg_utils)log)	resourcesz'compute.googleapis.com/reservation-namec                   ^ ^^^^ U UU4S jmU UU4S jmU 4S jnU 4S jnU 4S jnU U4S jnU U4S jnU U4S jnU U4S	 jn	UU U4S
 jn
UU U4S jnU 4S jnU U4S jnU U4S jnU U4S jnU 4S jnU U4S jnTR                  T R                  T R                  T R                  U" 5       U" 5       T R                  U" 5       T R
                  T R                  T R                  U" 5       U" 5       U" 5       U" 5       T R                  U" 5       T R                  T R                  U
" 5       U	" 5       U" 5       U" 5       T R                  U" 5       U" 5       U" 5       S9nU$ )a'  Creates the Instance message for the create request.

Args:
  args: Argparse object from Command.Run
  client(base_api.BaseApiClient): An instance of the specified API client.
  messages: Module containing messages definition for the specified API.

Returns:
  Instance of the Instance message.
c                     > TR                   n U R                  [        R                  " TT5      5      nUR                  $ N)projects_locations_environmentsGetenv_util CreateEnvironmentDescribeRequestcontainerImageenvironment_serviceresultargsclientmessagess     1lib/googlecloudsdk/api_lib/notebooks/instances.py(GetContainerImageFromExistingEnvironment@CreateInstance.<locals>.GetContainerImageFromExistingEnvironment+   s<     @@ $$11$ACF       c                     > TR                   n U R                  [        R                  " TT5      5      nUR                  $ r   )r   r   r   r   vmImager   s     r   !GetVmImageFromExistingEnvironment9CreateInstance.<locals>.GetVmImageFromExistingEnvironment1   s:     @@ $$11$ACF>>r   c                     > T R                  S5      (       a2  T R                  R                  R                  5       R	                  5       $ g )Nkms_key)IsSpecifiedCONCEPTSr"   ParseRelativeNamer   s   r   GetKmsRelativeName*CreateInstance.<locals>.GetKmsRelativeName7   ;    	""]]""((*7799 #r   c                     > T R                  S5      (       a2  T R                  R                  R                  5       R	                  5       $ g )Nnetwork)r#   r$   r,   r%   r&   r'   s   r   GetNetworkRelativeName.CreateInstance.<locals>.GetNetworkRelativeName;   r*   r   c                     > T R                  S5      (       a2  T R                  R                  R                  5       R	                  5       $ g )Nsubnet)r#   r$   r0   r%   r&   r'   s   r   GetSubnetRelativeName-CreateInstance.<locals>.GetSubnetRelativeName?   s;    !!]]!!'')6688 "r   c                  
  > TR                   n S nTR                  S5      (       aN  [        R                  " SU R                  S S9R                  [        R                  " TR                  5      5      nU " UTR                  S9$ )Naccelerator_typeaccelerator-typec                     SU ;  $ NUNSPECIFIED xs    r   <lambda>HCreateInstance.<locals>.CreateAcceleratorConfigMessage.<locals>.<lambda>J   	    =#9r   arg_namemessage_enuminclude_filter)type	coreCount)	AcceleratorConfigr#   r   ChoiceEnumMapperTypeValueValuesEnumGetEnumForChoiceEnumNameToChoicer4   accelerator_core_count)accelerator_config	type_enumr   r   s     r   CreateAcceleratorConfigMessage6CreateInstance.<locals>.CreateAcceleratorConfigMessageC   s    !33I*++,,%)==9; <L;K(()>)>?<A 
 $"="=? ?r   c                     > S n TR                  S5      (       aZ  TR                  n[        R                  " SUR                  S S9R                  [        R                  " TR                  5      5      n U $ )Nboot_disk_typezboot-disk-typec                     SU ;  $ r7   r9   r:   s    r   r<   5CreateInstance.<locals>.GetBootDisk.<locals>.<lambda>V   r>   r   r?   )r#   Instancer   rF   BootDiskTypeValueValuesEnumrH   rI   rP   rL   instance_messager   r   s     r   GetBootDisk#CreateInstance.<locals>.GetBootDiskO   sr    I())!**,,#'CC9; <L;K(()<)<=<? 
 r   c                     > S n TR                  S5      (       aZ  TR                  n[        R                  " SUR                  S S9R                  [        R                  " TR                  5      5      n U $ )Ndata_disk_typezdata-disk-typec                     SU ;  $ r7   r9   r:   s    r   r<   5CreateInstance.<locals>.GetDataDisk.<locals>.<lambda>a   r>   r   r?   )r#   rS   r   rF   DataDiskTypeValueValuesEnumrH   rI   rZ   rU   s     r   GetDataDisk#CreateInstance.<locals>.GetDataDiskZ   sn    I())!**,,#'CC9 	33D4G4GHI	 
 r   c                     > S n TR                  S5      (       aZ  TR                  n[        R                  " SUR                  S S9R                  [        R                  " TR                  5      5      n U $ )Ndisk_encryptionzdisk-encryptionc                     SU ;  $ r7   r9   r:   s    r   r<   ;CreateInstance.<locals>.GetDiskEncryption.<locals>.<lambda>l   r>   r   r?   )r#   rS   r   rF   DiskEncryptionValueValuesEnumrH   rI   ra   rU   s     r   GetDiskEncryption)CreateInstance.<locals>.GetDiskEncryptione   ss    I)**!**,,$'EE9; <L;K(()=)=><@ 
 r   c                     > TR                  S5      (       a  T" 5       $ TR                  S5      (       a&  TR                  TR                  TR                  S9n U $ g )Nenvironmentcontainer_repository)
repositorytag)r#   ContainerImageri   container_tag)container_imager   r   r   s    r   CreateContainerImageFromArgs4CreateInstance.<locals>.CreateContainerImageFromArgsp   s_    &&577.// //..D4F4F 0 Hor   c                    > TR                  S5      (       a  T" 5       $ TR                  S5      (       a  gTR                  TR                  S9n TR                  S5      (       a  TR                  U l        U $ TR
                  U l        U $ )z8Create VmImage Message from an environment or from args.rh   ri   N)projectvm_image_name)r#   VmImagevm_image_projectrs   	imageNamevm_image_familyimageFamily)vm_imager   r   r   s    r   CreateVmImageFromArgs-CreateInstance.<locals>.CreateVmImageFromArgsy   s    &&.00.//(=(=>H((--h O "11hOr   c                  N   > T R                  S5      (       a  T R                  /$ / $ )Ninstance_owners)r#   r}   r'   s   r   GetInstanceOwnersFromArgs1CreateInstance.<locals>.GetInstanceOwnersFromArgs   s)    )**""##Ir   c                     > TR                  S5      (       aV  TR                  R                  n U " TR                  R	                  5        VVs/ s H  u  pU R                  XS9PM     snnS9$ g s  snnf )NlabelskeyvalueadditionalProperties)r#   rS   LabelsValuer   itemsAdditionalProperty)labels_messager   r   r   r   s      r   GetLabelsFromArgs)CreateInstance.<locals>.GetLabelsFromArgs   st    !!((44n KK--/2/jc 
+
+
+
A/2 	 	 	2   A/
c                     > TR                  S5      (       aV  TR                  R                  n U " TR                  R	                  5        VVs/ s H  u  pU R                  XS9PM     snnS9$ g s  snnf )Nmetadatar   r   )r#   rS   MetadataValuer   r   r   )metadata_messager   r   r   r   s      r   GetMetadataFromArgs+CreateInstance.<locals>.GetMetadataFromArgs   su    
##!**88 MM//141jc 
-
-#
-
C14 	 	 	4r   c                     > TR                  S5      (       d-  TR                  S5      (       d  TR                  S5      (       d  g TR                  n U " TR                  TR                  TR                  S9$ )Nshielded_vm_secure_bootshielded_vm_vtpm shielded_vm_integrity_monitoring)enableIntegrityMonitoringenableSecureBoot
enableVtpm)r#   ShieldedInstanceConfigr   r   r   ) shielded_instance_config_messager   r   s    r   !GetShieldedInstanceConfigFromArgs9CreateInstance.<locals>.GetShieldedInstanceConfigFromArgs   sp    677/00?@@'/'F'F$+"&"G"G55(( r   c                  L   > T R                  S5      (       a  T R                  $ / $ )Ntags)r#   r   r'   s   r   GetTagsFromArgs'CreateInstance.<locals>.GetTagsFromArgs   s#    YYIr   c                    > TR                  S5      (       d  TR                  S5      (       d  g UU4S jn U " 5       nS n/ nUTR                  R                  R                  :X  a  [        nTR
                  /nTR                  nU" UUUS9$ )Nreservation_affinityreservationc                     > S n TR                  S5      (       aZ  TR                  n[        R                  " SUR                  S S9R                  [        R                  " TR                  5      5      n U $ )Nr   zreservation-affinityc                     SU ;  $ r7   r9   r:   s    r   r<   rCreateInstance.<locals>.GetReservationAffinityConfigFromArgs.<locals>.GetReservationAffinityEnum.<locals>.<lambda>   s	    ]!%;r   r?   )r#   ReservationAffinityr   rF   %ConsumeReservationTypeValueValuesEnumrH   rI   r   )rL   reservation_affinity_messager   r   s     r   GetReservationAffinityEnum`CreateInstance.<locals>.GetReservationAffinityConfigFromArgs.<locals>.GetReservationAffinityEnum   ss    i			0	1	1'/'C'C$..+6@@;	= >N=M**4+D+DE>G	 	 r   )consumeReservationTyper   values)r#   r   r   SPECIFIC_RESERVATION_RESERVATION_AFFINITY_KEYr   )r   reservation_affinity_enumreservation_keyreservation_valuesreservation_config_messager   r   s        r   $GetReservationAffinityConfigFromArgs<CreateInstance.<locals>.GetReservationAffinityConfigFromArgs   s    344]++
 !; <O!X%A%A	.	./C/C	D 2o ,,-!)!=!=%8! r   )namepostStartupScriptcustomGpuDriverPathinstanceOwnerskmsKeymachineTyper,   noProxyAccess
noPublicIpserviceAccountr0   r   acceleratorConfigbootDiskTypebootDiskSizeGbdataDiskTypedataDiskSizeGbnoRemoveDataDiskr   diskEncryptionr   r   installGpuDrivershieldedInstanceConfigreservationAffinityr   )rS   instancepost_startup_scriptcustom_gpu_driver_pathmachine_typeno_proxy_accessno_public_ipservice_accountboot_disk_sizedata_disk_sizeno_remove_data_diskinstall_gpu_driver)r   r   r   r(   r-   r1   rM   rW   r^   re   ro   rz   r~   r   r   r   r   r   r   r   r   s   ```                @@r   CreateInstancer      s0   !::9
?			

$L ==0055.0!##$&((""))"$#%68=((=((//13&( "$..>@>@5  (8 
/r   c                 z    [         R                  " U 5      n[        XU5      nUR                  X4U R                  S9$ )N)parentr   
instanceId)r   GetParentForInstancer   0NotebooksProjectsLocationsInstancesCreateRequestr   )r   r   r   r   r   s        r   CreateInstanceCreateRequestr      sB    $$T*&D(3(		B	B4== 
C 
B Br   c                 L    [         R                  " U 5      nUR                  US9$ )N)r   )r   GetParentFromArgs.NotebooksProjectsLocationsInstancesListRequest)r   r   r   s      r   CreateInstanceListRequestr      s&    !!$'&		@	@	@	OOr   c                 R    [        U 5      R                  5       nUR                  US9$ N)r   )GetInstanceResourcer&   0NotebooksProjectsLocationsInstancesDeleteRequestr   r   r   s      r   CreateInstanceDeleteRequestr      s1     &335(		B	B 
C 
 r   c                 R    [        U 5      R                  5       nUR                  US9$ r   )r   r&   -NotebooksProjectsLocationsInstancesGetRequestr   s      r   CreateInstanceDescribeRequestr     s)     &335(		?	?X	?	NNr   c                     [        U 5      n[        R                  " UR                  UR                  5      R                  5       nUR                  UR                  5       S9nUR                  X4S9$ )N)r   )r   registerInstanceRequest)	r   r   GetLocationResourcelocationsId
projectsIdr&   RegisterInstanceRequestName2NotebooksProjectsLocationsInstancesRegisterRequest)r   r   r   r   register_requests        r   CreateInstanceRegisterRequestr     sr     &(##H$8$8$,$7$799E 	55 6 "		D	D 
E 
? ?r   c                 r    [        U 5      R                  5       nUR                  5       nUR                  X#S9$ )N)r   resetInstanceRequest)r   r&   ResetInstanceRequest/NotebooksProjectsLocationsInstancesResetRequest)r   r   r   reset_requests       r   CreateInstanceResetRequestr     ?     &335(//1-		A	A 
B 
9 9r   c                 r    [        U 5      R                  5       nUR                  5       nUR                  X#S9$ )N)r   startInstanceRequest)r   r&   StartInstanceRequest/NotebooksProjectsLocationsInstancesStartRequest)r   r   r   start_requests       r   CreateInstanceStartRequestr     r   r   c                 r    [        U 5      R                  5       nUR                  5       nUR                  X#S9$ )N)r   stopInstanceRequest)r   r&   StopInstanceRequest.NotebooksProjectsLocationsInstancesStopRequest)r   r   r   stop_requests       r   CreateInstanceStopRequestr  #  s?     &335(--/,		@	@ 
A 
7 7r   c                    [        U 5      R                  5       nUR                  5       nUR                  nU R                  S5      (       a  U R                  Ul        U R                  S5      (       aT  [        R                  " SUR                  S S9R                  [        R                  " U R                  5      5      nXSl        UR                  X#S9$ )z-Create and return Accelerator update request.rJ   r4   r5   c                     SU ;  $ r7   r9   r:   s    r   r<   -CreateSetAcceleratorRequest.<locals>.<lambda>5  s	    a!7r   r?   )r   setInstanceAcceleratorRequest)r   r&   SetInstanceAcceleratorRequestr#   rJ   rD   r   rF   rG   rH   rI   r4   rC   8NotebooksProjectsLocationsInstancesSetAcceleratorRequest)r   r   r   set_acc_requestrK   rL   s         r   CreateSetAcceleratorRequestr  *  s     &335(::</==	.// $ ; ;O	())**#';;79 :J9I&&t'<'<=:? 
 %		J	J 
K 
D Dr   c                 4   [        U 5      R                  5       nUR                  5       nUR                  R                  nU" U R                  R                  5        VVs/ s H  u  pVUR                  XVS9PM     snnS9Ul        UR                  X#S9$ s  snnf )Nr   r   )r   setInstanceLabelsRequest)r   r&   SetInstanceLabelsRequestr   r   r   r   3NotebooksProjectsLocationsInstancesSetLabelsRequest)r   r   r   set_label_requestr   r   r   s          r   CreateSetLabelsRequestr  <  s     &335(77944@@.+))+B+*# ''C'=+B  
	E	E 
F 
A A	Bs   B
c                     [        U 5      R                  5       nUR                  U R                  S9nUR	                  X#S9$ )N)r   )r   setInstanceMachineTypeRequest)r   r&   SetInstanceMachineTypeRequestr   8NotebooksProjectsLocationsInstancesSetMachineTypeRequest)r   r   r   set_machine_requests       r   CreateSetMachineTypeRequestr  H  sR     &335( >>## ? %		J	J 
K 
H Hr   c                 R    [        U 5      R                  5       nUR                  US9$ r   )r   r&   ;NotebooksProjectsLocationsInstancesGetInstanceHealthRequestr   s      r   CreateInstanceGetHealthRequestr  P  s1     &335(		M	M 
N 
 r   c                 R    [        U 5      R                  5       nUR                  US9$ )N)notebookInstance)r   r&   7NotebooksProjectsLocationsInstancesIsUpgradeableRequestr   s      r   "CreateInstanceIsUpgradeableRequestr!  V  s1     &335(		I	I 
J 
! !r   c                 r    [        U 5      R                  5       nUR                  5       nUR                  X#S9$ )N)r   upgradeInstanceRequest)r   r&   UpgradeInstanceRequest1NotebooksProjectsLocationsInstancesUpgradeRequest)r   r   r   upgrade_requests       r   CreateInstanceUpgradeRequestr'  \  s?     &335(335/		C	C 
D 
= =r   c                     [        U 5      R                  5       nUR                  U R                  S9nUR	                  X#S9$ )N)targetSnapshot)r   rollbackInstanceRequest)r   r&   RollbackInstanceRequesttarget_snapshot2NotebooksProjectsLocationsInstancesRollbackRequest)r   r   r   rollback_requests       r   CreateInstanceRollbackRequestr/  c  sP     &335(55)) 6 +		D	D 
E 
? ?r   c                    [        U 5      R                  5       nUR                  U R                  S9nU R	                  S5      (       a  U R
                  Ul        U R	                  S5      (       a  SUl        U R	                  S5      (       a  SUl        U R	                  S5      (       a  SUl	        SnU R	                  S5      (       a  [        U R                  5      nUR                  X!R                  X4S	9S
9$ )z$"Create and return Diagnose request.)	gcsBucketrelative_pathzenable-repairTzenable-packet-capturezenable-copy-home-filesNtimeout_minutes)diagnosticConfigtimeoutMinutes)r   diagnoseInstanceRequest)r   r&   DiagnosticConfig
gcs_bucketr#   r2  relativePathrepairFlagEnabledpacketCaptureFlagEnabledcopyHomeFilesFlagEnabledintr3  2NotebooksProjectsLocationsInstancesDiagnoseRequestDiagnoseInstanceRequest)r   r   r   diagnostic_configr3  s        r   CreateInstanceDiagnoseRequestrA  k  s     &335(// 0  
o&&%)%7%7"	o&&*.'	-..15.	.//15./	'(($../O		D	D-M-M, .N .N 
E 
O Or   c                    ^ ^ [        T 5      R                  5       nU U4S jnTR                  UTR                  U" 5       S9S9$ )z#"Create and return Migrate request.c                     > S n TR                  S5      (       aZ  TR                  n[        R                  " SUR                  S S9R                  [        R                  " TR                  5      5      n U $ )Npost_startup_script_optionzpost-startup-script-optionc                     SU ;  $ r7   r9   r:   s    r   r<   RCreateInstanceMigrateRequest.<locals>.GetPostStartupScriptOption.<locals>.<lambda>  r>   r   r?   )r#   MigrateInstanceRequestr   rF   &PostStartupScriptOptionValueValuesEnumrH   rI   rD  )rL   request_messager   r   s     r   GetPostStartupScriptOption@CreateInstanceMigrateRequest.<locals>.GetPostStartupScriptOption  sr    I455 77o,,/&MM9; <L;K(()H)HI<K 
 r   )postStartupScriptOption)r   migrateInstanceRequest)r   r&   1NotebooksProjectsLocationsInstancesMigrateRequestrG  )r   r   r   rJ  s   ``  r   CreateInstanceMigrateRequestrO    sR     &335(	 
	C	C%<<"<"> =  
D 
	 	r   c                 J    U R                   R                  R                  5       $ r   )r$   r   r%   r'   s    r   r   r     s    				%	%	''r   c                 r    [         R                  R                  U R                  SS9nUR	                  5       $ )Nz&notebooks.projects.locations.instances)
collection)r
   REGISTRYParseRelativeNamer   SelfLink)resourcer   s     r   GetInstanceURIrW    s7    11mm H 2 J(				r   c                       \ rS rSr\R
                  S4r\R                  S4r\R                  S4r	\R                  S4r
\R                  S4r\R                  S4r\R                  S4rS	rg
)OperationTypei  createdupdatedupgradedzrolled backdeletedresetmigratedr9   N)__name__
__module____qualname____firstlineno__r	   CreatedResourceCREATEUpdatedResourceUPDATEUPGRADEROLLBACKDeletedResourceDELETEResetResourceRESETMIGRATE__static_attributes__r9   r   r   rY  rY    sr    +&+&  *-'!!=1(+&g
&%  *-'r   rY  c                    UR                   S   nUR                  (       aB  U" [        R                  " U R                  U5      SR                  UR                  5      SS9  U $ [        R                  " U SR                  UR                  UR                   S   U R                  5      UUUR                   S   S:H  S9nU" [        R                  " U R                  U5      SR                  UR                  5      S	S9  U$ )
a0  Handles Long Running Operations for both cases of async.

Args:
  operation: The operation to poll.
  args: ArgParse instance containing user entered arguments.
  instance_service: The service to get the resource after the long running
    operation completes.
  release_track: base.ReleaseTrack object.
  operation_type: Enum value of type OperationType indicating the kind of
    operation to wait for.

Raises:
  apitools.base.py.HttpError: if the request returns an HTTP error

Returns:
  The Instance resource if synchronous, else the Operation Resource.
r   znotebooks instance {0}T)kindis_asyncz9Waiting for operation on Instance [{}] to be {} with [{}]   r]  )servicerelease_track	is_deleteF)r   async_r   GetOperationResourcer   formatr   WaitForOperation)	operationr   instance_serviceru  operation_typelogging_methodresponses          r   	HandleLROr    s    , "''*.	[[!!)..-@%,,T]]; $$CJJMM>//2INN	D #!''*i7:H !!)..-@%,,T]]; Or   )(__doc__
__future__r   r   r   enum googlecloudsdk.api_lib.notebooksr   r   r   $googlecloudsdk.command_lib.util.apisr   googlecloudsdk.corer	   r
   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r!  r'  r/  rA  rO  r   rW  EnumrY  rg  r  r9   r   r   <module>r     s    & &  '  E 1 : # )E RjBP
O
?997D$	AH!=?O0	,(.DII . +11	)r   