
    "c                     r   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 ddlmZ dHdZd Z	 	 	 	 dIdZd Zd Z	 	 	 	 dJdZdKdZ	 dLdZd ZdMdZ	 dNdZd Zd Zd Zd Zd Z ejB                  jD                  fdZ#ejB                  jD                  fdZ$d  Z%	 dOd!Z&	 	 	 	 dPd"Z'	 dQd#Z(	 	 	 	 dRd$Z)	 dSd%Z*	 	 	 	 dTd&Z+	 dUd'Z,	 	 	 	 dVd(Z-d) Z.d* Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8dWd4Z9	 dXd5Z:d6 Z;d7 Z<d8 Z=d9 Z>d: Z?ejB                  jD                  fd;Z@ejB                  jD                  fd<ZAdejB                  jD                  fd=ZBd> ZCd? ZDd@ ZEejB                  jD                  fdAZFejB                  jD                  fdBZGdC ZHdD ZIdE ZJdF ZKdG ZLy)YzApphub Command Lib Flags.    )absolute_import)division)unicode_literals)arg_parsers)base)concepts)deps)utils)concept_parsers)presentation_specsNc                     t        j                  dt        j                  t        j
                  d      g| r|       S d      S )zCreate basic attributes that fallthrough location to global in resource argument.

  Args:
    help_text: If set, overrides default help text

  Returns:
    Resource argument parameter config
  locationz8Service project attachments only support global location)functionhintzLocation of the {resource}.)namefallthroughs	help_text)r    ResourceParameterAttributeConfigr	   Fallthroughapphub_utilsDefaultToGlobal)r   s    .lib/googlecloudsdk/command_lib/apphub/flags.py'_DefaultToGlobalLocationAttributeConfigr      sP     
	2	2


#33M '		
 	 .K	
 	    c                  `    t        j                  ddt               t         j                        S Nzapphub.projects.locationsr   )resource_namelocationsId
projectsId)r   ResourceSpecr    DEFAULT_PROJECT_ATTRIBUTE_CONFIG r   r   GetGlobalLocationResourceSpecr#   3   s*    			!9;::	
 r   c                     |xs d}t         j                  j                  dj                  |rdnd|       t	               ||      S z6Constructs and returns the Location Resource Argument.z	Location.{}{} --required)r   ConceptParserForResourceformatr#   arg_namer   
positionalr*   s       r   GetGlobalLocationResourceArgr1   <   sJ     &;)		&	&	2	2mm*B$9#%	 
3 
 r   c                  0    t        j                  dd      S )Nr   z&The Cloud location for the {resource}.r   r   r   r   r"   r   r   LocationAttributeConfigr5   N   s    		2	28
 r   c                  `    t        j                  ddt               t         j                        S r   )r   r    r5   r!   r"   r   r   GetLocationResourceSpecr7   U   s*    			!)+::	
 r   c                     |xs d}t         j                  j                  dj                  |rdnd|       t	               ||      S r%   )r   r+   r,   r-   r7   r.   s       r   GetLocationResourceArgr9   ^   sJ     &;)		&	&	2	2mm*B$9	 
3 
 r   c                 |      fd}t        j                  dd |       t         j                  t                     S )zFConstructs and returns the Resource specification for Service project.c                  2    t        j                         S Nr3   r4   r/   r   s   r   ServiceProjectAttributeConfigzDGetServiceProjectResourceSpec.<locals>.ServiceProjectAttributeConfigs       44 r   z3apphub.projects.locations.serviceProjectAttachmentsServiceProjectAttachment)r   serviceProjectAttachmentsIdr   r   )r   r    r!   r   )r/   r   r>   s   `` r   GetServiceProjectResourceSpecrB   p   s8     
		;."?"A::9;
 r   c                     |xs d}t         j                  j                  dj                  |rdnd|       t	               ||      S )z=Constructs and returns the Service Project Resource Argument.zThe Service Project ID.r&   r'   r(   r)   )r   r+   r,   r-   rB   r.   s       r   GetServiceProjectResourceArgrD      sK    
 44)		&	&	2	2mm*B$9#%	 
