def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client resources = holder.resources igm_ref = ( instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG. ResolveAsResource)( args, resources, scope_lister=compute_flags.GetDefaultScopeLister(client), ) instance_ref = self._CreateInstanceReference( holder=holder, igm_ref=igm_ref, instance_name=args.instance) configs_getter = (instance_configs_getter. InstanceConfigsGetterWithSimpleCache)(client) configs_getter.check_if_instance_config_exists( igm_ref=igm_ref, instance_ref=instance_ref, should_exist=True) per_instance_config = configs_getter.get_instance_config( igm_ref=igm_ref, instance_ref=instance_ref) self._ValidateStatefulFlagsForInstanceConfigs(args, per_instance_config) per_instance_config_message = self._CombinePerInstanceConfigMessage( holder, per_instance_config, instance_ref, args) operation_ref = instance_configs_messages.CallPerInstanceConfigUpdate( holder=holder, igm_ref=igm_ref, per_instance_config_message=per_instance_config_message) if igm_ref.Collection() == 'compute.instanceGroupManagers': service = holder.client.apitools_client.instanceGroupManagers elif igm_ref.Collection() == 'compute.regionInstanceGroupManagers': service = holder.client.apitools_client.regionInstanceGroupManagers else: raise ValueError('Unknown reference type {0}'.format( igm_ref.Collection())) operation_poller = poller.Poller(service) update_result = waiter.WaitFor(operation_poller, operation_ref, 'Updating instance config.') if args.update_instance: apply_operation_ref = ( instance_configs_messages.CallApplyUpdatesToInstances)( holder=holder, igm_ref=igm_ref, instances=[six.text_type(instance_ref)], minimal_action=args.instance_update_minimal_action) return waiter.WaitFor(operation_poller, apply_operation_ref, 'Applying updates to instances.') return update_result
def Run(self, args): instance_groups_flags.ValidateMigStatefulFlagsForInstanceConfigs( args, for_update=True) holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client resources = holder.resources igm_ref = ( instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG. ResolveAsResource)( args, resources, scope_lister=compute_flags.GetDefaultScopeLister(client), ) instance_ref = self._CreateInstanceReference( holder=holder, igm_ref=igm_ref, instance_name=args.instance) configs_getter = (instance_configs_getter. InstanceConfigsGetterWithSimpleCache)(client) configs_getter.check_if_instance_config_exists( igm_ref=igm_ref, instance_ref=instance_ref, should_exist=True) per_instance_config_message = self._CombinePerInstanceConfigMessage( holder, configs_getter, igm_ref, instance_ref, args.update_stateful_disk, args.remove_stateful_disks, args.update_stateful_metadata, args.remove_stateful_metadata) operation_ref = instance_configs_messages.CallPerInstanceConfigUpdate( holder=holder, igm_ref=igm_ref, per_instance_config_message=per_instance_config_message) if igm_ref.Collection() == 'compute.instanceGroupManagers': service = holder.client.apitools_client.instanceGroupManagers else: service = holder.client.apitools_client.regionInstanceGroupManagers operation_poller = poller.Poller(service) update_result = waiter.WaitFor(operation_poller, operation_ref, 'Updating instance config.') if args.force_instance_update: apply_operation_ref = ( instance_configs_messages.CallApplyUpdatesToInstances)( holder=holder, igm_ref=igm_ref, instances=[str(instance_ref)]) return waiter.WaitFor(operation_poller, apply_operation_ref, 'Applying updates to instances.') return update_result