Skip to content

Instantly share code, notes, and snippets.

@mszostok
Created November 14, 2018 07:11
Show Gist options
  • Save mszostok/e66377eefa9e253753f4e4a0e4da3909 to your computer and use it in GitHub Desktop.
Save mszostok/e66377eefa9e253753f4e4a0e4da3909 to your computer and use it in GitHub Desktop.
{
"$ref": "#/definitions/DatabaseInstance",
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"AclEntry": {
"description": "An entry for an Access Control list.",
"properties": {
"expirationTime": {
"description": "The time when this access control entry expires in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.",
"format": "date-time",
"type": "string"
},
"name": {
"description": "An optional label to identify this entry.",
"type": "string"
},
"value": {
"description": "The whitelisted value for the access control list.",
"type": "string"
}
},
"type": "object"
},
"BackupConfiguration": {
"description": "Database instance backup configuration.",
"properties": {
"binaryLogEnabled": {
"description": "Whether binary log is enabled. If backup configuration is disabled, binary log must be disabled as well.",
"type": "boolean"
},
"enabled": {
"description": "Whether this configuration is enabled.",
"type": "boolean"
},
"startTime": {
"description": "Start time for the daily backup configuration in UTC timezone in the 24 hour format - HH:MM.",
"type": "string"
}
},
"type": "object"
},
"DatabaseFlags": {
"description": "MySQL flags for Cloud SQL instances.",
"properties": {
"name": {
"description": "The name of the flag. These flags are passed at instance startup, so include both MySQL server options and MySQL system variables. Flags should be specified with underscores, not hyphens. For more information, see Configuring MySQL Flags in the Google Cloud SQL documentation, as well as the official MySQL documentation for server options and system variables.",
"type": "string"
},
"value": {
"description": "The value of the flag. Booleans should be set to on for true and off for false. This field must be omitted if the flag doesn't take a value.",
"type": "string"
}
},
"type": "object"
},
"DatabaseInstance": {
"description": "Input parameters to create an instance - a MySQL instance.",
"properties": {
"databaseVersion": {
"default": "MYSQL_5_7",
"description": "The database engine type and version. Choice is permanent.",
"enum": [
"MYSQL_5_7",
"MYSQL_5_6"
],
"title": "Database version",
"type": "string"
},
"failoverReplica": {
"description": "The name and status of the failover replica. This property is applicable only to Second Generation instances.",
"properties": {
"name": {
"description": "The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn't include the project ID. This property is applicable only to Second Generation instances.",
"type": "string"
}
},
"type": "object"
},
"instanceId": {
"description": "CloudSQL instance ID. Use lowercase letters, numbers, and hyphens. Start with a letter. Choice is permanent.",
"maxLength": 78,
"minLength": 1,
"title": "Instance ID",
"type": "string"
},
"masterInstanceName": {
"description": "The name of the instance which will act as master in the replication setup.",
"type": "string"
},
"onPremisesConfiguration": {
"$ref": "#/definitions/OnPremisesConfiguration",
"description": "Configuration specific to on-premises instances."
},
"region": {
"default": "us-central1",
"description": "Determines where your CloudSQL data is located. For better performance, keep your data close to the services that need it. Choice is permanet.",
"enum": [
"asia-east1",
"asia-northeast1",
"asia-south1",
"australia-southeast1",
"europe-west1",
"europe-west2",
"europe-west3",
"europe-west4",
"northamerica-northeast1",
"southamerica-east1",
"us-central1",
"us-east1",
"us-east4",
"us-west1"
],
"title": "Location",
"type": "string"
},
"replicaConfiguration": {
"$ref": "#/definitions/ReplicaConfiguration",
"description": "Configuration specific to read-replicas replicating from on-premises masters."
},
"settings": {
"$ref": "#/definitions/Settings",
"annotations": {
"required": [
"sql.instances.insert",
"sql.instances.update"
]
},
"description": "The user settings."
}
},
"required": [
"instanceId",
"settings"
],
"type": "object"
},
"IpConfiguration": {
"description": "IP Management configuration.",
"properties": {
"authorizedNetworks": {
"description": "The list of external networks that are allowed to connect to the instance using the IP. In CIDR notation, also known as 'slash' notation (e.g. 192.168.100.0/24).",
"items": {
"$ref": "#/definitions/AclEntry"
},
"type": "array"
},
"ipv4Enabled": {
"description": "Whether the instance should be assigned an IP address or not.",
"type": "boolean"
},
"requireSsl": {
"description": "Whether SSL connections over IP should be enforced or not.",
"type": "boolean"
}
},
"type": "object"
},
"LocationPreference": {
"description": "Preferred location. This specifies where a Cloud SQL instance should preferably be located, either in a specific Compute Engine zone, or co-located with an App Engine application. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified.",
"properties": {
"followGaeApplication": {
"description": "The AppEngine application to follow, it must be in the same region as the Cloud SQL instance.",
"type": "string"
},
"zone": {
"description": "The preferred Compute Engine zone (e.g. us-centra1-a, us-central1-b, etc.).",
"type": "string"
}
},
"type": "object"
},
"MaintenanceWindow": {
"description": "Maintenance window. This specifies when a v2 Cloud SQL instance should preferably be restarted for system maintenance puruposes.",
"properties": {
"day": {
"description": "day of week (1-7), starting on Monday.",
"type": "integer"
},
"hour": {
"description": "hour of day - 0 to 23.",
"type": "integer"
},
"updateTrack": {
"description": "Maintenance timing setting: canary (Earlier) or stable (Later).\n Learn more.",
"type": "string"
}
},
"type": "object"
},
"MySqlReplicaConfiguration": {
"description": "Read-replica configuration specific to MySQL databases.",
"properties": {
"caCertificate": {
"description": "PEM representation of the trusted CA's x509 certificate.",
"type": "string"
},
"clientCertificate": {
"description": "PEM representation of the slave's x509 certificate.",
"type": "string"
},
"clientKey": {
"description": "PEM representation of the slave's private key. The corresponsing public key is encoded in the client's certificate.",
"type": "string"
},
"connectRetryInterval": {
"description": "Seconds to wait between connect retries. MySQL's default is 60 seconds.",
"type": "integer"
},
"dumpFilePath": {
"description": "Path to a SQL dump file in Google Cloud Storage from which the slave instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps should have the binlog co-ordinates from which replication should begin. This can be accomplished by setting --master-data to 1 when using mysqldump.",
"type": "string"
},
"masterHeartbeatPeriod": {
"description": "Interval in milliseconds between replication heartbeats.",
"type": "string"
},
"password": {
"description": "The password for the replication connection.",
"type": "string"
},
"sslCipher": {
"description": "A list of permissible ciphers to use for SSL encryption.",
"type": "string"
},
"username": {
"description": "The username for the replication connection.",
"type": "string"
},
"verifyServerCertificate": {
"description": "Whether or not to check the master's Common Name value in the certificate that it sends during the SSL handshake.",
"type": "boolean"
}
},
"type": "object"
},
"OnPremisesConfiguration": {
"description": "On-premises instance configuration.",
"properties": {
"hostPort": {
"description": "The host and port of the on-premises instance in host:port format",
"type": "string"
}
},
"type": "object"
},
"ReplicaConfiguration": {
"description": "Read-replica configuration for connecting to the master.",
"properties": {
"failoverTarget": {
"description": "Specifies if the replica is the failover target. If the field is set to true the replica will be designated as a failover replica. In case the master instance fails, the replica instance will be promoted as the new master instance.\nOnly one replica can be specified as failover target, and the replica has to be in different zone with the master instance.",
"type": "boolean"
},
"mysqlReplicaConfiguration": {
"$ref": "#/definitions/MySqlReplicaConfiguration",
"description": "MySQL specific configuration when replicating from a MySQL on-premises master. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named master.info in the data directory."
}
},
"type": "object"
},
"Settings": {
"description": "Database instance settings.",
"properties": {
"activationPolicy": {
"description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values:\nALWAYS: The instance is on, and remains so even in the absence of connection requests.\nNEVER: The instance is off; it is not activated, even if a connection request arrives.\nON_DEMAND: First Generation instances only. The instance responds to incoming requests, and turns itself off when not in use. Instances with PER_USE pricing turn off after 15 minutes of inactivity. Instances with PER_PACKAGE pricing turn off after 12 hours of inactivity.",
"enum": [
"ALWAYS",
"NEVER",
"ON_DEMAND"
],
"type": "string"
},
"authorizedGaeApplications": {
"description": "The App Engine app IDs that can access this instance. This property is only applicable to First Generation instances.",
"items": {
"type": "string"
},
"type": "array"
},
"backupConfiguration": {
"$ref": "#/definitions/BackupConfiguration",
"description": "The daily backup configuration for the instance."
},
"crashSafeReplicationEnabled": {
"description": "Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property is only applicable to First Generation instances.",
"type": "boolean"
},
"dataDiskSizeGb": {
"description": "The size of data disk, in GB. The data disk size minimum is 10GB. Applies only to Second Generation instances.",
"type": "string"
},
"dataDiskType": {
"default": "PD_SSD",
"description": "The type of data disk. Only supported for Second Generation instances. The default type is PD_SSD. Applies only to Second Generation instances.",
"enum": [
"PD_SSD",
"PD_HDD"
],
"type": "string"
},
"databaseFlags": {
"description": "The database flags passed to the instance at startup.",
"items": {
"$ref": "#/definitions/DatabaseFlags"
},
"type": "array"
},
"databaseReplicationEnabled": {
"description": "Configuration specific to read replica instances. Indicates whether replication is enabled or not.",
"type": "boolean"
},
"ipConfiguration": {
"$ref": "#/definitions/IpConfiguration",
"description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances."
},
"locationPreference": {
"$ref": "#/definitions/LocationPreference",
"description": "The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location is only applicable to First Generation instances."
},
"maintenanceWindow": {
"$ref": "#/definitions/MaintenanceWindow",
"description": "The maintenance window for this instance. This specifies when the instance may be restarted for maintenance purposes. Applies only to Second Generation instances."
},
"pricingPlan": {
"default": "PER_USE",
"description": "The pricing plan for this instance. This can be either PER_USE or PACKAGE. Only PER_USE is supported for Second Generation instances.",
"enum": [
"PER_USE",
"PACKAGE"
],
"type": "string"
},
"replicationType": {
"description": "The type of replication this instance uses. This can be either ASYNCHRONOUS or SYNCHRONOUS. This property is only applicable to First Generation instances.",
"enum": [
"ASYNCHRONOUS",
"SYNCHRONOUS"
],
"type": "string"
},
"settingsVersion": {
"annotations": {
"required": [
"sql.instances.update"
]
},
"description": "The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.",
"type": "string"
},
"storageAutoResize": {
"default": true,
"description": "Configuration to increase storage size automatically. The default value is true. Applies only to Second Generation instances.",
"type": "boolean"
},
"storageAutoResizeLimit": {
"default": "0",
"description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit. Applies only to Second Generation instances.",
"type": "string"
},
"tier": {
"annotations": {
"required": [
"sql.instances.insert",
"sql.instances.update"
]
},
"default": "db-n1-standard-1",
"description": "For better performance, choose a CloudSQL machine type with enough memory to hold your largest table.",
"enum": [
"db-f1-micro",
"db-g1-small",
"db-n1-standard-1",
"db-n1-standard-2",
"db-n1-standard-4",
"db-n1-standard-8",
"db-n1-standard-16",
"db-n1-standard-32",
"db-n1-standard-64",
"db-n1-highmem-2",
"db-n1-highmem-4",
"db-n1-highmem-8",
"db-n1-highmem-16",
"db-n1-highmem-32",
"db-n1-highmem-64"
],
"title": "Machine type",
"type": "string"
},
"userLabels": {
"additionalProperties": {
"description": "An individual label entry, composed of a key and a value.",
"type": "string"
},
"description": "To organize your project, add arbitrary labels as key/value pairs to CloudSQL. Use labels to indicate different environments, services, teams, and so on.",
"title": "Labels",
"type": "object",
"x-googleProperty": {
"type": "LABELS"
}
}
},
"required": [
"tier"
],
"type": "object"
}
},
"form": [
"instanceId",
"region",
{
"key": "databaseVersion",
"titleMap": [
{
"name": "MySQL 5.7",
"value": "MYSQL_5_7"
},
{
"name": "MySQL 5.6",
"value": "MYSQL_5_6"
}
]
},
"settings.tier",
"settings.userLabels"
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment