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 _CreateZonalApplyUpdatesRequest(self, igm_ref, instances, minimal_action, most_disruptive_allowed_action, client): field_name = 'instanceGroupManagersApplyUpdatesRequest' service = client.apitools_client.instanceGroupManagers minimal_action = instance_groups_managed_flags.MapInstanceActionEnumValue( minimal_action, client.messages, client.messages.InstanceGroupManagersApplyUpdatesRequest\ .MinimalActionValueValuesEnum) most_disruptive_allowed_action = ( instance_groups_managed_flags.MapInstanceActionEnumValue)( most_disruptive_allowed_action, client.messages, client.messages.InstanceGroupManagersApplyUpdatesRequest \ .MostDisruptiveAllowedActionValueValuesEnum) requests = instance_groups_utils.SplitInstancesInRequest( client.messages\ .ComputeInstanceGroupManagersApplyUpdatesToInstancesRequest( instanceGroupManager=igm_ref.Name(), instanceGroupManagersApplyUpdatesRequest= client.messages.InstanceGroupManagersApplyUpdatesRequest( instances=instances, minimalAction=minimal_action, mostDisruptiveAllowedAction=most_disruptive_allowed_action), project=igm_ref.project, zone=igm_ref.zone), field_name) return field_name, service, requests
def testSplitInstancesInRequest(self): requests = instance_groups_utils.SplitInstancesInRequest( self.messages.ComputeInstanceGroupManagersAbandonInstancesRequest( instanceGroupManager='name', instanceGroupManagersAbandonInstancesRequest=self.messages. InstanceGroupManagersAbandonInstancesRequest( instances=['a', 'b', 'c', 'd', 'e']), project='project', zone='zone'), 'instanceGroupManagersAbandonInstancesRequest', 2) self.assertEqual( requests[0], self.messages.ComputeInstanceGroupManagersAbandonInstancesRequest( instanceGroupManager='name', instanceGroupManagersAbandonInstancesRequest=self.messages. InstanceGroupManagersAbandonInstancesRequest( instances=['a', 'b'], ), project='project', zone='zone', )) self.assertEqual( requests[1], self.messages.ComputeInstanceGroupManagersAbandonInstancesRequest( instanceGroupManager='name', instanceGroupManagersAbandonInstancesRequest=self.messages. InstanceGroupManagersAbandonInstancesRequest( instances=['c', 'd'], ), project='project', zone='zone', )) self.assertEqual( requests[2], self.messages.ComputeInstanceGroupManagersAbandonInstancesRequest( instanceGroupManager='name', instanceGroupManagersAbandonInstancesRequest=self.messages. InstanceGroupManagersAbandonInstancesRequest(instances=['e' ], ), project='project', zone='zone', ))