
    E!                         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 g dZd Zd Zd!dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$y )"z+Flags for gcloud active-directory commands.    )absolute_import)division)unicode_literals)
exceptions)arg_parsers)base)concepts)labels_util)concept_parsers)z
asia-east1zasia-northeast1zasia-south1zasia-southeast1zaustralia-southeast1zeurope-north1zeurope-west1zeurope-west2zeurope-west3zeurope-west4znorthamerica-northeast1zsouthamerica-east1zus-central1zus-east1zus-east4zus-west1zus-west2c                  b    t        j                  dddt         j                  t                     S )z Adds an operation resource spec.z6managedidentities.projects.locations.global.operations	operationF)resource_namedisable_auto_completers
projectsIdoperationsId)r	   ResourceSpec DEFAULT_PROJECT_ATTRIBUTE_CONFIGOperationAttributeConfig     8lib/googlecloudsdk/command_lib/active_directory/flags.pyGetOperationResourceSpecr   %   s-    			>#::+-
 r   c                  0    t        j                  dd      S )z#Adds an operation attribute config.r   z+Name of the Managed Microsoft AD operation.)name	help_text)r	    ResourceParameterAttributeConfigr   r   r   r   r   0   s    		2	2=
 r   c                     |rdnd}t         j                  j                  |t               dj	                  |      d      j                  |        y)aT  Adds an operation resource argument.

  NOTE: May be used only if it's the only resource arg in the command.

  Args:
    parser: the argparse parser for the command.
    verb: str, the verb to describe the resource, such as 'to update'.
    positional: bool, if True, means that the instance ID is a positional rather
      than a flag.
  NAMEz--operationzThe operation name {}.T)requiredN)r   ConceptParserForResourcer   formatAddToParser)parserverb
positionalr   s       r   AddOperationResourceArgr'   8   sL     =$++
 %%d+	 ,  ![(r   c                     |j                  d      rU|j                  j                  |j                  gz   }t	        t        |            }||j                  _        t        d|       |S )zAdds region to domain.
add_region	locations)IsSpecifieddomainr*   r)   sortedsetAddFieldToUpdateMask)unused_domain_refargspatch_requestlocss       r   AddRegionFlagr4   L   sY    	l#))T__,==D#d)D%)M"m4	r   c                 &   |j                  d      rz|j                  j                  D cg c]  }||j                  k7  r| }}t	        t        |            }|st        j                  d      ||j                  _        t        d|       |S c c}w )zRemoves region from domain.remove_regionzCannot remove all regionsr*   )	r+   r,   r*   r6   r-   r.   r   ActiveDirectoryErrorr/   )r0   r1   r2   locr3   s        r   RemoveRegionFlagr9   V   s    	o&$++555$$$$ 	5 	  #d)D++,GHH%)M"m4	s   Bc                     |j                  d      rT|j                  j                  |j                  z   }t	        t        |            }||j                  _        t        d|       |S )z#Adds authorized networks to domain.add_authorized_networksauthorized_networks)r+   r,   authorizedNetworksr;   r-   r.   r/   )r0   r1   r2   anss       r   AddAuthorizedNetworksFlagr?   e   sZ    	/0