3 
 r   c                 0    t        j                  | |      S )z9Helper function for constructing ResourceAttributeConfig.r3   r4   r=   s     r   "ApplicationResourceAttributeConfigrF      s     
	2	2
 r   applicationc                 v    t        j                  ddt        | |      t         j                  t	                     S )zBConstructs and returns the Resource specification for Application.z&apphub.projects.locations.applicationsrG   )r   applicationsIdr   r   )r   r    rF   r!   r5   r=   s     r   GetApplicationResourceSpecrJ      s6     
		.!7)L::)+
 r   c                     |xs d}t         j                  j                  dj                  |rdnd|       t	               ||      S )z<Constructs and returns the Application ID Resource Argument.zThe Application ID.r&   r'   r(   r)   )r   r+   r,   r-   rJ   r.   s       r   GetApplicationResourceArgrL      sK    
 00)		&	&	2	2mm*B$9 "	 
3 
 r   c                 6    t               j                  |        y N)rD   AddToParserparsers    r   AddDescribeServiceProjectFlagsrR           ,,V4r   c                 6    t               j                  |        y rN   rL   rO   rP   s    r   AddDescribeApplicationFlagsrV          ))&1r   c                 6    t               j                  |        y rN   )r1   rO   rP   s    r   AddListServiceProjectFlagsrY      rS   r   c                 6    t               j                  |        y rN   r9   rO   rP   s    r   AddListApplicationFlagsr\          &&v.r   c                 b    t               j                  |        | j                  ddddd       y N--asyncasync_
store_trueFNReturn immediately, without waiting for the operation in progress to complete.destactiondefaulthelprD   rO   add_argumentrP   s    r   AddServiceProjectFlagsrk      7     ,,V4  	r   c                     t               j                  |        t        | d|       | j                  dddddd	       | j                  d
d       | j                  dd       | j                  ddddd       y)-Adds flags required to create an application.rG   r   release_trackz--scope-typez!Represents a regional applicationzRepresents a global application)REGIONALGLOBALzScope of the ApplicationT)choicesrh   r*   --display-nameHuman-friendly display namerh   --descriptionDescription of the Applicationr`   ra   rb   Frc   rd   N)rL   rO   AddAttributesFlagsrj   rQ   rp   s     r   CreateApplicationFlagsr{      s     ))&1M 	95 &   	&-JKo,LM  	r   c                     t               j                  |        | j                  dd       | j                  dd       t        | d|       | j                  dd	d
dd       y)rn   rt   ru   rv   rw   rx   rG   ro   r`   ra   rb   Frc   rd   N)rL   rO   rj   ry   rz   s     r   UpdateApplicationFlagsr}      ss     ))&1&-JKo,LMM 	  	r   c                 b    t               j                  |        | j                  ddddd       y r_   ri   rP   s    r   AddRemoveServiceProjectFlagsr     rl   r   c                 |      fd}t        j                  dd |       t         j                  t                     S )zIConstructs and returns the Resource specification for Discovered Service.c                  2    t        j                         S r<   r4   r=   s   r    DiscoveredServiceAttributeConfigzJGetDiscoveredServiceResourceSpec.<locals>.DiscoveredServiceAttributeConfig  r?   r   z,apphub.projects.locations.discoveredServicesdiscoveredService)r   discoveredServicesIdr   r   r   r    r!   r5   )r/   r   r   s   `` r    GetDiscoveredServiceResourceSpecr     s8    
 
		4';=::)+
 r   c                     |xs d}t         j                  j                  dj                  |rdnd|       t	               ||      S )z@Constructs and returns the Discovered Service Resource Argument.zThe Discovered Service ID.r&   r'   r(   r)   )r   r+   r,   r-   r   r.   s       r   GetDiscoveredServiceResourceArgr   (  sK     77)		&	&	2	2mm*B$9&(	 
