- release_tracks: [ALPHA, BETA, GA] help_text: brief: | Create a new Memorystore for Redis Cluster instance. description: | Create a new Memorystore for Redis Cluster instance, and uses Private Service Connect service connectivity automation to automate connectivity for instances. This command can fail for the following reasons: * A cluster with the same name already exists. * The active account does not have permission to create clusters. * Some required APIs not enabled yet. * No connection policy defined yet on the network and in the region a cluster will be created. * Miss the steps for creating and configuring a service account (to grant permissions) in both host project and service project, if a shared VPC network is used. Refer to https://cloud.google.com/memorystore/docs/cluster/networking#prerequisites_required_before_creating_a_cluster for prerequisites. examples: | To create a cluster with name `my-redis-cluster` in region `us-central1` with 3 shards and with a discovery endpoint created on network "default", run: $ {command} my-redis-cluster --region=us-central1 --shard-count=3 \ --network=projects/NETWORK_PROJECT_ID/global/networks/default arguments: resource: spec: !REF googlecloudsdk.command_lib.redis.resources:cluster help_text: | Arguments and flags that specify the cluster you want to create. Your cluster ID must be 1 to 63 characters and use only lowercase letters, numbers, or hyphens. It must start with a lowercase letter and end with a lowercase letter or number. params: - arg_name: node-type api_field: cluster.nodeType help_text: Node Type of the redis cluster Node. choices: - enum_value: REDIS_HIGHMEM_MEDIUM arg_value: redis-highmem-medium - enum_value: REDIS_HIGHMEM_XLARGE arg_value: redis-highmem-xlarge - enum_value: REDIS_STANDARD_SMALL arg_value: redis-standard-small - enum_value: REDIS_SHARED_CORE_NANO arg_value: redis-shared-core-nano - arg_name: network api_field: cluster.pscConfigs.network help_text: | The network used to create your instance. It must use the format: projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. The network ID used here must match the network ID used by the service connection policy. Otherwise, the create operation fails - arg_name: auth-mode api_field: cluster.authorizationMode help_text: | Available authorization mode of a Redis cluster. choices: - enum_value: AUTH_MODE_DISABLED arg_value: disabled help_text: | Authorization is disabled for the cluster. - enum_value: AUTH_MODE_IAM_AUTH arg_value: iam-auth help_text: | IAM basic authorization is enabled for the cluster. - arg_name: replica-count api_field: cluster.replicaCount type: int help_text: | The replica count of each shard. - arg_name: shard-count api_field: cluster.shardCount type: int help_text: | The shard count of the cluster. - arg_name: transit-encryption-mode api_field: cluster.transitEncryptionMode help_text: | Transit encryption mode used for the Redis cluster. If not provided, encryption is disabled for the cluster. choices: - enum_value: TRANSIT_ENCRYPTION_MODE_DISABLED arg_value: disabled help_text: | In-transit encryption is disabled for the cluster. - enum_value: TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION arg_value: server-authentication help_text: | The cluster uses server managed encryption for in-transit encryption. - arg_name: deletion-protection api_field: cluster.deletionProtectionEnabled type: bool # To distinguish b/w unset and default value. Otherwise, the request is always sent with # deletionProtectionEnabled=false. default: null help_text: | Enable deletion protection for the Redis Cluster. Use `--deletion-protection`/`--no-deletion-protection` to enable/disable it. - arg_name: redis-config api_field: cluster.redisConfigs.additionalProperties metavar: KEY=VALUE help_text: | A list of Redis config KEY=VALUE pairs to set on the Redis Cluster according to http://redis.io/topics/config. Currently the supported Redis configs are: maxmemory-clients, maxmemory, maxmemory-policy, notify-keyspace-events, slowlog-log-slower-than, maxclients. type: arg_dict: flatten: true spec: - api_field: key - api_field: value - arg_name: zone-distribution-mode api_field: cluster.zoneDistributionConfig.mode help_text: | Determines how the cluster nodes are distributed across zones. choices: - enum_value: MULTI_ZONE arg_value: multi-zone help_text: | Allocate cluster nodes across multiple zones. - enum_value: SINGLE_ZONE arg_value: single-zone help_text: | Allocate cluster nodes in a single zone. - arg_name: zone api_field: cluster.zoneDistributionConfig.zone help_text: | The zone used to allocate the cluster nodes. Applicable only if the zone-distribution-mode is set to single-zone. - arg_name: persistence-mode api_field: cluster.persistenceConfig.mode help_text: | Operation mode for persistence. choices: - enum_value: DISABLED arg_value: disabled help_text: Persistence mode is disabled - enum_value: RDB arg_value: RDB help_text: RDB-based persistence - enum_value: AOF arg_value: AOF help_text: AOF-based persistence - arg_name: rdb-snapshot-period api_field: cluster.persistenceConfig.rdbConfig.rdbSnapshotPeriod help_text: | Attempted period between RDB snapshots. choices: - enum_value: ONE_HOUR arg_value: 1h help_text: 1 hour - enum_value: SIX_HOURS arg_value: 6h help_text: 6 hours - enum_value: TWELVE_HOURS arg_value: 12h help_text: 12 hours - enum_value: TWENTY_FOUR_HOURS arg_value: 24h help_text: (default) 24 hours - arg_name: rdb-snapshot-start-time api_field: cluster.persistenceConfig.rdbConfig.rdbSnapshotStartTime help_text: | Date and time of the first snapshot in the ISO 1801 format, and alignment time for future snapshots. For example, 2024-01-01T01:00:00Z. If not specified, the current time will be used. - arg_name: aof-append-fsync api_field: cluster.persistenceConfig.aofConfig.appendFsync help_text: | Fsync configuration. choices: - enum_value: NO # yamllint disable-line rule:truthy arg_value: no # yamllint disable-line rule:truthy help_text: | Redis will not explicitly call fsync. - enum_value: EVERYSEC arg_value: everysec help_text: | (default) Redis explicitly calls fsync every second. - enum_value: ALWAYS arg_value: always help_text: | Redis explicitly calls fsync for every write command. - arg_name: maintenance-window-day api_field: cluster.maintenancePolicy.weeklyMaintenanceWindow.day choices: - arg_value: monday enum_value: MONDAY - arg_value: tuesday enum_value: TUESDAY - arg_value: wednesday enum_value: WEDNESDAY - arg_value: thursday enum_value: THURSDAY - arg_value: friday enum_value: FRIDAY - arg_value: saturday enum_value: SATURDAY - arg_value: sunday enum_value: SUNDAY help_text: | Day of week when the window starts, e.g. `sunday`. - arg_name: maintenance-window-hour api_field: cluster.maintenancePolicy.weeklyMaintenanceWindow.startTime.hours help_text: | Hour of day (`0` to `23`) for the start of maintenance window, in UTC time zone. processor: googlecloudsdk.command_lib.redis.clusters_update_util:CheckMaintenanceWindowStartTimeField - arg_name: cross-cluster-replication-role api_field: cluster.crossClusterReplicationConfig.clusterRole help_text: | The role of the cluster in cross cluster replication. choices: - enum_value: SECONDARY arg_value: secondary help_text: | Create a secondary cluster. - arg_name: primary-cluster api_field: cluster.crossClusterReplicationConfig.primaryCluster.cluster help_text: | The primary cluster that the secondary cluster will replicate from. It must use the format: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID. It must refer to an existing cluster. Otherwise, the create operation fails. - arg_name: automated-backup-mode api_field: cluster.automatedBackupConfig.automatedBackupMode help_text: | Automated backup mode choices: - enum_value: DISABLED arg_value: disabled help_text: | (default) Automated backup is disabled. - enum_value: ENABLED arg_value: enabled help_text: | Automated backup is enabled. - arg_name: automated-backup-start-time api_field: cluster.automatedBackupConfig.fixedFrequencySchedule.startTime help_text: | One-hour window when you want automated-backup operations to start. Specify the time in the format HH:00 on a 24-hour cycle in UTC time. ALPHA: processor: googlecloudsdk.command_lib.redis.cluster_util:ParseTimeOfDayAlpha BETA: processor: googlecloudsdk.command_lib.redis.cluster_util:ParseTimeOfDayBeta GA: processor: googlecloudsdk.command_lib.redis.cluster_util:ParseTimeOfDayGa - arg_name: automated-backup-ttl api_field: cluster.automatedBackupConfig.retention type: googlecloudsdk.core.util.times:ParseDuration processor: googlecloudsdk.core.util.times:FormatDurationForJson help_text: | Time to live for automated backups. A backup will be deleted automatically after the TTL is reached. It ranges from 1 day to 365 days. For example, "10d" for 10 days. If not specified, the default value is 35 days. - group: mutex: true params: - arg_name: import-gcs-object-uris type: 'googlecloudsdk.calliope.arg_parsers:ArgList:' api_field: cluster.gcsSource.uris help_text: | URIs of Google Cloud Storage objects to import from. For example, `gs://bucket/folder/file1.rdb,gs://bucket/folder/file2.rdb`. - arg_name: import-managed-backup api_field: cluster.managedBackupSource.backup help_text: | Managed backup to import from. For example, `projects/PROJECT_ID/locations/REGION/backupCollections/BACKUP_COLLECTION_ID/backups/BACKUP_ID`. - arg_name: kms-key api_field: cluster.kmsKey help_text: | The resource name of the customer-managed encryption key (CMEK) to use for the cluster. It must use this format: projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY. The key must be in the same region as the cluster. Otherwise, the create operation fails. async: collection: redis.projects.locations.operations request: ALPHA: api_version: v1alpha1 BETA: api_version: v1beta1 GA: api_version: v1 collection: redis.projects.locations.clusters output: format: yaml