
    F                        S 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\R@                  5      r!\!RD                  4S jr#g) znotebooks instances api helper.    N)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>.GetVmImageFromExistingEnvironment.   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>.GetKmsRelativeName4   ;    	""]]""((*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>.GetNetworkRelativeName8   r'   r   c                     > T R                  S5      (       a2  T R                  R                  R                  5       R	                  5       $ g )Nsubnet)r    r!   r-   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>G   	    =#9r   arg_namemessage_enuminclude_filter)type	coreCount)	AcceleratorConfigr    r   ChoiceEnumMapperTypeValueValuesEnumGetEnumForChoiceEnumNameToChoicer1   accelerator_core_count)accelerator_config	type_enumr   r   s     r   CreateAcceleratorConfigMessage6CreateInstance.<locals>.CreateAcceleratorConfigMessage@   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 ;  $ r4   r6   r7   s    r   r9   5CreateInstance.<locals>.GetBootDisk.<locals>.<lambda>S   r;   r   r<   )r    Instancer   rC   BootDiskTypeValueValuesEnumrE   rF   rM   rI   instance_messager   r   s     r   GetBootDisk#CreateInstance.<locals>.GetBootDiskL   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 ;  $ r4   r6   r7   s    r   r9   5CreateInstance.<locals>.GetDataDisk.<locals>.<lambda>^   r;   r   r<   )r    rP   r   rC   DataDiskTypeValueValuesEnumrE   rF   rW   rR   s     r   GetDataDisk#CreateInstance.<locals>.GetDataDiskW   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 ;  $ r4   r6   r7   s    r   r9   ;CreateInstance.<locals>.GetDiskEncryption.<locals>.<lambda>i   r;   r   r<   )r    rP   r   rC   DiskEncryptionValueValuesEnumrE   rF   r^   rR   s     r   GetDiskEncryption)CreateInstance.<locals>.GetDiskEncryptionb   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    ContainerImagerf   container_tag)container_imager   r   r   s    r   CreateContainerImageFromArgs4CreateInstance.<locals>.CreateContainerImageFromArgsm   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.re   rf   N)projectvm_image_name)r    VmImagevm_image_projectrp   	imageNamevm_image_familyimageFamily)vm_imager   r   r   s    r   CreateVmImageFromArgs-CreateInstance.<locals>.CreateVmImageFromArgsv   s    &&.00.//(=(=>H((--h O "11hOr   c                  N   > T R                  S5      (       a  T R                  /$ / $ )Ninstance_owners)r    rz   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    rP   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    rP   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 ;  $ r4   r6   r7   s    r   r9   rCreateInstance.<locals>.GetReservationAffinityConfigFromArgs.<locals>.GetReservationAffinityEnum.<locals>.<lambda>   s	    ]!%;r   r<   )r    ReservationAffinityr   rC   %ConsumeReservationTypeValueValuesEnumrE   rF   r   )rI   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serviceAccountr-   r   acceleratorConfigbootDiskTypebootDiskSizeGbdataDiskTypedataDiskSizeGbnoRemoveDataDiskr   diskEncryptionr~   r   installGpuDrivershieldedInstanceConfigreservationAffinityr   )rP   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*   r.   rJ   rT   r[   rb   rl   rw   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.rG   r1   r2   c                     SU ;  $ r4   r6   r7   s    r   r9   -CreateSetAcceleratorRequest.<locals>.<lambda>2  s	    a!7r   r<   )r   setInstanceAcceleratorRequest)r   r#   SetInstanceAcceleratorRequestr    rG   rA   r   rC   rD   rE   rF   r1   r@   8NotebooksProjectsLocationsInstancesSetAcceleratorRequest)r   r   r   set_acc_requestrH   rI   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  9  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  E  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  M  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  S  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$  Y  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,  `  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    r/  relativePathrepairFlagEnabledpacketCaptureFlagEnabledcopyHomeFilesFlagEnabledintr0  2NotebooksProjectsLocationsInstancesDiagnoseRequestDiagnoseInstanceRequest)r   r   r   diagnostic_configr0  s        r   CreateInstanceDiagnoseRequestr>  h  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 ;  $ r4   r6   r7   s    r   r9   RCreateInstanceMigrateRequest.<locals>.GetPostStartupScriptOption.<locals>.<lambda>  r;   r   r<   )r    MigrateInstanceRequestr   rC   &PostStartupScriptOptionValueValuesEnumrE   rF   rA  )rI   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#   1NotebooksProjectsLocationsInstancesMigrateRequestrD  )r   r   r   rG  s   ``  r   CreateInstanceMigrateRequestrL    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   GetInstanceURIrT    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migratedr6   N)__name__
__module____qualname____firstlineno__r   CreatedResourceCREATEUpdatedResourceUPDATEUPGRADEROLLBACKDeletedResourceDELETEResetResourceRESETMIGRATE__static_attributes__r6   r   r   rV  rV    sr    +&+&  *-'!!=1(+&g
&%  *-'r   rV  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 [{}]   rZ  )servicerelease_track	is_deleteF)r   async_r   GetOperationResourcer   formatr   WaitForOperation)	operationr   instance_servicerr  operation_typelogging_methodresponses          r   	HandleLROr}    s    , "''*.	[[!!)..-@%,,T]]; $$CJJMM>//2INN	D #!''*i7:H !!)..-@%,,T]]; Or   )$__doc__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,  r>  rL  r   rT  EnumrV  rd  r}  r6   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   