
                             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Zd Zd Ze	j$                  d        Zd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd ZddZy
)z.Flags for commands that deal with the CRM API.    )absolute_import)division)unicode_literals)
exceptions)arg_parsers)base)concepts)concept_parsersNc                 P    t        j                  dddj                  |             S )Nid	FOLDER_IDID for the folder {0}metavarhelpr   Argumentformatuse_descriptions    8lib/googlecloudsdk/command_lib/resource_manager/flags.pyFolderIdArgr      s'    	
"))/:
     c                 P    t        j                  dddj                  |             S )Nr   CAPABILITY_IDzID for the capability {0}r   r   r   s    r   CapabilityIdArgr   &   s'    	
&--o>
 r   c                 R    t        j                  ddd dj                  |             S )N--folderr   r   )r   defaultr   r   r   s    r   FolderIdFlagr    .   s*    	"))/:	
 r   c                 P    t        j                  dddj                  |             S )N--organizationORGANIZATION_IDzID for the organization {0}r   r   r   s    r   OrganizationIdFlagr$   8   s'    	(//@
 r   c                 P    t        j                  dddj                  |             S )Nr   OPERATION_IDzID for the operation {0}r   r   r   s    r   OperationIdArgr'   @   s'    	
%,,_=
 r   c                  "    t         j                  S )N)r   
ASYNC_FLAG r   r   OperationAsyncFlagr+   H   s    	r   c                 P    t        j                  dddj                  |             S )Nr   LIEN_IDzID for the lien {0}r   r   r   s    r   	LienIdArgr.   L   s'    	
 ''8
 r   c                 l    t        d      j                  |        t        d      j                  |        y )Nzto use as a parent)r    AddToParserr$   )parsers    r   AddParentFlagsToParserr2   T   s*    #$008)*66v>r   c                     t        | dd       rdj                  | j                        S | j                  rdj                  | j                        S y )Nfolderzfolders/{0}zorganizations/{0})getattrr   r4   organization)argss    r   GetParentFromFlagsr8   Y   sF    T8T",,%%d&7&788r   c                    t        | dd      r"| j                  rt        j                  dd      |rXd| v r-| j                  s!| j                  st        j                  d      d| vr"| j                  st        j                  d      yyy)al  Assert that there are no conflicts with parent flags.

  Ensure that both the organization flag and folder flag are not set at the
  same time. This is a little tricky since the folder flag doesn't exist for
  all commands which accept a parent specification.

  Args:
    args: The argument object
    parent_required: True to assert that a parent flag was set
  r4   Nr   r"   zBNeither --folder nor --organization provided, exactly one requiredz--organization is required)r5   r6   calliope_exceptionsConflictingArgumentsExceptionr4   r   ArgumentError)r7   parent_requireds     r   CheckParentFlagsr>   b   s     T8T"t'8'8

;
;$  4D4E4E$$
N  
	d&7&7$$%ABB '8	 r   c                  0    t        j                  dd      S )Nr4   zThe folder id)name	help_text)r	    ResourceParameterAttributeConfigr*   r   r   FolderAttributeConfigrC   z   s    		2	2
 r   c                  D    t        j                  dddt                     S )Nzcloudresourcemanager.foldersr4   v2)resource_nameapi_version	foldersId)r	   ResourceSpecrC   r*   r   r   GetFolderResourceSpecrJ      s$    			$%'	
 r   c                 v    t         j                  j                  dt               dj	                  |       d      S )N	folder_idz ID for the folder you want to {}T)required)r
   ConceptParserForResourcerJ   r   )verbs    r   GetFolderResourceArgrQ      s:    		&	&	2	2(//5	 
3 
 r   c            	          g d} t        j                  ddt        j                         t        j                  dj                  |             S )z(Makes the base.Argument for --tags flag.)z%List of tags KEY=VALUE pairs to bind.zEach item must be expressed asz4`<tag-key-namespaced-name>=<tag-value-short-name>`.
z?Example: `123/environment=production,123/costCenter=marketing`
z)Note: Currently this field is in Preview.z--tagsz	KEY=VALUE
)r   typeactionr   )r   r   r   ArgDictUpdateActionjoin)
help_partss    r   TagsFlagrZ      sC    * 
 %%99Z 
 r   c           
          t        | |      }|sy |t        t        j                  |            D cg c]  \  }}|j	                  ||       c}}      S c c}}w )zMakes the tags message object.N)keyvalue)additionalProperties)r5   sortedsix	iteritemsAdditionalProperty)r7   tags_messagetags_arg_nametagsr\   r]   s         r   GetTagsFromFlagsrf      se    	}	%$		 #3==#677jc5 
)
)c
)
?7
 s   A
)T)re   ) __doc__
__future__r   r   r   'googlecloudsdk.api_lib.resource_managerr   googlecloudsdk.callioper   r   r:    googlecloudsdk.calliope.conceptsr	   (googlecloudsdk.command_lib.util.conceptsr
   r`   r   r   Hiddenr    r$   r'   r+   r.   r2   r8   r>   rC   rJ   rQ   rZ   rf   r*   r   r   <module>rn      s    5 &  ' > / ( E 5 D 
  ?
C0$r   