
                         l    d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlm	Z
 ddlZd Zd	 Zd
 Zd Zy)z6Utilities for "gcloud metastore federations" commands.    )absolute_import)division)unicode_literalsN)
exceptions)
validatorsc                 .    t        j                  | |      S )aE  Construct the backend names for create requests of Dataproc Metastore federations.

  Args:
    job_ref: A resource ref to the parsed Federation resource.
    args: The parsed args namespace from CLI.
    create_federation_req: Create federation request for the API call.

  Returns:
    Modified request for the API call.
  )	validatorParseBackendsIntoRequest)job_refargscreate_federation_reqs      <lib/googlecloudsdk/command_lib/metastore/federations/util.pyGenerateCreateBackendsr      s     
	+	+G5J	KK    c                     t        |j                               }d|v rd|vri |j                  _        d|v rt	        j
                  | |       t        |      |_        |S )a]  Construct the long name for backends and updateMask for update requests of Dataproc Metastore federations.

  Args:
    job_ref: A resource ref to the parsed Federation resource.
    args: The parsed args namespace from CLI.
    update_federation_req: Update federation request for the API call.

  Returns:
    Modified request for the API call.
  --remove-backends--update-backends)setGetSpecifiedArgNames
federationbackendMetastoresr	   r
   _GenerateUpdateMask
updateMask)r   r   update_federation_reqargs_sets       r   GenerateUpdateBackendsr   ,   sc     **,-(H$)<H)L9;$$6H$&&w0EF%8%>"	r   c                     | dz   |z   S )N. )prefixkeys     r   _AppendKeysToUpdateMaskr"   A   s    	#	r   c           
         ddd}t               }t        | j                               }|j                  |      D ]  }|j                  ||           |D ]	  }d|vrd|k(  rQ| j                  }|j                  d      }|D ]/  }|j                  t        d|j                  d      d                1 d|k(  r?| j                  }	|	j                  d      }
|
D ]  }|j                  t        d|              d|vsd	|k(  r,| j                  D ]  }|j                  t        d|              d
|k(  s| j                  D ]  }|j                  t        d|               dj                  t        |            S )zConstructs updateMask for federation patch requests.

  Args:
    args: The parsed args namespace from CLI.

  Returns:
    String containing update mask for patch request.
  backend_metastoreslabels)z--clear-backendsz--clear-labelsr   ,=r   r   z--update-labelsz--remove-labels)r   r   intersectionaddupdate_backendssplitr"   remove_backendsupdate_labelsremove_labelsjoinsorted)r   arg_name_to_fieldupdate_mask
input_argsarg_nameargupdate_backends_valuebackends_listbackendremove_backends_valuebackend_keys_listr!   s               r   r   r   E   s    / 
 +4,,./*))*;<hOO%h/0 = c;.		# $ 4 4-33C8$G
//%&:&-mmC&8&;=> % 
	# $ 4 4177<(G
//%&:GDF ) {"	c	!%%C
//1(C@
A &	c	!%%C
//1(C@
A &+ 0 
&%	&&r   )__doc__
__future__r   r   r   regooglecloudsdk.callioper   $googlecloudsdk.command_lib.metastorer   r	   sixr   r   r"   r   r   r   r   <module>rA      s4    = &  ' 	 . H 
L*,'r   