diff --git a/e2e-tests/functions b/e2e-tests/functions index ab9666814..0910b6aaa 100755 --- a/e2e-tests/functions +++ b/e2e-tests/functions @@ -1897,31 +1897,33 @@ list_files_on_storage() { verify_all_backups_deletion() { for backup in $(kubectl get ps-backup -n "$NAMESPACE" -o jsonpath='{.items[*].metadata.name}'); do echo "Checking backup: $backup" - - output=$( + eval "$( kubectl get ps-backup "$backup" -n "$NAMESPACE" -o json \ - | yq -r ' - .status.storage as $storage | - [ - $storage.type, - ($storage[.type].bucket // $storage[.type].container // ""), - ($storage[.type].credentialsSecret // ""), - ($storage[.type].endpointUrl // ""), - ($storage[.type].region // ""), - (.status.destination // "") - ] | @tsv + | jq -r ' + .status.storage.type as $t | + (if $t then .status.storage[$t] else {} end) as $s | + "storage_type=\($t // "")", + "bucket=\($s.bucket // $s.container // "")", + "secret_name=\($s.credentialsSecret // "")", + "endpoint=\($s.endpointUrl // "")", + "region=\($s.region // "")", + "destination=\(.status.destination // "")" ' - ) + )" - read -r storage_type bucket secret_name endpoint region destination <<<"$output" + kubectl delete ps-backup "$backup" -n "$NAMESPACE" - prefix="${destination#*://*/}" + local prefix="${destination#*://}" + prefix="${prefix#*/}" if [[ -z $destination ]]; then echo "Backup $backup is missing destination" - break + continue fi - kubectl delete ps-backup "$backup" -n "$NAMESPACE" + if [[ $storage_type == "azure" ]]; then + echo "Skipping backup verification, to be implemented on K8SPS-695" + continue + fi local removed=false for i in {1..5}; do @@ -1930,7 +1932,6 @@ verify_all_backups_deletion() { removed=true break fi - echo "Waiting for backup removal ($i/5): $backup" sleep 5 done diff --git a/e2e-tests/tests/demand-backup-cloud/00-assert.yaml b/e2e-tests/tests/demand-backup-cloud/00-assert.yaml index fecdb222e..5f346cb51 100644 --- a/e2e-tests/tests/demand-backup-cloud/00-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/00-assert.yaml @@ -2,8 +2,25 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert timeout: 150 --- -apiVersion: v1 -kind: Secret +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: - name: minio-secret -type: Opaque + name: perconaservermysqls.ps.percona.com +spec: + group: ps.percona.com + names: + kind: PerconaServerMySQL + listKind: PerconaServerMySQLList + plural: perconaservermysqls + shortNames: + - ps + singular: perconaservermysql + scope: Namespaced +--- +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +metadata: + name: check-operator-deploy-status +timeout: 120 +commands: + - script: kubectl assert exist-enhanced deployment percona-server-mysql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1 diff --git a/e2e-tests/tests/demand-backup-cloud/01-deploy-operator.yaml b/e2e-tests/tests/demand-backup-cloud/00-deploy-operator.yaml similarity index 100% rename from e2e-tests/tests/demand-backup-cloud/01-deploy-operator.yaml rename to e2e-tests/tests/demand-backup-cloud/00-deploy-operator.yaml diff --git a/e2e-tests/tests/demand-backup-cloud/00-minio-secret.yaml b/e2e-tests/tests/demand-backup-cloud/00-minio-secret.yaml deleted file mode 100644 index 3c797f054..000000000 --- a/e2e-tests/tests/demand-backup-cloud/00-minio-secret.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: minio-secret -stringData: - AWS_ACCESS_KEY_ID: some-access$\n"-key - AWS_SECRET_ACCESS_KEY: some-$\n"secret-key diff --git a/e2e-tests/tests/demand-backup-cloud/01-assert.yaml b/e2e-tests/tests/demand-backup-cloud/01-assert.yaml index 5f346cb51..4009d090a 100644 --- a/e2e-tests/tests/demand-backup-cloud/01-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/01-assert.yaml @@ -1,26 +1,60 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 150 +timeout: 420 --- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +kind: StatefulSet +apiVersion: apps/v1 metadata: - name: perconaservermysqls.ps.percona.com -spec: - group: ps.percona.com - names: - kind: PerconaServerMySQL - listKind: PerconaServerMySQLList - plural: perconaservermysqls - shortNames: - - ps - singular: perconaservermysql - scope: Namespaced + name: demand-backup-cloud-mysql +status: + observedGeneration: 1 + replicas: 3 + readyReplicas: 3 + currentReplicas: 3 + updatedReplicas: 3 + collisionCount: 0 --- -apiVersion: kuttl.dev/v1beta1 -kind: TestAssert +kind: StatefulSet +apiVersion: apps/v1 +metadata: + name: demand-backup-cloud-orc +status: + observedGeneration: 1 + replicas: 3 + readyReplicas: 3 + currentReplicas: 3 + updatedReplicas: 3 + collisionCount: 0 +--- +kind: StatefulSet +apiVersion: apps/v1 +metadata: + name: demand-backup-cloud-haproxy +status: + observedGeneration: 1 + replicas: 3 + readyReplicas: 3 + currentReplicas: 3 + updatedReplicas: 3 + collisionCount: 0 +--- +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL metadata: - name: check-operator-deploy-status -timeout: 120 -commands: - - script: kubectl assert exist-enhanced deployment percona-server-mysql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1 + name: demand-backup-cloud + finalizers: + - percona.com/delete-mysql-pods-in-order +status: + haproxy: + ready: 3 + size: 3 + state: ready + mysql: + ready: 3 + size: 3 + state: ready + orchestrator: + ready: 3 + size: 3 + state: ready + state: ready diff --git a/e2e-tests/tests/demand-backup-cloud/01-create-cluster.yaml b/e2e-tests/tests/demand-backup-cloud/01-create-cluster.yaml new file mode 100644 index 000000000..abe1d5a61 --- /dev/null +++ b/e2e-tests/tests/demand-backup-cloud/01-create-cluster.yaml @@ -0,0 +1,11 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +timeout: 10 +commands: + - script: |- + set -o errexit + set -o xtrace + + source ../../functions + + get_cr | kubectl -n "${NAMESPACE}" apply -f - diff --git a/e2e-tests/tests/demand-backup-cloud/02-assert.yaml b/e2e-tests/tests/demand-backup-cloud/02-assert.yaml deleted file mode 100644 index 4009d090a..000000000 --- a/e2e-tests/tests/demand-backup-cloud/02-assert.yaml +++ /dev/null @@ -1,60 +0,0 @@ -apiVersion: kuttl.dev/v1beta1 -kind: TestAssert -timeout: 420 ---- -kind: StatefulSet -apiVersion: apps/v1 -metadata: - name: demand-backup-cloud-mysql -status: - observedGeneration: 1 - replicas: 3 - readyReplicas: 3 - currentReplicas: 3 - updatedReplicas: 3 - collisionCount: 0 ---- -kind: StatefulSet -apiVersion: apps/v1 -metadata: - name: demand-backup-cloud-orc -status: - observedGeneration: 1 - replicas: 3 - readyReplicas: 3 - currentReplicas: 3 - updatedReplicas: 3 - collisionCount: 0 ---- -kind: StatefulSet -apiVersion: apps/v1 -metadata: - name: demand-backup-cloud-haproxy -status: - observedGeneration: 1 - replicas: 3 - readyReplicas: 3 - currentReplicas: 3 - updatedReplicas: 3 - collisionCount: 0 ---- -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQL -metadata: - name: demand-backup-cloud - finalizers: - - percona.com/delete-mysql-pods-in-order -status: - haproxy: - ready: 3 - size: 3 - state: ready - mysql: - ready: 3 - size: 3 - state: ready - orchestrator: - ready: 3 - size: 3 - state: ready - state: ready diff --git a/e2e-tests/tests/demand-backup-cloud/02-create-cluster.yaml b/e2e-tests/tests/demand-backup-cloud/02-create-cluster.yaml deleted file mode 100644 index 9d2cab974..000000000 --- a/e2e-tests/tests/demand-backup-cloud/02-create-cluster.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: kuttl.dev/v1beta1 -kind: TestStep -timeout: 10 -commands: - - script: |- - set -o errexit - set -o xtrace - - source ../../functions - - get_cr \ - | yq eval '.spec.mysql.clusterType="async"' - \ - | yq eval ".spec.mysql.size=3" - \ - | yq eval ".spec.proxy.haproxy.enabled=true" - \ - | yq eval ".spec.proxy.haproxy.size=3" - \ - | yq eval ".spec.orchestrator.enabled=true" - \ - | yq eval ".spec.orchestrator.size=3" - \ - | yq eval '.spec.backup.storages.aws-s3.type="s3"' - \ - | yq eval ".spec.backup.storages.aws-s3.verifyTLS=true" - \ - | yq eval '.spec.backup.storages.aws-s3.s3.bucket="operator-testing"' - \ - | yq eval '.spec.backup.storages.aws-s3.s3.credentialsSecret="aws-s3-secret"' - \ - | yq eval '.spec.backup.storages.aws-s3.s3.region="us-east-1"' - \ - | yq eval '.spec.backup.storages.aws-s3.s3.prefix="ps"' - \ - | yq eval '.spec.backup.storages.gcp-cs.type="gcs"' - \ - | yq eval ".spec.backup.storages.gcp-cs.verifyTLS=true" - \ - | yq eval '.spec.backup.storages.gcp-cs.gcs.bucket="operator-testing"' - \ - | yq eval '.spec.backup.storages.gcp-cs.gcs.credentialsSecret="gcp-cs-secret"' - \ - | yq eval '.spec.backup.storages.gcp-cs.gcs.endpointUrl="https://storage.googleapis.com"' - \ - | yq eval '.spec.backup.storages.gcp-cs.gcs.prefix="ps"' - \ - | yq eval '.spec.backup.storages.azure-blob.type="azure"' - \ - | yq eval ".spec.backup.storages.azure-blob.verifyTLS=true" - \ - | yq eval '.spec.backup.storages.azure-blob.azure.container="operator-testing"' - \ - | yq eval '.spec.backup.storages.azure-blob.azure.credentialsSecret="azure-secret"' - \ - | yq eval '.spec.backup.storages.azure-blob.azure.prefix="ps"' - \ - | kubectl -n "${NAMESPACE}" apply -f - diff --git a/e2e-tests/tests/demand-backup-cloud/03-write-data.yaml b/e2e-tests/tests/demand-backup-cloud/02-write-data.yaml similarity index 100% rename from e2e-tests/tests/demand-backup-cloud/03-write-data.yaml rename to e2e-tests/tests/demand-backup-cloud/02-write-data.yaml diff --git a/e2e-tests/tests/demand-backup-cloud/04-move-primary-before-backup.yaml b/e2e-tests/tests/demand-backup-cloud/03-move-primary-before-backup.yaml similarity index 100% rename from e2e-tests/tests/demand-backup-cloud/04-move-primary-before-backup.yaml rename to e2e-tests/tests/demand-backup-cloud/03-move-primary-before-backup.yaml diff --git a/e2e-tests/tests/demand-backup-cloud/04-assert.yaml b/e2e-tests/tests/demand-backup-cloud/04-assert.yaml new file mode 100644 index 000000000..7b61621c7 --- /dev/null +++ b/e2e-tests/tests/demand-backup-cloud/04-assert.yaml @@ -0,0 +1,12 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +timeout: 300 +--- +kind: PerconaServerMySQLBackup +apiVersion: ps.percona.com/v1 +metadata: + name: demand-backup-cloud-1 + finalizers: + - percona.com/delete-backup +status: + state: Succeeded diff --git a/e2e-tests/tests/demand-backup-cloud/04-create-backup-storage-1.yaml b/e2e-tests/tests/demand-backup-cloud/04-create-backup-storage-1.yaml new file mode 100644 index 000000000..280174f48 --- /dev/null +++ b/e2e-tests/tests/demand-backup-cloud/04-create-backup-storage-1.yaml @@ -0,0 +1,12 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: | + set -o errexit + set -o xtrace + + source ../../functions + + # Gets first storage defined and run backup + first_storage_name=$(kubectl get ps demand-backup-cloud -n ${NAMESPACE} -o yaml | yq '(.spec.backup.storages // {}) | keys | .[0]') + run_backup demand-backup-cloud-1 $first_storage_name "demand-backup-cloud" diff --git a/e2e-tests/tests/demand-backup-cloud/05-assert.yaml b/e2e-tests/tests/demand-backup-cloud/05-assert.yaml index c3c3911d0..da78c1696 100644 --- a/e2e-tests/tests/demand-backup-cloud/05-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/05-assert.yaml @@ -1,12 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 300 +timeout: 30 --- -kind: PerconaServerMySQLBackup -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: demand-backup-cloud-s3 - finalizers: - - percona.com/delete-backup -status: - state: Succeeded + name: 06-delete-data-0 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 06-delete-data-1 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 06-delete-data-2 +data: + data: "" diff --git a/e2e-tests/tests/demand-backup-cloud/05-create-backup-s3.yaml b/e2e-tests/tests/demand-backup-cloud/05-create-backup-s3.yaml deleted file mode 100644 index ff3b8b13f..000000000 --- a/e2e-tests/tests/demand-backup-cloud/05-create-backup-s3.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQLBackup -metadata: - name: demand-backup-cloud-s3 - finalizers: - - percona.com/delete-backup -spec: - clusterName: demand-backup-cloud - storageName: aws-s3 diff --git a/e2e-tests/tests/demand-backup-cloud/06-delete-data.yaml b/e2e-tests/tests/demand-backup-cloud/05-delete-data.yaml similarity index 92% rename from e2e-tests/tests/demand-backup-cloud/06-delete-data.yaml rename to e2e-tests/tests/demand-backup-cloud/05-delete-data.yaml index ceb5e873a..32672da7d 100644 --- a/e2e-tests/tests/demand-backup-cloud/06-delete-data.yaml +++ b/e2e-tests/tests/demand-backup-cloud/05-delete-data.yaml @@ -14,5 +14,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 06-delete-data-s3-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 06-delete-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/demand-backup-cloud/06-assert.yaml b/e2e-tests/tests/demand-backup-cloud/06-assert.yaml index 84f1d1af0..00fbdcefb 100644 --- a/e2e-tests/tests/demand-backup-cloud/06-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/06-assert.yaml @@ -1,24 +1,31 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 400 --- -kind: ConfigMap -apiVersion: v1 +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL metadata: - name: 06-delete-data-s3-0 -data: - data: "" + name: demand-backup-cloud + finalizers: + - percona.com/delete-mysql-pods-in-order +status: + haproxy: + ready: 3 + size: 3 + state: ready + mysql: + ready: 3 + size: 3 + state: ready + orchestrator: + ready: 3 + size: 3 + state: ready + state: ready --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLRestore +apiVersion: ps.percona.com/v1 metadata: - name: 06-delete-data-s3-1 -data: - data: "" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 06-delete-data-s3-2 -data: - data: "" + name: restore-of-demand-backup-cloud-1 +status: + state: Succeeded diff --git a/e2e-tests/tests/demand-backup-cloud/07-restore-from-s3.yaml b/e2e-tests/tests/demand-backup-cloud/06-restore-from-storage-1.yaml similarity index 59% rename from e2e-tests/tests/demand-backup-cloud/07-restore-from-s3.yaml rename to e2e-tests/tests/demand-backup-cloud/06-restore-from-storage-1.yaml index 230a9fb6e..e3cf957fd 100644 --- a/e2e-tests/tests/demand-backup-cloud/07-restore-from-s3.yaml +++ b/e2e-tests/tests/demand-backup-cloud/06-restore-from-storage-1.yaml @@ -1,7 +1,7 @@ apiVersion: ps.percona.com/v1 kind: PerconaServerMySQLRestore metadata: - name: demand-backup-cloud-restore-s3 + name: restore-of-demand-backup-cloud-1 spec: clusterName: demand-backup-cloud - backupName: demand-backup-cloud-s3 + backupName: demand-backup-cloud-1 diff --git a/e2e-tests/tests/demand-backup-cloud/07-assert.yaml b/e2e-tests/tests/demand-backup-cloud/07-assert.yaml index bfb324106..92d4aa28f 100644 --- a/e2e-tests/tests/demand-backup-cloud/07-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/07-assert.yaml @@ -1,31 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 400 +timeout: 30 --- -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQL +kind: ConfigMap +apiVersion: v1 metadata: - name: demand-backup-cloud - finalizers: - - percona.com/delete-mysql-pods-in-order -status: - haproxy: - ready: 3 - size: 3 - state: ready - mysql: - ready: 3 - size: 3 - state: ready - orchestrator: - ready: 3 - size: 3 - state: ready - state: ready + name: 07-read-data-0 +data: + data: "100500" --- -kind: PerconaServerMySQLRestore -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: demand-backup-cloud-restore-s3 -status: - state: Succeeded + name: 07-read-data-1 +data: + data: "100500" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 07-read-data-2 +data: + data: "100500" diff --git a/e2e-tests/tests/demand-backup-cloud/08-read-data.yaml b/e2e-tests/tests/demand-backup-cloud/07-read-data.yaml similarity index 76% rename from e2e-tests/tests/demand-backup-cloud/08-read-data.yaml rename to e2e-tests/tests/demand-backup-cloud/07-read-data.yaml index e4f0f54d7..ca1c15c57 100644 --- a/e2e-tests/tests/demand-backup-cloud/08-read-data.yaml +++ b/e2e-tests/tests/demand-backup-cloud/07-read-data.yaml @@ -11,5 +11,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 08-read-data-s3-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 07-read-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/demand-backup-cloud/08-assert.yaml b/e2e-tests/tests/demand-backup-cloud/08-assert.yaml index dbabcd408..1629cd3f9 100644 --- a/e2e-tests/tests/demand-backup-cloud/08-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/08-assert.yaml @@ -1,24 +1,12 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 300 --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLBackup +apiVersion: ps.percona.com/v1 metadata: - name: 08-read-data-s3-0 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 08-read-data-s3-1 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 08-read-data-s3-2 -data: - data: "100500" + name: demand-backup-cloud-2 + finalizers: + - percona.com/delete-backup +status: + state: Succeeded diff --git a/e2e-tests/tests/demand-backup-cloud/08-create-backup-storage-2.yaml b/e2e-tests/tests/demand-backup-cloud/08-create-backup-storage-2.yaml new file mode 100644 index 000000000..9dd19480a --- /dev/null +++ b/e2e-tests/tests/demand-backup-cloud/08-create-backup-storage-2.yaml @@ -0,0 +1,12 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: | + set -o errexit + set -o xtrace + + source ../../functions + + # Gets second storage defined and run backup + second_storage_name=$(kubectl get ps demand-backup-cloud -n ${NAMESPACE} -o yaml | yq '(.spec.backup.storages // {}) | keys | .[1]') + run_backup demand-backup-cloud-2 $second_storage_name "$(get_cluster_name)" diff --git a/e2e-tests/tests/demand-backup-cloud/09-assert.yaml b/e2e-tests/tests/demand-backup-cloud/09-assert.yaml index f8c4a5e85..d5b81646d 100644 --- a/e2e-tests/tests/demand-backup-cloud/09-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/09-assert.yaml @@ -1,12 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 300 +timeout: 30 --- -kind: PerconaServerMySQLBackup -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: demand-backup-cloud-gcp - finalizers: - - percona.com/delete-backup -status: - state: Succeeded + name: 10-delete-data-0 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 10-delete-data-1 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 10-delete-data-2 +data: + data: "" diff --git a/e2e-tests/tests/demand-backup-cloud/09-create-backup-gcp.yaml b/e2e-tests/tests/demand-backup-cloud/09-create-backup-gcp.yaml deleted file mode 100644 index d3226c525..000000000 --- a/e2e-tests/tests/demand-backup-cloud/09-create-backup-gcp.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQLBackup -metadata: - name: demand-backup-cloud-gcp - finalizers: - - percona.com/delete-backup -spec: - clusterName: demand-backup-cloud - storageName: gcp-cs diff --git a/e2e-tests/tests/demand-backup-cloud/10-delete-data.yaml b/e2e-tests/tests/demand-backup-cloud/09-delete-data.yaml similarity index 92% rename from e2e-tests/tests/demand-backup-cloud/10-delete-data.yaml rename to e2e-tests/tests/demand-backup-cloud/09-delete-data.yaml index 6cc41972d..493388ca8 100644 --- a/e2e-tests/tests/demand-backup-cloud/10-delete-data.yaml +++ b/e2e-tests/tests/demand-backup-cloud/09-delete-data.yaml @@ -14,5 +14,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 10-delete-data-gcp-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 10-delete-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/demand-backup-cloud/10-assert.yaml b/e2e-tests/tests/demand-backup-cloud/10-assert.yaml index 83718e2da..19c4a3bb4 100644 --- a/e2e-tests/tests/demand-backup-cloud/10-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/10-assert.yaml @@ -1,24 +1,31 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 400 --- -kind: ConfigMap -apiVersion: v1 +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL metadata: - name: 10-delete-data-gcp-0 -data: - data: "" + name: demand-backup-cloud + finalizers: + - percona.com/delete-mysql-pods-in-order +status: + haproxy: + ready: 3 + size: 3 + state: ready + mysql: + ready: 3 + size: 3 + state: ready + orchestrator: + ready: 3 + size: 3 + state: ready + state: ready --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLRestore +apiVersion: ps.percona.com/v1 metadata: - name: 10-delete-data-gcp-1 -data: - data: "" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 10-delete-data-gcp-2 -data: - data: "" + name: restore-of-demand-backup-cloud-2 +status: + state: Succeeded diff --git a/e2e-tests/tests/demand-backup-cloud/11-restore-from-gcp.yaml b/e2e-tests/tests/demand-backup-cloud/10-restore-from-storage-2.yaml similarity index 59% rename from e2e-tests/tests/demand-backup-cloud/11-restore-from-gcp.yaml rename to e2e-tests/tests/demand-backup-cloud/10-restore-from-storage-2.yaml index 6c137ec17..e0b50fd12 100644 --- a/e2e-tests/tests/demand-backup-cloud/11-restore-from-gcp.yaml +++ b/e2e-tests/tests/demand-backup-cloud/10-restore-from-storage-2.yaml @@ -1,7 +1,7 @@ apiVersion: ps.percona.com/v1 kind: PerconaServerMySQLRestore metadata: - name: demand-backup-cloud-restore-gcp + name: restore-of-demand-backup-cloud-2 spec: clusterName: demand-backup-cloud - backupName: demand-backup-cloud-gcp + backupName: demand-backup-cloud-2 diff --git a/e2e-tests/tests/demand-backup-cloud/11-assert.yaml b/e2e-tests/tests/demand-backup-cloud/11-assert.yaml index 462b15bab..183728bb0 100644 --- a/e2e-tests/tests/demand-backup-cloud/11-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/11-assert.yaml @@ -1,31 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 400 +timeout: 30 --- -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQL +kind: ConfigMap +apiVersion: v1 metadata: - name: demand-backup-cloud - finalizers: - - percona.com/delete-mysql-pods-in-order -status: - haproxy: - ready: 3 - size: 3 - state: ready - mysql: - ready: 3 - size: 3 - state: ready - orchestrator: - ready: 3 - size: 3 - state: ready - state: ready + name: 11-read-data-0 +data: + data: "100500" --- -kind: PerconaServerMySQLRestore -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: demand-backup-cloud-restore-gcp -status: - state: Succeeded + name: 11-read-data-1 +data: + data: "100500" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 11-read-data-2 +data: + data: "100500" diff --git a/e2e-tests/tests/gr-demand-backup-cloud/11-read-data.yaml b/e2e-tests/tests/demand-backup-cloud/11-read-data.yaml similarity index 90% rename from e2e-tests/tests/gr-demand-backup-cloud/11-read-data.yaml rename to e2e-tests/tests/demand-backup-cloud/11-read-data.yaml index 9046ed2f4..24032e670 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/11-read-data.yaml +++ b/e2e-tests/tests/demand-backup-cloud/11-read-data.yaml @@ -11,5 +11,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 11-read-data-gcp-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 11-read-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/demand-backup-cloud/12-assert.yaml b/e2e-tests/tests/demand-backup-cloud/12-assert.yaml index 52a6315db..866848a65 100644 --- a/e2e-tests/tests/demand-backup-cloud/12-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/12-assert.yaml @@ -1,24 +1,12 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 300 --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLBackup +apiVersion: ps.percona.com/v1 metadata: - name: 12-read-data-gcp-0 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 12-read-data-gcp-1 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 12-read-data-gcp-2 -data: - data: "100500" + name: demand-backup-cloud-3 + finalizers: + - percona.com/delete-backup +status: + state: Succeeded diff --git a/e2e-tests/tests/demand-backup-cloud/12-create-backup-storage-3.yaml b/e2e-tests/tests/demand-backup-cloud/12-create-backup-storage-3.yaml new file mode 100644 index 000000000..f4ebde717 --- /dev/null +++ b/e2e-tests/tests/demand-backup-cloud/12-create-backup-storage-3.yaml @@ -0,0 +1,12 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: | + set -o errexit + set -o xtrace + + source ../../functions + + # Gets third storage defined and run backup + third_storage_name=$(kubectl get ps demand-backup-cloud -n ${NAMESPACE} -o yaml | yq '(.spec.backup.storages // {}) | keys | .[2]') + run_backup demand-backup-cloud-3 $third_storage_name "$(get_cluster_name)" diff --git a/e2e-tests/tests/demand-backup-cloud/13-assert.yaml b/e2e-tests/tests/demand-backup-cloud/13-assert.yaml index 46471bb33..883e07477 100644 --- a/e2e-tests/tests/demand-backup-cloud/13-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/13-assert.yaml @@ -1,12 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 300 +timeout: 30 --- -kind: PerconaServerMySQLBackup -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: demand-backup-cloud-azure - finalizers: - - percona.com/delete-backup -status: - state: Succeeded + name: 14-delete-data-0 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 14-delete-data-1 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 14-delete-data-2 +data: + data: "" diff --git a/e2e-tests/tests/demand-backup-cloud/13-create-backup-azure.yaml b/e2e-tests/tests/demand-backup-cloud/13-create-backup-azure.yaml deleted file mode 100644 index 67617c274..000000000 --- a/e2e-tests/tests/demand-backup-cloud/13-create-backup-azure.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQLBackup -metadata: - name: demand-backup-cloud-azure - finalizers: - - percona.com/delete-backup -spec: - clusterName: demand-backup-cloud - storageName: azure-blob diff --git a/e2e-tests/tests/demand-backup-cloud/14-delete-data.yaml b/e2e-tests/tests/demand-backup-cloud/13-delete-data.yaml similarity index 91% rename from e2e-tests/tests/demand-backup-cloud/14-delete-data.yaml rename to e2e-tests/tests/demand-backup-cloud/13-delete-data.yaml index 658185c84..d7e5d3bd9 100644 --- a/e2e-tests/tests/demand-backup-cloud/14-delete-data.yaml +++ b/e2e-tests/tests/demand-backup-cloud/13-delete-data.yaml @@ -14,5 +14,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 14-delete-data-azure-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 14-delete-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/demand-backup-cloud/14-assert.yaml b/e2e-tests/tests/demand-backup-cloud/14-assert.yaml index acbcee784..31cc6cdfd 100644 --- a/e2e-tests/tests/demand-backup-cloud/14-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/14-assert.yaml @@ -1,24 +1,31 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 400 --- -kind: ConfigMap -apiVersion: v1 +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL metadata: - name: 14-delete-data-azure-0 -data: - data: "" + name: demand-backup-cloud + finalizers: + - percona.com/delete-mysql-pods-in-order +status: + haproxy: + ready: 3 + size: 3 + state: ready + mysql: + ready: 3 + size: 3 + state: ready + orchestrator: + ready: 3 + size: 3 + state: ready + state: ready --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLRestore +apiVersion: ps.percona.com/v1 metadata: - name: 14-delete-data-azure-1 -data: - data: "" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 14-delete-data-azure-2 -data: - data: "" + name: restore-of-demand-backup-cloud-3 +status: + state: Succeeded diff --git a/e2e-tests/tests/demand-backup-cloud/15-restore-from-azure.yaml b/e2e-tests/tests/demand-backup-cloud/14-restore-from-storage-3.yaml similarity index 57% rename from e2e-tests/tests/demand-backup-cloud/15-restore-from-azure.yaml rename to e2e-tests/tests/demand-backup-cloud/14-restore-from-storage-3.yaml index effbdc69a..a6e7b83db 100644 --- a/e2e-tests/tests/demand-backup-cloud/15-restore-from-azure.yaml +++ b/e2e-tests/tests/demand-backup-cloud/14-restore-from-storage-3.yaml @@ -1,7 +1,7 @@ apiVersion: ps.percona.com/v1 kind: PerconaServerMySQLRestore metadata: - name: demand-backup-cloud-restore-azure + name: restore-of-demand-backup-cloud-3 spec: clusterName: demand-backup-cloud - backupName: demand-backup-cloud-azure + backupName: demand-backup-cloud-3 diff --git a/e2e-tests/tests/demand-backup-cloud/15-assert.yaml b/e2e-tests/tests/demand-backup-cloud/15-assert.yaml index 988d41684..755c5a331 100644 --- a/e2e-tests/tests/demand-backup-cloud/15-assert.yaml +++ b/e2e-tests/tests/demand-backup-cloud/15-assert.yaml @@ -1,31 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 400 +timeout: 30 --- -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQL +kind: ConfigMap +apiVersion: v1 metadata: - name: demand-backup-cloud - finalizers: - - percona.com/delete-mysql-pods-in-order -status: - haproxy: - ready: 3 - size: 3 - state: ready - mysql: - ready: 3 - size: 3 - state: ready - orchestrator: - ready: 3 - size: 3 - state: ready - state: ready + name: 15-read-data-0 +data: + data: "100500" --- -kind: PerconaServerMySQLRestore -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: demand-backup-cloud-restore-azure -status: - state: Succeeded + name: 15-read-data-1 +data: + data: "100500" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 15-read-data-2 +data: + data: "100500" diff --git a/e2e-tests/tests/gr-demand-backup-cloud/15-read-data.yaml b/e2e-tests/tests/demand-backup-cloud/15-read-data.yaml similarity index 90% rename from e2e-tests/tests/gr-demand-backup-cloud/15-read-data.yaml rename to e2e-tests/tests/demand-backup-cloud/15-read-data.yaml index e55243b6a..512b7d16f 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/15-read-data.yaml +++ b/e2e-tests/tests/demand-backup-cloud/15-read-data.yaml @@ -11,5 +11,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 15-read-data-azure-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 15-read-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/demand-backup-cloud/16-assert.yaml b/e2e-tests/tests/demand-backup-cloud/16-assert.yaml deleted file mode 100644 index f85467c78..000000000 --- a/e2e-tests/tests/demand-backup-cloud/16-assert.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: kuttl.dev/v1beta1 -kind: TestAssert -timeout: 30 ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 16-read-data-azure-0 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 16-read-data-azure-1 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 16-read-data-azure-2 -data: - data: "100500" diff --git a/e2e-tests/tests/demand-backup-cloud/17-delete-all-backups.yaml b/e2e-tests/tests/demand-backup-cloud/16-delete-all-backups.yaml similarity index 73% rename from e2e-tests/tests/demand-backup-cloud/17-delete-all-backups.yaml rename to e2e-tests/tests/demand-backup-cloud/16-delete-all-backups.yaml index 9c8679133..0d9b55caf 100644 --- a/e2e-tests/tests/demand-backup-cloud/17-delete-all-backups.yaml +++ b/e2e-tests/tests/demand-backup-cloud/16-delete-all-backups.yaml @@ -8,4 +8,4 @@ commands: source ../../functions - kubectl delete ps-backup --all -n "${NAMESPACE}" + verify_all_backups_deletion diff --git a/e2e-tests/tests/demand-backup-cloud/98-drop-finalizer.yaml b/e2e-tests/tests/demand-backup-cloud/97-drop-finalizer.yaml similarity index 100% rename from e2e-tests/tests/demand-backup-cloud/98-drop-finalizer.yaml rename to e2e-tests/tests/demand-backup-cloud/97-drop-finalizer.yaml diff --git a/e2e-tests/tests/demand-backup-cloud/99-remove-cluster-gracefully.yaml b/e2e-tests/tests/demand-backup-cloud/98-remove-cluster-gracefully.yaml similarity index 100% rename from e2e-tests/tests/demand-backup-cloud/99-remove-cluster-gracefully.yaml rename to e2e-tests/tests/demand-backup-cloud/98-remove-cluster-gracefully.yaml diff --git a/e2e-tests/tests/demand-backup-cloud/conf/demand-backup-cloud-spaces.yaml b/e2e-tests/tests/demand-backup-cloud/conf/demand-backup-cloud-spaces.yaml new file mode 100644 index 000000000..b6708a03a --- /dev/null +++ b/e2e-tests/tests/demand-backup-cloud/conf/demand-backup-cloud-spaces.yaml @@ -0,0 +1,50 @@ + +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL +metadata: + name: demand-backup-cloud +spec: + mysql: + clusterType: async + size: 3 + + proxy: + haproxy: + enabled: true + size: 3 + + orchestrator: + enabled: true + size: 3 + + backup: + storages: + spaces-1: + type: s3 + verifyTLS: true + s3: + bucket: operator-testing + credentialsSecret: do-spaces-secret + endpointUrl: https://ams3.digitaloceanspaces.com + region: ams3 + prefix: ps/demand-backup-cloud/spaces-1 + + spaces-2: + type: s3 + verifyTLS: true + s3: + bucket: operator-testing-nyc3 + credentialsSecret: do-spaces-secret + endpointUrl: https://nyc3.digitaloceanspaces.com + region: nyc3 + prefix: ps/demand-backup-cloud/spaces-2 + + spaces-3: + type: s3 + verifyTLS: true + s3: + bucket: operator-testing-sfo3 + credentialsSecret: do-spaces-secret + endpointUrl: https://sfo3.digitaloceanspaces.com + region: sfo3 + prefix: ps/demand-backup-cloud/spaces-3 diff --git a/e2e-tests/tests/demand-backup-cloud/conf/demand-backup-cloud.yaml b/e2e-tests/tests/demand-backup-cloud/conf/demand-backup-cloud.yaml new file mode 100644 index 000000000..095ca888f --- /dev/null +++ b/e2e-tests/tests/demand-backup-cloud/conf/demand-backup-cloud.yaml @@ -0,0 +1,46 @@ + +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL +metadata: + name: demand-backup-cloud +spec: + mysql: + clusterType: async + size: 3 + + proxy: + haproxy: + enabled: true + size: 3 + + orchestrator: + enabled: true + size: 3 + + backup: + storages: + aws-s3: + type: s3 + verifyTLS: true + s3: + bucket: operator-testing + credentialsSecret: aws-s3-secret + region: us-east-1 + prefix: ps + + gcp-cs: + type: gcs + verifyTLS: true + gcs: + bucket: operator-testing + credentialsSecret: gcp-cs-secret + endpointUrl: https://storage.googleapis.com + prefix: ps + + azure-blob: + type: azure + verifyTLS: true + azure: + container: operator-testing + credentialsSecret: azure-secret + prefix: ps diff --git a/e2e-tests/tests/gr-demand-backup-cloud/00-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/00-assert.yaml index fecdb222e..5f346cb51 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/00-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/00-assert.yaml @@ -2,8 +2,25 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert timeout: 150 --- -apiVersion: v1 -kind: Secret +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: - name: minio-secret -type: Opaque + name: perconaservermysqls.ps.percona.com +spec: + group: ps.percona.com + names: + kind: PerconaServerMySQL + listKind: PerconaServerMySQLList + plural: perconaservermysqls + shortNames: + - ps + singular: perconaservermysql + scope: Namespaced +--- +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +metadata: + name: check-operator-deploy-status +timeout: 120 +commands: + - script: kubectl assert exist-enhanced deployment percona-server-mysql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1 diff --git a/e2e-tests/tests/gr-demand-backup-cloud/01-deploy-operator.yaml b/e2e-tests/tests/gr-demand-backup-cloud/00-deploy-operator.yaml similarity index 100% rename from e2e-tests/tests/gr-demand-backup-cloud/01-deploy-operator.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/00-deploy-operator.yaml diff --git a/e2e-tests/tests/gr-demand-backup-cloud/00-minio-secret.yaml b/e2e-tests/tests/gr-demand-backup-cloud/00-minio-secret.yaml deleted file mode 100644 index 3c797f054..000000000 --- a/e2e-tests/tests/gr-demand-backup-cloud/00-minio-secret.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: minio-secret -stringData: - AWS_ACCESS_KEY_ID: some-access$\n"-key - AWS_SECRET_ACCESS_KEY: some-$\n"secret-key diff --git a/e2e-tests/tests/gr-demand-backup-cloud/01-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/01-assert.yaml index 5f346cb51..ed0cdd124 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/01-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/01-assert.yaml @@ -1,26 +1,54 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 150 +timeout: 420 --- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +kind: StatefulSet +apiVersion: apps/v1 metadata: - name: perconaservermysqls.ps.percona.com -spec: - group: ps.percona.com - names: - kind: PerconaServerMySQL - listKind: PerconaServerMySQLList - plural: perconaservermysqls - shortNames: - - ps - singular: perconaservermysql - scope: Namespaced + name: gr-demand-backup-cloud-mysql +status: + observedGeneration: 1 + replicas: 3 + readyReplicas: 3 + currentReplicas: 3 + updatedReplicas: 3 + collisionCount: 0 --- -apiVersion: kuttl.dev/v1beta1 -kind: TestAssert +kind: Deployment +apiVersion: apps/v1 metadata: - name: check-operator-deploy-status -timeout: 120 -commands: - - script: kubectl assert exist-enhanced deployment percona-server-mysql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1 + name: gr-demand-backup-cloud-router +status: + observedGeneration: 1 + replicas: 3 + readyReplicas: 3 + updatedReplicas: 3 +--- +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL +metadata: + name: gr-demand-backup-cloud +spec: + backup: + backoffLimit: 3 +status: + conditions: + - reason: Initializing + status: "False" + type: Initializing + - reason: Ready + status: "True" + type: Ready + - message: InnoDB cluster successfully bootstrapped with 3 nodes + reason: InnoDBClusterBootstrapped + status: "True" + type: InnoDBClusterBootstrapped + mysql: + ready: 3 + size: 3 + state: ready + router: + ready: 3 + size: 3 + state: ready + state: ready diff --git a/e2e-tests/tests/gr-demand-backup-cloud/01-create-cluster.yaml b/e2e-tests/tests/gr-demand-backup-cloud/01-create-cluster.yaml new file mode 100644 index 000000000..abe1d5a61 --- /dev/null +++ b/e2e-tests/tests/gr-demand-backup-cloud/01-create-cluster.yaml @@ -0,0 +1,11 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +timeout: 10 +commands: + - script: |- + set -o errexit + set -o xtrace + + source ../../functions + + get_cr | kubectl -n "${NAMESPACE}" apply -f - diff --git a/e2e-tests/tests/gr-demand-backup-cloud/02-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/02-assert.yaml deleted file mode 100644 index ed0cdd124..000000000 --- a/e2e-tests/tests/gr-demand-backup-cloud/02-assert.yaml +++ /dev/null @@ -1,54 +0,0 @@ -apiVersion: kuttl.dev/v1beta1 -kind: TestAssert -timeout: 420 ---- -kind: StatefulSet -apiVersion: apps/v1 -metadata: - name: gr-demand-backup-cloud-mysql -status: - observedGeneration: 1 - replicas: 3 - readyReplicas: 3 - currentReplicas: 3 - updatedReplicas: 3 - collisionCount: 0 ---- -kind: Deployment -apiVersion: apps/v1 -metadata: - name: gr-demand-backup-cloud-router -status: - observedGeneration: 1 - replicas: 3 - readyReplicas: 3 - updatedReplicas: 3 ---- -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQL -metadata: - name: gr-demand-backup-cloud -spec: - backup: - backoffLimit: 3 -status: - conditions: - - reason: Initializing - status: "False" - type: Initializing - - reason: Ready - status: "True" - type: Ready - - message: InnoDB cluster successfully bootstrapped with 3 nodes - reason: InnoDBClusterBootstrapped - status: "True" - type: InnoDBClusterBootstrapped - mysql: - ready: 3 - size: 3 - state: ready - router: - ready: 3 - size: 3 - state: ready - state: ready diff --git a/e2e-tests/tests/gr-demand-backup-cloud/02-create-cluster.yaml b/e2e-tests/tests/gr-demand-backup-cloud/02-create-cluster.yaml deleted file mode 100644 index 65ad54d77..000000000 --- a/e2e-tests/tests/gr-demand-backup-cloud/02-create-cluster.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: kuttl.dev/v1beta1 -kind: TestStep -timeout: 10 -commands: - - script: |- - set -o errexit - set -o xtrace - - source ../../functions - - get_cr \ - | yq eval ".spec.backup.backoffLimit=3" - \ - | yq eval '.spec.backup.storages.aws-s3.type="s3"' - \ - | yq eval ".spec.backup.storages.aws-s3.verifyTLS=true" - \ - | yq eval '.spec.backup.storages.aws-s3.s3.bucket="operator-testing"' - \ - | yq eval '.spec.backup.storages.aws-s3.s3.credentialsSecret="aws-s3-secret"' - \ - | yq eval '.spec.backup.storages.aws-s3.s3.region="us-east-1"' - \ - | yq eval '.spec.backup.storages.aws-s3.s3.prefix="ps"' - \ - | yq eval '.spec.backup.storages.gcp-cs.type="gcs"' - \ - | yq eval ".spec.backup.storages.gcp-cs.verifyTLS=true" - \ - | yq eval '.spec.backup.storages.gcp-cs.gcs.bucket="operator-testing"' - \ - | yq eval '.spec.backup.storages.gcp-cs.gcs.credentialsSecret="gcp-cs-secret"' - \ - | yq eval '.spec.backup.storages.gcp-cs.gcs.endpointUrl="https://storage.googleapis.com"' - \ - | yq eval '.spec.backup.storages.gcp-cs.gcs.prefix="ps"' - \ - | yq eval '.spec.backup.storages.azure-blob.type="azure"' - \ - | yq eval ".spec.backup.storages.azure-blob.verifyTLS=true" - \ - | yq eval '.spec.backup.storages.azure-blob.azure.container="operator-testing"' - \ - | yq eval '.spec.backup.storages.azure-blob.azure.credentialsSecret="azure-secret"' - \ - | yq eval '.spec.backup.storages.azure-blob.azure.prefix="ps"' - \ - | yq eval '.spec.mysql.clusterType="group-replication"' - \ - | yq eval ".spec.proxy.router.enabled=true" - \ - | yq eval ".spec.proxy.haproxy.enabled=false" - \ - | kubectl -n "${NAMESPACE}" apply -f - diff --git a/e2e-tests/tests/gr-demand-backup-cloud/03-write-data.yaml b/e2e-tests/tests/gr-demand-backup-cloud/02-write-data.yaml similarity index 100% rename from e2e-tests/tests/gr-demand-backup-cloud/03-write-data.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/02-write-data.yaml diff --git a/e2e-tests/tests/gr-demand-backup-cloud/03-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/03-assert.yaml new file mode 100644 index 000000000..0bdaa9512 --- /dev/null +++ b/e2e-tests/tests/gr-demand-backup-cloud/03-assert.yaml @@ -0,0 +1,10 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +timeout: 300 +--- +kind: PerconaServerMySQLBackup +apiVersion: ps.percona.com/v1 +metadata: + name: gr-demand-backup-cloud-1 +status: + state: Succeeded diff --git a/e2e-tests/tests/gr-demand-backup-cloud/03-create-backup-storage-1.yaml b/e2e-tests/tests/gr-demand-backup-cloud/03-create-backup-storage-1.yaml new file mode 100644 index 000000000..a2953fce6 --- /dev/null +++ b/e2e-tests/tests/gr-demand-backup-cloud/03-create-backup-storage-1.yaml @@ -0,0 +1,12 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: | + set -o errexit + set -o xtrace + + source ../../functions + + # Gets first storage defined and run backup + first_storage_name=$(kubectl get ps gr-demand-backup-cloud -n ${NAMESPACE} -o yaml | yq '(.spec.backup.storages // {}) | keys | .[0]') + run_backup gr-demand-backup-cloud-1 $first_storage_name "$(get_cluster_name)" \ No newline at end of file diff --git a/e2e-tests/tests/gr-demand-backup-cloud/04-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/04-assert.yaml index abcbb2048..cb3bc259d 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/04-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/04-assert.yaml @@ -1,10 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 300 +timeout: 30 --- -kind: PerconaServerMySQLBackup -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: gr-demand-backup-cloud-s3 -status: - state: Succeeded + name: 05-delete-data-s3-0 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 05-delete-data-s3-1 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 05-delete-data-s3-2 +data: + data: "" diff --git a/e2e-tests/tests/gr-demand-backup-cloud/04-create-backup-s3.yaml b/e2e-tests/tests/gr-demand-backup-cloud/04-create-backup-s3.yaml deleted file mode 100644 index cb5ff2fab..000000000 --- a/e2e-tests/tests/gr-demand-backup-cloud/04-create-backup-s3.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQLBackup -metadata: - name: gr-demand-backup-cloud-s3 -spec: - clusterName: gr-demand-backup-cloud - storageName: aws-s3 diff --git a/e2e-tests/tests/gr-demand-backup-cloud/05-delete-data.yaml b/e2e-tests/tests/gr-demand-backup-cloud/04-delete-data.yaml similarity index 100% rename from e2e-tests/tests/gr-demand-backup-cloud/05-delete-data.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/04-delete-data.yaml diff --git a/e2e-tests/tests/gr-demand-backup-cloud/05-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/05-assert.yaml index cb3bc259d..1d645eab2 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/05-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/05-assert.yaml @@ -1,24 +1,25 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 500 --- -kind: ConfigMap -apiVersion: v1 +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL metadata: - name: 05-delete-data-s3-0 -data: - data: "" + name: gr-demand-backup-cloud +status: + mysql: + ready: 3 + size: 3 + state: ready + router: + ready: 3 + size: 3 + state: ready + state: ready --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLRestore +apiVersion: ps.percona.com/v1 metadata: - name: 05-delete-data-s3-1 -data: - data: "" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 05-delete-data-s3-2 -data: - data: "" + name: restore-of-gr-demand-backup-cloud-1 +status: + state: Succeeded diff --git a/e2e-tests/tests/gr-demand-backup-cloud/06-restore-from-s3.yaml b/e2e-tests/tests/gr-demand-backup-cloud/05-restore-from-storage-1.yaml similarity index 58% rename from e2e-tests/tests/gr-demand-backup-cloud/06-restore-from-s3.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/05-restore-from-storage-1.yaml index e499d9beb..397b959a4 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/06-restore-from-s3.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/05-restore-from-storage-1.yaml @@ -1,7 +1,7 @@ apiVersion: ps.percona.com/v1 kind: PerconaServerMySQLRestore metadata: - name: gr-demand-backup-cloud-restore-s3 + name: restore-of-gr-demand-backup-cloud-1 spec: clusterName: gr-demand-backup-cloud - backupName: gr-demand-backup-cloud-s3 + backupName: gr-demand-backup-cloud-1 diff --git a/e2e-tests/tests/gr-demand-backup-cloud/06-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/06-assert.yaml index c6bf41a05..33636a246 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/06-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/06-assert.yaml @@ -1,25 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 500 +timeout: 30 --- -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQL +kind: ConfigMap +apiVersion: v1 metadata: - name: gr-demand-backup-cloud -status: - mysql: - ready: 3 - size: 3 - state: ready - router: - ready: 3 - size: 3 - state: ready - state: ready + name: 07-read-data-s3-0 +data: + data: "100500" --- -kind: PerconaServerMySQLRestore -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: gr-demand-backup-cloud-restore-s3 -status: - state: Succeeded + name: 07-read-data-s3-1 +data: + data: "100500" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 07-read-data-s3-2 +data: + data: "100500" diff --git a/e2e-tests/tests/gr-demand-backup-cloud/07-read-data.yaml b/e2e-tests/tests/gr-demand-backup-cloud/06-read-data.yaml similarity index 100% rename from e2e-tests/tests/gr-demand-backup-cloud/07-read-data.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/06-read-data.yaml diff --git a/e2e-tests/tests/gr-demand-backup-cloud/07-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/07-assert.yaml index 33636a246..765d4e76d 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/07-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/07-assert.yaml @@ -1,24 +1,10 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 300 --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLBackup +apiVersion: ps.percona.com/v1 metadata: - name: 07-read-data-s3-0 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 07-read-data-s3-1 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 07-read-data-s3-2 -data: - data: "100500" + name: gr-demand-backup-cloud-2 +status: + state: Succeeded diff --git a/e2e-tests/tests/gr-demand-backup-cloud/07-create-backup-storage-2.yaml b/e2e-tests/tests/gr-demand-backup-cloud/07-create-backup-storage-2.yaml new file mode 100644 index 000000000..ea2a40782 --- /dev/null +++ b/e2e-tests/tests/gr-demand-backup-cloud/07-create-backup-storage-2.yaml @@ -0,0 +1,12 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: | + set -o errexit + set -o xtrace + + source ../../functions + + # Gets second storage defined and run backup + second_storage_name=$(kubectl get ps gr-demand-backup-cloud -n ${NAMESPACE} -o yaml | yq '(.spec.backup.storages // {}) | keys | .[1]') + run_backup gr-demand-backup-cloud-2 $second_storage_name "$(get_cluster_name)" diff --git a/e2e-tests/tests/gr-demand-backup-cloud/08-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/08-assert.yaml index d8fc5625a..99617e673 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/08-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/08-assert.yaml @@ -1,10 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 300 +timeout: 30 --- -kind: PerconaServerMySQLBackup -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: gr-demand-backup-cloud-gcp -status: - state: Succeeded + name: 09-delete-data-0 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 09-delete-data-1 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 09-delete-data-2 +data: + data: "" diff --git a/e2e-tests/tests/gr-demand-backup-cloud/08-create-backup-gcp.yaml b/e2e-tests/tests/gr-demand-backup-cloud/08-create-backup-gcp.yaml deleted file mode 100644 index d6d825c62..000000000 --- a/e2e-tests/tests/gr-demand-backup-cloud/08-create-backup-gcp.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQLBackup -metadata: - name: gr-demand-backup-cloud-gcp -spec: - clusterName: gr-demand-backup-cloud - storageName: gcp-cs diff --git a/e2e-tests/tests/gr-demand-backup-cloud/09-delete-data.yaml b/e2e-tests/tests/gr-demand-backup-cloud/08-delete-data.yaml similarity index 92% rename from e2e-tests/tests/gr-demand-backup-cloud/09-delete-data.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/08-delete-data.yaml index 60db654a7..366c9270f 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/09-delete-data.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/08-delete-data.yaml @@ -14,5 +14,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 09-delete-data-gcp-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 09-delete-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/gr-demand-backup-cloud/09-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/09-assert.yaml index 43e79635a..82f84cdd8 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/09-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/09-assert.yaml @@ -1,24 +1,25 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 500 --- -kind: ConfigMap -apiVersion: v1 +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL metadata: - name: 09-delete-data-gcp-0 -data: - data: "" + name: gr-demand-backup-cloud +status: + mysql: + ready: 3 + size: 3 + state: ready + router: + ready: 3 + size: 3 + state: ready + state: ready --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLRestore +apiVersion: ps.percona.com/v1 metadata: - name: 09-delete-data-gcp-1 -data: - data: "" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 09-delete-data-gcp-2 -data: - data: "" + name: restore-of-gr-demand-backup-cloud-2 +status: + state: Succeeded diff --git a/e2e-tests/tests/gr-demand-backup-cloud/10-restore-from-gcp.yaml b/e2e-tests/tests/gr-demand-backup-cloud/09-restore-from-storage-2.yaml similarity index 58% rename from e2e-tests/tests/gr-demand-backup-cloud/10-restore-from-gcp.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/09-restore-from-storage-2.yaml index 0f0049da4..8f5e6eb51 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/10-restore-from-gcp.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/09-restore-from-storage-2.yaml @@ -1,7 +1,7 @@ apiVersion: ps.percona.com/v1 kind: PerconaServerMySQLRestore metadata: - name: gr-demand-backup-cloud-restore-gcp + name: restore-of-gr-demand-backup-cloud-2 spec: clusterName: gr-demand-backup-cloud - backupName: gr-demand-backup-cloud-gcp + backupName: gr-demand-backup-cloud-2 diff --git a/e2e-tests/tests/gr-demand-backup-cloud/10-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/10-assert.yaml index 6c2065216..183728bb0 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/10-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/10-assert.yaml @@ -1,25 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 500 +timeout: 30 --- -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQL +kind: ConfigMap +apiVersion: v1 metadata: - name: gr-demand-backup-cloud -status: - mysql: - ready: 3 - size: 3 - state: ready - router: - ready: 3 - size: 3 - state: ready - state: ready + name: 11-read-data-0 +data: + data: "100500" --- -kind: PerconaServerMySQLRestore -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: gr-demand-backup-cloud-restore-gcp -status: - state: Succeeded + name: 11-read-data-1 +data: + data: "100500" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 11-read-data-2 +data: + data: "100500" diff --git a/e2e-tests/tests/demand-backup-cloud/12-read-data.yaml b/e2e-tests/tests/gr-demand-backup-cloud/10-read-data.yaml similarity index 76% rename from e2e-tests/tests/demand-backup-cloud/12-read-data.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/10-read-data.yaml index e75a43514..24032e670 100644 --- a/e2e-tests/tests/demand-backup-cloud/12-read-data.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/10-read-data.yaml @@ -11,5 +11,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 12-read-data-gcp-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 11-read-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/gr-demand-backup-cloud/11-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/11-assert.yaml index 4f68cc053..55ddab3ce 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/11-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/11-assert.yaml @@ -1,24 +1,10 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 300 --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLBackup +apiVersion: ps.percona.com/v1 metadata: - name: 11-read-data-gcp-0 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 11-read-data-gcp-1 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 11-read-data-gcp-2 -data: - data: "100500" + name: gr-demand-backup-cloud-3 +status: + state: Succeeded diff --git a/e2e-tests/tests/gr-demand-backup-cloud/11-create-backup-storage-3.yaml b/e2e-tests/tests/gr-demand-backup-cloud/11-create-backup-storage-3.yaml new file mode 100644 index 000000000..d5007c6df --- /dev/null +++ b/e2e-tests/tests/gr-demand-backup-cloud/11-create-backup-storage-3.yaml @@ -0,0 +1,12 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: | + set -o errexit + set -o xtrace + + source ../../functions + + # Gets third storage defined and run backup + third_storage_name=$(kubectl get ps gr-demand-backup-cloud -n ${NAMESPACE} -o yaml | yq '(.spec.backup.storages // {}) | keys | .[2]') + run_backup gr-demand-backup-cloud-3 $third_storage_name "$(get_cluster_name)" diff --git a/e2e-tests/tests/gr-demand-backup-cloud/12-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/12-assert.yaml index 351cf426a..14296c0f5 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/12-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/12-assert.yaml @@ -1,10 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 300 +timeout: 30 --- -kind: PerconaServerMySQLBackup -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: gr-demand-backup-cloud-azure -status: - state: Succeeded + name: 13-delete-data-0 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 13-delete-data-1 +data: + data: "" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 13-delete-data-2 +data: + data: "" diff --git a/e2e-tests/tests/gr-demand-backup-cloud/12-create-backup-azure.yaml b/e2e-tests/tests/gr-demand-backup-cloud/12-create-backup-azure.yaml deleted file mode 100644 index 965167a0e..000000000 --- a/e2e-tests/tests/gr-demand-backup-cloud/12-create-backup-azure.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQLBackup -metadata: - name: gr-demand-backup-cloud-azure -spec: - clusterName: gr-demand-backup-cloud - storageName: azure-blob diff --git a/e2e-tests/tests/gr-demand-backup-cloud/13-delete-data.yaml b/e2e-tests/tests/gr-demand-backup-cloud/12-delete-data.yaml similarity index 92% rename from e2e-tests/tests/gr-demand-backup-cloud/13-delete-data.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/12-delete-data.yaml index b9b3b4a91..b6e8dab30 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/13-delete-data.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/12-delete-data.yaml @@ -15,5 +15,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 13-delete-data-azure-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 13-delete-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/gr-demand-backup-cloud/13-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/13-assert.yaml index 701d1d2f5..d40811b24 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/13-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/13-assert.yaml @@ -1,24 +1,25 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 30 +timeout: 500 --- -kind: ConfigMap -apiVersion: v1 +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL metadata: - name: 13-delete-data-azure-0 -data: - data: "" + name: gr-demand-backup-cloud +status: + mysql: + ready: 3 + size: 3 + state: ready + router: + ready: 3 + size: 3 + state: ready + state: ready --- -kind: ConfigMap -apiVersion: v1 +kind: PerconaServerMySQLRestore +apiVersion: ps.percona.com/v1 metadata: - name: 13-delete-data-azure-1 -data: - data: "" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 13-delete-data-azure-2 -data: - data: "" + name: restore-of-gr-demand-backup-cloud-3 +status: + state: Succeeded diff --git a/e2e-tests/tests/gr-demand-backup-cloud/14-restore-from-azure.yaml b/e2e-tests/tests/gr-demand-backup-cloud/13-restore-from-storage-3.yaml similarity index 56% rename from e2e-tests/tests/gr-demand-backup-cloud/14-restore-from-azure.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/13-restore-from-storage-3.yaml index f12ce4965..f37cb97af 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/14-restore-from-azure.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/13-restore-from-storage-3.yaml @@ -1,7 +1,7 @@ apiVersion: ps.percona.com/v1 kind: PerconaServerMySQLRestore metadata: - name: gr-demand-backup-cloud-restore-azure + name: restore-of-gr-demand-backup-cloud-3 spec: clusterName: gr-demand-backup-cloud - backupName: gr-demand-backup-cloud-azure + backupName: gr-demand-backup-cloud-3 diff --git a/e2e-tests/tests/gr-demand-backup-cloud/14-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/14-assert.yaml index be9d34b6d..755c5a331 100644 --- a/e2e-tests/tests/gr-demand-backup-cloud/14-assert.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/14-assert.yaml @@ -1,25 +1,24 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert -timeout: 500 +timeout: 30 --- -apiVersion: ps.percona.com/v1 -kind: PerconaServerMySQL +kind: ConfigMap +apiVersion: v1 metadata: - name: gr-demand-backup-cloud -status: - mysql: - ready: 3 - size: 3 - state: ready - router: - ready: 3 - size: 3 - state: ready - state: ready + name: 15-read-data-0 +data: + data: "100500" --- -kind: PerconaServerMySQLRestore -apiVersion: ps.percona.com/v1 +kind: ConfigMap +apiVersion: v1 metadata: - name: gr-demand-backup-cloud-restore-azure -status: - state: Succeeded + name: 15-read-data-1 +data: + data: "100500" +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: 15-read-data-2 +data: + data: "100500" diff --git a/e2e-tests/tests/demand-backup-cloud/16-read-data.yaml b/e2e-tests/tests/gr-demand-backup-cloud/14-read-data.yaml similarity index 76% rename from e2e-tests/tests/demand-backup-cloud/16-read-data.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/14-read-data.yaml index 9c176b92b..512b7d16f 100644 --- a/e2e-tests/tests/demand-backup-cloud/16-read-data.yaml +++ b/e2e-tests/tests/gr-demand-backup-cloud/14-read-data.yaml @@ -11,5 +11,5 @@ commands: cluster_name=$(get_cluster_name) for i in 0 1 2; do data=$(run_mysql "SELECT * FROM myDB.myTable" "-h ${cluster_name}-mysql-${i}.${cluster_name}-mysql") - kubectl create configmap -n "${NAMESPACE}" 16-read-data-azure-${i} --from-literal=data="${data}" + kubectl create configmap -n "${NAMESPACE}" 15-read-data-${i} --from-literal=data="${data}" done diff --git a/e2e-tests/tests/gr-demand-backup-cloud/15-assert.yaml b/e2e-tests/tests/gr-demand-backup-cloud/15-assert.yaml deleted file mode 100644 index 401e2a167..000000000 --- a/e2e-tests/tests/gr-demand-backup-cloud/15-assert.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: kuttl.dev/v1beta1 -kind: TestAssert -timeout: 30 ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 15-read-data-azure-0 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 15-read-data-azure-1 -data: - data: "100500" ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 15-read-data-azure-2 -data: - data: "100500" diff --git a/e2e-tests/tests/gr-demand-backup-cloud/15-delete-all-backups.yaml b/e2e-tests/tests/gr-demand-backup-cloud/15-delete-all-backups.yaml new file mode 100644 index 000000000..0d9b55caf --- /dev/null +++ b/e2e-tests/tests/gr-demand-backup-cloud/15-delete-all-backups.yaml @@ -0,0 +1,11 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +timeout: 100 +commands: + - script: |- + set -o errexit + set -o xtrace + + source ../../functions + + verify_all_backups_deletion diff --git a/e2e-tests/tests/gr-demand-backup-cloud/98-drop-finalizer.yaml b/e2e-tests/tests/gr-demand-backup-cloud/97-drop-finalizer.yaml similarity index 100% rename from e2e-tests/tests/gr-demand-backup-cloud/98-drop-finalizer.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/97-drop-finalizer.yaml diff --git a/e2e-tests/tests/gr-demand-backup-cloud/99-remove-cluster-gracefully.yaml b/e2e-tests/tests/gr-demand-backup-cloud/98-remove-cluster-gracefully.yaml similarity index 100% rename from e2e-tests/tests/gr-demand-backup-cloud/99-remove-cluster-gracefully.yaml rename to e2e-tests/tests/gr-demand-backup-cloud/98-remove-cluster-gracefully.yaml diff --git a/e2e-tests/tests/gr-demand-backup-cloud/conf/gr-demand-backup-cloud-spaces.yaml b/e2e-tests/tests/gr-demand-backup-cloud/conf/gr-demand-backup-cloud-spaces.yaml new file mode 100644 index 000000000..df05859bf --- /dev/null +++ b/e2e-tests/tests/gr-demand-backup-cloud/conf/gr-demand-backup-cloud-spaces.yaml @@ -0,0 +1,53 @@ + +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL +metadata: + name: gr-demand-backup-cloud +spec: + mysql: + clusterType: group-replication + size: 3 + + proxy: + haproxy: + enabled: false + router: + enabled: true + size: 3 + + orchestrator: + enabled: true + size: 3 + + backup: + backoffLimit: 3 + storages: + spaces-1: + type: s3 + verifyTLS: true + s3: + bucket: operator-testing + credentialsSecret: do-spaces-secret + endpointUrl: https://ams3.digitaloceanspaces.com + region: ams3 + prefix: ps/demand-backup-cloud/spaces-1 + + spaces-2: + type: s3 + verifyTLS: true + s3: + bucket: operator-testing-nyc3 + credentialsSecret: do-spaces-secret + endpointUrl: https://nyc3.digitaloceanspaces.com + region: nyc3 + prefix: ps/demand-backup-cloud/spaces-2 + + spaces-3: + type: s3 + verifyTLS: true + s3: + bucket: operator-testing-sfo3 + credentialsSecret: do-spaces-secret + endpointUrl: https://sfo3.digitaloceanspaces.com + region: sfo3 + prefix: ps/demand-backup-cloud/spaces-3 diff --git a/e2e-tests/tests/gr-demand-backup-cloud/conf/gr-demand-backup-cloud.yaml b/e2e-tests/tests/gr-demand-backup-cloud/conf/gr-demand-backup-cloud.yaml new file mode 100644 index 000000000..57013a0b0 --- /dev/null +++ b/e2e-tests/tests/gr-demand-backup-cloud/conf/gr-demand-backup-cloud.yaml @@ -0,0 +1,49 @@ + +apiVersion: ps.percona.com/v1 +kind: PerconaServerMySQL +metadata: + name: gr-demand-backup-cloud +spec: + mysql: + clusterType: group-replication + size: 3 + + proxy: + haproxy: + enabled: false + router: + enabled: true + size: 3 + + orchestrator: + enabled: true + size: 3 + + backup: + backoffLimit: 3 + storages: + aws-s3: + type: s3 + verifyTLS: true + s3: + bucket: operator-testing + credentialsSecret: aws-s3-secret + region: us-east-1 + prefix: ps + + gcp-cs: + type: gcs + verifyTLS: true + gcs: + bucket: operator-testing + credentialsSecret: gcp-cs-secret + endpointUrl: https://storage.googleapis.com + prefix: ps + + azure-blob: + type: azure + verifyTLS: true + azure: + container: operator-testing + credentialsSecret: azure-secret + prefix: ps