3 
 r   c                 |      fd}t        j                  dd |       t         j                  t                     S )zJConstructs and returns the Resource specification for Discovered Workload.c                  2    t        j                         S r<   r4   r=   s   r   !DiscoveredWorkloadAttributeConfigzLGetDiscoveredWorkloadResourceSpec.<locals>.DiscoveredWorkloadAttributeConfig?  r?   r   z-apphub.projects.locations.discoveredWorkloadsdiscoveredWorkload)r   discoveredWorkloadsIdr   r   r   )r/   r   r   s   `` r   !GetDiscoveredWorkloadResourceSpecr   :  s8    
 
		5(=?::)+
 r   c                     |xs d}t         j                  j                  dj                  |rdnd|       t	               ||      S )zAConstructs and returns the Discovered Workload Resource Argument.zThe Discovered Workload ID.r&   r'   r(   r)   )r   r+   r,   r-   r   r.   s       r    GetDiscoveredWorkloadResourceArgr   N  sK     88)		&	&	2	2mm*B$9')	 
3 
 r   c                       fd}t        j                  dd |       t         j                  t               t	        dd            S )zKConstructs and returns the Resource specification for Application Workload.c                  2    t        j                         S r<   r4   r=   s   r   "ApplicationWorkloadAttributeConfigzNGetApplicationWorkloadResourceSpec.<locals>.ApplicationWorkloadAttributeConfige  r?   r   z0apphub.projects.locations.applications.workloadsworkloadrG   Name for the applicationr=   )r   workloadsIdr   r   rI   r   r    r!   r5   rF   )r/   r   r   s   `` r   "GetApplicationWorkloadResourceSpecr   `  sF    
 
		846::)+7 .

 
r   c                     |xs d}t         j                  j                  dj                  |rdnd|       t	               ||      S )zBConstructs and returns the application workload Resource Argument.zThe Workload ID.r&   r'   r(   r)   )r   r+   r,   r-   r   r.   s       r   !GetApplicationWorkloadResourceArgr   x  sK     --)		&	&	2	2mm*B$9(*	 
3 
 r   c                       fd}t        j                  dd |       t         j                  t               t	        dd            S )zJConstructs and returns the Resource specification for Application Service.c                  2    t        j                         S r<   r4   r=   s   r   !ApplicationServiceAttributeConfigzLGetApplicationServiceResourceSpec.<locals>.ApplicationServiceAttributeConfig  r?   r   z/apphub.projects.locations.applications.servicesservicerG   r   r=   )r   
servicesIdr   r   rI   r   )r/   r   r   s   `` r   !GetApplicationServiceResourceSpecr     sF    
 
		724::)+7 .

 
r   c                     |xs d}t         j                  j                  dj                  |rdnd|       t	               ||      S )zAConstructs and returns the application service Resource Argument.zThe Service ID.r&   r'   r(   r)   )r   r+   r,   r-   r   r.   s       r    GetApplicationServiceResourceArgr     sK     ,,)		&	&	2	2mm*B$9')	 
3 
 r   c                 6    t               j                  |        y rN   )r   rO   rP   s    r   !AddDescribeDiscoveredServiceFlagsr     s    !#//7r   c                 6    t               j                  |        y rN   r[   rP   s    r   AddListDiscoveredServiceFlagsr     r]   r   c                 6    t               j                  |        y rN   r[   rP   s    r   AddFindUnregisteredServiceFlagsr     r]   r   c                 6    t               j                  |        y rN   r[   rP   s    r   AddFindDiscoveredServiceFlagsr     r]   r   c                 b    t               j                  |        | j                  ddddd       y )N--uriURIresource_uriTz:Google Cloud Platform resource URI to look up service for.metavarre   r*   rh   r9   rO   rj   rP   s    r   AddLookupDiscoveredServiceFlagsr     s5    &&v.G  r   c                 6    t               j                  |        y rN   )r   rO   rP   s    r   "AddDescribeDiscoveredWorkloadFlagsr         "$008r   c                 6    t               j                  |        y rN   r[   rP   s    r   AddListDiscoveredWorkloadFlagsr     r]   r   c                 6    t               j                  |        y rN   r[   rP   s    r    AddFindUnregisteredWorkloadFlagsr     r]   r   c                 6    t               j                  |        y rN   r[   rP   s    r   AddFindDiscoveredWorkloadFlagsr     r]   r   c                 b    t               j                  |        | j                  ddddd       y )Nr   r   r   Tz;Google Cloud Platform resource URI to look up workload for.r   r   rP   s    r    AddLookupDiscoveredWorkloadFlagsr     s5    &&v.H  r   c                 b    t               j                  |        | j                  ddddd       y r_   )rL   rO   rj   rP   s    r   AddDeleteApplicationFlagsr     s7    ))&1  	r   c                 |      fd}t        j                  dd |       t         j                  t                     S )z@Constructs and returns the Resource specification for Operation.c                  2    t        j                         S r<   r4   r=   s   r   OperationAttributeConfigz:GetOperationResourceSpec.<locals>.OperationAttributeConfig  r?   r   z$apphub.projects.locations.operations	operation)r   operationsIdr   r   r   )r/   r   r   s   `` r   GetOperationResourceSpecr     s8     
		,+-::)+
 r   c                     |xs d}t         j                  j                  dj                  |rdnd|       t	               ||      S )z7Constructs and returns the Operation Resource Argument.zThe Operation ID.r&   r'   r(   r)   )r   r+   r,   r-   r   r.   s       r   GetOperationResourceArgr   
  sK    
 ..)		&	&	2	2mm*B$9 	 
3 
 r   c                 6    t               j                  |        y rN   )r   rO   rP   s    r   AddDescribeOperationFlagsr     s    ''/r   c                 6    t               j                  |        y rN   r[   rP   s    r   AddListOperationsFlagsr     r]   r   c                 :    t        d      j                  |        y NFr0   rU   rP   s    r   AddListApplicationWorkloadFlagsr   !      u-99&Ar   c                 6    t               j                  |        y rN   )r   rO   rP   s    r   #AddDescribeApplicationWorkloadFlagsr   %  s    #%11&9r   c                 b    t               j                  |        | j                  ddddd       y r_   )r   rO   rj   rP   s    r   !AddDeleteApplicationWorkloadFlagsr   )  s7    #%11&9  	r   c                 ~   t        j                  t        j                  dt	               dddddd      t        j                  dt               d	d
d
ddd      gddgi      j                  |        t        | d|       | j                  dd       | j                  dd       | j                  ddddd       y)z6Adds flags required to create an application workload.WORKLOADzThe Workload resource.
--location--applicationr   rG   Tflag_name_overridesprefixesr*   z--discovered-workloadz!The discovered workload resource.r'   r   projectz--discovered-workload.locationzWORKLOAD.locationcommand_level_fallthroughsr   ro   rt   ru   rv   rw   Description of the Workloadr`   ra   rb   Frc   rd   N)	r   r+   r   ResourcePresentationSpecr   r   rO   ry   rj   rz   s     r   !AddCreateApplicationWorkloadFlagsr   7  s     

