
                             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 Z G d de
j$                        Zy)z;Command for setting target pools of managed instance group.    )absolute_import)division)unicode_literals)base_classes)utils)arg_parsers)base)flags)scopec                 X    | j                  ddt        j                  d      dd       y)	z	Add args.z--target-poolsTr   )
min_lengthTARGET_POOLzCompute Engine Target Pools to add the instances to. Target Pools must be specified by name or by URL. Example: --target-pools=target-pool-1,target-pool-2. To clear the set of Target Pools pass in an empty list. Example: --target-pools="")requiredtypemetavarhelpN)add_argumentr   ArgListparsers    ?lib/surface/compute/instance_groups/managed/set_target_pools.py_AddArgsr      s3    !,M  O    c                   2    e Zd ZdZed        Zd Zd Zd Zy)SetTargetPoolszSet target pools of managed instance group.

    *{command}* sets the target pools for an existing managed instance group.
  Instances that are part of the managed instance group will be added to the
  target pool automatically.
  c                 Z    t        |        t        j                  j                  |        y )Nr   )r   instance_groups_flags%MULTISCOPE_INSTANCE_GROUP_MANAGER_ARGAddArgumentr   s    r   ArgszSetTargetPools.Args3   s!    F??KKr   c           	         t        j                  | j                               }|j                  }t        j
                  }t        j                  j                  }t        j                  |      }|j                  ||j                  ||      }| j                  |      }g }	|j                  D ]<  }
|	j                  |j                  j!                  |
|j"                  |dd             > |	D cg c]  }|j%                          }}|r| j'                  |||      S |j(                  j+                  dg      5  | j'                  |||      cd d d        S c c}w # 1 sw Y   y xY w)N)default_scopescope_lister)projectregionzcompute.targetPools)params
collectiontargetPools)r   ComputeApiHolderReleaseTrackclientr   r   compute_scope	ScopeEnumZONEr
   GetDefaultScopeListerResolveAsResource	resources_GetRegionNametarget_poolsappendParser$   SelfLink_MakePatchRequestapitools_clientIncludeFields)selfargsholderr+   resource_argr"   r#   igm_refr%   	pool_refstarget_poolpool_refpoolss                r   RunzSetTargetPools.Run9   sU   **4+<+<+>?F]]F(NNL!++00M..v6L,,#!	 - #G
   )FI((



 
 $__" / ! 01 ) 2;;XX E;##FGU;; !!//@%%fgu= A@ < A@s   0E:EE%c                     |j                         dk(  rt        j                  |j                        S |j                         dk(  r|j                  S t        dj                  |j                                     )Ncompute.instanceGroupManagersz#compute.regionInstanceGroupManagerszUnknown reference type {0})
Collectionr   ZoneNameToRegionNamezoner%   
ValueErrorformat)r:   r>   s     r   r2   zSetTargetPools._GetRegionNameZ   sl    >>''55				!F	F^^3::



  ! !r   c                 R   |j                   }|j                  |      }|j                         dk(  r#|j                  j                  }|j
                  }n"|j                  j                  }|j                  } |di |j                         }||_	        |j                  |d|fg      S )N)r(   rE   Patch )messagesInstanceGroupManagerrF   r8   instanceGroupManagers(ComputeInstanceGroupManagersPatchRequestregionInstanceGroupManagers.ComputeRegionInstanceGroupManagersPatchRequestAsDictinstanceGroupManagerResourceMakeRequests)	r:   r+   r>   rB   rN   igm_resourceservicerequest_typerequests	            r   r7   z SetTargetPools._MakePatchRequestc   s    H00U0CL>>&&<<gFFl&&BBgLLl.W^^-.G+7G('7 ;<==r   N)	__name__
__module____qualname____doc__staticmethodr    rC   r2   r7   rM   r   r   r   r   +   s+      
>B!>r   r   N)r^   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   r   r,   2googlecloudsdk.command_lib.compute.instance_groupsr   r   Commandr   rM   r   r   <module>rf      sA    B &  ' 7 0 / ( 4 E ]
OG>T\\ G>r   