def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client resource_arg = instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG default_scope = compute_scope.ScopeEnum.ZONE scope_lister = flags.GetDefaultScopeLister(client) igm_ref = resource_arg.ResolveAsResource(args, holder.resources, default_scope=default_scope, scope_lister=scope_lister) instances = instance_groups_utils.CreateInstanceReferences( holder.resources, client, igm_ref, args.instances) if igm_ref.Collection() == 'compute.instanceGroupManagers': field_name = 'instanceGroupManagersAbandonInstancesRequest' service = client.apitools_client.instanceGroupManagers requests = instance_groups_utils.SplitInstancesInRequest( client.messages. ComputeInstanceGroupManagersAbandonInstancesRequest( instanceGroupManager=igm_ref.Name(), instanceGroupManagersAbandonInstancesRequest=client. messages.InstanceGroupManagersAbandonInstancesRequest( instances=instances), project=igm_ref.project, zone=igm_ref.zone), field_name) elif igm_ref.Collection() == 'compute.regionInstanceGroupManagers': field_name = 'regionInstanceGroupManagersAbandonInstancesRequest' service = client.apitools_client.regionInstanceGroupManagers requests = instance_groups_utils.SplitInstancesInRequest( client.messages. ComputeRegionInstanceGroupManagersAbandonInstancesRequest( instanceGroupManager=igm_ref.Name(), regionInstanceGroupManagersAbandonInstancesRequest=client. messages. RegionInstanceGroupManagersAbandonInstancesRequest( instances=instances), project=igm_ref.project, region=igm_ref.region, ), field_name) else: raise ValueError('Unknown reference type {0}'.format( igm_ref.Collection())) requests = instance_groups_utils.GenerateRequestTuples( service, 'AbandonInstances', requests) return instance_groups_utils.MakeRequestsList(client, requests, field_name)
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client igm_ref = (instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG. ResolveAsResource)( args, holder.resources, default_scope=compute_scope.ScopeEnum.ZONE, scope_lister=flags.GetDefaultScopeLister(client)) update_instances_utils.ValidateIgmReference(igm_ref) minimal_action = update_instances_utils.ParseInstanceActionFlag( '--minimal-action', args.minimal_action or 'none', client.messages) most_disruptive_allowed_action = ( update_instances_utils.ParseInstanceActionFlag)( '--most-disruptive-allowed-action', args.most_disruptive_allowed_action or 'replace', client.messages) instances = instance_groups_utils.CreateInstanceReferences( holder.resources, client, igm_ref, args.instances) if igm_ref.Collection() == 'compute.instanceGroupManagers': field_name, service, requests = self._CreateZonalApplyUpdatesRequest( igm_ref, instances, minimal_action, most_disruptive_allowed_action, client) elif igm_ref.Collection() == 'compute.regionInstanceGroupManagers': field_name, service, requests = self._CreateRegionalApplyUpdatesRequest( igm_ref, instances, minimal_action, most_disruptive_allowed_action, client) requests = instance_groups_utils.GenerateRequestTuples( service, 'ApplyUpdatesToInstances', requests) operations = instance_groups_utils.MakeRequestsList( client, requests, field_name) return operations