
    |                     p   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mZ ddlmZ ddlmZ ej(                   ej*                  ej,                  j.                  ej,                  j0                         G d dej2                                      Zddde_        y)zCommand for updating groups.    )absolute_import)division)unicode_literals)networkconnectivity_api)networkconnectivity_util)waiter)base)flags)labels_util)repeated)log)	resourcesc                   2    e Zd ZdZed        Zd Zd Zd Zy)Updatez4Update a group.

  Update the details of a group.
  c                     t        j                  | d       t        j                  | d       t        j                  |        t	        j
                  |        t        j                  | ddddd       y )	Nz	to updatezNew description of the group.groupzauto-accept-projectszauto-accept projectszpThis controls the list of project ids or
        project numbers for which auto-accept is enabled for the group.F)additional_helpinclude_set)r
   AddGroupResourceArgAddDescriptionFlagAddAsyncFlagr   AddUpdateLabelsFlagsr   AddPrimitiveArgs)parsers    6lib/surface/network_connectivity/hubs/groups/update.pyArgszUpdate.Args)   sb    	fk2	V%DE	v$$V,K    c                    g }|j                   }||j                  d       d }t        j                  j	                  |      }|j                  |      |j                         rc|j                  |j                  j                  j                  j                        }|j                  r|j                  }|j                  d       fd}	t        j                  |d|	      }
d }|
-|j                  j                  |
      }|j                  d       |j                  j                  |||      }|j!                  |||      S )Ndescriptionlabelsc                  L     j                   g S  j                   j                  S N
autoAcceptautoAcceptProjectsoriginal_groups   r   !_get_current_auto_accept_projectszAUpdate.UpdateGroupBeta.<locals>._get_current_auto_accept_projectsL   &    		"	"	*	&&999r   auto_accept_projectsr%    auto_accept.auto_accept_projectsr   r    r$   )r   appendr   DiffFromUpdateArgsGetMayHaveUpdatesApplymessages)GoogleCloudNetworkconnectivityV1betaGroupLabelsValuer    needs_updater   ParsePrimitiveArgs.GoogleCloudNetworkconnectivityV1betaAutoAcceptUpdateGroupBetaselfclient	group_refargsupdate_maskr   r    labels_difflabels_updater(   r*   auto_acceptr   r'   s                @r   r:   zUpdate.UpdateGroupBeta9   sE   K""K'F""11$7KZZ	*N!!#!''
//
C
C
O
O


m 
	#	#%%8$:
 $66$&G K'
//
H
H!5 I  
 ;< OOEE; F E !!)UK@@r   c                    g }|j                   }||j                  d       d }t        j                  j	                  |      }|j                  |      |j                         rc|j                  |j                  j                  j                  j                        }|j                  r|j                  }|j                  d       fd}	t        j                  |d|	      }
d }|
-|j                  j                  |
      }|j                  d       |j                  j                  |||      }|j!                  |||      S )Nr   r    c                  L     j                   g S  j                   j                  S r"   r#   r&   s   r   r(   z?Update.UpdateGroupGA.<locals>._get_current_auto_accept_projectsv   r)   r   r*   r+   r,   r-   )r   r.   r   r/   r0   r1   r2   r3   r4   Groupr6   r    r7   r   r8   
AutoAcceptUpdateGroupr;   s                @r   UpdateGroupGAzUpdate.UpdateGroupGAd   s?   K""K'F""11$7KZZ	*N!!#!''
//


+
+^-B-Bm 
	#	#%%8$:
 $66$&G K'OO..1 / k ;< OO!!; " E i<<r   c                 8   t        j                  | j                               }|j                  j                  j                         }| j                         t        j                  j                  k(  r| j                  |||      }n| j                  |||      }t        j                  j                  dj                  |j                                      |j                  r't        j                   |j                         d       |S |j"                  r:t        j                  j                  dj                  |j$                               |S t&        j(                  j+                  |j$                  dt,        j.                  | j                                  }t1        j2                  |j4                  |j6                        }t1        j8                  ||dj                  |j$                              }t        j                   |j                         d       |S )	N)release_trackzUpdate request issued for: [{}]r   )kindz Check operation [{}] for status.z1networkconnectivity.projects.locations.operations)
collectionapi_versionz&Waiting for operation [{}] to complete)r   GroupsClientReleaseTrackCONCEPTSr   Parser	   BETAr:   rI   r   statusPrintformatNamedoneUpdatedResourceasync_namer   REGISTRYParseRelativeNamer   VERSION_MAPr   CloudOperationPollergroup_serviceoperation_serviceWaitFor)r<   r?   r=   r>   op_refop_resourcepollerress           r   Runz
Update.Run   s   $11'')F ##))+Id//444##FIt<f!!&)T:fJJ6==inn>NOP{{	)..*9m{{	jj9@@MNm$$66F,889J9J9LM 7 K
 ((f66F ..077DC
 	(w7Jr   N)	__name__
__module____qualname____doc__staticmethodr   r:   rI   rg    r   r   r   r   !   s-    
  )AV&=P"r   r   aj    To update the description of a group named ``my-group'', in the hub ``my-hub'', run:

    $ {command} my-group --hub=my-hub --description="new group description"

  To add the project ``my-project'' to the auto-accept list of a group named ``my-group'' in the hub ``my-hub'', run:

    $ {command} my-group --hub=my-hub --add-auto-accept-projects=my-project
  z   This command uses the networkconnectivity/v1 API. The full documentation
  for this API can be found at:
  https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest
  )EXAMPLESzAPI REFERENCEN)rk   
__future__r   r   r   +googlecloudsdk.api_lib.network_connectivityr   r   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper	   /googlecloudsdk.command_lib.network_connectivityr
   $googlecloudsdk.command_lib.util.argsr   r   googlecloudsdk.corer   r   DefaultUniverseOnlyReleaseTracksrP   rS   GACommandr   detailed_helprm   r   r   <module>r{      s     # &  ' O P . ( A < 9 # ) D%%**D,=,=,@,@AKT\\ K B K^ r   