{
	"kind": "Template",
	"apiVersion": "template.openshift.io/v1",
	"metadata": {
		"name": "mysql-persistent",
		"creationTimestamp": null,
		"annotations": {
			"description": "MySQL database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/8.0/root/usr/share/container-scripts/mysql/README.md.\n\nNOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template.",
			"iconClass": "icon-mysql-database",
			"openshift.io/display-name": "MySQL",
			"openshift.io/documentation-url": "https://docs.okd.io/latest/using_images/db_images/mysql.html",
			"openshift.io/long-description": "This template provides a standalone MySQL server with a database created.  The database is stored on persistent storage.  The database name, username, and password are chosen via parameters when provisioning this service.",
			"openshift.io/provider-display-name": "Red Hat, Inc.",
			"openshift.io/support-url": "https://access.redhat.com",
			"tags": "database,mysql"
		}
	},
	"message": "The following service(s) have been created in your project: ${DATABASE_SERVICE_NAME}.\n\n       Username: ${MYSQL_USER}\n       Password: ${MYSQL_PASSWORD}\n  Database Name: ${MYSQL_DATABASE}\n Connection URL: mysql://${DATABASE_SERVICE_NAME}:3306/\n\nFor more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/8.0/root/usr/share/container-scripts/mysql/README.md.",
	"objects": [
		{
			"apiVersion": "v1",
			"kind": "Secret",
			"metadata": {
				"annotations": {
					"template.openshift.io/expose-database_name": "{.data['database-name']}",
					"template.openshift.io/expose-password": "{.data['database-password']}",
					"template.openshift.io/expose-root_password": "{.data['database-root-password']}",
					"template.openshift.io/expose-username": "{.data['database-user']}"
				},
				"name": "${DATABASE_SERVICE_NAME}"
			},
			"stringData": {
				"database-name": "${MYSQL_DATABASE}",
				"database-password": "${MYSQL_PASSWORD}",
				"database-root-password": "${MYSQL_ROOT_PASSWORD}",
				"database-user": "${MYSQL_USER}"
			}
		},
		{
			"apiVersion": "v1",
			"kind": "Service",
			"metadata": {
				"annotations": {
					"template.openshift.io/expose-uri": "mysql://{.spec.clusterIP}:{.spec.ports[?(.name==\"mysql\")].port}"
				},
				"name": "${DATABASE_SERVICE_NAME}"
			},
			"spec": {
				"ports": [
					{
						"name": "mysql",
						"port": 3306
					}
				],
				"selector": {
					"name": "${DATABASE_SERVICE_NAME}"
				}
			}
		},
		{
			"apiVersion": "v1",
			"kind": "PersistentVolumeClaim",
			"metadata": {
				"name": "${DATABASE_SERVICE_NAME}"
			},
			"spec": {
				"accessModes": [
					"ReadWriteOnce"
				],
				"resources": {
					"requests": {
						"storage": "${VOLUME_CAPACITY}"
					}
				}
			}
		},
		{
			"apiVersion": "apps.openshift.io/v1",
			"kind": "DeploymentConfig",
			"metadata": {
				"annotations": {
					"template.alpha.openshift.io/wait-for-ready": "true"
				},
				"name": "${DATABASE_SERVICE_NAME}"
			},
			"spec": {
				"replicas": 1,
				"selector": {
					"name": "${DATABASE_SERVICE_NAME}"
				},
				"strategy": {
					"type": "Recreate"
				},
				"template": {
					"metadata": {
						"labels": {
							"name": "${DATABASE_SERVICE_NAME}"
						}
					},
					"spec": {
						"containers": [
							{
								"env": [
									{
										"name": "MYSQL_USER",
										"valueFrom": {
											"secretKeyRef": {
												"key": "database-user",
												"name": "${DATABASE_SERVICE_NAME}"
											}
										}
									},
									{
										"name": "MYSQL_PASSWORD",
										"valueFrom": {
											"secretKeyRef": {
												"key": "database-password",
												"name": "${DATABASE_SERVICE_NAME}"
											}
										}
									},
									{
										"name": "MYSQL_ROOT_PASSWORD",
										"valueFrom": {
											"secretKeyRef": {
												"key": "database-root-password",
												"name": "${DATABASE_SERVICE_NAME}"
											}
										}
									},
									{
										"name": "MYSQL_DATABASE",
										"valueFrom": {
											"secretKeyRef": {
												"key": "database-name",
												"name": "${DATABASE_SERVICE_NAME}"
											}
										}
									}
								],
								"image": " ",
								"imagePullPolicy": "IfNotPresent",
								"livenessProbe": {
									"exec": {
										"command": [
											"/bin/sh",
											"-i",
											"-c",
											"MYSQL_PWD=\"$MYSQL_PASSWORD\" mysqladmin -u $MYSQL_USER ping"
										]
									},
									"initialDelaySeconds": 30,
									"timeoutSeconds": 1
								},
								"name": "mysql",
								"ports": [
									{
										"containerPort": 3306
									}
								],
								"readinessProbe": {
									"exec": {
										"command": [
											"/bin/sh",
											"-i",
											"-c",
											"MYSQL_PWD=\"$MYSQL_PASSWORD\" mysqladmin -u $MYSQL_USER ping"
										]
									},
									"initialDelaySeconds": 5,
									"timeoutSeconds": 1
								},
								"resources": {
									"limits": {
										"memory": "${MEMORY_LIMIT}"
									}
								},
								"volumeMounts": [
									{
										"mountPath": "/var/lib/mysql/data",
										"name": "${DATABASE_SERVICE_NAME}-data"
									}
								]
							}
						],
						"volumes": [
							{
								"name": "${DATABASE_SERVICE_NAME}-data",
								"persistentVolumeClaim": {
									"claimName": "${DATABASE_SERVICE_NAME}"
								}
							}
						]
					}
				},
				"triggers": [
					{
						"imageChangeParams": {
							"automatic": true,
							"containerNames": [
								"mysql"
							],
							"from": {
								"kind": "ImageStreamTag",
								"name": "mysql:${MYSQL_VERSION}",
								"namespace": "${NAMESPACE}"
							}
						},
						"type": "ImageChange"
					},
					{
						"type": "ConfigChange"
					}
				]
			}
		}
	],
	"parameters": [
		{
			"name": "MEMORY_LIMIT",
			"displayName": "Memory Limit",
			"description": "Maximum amount of memory the container can use.",
			"value": "512Mi",
			"required": true
		},
		{
			"name": "NAMESPACE",
			"displayName": "Namespace",
			"description": "The OpenShift Namespace where the ImageStream resides.",
			"value": "openshift"
		},
		{
			"name": "DATABASE_SERVICE_NAME",
			"displayName": "Database Service Name",
			"description": "The name of the OpenShift Service exposed for the database.",
			"value": "mysql",
			"required": true
		},
		{
			"name": "MYSQL_USER",
			"displayName": "MySQL Connection Username",
			"description": "Username for MySQL user that will be used for accessing the database.",
			"generate": "expression",
			"from": "user[A-Z0-9]{3}",
			"required": true
		},
		{
			"name": "MYSQL_PASSWORD",
			"displayName": "MySQL Connection Password",
			"description": "Password for the MySQL connection user.",
			"generate": "expression",
			"from": "[a-zA-Z0-9]{16}",
			"required": true
		},
		{
			"name": "MYSQL_ROOT_PASSWORD",
			"displayName": "MySQL root user Password",
			"description": "Password for the MySQL root user.",
			"generate": "expression",
			"from": "[a-zA-Z0-9]{16}",
			"required": true
		},
		{
			"name": "MYSQL_DATABASE",
			"displayName": "MySQL Database Name",
			"description": "Name of the MySQL database accessed.",
			"value": "sampledb",
			"required": true
		},
		{
			"name": "VOLUME_CAPACITY",
			"displayName": "Volume Capacity",
			"description": "Volume space available for data, e.g. 512Mi, 2Gi.",
			"value": "1Gi",
			"required": true
		},
		{
			"name": "MYSQL_VERSION",
			"displayName": "Version of MySQL Image",
			"description": "Version of MySQL image to be used (8.0-el7, 8.0-el8, or latest).",
			"value": "8.0-el8",
			"required": true
		}
	],
	"labels": {
		"template": "mysql-persistent-template"
	}
}