
    j                        S 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SKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  \	R                  R                  S\	R                  R                   S0r\	R                  R                  4S jr\	R                  R                  4S jrS r\	R                  R                  4S jrS r\	R                  R                  4S jr\	R                  R                  4S jrS rS rS rS rS rS rS rS r S r!g)zUtil for Apphub Cloud SDK.    )absolute_import)division)unicode_literals)apis)waiter)base)
exceptions)
properties)	resourcesv1alphav1c                 Z    [         R                  U 5      n[        R                  " SU5      $ Napphub)VERSION_MAPgetr   GetMessagesModulerelease_trackapi_versions     *lib/googlecloudsdk/api_lib/apphub/utils.pyr   r   $   #    .+			+	66    c                 Z    [         R                  U 5      n[        R                  " SU5      $ r   )r   r   r   GetClientInstancer   s     r   r   r   )   r   r   c                 "    U (       a  U S-  n X-   $ )N, )update_mask
field_names     r   AddToUpdateMaskr!   .   s    3K		!!r   c                     [         R                  U5      n[        R                  " 5       R	                  U R
                  SUS9$ )zKConverts an Operation to a Resource that can be used with `waiter.WaitFor`.z$apphub.projects.locations.operations)r   )r   r   r   RegistryParseRelativeNamename)	operationr   r   s      r   GetOperationResourcer'   4   s>    .+					/	/nn, 