5
502&*!0# 
 
5
5%/11 !# : +-@,A"; @ KJm 	&-JKo,IJ  	r   c                     t               j                  |        t        | d|       | j                  dd       | j                  dd       | j                  dd	d
dd       y)z6Adds flags required to update an application workload.r   ro   rt   ru   rv   rw   r   r`   ra   rb   Frc   rd   N)r   rO   ry   rj   rz   s     r   !AddUpdateApplicationWorkloadFlagsr   o  ss    
 $%11&9Jm 	&-JKo,IJ  	r   c           	      z   | j                  ddddddddj                  |      	       | j                  d
dddddddj                  |      	       |t        j                  j                  k(  r| j                  dt        j                  t        t        t        ddg      ddj                  |             | j                  dt        j                  t        t        t        ddg      ddj                  |             | j                  dt        j                  t        t        t        ddg      ddj                  |             y|t        j                  j                  k(  r| j                  dt        j                  t        t        ddg      ddj                  |             | j                  dt        j                  t        t        ddg      ddj                  |             | j                  dt        j                  t        t        ddg      ddj                  |             yy)z*Adds flags required for attributes fields.z--criticality-typezUnspecified criticality typez1Mission critical service, application or workloadzHigh impactzMedium impactz
Low impact)TYPE_UNSPECIFIEDMISSION_CRITICALHIGHMEDIUMLOWzCriticality Type of the {})rs   rh   z--environment-typezUnspecified environment typezProduction environmentzStaging environmentzTest environmentzDevelopment environment)r   
PRODUCTIONSTAGINGTESTDEVELOPMENTzEnvironment Type of the {}z--business-owners)display-nameemailzchannel-urir   )specrequired_keysappendzBusiness owners of the {})typerf   rh   z--developer-ownerszDeveloper owners of the {}z--operator-ownerszOperator owners of the {})r   r   N)	rj   r-   r   ReleaseTrackALPHAr   ArgDictstrGA)rQ   r   rp   s      r   ry   ry     sr    	<A# (..}=   	<0*$2 (..}=  
 d''---
   #"
 #)
 (//>      #"
 #)
 )00?      #"
 #)
 (//>   )),,,
   # #)
 (//>      # #)
 )00?      # #)
 (//>  3 -r   c                 :    t        d      j                  |        y r   rU   rP   s    r   AddListApplicationServiceFlagsr     r   r   c                 6    t               j                  |        y rN   )r   rO   rP   s    r   "AddDescribeApplicationServiceFlagsr     r   r   c                 b    t               j                  |        | j                  ddddd       y r_   )r   rO   rj   rP   s    r    AddDeleteApplicationServiceFlagsr     s7    "$008  	r   c                 ~   t        j                  t        j                  dt	               dddddd      t        j                  dt               d	d
d
ddd      gddgi      j                  |        t        | d|       | j                  dd       | j                  dd       | j                  ddddd       y)z5Adds flags required to create an application service.SERVICEzThe Service resource.r   r   r   Tr   z--discovered-servicez The discovered service resource.r'   r   z--discovered-service.locationzSERVICE.locationr   r   ro   rt   ru   rv   rw   Description of the servicer`   ra   rb   Frc   rd   N)	r   r+   r   r   r   r   rO   ry   rj   rz   s     r    AddCreateApplicationServiceFlagsr  	  s     

