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
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
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