1
1D4P4P
PC
S
C.1M+.>	r   c                     |j                  d      rb|j                  j                  D cg c]  }||j                  vr| }}t	        t        |            }||j                  _        t        d|       |S c c}w )z(Removes authorized networks from domain.remove_authorized_networksr<   )r+   r,   r=   rA   r-   r.   r/   )r0   r1   r2   anr>   s        r   RemoveAuthorizedNetworksFlagrC   o   s    	23"))<<<rT444 	<   S
C.1M+.>	s   A6c                 v    |j                  d      r'|j                  |j                  _        t	        d|       |S )z)Updates audit logs config for the domain.enable_audit_logsaudit_logs_enabled)r+   rE   r,   auditLogsEnabledr/   )r0   r1   r2   s      r   UpdateAuditLogsEnabledrH   |   s6    	)*,0,B,BM)-}=	r   c                 v    |j                   }|r#|j                  |       dk(  r|dz   | z   |_         |S | |_         |S )z"Adds name of field to update mask.r   ,)
updateMaskcount)fieldr2   update_masks      r   r/   r/      sM    ((+1$!,s!2U!:m 
  %M	r   c                  @    t               t               t               gz   S )z!Adds all update domain arguments.)DomainUpdateLabelsFlagsRegionUpdateFlagsAuthNetUpdateFlagsr   r   r   AdditionalDomainUpdateArgumentsrS      s    	 	"&7&9;M;O%P	PPr   c                      t        j                  d      } | j                  t                      | j                  t	                      | S )z#Defines flags for updating regions.Tmutex)r   ArgumentGroupAddArgumentDomainAddRegionFlagDomainRemoveRegionFlag)region_groups    r   rQ   rQ      s<    ##$/,.01134	r   c                      t        j                  d      } | j                  t                      | j                  t	                      | S )z/Defines flags for updating authorized networks.TrU   )r   rW   rX   DomainAddAuthorizedNetworksFlag"DomainRemoveAuthorizedNetworksFlag)auth_net_groups    r   rR   rR      s<    %%D1.<>??AB	r   c                      t        j                  d      } | j                  t        j                                | j                  t        j
                  d             t        j                  d      | gS z"Defines flags for updating labels.TrU    r   rW   rX   r
   GetClearLabelsFlagGetRemoveLabelsFlagGetUpdateLabelsFlagremove_groups    r   rP   rP      X    ##$/,;99;<;::2>?

)
)"
-|	<<r   c                      t        j                  d      } | j                  t        j                                | j                  t        j
                  d             t        j                  d      | gS ra   rc   rg   s    r   PeeringUpdateLabelsFlagsrk      ri   r   c                      t        j                  d      } | j                  t        j                                | j                  t        j
                  d             t        j                  d      | gS ra   rc   rg   s    r   BackupUpdateLabelsFlagsrm      ri   r   c                 B     t        j                  t              |       S )zDefines valid GCP regions.)choices)r   ArgListVALID_REGIONS)values    r   RegionsTypers      s    	3		]	3E	::r   c                  t    t        j                  ddj                  dj                  t                          S )z#Defines a flag for adding a region.z--add-regionz      An additional region to provision this domain in.
      If domain is already provisioned in region, nothing will be done in that
      region. Supported regions are: {}.
      , helpr   Argumentr"   joinrq   r   r   r   rY   rY      s0    	
 &=)
*
, ,r   c                  t    t        j                  ddj                  dj                  t                          S )z%Defines a flag for removing a region.z--remove-regionz      A region to de-provision this domain from.
      If domain is already not provisioned in a region, nothing will be done in
      that region. Domains must be left provisioned in at least one region.
      Supported regions are: {}.
      ru   rv   rx   r   r   r   rZ   rZ      s0    	

 &=)
*
, ,r   c                  v    t        j                  ddt        j                         t        j                  d      S )z0Defines a flag for adding an authorized network.z--add-authorized-networksAUTH_NET1, AUTH_NET2, ...z       A list of URLs of additional networks to peer this domain to in the form
       projects/{project}/global/networks/{network}.
       Networks must belong to the project.
      metavartypeactionrw   r   ry   r   rp   UpdateActionr   r   r   r]   r]      s3    	!) %%
	
 	r   c                  v    t        j                  ddt        j                         t        j                  d      S )z2Defines a flag for removing an authorized network.z--remove-authorized-networksr}   z       A list of URLs of additional networks to unpeer this domain from in the
       form projects/{project}/global/networks/{network}.
       Networks must belong to the project.
      r~   r   r   r   r   r^   r^      s3    	$) %%
	
 	r   N)T)%__doc__
__future__r   r   r   'googlecloudsdk.api_lib.active_directoryr   googlecloudsdk.callioper   r    googlecloudsdk.calliope.conceptsr	   $googlecloudsdk.command_lib.util.argsr
   (googlecloudsdk.command_lib.util.conceptsr   rq   r   r   r'   r4   r9   r?   rC   rH   r/   rS   rQ   rR   rP   rk   rm   rs   rY   rZ   r]   r^   r   r   r   <module>r      s    2 &  ' > / ( 5 < D)(
Q
===;
,	,r   