
    U                        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	  ej                  ej                  j                  ej                  j                  ej                  j                         G d dej                               Zy	)
z!Create IAP TCP Destination Group.    )absolute_import)division)unicode_literals)base)utilc                   .    e Zd ZdZddiZed        Zd Zy)Updatez.Update the IAP TCP Destination Group resource.EXAMPLESa            To update a DestGroup with name ``GROUP_NAME'', in region ``REGION''
          with ip ranges ``CIDR1'', ``CIDR2'' in the current project run:

          $ {command} DEST_GROUP_NAME --region=REGION --ip-range-list=CIDR1,CIDR2

          To update a DestGroup with name ``GROUP_NAME'', in region ``REGION''
          with fqdns ``FQDN1'', ``FQDN2'' in the current project run:

          $ {command} DEST_GROUP_NAME --region=REGION --fqdn-list=FQDN1,FQDN2

          To update a DestGroup with name ``GROUP_NAME'', in region ``REGION''
          with fqdns ``FQDN1'', ``FQDN2'' and ip ranges ``CIDR1'', ``CIDR2'' in
          the project  ``PROJECT_ID'' run:

          $ {command} DEST_GROUP_NAME --region=REGION --fqdn-list=FQDN1,FQDN2
          --ip-range-list=CIDR1,CIDR2 --project=PROJECT_ID

          To clear the fqdn list in a DestGroup with name ``GROUP_NAME'', in
          region ``REGION'' in the current project run:

          $ {command} DEST_GROUP_NAME --region=REGION --fqdn-list=""

          To clear the ip range list in a DestGroup with name ``GROUP_NAME'', in
          region ``REGION'' in the current project run:

          $ {command} DEST_GROUP_NAME --region=REGION --ip-range-list=""
          c                 X    t        j                  |        t        j                  |        y)zRegisters flags for this command.

    Args:
      parser: An argparse.ArgumentParser-like object. It is mocked out in order
        to capture some information, but behaves like an ArgumentParser.
    N)iap_utilAddDestGroupArgsAddDestGroupUpdateIpAndFqdnArgs)parsers    )lib/surface/iap/tcp/dest_groups/update.pyArgszUpdate.Args=   s      f%,,V4    c                 L   t        j                  | j                         |      }d}|j                  d      r|j                  d      rd}n3|j                  d      rd}n|j                  d      rd}nt	        d      |j                  |j                  |j                  |      S )a^  This is what gets called when the user runs this command.

    Args:
      args: an argparse namespace. All the arguments that were provided to this
        command invocation.

    Returns:
      The specified function with its description and configured filter
    Raises:
      ValueError: If both ip-range-list and fqdn-list are not provided
     ip_range_list	fqdn_list*cidrsfqdnsz:The flags --fqdn-list or --ip-range-list must be provided.)r   ParseIapDestGroupResourceReleaseTrackIsSpecified
ValueErrorr	   r   r   )selfargsiap_setting_refupdate_masks       r   Runz
Update.RunH   s     88T#O K(T-=-=k-Jk			/	*k			+	&k
FH H!!$"4"4dnn"-/ /r   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr   r"    r   r   r	   r	      s0     7-@ 5 5/r   r	   N)r&   
__future__r   r   r   googlecloudsdk.callioper   googlecloudsdk.command_lib.iapr   r   ReleaseTracksr   ALPHABETAGACommandr	   r)   r   r   <module>r2      ss    ( &  ' ( ; D%%++T->->-C-C%%((*G/T\\ G/*G/r   