5
5/1%*!0# 
 
5
5$.00 !# : *,>+?"; @ KI] 	&-JKo,HI  	r   c                     t               j                  |        t        | d|       | j                  dd       | j                  dd       | j                  dd	d
dd       y)z5Adds flags required to update an application service.r   ro   rt   ru   rv   rw   r  r`   ra   rb   Frc   rd   N)r   rO   ry   rj   rz   s     r    AddUpdateApplicationServiceFlagsr  A  ss    
 #$008I] 	&-JKo,HI  	r   c                 6    t               j                  |        y rN   rU   rP   s    r   AddGetIamPolicyFlagsr  Z  rW   r   c                 6    t               j                  |        y rN   rU   rP   s    r   AddAddIamPolicyBindingFlagsr
  ^  rW   r   c                 6    t               j                  |        y rN   rU   rP   s    r   AddRemoveIamPolicyBindingFlagsr  b  rW   r   c                 6    t               j                  |        y rN   rU   rP   s    r   AddSetIamPolicyFlagsr  f  rW   r   c                 :    t        d      j                  |        y )NTr   r[   rP   s    r   AddDescribeLocationFlagsr  j  s    D)55f=r   rN   )r   NFF)r   NFT)service_projectN)r  NTT)rG   N)rG   NTT)discovered_serviceN)r  NTT)discovered_workloadN)r  NTT)r   zName for the workload)r   NTT)r   zName for the service)r   NTT)r   N)r   NTT)M__doc__
__future__r   r   r   googlecloudsdk.callioper   r    googlecloudsdk.calliope.conceptsr   r	   !googlecloudsdk.command_lib.apphubr
   r   (googlecloudsdk.command_lib.util.conceptsr   r   r   r#   r1   r5   r7   r9   rB   rD   rF   rJ   rL   rR   rV   rY   r\   rk   r   r   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ry   r   r   r   r  r  r  r
  r  r  r  r"   r   r   <module>r     sF     &  ' / ( 5 1 C D G* 	$ 	$& KO	 GK525/ 261B1B1H1H < 261B1B1H1H * .2* "	& /3* #	& $;2 	& #92 	$8///9///& EI0/B: ++115r ++114 (t7H7H7N7NhVB9 ++115r ++1122222>r   