
                         8   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  ej                  ej                  j                   ej                  j"                  ej                  j$                         G d	 d
ej&                               Zy)z2Command for adding resource policies to instances.    )absolute_import)division)unicode_literals)base_classes)base)flags)utilc                   &    e Zd ZdZed        Zd Zy)InstancesAddResourcePoliciesa  Add resource policies to Compute Engine VM instances.

    *{command}* adds resource policies to Compute Engine
    virtual instances. These policies define time windows in which
    live migrations take place.

    ## EXAMPLES

    To add resource policy ``pol1'' to instance ``inst1'', run this:

      $ {command} inst1 --resource-policies=pol1

    For information on how to create resource policies, see:

      $ gcloud compute resource-policies create --help

  c                 x    t         j                  j                  | d       t        j                  | ddd       y )Nzadd resource policies to)operation_typezadded toinstanceT)required)instance_flagsINSTANCE_ARGAddArgumentr   AddResourcePoliciesArgs)parsers    6lib/surface/compute/instances/add_resource_policies.pyArgsz!InstancesAddResourcePolicies.Args1   s5    ++9 , ;	!!&*j4P    c                    t        j                  | j                               }|j                  }|j                  }t
        j                  j                  ||j                  t        j                  |            }g }|j                  D ]X  }t        j                  |j                  ||j                  |j                        }|j                  |j!                                Z |j#                  |j%                         |j                  |j                  |j'                  |            }	|j)                  |j*                  j,                  d|	fg      S )N)scope_lister)projectzone)resourcePolicies)r   r   r   #instancesAddResourcePoliciesRequestAddResourcePolicies)r   ComputeApiHolderReleaseTrackclientmessagesr   r   ResolveAsResource	resourcesGetInstanceZoneScopeListerresource_policiesr	   ParseResourcePolicyWithZoner   r   appendSelfLink*ComputeInstancesAddResourcePoliciesRequestName#InstancesAddResourcePoliciesRequestMakeRequestsapitools_client	instances)
selfargsholderr!   r"   instance_refr&   policyresource_policy_refadd_requests
             r   Runz InstancesAddResourcePolicies.Run7   sG   **4+<+<+>?F]]FH!..@@#>>vF A HL
 (( <<



&&  	"
 2;;=> ) EE""$$$44. 	5 	0 F 1K !7!7!A!A!6!E  F G Gr   N)__name__
__module____qualname____doc__staticmethodr   r7    r   r   r   r      s#    $ Q Q
Gr   r   N)r;   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   ,googlecloudsdk.command_lib.compute.instancesr   r   4googlecloudsdk.command_lib.compute.resource_policiesr	   ReleaseTracksr    ALPHABETAGAUpdateCommandr   r=   r   r   <module>rH      s~    9 &  ' 7 ( P F E D%%++T->->-C-C%%((*5G4#5#5 5G*5Gr   