def _WarnForDestructiveSizeUpdate(instance_ref, instance):
    """Adds prompt that warns about a destructive size update."""
    messages = util.GetMessagesForResource(instance_ref)
    message = 'Change to instance size requested. '
    if instance.tier == messages.Instance.TierValueValuesEnum.BASIC:
        message += (
            'Scaling a Basic Tier instance will result in a full cache '
            'flush, and the instance will be unavailable during the '
            'operation. ')
    elif instance.tier == messages.Instance.TierValueValuesEnum.STANDARD_HA:
        message += (
            'Scaling a Standard Tier instance may result in the loss of '
            'unreplicated data, and the instance will be briefly '
            'unavailable during failover. ')
    else:
        # To future proof this against new instance types, add a default message.
        message += (
            'Scaling a redis instance may result in data loss, and the '
            'instance will be briefly unavailable during scaling. ')
    message += (
        'For more information please take a look at '
        'https://cloud.google.com/memorystore/docs/redis/scaling-instances')

    console_io.PromptContinue(
        message=message,
        prompt_string='Do you want to proceed with update?',
        cancel_on_no=True)
def AddNewRedisConfigs(instance_ref, redis_configs_dict, patch_request):
    messages = util.GetMessagesForResource(instance_ref)
    new_redis_configs = util.PackageInstanceRedisConfig(
        redis_configs_dict, messages)
    patch_request.instance.redisConfigs = new_redis_configs
    patch_request = AddFieldToUpdateMask('redis_configs', patch_request)
    return patch_request
def GetExistingInstance(instance_ref, unused_args, patch_request):
  """Fetch existing redis instance to update and add it to Patch request."""
  client = util.GetClientForResource(instance_ref)
  messages = util.GetMessagesForResource(instance_ref)
  get_request = messages.RedisProjectsLocationsInstancesGetRequest(
      name=instance_ref.RelativeName())
  patch_request.instance = client.projects_locations_instances.Get(get_request)
  return patch_request
def UpdateLabels(instance_ref, args, patch_request):
  labels_diff = labels_util.Diff.FromUpdateArgs(args)
  if labels_diff.MayHaveUpdates():
    patch_request = AddFieldToUpdateMask('labels', patch_request)
    messages = util.GetMessagesForResource(instance_ref)
    new_labels = labels_diff.Apply(messages.Instance.LabelsValue,
                                   patch_request.instance.labels).GetOrNone()
    if new_labels:
      patch_request.instance.labels = new_labels
  return patch_request
Beispiel #5
0
def AddLabels(instance_ref, args, create_request):
    messages = util.GetMessagesForResource(instance_ref)
    create_request.instance.labels = labels_util.ParseCreateArgs(
        args, messages.Instance.LabelsValue)
    return create_request
Beispiel #6
0
def AddRedisConfigs(instance_ref, args, create_request):
    if args.redis_config:
        messages = util.GetMessagesForResource(instance_ref)
        create_request.instance.redisConfigs = util.PackageInstanceRedisConfig(
            args.redis_config, messages)
    return create_request