0 
 r   c                 H    [         R                  " U [        U5      UUS-  S9$ )Ni  )max_wait_ms)r   WaitForr'   )pollerr&   messagemax_wait_secs       r   WaitForOperationr.   >   s)    	9%%	
 r   c                 ^   [        U5      R                  5       nU R                  (       aI  [        U5      R                  [        U5      R                  R	                  U R                  5      S9Ul        U R                  (       aI  [        U5      R                  [        U5      R                  R	                  U R                  5      S9Ul        U R                  =(       d    /  H  n[        U5      R                  5       nUR                  SS5      Ul        UR                  SS5      (       a  UR                  SS5      Ul        U[        R                  R                   :X  aC  UR                  SS5      (       a,  [        U5      R#                  UR                  S5      S9Ul        UR&                  R)                  U5        M     U R*                  =(       d    /  H  n[        U5      R                  5       nUR                  SS5      Ul        UR                  SS5      (       a  UR                  SS5      Ul        U[        R                  R                   :X  aC  UR                  SS5      (       a,  [        U5      R#                  UR                  S5      S9Ul        UR,                  R)                  U5        M     U R.                  =(       d    /  H  n[        U5      R                  5       nUR                  SS5      Ul        UR                  S5      (       a  UR                  S5      Ul        U[        R                  R                   :X  aB  UR                  S5      (       a,  [        U5      R#                  UR                  S5      S9Ul        UR0                  R)                  U5        M     U$ )zPopulate attirbutes from args.)typeemailNzdisplay-namezchannel-uri)uri)r   
Attributesenvironment_typeEnvironmentTypeValueValuesEnumenvironmentcriticality_typeCriticalitycriticalitybusiness_ownersContactInfor   r1   displayNamer   ReleaseTrackALPHAChannelchannelbusinessOwnersappenddeveloper_ownersdeveloperOwnersoperator_ownersoperatorOwners)	argsr   
attributesb_ownerbusiness_ownerd_ownerdeveloper_ownero_owneroperator_owners	            r   PopulateAttributesrP   G   s    !/::<*	.}=II}-99MM!!
 J J 
.}=II}-99MM!!
 J J %%++g&}5AACN";;w5N{{>4((#*;;~t#Dn ))///	]D	)	)!2=!A!I!IM* "J "
 $$^4 , &&,",g'6BBDO#KK6O{{>4(($+KK$Eo!))///	]D	)	)"3M"B"J"JM* #K #
 %%o6 - %%++g&}5AACN";;w5N{{>""#*;;~#>n ))///	]	#	#!2=!A!I!IM* "J "
 $$^4 , 
r   c                    ^ ^ U U4S jnU$ )z5Returns a function which turns a resource into a uri.c                    > [         R                  T5      n[        R                  " 5       R	                  U R
                  TUS9nUR                  5       $ )N)
collectionr   )r   r   r   r#   r$   r%   SelfLink)resourcer   resultrS   r   s      r   _GetUriMakeGetUriFunc.<locals>._GetUri   sI    //-0K!33*+ 4 F ??r   r   )rS   r   rW   s   `` r   MakeGetUriFuncrY      s     
.r   c                     U R                   R                  R                  5       nUR                  5       (       d  [        R
                  " SS5      eU$ )z$Returns a service project reference.zservice projectz%service project id must be non-empty.)CONCEPTSservice_projectParseNamer	   InvalidArgumentException)rH   service_project_refs     r   GetServiceProjectRefra      sK    55;;=		!	!	#	#

-
-B  
r   c                     U R                   R                  R                  5       nUR                  5       (       d  [        R
                  " SS5      eU$ )zReturns a operation reference.r&   zoperation id must be non-empty.)r[   r&   r]   r^   r	   r_   )rH   operation_refs     r   GetOperationRefrd      sJ    --))//1-					

-
-6  
r   c                     U R                   R                  R                  5       nUR                  5       (       d  [        R
                  " SS5      eU$ )zReturns a location reference.locationzlocation id must be non-empty.)r[   rf   r]   r^   r	   r_   )rH   location_refs     r   GetLocationRefrh      J    ''--/,					

-
-4  
r   c                     U R                   R                  R                  5       nUR                  5       (       d  [        R
                  " SS5      eU$ )z(Returns a discovered workload reference.zdiscovered workloadz)discovered workload id must be non-empty.)r[   discovered_workloadr]   r^   r	   r_   )rH   discovered_workload_refs     r   GetDiscoveredWorkloadRefrm      sK     MM==CCE	 	%	%	'	'

-
-J  
! r   c                     U R                   R                  R                  5       nUR                  5       (       d  [        R
                  " SS5      eU$ )z'Returns a discovered service reference.zdiscovered servicez(discovered service id must be non-empty.)r[   discovered_servicer]   r^   r	   r_   )rH   discovered_service_refs     r   GetDiscoveredServiceRefrq      sK    ==;;AAC		$	$	&	&

-
-H  
 r   c                     U R                   R                  R                  5       nUR                  5       (       d  [        R
                  " SS5      eU$ )z Returns a application reference.applicationz!application id must be non-empty.)r[   rs   r]   r^   r	   r_   )rH   app_refs     r   GetApplicationRefru      sE    MM%%++-'	

-
-:  
.r   c                     U R                   R                  R                  5       nUR                  5       (       d  [        R
                  " SS5      eU$ )z)Returns a application workload reference.workloadzworkload id must be non-empty.)r[   rw   r]   r^   r	   r_   )rH   workload_refs     r   GetApplicationWorkloadRefry      ri   r   c                     U R                   R                  R                  5       nUR                  5       (       d  [        R
                  " SS5      eU$ )z(Returns a application service reference.servicezservice id must be non-empty.)r[   r{   r]   r^   r	   r_   )rH   service_refs     r   GetApplicationServiceRefr}      sJ    %%++-+					

-
-2  
r   c                      [         R                  R                  [        R                  R
                  R                  R                  5       SS9$ )zReturns a project reference.zapphub.projects)rS   )r   REGISTRYr]   r
   VALUEScoreproject	GetOrFailr   r   r   GetProjectRefr      sA    				!	!$$..0" 
" 
 r   N)"__doc__
__future__r   r   r   googlecloudsdk.api_lib.utilr   r   googlecloudsdk.callioper   r	   googlecloudsdk.corer
   r   r>   r?   GAr   r   r   r!   r'   r.   rP   rY   ra   rd   rh   rm   rq   ru   ry   r}   r   r   r   r   <module>r      s    ! &  ' , . ( . * ) 	Y$ %)$5$5$;$; 7
 %)$5$5$;$; 7
" 372C2C2I2I  ,0+<+<+B+B 6r .2->->-D-D 
! r   