
    j                        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 e	j                  j                  de	j                  j                   diZe	j                  j                  fdZe	j                  j                  fdZd Ze	j                  j                  fdZd Ze	j                  j                  fdZe	j                  j                  fdZd Zd Zd Zd Zd Zd Zd Zd Z d Z!y)zUtil for Apphub Cloud SDK.    )absolute_import)division)unicode_literals)apis)waiter)base)
exceptions)
properties)	resourcesv1alphav1c                 X    t         j                  |       }t        j                  d|      S Napphub)VERSION_MAPgetr   GetMessagesModulerelease_trackapi_versions     *lib/googlecloudsdk/api_lib/apphub/utils.pyr   r   $   #    .+			+	66    c                 X    t         j                  |       }t        j                  d|      S r   )r   r   r   GetClientInstancer   s     r   r   r   )   r   r   c                     | r| dz  } | |z   S )N, )update_mask
field_names     r   AddToUpdateMaskr!   .   s    3K	z	!!r   c                     t         j                  |      }t        j                         j	                  | j
                  d|      S )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                 L    t        j                  | t        |      ||dz        S )Ni  )max_wait_ms)r   WaitForr'   )pollerr&   messagemax_wait_secs       r   WaitForOperationr.   >   s)    	9%%	
 r   c                    t        |      j                         }| j                  rLt        |      j                  t        |      j                  j	                  | j                              |_        | j                  rLt        |      j                  t        |      j                  j	                  | j                              |_        | j                  xs g D ]  }t        |      j                         }|j                  dd      |_        |j                  dd      r|j                  dd      |_        |t        j                  j                   k(  rA|j                  dd      r/t        |      j#                  |j                  d            |_        |j&                  j)                  |        | j*                  xs g D ]  }t        |      j                         }|j                  dd      |_        |j                  dd      r|j                  dd      |_        |t        j                  j                   k(  rA|j                  dd      r/t        |      j#                  |j                  d            |_        |j,                  j)                  |        | j.                  xs g D ]  }t        |      j                         }|j                  dd      |_        |j                  d      r|j                  d      |_        |t        j                  j                   k(  r@|j                  d      r/t        |      j#                  |j                  d            |_        |j0                  j)                  |        |S )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                       fd}|S )z5Returns a function which turns a resource into a uri.c                     t         j                        }t        j                         j	                  | j
                  |      }|j                         S )N)
collectionr   )r   r   r   r#   r$   r%   SelfLink)resourcer   resultrS   r   s      r   _GetUrizMakeGetUriFunc.<locals>._GetUri   sI    //-0K!33*+ 4 F ??r   r   )rS   r   rW   s   `` r   MakeGetUriFuncrX      s     
.r   c                     | j                   j                  j                         }|j                         st	        j
                  dd      |S )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   GetServiceProjectRefr`      sH    55;;=		!	!	#

-
-B  
r   c                     | j                   j                  j                         }|j                         st	        j
                  dd      |S )zReturns a operation reference.r&   zoperation id must be non-empty.)rZ   r&   r\   r]   r	   r^   )rH   operation_refs     r   GetOperationRefrc      sG    --))//1-				

-
-6  
r   c                     | j                   j                  j                         }|j                         st	        j
                  dd      |S )zReturns a location reference.locationzlocation id must be non-empty.)rZ   re   r\   r]   r	   r^   )rH   location_refs     r   GetLocationRefrg      G    ''--/,				

-
-4  
r   c                     | j                   j                  j                         }|j                         st	        j
                  dd      |S )z(Returns a discovered workload reference.zdiscovered workloadz)discovered workload id must be non-empty.)rZ   discovered_workloadr\   r]   r	   r^   )rH   discovered_workload_refs     r   GetDiscoveredWorkloadRefrl      sH     MM==CCE	 	%	%	'

-
-J  
! r   c                     | j                   j                  j                         }|j                         st	        j
                  dd      |S )z'Returns a discovered service reference.zdiscovered servicez(discovered service id must be non-empty.)rZ   discovered_servicer\   r]   r	   r^   )rH   discovered_service_refs     r   GetDiscoveredServiceRefrp      sH    ==;;AAC		$	$	&

-
-H  
 r   c                     | j                   j                  j                         }|j                         st	        j
                  dd      |S )z Returns a application reference.applicationz!application id must be non-empty.)rZ   rr   r\   r]   r	   r^   )rH   app_refs     r   GetApplicationRefrt      sC    MM%%++-'	

-
-:  
.r   c                     | j                   j                  j                         }|j                         st	        j
                  dd      |S )z)Returns a application workload reference.workloadzworkload id must be non-empty.)rZ   rv   r\   r]   r	   r^   )rH   workload_refs     r   GetApplicationWorkloadRefrx      rh   r   c                     | j                   j                  j                         }|j                         st	        j
                  dd      |S )z(Returns a application service reference.servicezservice id must be non-empty.)rZ   rz   r\   r]   r	   r^   )rH   service_refs     r   GetApplicationServiceRefr|      sG    %%++-+				

-
-2  
r   c                      t         j                  j                  t        j                  j
                  j                  j                         d      S )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   rX   r`   rc   rg   rl   rp   rt   rx   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   