
                         D    d Z ddlmZ ddlmZ ddlmZ d Zd Zd Zd Zy	)
z'Utilities for unit operations commands.    )absolute_import)division)unicode_literalsc                     |j                  d      s|S |j                  d      s|j                  d      r|S i |j                  _        |S )a  Request hook to handle use of --provision flag.

  Args:
    unused_ref: A resource ref to the parsed resource.
    args: Parsed args namespace containing the flags.
    request: The request message to be modified.

  Returns:
    The modified request message.
  	provisionprovision_releaseprovision_input_variables)IsSpecifiedunitOperationr   
unused_refargsrequests      >lib/googlecloudsdk/command_lib/saas_runtime/unit_operations.pyHandleEmptyProvisionr      sP     
		+	&N	)*d.>.>!/ N$&'!	.    c                     |j                  d      s|S |j                  d      s|j                  d      r|S i |j                  _        |S )a  Request hook to handle use of --upgrade flag.

  Args:
    unused_ref: A resource ref to the parsed resource.
    args: Parsed args namespace containing the flags.
    request: The request message to be modified.

  Returns:
    The modified request message.
  upgradeupgrade_releaseupgrade_input_variables)r
   r   r   r   s      r   HandleEmptyUpgrader   +   sP     
		)	$N	'(D,<,<- N"$'	.r   c                 N    |j                  d      s|S i |j                  _        |S )a	  Request hook to handle use of --deprovision flag.

  Args:
    unused_ref: A resource ref to the parsed resource.
    args: Parsed args namespace containing the flags.
    request: The request message to be modified.

  Returns:
    The modified request message.
  deprovision)r
   r   r   r   s      r   HandleEmptyDeprovisionr   @   s*     
		-	(N&('#	.r   c                 V   g d}g d}dg}t        fd|D              t        fd|D              t        fd|D              d}|j                         D ]M  \  }}|r	t        |j                  |      s t	        |j                  |      7t        |j                  |d       O |S )	aX  Request hook to handle updates to the operation type.

  The declarative framework does not fully support one_of fields in updates. For
  example, if the command 'saas-runtime unit-operations update --provision' is
  run, the request will have an empty upgrade field but that field should not be
  present at all. This hook will delete the unspecified one_of field from the
  request.

  Args:
    unused_ref: A resource ref to the parsed resource.
    args: Parsed args namespace containing the flags.
    request: The request message to be modified.

  Returns:
    The modified request message.
  )add_provision_input_variablesclear_provision_input_variablesclear_provision_releaser   r	   r    remove_provision_input_variables)add_upgrade_input_variablesclear_upgrade_input_variablesclear_upgrade_releaser   r   r   remove_upgrade_input_variablesr   c              3   @   K   | ]  }j                  |        y wNr
   .0flagr   s     r   	<genexpr>z1HandleOneOfOperationTypeUpdate.<locals>.<genexpr>w   s     J/$t''-/   c              3   @   K   | ]  }j                  |        y wr%   r&   r'   s     r   r*   z1HandleOneOfOperationTypeUpdate.<locals>.<genexpr>x   s     FT%%d+r+   c              3   @   K   | ]  }j                  |        y wr%   r&   r'   s     r   r*   z1HandleOneOfOperationTypeUpdate.<locals>.<genexpr>y   s     N<MD))$/<Mr+   )r   r   r   N)anyitemshasattrr   getattrsetattr)	r   r   r   provision_flagsupgrade_flagsdeprovision_flagsoperation_flags	operationis_specifieds	    `       r   HandleOneOfOperationTypeUpdater9   Q   s    "/- %o J/JJFFFN<MNN/ "1!6!6!8iG))95G))95Ag##Y5 "9 
.r   N)	__doc__
__future__r   r   r   r   r   r   r9    r   r   <module>r=      s'    . &  '**"2r   