diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index fcb580427a..0a105f371a 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,3 +1,3 @@
-* @hors @egegunes @inelpandzic @pooknull
-/e2e-tests/ @tplavcic @nmarukovich @ptankov @jvpasinatto @eleo007
-Jenkinsfile @tplavcic @nmarukovich @ptankov @jvpasinatto @eleo007
+* @hors @egegunes @pooknull @nmarukovich @gkech
+/e2e-tests/ @ptankov @jvpasinatto @eleo007
+Jenkinsfile @ptankov @jvpasinatto @eleo007
diff --git a/.github/linters/go.mod b/.github/linters/go.mod
index afdab79548..4cbfd91f14 100644
--- a/.github/linters/go.mod
+++ b/.github/linters/go.mod
@@ -1,3 +1,3 @@
module linters
-go 1.13
+go 1.23.4
diff --git a/.github/workflows/reviewdog.yml b/.github/workflows/reviewdog.yml
index 6c79291416..b0e4248d43 100644
--- a/.github/workflows/reviewdog.yml
+++ b/.github/workflows/reviewdog.yml
@@ -8,7 +8,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.21'
+ go-version: '1.23'
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
@@ -34,7 +34,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.21'
+ go-version: '1.23'
- run: go install mvdan.cc/sh/v3/cmd/shfmt@latest
- run: $(go env GOPATH)/bin/shfmt -f . | grep -v 'vendor' | xargs $(go env GOPATH)/bin/shfmt -bn -ci -s -w
- name: suggester / shfmt
@@ -85,7 +85,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.21'
+ go-version: '1.23'
- name: check on release branch
if: ${{ contains(github.head_ref, 'release-') || contains(github.base_ref, 'release-') }}
run: |
diff --git a/.github/workflows/scan.yml b/.github/workflows/scan.yml
index d179f5fffd..d045319f8c 100644
--- a/.github/workflows/scan.yml
+++ b/.github/workflows/scan.yml
@@ -31,7 +31,7 @@ jobs:
./e2e-tests/build
- name: Run Trivy vulnerability scanner image (linux/arm64)
- uses: aquasecurity/trivy-action@0.28.0
+ uses: aquasecurity/trivy-action@0.29.0
with:
image-ref: '${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}-arm64'
format: 'table'
@@ -50,7 +50,7 @@ jobs:
./e2e-tests/build
- name: Run Trivy vulnerability scanner image (linux/amd64)
- uses: aquasecurity/trivy-action@0.28.0
+ uses: aquasecurity/trivy-action@0.29.0
with:
image-ref: '${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}-amd64'
format: 'table'
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 30bde4e992..c613450266 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -7,7 +7,7 @@ jobs:
steps:
- uses: actions/setup-go@v5
with:
- go-version: '1.21'
+ go-version: '1.23'
- uses: actions/checkout@v4
- name: go test
run: make test
diff --git a/Jenkinsfile b/Jenkinsfile
index 0ad3383f28..be0e7fbe8c 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -361,7 +361,7 @@ EOF
--rm \
-v $WORKSPACE/src/github.com/percona/percona-xtradb-cluster-operator:/go/src/github.com/percona/percona-xtradb-cluster-operator \
-w /go/src/github.com/percona/percona-xtradb-cluster-operator \
- golang:1.22 sh -c '
+ golang:1.23 sh -c '
go install -mod=readonly github.com/google/go-licenses@latest;
/go/bin/go-licenses csv github.com/percona/percona-xtradb-cluster-operator/cmd/manager \
| cut -d , -f 3 \
@@ -390,7 +390,7 @@ EOF
-w /go/src/github.com/percona/percona-xtradb-cluster-operator \
-e GO111MODULE=on \
-e GOFLAGS='-buildvcs=false' \
- golang:1.22 sh -c 'go build -v -o percona-xtradb-cluster-operator github.com/percona/percona-xtradb-cluster-operator/cmd/manager'
+ golang:1.23 sh -c 'go build -v -o percona-xtradb-cluster-operator github.com/percona/percona-xtradb-cluster-operator/cmd/manager'
"
'''
diff --git a/Makefile b/Makefile
index 1d806c99da..4a97bea173 100644
--- a/Makefile
+++ b/Makefile
@@ -101,6 +101,10 @@ ENVTEST = $(shell pwd)/bin/setup-envtest
envtest: ## Download envtest-setup locally if necessary.
$(call go-get-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest@latest)
+SWAGGER = $(shell pwd)/bin/swagger
+swagger: ## Download swagger locally if necessary.
+ $(call go-get-tool,$(SWAGGER),github.com/go-swagger/go-swagger/cmd/swagger@latest)
+
# Prepare release
CERT_MANAGER_VER := $(shell grep -Eo "cert-manager v.*" go.mod|grep -Eo "[0-9]+\.[0-9]+\.[0-9]+")
release: manifests
@@ -141,3 +145,16 @@ after-release: manifests
-e "/^ backup:/,/^ image:/{s#image: .*#image: perconalab/percona-xtradb-cluster-operator:main-pxc8.0-backup#}" \
-e "/initContainer:/,/image:/{s#image: .*#image: perconalab/percona-xtradb-cluster-operator:main#}" \
-e "/^ pmm:/,/^ image:/{s#image: .*#image: perconalab/pmm-client:dev-latest#}" deploy/cr.yaml
+
+VS_BRANCH = main
+version-service-client: swagger
+ curl https://raw.githubusercontent.com/Percona-Lab/percona-version-service/$(VS_BRANCH)/api/version.swagger.yaml \
+ --output ./version.swagger.yaml
+ rm -rf ./version/client
+ mkdir -p ./version/client/models
+ mkdir -p ./version/client/version_service
+ ./bin/swagger generate client \
+ -f ./version.swagger.yaml \
+ -c ./version/client \
+ -m ./version/client/models
+ rm ./version.swagger.yaml
diff --git a/README.md b/README.md
index fbcaec1267..6e1ba1f414 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
[Percona Operator for MySQL based on Percona XtraDB Cluster](https://docs.percona.com/percona-operator-for-mysql/pxc/index.html) (PXC) automates the creation and management of highly available, enterprise-ready MySQL database clusters on Kubernetes.
-Within the [Percona Operator for MySQL based on Percona XtraDB Cluster](https://www.percona.com/doc/kubernetes-operator-for-pxc/index.html) we have implemented our best practices for deployment and configuration Percona XtraDB Cluster instances in a Kubernetes-based environment on-premises or in the cloud. The Operator provides the following capabilities to keep the cluster healthy:
+Within the [Percona Operator for MySQL based on Percona XtraDB Cluster](https://www.percona.com/doc/kubernetes-operator-for-pxc/index.html) we have implemented our best practices for deployment and configuration of Percona XtraDB Cluster instances in a Kubernetes-based environment on-premises or in the cloud. The Operator provides the following capabilities to keep the cluster healthy:
* Easy deployment with no single point of failure
* Load balancing and proxy service with either HAProxy or ProxySQL
@@ -21,8 +21,7 @@ Within the [Percona Operator for MySQL based on Percona XtraDB Cluster](https://
* Automated Password Rotation – use the standard Kubernetes API to enforce password rotation policies for system user
* Private container image registries
-You interact with Percona Operator mostly via the command line tool. If you feel more comfortable with operating the Operator and database clusters via the web interface, there is [Percona Everest](https://docs.percona.com/everest/index.html) - an open-source web-based database provisioning tool available for you. It automates day-to-day database management operations for you, reducing the overall administrative overhead. [Get started with Percona Everest](https://docs.percona.com/everest/quickstart-guide/quick-install.html).
-
+While the Percona Operator is primarily managed through the command line, you can also use **[Percona Everest](https://docs.percona.com/everest/index.html)** for a web-based user interface. This open-source tool provides a streamlined experience for provisioning and managing your databases, simplifying day-to-day tasks and reducing administrative overhead. Learn more about Percona Everest in the [documentation](https://docs.percona.com/everest/index.html) or jump right in with the [quickstart guide](https://docs.percona.com/everest/quickstart-guide/quick-install.html).
# Architecture
@@ -57,41 +56,24 @@ kubectl apply -f https://raw.githubusercontent.com/percona/percona-xtradb-cluste
See full documentation with examples and various advanced cases on [percona.com](https://www.percona.com/doc/kubernetes-operator-for-pxc/index.html).
+# Need help?
+
+**Commercial Support** | **Community Support** |
+:-: | :-: |
+|
Enterprise-grade assistance for your mission-critical MySQL deployments with the Percona Operator for MySQL. Get expert guidance for complex tasks like multi-cloud replication, database migration and building platforms.
|
Connect with our engineers and fellow users for general questions, troubleshooting, and sharing feedback and ideas.
|
+| **[Get Percona Support](https://hubs.ly/Q02ZTH940)** | **[Visit our Forum](https://forums.percona.com/c/mysql-mariadb/percona-kubernetes-operator-for-mysql/28)** |
+
# Contributing
Percona welcomes and encourages community contributions to help improve Percona Operator for MySQL.
See the [Contribution Guide](CONTRIBUTING.md) and [Building and Testing Guide](e2e-tests/README.md) for more information on how you can contribute.
-## Communication
-
-We would love to hear from you! Reach out to us on [Forum](https://forums.percona.com/c/mysql-mariadb/percona-kubernetes-operator-for-mysql/28) with your questions, feedback and ideas
-
-# Join Percona Kubernetes Squad!
-```
- % _____
- %%% | __ \
- ###%%%%%%%%%%%%* | |__) |__ _ __ ___ ___ _ __ __ _
- ### ##%% %%%% | ___/ _ \ '__/ __/ _ \| '_ \ / _` |
- #### ##% %%%% | | | __/ | | (_| (_) | | | | (_| |
- ### #### %%% |_| \___|_| \___\___/|_| |_|\__,_|
- ,((### ### %%% _ _ _____ _
- (((( (### #### %%%% | | / _ \ / ____| | |
- ((( ((# ###### | | _| (_) |___ | (___ __ _ _ _ __ _ __| |
- (((( (((# #### | |/ /> _ __| \___ \ / _` | | | |/ _` |/ _` |
- /(( ,((( *### | <| (_) \__ \ ____) | (_| | |_| | (_| | (_| |
- //// ((( #### |_|\_\\___/|___/ |_____/ \__, |\__,_|\__,_|\__,_|
- /// (((( #### | |
- /////////////(((((((((((((((((######## |_| Join @ percona.com/k8s
-```
-
-You can get early access to new product features, invite-only ”ask me anything” sessions with Percona Kubernetes experts, and monthly swag raffles. Interested? Fill in the form at [percona.com/k8s](https://www.percona.com/k8s).
-
-# Roadmap
+## Roadmap
We have a public roadmap which can be found [here](https://github.com/orgs/percona/projects/10). Please feel free to contribute and propose new features by following the roadmap [guidelines](https://github.com/percona/roadmap).
-# Submitting Bug Reports
+## Submitting Bug Reports
If you find a bug in Percona Docker Images or in one of the related projects, please submit a report to that project's [JIRA](https://jira.percona.com/browse/K8SPXC) issue tracker or [create a GitHub issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-an-issue#creating-an-issue-from-a-repository) in this repository.
diff --git a/build/Dockerfile b/build/Dockerfile
index 1e18a75876..e2839fd136 100644
--- a/build/Dockerfile
+++ b/build/Dockerfile
@@ -1,4 +1,4 @@
-FROM --platform=${BUILDPLATFORM} golang:1.22 AS go_builder
+FROM --platform=${BUILDPLATFORM} golang:1.23 AS go_builder
WORKDIR /go/src/github.com/percona/percona-xtradb-cluster-operator
COPY go.mod go.sum ./
@@ -31,8 +31,8 @@ RUN GOOS=$GOOS GOARCH=${TARGETARCH} CGO_ENABLED=$CGO_ENABLED GO_LDFLAGS=$GO_LDFL
&& cp -r build/_output/bin/pitr /usr/local/bin/pitr
RUN GOOS=$GOOS GOARCH=${TARGETARCH} CGO_ENABLED=$CGO_ENABLED GO_LDFLAGS=$GO_LDFLAGS \
- go build -o build/_output/bin/mysql-state-monitor \
- cmd/mysql-state-monitor/main.go \
+ go build -ldflags "-w -s -X main.GitCommit=$GIT_COMMIT -X main.GitBranch=$GIT_BRANCH -X main.BuildTime=$BUILD_TIME" \
+ -o build/_output/bin/mysql-state-monitor cmd/mysql-state-monitor/main.go \
&& cp -r build/_output/bin/mysql-state-monitor /usr/local/bin/mysql-state-monitor
# Looking for all possible License/Notice files and copying them to the image
diff --git a/build/liveness-check.sh b/build/liveness-check.sh
index 912cb7ff45..047985a1e6 100755
--- a/build/liveness-check.sh
+++ b/build/liveness-check.sh
@@ -22,7 +22,8 @@ NODE_IP=$(hostname -I | awk ' { print $1 } ')
#Timeout exists for instances where mysqld may be hung
TIMEOUT=$((${LIVENESS_CHECK_TIMEOUT:-5} - 1))
MYSQL_STATE=ready
-if [[ ${MYSQL_VERSION} == '8.0' ]]; then
+MYSQL_VERSION=$(mysqld -V | awk '{print $3}' | awk -F'.' '{print $1"."$2}')
+if [[ ${MYSQL_VERSION} =~ ^(8\.0|8\.4)$ && -f ${MYSQL_STATE_FILE} ]]; then
MYSQL_STATE=$(tr -d '\0' < ${MYSQL_STATE_FILE})
fi
diff --git a/build/pxc-configure-pxc.sh b/build/pxc-configure-pxc.sh
index 70aa36fa3b..7404c3c369 100755
--- a/build/pxc-configure-pxc.sh
+++ b/build/pxc-configure-pxc.sh
@@ -69,7 +69,7 @@ fi
CFG=/etc/mysql/node.cnf
MYSQL_VERSION=$(mysqld -V | awk '{print $3}' | awk -F'.' '{print $1"."$2}')
-if [ "$MYSQL_VERSION" == '8.0' ]; then
+if [[ "$MYSQL_VERSION" =~ ^(8\.0|8\.4)$ ]]; then
grep -E -q "^[#]?admin-address" "$CFG" || sed '/^\[mysqld\]/a admin-address=\n' ${CFG} 1<>${CFG}
grep -E -q "^[#]?log_error_suppression_list" "$CFG" || sed '/^\[mysqld\]/a log_error_suppression_list="MY-010055"\n' ${CFG} 1<>${CFG}
else
diff --git a/build/pxc-entrypoint.sh b/build/pxc-entrypoint.sh
index 1562e8e4d6..9f12e2b97c 100755
--- a/build/pxc-entrypoint.sh
+++ b/build/pxc-entrypoint.sh
@@ -165,7 +165,7 @@ if [ -f "$vault_secret" ]; then
sed -i "/\[mysqld\]/a early-plugin-load=keyring_vault.so" $CFG
sed -i "/\[mysqld\]/a keyring_vault_config=$vault_secret" $CFG
- if [ "$MYSQL_VERSION" == '8.0' ]; then
+ if [[ "$MYSQL_VERSION" =~ ^(8\.0|8\.4)$ ]]; then
sed -i "/\[mysqld\]/a default_table_encryption=ON" $CFG
sed -i "/\[mysqld\]/a table_encryption_privilege_check=ON" $CFG
sed -i "/\[mysqld\]/a innodb_undo_log_encrypt=ON" $CFG
@@ -189,12 +189,11 @@ fi
grep -q "^progress=" $CFG && sed -i "s|^progress=.*|progress=1|" $CFG
grep -q "^\[sst\]" "$CFG" || printf '[sst]\n' >>"$CFG"
grep -q "^cpat=" "$CFG" || sed '/^\[sst\]/a cpat=.*\\.pem$\\|.*init\\.ok$\\|.*galera\\.cache$\\|.*wsrep_recovery_verbose\\.log$\\|.*readiness-check\\.sh$\\|.*liveness-check\\.sh$\\|.*get-pxc-state$\\|.*sst_in_progress$\\|.*sleep-forever$\\|.*pmm-prerun\\.sh$\\|.*sst-xb-tmpdir$\\|.*\\.sst$\\|.*gvwstate\\.dat$\\|.*grastate\\.dat$\\|.*\\.err$\\|.*\\.log$\\|.*RPM_UPGRADE_MARKER$\\|.*RPM_UPGRADE_HISTORY$\\|.*pxc-entrypoint\\.sh$\\|.*unsafe-bootstrap\\.sh$\\|.*pxc-configure-pxc\\.sh\\|.*peer-list$\\|.*auth_plugin$\\|.*version_info$\\|.*mysql-state-monitor$\\|.*mysql-state-monitor\\.log$\\|.*notify\\.sock$\\|.*mysql\\.state$' "$CFG" 1<>"$CFG"
-if [[ $MYSQL_VERSION == '8.0' ]]; then
- if [[ $MYSQL_PATCH_VERSION -ge 26 ]]; then
- grep -q "^skip_replica_start=ON" "$CFG" || sed -i "/\[mysqld\]/a skip_replica_start=ON" $CFG
- else
- grep -q "^skip_slave_start=ON" "$CFG" || sed -i "/\[mysqld\]/a skip_slave_start=ON" $CFG
- fi
+
+if [[ $MYSQL_VERSION == '8.0' && $MYSQL_PATCH_VERSION -ge 26 ]] || [[ $MYSQL_VERSION == '8.4' ]]; then
+ grep -q "^skip_replica_start=ON" "$CFG" || sed -i "/\[mysqld\]/a skip_replica_start=ON" $CFG
+else
+ grep -q "^skip_slave_start=ON" "$CFG" || sed -i "/\[mysqld\]/a skip_slave_start=ON" $CFG
fi
auth_plugin=${DEFAULT_AUTHENTICATION_PLUGIN}
@@ -220,7 +219,7 @@ fi
echo "${auth_plugin}" >/var/lib/mysql/auth_plugin
sed -i "/default_authentication_plugin/d" $CFG
-if [[ $MYSQL_VERSION == '8.0' && $MYSQL_PATCH_VERSION -ge 27 ]]; then
+if [[ $MYSQL_VERSION == '8.0' && $MYSQL_PATCH_VERSION -ge 27 ]] || [[ $MYSQL_VERSION == "8.4" ]]; then
sed -i "/\[mysqld\]/a authentication_policy=${auth_plugin},," $CFG
else
sed -i "/\[mysqld\]/a default_authentication_plugin=${auth_plugin}" $CFG
@@ -294,7 +293,8 @@ if [[ -z ${WSREP_CLUSTER_NAME} || ${WSREP_CLUSTER_NAME} == 'noname' ]]; then
exit 1
fi
-if [[ -n ${NOTIFY_SOCKET} && ${MYSQL_VERSION} == '8.0' ]]; then
+if [[ -n ${MYSQL_NOTIFY_SOCKET} && ${MYSQL_VERSION} =~ ^(8\.0|8\.4)$ ]]; then
+ export NOTIFY_SOCKET=${MYSQL_NOTIFY_SOCKET}
nohup /var/lib/mysql/mysql-state-monitor >/var/lib/mysql/mysql-state-monitor.log 2>&1 < /dev/null &
fi
@@ -327,7 +327,11 @@ if [ -z "$CLUSTER_JOIN" ] && [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
echo 'Initializing database'
# we initialize database into $TMPDIR because "--initialize-insecure" option does not work if directory is not empty
# in some cases storage driver creates unremovable artifacts (see K8SPXC-286), so $DATADIR cleanup is not possible
- "$@" --initialize-insecure --skip-ssl --datadir="$TMPDIR"
+ if [[ $MYSQL_VERSION == "8.4" ]]; then
+ "$@" --initialize-insecure --datadir="$TMPDIR"
+ else
+ "$@" --initialize-insecure --skip-ssl --datadir="$TMPDIR"
+ fi
mv "$TMPDIR"/* "$DATADIR/"
rm -rfv "$TMPDIR"
echo 'Database initialized'
@@ -385,7 +389,7 @@ if [ -z "$CLUSTER_JOIN" ] && [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
file_env 'MONITOR_HOST' 'localhost'
file_env 'MONITOR_PASSWORD' 'monitor' 'monitor'
file_env 'REPLICATION_PASSWORD' 'replication' 'replication'
- if [ "$MYSQL_VERSION" == '8.0' ]; then
+ if [[ "$MYSQL_VERSION" =~ ^(8\.0|8\.4)$ ]]; then
read -r -d '' monitorConnectGrant <<-EOSQL || true
GRANT SERVICE_CONNECTION_ADMIN ON *.* TO 'monitor'@'${MONITOR_HOST}';
EOSQL
@@ -393,7 +397,7 @@ if [ -z "$CLUSTER_JOIN" ] && [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
# SYSTEM_USER since 8.0.16
# https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_system-user
- if [[ $MYSQL_VERSION == "8.0" ]] && ((MYSQL_PATCH_VERSION >= 16)); then
+ if [[ $MYSQL_VERSION == "8.0" ]] && ((MYSQL_PATCH_VERSION >= 16)) || [[ $MYSQL_VERSION == "8.4" ]]; then
read -r -d '' systemUserGrant <<-EOSQL || true
GRANT SYSTEM_USER ON *.* TO 'monitor'@'${MONITOR_HOST}';
EOSQL
@@ -518,19 +522,11 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
fi
set -x
- if [[ ${MYSQL_VERSION} == '8.0' ]]; then
- mysqlState="startup"
- while [[ "${mysqlState}" != "ready" ]]; do
- mysqlState=$(tr -d '\0' < ${MYSQL_STATE_FILE})
- echo >&2 "MySQL upgrade process in progress..."
- sleep 1
- done
- fi
for i in {120..0}; do
if echo 'SELECT 1' | "${mysql[@]}" &>/dev/null; then
break
fi
-
+ echo >&2 "MySQL upgrade process in progress..."
sleep 1
done
if [ "$i" = 0 ]; then
diff --git a/build/readiness-check.sh b/build/readiness-check.sh
index fbb35248b4..7673872759 100755
--- a/build/readiness-check.sh
+++ b/build/readiness-check.sh
@@ -16,11 +16,6 @@ MYSQL_PASSWORD="${mysql_pass:-$MONITOR_PASSWORD}"
DEFAULTS_EXTRA_FILE=${DEFAULTS_EXTRA_FILE:-/etc/my.cnf}
AVAILABLE_WHEN_DONOR=${AVAILABLE_WHEN_DONOR:-1}
NODE_IP=$(hostname -I | awk ' { print $1 } ')
-MYSQL_STATE=ready
-if [[ ${MYSQL_VERSION} == '8.0' ]]; then
- MYSQL_STATE=$(tr -d '\0' < ${MYSQL_STATE_FILE})
-fi
-
#Timeout exists for instances where mysqld may be hung
TIMEOUT=$((${READINESS_CHECK_TIMEOUT:-10} - 1))
@@ -40,8 +35,7 @@ WSREP_STATUS=($(MYSQL_PWD="${MYSQL_PASSWORD}" $MYSQL_CMDLINE --init-command="SET
sed -n -e '2p' -e '5p' | tr '\n' ' '))
set -x
-if [[ "${MYSQL_STATE}" == "ready" && ${WSREP_STATUS[1]} == 'Primary' &&
- (${WSREP_STATUS[0]} -eq 4 || (${WSREP_STATUS[0]} -eq 2 && $AVAILABLE_WHEN_DONOR -eq 1)) ]]; then
+if [[ ${WSREP_STATUS[1]} == 'Primary' && (${WSREP_STATUS[0]} -eq 4 || (${WSREP_STATUS[0]} -eq 2 && $AVAILABLE_WHEN_DONOR -eq 1)) ]]; then
exit 0
else
exit 1
diff --git a/cmd/mysql-state-monitor/main.go b/cmd/mysql-state-monitor/main.go
index 912268bab2..33468edb7b 100644
--- a/cmd/mysql-state-monitor/main.go
+++ b/cmd/mysql-state-monitor/main.go
@@ -8,6 +8,12 @@ import (
"strings"
)
+var (
+ GitCommit string
+ GitBranch string
+ BuildTime string
+)
+
type MySQLState string
const (
@@ -33,27 +39,67 @@ func parseDatum(datum string) MySQLState {
switch status {
case "Server is operational":
return MySQLReady
- case "Server shutdown in progress":
+ case "Server shutdown in progress",
+ "Forceful shutdown of connections in progress",
+ "Graceful shutdown of connections in progress",
+ "Components initialization unsuccessful",
+ "Execution of SQL Commands from Init-file unsuccessful",
+ "Initialization of dynamic plugins unsuccessful",
+ "Initialization of MySQL system tables unsuccessful",
+ "InnoDB crash recovery unsuccessful",
+ "InnoDB initialization unsuccessful":
return MySQLDown
case "Server startup in progress",
- "Data Dictionary upgrade in progress",
- "Data Dictionary upgrade complete",
+ "Server initialization in progress",
"Server upgrade in progress",
"Server upgrade complete",
"Server downgrade in progress",
"Server downgrade complete",
+ "Data Dictionary upgrade in progress",
+ "Data Dictionary upgrade complete",
"Data Dictionary upgrade from MySQL 5.7 in progress",
"Data Dictionary upgrade from MySQL 5.7 complete",
+ "Components initialization in progress",
+ "Components initialization successful",
+ "Connection shutdown complete",
+ "Execution of SQL Commands from Init-file in progress",
+ "Execution of SQL Commands from Init-file successful",
+ "Initialization of dynamic plugins in progress",
+ "Initialization of dynamic plugins successful",
+ "Initialization of MySQL system tables in progress",
+ "Initialization of MySQL system tables successful",
+ "InnoDB crash recovery in progress",
+ "InnoDB crash recovery successful",
+ "InnoDB initialization in progress",
+ "InnoDB initialization successful",
+ "Shutdown of plugins complete",
+ "Shutdown of components in progress",
+ "Shutdown of components successful",
+ "Shutdown of plugins in progress",
+ "Shutdown of replica threads in progress",
"Server shutdown complete": // we treat this as startup because during init, MySQL notifies this even if it's up
return MySQLStartup
}
+
+ // these statuses have variables in it
+ // that's why we're handling them separately
+ switch {
+ case strings.HasPrefix(status, "Pre DD shutdown of MySQL SE plugin"):
+ return MySQLStartup
+ case strings.HasPrefix(status, "Server shutdown complete"):
+ return MySQLStartup
+ case strings.HasPrefix(status, "Server initialization complete"):
+ return MySQLStartup
+ }
+
}
return MySQLUnknown
}
func main() {
- log.Println("Starting mysql-state-monitor")
+ log.Println("Starting mysql-state-monitor...")
+ log.Printf("GitCommit=%s GitBranch=%s BuildTime=%s", GitCommit, GitBranch, BuildTime)
socketPath, ok := os.LookupEnv("NOTIFY_SOCKET")
if !ok {
diff --git a/config/crd/bases/pxc.percona.com_perconaxtradbclusters.yaml b/config/crd/bases/pxc.percona.com_perconaxtradbclusters.yaml
index 4524cfb602..e4767daa27 100644
--- a/config/crd/bases/pxc.percona.com_perconaxtradbclusters.yaml
+++ b/config/crd/bases/pxc.percona.com_perconaxtradbclusters.yaml
@@ -793,6 +793,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -1954,6 +1956,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -5218,6 +5222,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -8106,6 +8112,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
diff --git a/deploy/bundle.yaml b/deploy/bundle.yaml
index 5555405b7d..48cfacbf03 100644
--- a/deploy/bundle.yaml
+++ b/deploy/bundle.yaml
@@ -1713,6 +1713,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -2874,6 +2876,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -6138,6 +6142,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -9026,6 +9032,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
diff --git a/deploy/cr-minimal.yaml b/deploy/cr-minimal.yaml
index 26fccfbac3..ae69121c41 100644
--- a/deploy/cr-minimal.yaml
+++ b/deploy/cr-minimal.yaml
@@ -3,7 +3,7 @@ kind: PerconaXtraDBCluster
metadata:
name: minimal-cluster
spec:
- crVersion: 1.16.0
+ crVersion: 1.17.0
secretsName: minimal-cluster-secrets
unsafeFlags:
tls: true
diff --git a/deploy/cr.yaml b/deploy/cr.yaml
index 42f319486d..7278d66f99 100644
--- a/deploy/cr.yaml
+++ b/deploy/cr.yaml
@@ -10,8 +10,8 @@ metadata:
# annotations:
# percona.com/issue-vault-token: "true"
spec:
- crVersion: 1.16.0
-# enableVolumeExpansion: true
+ crVersion: 1.17.0
+# enableVolumeExpansion: false
# ignoreAnnotations:
# - iam.amazonaws.com/role
# ignoreLabels:
diff --git a/deploy/crd.yaml b/deploy/crd.yaml
index 364a833e88..ea2b5fe71a 100644
--- a/deploy/crd.yaml
+++ b/deploy/crd.yaml
@@ -1713,6 +1713,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -2874,6 +2876,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -6138,6 +6142,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -9026,6 +9032,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
diff --git a/deploy/cw-bundle.yaml b/deploy/cw-bundle.yaml
index 40bd8b1bcd..94d9623bc6 100644
--- a/deploy/cw-bundle.yaml
+++ b/deploy/cw-bundle.yaml
@@ -1713,6 +1713,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -2874,6 +2876,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -6138,6 +6142,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
@@ -9026,6 +9032,8 @@ spec:
runAsUser:
format: int64
type: integer
+ seLinuxChangePolicy:
+ type: string
seLinuxOptions:
properties:
level:
diff --git a/e2e-tests/affinity/compare/statefulset_custom-pxc-k127-oc.yml b/e2e-tests/affinity/compare/statefulset_custom-pxc-k127-oc.yml
index 85bd88018b..fe440e9a68 100644
--- a/e2e-tests/affinity/compare/statefulset_custom-pxc-k127-oc.yml
+++ b/e2e-tests/affinity/compare/statefulset_custom-pxc-k127-oc.yml
@@ -105,7 +105,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -155,7 +155,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 600m
memory: 1G
diff --git a/e2e-tests/affinity/compare/statefulset_custom-pxc-k127.yml b/e2e-tests/affinity/compare/statefulset_custom-pxc-k127.yml
index 07a30bfe38..7523daa624 100644
--- a/e2e-tests/affinity/compare/statefulset_custom-pxc-k127.yml
+++ b/e2e-tests/affinity/compare/statefulset_custom-pxc-k127.yml
@@ -105,7 +105,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -155,7 +155,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 600m
memory: 1G
diff --git a/e2e-tests/affinity/compare/statefulset_custom-pxc-oc.yml b/e2e-tests/affinity/compare/statefulset_custom-pxc-oc.yml
index bb535f98d4..d46257dc04 100644
--- a/e2e-tests/affinity/compare/statefulset_custom-pxc-oc.yml
+++ b/e2e-tests/affinity/compare/statefulset_custom-pxc-oc.yml
@@ -102,7 +102,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/affinity/compare/statefulset_custom-pxc.yml b/e2e-tests/affinity/compare/statefulset_custom-pxc.yml
index 1f2ed28eca..fe227d30e3 100644
--- a/e2e-tests/affinity/compare/statefulset_custom-pxc.yml
+++ b/e2e-tests/affinity/compare/statefulset_custom-pxc.yml
@@ -102,7 +102,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/affinity/compare/statefulset_hostname-pxc-k127-oc.yml b/e2e-tests/affinity/compare/statefulset_hostname-pxc-k127-oc.yml
index fc02957d8c..21fe723a55 100644
--- a/e2e-tests/affinity/compare/statefulset_hostname-pxc-k127-oc.yml
+++ b/e2e-tests/affinity/compare/statefulset_hostname-pxc-k127-oc.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -128,7 +128,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 600m
memory: 1G
diff --git a/e2e-tests/affinity/compare/statefulset_hostname-pxc-k127.yml b/e2e-tests/affinity/compare/statefulset_hostname-pxc-k127.yml
index e11dc0cb0b..2100d03134 100644
--- a/e2e-tests/affinity/compare/statefulset_hostname-pxc-k127.yml
+++ b/e2e-tests/affinity/compare/statefulset_hostname-pxc-k127.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -128,7 +128,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 600m
memory: 1G
diff --git a/e2e-tests/affinity/compare/statefulset_hostname-pxc-oc.yml b/e2e-tests/affinity/compare/statefulset_hostname-pxc-oc.yml
index 0fea26ac7f..5cb937c6a5 100644
--- a/e2e-tests/affinity/compare/statefulset_hostname-pxc-oc.yml
+++ b/e2e-tests/affinity/compare/statefulset_hostname-pxc-oc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/affinity/compare/statefulset_hostname-pxc.yml b/e2e-tests/affinity/compare/statefulset_hostname-pxc.yml
index 9519cb8efc..5d6f269bac 100644
--- a/e2e-tests/affinity/compare/statefulset_hostname-pxc.yml
+++ b/e2e-tests/affinity/compare/statefulset_hostname-pxc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/affinity/compare/statefulset_region-pxc-k127-oc.yml b/e2e-tests/affinity/compare/statefulset_region-pxc-k127-oc.yml
index e27ccfa7cc..a5ebd21f01 100644
--- a/e2e-tests/affinity/compare/statefulset_region-pxc-k127-oc.yml
+++ b/e2e-tests/affinity/compare/statefulset_region-pxc-k127-oc.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -128,7 +128,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 600m
memory: 1G
diff --git a/e2e-tests/affinity/compare/statefulset_region-pxc-k127.yml b/e2e-tests/affinity/compare/statefulset_region-pxc-k127.yml
index ee4c8945a5..5e6416abbd 100644
--- a/e2e-tests/affinity/compare/statefulset_region-pxc-k127.yml
+++ b/e2e-tests/affinity/compare/statefulset_region-pxc-k127.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -128,7 +128,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 600m
memory: 1G
diff --git a/e2e-tests/affinity/compare/statefulset_region-pxc-oc.yml b/e2e-tests/affinity/compare/statefulset_region-pxc-oc.yml
index 4d8dd6e001..fbb2107b8b 100644
--- a/e2e-tests/affinity/compare/statefulset_region-pxc-oc.yml
+++ b/e2e-tests/affinity/compare/statefulset_region-pxc-oc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/affinity/compare/statefulset_region-pxc.yml b/e2e-tests/affinity/compare/statefulset_region-pxc.yml
index c7985966cd..9db0799592 100644
--- a/e2e-tests/affinity/compare/statefulset_region-pxc.yml
+++ b/e2e-tests/affinity/compare/statefulset_region-pxc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/affinity/compare/statefulset_zone-pxc-k127-oc.yml b/e2e-tests/affinity/compare/statefulset_zone-pxc-k127-oc.yml
index 0f6fb0b3e7..0446d8f58d 100644
--- a/e2e-tests/affinity/compare/statefulset_zone-pxc-k127-oc.yml
+++ b/e2e-tests/affinity/compare/statefulset_zone-pxc-k127-oc.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -128,7 +128,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 600m
memory: 1G
diff --git a/e2e-tests/affinity/compare/statefulset_zone-pxc-k127.yml b/e2e-tests/affinity/compare/statefulset_zone-pxc-k127.yml
index dbe982b820..91a0747a9d 100644
--- a/e2e-tests/affinity/compare/statefulset_zone-pxc-k127.yml
+++ b/e2e-tests/affinity/compare/statefulset_zone-pxc-k127.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -128,7 +128,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 600m
memory: 1G
diff --git a/e2e-tests/affinity/compare/statefulset_zone-pxc-oc.yml b/e2e-tests/affinity/compare/statefulset_zone-pxc-oc.yml
index 35d5885b8f..b96c86597e 100644
--- a/e2e-tests/affinity/compare/statefulset_zone-pxc-oc.yml
+++ b/e2e-tests/affinity/compare/statefulset_zone-pxc-oc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/affinity/compare/statefulset_zone-pxc.yml b/e2e-tests/affinity/compare/statefulset_zone-pxc.yml
index 07cac91e4c..b1b716f9b8 100644
--- a/e2e-tests/affinity/compare/statefulset_zone-pxc.yml
+++ b/e2e-tests/affinity/compare/statefulset_zone-pxc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/affinity/conf/custom.yml b/e2e-tests/affinity/conf/custom.yml
index 23217bc465..b26f17392e 100644
--- a/e2e-tests/affinity/conf/custom.yml
+++ b/e2e-tests/affinity/conf/custom.yml
@@ -13,7 +13,7 @@ spec:
memory: 1G
cpu: 600m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/affinity/conf/hostname.yml b/e2e-tests/affinity/conf/hostname.yml
index a62a26aeb5..557b3d20dd 100644
--- a/e2e-tests/affinity/conf/hostname.yml
+++ b/e2e-tests/affinity/conf/hostname.yml
@@ -13,7 +13,7 @@ spec:
memory: 1G
cpu: 600m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/affinity/conf/region.yml b/e2e-tests/affinity/conf/region.yml
index 09440c04ca..e81d6d10f4 100644
--- a/e2e-tests/affinity/conf/region.yml
+++ b/e2e-tests/affinity/conf/region.yml
@@ -13,7 +13,7 @@ spec:
memory: 1G
cpu: 600m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/affinity/conf/zone.yml b/e2e-tests/affinity/conf/zone.yml
index f92c2aa51d..5a9bfe21b2 100644
--- a/e2e-tests/affinity/conf/zone.yml
+++ b/e2e-tests/affinity/conf/zone.yml
@@ -13,7 +13,7 @@ spec:
memory: 1G
cpu: 600m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/auto-tuning/conf/auto-tuning-with-limits.yml b/e2e-tests/auto-tuning/conf/auto-tuning-with-limits.yml
index 80dcf752a8..38a18f6882 100644
--- a/e2e-tests/auto-tuning/conf/auto-tuning-with-limits.yml
+++ b/e2e-tests/auto-tuning/conf/auto-tuning-with-limits.yml
@@ -11,7 +11,7 @@ spec:
image: -pxc
resources:
limits:
- memory: 1Gi
+ memory: 2Gi
cpu: 1000m
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/auto-tuning/conf/auto-tuning-with-template-transform.yml b/e2e-tests/auto-tuning/conf/auto-tuning-with-template-transform.yml
index 9484353658..760fcc7f38 100644
--- a/e2e-tests/auto-tuning/conf/auto-tuning-with-template-transform.yml
+++ b/e2e-tests/auto-tuning/conf/auto-tuning-with-template-transform.yml
@@ -15,7 +15,7 @@ spec:
image: -pxc
resources:
limits:
- memory: 1Gi
+ memory: 4Gi
requests:
memory: 1Gi
volumeSpec:
diff --git a/e2e-tests/auto-tuning/conf/auto-tuning-with-template.yml b/e2e-tests/auto-tuning/conf/auto-tuning-with-template.yml
index db229e521f..9ef4745c2c 100644
--- a/e2e-tests/auto-tuning/conf/auto-tuning-with-template.yml
+++ b/e2e-tests/auto-tuning/conf/auto-tuning-with-template.yml
@@ -9,7 +9,7 @@ spec:
pxc:
configuration: |
[mysqld]
- innodb_buffer_pool_size={{containerMemoryLimit}}
+ innodb_buffer_pool_size={{containerMemoryLimit * 1 / 2}}
max_connections=200
size: 3
image: -pxc
@@ -17,7 +17,7 @@ spec:
requests:
memory: 1Gi
limits:
- memory: 2Gi
+ memory: 4Gi
volumeSpec:
persistentVolumeClaim:
resources:
diff --git a/e2e-tests/auto-tuning/run b/e2e-tests/auto-tuning/run
index 0b4b141dc5..031cb5e0fa 100755
--- a/e2e-tests/auto-tuning/run
+++ b/e2e-tests/auto-tuning/run
@@ -106,8 +106,8 @@ CONNECTIONS=$(run_mysql \
'SELECT @@max_connections;' \
"-h $cluster-pxc -uroot -proot_password")
-if [[ ${INNODB_SIZE} != 805306368 ]]; then
- echo "with-template-transform: innodb_buffer_pool_size ${INNODB_SIZE} should be 805306368"
+if [[ ${INNODB_SIZE} != 3221225472 ]]; then
+ echo "with-template-transform: innodb_buffer_pool_size ${INNODB_SIZE} should be 3221225472"
exit 1
fi
diff --git a/e2e-tests/big-data/conf/restore-backup-84.yml b/e2e-tests/big-data/conf/restore-backup-84.yml
new file mode 100644
index 0000000000..7b7566fc89
--- /dev/null
+++ b/e2e-tests/big-data/conf/restore-backup-84.yml
@@ -0,0 +1,12 @@
+apiVersion: pxc.percona.com/v1
+kind: PerconaXtraDBClusterRestore
+metadata:
+ name: restore1
+spec:
+ pxcCluster: some-name
+ backupSource:
+ destination: s3://percona-jenkins-artifactory/big-data-test/some-name-2024-11-23-19:32:52-full
+ s3:
+ credentialsSecret: aws-s3-secret
+ region: us-east-1
+ endpointUrl: https://s3.amazonaws.com
diff --git a/e2e-tests/big-data/run b/e2e-tests/big-data/run
index 4b73f5f405..d4b556dd3d 100755
--- a/e2e-tests/big-data/run
+++ b/e2e-tests/big-data/run
@@ -19,10 +19,12 @@ main() {
desc 'create first PXC cluster'
cluster="some-name"
spinup_pxc "$cluster" "$test_dir/conf/$cluster.yml" "3" "10" "$test_dir/conf/secrets_without_tls.yml"
-
if [[ $IMAGE_PXC =~ 8\.0 ]]; then
desc 'Switch to 8.0 backup'
kubectl_bin apply -f "${test_dir}/conf/restore-backup.yml"
+ elif [[ $IMAGE_PXC =~ 8\.4 ]]; then
+ desc 'Switch to 8.4 backup'
+ kubectl_bin apply -f "${test_dir}/conf/restore-backup-84.yml"
else
kubectl_bin apply -f "${test_dir}/conf/restore-backup-57.yml"
fi
diff --git a/e2e-tests/conf/some-name.yml b/e2e-tests/conf/some-name.yml
index a4448cd7a5..058c8138a1 100644
--- a/e2e-tests/conf/some-name.yml
+++ b/e2e-tests/conf/some-name.yml
@@ -18,7 +18,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/cross-site/conf/cross-site-replica.yml b/e2e-tests/cross-site/conf/cross-site-replica.yml
index 2a1ee73d4e..36d8535d99 100644
--- a/e2e-tests/cross-site/conf/cross-site-replica.yml
+++ b/e2e-tests/cross-site/conf/cross-site-replica.yml
@@ -29,7 +29,7 @@ spec:
memory: 1G
cpu: 600m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/cross-site/conf/cross-site-source.yml b/e2e-tests/cross-site/conf/cross-site-source.yml
index f3831f55e0..ddf40103d9 100644
--- a/e2e-tests/cross-site/conf/cross-site-source.yml
+++ b/e2e-tests/cross-site/conf/cross-site-source.yml
@@ -29,7 +29,7 @@ spec:
memory: 1G
cpu: 600m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/custom-users/compare/user-five-57.sql b/e2e-tests/custom-users/compare/user-five-57.sql
new file mode 100644
index 0000000000..d91c85576e
--- /dev/null
+++ b/e2e-tests/custom-users/compare/user-five-57.sql
@@ -0,0 +1,4 @@
+GRANT USAGE ON *.* TO 'user-five'@'%'
+GRANT SELECT, UPDATE, DELETE ON `db1`.* TO 'user-five'@'%'
+GRANT SELECT, UPDATE, DELETE ON `db2`.* TO 'user-five'@'%'
+GRANT SELECT, UPDATE, DELETE ON `db3`.* TO 'user-five'@'%'
diff --git a/e2e-tests/custom-users/compare/user-four-2-57.sql b/e2e-tests/custom-users/compare/user-four-2-57.sql
new file mode 100644
index 0000000000..11be89d861
--- /dev/null
+++ b/e2e-tests/custom-users/compare/user-four-2-57.sql
@@ -0,0 +1,4 @@
+GRANT USAGE ON *.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE ON `db1`.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE ON `db2`.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE ON `db3`.* TO 'user-four'@'%'
diff --git a/e2e-tests/custom-users/compare/user-four-3-57.sql b/e2e-tests/custom-users/compare/user-four-3-57.sql
new file mode 100644
index 0000000000..268149a72a
--- /dev/null
+++ b/e2e-tests/custom-users/compare/user-four-3-57.sql
@@ -0,0 +1,4 @@
+GRANT USAGE ON *.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE, DELETE ON `db1`.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE, DELETE ON `db2`.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE, DELETE ON `db3`.* TO 'user-four'@'%'
diff --git a/e2e-tests/custom-users/compare/user-four-4-57.sql b/e2e-tests/custom-users/compare/user-four-4-57.sql
new file mode 100644
index 0000000000..fd56ff360f
--- /dev/null
+++ b/e2e-tests/custom-users/compare/user-four-4-57.sql
@@ -0,0 +1,4 @@
+GRANT USAGE ON *.* TO 'user-four'@'%'
+GRANT SELECT, INSERT, UPDATE, DELETE ON `db1`.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE, DELETE ON `db2`.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE, DELETE ON `db3`.* TO 'user-four'@'%'
diff --git a/e2e-tests/custom-users/compare/user-four-57.sql b/e2e-tests/custom-users/compare/user-four-57.sql
new file mode 100644
index 0000000000..0f267fd683
--- /dev/null
+++ b/e2e-tests/custom-users/compare/user-four-57.sql
@@ -0,0 +1,3 @@
+GRANT USAGE ON *.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE ON `db1`.* TO 'user-four'@'%'
+GRANT SELECT, UPDATE ON `db2`.* TO 'user-four'@'%'
diff --git a/e2e-tests/custom-users/compare/user-one-2-57.sql b/e2e-tests/custom-users/compare/user-one-2-57.sql
new file mode 100644
index 0000000000..fbffaa448c
--- /dev/null
+++ b/e2e-tests/custom-users/compare/user-one-2-57.sql
@@ -0,0 +1,5 @@
+GRANT USAGE ON *.* TO 'user-one'@'127.0.0.1'
+GRANT SELECT, INSERT ON `db1`.* TO 'user-one'@'127.0.0.1'
+GRANT SELECT, INSERT ON `db2`.* TO 'user-one'@'127.0.0.1'
+GRANT SELECT, INSERT ON `db1`.* TO 'user-one'@'%'
+GRANT SELECT, INSERT ON `db2`.* TO 'user-one'@'%'
diff --git a/e2e-tests/custom-users/compare/user-one-57.sql b/e2e-tests/custom-users/compare/user-one-57.sql
new file mode 100644
index 0000000000..753cf0b587
--- /dev/null
+++ b/e2e-tests/custom-users/compare/user-one-57.sql
@@ -0,0 +1,3 @@
+GRANT USAGE ON *.* TO 'user-one'@'%'
+GRANT SELECT, INSERT ON `db1`.* TO 'user-one'@'%'
+GRANT SELECT, INSERT ON `db2`.* TO 'user-one'@'%'
diff --git a/e2e-tests/custom-users/compare/user-three-57.sql b/e2e-tests/custom-users/compare/user-three-57.sql
new file mode 100644
index 0000000000..df32fc9768
--- /dev/null
+++ b/e2e-tests/custom-users/compare/user-three-57.sql
@@ -0,0 +1 @@
+GRANT USAGE ON *.* TO 'user-three'@'%'
diff --git a/e2e-tests/custom-users/compare/user-two-57.sql b/e2e-tests/custom-users/compare/user-two-57.sql
new file mode 100644
index 0000000000..13394515ea
--- /dev/null
+++ b/e2e-tests/custom-users/compare/user-two-57.sql
@@ -0,0 +1 @@
+GRANT INSERT, UPDATE ON *.* TO 'user-two'@'%'
diff --git a/e2e-tests/custom-users/conf/some-name.yml b/e2e-tests/custom-users/conf/some-name.yml
index 1fdfaff139..b6ed347ced 100644
--- a/e2e-tests/custom-users/conf/some-name.yml
+++ b/e2e-tests/custom-users/conf/some-name.yml
@@ -41,7 +41,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/custom-users/run b/e2e-tests/custom-users/run
index 3de89a325b..a16ace5ee3 100755
--- a/e2e-tests/custom-users/run
+++ b/e2e-tests/custom-users/run
@@ -37,6 +37,15 @@ compare_mysql_user "-h $cluster-haproxy -uuser-one -pnew-password"
compare_mysql_cmd "user-one-1" "SELECT User, Host from mysql.user WHERE User = 'user-one';" "-h $cluster-haproxy -uroot -proot_password"
compare_mysql_cmd "user-one-2" "SHOW GRANTS FOR 'user-one'@'127.0.0.1';" "-h $cluster-haproxy -uroot -proot_password"
+desc 'check removing secretPasswordRef from user generates user password stored in generated custom-user-secret'
+kubectl_bin patch pxc some-name \
+ --type=json \
+ -p='[{"op": "replace", "path": "/spec/users/1/passwordSecretRef", "value": null}]'
+wait_cluster_consistency "$cluster" 3 3
+
+userTwoPass=$(kubectl_bin get secret $generatedUserSecret -o jsonpath="{.data.user-two}" | base64 -d)
+compare_mysql_user "-h $cluster-haproxy -uuser-two -p'$userTwoPass'"
+
desc 'delete initial users from CR and create a new one'
kubectl_bin patch pxc some-name --type=merge -p='{
"spec": {"users":[
@@ -44,7 +53,7 @@ kubectl_bin patch pxc some-name --type=merge -p='{
"name":"user-four",
"dbs": ["db1", "db2"],
"grants":["SELECT, UPDATE"],
- "hosts": ["%"]
+ "hosts": ["%"]
}
]}
}'
@@ -57,7 +66,7 @@ compare_mysql_cmd "user-four-1" "SELECT User, Host from mysql.user WHERE User =
# user-one, user-two and three should not be deleted
compare_mysql_user "-h $cluster-haproxy -uuser-one -pnew-password"
-compare_mysql_user "-h $cluster-haproxy -uuser-two -ptestpass3"
+compare_mysql_user "-h $cluster-haproxy -uuser-two -p'$userTwoPass'"
desc 'check user DBs updated'
kubectl_bin patch pxc some-name --type=merge -p='{
@@ -66,7 +75,7 @@ kubectl_bin patch pxc some-name --type=merge -p='{
"name":"user-four",
"dbs": ["db1", "db2", "db3"],
"grants":["SELECT, UPDATE"],
- "hosts": ["%"]
+ "hosts": ["%"]
}
]}
}'
@@ -80,7 +89,7 @@ kubectl_bin patch pxc some-name --type=merge -p='{
"name":"user-four",
"dbs": ["db1", "db2", "db3"],
"grants":["SELECT, UPDATE, DELETE"],
- "hosts": ["%"]
+ "hosts": ["%"]
}
]}
}'
@@ -106,7 +115,7 @@ kubectl_bin patch pxc some-name --type=merge -p='{
"name":"user-five",
"dbs": ["db1", "db2", "db3"],
"grants":["SELECT, UPDATE, DELETE"],
- "hosts": ["%"]
+ "hosts": ["%"]
}
]}
}'
diff --git a/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-k127-oc.yml b/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-k127-oc.yml
index 383659ea24..ce95abb0eb 100644
--- a/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-k127-oc.yml
+++ b/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-k127-oc.yml
@@ -131,7 +131,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-k127.yml b/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-k127.yml
index a4b71c93d0..4026eafc62 100644
--- a/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-k127.yml
+++ b/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-k127.yml
@@ -131,7 +131,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-oc.yml b/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-oc.yml
index ed62d10432..9247e5d9a3 100644
--- a/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-oc.yml
+++ b/e2e-tests/default-cr/compare/statefulset_cluster1-pxc-oc.yml
@@ -128,7 +128,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/default-cr/compare/statefulset_cluster1-pxc.yml b/e2e-tests/default-cr/compare/statefulset_cluster1-pxc.yml
index 9eaa4cc85e..74245c17f8 100644
--- a/e2e-tests/default-cr/compare/statefulset_cluster1-pxc.yml
+++ b/e2e-tests/default-cr/compare/statefulset_cluster1-pxc.yml
@@ -128,7 +128,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-k127-oc.yml b/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-k127-oc.yml
index 1bdf904f8b..b33ecdfd68 100644
--- a/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-k127-oc.yml
+++ b/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-k127-oc.yml
@@ -125,7 +125,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-k127.yml b/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-k127.yml
index f06650fb18..139f26d632 100644
--- a/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-k127.yml
+++ b/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-k127.yml
@@ -125,7 +125,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-oc.yml b/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-oc.yml
index f055929445..8b4fa88fe4 100644
--- a/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-oc.yml
+++ b/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc-oc.yml
@@ -122,7 +122,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc.yml b/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc.yml
index b260dbee1a..58a165feef 100644
--- a/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc.yml
+++ b/e2e-tests/default-cr/compare/statefulset_minimal-cluster-pxc.yml
@@ -122,7 +122,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/demand-backup-cloud/conf/demand-backup-cloud.yml b/e2e-tests/demand-backup-cloud/conf/demand-backup-cloud.yml
index c71e87057b..a509fc57b2 100644
--- a/e2e-tests/demand-backup-cloud/conf/demand-backup-cloud.yml
+++ b/e2e-tests/demand-backup-cloud/conf/demand-backup-cloud.yml
@@ -27,7 +27,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/demand-backup/conf/demand-backup.yml b/e2e-tests/demand-backup/conf/demand-backup.yml
index 3aa2b80470..93a4f7c1d4 100644
--- a/e2e-tests/demand-backup/conf/demand-backup.yml
+++ b/e2e-tests/demand-backup/conf/demand-backup.yml
@@ -30,7 +30,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/demand-backup/run b/e2e-tests/demand-backup/run
index 30d99f5f0b..80b2469b25 100755
--- a/e2e-tests/demand-backup/run
+++ b/e2e-tests/demand-backup/run
@@ -30,18 +30,26 @@ main() {
kubectl_bin apply -f "$test_dir/conf/$wrong_creds_backup_name.yml"
- sleep 10
-
run_backup "$cluster" "$minio_backup_name"
compare_kubectl "job/xb-$minio_backup_name"
+ sleep 90
+
wrong_backup_job_fail_timestamp=$(kubectl_bin get job xb-$wrong_creds_backup_name -o yaml \
| yq '.status.conditions[] | select(.type == "Failed").lastTransitionTime' \
| xargs -I {} "$date" -d "{}" +%s)
+ if [[ -z $wrong_backup_job_fail_timestamp ]]; then
+ echo 'failed to get wrong_backup_job_fail_timestamp'
+ exit 1
+ fi
minio_job_creation_timestamp=$(kubectl get job xb-$minio_backup_name -o yaml \
| yq '.metadata.creationTimestamp' \
| xargs -I {} "$date" -d "{}" +%s)
+ if [[ -z $minio_job_creation_timestamp ]]; then
+ echo 'failed to get minio_job_creation_timestamp'
+ exit 1
+ fi
if [[ $wrong_backup_job_fail_timestamp > $minio_job_creation_timestamp ]]; then
echo "\"allowParallel: false\" doesn't work as expected. $minio_backup_name job was created before $wrong_creds_backup_name backup job failed"
diff --git a/e2e-tests/functions b/e2e-tests/functions
index 72bf29c79d..ec9549928f 100755
--- a/e2e-tests/functions
+++ b/e2e-tests/functions
@@ -16,7 +16,7 @@ SKIP_REMOTE_BACKUPS=${SKIP_REMOTE_BACKUPS:-1}
PMM_SERVER_VER=${PMM_SERVER_VER:-"9.9.9"}
IMAGE_PMM_CLIENT=${IMAGE_PMM_CLIENT:-"perconalab/pmm-client:dev-latest"}
IMAGE_PMM_SERVER=${IMAGE_PMM_SERVER:-"perconalab/pmm-server:dev-latest"}
-CERT_MANAGER_VER="1.15.2"
+CERT_MANAGER_VER="1.16.2"
tmp_dir=$(mktemp -d)
sed=$(which gsed || which sed)
date=$(which gdate || which date)
@@ -177,7 +177,7 @@ wait_pod() {
set +o xtrace
kubectl_bin wait --for=condition=Ready pod/${pod} --timeout="${max_retry}s" ${ns:+-n $ns} || true
retry=0
- echo -n $pod
+ echo -n "waiting for pod/$pod to become Ready"
until kubectl_bin get ${ns:+-n $ns} pod/$pod -o jsonpath='{.status.conditions[?(@.type == "Ready")].status}' 2>/dev/null | grep -q -i 'True' \
&& kubectl_bin get ${ns:+-n $ns} pod/$pod | grep -q "^$pod" \
&& ! IS_FULL_CRASH=$(kubectl_bin logs --tail=1 ${ns:+-n $ns} pod/$pod ${container:+ -c $container} | grep LAST_LINE); do
@@ -251,22 +251,24 @@ wait_backup() {
wait_backup_restore() {
local backup_name=$1
- local status=${2:-'Succeeded'}
+ local target_state=${2:-'Succeeded'}
local wait_time=${3:-720}
- desc "wait backup restore"
set +o xtrace
retry=0
- echo -n $backup_name
- until kubectl_bin get pxc-restore/$backup_name -o jsonpath='{.status.state}' 2>/dev/null | grep $status; do
- sleep 1
- echo -n .
- let retry+=1
- if [ $retry -ge $wait_time ]; then
- kubectl_bin logs ${OPERATOR_NS:+-n $OPERATOR_NS} $(get_operator_pod)
- echo max retry count $retry reached. something went wrong with operator or kubernetes cluster
+ echo "waiting for pxc-restore/${backup_name} to reach ${target_state} state"
+ local current_state=
+ until [[ ${current_state} == ${target_state} ]]; do
+ current_state=$(kubectl_bin get pxc-restore $backup_name -o jsonpath='{.status.state}')
+ if [[ $retry -ge $wait_time || ${current_state} == 'error' ]]; then
+ kubectl_bin get pxc-restore ${backup_name} -o yaml
+ echo "Restore object pxc-restore/${backup_name} is in ${current_state} state."
+ echo something went wrong with operator or kubernetes cluster
exit 1
fi
+ echo "$(date +%Y-%m-%dT%H:%M:%S) pxc-restore/${backup_name} state: ${current_state}"
+ sleep 1
+ let retry+=1
done
echo
set_debug
@@ -376,10 +378,10 @@ wait_for_generation() {
wait_for_delete() {
local res="$1"
- echo -n "$res - "
+ echo -n "waiting for $res to be deleted"
set +o xtrace
retry=0
- until (kubectl_bin get $res || :) 2>&1 | grep NotFound; do
+ until (kubectl get $res || :) 2>&1 | grep NotFound; do
sleep 1
echo -n .
let retry+=1
@@ -405,6 +407,8 @@ compare_kubectl() {
if [[ $IMAGE_PXC =~ 8\.0 ]] && [ -f ${expected_result//.yml/-80.yml} ]; then
expected_result=${expected_result//.yml/-80.yml}
+ elif [[ $IMAGE_PXC =~ 8\.4 ]] && [ -f ${expected_result//.yml/-84.yml} ]; then
+ expected_result=${expected_result//.yml/-84.yml}
fi
if version_gt "1.29" && [ -f ${expected_result//.yml/-k129.yml} ]; then
@@ -443,6 +447,7 @@ compare_kubectl() {
del(.spec.template.spec.containers[].env[] | select(.name == "AZURE_CONTAINER_NAME")) |
del(.metadata.selfLink) |
del(.metadata.deletionTimestamp) |
+ del(.metadata.annotations."kubectl.kubernetes.io/last-applied-configuration") |
del(.metadata.annotations."kubernetes.io/psp") |
del(.metadata.annotations."batch.kubernetes.io/job-tracking") |
del(.metadata.labels."batch.kubernetes.io/job-name") |
@@ -491,6 +496,7 @@ compare_kubectl() {
(.. | select(tag == "!!str")) |= sub("'$namespace'", "namespace") |
(.. | select(tag == "!!str")) |= sub("kube-api-access-.*", "kube-api-access") |
del(.. | select(has("annotations")).annotations | select(length==0)) |
+ del(.spec.crVersion) |
del(.. | select(.[] == "percona-xtradb-cluster-operator-workload-token*"))' - >${new_result}
diff -u ${expected_result} ${new_result}
@@ -535,10 +541,14 @@ compare_mysql_cmd() {
local command="$2"
local uri="$3"
local postfix="$4"
- local expected_result=${test_dir}/compare/${command_id}${postfix}.sql
-
- if [[ $IMAGE_PXC =~ 8\.0 ]] && [ -f ${test_dir}/compare/${command_id}${postfix}-80.sql ]; then
- expected_result=${test_dir}/compare/${command_id}${postfix}-80.sql
+ local expected_result=$test_dir/compare/$command_id$postfix.sql
+
+ if [[ $IMAGE_PXC =~ 8\.4 && -f $test_dir/compare/$command_id$postfix-84.sql ]]; then
+ expected_result=$test_dir/compare/$command_id$postfix-84.sql
+ elif [[ $IMAGE_PXC =~ 8\.0 && -f $test_dir/compare/$command_id$postfix-80.sql ]]; then
+ expected_result=$test_dir/compare/$command_id$postfix-80.sql
+ elif [[ $IMAGE_PXC =~ 5\.7 && -f $test_dir/compare/$command_id$postfix-57.sql ]]; then
+ expected_result=$test_dir/compare/$command_id$postfix-57.sql
fi
run_mysql "$command" "$uri" \
@@ -562,6 +572,8 @@ compare_mysql_cmd_local() {
if [[ $IMAGE_PXC =~ 8\.0 ]] && [ -f ${test_dir}/compare/${command_id}${postfix}-80.sql ]; then
expected_result=${test_dir}/compare/${command_id}${postfix}-80.sql
+ elif [[ $IMAGE_PXC =~ 8\.4 ]] && [ -f ${test_dir}/compare/${command_id}${postfix}-84.sql ]; then
+ expected_result=${test_dir}/compare/${command_id}${postfix}-84.sql
fi
run_mysql_local "$command" "$uri" "$pod" "$container_name" \
@@ -603,8 +615,12 @@ compare_mysql_user() {
local user=$(echo $uri | sed -e 's/.*-u//; s/ .*//')
local expected_result=${test_dir}/compare/$user$postfix.sql
- if [[ $IMAGE_PXC =~ 8\.0 ]] && [ -f ${test_dir}/compare/$user$postfix-80.sql ]; then
- expected_result=${test_dir}/compare/$user$postfix-80.sql
+ if [[ $IMAGE_PXC =~ 8\.4 && -f $test_dir/compare/$user$postfix-84.sql ]]; then
+ expected_result=$test_dir/compare/$user$postfix-84.sql
+ elif [[ $IMAGE_PXC =~ 8\.0 && -f $test_dir/compare/$user$postfix-80.sql ]]; then
+ expected_result=$test_dir/compare/$user$postfix-80.sql
+ elif [[ $IMAGE_PXC =~ 5\.7 && -f $test_dir/compare/$user$postfix-57.sql ]]; then
+ expected_result=$test_dir/compare/$user$postfix-57.sql
fi
(run_mysql "SHOW GRANTS;" "$uri" || :) \
@@ -623,6 +639,8 @@ compare_mysql_user_local() {
if [[ $IMAGE_PXC =~ 8\.0 ]] && [ -f ${test_dir}/compare/$user$postfix-80.sql ]; then
expected_result=${test_dir}/compare/$user$postfix-80.sql
+ elif [[ $IMAGE_PXC =~ 8\.4 ]] && [ -f ${test_dir}/compare/$user$postfix-84.sql ]; then
+ expected_result=${test_dir}/compare/$user$postfix-84.sql
fi
(run_mysql_local "SHOW GRANTS;" "$uri" "$pod" "$container_name" || :) \
@@ -1655,8 +1673,24 @@ run_recovery_check_pitr() {
| $sed -e "s//${gtid}/g" \
| $sed -e "s~minio-service.#namespace~minio-service.$namespace~" \
| kubectl_bin apply -f -
- wait_backup_restore ${backup}
- kubectl_bin logs job/restore-job-${backup}-${cluster}
+
+ wait_backup_restore ${restore} "Stopping Cluster"
+ wait_for_delete pod/${cluster}-proxysql-0
+ wait_for_delete pod/${cluster}-proxysql-1
+ wait_for_delete pod/${cluster}-pxc-2
+ wait_for_delete pod/${cluster}-pxc-1
+ wait_for_delete pod/${cluster}-pxc-0
+
+ wait_backup_restore ${restore} "Point-in-time recovering"
+ wait_for_delete pod/${cluster}-proxysql-0
+ wait_for_delete pod/${cluster}-proxysql-1
+ wait_for_delete pod/${cluster}-pxc-2
+ wait_for_delete pod/${cluster}-pxc-1
+
+ wait_pod ${cluster}-pxc-0
+
+ wait_backup_restore ${restore}
+ kubectl_bin logs job/restore-job-${restore}-${cluster}
wait_for_running "$cluster-proxysql" 2
wait_for_running "$cluster-pxc" 3
wait_cluster_consistency "$cluster" 3 2
diff --git a/e2e-tests/haproxy/conf/haproxy.yml b/e2e-tests/haproxy/conf/haproxy.yml
index f7b330ebbc..df75e4ebc0 100644
--- a/e2e-tests/haproxy/conf/haproxy.yml
+++ b/e2e-tests/haproxy/conf/haproxy.yml
@@ -24,7 +24,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/init-deploy/compare/max_allowed_packet-1-84.sql b/e2e-tests/init-deploy/compare/max_allowed_packet-1-84.sql
new file mode 100644
index 0000000000..e6c68622ac
--- /dev/null
+++ b/e2e-tests/init-deploy/compare/max_allowed_packet-1-84.sql
@@ -0,0 +1 @@
+67108864
diff --git a/e2e-tests/init-deploy/compare/monitor-84.sql b/e2e-tests/init-deploy/compare/monitor-84.sql
new file mode 100644
index 0000000000..2a8c724ee0
--- /dev/null
+++ b/e2e-tests/init-deploy/compare/monitor-84.sql
@@ -0,0 +1,3 @@
+GRANT SELECT, RELOAD, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO `monitor`@`%`
+GRANT SERVICE_CONNECTION_ADMIN,SYSTEM_USER ON *.* TO `monitor`@`%`
+GRANT SELECT ON `performance_schema`.* TO `monitor`@`%`
diff --git a/e2e-tests/init-deploy/compare/root-84.sql b/e2e-tests/init-deploy/compare/root-84.sql
new file mode 100644
index 0000000000..9fbcaf9dea
--- /dev/null
+++ b/e2e-tests/init-deploy/compare/root-84.sql
@@ -0,0 +1,2 @@
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION
+GRANT ALLOW_NONEXISTENT_DEFINER,APPLICATION_PASSWORD_ADMIN,AUDIT_ABORT_EXEMPT,AUDIT_ADMIN,AUTHENTICATION_POLICY_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,FIREWALL_EXEMPT,FLUSH_OPTIMIZER_COSTS,FLUSH_PRIVILEGES,FLUSH_STATUS,FLUSH_TABLES,FLUSH_USER_RESOURCES,GROUP_REPLICATION_ADMIN,GROUP_REPLICATION_STREAM,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,OPTIMIZE_LOCAL_TABLE,PASSWORDLESS_USER_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SENSITIVE_VARIABLES_OBSERVER,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_ANY_DEFINER,SHOW_ROUTINE,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,TELEMETRY_LOG_ADMIN,TRANSACTION_GTID_TAG,XA_RECOVER_ADMIN ON *.* TO `root`@`%` WITH GRANT OPTION
diff --git a/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-k127-oc.yml b/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-k127-oc.yml
index 4823144fea..02f02c265a 100644
--- a/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-k127-oc.yml
+++ b/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-k127-oc.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-k127.yml b/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-k127.yml
index 184ec15cd5..39e3aab198 100644
--- a/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-k127.yml
+++ b/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-k127.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-oc.yml b/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-oc.yml
index 53e7e218e9..7d7acfd3cb 100644
--- a/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-oc.yml
+++ b/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc-oc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc.yml b/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc.yml
index a4053d9434..57d557517b 100644
--- a/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc.yml
+++ b/e2e-tests/init-deploy/compare/statefulset_no-proxysql-pxc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-k127-oc.yml b/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-k127-oc.yml
index 13ae08cdb8..07236d80a1 100644
--- a/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-k127-oc.yml
+++ b/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-k127-oc.yml
@@ -125,7 +125,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -175,7 +175,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
diff --git a/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-k127.yml b/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-k127.yml
index 92a1885e22..41c5f5b0ae 100644
--- a/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-k127.yml
+++ b/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-k127.yml
@@ -125,7 +125,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -175,7 +175,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
diff --git a/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-oc.yml b/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-oc.yml
index 5f09fcc44d..68f6194f5f 100644
--- a/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-oc.yml
+++ b/e2e-tests/init-deploy/compare/statefulset_some-name-pxc-oc.yml
@@ -122,7 +122,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/init-deploy/compare/statefulset_some-name-pxc.yml b/e2e-tests/init-deploy/compare/statefulset_some-name-pxc.yml
index de929e9391..85b2effc27 100644
--- a/e2e-tests/init-deploy/compare/statefulset_some-name-pxc.yml
+++ b/e2e-tests/init-deploy/compare/statefulset_some-name-pxc.yml
@@ -122,7 +122,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/init-deploy/compare/xtrabackup-84.sql b/e2e-tests/init-deploy/compare/xtrabackup-84.sql
new file mode 100644
index 0000000000..4f27afeec7
--- /dev/null
+++ b/e2e-tests/init-deploy/compare/xtrabackup-84.sql
@@ -0,0 +1,2 @@
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `xtrabackup`@`%` WITH GRANT OPTION
+GRANT ALLOW_NONEXISTENT_DEFINER,APPLICATION_PASSWORD_ADMIN,AUDIT_ABORT_EXEMPT,AUDIT_ADMIN,AUTHENTICATION_POLICY_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,FIREWALL_EXEMPT,FLUSH_OPTIMIZER_COSTS,FLUSH_PRIVILEGES,FLUSH_STATUS,FLUSH_TABLES,FLUSH_USER_RESOURCES,GROUP_REPLICATION_ADMIN,GROUP_REPLICATION_STREAM,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,OPTIMIZE_LOCAL_TABLE,PASSWORDLESS_USER_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SENSITIVE_VARIABLES_OBSERVER,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_ANY_DEFINER,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,TELEMETRY_LOG_ADMIN,TRANSACTION_GTID_TAG,XA_RECOVER_ADMIN ON *.* TO `xtrabackup`@`%` WITH GRANT OPTION
diff --git a/e2e-tests/init-deploy/run b/e2e-tests/init-deploy/run
index 5debd5b76c..b4d18d4344 100755
--- a/e2e-tests/init-deploy/run
+++ b/e2e-tests/init-deploy/run
@@ -27,7 +27,7 @@ compare_kubectl service/$cluster-pxc
compare_kubectl service/$cluster-proxysql
compare_kubectl service/$cluster-proxysql-unready
-if [[ ${MYSQL_VERSION} == '8.0' ]]; then
+if [[ ! $IMAGE_PXC =~ 5\.7 ]]; then
desc 'check if mysql-state-monitor works as expected'
for pod in $(kubectl_bin get pod -l app.kubernetes.io/component=pxc --no-headers | awk '{print $1}'); do
state=$(kubectl_bin exec ${pod} -- cat /var/lib/mysql/mysql.state)
diff --git a/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-k127-oc.yml b/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-k127-oc.yml
index 78ca6b2b5a..e1bc1a6f34 100644
--- a/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-k127-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-k127-oc.yml
@@ -196,7 +196,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-k127.yml b/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-k127.yml
index 5a0e8a76b7..c962f4fe1e 100644
--- a/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-k127.yml
+++ b/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-k127.yml
@@ -196,7 +196,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-oc.yml b/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-oc.yml
index 7a9f14deee..9e6a40bcc3 100644
--- a/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased-oc.yml
@@ -193,7 +193,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased.yml b/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased.yml
index f6ba0c9441..78b88d411f 100644
--- a/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased.yml
+++ b/e2e-tests/limits/compare/statefulset_no-limits-pxc-increased.yml
@@ -193,7 +193,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-limits-pxc-k127-oc.yml b/e2e-tests/limits/compare/statefulset_no-limits-pxc-k127-oc.yml
index e6391feac1..cfe935609f 100644
--- a/e2e-tests/limits/compare/statefulset_no-limits-pxc-k127-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-limits-pxc-k127-oc.yml
@@ -196,7 +196,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-limits-pxc-k127.yml b/e2e-tests/limits/compare/statefulset_no-limits-pxc-k127.yml
index d088ca960b..68400e4c0d 100644
--- a/e2e-tests/limits/compare/statefulset_no-limits-pxc-k127.yml
+++ b/e2e-tests/limits/compare/statefulset_no-limits-pxc-k127.yml
@@ -196,7 +196,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-limits-pxc-oc.yml b/e2e-tests/limits/compare/statefulset_no-limits-pxc-oc.yml
index 54fd449662..8218b78d11 100644
--- a/e2e-tests/limits/compare/statefulset_no-limits-pxc-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-limits-pxc-oc.yml
@@ -193,7 +193,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-limits-pxc.yml b/e2e-tests/limits/compare/statefulset_no-limits-pxc.yml
index 82cbb4a4c6..672d981146 100644
--- a/e2e-tests/limits/compare/statefulset_no-limits-pxc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-limits-pxc.yml
@@ -193,7 +193,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-k127-oc.yml b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-k127-oc.yml
index 83536fa262..15426e41de 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-k127-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-k127-oc.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-k127.yml b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-k127.yml
index a9fa714ce4..605f6dccff 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-k127.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-k127.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-oc.yml b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-oc.yml
index 94a8278b69..6659fe4132 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased-oc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased.yml b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased.yml
index 802d0fde8d..484c45300d 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-increased.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-k127-oc.yml b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-k127-oc.yml
index 83536fa262..15426e41de 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-k127-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-k127-oc.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-k127.yml b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-k127.yml
index a9fa714ce4..605f6dccff 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-k127.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-k127.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-oc.yml b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-oc.yml
index 94a8278b69..6659fe4132 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc-oc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc.yml b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc.yml
index 802d0fde8d..484c45300d 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-no-limits-pxc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-k127-oc.yml b/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-k127-oc.yml
index 62cd9b6fc1..9f746df730 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-k127-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-k127-oc.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -117,7 +117,7 @@ spec:
resources:
limits:
cpu: 600m
- memory: 1G
+ memory: 2G
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-k127.yml b/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-k127.yml
index dc06cf0cb1..43315840b1 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-k127.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-k127.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -117,7 +117,7 @@ spec:
resources:
limits:
cpu: 600m
- memory: 1G
+ memory: 2G
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-oc.yml b/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-oc.yml
index 9d2f03b464..5dc58f8e90 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased-oc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased.yml b/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased.yml
index 0a2fd5d571..135ac1bd1a 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-pxc-increased.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-pxc-k127-oc.yml b/e2e-tests/limits/compare/statefulset_no-requests-pxc-k127-oc.yml
index 8d00c014b7..a2d986c268 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-pxc-k127-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-pxc-k127-oc.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -117,7 +117,7 @@ spec:
resources:
limits:
cpu: 300m
- memory: 600M
+ memory: 2G
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-pxc-k127.yml b/e2e-tests/limits/compare/statefulset_no-requests-pxc-k127.yml
index a38cb56472..68a73a88ec 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-pxc-k127.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-pxc-k127.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -117,7 +117,7 @@ spec:
resources:
limits:
cpu: 300m
- memory: 600M
+ memory: 2G
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-pxc-oc.yml b/e2e-tests/limits/compare/statefulset_no-requests-pxc-oc.yml
index 0664375a85..caff3d6a81 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-pxc-oc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-pxc-oc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/compare/statefulset_no-requests-pxc.yml b/e2e-tests/limits/compare/statefulset_no-requests-pxc.yml
index 6292601a07..b451a1a48a 100644
--- a/e2e-tests/limits/compare/statefulset_no-requests-pxc.yml
+++ b/e2e-tests/limits/compare/statefulset_no-requests-pxc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/limits/conf/no-requests.yml b/e2e-tests/limits/conf/no-requests.yml
index 6b591a5c0a..5049dd65f2 100644
--- a/e2e-tests/limits/conf/no-requests.yml
+++ b/e2e-tests/limits/conf/no-requests.yml
@@ -11,7 +11,7 @@ spec:
image: -pxc
resources:
limits:
- memory: 600M
+ memory: 2G
cpu: 300m
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127-no-prefix-oc.yml b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127-no-prefix-oc.yml
index 400ea020a4..c6fe65dd49 100644
--- a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127-no-prefix-oc.yml
+++ b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127-no-prefix-oc.yml
@@ -203,7 +203,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127-oc.yml b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127-oc.yml
index dc06495677..25bbe7949c 100644
--- a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127-oc.yml
+++ b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127-oc.yml
@@ -203,7 +203,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127.yml b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127.yml
index 7485605c10..967f865e90 100644
--- a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127.yml
+++ b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-k127.yml
@@ -203,7 +203,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-k127-oc.yml b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-k127-oc.yml
index 400ea020a4..c6fe65dd49 100644
--- a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-k127-oc.yml
+++ b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-k127-oc.yml
@@ -203,7 +203,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-k127.yml b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-k127.yml
index d259e6782c..020c50bd7f 100644
--- a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-k127.yml
+++ b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-k127.yml
@@ -203,7 +203,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-oc.yml b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-oc.yml
index 7b7363c84f..08bb15647d 100644
--- a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-oc.yml
+++ b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix-oc.yml
@@ -200,7 +200,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix.yml b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix.yml
index 3c23cb009d..1090678c45 100644
--- a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix.yml
+++ b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-no-prefix.yml
@@ -200,7 +200,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-oc.yml b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-oc.yml
index b805ae701a..b6b8accb54 100644
--- a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-oc.yml
+++ b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc-oc.yml
@@ -200,7 +200,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc.yml b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc.yml
index abddb12666..ea1cabc2de 100644
--- a/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc.yml
+++ b/e2e-tests/monitoring-2-0/compare/statefulset_monitoring-pxc.yml
@@ -200,7 +200,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-k127-oc.yml b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-k127-oc.yml
index 2d8730eac5..a962a611fa 100644
--- a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-k127-oc.yml
+++ b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-k127-oc.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-k127.yml b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-k127.yml
index de5f579f78..1af1290120 100644
--- a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-k127.yml
+++ b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-k127.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-oc.yml b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-oc.yml
index e95e4e10b3..06767ef20f 100644
--- a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-oc.yml
+++ b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-oc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-k127-oc.yml b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-k127-oc.yml
index 17502c0ab5..dead37d94d 100644
--- a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-k127-oc.yml
+++ b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-k127-oc.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-k127.yml b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-k127.yml
index 3be1f5837a..211fd6ca0e 100644
--- a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-k127.yml
+++ b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-k127.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-oc.yml b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-oc.yml
index 04cf2f14c9..a2dddc2677 100644
--- a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-oc.yml
+++ b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret-oc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret.yml b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret.yml
index 4906bc7f92..9da3ae1b39 100644
--- a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret.yml
+++ b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc-secret.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc.yml b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc.yml
index 0f22c1427a..54ec1d13bf 100644
--- a/e2e-tests/one-pod/compare/statefulset_one-pod-pxc.yml
+++ b/e2e-tests/one-pod/compare/statefulset_one-pod-pxc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/pitr-gap-errors/conf/pitr-gap-errors.yml b/e2e-tests/pitr-gap-errors/conf/pitr-gap-errors.yml
index 830b9aea17..213751aed3 100755
--- a/e2e-tests/pitr-gap-errors/conf/pitr-gap-errors.yml
+++ b/e2e-tests/pitr-gap-errors/conf/pitr-gap-errors.yml
@@ -23,7 +23,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-error.yaml b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-error.yaml
index 48149abe35..9816786a01 100755
--- a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-error.yaml
+++ b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-error.yaml
@@ -1,7 +1,7 @@
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBClusterRestore
metadata:
- name: on-pitr-minio-gap-error
+ name: restore-on-pitr-minio-gap-error
spec:
pxcCluster: pitr-gap-errors
backupName: on-pitr-minio-gap
diff --git a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-force.yaml b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-force.yaml
index 77ef85701d..11eecbbc86 100755
--- a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-force.yaml
+++ b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-force.yaml
@@ -3,7 +3,7 @@ kind: PerconaXtraDBClusterRestore
metadata:
annotations:
percona.com/unsafe-pitr: "true"
- name: on-pitr-minio-gap-force
+ name: restore-on-pitr-minio-gap-force
spec:
pxcCluster: pitr-gap-errors
backupName: on-pitr-minio-gap
diff --git a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-no-pitr.yaml b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-no-pitr.yaml
index 15c467b54f..a5f6b844a5 100755
--- a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-no-pitr.yaml
+++ b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-gap-no-pitr.yaml
@@ -1,7 +1,7 @@
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBClusterRestore
metadata:
- name: on-pitr-minio-gap-no-pitr
+ name: restore-on-pitr-minio-gap-no-pitr
spec:
pxcCluster: pitr-gap-errors
backupName: on-pitr-minio-gap
diff --git a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-invalid.yaml b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-invalid.yaml
index 40d66e91b0..1cb21560bb 100755
--- a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-invalid.yaml
+++ b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio-invalid.yaml
@@ -3,7 +3,7 @@ kind: PerconaXtraDBClusterRestore
metadata:
annotations:
percona.com/unsafe-pitr: "true"
- name: on-pitr-minio-invalid
+ name: restore-on-pitr-minio-invalid
spec:
pxcCluster: pitr-gap-errors
backupName: on-pitr-minio
diff --git a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio.yaml b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio.yaml
index 848fde4dbe..a3a0b68607 100755
--- a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio.yaml
+++ b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio.yaml
@@ -1,7 +1,7 @@
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBClusterRestore
metadata:
- name: on-pitr-minio
+ name: restore-on-pitr-minio
spec:
pxcCluster: pitr-gap-errors
backupSource:
diff --git a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio1.yaml b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio1.yaml
index afd7b1eadb..ab376d2610 100755
--- a/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio1.yaml
+++ b/e2e-tests/pitr-gap-errors/conf/restore-on-pitr-minio1.yaml
@@ -1,7 +1,7 @@
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBClusterRestore
metadata:
- name: on-pitr-minio1
+ name: restore-on-pitr-minio1
spec:
pxcCluster: pitr-gap-errors
backupSource:
diff --git a/e2e-tests/pitr-gap-errors/run b/e2e-tests/pitr-gap-errors/run
index 7154c182b6..a49992789a 100755
--- a/e2e-tests/pitr-gap-errors/run
+++ b/e2e-tests/pitr-gap-errors/run
@@ -126,30 +126,33 @@ check_binlog_gap_restore() {
kubectl patch pxc $cluster --type=merge -p '{"spec":{"backup":{"pitr":{"enabled":false}}}}'
# try restore, check error
if [ "$type" == "error" ]; then
- kubectl_bin apply -f $test_dir/conf/restore-on-pitr-minio-gap-error.yaml
- wait_backup_restore "on-pitr-minio-gap-error" "Failed"
- local backup_error=$(kubectl_bin get pxc-restore on-pitr-minio-gap-error -ojsonpath='{.status.comments}' | grep -c "Backup doesn't guarantee consistent recovery with PITR. Annotate PerconaXtraDBClusterRestore with percona.com/unsafe-pitr to force it.")
+ local restore=restore-on-pitr-minio-gap-error
+ kubectl_bin apply -f $test_dir/conf/${restore}.yaml
+ wait_backup_restore "${restore}" "Failed"
+ local backup_error=$(kubectl_bin get pxc-restore ${restore} -ojsonpath='{.status.comments}' | grep -c "Backup doesn't guarantee consistent recovery with PITR. Annotate PerconaXtraDBClusterRestore with percona.com/unsafe-pitr to force it.")
if [[ $backup_error -eq 0 ]]; then
echo "ERROR: Backup is not tagged as PITR unready in the backup condition."
kubectl_bin get pxc-backup on-pitr-minio-gap -oyaml
exit 1
fi
- kubectl_bin delete -f "$test_dir/conf/restore-on-pitr-minio-gap-error.yaml"
+ kubectl_bin delete -f "$test_dir/conf/${restore}.yaml"
elif [ "$type" == "force" ]; then
- kubectl_bin apply -f "$test_dir/conf/restore-on-pitr-minio-gap-force.yaml"
- wait_backup_restore "on-pitr-minio-gap-force" "Succeeded"
+ local restore=restore-on-pitr-minio-gap-force
+ kubectl_bin apply -f "$test_dir/conf/${restore}.yaml"
+ wait_backup_restore "${restore}" "Succeeded"
wait_for_running "$cluster-proxysql" 2
wait_for_running "$cluster-pxc" 3
wait_cluster_consistency "$cluster" 3 2
- kubectl_bin logs job/restore-job-on-pitr-minio-gap-force-${cluster}
+ kubectl_bin logs job/restore-job-${restore}-${cluster}
compare_mysql_cmd "select-gap" "SELECT * from test.gap;" "-h $cluster-pxc-0.$cluster-pxc -uroot -proot_password"
compare_mysql_cmd "select-gap" "SELECT * from test.gap;" "-h $cluster-pxc-1.$cluster-pxc -uroot -proot_password"
compare_mysql_cmd "select-gap" "SELECT * from test.gap;" "-h $cluster-pxc-2.$cluster-pxc -uroot -proot_password"
- kubectl_bin delete -f "$test_dir/conf/restore-on-pitr-minio-gap-force.yaml"
+ kubectl_bin delete -f "$test_dir/conf/${restore}.yaml"
elif [ "$type" == "no-pitr" ]; then
- kubectl_bin apply -f $test_dir/conf/restore-on-pitr-minio-gap-no-pitr.yaml
- wait_backup_restore "on-pitr-minio-gap-no-pitr" "Succeeded"
- local backup_error=$(kubectl_bin get pxc-restore on-pitr-minio-gap-no-pitr -ojsonpath='{.status.comments}' | grep -c "Backup doesn't guarantee consistent recovery with PITR. Annotate PerconaXtraDBClusterRestore with percona.com/unsafe-pitr to force it.")
+ local restore=restore-on-pitr-minio-gap-no-pitr
+ kubectl_bin apply -f $test_dir/conf/${restore}.yaml
+ wait_backup_restore "${restore}" "Succeeded"
+ local backup_error=$(kubectl_bin get pxc-restore ${restore} -ojsonpath='{.status.comments}' | grep -c "Backup doesn't guarantee consistent recovery with PITR. Annotate PerconaXtraDBClusterRestore with percona.com/unsafe-pitr to force it.")
if [[ $backup_error -ne 0 ]]; then
echo "ERROR: Restore without PiTR is failed because backups is tagged PiTR unready in the backup condition."
kubectl_bin get pxc-backup on-pitr-minio-gap -oyaml
@@ -230,7 +233,7 @@ invalid_binlog_test() {
| yq eval 'del(.spec.backupSource)' \
| yq eval ".spec.backupName=\"$backup\"" \
| kubectl_bin apply -f -
- wait_backup_restore ${backup}
+ wait_backup_restore restore-${backup}
wait_for_running "$cluster-proxysql" 2
wait_for_running "$cluster-pxc" 3
wait_cluster_consistency "$cluster" 3 2
diff --git a/e2e-tests/pitr/conf/pitr.yml b/e2e-tests/pitr/conf/pitr.yml
index fbced6e1f8..41ef4dbf7c 100755
--- a/e2e-tests/pitr/conf/pitr.yml
+++ b/e2e-tests/pitr/conf/pitr.yml
@@ -23,7 +23,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/pitr/conf/restore-on-pitr-minio-gtid.yaml b/e2e-tests/pitr/conf/restore-on-pitr-minio-gtid.yaml
index f04a6f850b..6160779906 100755
--- a/e2e-tests/pitr/conf/restore-on-pitr-minio-gtid.yaml
+++ b/e2e-tests/pitr/conf/restore-on-pitr-minio-gtid.yaml
@@ -1,7 +1,7 @@
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBClusterRestore
metadata:
- name: on-pitr-minio
+ name: restore-on-pitr-minio-gtid
spec:
pxcCluster: pitr
backupName: on-pitr-minio
diff --git a/e2e-tests/pitr/conf/restore-on-pitr-minio-time.yaml b/e2e-tests/pitr/conf/restore-on-pitr-minio-time.yaml
index 54768916c9..6177a2f53b 100755
--- a/e2e-tests/pitr/conf/restore-on-pitr-minio-time.yaml
+++ b/e2e-tests/pitr/conf/restore-on-pitr-minio-time.yaml
@@ -1,7 +1,7 @@
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBClusterRestore
metadata:
- name: on-pitr-minio
+ name: restore-on-pitr-minio-time
spec:
pxcCluster: pitr
backupName: on-pitr-minio
diff --git a/e2e-tests/pitr/conf/restore-on-pitr-minio.yaml b/e2e-tests/pitr/conf/restore-on-pitr-minio.yaml
index 0bd799bf5f..70dbcdbe95 100755
--- a/e2e-tests/pitr/conf/restore-on-pitr-minio.yaml
+++ b/e2e-tests/pitr/conf/restore-on-pitr-minio.yaml
@@ -1,7 +1,7 @@
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBClusterRestore
metadata:
- name: on-pitr-minio
+ name: restore-on-pitr-minio
spec:
pxcCluster: pitr
backupSource:
diff --git a/e2e-tests/pitr/run b/e2e-tests/pitr/run
index af124cd7cd..0883e374fb 100755
--- a/e2e-tests/pitr/run
+++ b/e2e-tests/pitr/run
@@ -116,15 +116,21 @@ main() {
timeout=60
binlogs_exist=0
- for i in $(seq 2 3); do
+ for i in $(seq 1 5); do
+ echo "Checking if binlogs exist in bucket (attempt $i)..."
binlogs_exist=$(
kubectl_bin run -n "${NAMESPACE}" -i --rm aws-cli --image=perconalab/awscli --restart=Never -- \
/usr/bin/env AWS_ACCESS_KEY_ID=some-access-key AWS_SECRET_ACCESS_KEY=some-secret-key AWS_DEFAULT_REGION=us-east-1 \
/usr/bin/aws --endpoint-url https://minio-service:9000 --no-verify-ssl s3 ls operator-testing/binlogs/ | grep -c "binlog" | cat
exit "${PIPESTATUS[0]}"
)
- if [ "$binlogs_exist" -eq 0 ]; then
- sleep "$((timeout * i))"
+ if [ "$binlogs_exist" -gt 0 ]; then
+ echo "${binlogs_exist} binlogs found in bucket"
+ break
+ else
+ d=$((timeout * i))
+ echo "No binlogs found in bucket. Sleeping for ${d} seconds..."
+ sleep ${d}
fi
done
diff --git a/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-k127-oc.yml b/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-k127-oc.yml
index 907e4cbf5d..35433daa8e 100644
--- a/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-k127-oc.yml
+++ b/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-k127-oc.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-k127.yml b/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-k127.yml
index 19e45be134..3ae9de8753 100644
--- a/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-k127.yml
+++ b/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-k127.yml
@@ -67,7 +67,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-oc.yml b/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-oc.yml
index bd9fb543bd..514856c1b8 100644
--- a/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-oc.yml
+++ b/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc-oc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc.yml b/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc.yml
index 6f51e86289..aadb9d2238 100644
--- a/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc.yml
+++ b/e2e-tests/proxy-protocol/compare/statefulset_proxy-protocol-pxc.yml
@@ -64,7 +64,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/proxysql-sidecar-res-limits/conf/side-car.yml b/e2e-tests/proxysql-sidecar-res-limits/conf/side-car.yml
index d0ea625f8e..244d328d2e 100644
--- a/e2e-tests/proxysql-sidecar-res-limits/conf/side-car.yml
+++ b/e2e-tests/proxysql-sidecar-res-limits/conf/side-car.yml
@@ -16,7 +16,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/pvc-resize/conf/some-name-eks.yml b/e2e-tests/pvc-resize/conf/some-name-eks.yml
index a07a187383..be33e3b2cf 100644
--- a/e2e-tests/pvc-resize/conf/some-name-eks.yml
+++ b/e2e-tests/pvc-resize/conf/some-name-eks.yml
@@ -19,7 +19,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/pvc-resize/conf/some-name.yml b/e2e-tests/pvc-resize/conf/some-name.yml
index bada501d4c..84f824d5a0 100644
--- a/e2e-tests/pvc-resize/conf/some-name.yml
+++ b/e2e-tests/pvc-resize/conf/some-name.yml
@@ -18,7 +18,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/pvc-resize/run b/e2e-tests/pvc-resize/run
index 21e929845c..b16645e471 100755
--- a/e2e-tests/pvc-resize/run
+++ b/e2e-tests/pvc-resize/run
@@ -148,6 +148,9 @@ if [ "$EKS" == 1 -o -n "$OPENSHIFT" ]; then
echo "Deleting and recreating PXC cluster ${cluster}"
kubectl_bin delete pxc ${cluster}
spinup_pxc "${cluster}" "$test_dir/conf/$cluster-eks.yml" "3" "10" "${conf_dir}/secrets.yml"
+ echo "Enabling PVC resize for 2nd eks/openshift cluster"
+ kubectl_bin patch pxc "${cluster}" --type=json -p='[{"op": "add", "path": "/spec/enableVolumeExpansion", "value":true }]'
+ sleep 10
fi
desc 'create resourcequota'
diff --git a/e2e-tests/release_versions b/e2e-tests/release_versions
new file mode 100644
index 0000000000..c1d8bc5343
--- /dev/null
+++ b/e2e-tests/release_versions
@@ -0,0 +1,28 @@
+# Images versions
+IMAGE_OPERATOR=percona/percona-xtradb-cluster-operator:1.16.1
+
+IMAGE_PXC84=percona/percona-xtradb-cluster:8.4.2-2.1
+IMAGE_BACKUP84=percona/percona-xtradb-cluster-operator:1.16.1-pxc8.4-backup-pxb8.4.0
+
+IMAGE_PXC80=percona/percona-xtradb-cluster:8.0.39-30.1
+IMAGE_BACKUP80=percona/percona-xtradb-cluster-operator:1.16.1-pxc8.0-backup-pxb8.0.35
+
+IMAGE_PXC57=percona/percona-xtradb-cluster:5.7.44-31.65
+IMAGE_BACKUP57=percona/percona-xtradb-cluster-operator:1.16.1-pxc5.7-backup-pxb2.4.29
+
+IMAGE_PROXY=percona/proxysql2:2.7.1
+IMAGE_HAPROXY=percona/haproxy:2.8.11
+IMAGE_LOGCOLLECTOR=percona/percona-xtradb-cluster-operator:1.16.1-logcollector-fluentbit3.2.2
+IMAGE_PMM_CLIENT=percona/pmm-client:2.44.0
+IMAGE_PMM_SERVER=percona/pmm-server:2.44.0
+
+# Supported k8s versions
+GKE_MIN=1.28
+GKE_MAX=1.30
+EKS_MIN=1.28
+EKS_MAX=1.31
+AKS_MIN=1.28
+AKS_MAX=1.31
+OPENSHIFT_MIN=4.14.42
+OPENSHIFT_MAX=4.17.8
+MINIKUBE_REL=1.31.0
\ No newline at end of file
diff --git a/e2e-tests/scaling-proxysql/conf/scaling-proxysql.yml b/e2e-tests/scaling-proxysql/conf/scaling-proxysql.yml
index 864e8fccc5..d9e037b36d 100644
--- a/e2e-tests/scaling-proxysql/conf/scaling-proxysql.yml
+++ b/e2e-tests/scaling-proxysql/conf/scaling-proxysql.yml
@@ -15,7 +15,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/security-context/compare/job.batch_restore-job-restore-pvc-sec-context-k127.yml b/e2e-tests/security-context/compare/job.batch_restore-job-restore-pvc-sec-context-k127.yml
deleted file mode 100644
index d4f6962390..0000000000
--- a/e2e-tests/security-context/compare/job.batch_restore-job-restore-pvc-sec-context-k127.yml
+++ /dev/null
@@ -1,92 +0,0 @@
-apiVersion: batch/v1
-kind: Job
-metadata:
- generation: 1
- labels:
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- percona.com/restore-job-name: restore-job-restore-pvc-sec-context
- name: restore-job-restore-pvc-sec-context
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBClusterRestore
- name: restore-pvc
-spec:
- backoffLimit: 4
- completionMode: NonIndexed
- completions: 1
- parallelism: 1
- selector:
- matchLabels: {}
- suspend: false
- template:
- metadata:
- annotations:
- openshift.io/scc: privileged
- labels:
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- percona.com/restore-job-name: restore-job-restore-pvc-sec-context
- spec:
- containers:
- - command:
- - recovery-pvc-joiner.sh
- env:
- - name: RESTORE_SRC_SERVICE
- value: restore-src-restore-pvc-sec-context
- - name: XB_USE_MEMORY
- value: 100MB
- imagePullPolicy: Always
- name: xtrabackup
- resources: {}
- securityContext:
- privileged: true
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /datadir
- name: datadir
- - mountPath: /etc/mysql/vault-keyring-secret
- name: vault-keyring-secret
- - mountPath: /etc/mysql/ssl
- name: ssl
- - mountPath: /etc/mysql/ssl-internal
- name: ssl-internal
- dnsPolicy: ClusterFirst
- restartPolicy: Never
- schedulerName: default-scheduler
- securityContext:
- fsGroup: 1001
- runAsUser: 1001
- supplementalGroups:
- - 1001
- serviceAccount: percona-xtradb-cluster-operator-workload
- serviceAccountName: percona-xtradb-cluster-operator-workload
- terminationGracePeriodSeconds: 30
- topologySpreadConstraints:
- - maxSkew: 1
- topologyKey: kubernetes.io/hostname
- whenUnsatisfiable: ScheduleAnyway
- volumes:
- - name: datadir
- persistentVolumeClaim:
- claimName: datadir-sec-context-pxc-0
- - name: vault-keyring-secret
- secret:
- defaultMode: 420
- optional: true
- secretName: sec-context-vault
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
diff --git a/e2e-tests/security-context/compare/job.batch_restore-job-restore-s3-sec-context-k127.yml b/e2e-tests/security-context/compare/job.batch_restore-job-restore-s3-sec-context-k127.yml
deleted file mode 100644
index 521e2e5c0c..0000000000
--- a/e2e-tests/security-context/compare/job.batch_restore-job-restore-s3-sec-context-k127.yml
+++ /dev/null
@@ -1,101 +0,0 @@
-apiVersion: batch/v1
-kind: Job
-metadata:
- generation: 1
- labels:
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- percona.com/restore-job-name: restore-job-restore-s3-sec-context
- name: restore-job-restore-s3-sec-context
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBClusterRestore
- name: restore-s3
-spec:
- backoffLimit: 4
- completionMode: NonIndexed
- completions: 1
- parallelism: 1
- selector:
- matchLabels: {}
- suspend: false
- template:
- metadata:
- annotations:
- openshift.io/scc: privileged
- labels:
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- percona.com/restore-job-name: restore-job-restore-s3-sec-context
- spec:
- containers:
- - command:
- - recovery-cloud.sh
- env:
- - name: PXC_SERVICE
- value: sec-context-pxc
- - name: PXC_USER
- value: xtrabackup
- - name: PXC_PASS
- valueFrom:
- secretKeyRef:
- key: xtrabackup
- name: my-cluster-secrets
- - name: VERIFY_TLS
- value: "true"
- - name: ENDPOINT
- value: http://minio-service.namespace:9000/
- - name: DEFAULT_REGION
- value: us-east-1
- - name: ACCESS_KEY_ID
- valueFrom:
- secretKeyRef:
- key: AWS_ACCESS_KEY_ID
- name: minio-secret
- - name: SECRET_ACCESS_KEY
- valueFrom:
- secretKeyRef:
- key: AWS_SECRET_ACCESS_KEY
- name: minio-secret
- - name: XB_USE_MEMORY
- value: 100MB
- imagePullPolicy: Always
- name: xtrabackup
- resources: {}
- securityContext:
- privileged: true
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /datadir
- name: datadir
- - mountPath: /etc/mysql/vault-keyring-secret
- name: vault-keyring-secret
- dnsPolicy: ClusterFirst
- restartPolicy: Never
- schedulerName: default-scheduler
- securityContext:
- fsGroup: 1001
- runAsUser: 1001
- supplementalGroups:
- - 1001
- serviceAccount: percona-xtradb-cluster-operator-workload
- serviceAccountName: percona-xtradb-cluster-operator-workload
- terminationGracePeriodSeconds: 30
- topologySpreadConstraints:
- - maxSkew: 1
- topologyKey: kubernetes.io/hostname
- whenUnsatisfiable: ScheduleAnyway
- volumes:
- - name: datadir
- persistentVolumeClaim:
- claimName: datadir-sec-context-pxc-0
- - name: vault-keyring-secret
- secret:
- defaultMode: 420
- optional: true
- secretName: sec-context-vault
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes-k127.yml b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes-k127.yml
deleted file mode 100644
index 0d9ae745da..0000000000
--- a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes-k127.yml
+++ /dev/null
@@ -1,251 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 2
- name: sec-context-proxysql
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: sec-context
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 2
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: sec-context-proxysql-unready
- template:
- metadata:
- labels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- containers:
- - args:
- - proxysql
- - -f
- - -c
- - /etc/proxysql/proxysql.cnf
- - --reload
- command:
- - /opt/percona/proxysql-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: sec-context-pxc
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-sec-context
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-sec-context
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-sec-context
- envFrom:
- - secretRef:
- name: sec-context-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: proxysql
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 6032
- name: proxyadm
- protocol: TCP
- resources:
- requests:
- cpu: 100m
- memory: 100M
- securityContext:
- privileged: true
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/proxysql
- name: proxydata
- - mountPath: /etc/proxysql/ssl
- name: ssl
- - mountPath: /etc/proxysql/ssl-internal
- name: ssl-internal
- - mountPath: /opt/percona
- name: bin
- - args:
- - /opt/percona/peer-list
- - -on-change=/opt/percona/proxysql_add_pxc_nodes.sh
- - -service=$(PXC_SERVICE)
- env:
- - name: PXC_SERVICE
- value: sec-context-pxc
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-sec-context
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-sec-context
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-sec-context
- envFrom:
- - secretRef:
- name: sec-context-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: pxc-monit
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- - args:
- - /opt/percona/peer-list
- - -on-change=/opt/percona/proxysql_add_proxysql_nodes.sh
- - -service=$(PROXYSQL_SERVICE)
- env:
- - name: PROXYSQL_SERVICE
- value: sec-context-proxysql-unready
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-sec-context
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-sec-context
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-sec-context
- envFrom:
- - secretRef:
- name: sec-context-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: proxysql-monit
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- securityContext:
- privileged: true
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: bin
- - command:
- - /proxysql-init-entrypoint.sh
- imagePullPolicy: Always
- name: proxysql-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- securityContext:
- privileged: true
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- runAsGroup: 1001
- runAsUser: 1001
- supplementalGroups:
- - 1001
- serviceAccount: percona-xtradb-cluster-operator-workload
- serviceAccountName: percona-xtradb-cluster-operator-workload
- terminationGracePeriodSeconds: 30
- topologySpreadConstraints:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- maxSkew: 1
- topologyKey: kubernetes.io/hostname
- whenUnsatisfiable: ScheduleAnyway
- volumes:
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - emptyDir: {}
- name: bin
- updateStrategy:
- rollingUpdate:
- partition: 0
- type: RollingUpdate
- volumeClaimTemplates:
- - metadata:
- labels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- name: proxydata
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 6Gi
- status:
- phase: Pending
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes-oc.yml b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes-oc.yml
index d4f5c84c4c..cee9bb7351 100644
--- a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes-oc.yml
+++ b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes-oc.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: sec-context
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 2
revisionHistoryLimit: 10
@@ -171,6 +174,8 @@ spec:
memory: 50M
securityContext:
privileged: true
+ runAsGroup: 1001
+ runAsUser: 1001
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
@@ -186,6 +191,8 @@ spec:
memory: 50M
securityContext:
privileged: true
+ runAsGroup: 1001
+ runAsUser: 1001
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes.yml b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes.yml
index 39c6df2635..cee9bb7351 100644
--- a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes.yml
+++ b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-changes.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: sec-context
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 2
revisionHistoryLimit: 10
@@ -29,7 +32,15 @@ spec:
app.kubernetes.io/part-of: percona-xtradb-cluster
spec:
containers:
- - env:
+ - args:
+ - proxysql
+ - -f
+ - -c
+ - /etc/proxysql/proxysql.cnf
+ - --reload
+ command:
+ - /opt/percona/proxysql-entrypoint.sh
+ env:
- name: PXC_SERVICE
value: sec-context-pxc
- name: OPERATOR_PASSWORD
@@ -163,6 +174,8 @@ spec:
memory: 50M
securityContext:
privileged: true
+ runAsGroup: 1001
+ runAsUser: 1001
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
@@ -177,7 +190,9 @@ spec:
cpu: 50m
memory: 50M
securityContext:
- privileged: false
+ privileged: true
+ runAsGroup: 1001
+ runAsUser: 1001
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-k127.yml b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-k127.yml
deleted file mode 100644
index 3ff6b9b4c6..0000000000
--- a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-k127.yml
+++ /dev/null
@@ -1,238 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 1
- name: sec-context-proxysql
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: sec-context
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 2
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: sec-context-proxysql-unready
- template:
- metadata:
- labels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- containers:
- - args:
- - proxysql
- - -f
- - -c
- - /etc/proxysql/proxysql.cnf
- - --reload
- command:
- - /opt/percona/proxysql-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: sec-context-pxc
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-sec-context
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-sec-context
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-sec-context
- envFrom:
- - secretRef:
- name: sec-context-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: proxysql
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 6032
- name: proxyadm
- protocol: TCP
- resources:
- requests:
- cpu: 100m
- memory: 100M
- securityContext:
- privileged: false
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/proxysql
- name: proxydata
- - mountPath: /etc/proxysql/ssl
- name: ssl
- - mountPath: /etc/proxysql/ssl-internal
- name: ssl-internal
- - mountPath: /opt/percona
- name: bin
- - args:
- - /opt/percona/peer-list
- - -on-change=/opt/percona/proxysql_add_pxc_nodes.sh
- - -service=$(PXC_SERVICE)
- env:
- - name: PXC_SERVICE
- value: sec-context-pxc
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-sec-context
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-sec-context
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-sec-context
- envFrom:
- - secretRef:
- name: sec-context-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: pxc-monit
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- - args:
- - /opt/percona/peer-list
- - -on-change=/opt/percona/proxysql_add_proxysql_nodes.sh
- - -service=$(PROXYSQL_SERVICE)
- env:
- - name: PROXYSQL_SERVICE
- value: sec-context-proxysql-unready
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-sec-context
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-sec-context
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-sec-context
- envFrom:
- - secretRef:
- name: sec-context-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: proxysql-monit
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- securityContext:
- privileged: false
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: bin
- - command:
- - /proxysql-init-entrypoint.sh
- imagePullPolicy: Always
- name: proxysql-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- securityContext:
- privileged: false
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- fsGroup: 1001
- runAsUser: 1001
- serviceAccount: percona-xtradb-cluster-operator-workload
- serviceAccountName: percona-xtradb-cluster-operator-workload
- terminationGracePeriodSeconds: 30
- volumes:
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - emptyDir: {}
- name: bin
- updateStrategy:
- rollingUpdate:
- partition: 0
- type: RollingUpdate
- volumeClaimTemplates:
- - metadata:
- labels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- name: proxydata
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 6Gi
- status:
- phase: Pending
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-oc.yml b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-oc.yml
index 5a7aac1b6b..3ff6b9b4c6 100644
--- a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-oc.yml
+++ b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql-oc.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: sec-context
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 2
revisionHistoryLimit: 10
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql.yml b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql.yml
index 36decd4138..3ff6b9b4c6 100644
--- a/e2e-tests/security-context/compare/statefulset_sec-context-proxysql.yml
+++ b/e2e-tests/security-context/compare/statefulset_sec-context-proxysql.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: sec-context
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 2
revisionHistoryLimit: 10
@@ -29,7 +32,15 @@ spec:
app.kubernetes.io/part-of: percona-xtradb-cluster
spec:
containers:
- - env:
+ - args:
+ - proxysql
+ - -f
+ - -c
+ - /etc/proxysql/proxysql.cnf
+ - --reload
+ command:
+ - /opt/percona/proxysql-entrypoint.sh
+ env:
- name: PXC_SERVICE
value: sec-context-pxc
- name: OPERATOR_PASSWORD
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-pxc-changes-k127.yml b/e2e-tests/security-context/compare/statefulset_sec-context-pxc-changes-k127.yml
deleted file mode 100644
index ddcf3101f3..0000000000
--- a/e2e-tests/security-context/compare/statefulset_sec-context-pxc-changes-k127.yml
+++ /dev/null
@@ -1,256 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 2
- name: sec-context-pxc
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: sec-context
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 3
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: sec-context-pxc
- template:
- metadata:
- annotations:
- openshift.io/scc: privileged
- labels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- topologyKey: kubernetes.io/hostname
- containers:
- - args:
- - mysqld
- command:
- - /var/lib/mysql/pxc-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: sec-context-pxc-unready
- - name: MONITOR_HOST
- value: '%'
- - name: MYSQL_ROOT_PASSWORD
- valueFrom:
- secretKeyRef:
- key: root
- name: internal-sec-context
- - name: XTRABACKUP_PASSWORD
- valueFrom:
- secretKeyRef:
- key: xtrabackup
- name: internal-sec-context
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-sec-context
- - name: OPERATOR_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-sec-context
- - name: LIVENESS_CHECK_TIMEOUT
- value: "5"
- - name: READINESS_CHECK_TIMEOUT
- value: "15"
- - name: DEFAULT_AUTHENTICATION_PLUGIN
- value: mysql_native_password
- - name: NOTIFY_SOCKET
- value: /var/lib/mysql/notify.sock
- - name: MYSQL_STATE_FILE
- value: /var/lib/mysql/mysql.state
- envFrom:
- - secretRef:
- name: sec-context-env-vars-pxc
- optional: true
- imagePullPolicy: Always
- livenessProbe:
- exec:
- command:
- - /var/lib/mysql/liveness-check.sh
- failureThreshold: 3
- initialDelaySeconds: 300
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 5
- name: pxc
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 4444
- name: sst
- protocol: TCP
- - containerPort: 4567
- name: write-set
- protocol: TCP
- - containerPort: 4568
- name: ist
- protocol: TCP
- - containerPort: 33062
- name: mysql-admin
- protocol: TCP
- - containerPort: 33060
- name: mysqlx
- protocol: TCP
- readinessProbe:
- exec:
- command:
- - /var/lib/mysql/readiness-check.sh
- failureThreshold: 5
- initialDelaySeconds: 15
- periodSeconds: 30
- successThreshold: 1
- timeoutSeconds: 15
- resources:
- limits:
- cpu: "1"
- memory: 1G
- requests:
- cpu: 100m
- memory: 100M
- securityContext:
- privileged: true
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - mountPath: /etc/percona-xtradb-cluster.conf.d
- name: config
- - mountPath: /tmp
- name: tmp
- - mountPath: /etc/mysql/ssl
- name: ssl
- - mountPath: /etc/mysql/ssl-internal
- name: ssl-internal
- - mountPath: /etc/mysql/mysql-users-secret
- name: mysql-users-secret-file
- - mountPath: /etc/my.cnf.d
- name: auto-config
- - mountPath: /etc/mysql/vault-keyring-secret
- name: vault-keyring-secret
- - mountPath: /etc/mysql/init-file
- name: mysql-init-file
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- securityContext:
- privileged: true
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- fsGroup: 1001
- runAsUser: 1001
- supplementalGroups:
- - 1001
- serviceAccount: percona-xtradb-cluster-operator-workload
- serviceAccountName: percona-xtradb-cluster-operator-workload
- terminationGracePeriodSeconds: 600
- topologySpreadConstraints:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- maxSkew: 1
- topologyKey: kubernetes.io/hostname
- whenUnsatisfiable: ScheduleAnyway
- volumes:
- - emptyDir: {}
- name: tmp
- - configMap:
- defaultMode: 420
- name: sec-context-pxc
- optional: true
- name: config
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - configMap:
- defaultMode: 420
- name: auto-sec-context-pxc
- optional: true
- name: auto-config
- - name: vault-keyring-secret
- secret:
- defaultMode: 420
- optional: true
- secretName: sec-context-vault
- - name: mysql-users-secret-file
- secret:
- defaultMode: 420
- optional: false
- secretName: internal-sec-context
- - name: mysql-init-file
- secret:
- defaultMode: 420
- optional: true
- secretName: sec-context-mysql-init
- updateStrategy:
- rollingUpdate:
- partition: 0
- type: RollingUpdate
- volumeClaimTemplates:
- - metadata:
- labels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- name: datadir
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 2Gi
- status:
- phase: Pending
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-pxc-changes.yml b/e2e-tests/security-context/compare/statefulset_sec-context-pxc-changes.yml
index edb925f12f..1c47f01cde 100644
--- a/e2e-tests/security-context/compare/statefulset_sec-context-pxc-changes.yml
+++ b/e2e-tests/security-context/compare/statefulset_sec-context-pxc-changes.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: sec-context
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 3
revisionHistoryLimit: 10
@@ -77,7 +80,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -127,7 +130,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
@@ -166,6 +169,8 @@ spec:
memory: 50M
securityContext:
privileged: true
+ runAsGroup: 1001
+ runAsUser: 1001
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-pxc-k127.yml b/e2e-tests/security-context/compare/statefulset_sec-context-pxc-k127.yml
deleted file mode 100644
index b7eccb73b4..0000000000
--- a/e2e-tests/security-context/compare/statefulset_sec-context-pxc-k127.yml
+++ /dev/null
@@ -1,243 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 1
- name: sec-context-pxc
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: sec-context
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 3
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: sec-context-pxc
- template:
- metadata:
- annotations:
- openshift.io/scc: privileged
- labels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- topologyKey: kubernetes.io/hostname
- containers:
- - args:
- - mysqld
- command:
- - /var/lib/mysql/pxc-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: sec-context-pxc-unready
- - name: MONITOR_HOST
- value: '%'
- - name: MYSQL_ROOT_PASSWORD
- valueFrom:
- secretKeyRef:
- key: root
- name: internal-sec-context
- - name: XTRABACKUP_PASSWORD
- valueFrom:
- secretKeyRef:
- key: xtrabackup
- name: internal-sec-context
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-sec-context
- - name: OPERATOR_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-sec-context
- - name: LIVENESS_CHECK_TIMEOUT
- value: "5"
- - name: READINESS_CHECK_TIMEOUT
- value: "15"
- - name: DEFAULT_AUTHENTICATION_PLUGIN
- value: mysql_native_password
- - name: NOTIFY_SOCKET
- value: /var/lib/mysql/notify.sock
- - name: MYSQL_STATE_FILE
- value: /var/lib/mysql/mysql.state
- envFrom:
- - secretRef:
- name: sec-context-env-vars-pxc
- optional: true
- imagePullPolicy: Always
- livenessProbe:
- exec:
- command:
- - /var/lib/mysql/liveness-check.sh
- failureThreshold: 3
- initialDelaySeconds: 300
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 5
- name: pxc
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 4444
- name: sst
- protocol: TCP
- - containerPort: 4567
- name: write-set
- protocol: TCP
- - containerPort: 4568
- name: ist
- protocol: TCP
- - containerPort: 33062
- name: mysql-admin
- protocol: TCP
- - containerPort: 33060
- name: mysqlx
- protocol: TCP
- readinessProbe:
- exec:
- command:
- - /var/lib/mysql/readiness-check.sh
- failureThreshold: 5
- initialDelaySeconds: 15
- periodSeconds: 30
- successThreshold: 1
- timeoutSeconds: 15
- resources:
- limits:
- cpu: "1"
- memory: 1G
- requests:
- cpu: 100m
- memory: 100M
- securityContext:
- privileged: false
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - mountPath: /etc/percona-xtradb-cluster.conf.d
- name: config
- - mountPath: /tmp
- name: tmp
- - mountPath: /etc/mysql/ssl
- name: ssl
- - mountPath: /etc/mysql/ssl-internal
- name: ssl-internal
- - mountPath: /etc/mysql/mysql-users-secret
- name: mysql-users-secret-file
- - mountPath: /etc/my.cnf.d
- name: auto-config
- - mountPath: /etc/mysql/vault-keyring-secret
- name: vault-keyring-secret
- - mountPath: /etc/mysql/init-file
- name: mysql-init-file
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- securityContext:
- privileged: false
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- fsGroup: 1001
- runAsUser: 1001
- serviceAccount: percona-xtradb-cluster-operator-workload
- serviceAccountName: percona-xtradb-cluster-operator-workload
- terminationGracePeriodSeconds: 600
- volumes:
- - emptyDir: {}
- name: tmp
- - configMap:
- defaultMode: 420
- name: sec-context-pxc
- optional: true
- name: config
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - configMap:
- defaultMode: 420
- name: auto-sec-context-pxc
- optional: true
- name: auto-config
- - name: vault-keyring-secret
- secret:
- defaultMode: 420
- optional: true
- secretName: sec-context-vault
- - name: mysql-users-secret-file
- secret:
- defaultMode: 420
- optional: false
- secretName: internal-sec-context
- - name: mysql-init-file
- secret:
- defaultMode: 420
- optional: true
- secretName: sec-context-mysql-init
- updateStrategy:
- rollingUpdate:
- partition: 0
- type: RollingUpdate
- volumeClaimTemplates:
- - metadata:
- labels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: sec-context
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- name: datadir
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 2Gi
- status:
- phase: Pending
diff --git a/e2e-tests/security-context/compare/statefulset_sec-context-pxc.yml b/e2e-tests/security-context/compare/statefulset_sec-context-pxc.yml
index 3c8b459fb5..1f6eafdd38 100644
--- a/e2e-tests/security-context/compare/statefulset_sec-context-pxc.yml
+++ b/e2e-tests/security-context/compare/statefulset_sec-context-pxc.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: sec-context
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 3
revisionHistoryLimit: 10
@@ -77,7 +80,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -127,7 +130,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
diff --git a/e2e-tests/security-context/conf/sec-context-changes.yml b/e2e-tests/security-context/conf/sec-context-changes.yml
index ff904c9f3c..111ca808af 100644
--- a/e2e-tests/security-context/conf/sec-context-changes.yml
+++ b/e2e-tests/security-context/conf/sec-context-changes.yml
@@ -8,6 +8,11 @@ spec:
secretsName: my-cluster-secrets
sslSecretName: some-name-ssl
sslInternalSecretName: some-name-ssl-internal
+ initContainer:
+ containerSecurityContext:
+ privileged: true
+ runAsUser: 1001
+ runAsGroup: 1001
pxc:
annotations:
openshift.io/scc: privileged
@@ -29,7 +34,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/security-context/conf/sec-context.yml b/e2e-tests/security-context/conf/sec-context.yml
index 9167c0b287..f5ee878322 100644
--- a/e2e-tests/security-context/conf/sec-context.yml
+++ b/e2e-tests/security-context/conf/sec-context.yml
@@ -24,7 +24,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/storage/compare/statefulset_emptydir-pxc-k127-oc.yml b/e2e-tests/storage/compare/statefulset_emptydir-pxc-k127-oc.yml
index 6e3e75f4e4..45fdf979d4 100644
--- a/e2e-tests/storage/compare/statefulset_emptydir-pxc-k127-oc.yml
+++ b/e2e-tests/storage/compare/statefulset_emptydir-pxc-k127-oc.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/storage/compare/statefulset_emptydir-pxc-k127.yml b/e2e-tests/storage/compare/statefulset_emptydir-pxc-k127.yml
index 29cdfeac78..ed11f9c414 100644
--- a/e2e-tests/storage/compare/statefulset_emptydir-pxc-k127.yml
+++ b/e2e-tests/storage/compare/statefulset_emptydir-pxc-k127.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/storage/compare/statefulset_emptydir-pxc-oc.yml b/e2e-tests/storage/compare/statefulset_emptydir-pxc-oc.yml
index 178c791238..6d14b8df70 100644
--- a/e2e-tests/storage/compare/statefulset_emptydir-pxc-oc.yml
+++ b/e2e-tests/storage/compare/statefulset_emptydir-pxc-oc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/storage/compare/statefulset_emptydir-pxc.yml b/e2e-tests/storage/compare/statefulset_emptydir-pxc.yml
index 5d3a0d188a..dca67a1f35 100644
--- a/e2e-tests/storage/compare/statefulset_emptydir-pxc.yml
+++ b/e2e-tests/storage/compare/statefulset_emptydir-pxc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/storage/compare/statefulset_hostpath-pxc-k127-oc.yml b/e2e-tests/storage/compare/statefulset_hostpath-pxc-k127-oc.yml
index f266934eec..4ae4cb0e38 100644
--- a/e2e-tests/storage/compare/statefulset_hostpath-pxc-k127-oc.yml
+++ b/e2e-tests/storage/compare/statefulset_hostpath-pxc-k127-oc.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/storage/compare/statefulset_hostpath-pxc-k127.yml b/e2e-tests/storage/compare/statefulset_hostpath-pxc-k127.yml
index f37c6f8380..36da26bf0f 100644
--- a/e2e-tests/storage/compare/statefulset_hostpath-pxc-k127.yml
+++ b/e2e-tests/storage/compare/statefulset_hostpath-pxc-k127.yml
@@ -78,7 +78,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/storage/compare/statefulset_hostpath-pxc-oc.yml b/e2e-tests/storage/compare/statefulset_hostpath-pxc-oc.yml
index 660de80306..4fc356ba7a 100644
--- a/e2e-tests/storage/compare/statefulset_hostpath-pxc-oc.yml
+++ b/e2e-tests/storage/compare/statefulset_hostpath-pxc-oc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/storage/compare/statefulset_hostpath-pxc.yml b/e2e-tests/storage/compare/statefulset_hostpath-pxc.yml
index 38ab61a6fe..a91dca8301 100644
--- a/e2e-tests/storage/compare/statefulset_hostpath-pxc.yml
+++ b/e2e-tests/storage/compare/statefulset_hostpath-pxc.yml
@@ -75,7 +75,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
diff --git a/e2e-tests/tls-issue-cert-manager-ref/compare/clusterissuer_special-selfsigned-issuer.yml b/e2e-tests/tls-issue-cert-manager-ref/compare/clusterissuer_special-selfsigned-issuer.yml
index dfb003a132..a879bbc6fd 100644
--- a/e2e-tests/tls-issue-cert-manager-ref/compare/clusterissuer_special-selfsigned-issuer.yml
+++ b/e2e-tests/tls-issue-cert-manager-ref/compare/clusterissuer_special-selfsigned-issuer.yml
@@ -1,9 +1,6 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
- annotations:
- kubectl.kubernetes.io/last-applied-configuration: |
- {"apiVersion":"cert-manager.io/v1","kind":"ClusterIssuer","metadata":{"annotations":{},"name":"special-selfsigned-issuer"},"spec":{"selfSigned":{}}}
generation: 1
name: special-selfsigned-issuer
spec:
diff --git a/e2e-tests/tls-issue-cert-manager-ref/conf/some-name-tls-issueref.yml b/e2e-tests/tls-issue-cert-manager-ref/conf/some-name-tls-issueref.yml
index ea1d1531e1..ad121ef4ea 100644
--- a/e2e-tests/tls-issue-cert-manager-ref/conf/some-name-tls-issueref.yml
+++ b/e2e-tests/tls-issue-cert-manager-ref/conf/some-name-tls-issueref.yml
@@ -22,7 +22,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/tls-issue-cert-manager/conf/some-name-tls-issue-haproxy.yml b/e2e-tests/tls-issue-cert-manager/conf/some-name-tls-issue-haproxy.yml
index b258645407..6df30dd9a7 100644
--- a/e2e-tests/tls-issue-cert-manager/conf/some-name-tls-issue-haproxy.yml
+++ b/e2e-tests/tls-issue-cert-manager/conf/some-name-tls-issue-haproxy.yml
@@ -19,7 +19,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/tls-issue-cert-manager/conf/some-name-tls-issue.yml b/e2e-tests/tls-issue-cert-manager/conf/some-name-tls-issue.yml
index 84700992ea..1f05d871d6 100644
--- a/e2e-tests/tls-issue-cert-manager/conf/some-name-tls-issue.yml
+++ b/e2e-tests/tls-issue-cert-manager/conf/some-name-tls-issue.yml
@@ -19,7 +19,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/e2e-tests/tls-issue-self/compare/pxc_some-name-enabled.yml b/e2e-tests/tls-issue-self/compare/pxc_some-name-enabled.yml
new file mode 100644
index 0000000000..264d3c94f3
--- /dev/null
+++ b/e2e-tests/tls-issue-self/compare/pxc_some-name-enabled.yml
@@ -0,0 +1,81 @@
+apiVersion: pxc.percona.com/v1
+kind: PerconaXtraDBCluster
+metadata:
+ generation: 9
+ name: some-name
+spec:
+ backup:
+ storages:
+ aws-s3:
+ s3:
+ bucket: operator-testing
+ credentialsSecret: aws-s3-secret
+ region: us-east-1
+ type: s3
+ gcp-cs:
+ s3:
+ bucket: operator-testing
+ credentialsSecret: gcp-cs-secret
+ endpointUrl: https://storage.googleapis.com
+ region: us-east-1
+ type: s3
+ minio:
+ s3:
+ bucket: operator-testing
+ credentialsSecret: minio-secret
+ endpointUrl: http://minio-service:9000/
+ region: us-east-1
+ type: s3
+ pvc:
+ type: filesystem
+ volume:
+ persistentVolumeClaim:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 1Gi
+ logcollector:
+ enabled: true
+ pmm:
+ enabled: false
+ serverHost: monitoring-service
+ serverUser: pmm
+ proxysql:
+ affinity:
+ antiAffinityTopologyKey: kubernetes.io/hostname
+ enabled: true
+ resources:
+ limits:
+ cpu: 700m
+ memory: 1G
+ requests:
+ cpu: 100m
+ memory: 0.1G
+ size: 2
+ volumeSpec:
+ persistentVolumeClaim:
+ resources:
+ requests:
+ storage: 2Gi
+ pxc:
+ affinity:
+ antiAffinityTopologyKey: kubernetes.io/hostname
+ resources:
+ limits:
+ cpu: "1"
+ memory: 2G
+ requests:
+ cpu: 100m
+ memory: 0.1G
+ size: 3
+ volumeSpec:
+ persistentVolumeClaim:
+ resources:
+ requests:
+ storage: 2Gi
+ secretsName: my-cluster-secrets
+ tls:
+ enabled: true
+ unsafeFlags: {}
+ vaultSecretName: some-name-vault
diff --git a/e2e-tests/tls-issue-self/compare/pxc_some-name.yml b/e2e-tests/tls-issue-self/compare/pxc_some-name.yml
new file mode 100644
index 0000000000..5bbf5a8c75
--- /dev/null
+++ b/e2e-tests/tls-issue-self/compare/pxc_some-name.yml
@@ -0,0 +1,82 @@
+apiVersion: pxc.percona.com/v1
+kind: PerconaXtraDBCluster
+metadata:
+ generation: 5
+ name: some-name
+spec:
+ backup:
+ storages:
+ aws-s3:
+ s3:
+ bucket: operator-testing
+ credentialsSecret: aws-s3-secret
+ region: us-east-1
+ type: s3
+ gcp-cs:
+ s3:
+ bucket: operator-testing
+ credentialsSecret: gcp-cs-secret
+ endpointUrl: https://storage.googleapis.com
+ region: us-east-1
+ type: s3
+ minio:
+ s3:
+ bucket: operator-testing
+ credentialsSecret: minio-secret
+ endpointUrl: http://minio-service:9000/
+ region: us-east-1
+ type: s3
+ pvc:
+ type: filesystem
+ volume:
+ persistentVolumeClaim:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 1Gi
+ logcollector:
+ enabled: true
+ pmm:
+ enabled: false
+ serverHost: monitoring-service
+ serverUser: pmm
+ proxysql:
+ affinity:
+ antiAffinityTopologyKey: kubernetes.io/hostname
+ enabled: true
+ resources:
+ limits:
+ cpu: 700m
+ memory: 1G
+ requests:
+ cpu: 100m
+ memory: 0.1G
+ size: 2
+ volumeSpec:
+ persistentVolumeClaim:
+ resources:
+ requests:
+ storage: 2Gi
+ pxc:
+ affinity:
+ antiAffinityTopologyKey: kubernetes.io/hostname
+ resources:
+ limits:
+ cpu: "1"
+ memory: 2G
+ requests:
+ cpu: 100m
+ memory: 0.1G
+ size: 3
+ volumeSpec:
+ persistentVolumeClaim:
+ resources:
+ requests:
+ storage: 2Gi
+ secretsName: my-cluster-secrets
+ tls:
+ enabled: false
+ unsafeFlags:
+ tls: true
+ vaultSecretName: some-name-vault
diff --git a/e2e-tests/tls-issue-self/run b/e2e-tests/tls-issue-self/run
index af72619873..d3019188fa 100755
--- a/e2e-tests/tls-issue-self/run
+++ b/e2e-tests/tls-issue-self/run
@@ -25,7 +25,46 @@ main() {
desc 'invalid owner of secret'
exit 1
fi
- destroy $namespace
+
+ # generation = 2 on this step
+ desc 'check disabling tls'
+ kubectl_bin patch pxc "$cluster" --type=merge --patch '{"spec": {"tls":{"enabled": false}, "unsafeFlags": {"tls": true}}}' # generation + 1 (total 3)
+ sleep 10
+ # operator performs:
+ # - patch .spec.pause to true (generation = 4)
+ # - patch .spec.pause to false (generation = 5)
+ wait_cluster_consistency "$cluster" 3 2
+ desc 'secrets should be deleted'
+ if kubectl get secret "$cluster-ssl" &>/dev/null; then
+ echo "error: secret $cluster-ssl exists"
+ exit 1
+ fi
+ if kubectl get secret "$cluster-ssl-internal" &>/dev/null; then
+ echo "error: secret $cluster-ssl-internal exists"
+ exit 1
+ fi
+ compare_kubectl "pxc/$cluster"
+
+ desc 'check enabling tls'
+ kubectl_bin patch pxc "$cluster" --type=merge --patch '{"spec": {"tls":{"enabled": true}}}' # generation + 1 (total = 6)
+ sleep 10
+ # operator performs:
+ # - patch .spec.pause to true (generation = 7)
+ # - patch spec.unsafeFlags.tls to false (generation = 8)
+ # - patch .spec.pause to false (generation = 9)
+ wait_cluster_consistency "$cluster" 3 2
+ compare_kubectl "pxc/$cluster" "-enabled"
+ desc 'secrets should be recreated'
+ if ! kubectl get secret "$cluster-ssl" &>/dev/null; then
+ echo "error: secret $cluster-ssl doesn't exist"
+ exit 1
+ fi
+ if ! kubectl get secret "$cluster-ssl-internal" &>/dev/null; then
+ echo "error: secret $cluster-ssl-internal doesn't exist"
+ exit 1
+ fi
+
+ destroy "$namespace"
desc "test passed"
}
diff --git a/e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1160.yml b/e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1161.yml
similarity index 100%
rename from e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1160.yml
rename to e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1161.yml
diff --git a/e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1141.yml b/e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1170.yml
similarity index 87%
rename from e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1141.yml
rename to e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1170.yml
index f8230024bc..5b72198ae1 100644
--- a/e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1141.yml
+++ b/e2e-tests/upgrade-consistency/compare/service_some-name-proxysql-1170.yml
@@ -26,6 +26,8 @@ spec:
selector:
app.kubernetes.io/component: proxysql
app.kubernetes.io/instance: some-name
+ app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
app.kubernetes.io/name: percona-xtradb-cluster
+ app.kubernetes.io/part-of: percona-xtradb-cluster
sessionAffinity: None
type: ClusterIP
diff --git a/e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1160.yml b/e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1161.yml
similarity index 100%
rename from e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1160.yml
rename to e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1161.yml
diff --git a/e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1141.yml b/e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1170.yml
similarity index 88%
rename from e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1141.yml
rename to e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1170.yml
index 84b12b6a85..951a2e3f8a 100644
--- a/e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1141.yml
+++ b/e2e-tests/upgrade-consistency/compare/service_some-name-pxc-1170.yml
@@ -30,6 +30,8 @@ spec:
selector:
app.kubernetes.io/component: pxc
app.kubernetes.io/instance: some-name
+ app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
app.kubernetes.io/name: percona-xtradb-cluster
+ app.kubernetes.io/part-of: percona-xtradb-cluster
sessionAffinity: None
type: ClusterIP
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1151-oc.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1151-oc.yml
index 43a9e27175..eb6c7be0c7 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1151-oc.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1151-oc.yml
@@ -1,7 +1,7 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
- generation: 3
+ generation: 1
name: some-name-proxysql
ownerReferences:
- controller: true
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1151.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1151.yml
index da341987be..e6b49d6831 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1151.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1151.yml
@@ -1,7 +1,7 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
- generation: 2
+ generation: 1
name: some-name-proxysql
ownerReferences:
- controller: true
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1141-oc.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1161-oc.yml
similarity index 85%
rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1141-oc.yml
rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1161-oc.yml
index 4e26ab7efe..4c620b3631 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1141-oc.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1161-oc.yml
@@ -43,7 +43,15 @@ spec:
app.kubernetes.io/part-of: percona-xtradb-cluster
topologyKey: kubernetes.io/hostname
containers:
- - env:
+ - args:
+ - proxysql
+ - -f
+ - -c
+ - /etc/proxysql/proxysql.cnf
+ - --reload
+ command:
+ - /opt/percona/proxysql-entrypoint.sh
+ env:
- name: PXC_SERVICE
value: some-name-pxc
- name: OPERATOR_PASSWORD
@@ -92,9 +100,11 @@ spec:
name: ssl
- mountPath: /etc/proxysql/ssl-internal
name: ssl-internal
+ - mountPath: /opt/percona
+ name: bin
- args:
- - /usr/bin/peer-list
- - -on-change=/usr/bin/add_pxc_nodes.sh
+ - /opt/percona/peer-list
+ - -on-change=/opt/percona/proxysql_add_pxc_nodes.sh
- -service=$(PXC_SERVICE)
env:
- name: PXC_SERVICE
@@ -125,9 +135,12 @@ spec:
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
+ volumeMounts:
+ - mountPath: /opt/percona
+ name: bin
- args:
- - /usr/bin/peer-list
- - -on-change=/usr/bin/add_proxysql_nodes.sh
+ - /opt/percona/peer-list
+ - -on-change=/opt/percona/proxysql_add_proxysql_nodes.sh
- -service=$(PROXYSQL_SERVICE)
env:
- name: PROXYSQL_SERVICE
@@ -158,6 +171,9 @@ spec:
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
+ volumeMounts:
+ - mountPath: /opt/percona
+ name: bin
dnsPolicy: ClusterFirst
initContainers:
- command:
@@ -173,6 +189,19 @@ spec:
volumeMounts:
- mountPath: /var/lib/mysql
name: bin
+ - command:
+ - /proxysql-init-entrypoint.sh
+ imagePullPolicy: Always
+ name: proxysql-init
+ resources:
+ limits:
+ cpu: 50m
+ memory: 50M
+ terminationMessagePath: /dev/termination-log
+ terminationMessagePolicy: File
+ volumeMounts:
+ - mountPath: /opt/percona
+ name: bin
restartPolicy: Always
schedulerName: default-scheduler
securityContext:
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1141.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1161.yml
similarity index 85%
rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1141.yml
rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1161.yml
index 24b74084f7..da341987be 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1141.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1161.yml
@@ -1,7 +1,7 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
- generation: 1
+ generation: 2
name: some-name-proxysql
ownerReferences:
- controller: true
@@ -43,7 +43,15 @@ spec:
app.kubernetes.io/part-of: percona-xtradb-cluster
topologyKey: kubernetes.io/hostname
containers:
- - env:
+ - args:
+ - proxysql
+ - -f
+ - -c
+ - /etc/proxysql/proxysql.cnf
+ - --reload
+ command:
+ - /opt/percona/proxysql-entrypoint.sh
+ env:
- name: PXC_SERVICE
value: some-name-pxc
- name: OPERATOR_PASSWORD
@@ -92,9 +100,11 @@ spec:
name: ssl
- mountPath: /etc/proxysql/ssl-internal
name: ssl-internal
+ - mountPath: /opt/percona
+ name: bin
- args:
- - /usr/bin/peer-list
- - -on-change=/usr/bin/add_pxc_nodes.sh
+ - /opt/percona/peer-list
+ - -on-change=/opt/percona/proxysql_add_pxc_nodes.sh
- -service=$(PXC_SERVICE)
env:
- name: PXC_SERVICE
@@ -125,9 +135,12 @@ spec:
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
+ volumeMounts:
+ - mountPath: /opt/percona
+ name: bin
- args:
- - /usr/bin/peer-list
- - -on-change=/usr/bin/add_proxysql_nodes.sh
+ - /opt/percona/peer-list
+ - -on-change=/opt/percona/proxysql_add_proxysql_nodes.sh
- -service=$(PROXYSQL_SERVICE)
env:
- name: PROXYSQL_SERVICE
@@ -158,6 +171,9 @@ spec:
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
+ volumeMounts:
+ - mountPath: /opt/percona
+ name: bin
dnsPolicy: ClusterFirst
initContainers:
- command:
@@ -173,6 +189,19 @@ spec:
volumeMounts:
- mountPath: /var/lib/mysql
name: bin
+ - command:
+ - /proxysql-init-entrypoint.sh
+ imagePullPolicy: Always
+ name: proxysql-init
+ resources:
+ limits:
+ cpu: 50m
+ memory: 50M
+ terminationMessagePath: /dev/termination-log
+ terminationMessagePolicy: File
+ volumeMounts:
+ - mountPath: /opt/percona
+ name: bin
restartPolicy: Always
schedulerName: default-scheduler
securityContext:
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1160-oc.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1170-oc.yml
similarity index 100%
rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1160-oc.yml
rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1170-oc.yml
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1160.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1170.yml
similarity index 100%
rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1160.yml
rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-proxysql-1170.yml
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1151-oc.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1151-oc.yml
index 9f269576f7..668b2e76d8 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1151-oc.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1151-oc.yml
@@ -1,7 +1,7 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
- generation: 3
+ generation: 1
name: some-name-pxc
ownerReferences:
- controller: true
@@ -171,7 +171,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1151.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1151.yml
index d00b0abed2..47f50b57f0 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1151.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1151.yml
@@ -1,7 +1,7 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
- generation: 2
+ generation: 1
name: some-name-pxc
ownerReferences:
- controller: true
@@ -171,7 +171,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1141-oc.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1161-oc.yml
similarity index 97%
rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1141-oc.yml
rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1161-oc.yml
index d775f78770..3c7cefba6e 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1141-oc.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1161-oc.yml
@@ -125,6 +125,10 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
+ - name: MYSQL_NOTIFY_SOCKET
+ value: /var/lib/mysql/notify.sock
+ - name: MYSQL_STATE_FILE
+ value: /var/lib/mysql/mysql.state
envFrom:
- secretRef:
name: some-name-env-vars-pxc
@@ -171,7 +175,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1141.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1161.yml
similarity index 97%
rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1141.yml
rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1161.yml
index 1449ca31f0..76f6d99273 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1141.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1161.yml
@@ -1,7 +1,7 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
- generation: 1
+ generation: 2
name: some-name-pxc
ownerReferences:
- controller: true
@@ -125,6 +125,10 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
+ - name: MYSQL_NOTIFY_SOCKET
+ value: /var/lib/mysql/notify.sock
+ - name: MYSQL_STATE_FILE
+ value: /var/lib/mysql/mysql.state
envFrom:
- secretRef:
name: some-name-env-vars-pxc
@@ -171,7 +175,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1160-oc.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1170-oc.yml
similarity index 99%
rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1160-oc.yml
rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1170-oc.yml
index 97a6c7d61b..247a3e4e05 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1160-oc.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1170-oc.yml
@@ -125,7 +125,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -175,7 +175,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
diff --git a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1160.yml b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1170.yml
similarity index 99%
rename from e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1160.yml
rename to e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1170.yml
index 8c782a17ae..af86099bc3 100644
--- a/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1160.yml
+++ b/e2e-tests/upgrade-consistency/compare/statefulset_some-name-pxc-1170.yml
@@ -125,7 +125,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -175,7 +175,7 @@ spec:
resources:
limits:
cpu: "1"
- memory: 1G
+ memory: 2G
requests:
cpu: 100m
memory: 100M
diff --git a/e2e-tests/upgrade-consistency/run b/e2e-tests/upgrade-consistency/run
index 5372faa4f6..ec0c87ba9a 100755
--- a/e2e-tests/upgrade-consistency/run
+++ b/e2e-tests/upgrade-consistency/run
@@ -35,47 +35,46 @@ main() {
create_infra $namespace
apply_config "$conf_dir/client.yml"
- kubectl_bin apply \
- -f "$test_dir/conf/secrets.yml"
+ kubectl_bin apply -f "$test_dir/conf/secrets.yml"
cat_config "$conf_dir/$cluster.yml" \
- | yq eval '.spec.crVersion = "1.14.1"' - \
+ | yq eval '.spec.crVersion = "1.15.1"' - \
| kubectl_bin apply -f -
- desc "test 1.14.1"
+ desc "test 1.15.1"
kubectl_bin patch pxc "$cluster" --type=merge --patch '{
- "spec": {"crVersion":"1.14.1"}
+ "spec": {"crVersion":"1.15.1"}
}'
wait_cluster_consistency "$cluster" 3 2
wait_for_sts_generation "$cluster-pxc" "1" "1"
desc "compare k8s objects"
- compare_kubectl service/$cluster-pxc "-1141"
- compare_kubectl service/$cluster-proxysql "-1141"
- compare_kubectl statefulset/$cluster-pxc "-1141"
- compare_kubectl statefulset/$cluster-proxysql "-1141"
+ compare_kubectl service/$cluster-pxc "-1151"
+ compare_kubectl service/$cluster-proxysql "-1151"
+ compare_kubectl statefulset/$cluster-pxc "-1151"
+ compare_kubectl statefulset/$cluster-proxysql "-1151"
- desc "test 1.15.1"
+ desc "test 1.16.1"
kubectl_bin patch pxc "$cluster" --type=merge --patch '{
- "spec": {"crVersion":"1.15.1"}
+ "spec": {"crVersion":"1.16.1"}
}'
wait_cluster_consistency "$cluster" 3 2
wait_for_sts_generation "$cluster-pxc" "2" "1"
desc "compare k8s objects"
- compare_kubectl service/$cluster-pxc "-1151"
- compare_kubectl service/$cluster-proxysql "-1151"
- compare_kubectl statefulset/$cluster-pxc "-1151"
- compare_kubectl statefulset/$cluster-proxysql "-1151"
+ compare_kubectl service/$cluster-pxc "-1161"
+ compare_kubectl service/$cluster-proxysql "-1161"
+ compare_kubectl statefulset/$cluster-pxc "-1161"
+ compare_kubectl statefulset/$cluster-proxysql "-1161"
- desc "test 1.16.0"
+ desc "test 1.17.0"
kubectl_bin patch pxc "$cluster" --type=merge --patch '{
- "spec": {"crVersion":"1.16.0"}
+ "spec": {"crVersion":"1.17.0"}
}'
wait_cluster_consistency "$cluster" 3 2
wait_for_sts_generation "$cluster-pxc" "3" "1"
desc "compare k8s objects"
- compare_kubectl service/$cluster-pxc "-1160"
- compare_kubectl service/$cluster-proxysql "-1160"
- compare_kubectl statefulset/$cluster-pxc "-1160"
- compare_kubectl statefulset/$cluster-proxysql "-1160"
+ compare_kubectl service/$cluster-pxc "-1170"
+ compare_kubectl service/$cluster-proxysql "-1170"
+ compare_kubectl statefulset/$cluster-pxc "-1170"
+ compare_kubectl statefulset/$cluster-proxysql "-1170"
destroy "${namespace}"
desc "test passed"
diff --git a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-haproxy-k127.yml b/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-haproxy-k127.yml
deleted file mode 100644
index 8691d5d175..0000000000
--- a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-haproxy-k127.yml
+++ /dev/null
@@ -1,202 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 2
- name: upgrade-haproxy-haproxy
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: upgrade-haproxy
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 3
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: haproxy
- app.kubernetes.io/instance: upgrade-haproxy
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: upgrade-haproxy-haproxy
- template:
- metadata:
- labels:
- app.kubernetes.io/component: haproxy
- app.kubernetes.io/instance: upgrade-haproxy
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: haproxy
- app.kubernetes.io/instance: upgrade-haproxy
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- topologyKey: kubernetes.io/hostname
- containers:
- - args:
- - haproxy
- command:
- - /opt/percona/haproxy-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: upgrade-haproxy-pxc
- - name: LIVENESS_CHECK_TIMEOUT
- value: "5"
- - name: READINESS_CHECK_TIMEOUT
- value: "1"
- envFrom:
- - secretRef:
- name: upgrade-haproxy-env-vars-haproxy
- optional: true
- imagePullPolicy: Always
- livenessProbe:
- exec:
- command:
- - /opt/percona/haproxy_liveness_check.sh
- failureThreshold: 4
- initialDelaySeconds: 60
- periodSeconds: 30
- successThreshold: 1
- timeoutSeconds: 5
- name: haproxy
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 3307
- name: mysql-replicas
- protocol: TCP
- - containerPort: 3309
- name: proxy-protocol
- protocol: TCP
- - containerPort: 33062
- name: mysql-admin
- protocol: TCP
- - containerPort: 33060
- name: mysqlx
- protocol: TCP
- readinessProbe:
- exec:
- command:
- - /opt/percona/haproxy_readiness_check.sh
- failureThreshold: 3
- initialDelaySeconds: 15
- periodSeconds: 5
- successThreshold: 1
- timeoutSeconds: 1
- resources:
- requests:
- cpu: 600m
- memory: 1G
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /etc/haproxy-custom/
- name: haproxy-custom
- - mountPath: /etc/haproxy/pxc
- name: haproxy-auto
- - mountPath: /opt/percona
- name: bin
- - mountPath: /etc/mysql/mysql-users-secret
- name: mysql-users-secret-file
- - mountPath: /etc/mysql/haproxy-env-secret
- name: upgrade-haproxy-env-vars-haproxy
- - args:
- - /opt/percona/peer-list
- - -on-change=/opt/percona/haproxy_add_pxc_nodes.sh
- - -service=$(PXC_SERVICE)
- command:
- - /opt/percona/haproxy-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: upgrade-haproxy-pxc
- - name: REPLICAS_SVC_ONLY_READERS
- value: "false"
- envFrom:
- - secretRef:
- name: upgrade-haproxy-env-vars-haproxy
- optional: true
- imagePullPolicy: Always
- name: pxc-monit
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /etc/haproxy-custom/
- name: haproxy-custom
- - mountPath: /etc/haproxy/pxc
- name: haproxy-auto
- - mountPath: /etc/mysql/mysql-users-secret
- name: mysql-users-secret-file
- - mountPath: /etc/mysql/haproxy-env-secret
- name: upgrade-haproxy-env-vars-haproxy
- - mountPath: /opt/percona
- name: bin
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: bin
- - command:
- - /haproxy-init-entrypoint.sh
- imagePullPolicy: Always
- name: haproxy-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext: {}
- serviceAccount: default
- serviceAccountName: default
- terminationGracePeriodSeconds: 30
- volumes:
- - configMap:
- defaultMode: 420
- name: upgrade-haproxy-haproxy
- optional: true
- name: haproxy-custom
- - emptyDir: {}
- name: haproxy-auto
- - name: mysql-users-secret-file
- secret:
- defaultMode: 420
- optional: false
- secretName: internal-upgrade-haproxy
- - name: upgrade-haproxy-env-vars-haproxy
- secret:
- defaultMode: 420
- optional: true
- secretName: upgrade-haproxy-env-vars-haproxy
- - emptyDir: {}
- name: bin
- updateStrategy:
- rollingUpdate:
- partition: 0
- type: RollingUpdate
diff --git a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-haproxy.yml b/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-haproxy.yml
index b5e6f0f05d..8691d5d175 100644
--- a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-haproxy.yml
+++ b/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-haproxy.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: upgrade-haproxy
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 3
revisionHistoryLimit: 10
@@ -40,7 +43,11 @@ spec:
app.kubernetes.io/part-of: percona-xtradb-cluster
topologyKey: kubernetes.io/hostname
containers:
- - env:
+ - args:
+ - haproxy
+ command:
+ - /opt/percona/haproxy-entrypoint.sh
+ env:
- name: PXC_SERVICE
value: upgrade-haproxy-pxc
- name: LIVENESS_CHECK_TIMEOUT
@@ -108,6 +115,8 @@ spec:
- /opt/percona/peer-list
- -on-change=/opt/percona/haproxy_add_pxc_nodes.sh
- -service=$(PXC_SERVICE)
+ command:
+ - /opt/percona/haproxy-entrypoint.sh
env:
- name: PXC_SERVICE
value: upgrade-haproxy-pxc
@@ -131,6 +140,8 @@ spec:
name: mysql-users-secret-file
- mountPath: /etc/mysql/haproxy-env-secret
name: upgrade-haproxy-env-vars-haproxy
+ - mountPath: /opt/percona
+ name: bin
dnsPolicy: ClusterFirst
initContainers:
- command:
diff --git a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-k127-oc.yml b/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-k127-oc.yml
deleted file mode 100644
index 90e4983cf1..0000000000
--- a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-k127-oc.yml
+++ /dev/null
@@ -1,279 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 2
- name: upgrade-haproxy-pxc
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: upgrade-haproxy
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 3
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-haproxy
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: upgrade-haproxy-pxc
- template:
- metadata:
- labels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-haproxy
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-haproxy
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- topologyKey: kubernetes.io/hostname
- containers:
- - env:
- - name: LOG_DATA_DIR
- value: /var/lib/mysql
- - name: POD_NAMESPASE
- valueFrom:
- fieldRef:
- apiVersion: v1
- fieldPath: metadata.namespace
- - name: POD_NAME
- valueFrom:
- fieldRef:
- apiVersion: v1
- fieldPath: metadata.name
- envFrom:
- - secretRef:
- name: upgrade-haproxy-log-collector
- optional: true
- imagePullPolicy: Always
- name: logs
- resources:
- requests:
- cpu: 200m
- memory: 100M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - args:
- - logrotate
- env:
- - name: SERVICE_TYPE
- value: mysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-haproxy
- imagePullPolicy: Always
- name: logrotate
- resources:
- requests:
- cpu: 200m
- memory: 100M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - args:
- - mysqld
- command:
- - /var/lib/mysql/pxc-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: upgrade-haproxy-pxc-unready
- - name: MONITOR_HOST
- value: '%'
- - name: MYSQL_ROOT_PASSWORD
- valueFrom:
- secretKeyRef:
- key: root
- name: internal-upgrade-haproxy
- - name: XTRABACKUP_PASSWORD
- valueFrom:
- secretKeyRef:
- key: xtrabackup
- name: internal-upgrade-haproxy
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-haproxy
- - name: LOG_DATA_DIR
- value: /var/lib/mysql
- - name: IS_LOGCOLLECTOR
- value: "yes"
- - name: OPERATOR_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-haproxy
- - name: LIVENESS_CHECK_TIMEOUT
- value: "5"
- - name: READINESS_CHECK_TIMEOUT
- value: "15"
- - name: DEFAULT_AUTHENTICATION_PLUGIN
- value: caching_sha2_password
- - name: NOTIFY_SOCKET
- value: /var/lib/mysql/notify.sock
- - name: MYSQL_STATE_FILE
- value: /var/lib/mysql/mysql.state
- envFrom:
- - secretRef:
- name: upgrade-haproxy-env-vars-pxc
- optional: true
- imagePullPolicy: Always
- livenessProbe:
- exec:
- command:
- - /var/lib/mysql/liveness-check.sh
- failureThreshold: 3
- initialDelaySeconds: 300
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 5
- name: pxc
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 4444
- name: sst
- protocol: TCP
- - containerPort: 4567
- name: write-set
- protocol: TCP
- - containerPort: 4568
- name: ist
- protocol: TCP
- - containerPort: 33062
- name: mysql-admin
- protocol: TCP
- - containerPort: 33060
- name: mysqlx
- protocol: TCP
- readinessProbe:
- exec:
- command:
- - /var/lib/mysql/readiness-check.sh
- failureThreshold: 5
- initialDelaySeconds: 15
- periodSeconds: 30
- successThreshold: 1
- timeoutSeconds: 15
- resources:
- requests:
- cpu: 600m
- memory: 1G
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - mountPath: /etc/percona-xtradb-cluster.conf.d
- name: config
- - mountPath: /tmp
- name: tmp
- - mountPath: /etc/mysql/ssl
- name: ssl
- - mountPath: /etc/mysql/ssl-internal
- name: ssl-internal
- - mountPath: /etc/mysql/mysql-users-secret
- name: mysql-users-secret-file
- - mountPath: /etc/my.cnf.d
- name: auto-config
- - mountPath: /etc/mysql/vault-keyring-secret
- name: vault-keyring-secret
- - mountPath: /etc/mysql/init-file
- name: mysql-init-file
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- supplementalGroups:
- - 1001
- serviceAccount: default
- serviceAccountName: default
- terminationGracePeriodSeconds: 600
- volumes:
- - emptyDir: {}
- name: tmp
- - configMap:
- defaultMode: 420
- name: upgrade-haproxy-pxc
- optional: true
- name: config
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - configMap:
- defaultMode: 420
- name: auto-upgrade-haproxy-pxc
- optional: true
- name: auto-config
- - name: vault-keyring-secret
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-vault
- - name: mysql-users-secret-file
- secret:
- defaultMode: 420
- optional: false
- secretName: internal-upgrade-haproxy
- - name: mysql-init-file
- secret:
- defaultMode: 420
- optional: true
- secretName: upgrade-haproxy-mysql-init
- updateStrategy:
- type: OnDelete
- volumeClaimTemplates:
- - metadata:
- name: datadir
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 6G
- status:
- phase: Pending
diff --git a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-k127.yml b/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-k127.yml
deleted file mode 100644
index 4780e553a5..0000000000
--- a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-k127.yml
+++ /dev/null
@@ -1,280 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 2
- name: upgrade-haproxy-pxc
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: upgrade-haproxy
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 3
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-haproxy
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: upgrade-haproxy-pxc
- template:
- metadata:
- labels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-haproxy
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-haproxy
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- topologyKey: kubernetes.io/hostname
- containers:
- - env:
- - name: LOG_DATA_DIR
- value: /var/lib/mysql
- - name: POD_NAMESPASE
- valueFrom:
- fieldRef:
- apiVersion: v1
- fieldPath: metadata.namespace
- - name: POD_NAME
- valueFrom:
- fieldRef:
- apiVersion: v1
- fieldPath: metadata.name
- envFrom:
- - secretRef:
- name: upgrade-haproxy-log-collector
- optional: true
- imagePullPolicy: Always
- name: logs
- resources:
- requests:
- cpu: 200m
- memory: 100M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - args:
- - logrotate
- env:
- - name: SERVICE_TYPE
- value: mysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-haproxy
- imagePullPolicy: Always
- name: logrotate
- resources:
- requests:
- cpu: 200m
- memory: 100M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - args:
- - mysqld
- command:
- - /var/lib/mysql/pxc-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: upgrade-haproxy-pxc-unready
- - name: MONITOR_HOST
- value: '%'
- - name: MYSQL_ROOT_PASSWORD
- valueFrom:
- secretKeyRef:
- key: root
- name: internal-upgrade-haproxy
- - name: XTRABACKUP_PASSWORD
- valueFrom:
- secretKeyRef:
- key: xtrabackup
- name: internal-upgrade-haproxy
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-haproxy
- - name: LOG_DATA_DIR
- value: /var/lib/mysql
- - name: IS_LOGCOLLECTOR
- value: "yes"
- - name: OPERATOR_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-haproxy
- - name: LIVENESS_CHECK_TIMEOUT
- value: "5"
- - name: READINESS_CHECK_TIMEOUT
- value: "15"
- - name: DEFAULT_AUTHENTICATION_PLUGIN
- value: caching_sha2_password
- - name: NOTIFY_SOCKET
- value: /var/lib/mysql/notify.sock
- - name: MYSQL_STATE_FILE
- value: /var/lib/mysql/mysql.state
- envFrom:
- - secretRef:
- name: upgrade-haproxy-env-vars-pxc
- optional: true
- imagePullPolicy: Always
- livenessProbe:
- exec:
- command:
- - /var/lib/mysql/liveness-check.sh
- failureThreshold: 3
- initialDelaySeconds: 300
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 5
- name: pxc
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 4444
- name: sst
- protocol: TCP
- - containerPort: 4567
- name: write-set
- protocol: TCP
- - containerPort: 4568
- name: ist
- protocol: TCP
- - containerPort: 33062
- name: mysql-admin
- protocol: TCP
- - containerPort: 33060
- name: mysqlx
- protocol: TCP
- readinessProbe:
- exec:
- command:
- - /var/lib/mysql/readiness-check.sh
- failureThreshold: 5
- initialDelaySeconds: 15
- periodSeconds: 30
- successThreshold: 1
- timeoutSeconds: 15
- resources:
- requests:
- cpu: 600m
- memory: 1G
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - mountPath: /etc/percona-xtradb-cluster.conf.d
- name: config
- - mountPath: /tmp
- name: tmp
- - mountPath: /etc/mysql/ssl
- name: ssl
- - mountPath: /etc/mysql/ssl-internal
- name: ssl-internal
- - mountPath: /etc/mysql/mysql-users-secret
- name: mysql-users-secret-file
- - mountPath: /etc/my.cnf.d
- name: auto-config
- - mountPath: /etc/mysql/vault-keyring-secret
- name: vault-keyring-secret
- - mountPath: /etc/mysql/init-file
- name: mysql-init-file
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- fsGroup: 1001
- supplementalGroups:
- - 1001
- serviceAccount: default
- serviceAccountName: default
- terminationGracePeriodSeconds: 600
- volumes:
- - emptyDir: {}
- name: tmp
- - configMap:
- defaultMode: 420
- name: upgrade-haproxy-pxc
- optional: true
- name: config
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - configMap:
- defaultMode: 420
- name: auto-upgrade-haproxy-pxc
- optional: true
- name: auto-config
- - name: vault-keyring-secret
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-vault
- - name: mysql-users-secret-file
- secret:
- defaultMode: 420
- optional: false
- secretName: internal-upgrade-haproxy
- - name: mysql-init-file
- secret:
- defaultMode: 420
- optional: true
- secretName: upgrade-haproxy-mysql-init
- updateStrategy:
- type: OnDelete
- volumeClaimTemplates:
- - metadata:
- name: datadir
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 6G
- status:
- phase: Pending
diff --git a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-oc.yml b/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-oc.yml
index 9ecf43d80a..8f1c3a0ebf 100644
--- a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-oc.yml
+++ b/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc-oc.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: upgrade-haproxy
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 3
revisionHistoryLimit: 10
@@ -128,7 +131,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -265,6 +268,12 @@ spec:
type: OnDelete
volumeClaimTemplates:
- metadata:
+ labels:
+ app.kubernetes.io/component: pxc
+ app.kubernetes.io/instance: upgrade-haproxy
+ app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
+ app.kubernetes.io/name: percona-xtradb-cluster
+ app.kubernetes.io/part-of: percona-xtradb-cluster
name: datadir
spec:
accessModes:
diff --git a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc.yml b/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc.yml
index dd44b178b5..d674ed97e8 100644
--- a/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc.yml
+++ b/e2e-tests/upgrade-haproxy/compare/statefulset_upgrade-haproxy-pxc.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: upgrade-haproxy
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 3
revisionHistoryLimit: 10
@@ -128,7 +131,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: caching_sha2_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -266,6 +269,12 @@ spec:
type: OnDelete
volumeClaimTemplates:
- metadata:
+ labels:
+ app.kubernetes.io/component: pxc
+ app.kubernetes.io/instance: upgrade-haproxy
+ app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
+ app.kubernetes.io/name: percona-xtradb-cluster
+ app.kubernetes.io/part-of: percona-xtradb-cluster
name: datadir
spec:
accessModes:
diff --git a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-k127-oc.yml b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-k127-oc.yml
deleted file mode 100644
index 64121f4e1d..0000000000
--- a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-k127-oc.yml
+++ /dev/null
@@ -1,235 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 2
- name: upgrade-proxysql-proxysql
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: upgrade-proxysql
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 3
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: upgrade-proxysql-proxysql-unready
- template:
- metadata:
- labels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- topologyKey: kubernetes.io/hostname
- containers:
- - args:
- - proxysql
- - -f
- - -c
- - /etc/proxysql/proxysql.cnf
- - --reload
- command:
- - /opt/percona/proxysql-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: upgrade-proxysql-pxc
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-proxysql
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-upgrade-proxysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- envFrom:
- - secretRef:
- name: upgrade-proxysql-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: proxysql
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 6032
- name: proxyadm
- protocol: TCP
- resources:
- requests:
- cpu: 600m
- memory: 1G
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/proxysql
- name: proxydata
- - mountPath: /etc/proxysql/ssl
- name: ssl
- - mountPath: /etc/proxysql/ssl-internal
- name: ssl-internal
- - mountPath: /opt/percona
- name: bin
- - args:
- - /opt/percona/peer-list
- - -on-change=/opt/percona/proxysql_add_pxc_nodes.sh
- - -service=$(PXC_SERVICE)
- env:
- - name: PXC_SERVICE
- value: upgrade-proxysql-pxc
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-proxysql
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-upgrade-proxysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- envFrom:
- - secretRef:
- name: upgrade-proxysql-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: pxc-monit
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- - args:
- - /opt/percona/peer-list
- - -on-change=/opt/percona/proxysql_add_proxysql_nodes.sh
- - -service=$(PROXYSQL_SERVICE)
- env:
- - name: PROXYSQL_SERVICE
- value: upgrade-proxysql-proxysql-unready
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-proxysql
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-upgrade-proxysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- envFrom:
- - secretRef:
- name: upgrade-proxysql-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: proxysql-monit
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: bin
- - command:
- - /proxysql-init-entrypoint.sh
- imagePullPolicy: Always
- name: proxysql-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- supplementalGroups:
- - 1001
- serviceAccount: default
- serviceAccountName: default
- terminationGracePeriodSeconds: 30
- volumes:
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - emptyDir: {}
- name: bin
- updateStrategy:
- type: RollingUpdate
- volumeClaimTemplates:
- - metadata:
- name: proxydata
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 2G
- status:
- phase: Pending
diff --git a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-k127.yml b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-k127.yml
deleted file mode 100644
index 85ba99bea1..0000000000
--- a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-k127.yml
+++ /dev/null
@@ -1,236 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 2
- name: upgrade-proxysql-proxysql
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: upgrade-proxysql
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 3
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: upgrade-proxysql-proxysql-unready
- template:
- metadata:
- labels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: proxysql
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- topologyKey: kubernetes.io/hostname
- containers:
- - args:
- - proxysql
- - -f
- - -c
- - /etc/proxysql/proxysql.cnf
- - --reload
- command:
- - /opt/percona/proxysql-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: upgrade-proxysql-pxc
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-proxysql
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-upgrade-proxysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- envFrom:
- - secretRef:
- name: upgrade-proxysql-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: proxysql
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 6032
- name: proxyadm
- protocol: TCP
- resources:
- requests:
- cpu: 600m
- memory: 1G
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/proxysql
- name: proxydata
- - mountPath: /etc/proxysql/ssl
- name: ssl
- - mountPath: /etc/proxysql/ssl-internal
- name: ssl-internal
- - mountPath: /opt/percona
- name: bin
- - args:
- - /opt/percona/peer-list
- - -on-change=/opt/percona/proxysql_add_pxc_nodes.sh
- - -service=$(PXC_SERVICE)
- env:
- - name: PXC_SERVICE
- value: upgrade-proxysql-pxc
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-proxysql
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-upgrade-proxysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- envFrom:
- - secretRef:
- name: upgrade-proxysql-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: pxc-monit
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- - args:
- - /opt/percona/peer-list
- - -on-change=/opt/percona/proxysql_add_proxysql_nodes.sh
- - -service=$(PROXYSQL_SERVICE)
- env:
- - name: PROXYSQL_SERVICE
- value: upgrade-proxysql-proxysql-unready
- - name: OPERATOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-proxysql
- - name: PROXY_ADMIN_USER
- value: proxyadmin
- - name: PROXY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: proxyadmin
- name: internal-upgrade-proxysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- envFrom:
- - secretRef:
- name: upgrade-proxysql-env-vars-proxysql
- optional: true
- imagePullPolicy: Always
- name: proxysql-monit
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: bin
- - command:
- - /proxysql-init-entrypoint.sh
- imagePullPolicy: Always
- name: proxysql-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /opt/percona
- name: bin
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- fsGroup: 1001
- supplementalGroups:
- - 1001
- serviceAccount: default
- serviceAccountName: default
- terminationGracePeriodSeconds: 30
- volumes:
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - emptyDir: {}
- name: bin
- updateStrategy:
- type: RollingUpdate
- volumeClaimTemplates:
- - metadata:
- name: proxydata
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 2G
- status:
- phase: Pending
diff --git a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-oc.yml b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-oc.yml
index 4ad887b1ba..2507201037 100644
--- a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-oc.yml
+++ b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql-oc.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: upgrade-proxysql
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 3
revisionHistoryLimit: 10
@@ -221,6 +224,12 @@ spec:
type: RollingUpdate
volumeClaimTemplates:
- metadata:
+ labels:
+ app.kubernetes.io/component: proxysql
+ app.kubernetes.io/instance: upgrade-proxysql
+ app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
+ app.kubernetes.io/name: percona-xtradb-cluster
+ app.kubernetes.io/part-of: percona-xtradb-cluster
name: proxydata
spec:
accessModes:
diff --git a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql.yml b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql.yml
index 998fb3a571..35250906a3 100644
--- a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql.yml
+++ b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-proxysql.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: upgrade-proxysql
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 3
revisionHistoryLimit: 10
@@ -40,7 +43,15 @@ spec:
app.kubernetes.io/part-of: percona-xtradb-cluster
topologyKey: kubernetes.io/hostname
containers:
- - env:
+ - args:
+ - proxysql
+ - -f
+ - -c
+ - /etc/proxysql/proxysql.cnf
+ - --reload
+ command:
+ - /opt/percona/proxysql-entrypoint.sh
+ env:
- name: PXC_SERVICE
value: upgrade-proxysql-pxc
- name: OPERATOR_PASSWORD
@@ -214,6 +225,12 @@ spec:
type: RollingUpdate
volumeClaimTemplates:
- metadata:
+ labels:
+ app.kubernetes.io/component: proxysql
+ app.kubernetes.io/instance: upgrade-proxysql
+ app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
+ app.kubernetes.io/name: percona-xtradb-cluster
+ app.kubernetes.io/part-of: percona-xtradb-cluster
name: proxydata
spec:
accessModes:
diff --git a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-k127-oc.yml b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-k127-oc.yml
deleted file mode 100644
index e487a6c638..0000000000
--- a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-k127-oc.yml
+++ /dev/null
@@ -1,279 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 2
- name: upgrade-proxysql-pxc
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: upgrade-proxysql
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 3
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: upgrade-proxysql-pxc
- template:
- metadata:
- labels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- topologyKey: kubernetes.io/hostname
- containers:
- - env:
- - name: LOG_DATA_DIR
- value: /var/lib/mysql
- - name: POD_NAMESPASE
- valueFrom:
- fieldRef:
- apiVersion: v1
- fieldPath: metadata.namespace
- - name: POD_NAME
- valueFrom:
- fieldRef:
- apiVersion: v1
- fieldPath: metadata.name
- envFrom:
- - secretRef:
- name: upgrade-proxysql-log-collector
- optional: true
- imagePullPolicy: Always
- name: logs
- resources:
- requests:
- cpu: 200m
- memory: 100M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - args:
- - logrotate
- env:
- - name: SERVICE_TYPE
- value: mysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- imagePullPolicy: Always
- name: logrotate
- resources:
- requests:
- cpu: 200m
- memory: 100M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - args:
- - mysqld
- command:
- - /var/lib/mysql/pxc-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: upgrade-proxysql-pxc-unready
- - name: MONITOR_HOST
- value: '%'
- - name: MYSQL_ROOT_PASSWORD
- valueFrom:
- secretKeyRef:
- key: root
- name: internal-upgrade-proxysql
- - name: XTRABACKUP_PASSWORD
- valueFrom:
- secretKeyRef:
- key: xtrabackup
- name: internal-upgrade-proxysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- - name: LOG_DATA_DIR
- value: /var/lib/mysql
- - name: IS_LOGCOLLECTOR
- value: "yes"
- - name: OPERATOR_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-proxysql
- - name: LIVENESS_CHECK_TIMEOUT
- value: "5"
- - name: READINESS_CHECK_TIMEOUT
- value: "15"
- - name: DEFAULT_AUTHENTICATION_PLUGIN
- value: mysql_native_password
- - name: NOTIFY_SOCKET
- value: /var/lib/mysql/notify.sock
- - name: MYSQL_STATE_FILE
- value: /var/lib/mysql/mysql.state
- envFrom:
- - secretRef:
- name: upgrade-proxysql-env-vars-pxc
- optional: true
- imagePullPolicy: Always
- livenessProbe:
- exec:
- command:
- - /var/lib/mysql/liveness-check.sh
- failureThreshold: 3
- initialDelaySeconds: 300
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 5
- name: pxc
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 4444
- name: sst
- protocol: TCP
- - containerPort: 4567
- name: write-set
- protocol: TCP
- - containerPort: 4568
- name: ist
- protocol: TCP
- - containerPort: 33062
- name: mysql-admin
- protocol: TCP
- - containerPort: 33060
- name: mysqlx
- protocol: TCP
- readinessProbe:
- exec:
- command:
- - /var/lib/mysql/readiness-check.sh
- failureThreshold: 5
- initialDelaySeconds: 15
- periodSeconds: 30
- successThreshold: 1
- timeoutSeconds: 15
- resources:
- requests:
- cpu: 600m
- memory: 1G
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - mountPath: /etc/percona-xtradb-cluster.conf.d
- name: config
- - mountPath: /tmp
- name: tmp
- - mountPath: /etc/mysql/ssl
- name: ssl
- - mountPath: /etc/mysql/ssl-internal
- name: ssl-internal
- - mountPath: /etc/mysql/mysql-users-secret
- name: mysql-users-secret-file
- - mountPath: /etc/my.cnf.d
- name: auto-config
- - mountPath: /etc/mysql/vault-keyring-secret
- name: vault-keyring-secret
- - mountPath: /etc/mysql/init-file
- name: mysql-init-file
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- supplementalGroups:
- - 1001
- serviceAccount: default
- serviceAccountName: default
- terminationGracePeriodSeconds: 600
- volumes:
- - emptyDir: {}
- name: tmp
- - configMap:
- defaultMode: 420
- name: upgrade-proxysql-pxc
- optional: true
- name: config
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - configMap:
- defaultMode: 420
- name: auto-upgrade-proxysql-pxc
- optional: true
- name: auto-config
- - name: vault-keyring-secret
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-vault
- - name: mysql-users-secret-file
- secret:
- defaultMode: 420
- optional: false
- secretName: internal-upgrade-proxysql
- - name: mysql-init-file
- secret:
- defaultMode: 420
- optional: true
- secretName: upgrade-proxysql-mysql-init
- updateStrategy:
- type: OnDelete
- volumeClaimTemplates:
- - metadata:
- name: datadir
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 6G
- status:
- phase: Pending
diff --git a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-k127.yml b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-k127.yml
deleted file mode 100644
index 5cf13414bf..0000000000
--- a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-k127.yml
+++ /dev/null
@@ -1,280 +0,0 @@
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- generation: 2
- name: upgrade-proxysql-pxc
- ownerReferences:
- - controller: true
- kind: PerconaXtraDBCluster
- name: upgrade-proxysql
-spec:
- persistentVolumeClaimRetentionPolicy:
- whenDeleted: Retain
- whenScaled: Retain
- podManagementPolicy: OrderedReady
- replicas: 3
- revisionHistoryLimit: 10
- selector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- serviceName: upgrade-proxysql-pxc
- template:
- metadata:
- labels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- spec:
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/component: pxc
- app.kubernetes.io/instance: upgrade-proxysql
- app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
- app.kubernetes.io/name: percona-xtradb-cluster
- app.kubernetes.io/part-of: percona-xtradb-cluster
- topologyKey: kubernetes.io/hostname
- containers:
- - env:
- - name: LOG_DATA_DIR
- value: /var/lib/mysql
- - name: POD_NAMESPASE
- valueFrom:
- fieldRef:
- apiVersion: v1
- fieldPath: metadata.namespace
- - name: POD_NAME
- valueFrom:
- fieldRef:
- apiVersion: v1
- fieldPath: metadata.name
- envFrom:
- - secretRef:
- name: upgrade-proxysql-log-collector
- optional: true
- imagePullPolicy: Always
- name: logs
- resources:
- requests:
- cpu: 200m
- memory: 100M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - args:
- - logrotate
- env:
- - name: SERVICE_TYPE
- value: mysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- imagePullPolicy: Always
- name: logrotate
- resources:
- requests:
- cpu: 200m
- memory: 100M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - args:
- - mysqld
- command:
- - /var/lib/mysql/pxc-entrypoint.sh
- env:
- - name: PXC_SERVICE
- value: upgrade-proxysql-pxc-unready
- - name: MONITOR_HOST
- value: '%'
- - name: MYSQL_ROOT_PASSWORD
- valueFrom:
- secretKeyRef:
- key: root
- name: internal-upgrade-proxysql
- - name: XTRABACKUP_PASSWORD
- valueFrom:
- secretKeyRef:
- key: xtrabackup
- name: internal-upgrade-proxysql
- - name: MONITOR_PASSWORD
- valueFrom:
- secretKeyRef:
- key: monitor
- name: internal-upgrade-proxysql
- - name: LOG_DATA_DIR
- value: /var/lib/mysql
- - name: IS_LOGCOLLECTOR
- value: "yes"
- - name: OPERATOR_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: operator
- name: internal-upgrade-proxysql
- - name: LIVENESS_CHECK_TIMEOUT
- value: "5"
- - name: READINESS_CHECK_TIMEOUT
- value: "15"
- - name: DEFAULT_AUTHENTICATION_PLUGIN
- value: mysql_native_password
- - name: NOTIFY_SOCKET
- value: /var/lib/mysql/notify.sock
- - name: MYSQL_STATE_FILE
- value: /var/lib/mysql/mysql.state
- envFrom:
- - secretRef:
- name: upgrade-proxysql-env-vars-pxc
- optional: true
- imagePullPolicy: Always
- livenessProbe:
- exec:
- command:
- - /var/lib/mysql/liveness-check.sh
- failureThreshold: 3
- initialDelaySeconds: 300
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 5
- name: pxc
- ports:
- - containerPort: 3306
- name: mysql
- protocol: TCP
- - containerPort: 4444
- name: sst
- protocol: TCP
- - containerPort: 4567
- name: write-set
- protocol: TCP
- - containerPort: 4568
- name: ist
- protocol: TCP
- - containerPort: 33062
- name: mysql-admin
- protocol: TCP
- - containerPort: 33060
- name: mysqlx
- protocol: TCP
- readinessProbe:
- exec:
- command:
- - /var/lib/mysql/readiness-check.sh
- failureThreshold: 5
- initialDelaySeconds: 15
- periodSeconds: 30
- successThreshold: 1
- timeoutSeconds: 15
- resources:
- requests:
- cpu: 600m
- memory: 1G
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- - mountPath: /etc/percona-xtradb-cluster.conf.d
- name: config
- - mountPath: /tmp
- name: tmp
- - mountPath: /etc/mysql/ssl
- name: ssl
- - mountPath: /etc/mysql/ssl-internal
- name: ssl-internal
- - mountPath: /etc/mysql/mysql-users-secret
- name: mysql-users-secret-file
- - mountPath: /etc/my.cnf.d
- name: auto-config
- - mountPath: /etc/mysql/vault-keyring-secret
- name: vault-keyring-secret
- - mountPath: /etc/mysql/init-file
- name: mysql-init-file
- dnsPolicy: ClusterFirst
- initContainers:
- - command:
- - /pxc-init-entrypoint.sh
- imagePullPolicy: Always
- name: pxc-init
- resources:
- limits:
- cpu: 50m
- memory: 50M
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: datadir
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- fsGroup: 1001
- supplementalGroups:
- - 1001
- serviceAccount: default
- serviceAccountName: default
- terminationGracePeriodSeconds: 600
- volumes:
- - emptyDir: {}
- name: tmp
- - configMap:
- defaultMode: 420
- name: upgrade-proxysql-pxc
- optional: true
- name: config
- - name: ssl-internal
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-ssl-internal
- - name: ssl
- secret:
- defaultMode: 420
- optional: false
- secretName: some-name-ssl
- - configMap:
- defaultMode: 420
- name: auto-upgrade-proxysql-pxc
- optional: true
- name: auto-config
- - name: vault-keyring-secret
- secret:
- defaultMode: 420
- optional: true
- secretName: some-name-vault
- - name: mysql-users-secret-file
- secret:
- defaultMode: 420
- optional: false
- secretName: internal-upgrade-proxysql
- - name: mysql-init-file
- secret:
- defaultMode: 420
- optional: true
- secretName: upgrade-proxysql-mysql-init
- updateStrategy:
- type: OnDelete
- volumeClaimTemplates:
- - metadata:
- name: datadir
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 6G
- status:
- phase: Pending
diff --git a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-oc.yml b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-oc.yml
index e4c5ec86c9..8d71c22e54 100644
--- a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-oc.yml
+++ b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc-oc.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: upgrade-proxysql
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 3
revisionHistoryLimit: 10
@@ -128,7 +131,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -265,6 +268,12 @@ spec:
type: OnDelete
volumeClaimTemplates:
- metadata:
+ labels:
+ app.kubernetes.io/component: pxc
+ app.kubernetes.io/instance: upgrade-proxysql
+ app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
+ app.kubernetes.io/name: percona-xtradb-cluster
+ app.kubernetes.io/part-of: percona-xtradb-cluster
name: datadir
spec:
accessModes:
diff --git a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc.yml b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc.yml
index a766631c89..925167d358 100644
--- a/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc.yml
+++ b/e2e-tests/upgrade-proxysql/compare/statefulset_upgrade-proxysql-pxc.yml
@@ -8,6 +8,9 @@ metadata:
kind: PerconaXtraDBCluster
name: upgrade-proxysql
spec:
+ persistentVolumeClaimRetentionPolicy:
+ whenDeleted: Retain
+ whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 3
revisionHistoryLimit: 10
@@ -128,7 +131,7 @@ spec:
value: "15"
- name: DEFAULT_AUTHENTICATION_PLUGIN
value: mysql_native_password
- - name: NOTIFY_SOCKET
+ - name: MYSQL_NOTIFY_SOCKET
value: /var/lib/mysql/notify.sock
- name: MYSQL_STATE_FILE
value: /var/lib/mysql/mysql.state
@@ -266,6 +269,12 @@ spec:
type: OnDelete
volumeClaimTemplates:
- metadata:
+ labels:
+ app.kubernetes.io/component: pxc
+ app.kubernetes.io/instance: upgrade-proxysql
+ app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
+ app.kubernetes.io/name: percona-xtradb-cluster
+ app.kubernetes.io/part-of: percona-xtradb-cluster
name: datadir
spec:
accessModes:
diff --git a/e2e-tests/users/compare/select-4-84.sql b/e2e-tests/users/compare/select-4-84.sql
new file mode 100644
index 0000000000..d9695b3c54
--- /dev/null
+++ b/e2e-tests/users/compare/select-4-84.sql
@@ -0,0 +1,87 @@
+ADMINISTRABLE_ROLE_AUTHORIZATIONS
+APPLICABLE_ROLES
+CHARACTER_SETS
+CHECK_CONSTRAINTS
+CLIENT_STATISTICS
+COLLATIONS
+COLLATION_CHARACTER_SET_APPLICABILITY
+COLUMNS
+COLUMNS_EXTENSIONS
+COLUMN_PRIVILEGES
+COLUMN_STATISTICS
+COMPRESSION_DICTIONARY
+COMPRESSION_DICTIONARY_TABLES
+ENABLED_ROLES
+ENGINES
+EVENTS
+FILES
+GLOBAL_TEMPORARY_TABLES
+INDEX_STATISTICS
+INNODB_BUFFER_PAGE
+INNODB_BUFFER_PAGE_LRU
+INNODB_BUFFER_POOL_STATS
+INNODB_CACHED_INDEXES
+INNODB_CMP
+INNODB_CMPMEM
+INNODB_CMPMEM_RESET
+INNODB_CMP_PER_INDEX
+INNODB_CMP_PER_INDEX_RESET
+INNODB_CMP_RESET
+INNODB_COLUMNS
+INNODB_DATAFILES
+INNODB_FIELDS
+INNODB_FOREIGN
+INNODB_FOREIGN_COLS
+INNODB_FT_BEING_DELETED
+INNODB_FT_CONFIG
+INNODB_FT_DEFAULT_STOPWORD
+INNODB_FT_DELETED
+INNODB_FT_INDEX_CACHE
+INNODB_FT_INDEX_TABLE
+INNODB_INDEXES
+INNODB_METRICS
+INNODB_SESSION_TEMP_TABLESPACES
+INNODB_TABLES
+INNODB_TABLESPACES
+INNODB_TABLESPACES_BRIEF
+INNODB_TABLESTATS
+INNODB_TEMP_TABLE_INFO
+INNODB_TRX
+INNODB_VIRTUAL
+KEYWORDS
+KEY_COLUMN_USAGE
+OPTIMIZER_TRACE
+PARAMETERS
+PARTITIONS
+PLUGINS
+PROCESSLIST
+PROFILING
+REFERENTIAL_CONSTRAINTS
+RESOURCE_GROUPS
+ROLE_COLUMN_GRANTS
+ROLE_ROUTINE_GRANTS
+ROLE_TABLE_GRANTS
+ROUTINES
+SCHEMATA
+SCHEMATA_EXTENSIONS
+SCHEMA_PRIVILEGES
+STATISTICS
+ST_GEOMETRY_COLUMNS
+ST_SPATIAL_REFERENCE_SYSTEMS
+ST_UNITS_OF_MEASURE
+TABLES
+TABLESPACES_EXTENSIONS
+TABLES_EXTENSIONS
+TABLE_CONSTRAINTS
+TABLE_CONSTRAINTS_EXTENSIONS
+TABLE_PRIVILEGES
+TABLE_STATISTICS
+TEMPORARY_TABLES
+THREAD_STATISTICS
+TRIGGERS
+USER_ATTRIBUTES
+USER_PRIVILEGES
+USER_STATISTICS
+VIEWS
+VIEW_ROUTINE_USAGE
+VIEW_TABLE_USAGE
diff --git a/e2e-tests/users/conf/some-name.yml b/e2e-tests/users/conf/some-name.yml
index ce30c6c6b7..76798b8ccd 100644
--- a/e2e-tests/users/conf/some-name.yml
+++ b/e2e-tests/users/conf/some-name.yml
@@ -16,7 +16,7 @@ spec:
memory: 0.1G
cpu: 100m
limits:
- memory: "1G"
+ memory: "2G"
cpu: "1"
volumeSpec:
persistentVolumeClaim:
diff --git a/go.mod b/go.mod
index 6b49da38ea..d96b3f3df8 100644
--- a/go.mod
+++ b/go.mod
@@ -1,12 +1,12 @@
module github.com/percona/percona-xtradb-cluster-operator
-go 1.22.6
+go 1.23.4
require (
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.5.0
github.com/Percona-Lab/percona-version-service/api v0.0.0-20201216104127-a39f2dded3cc
github.com/caarlos0/env v3.5.0+incompatible
- github.com/cert-manager/cert-manager v1.16.1
+ github.com/cert-manager/cert-manager v1.16.2
github.com/flosch/pongo2/v6 v6.0.0
github.com/go-ini/ini v1.67.0
github.com/go-logr/logr v1.4.2
@@ -19,18 +19,18 @@ require (
github.com/go-sql-driver/mysql v1.8.1
github.com/google/go-cmp v0.6.0
github.com/hashicorp/go-version v1.7.0
- github.com/minio/minio-go/v7 v7.0.80
- github.com/onsi/ginkgo/v2 v2.21.0
- github.com/onsi/gomega v1.35.1
+ github.com/minio/minio-go/v7 v7.0.81
+ github.com/onsi/ginkgo/v2 v2.22.1
+ github.com/onsi/gomega v1.36.2
github.com/pkg/errors v0.9.1
github.com/robfig/cron/v3 v3.0.1
go.uber.org/zap v1.27.0
- golang.org/x/sync v0.9.0
- k8s.io/api v0.31.2
- k8s.io/apimachinery v0.31.2
- k8s.io/client-go v0.31.2
+ golang.org/x/sync v0.10.0
+ k8s.io/api v0.32.0
+ k8s.io/apimachinery v0.32.0
+ k8s.io/client-go v0.32.0
k8s.io/klog/v2 v2.130.1
- sigs.k8s.io/controller-runtime v0.19.1
+ sigs.k8s.io/controller-runtime v0.19.3
)
require (
@@ -44,7 +44,6 @@ require (
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/analysis v0.23.0 // indirect
@@ -55,14 +54,12 @@ require (
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/goccy/go-json v0.10.3 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db // indirect
+ github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/websocket v1.5.1 // indirect
- github.com/imdario/mergo v0.3.16 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.17.11 // indirect
@@ -70,7 +67,7 @@ require (
github.com/mailru/easyjson v0.7.7 // indirect
github.com/minio/md5-simd v1.1.2 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
- github.com/moby/spdystream v0.4.0 // indirect
+ github.com/moby/spdystream v0.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
@@ -89,27 +86,26 @@ require (
go.opentelemetry.io/otel/metric v1.29.0 // indirect
go.opentelemetry.io/otel/trace v1.29.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.28.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
- golang.org/x/net v0.30.0 // indirect
+ golang.org/x/net v0.33.0 // indirect
golang.org/x/oauth2 v0.23.0 // indirect
- golang.org/x/sys v0.26.0 // indirect
- golang.org/x/term v0.25.0 // indirect
- golang.org/x/text v0.19.0 // indirect
- golang.org/x/time v0.6.0 // indirect
- golang.org/x/tools v0.26.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
+ golang.org/x/time v0.7.0 // indirect
+ golang.org/x/tools v0.28.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
- google.golang.org/protobuf v1.35.1 // indirect
+ google.golang.org/protobuf v1.36.1 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/apiextensions-apiserver v0.31.1 // indirect
- k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 // indirect
- k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 // indirect
+ k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
+ k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
sigs.k8s.io/gateway-api v1.1.0 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
+ sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
+ sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
diff --git a/go.sum b/go.sum
index 157a03768d..1acfbc0d4f 100644
--- a/go.sum
+++ b/go.sum
@@ -22,8 +22,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/caarlos0/env v3.5.0+incompatible h1:Yy0UN8o9Wtr/jGHZDpCBLpNrzcFLLM2yixi/rBrKyJs=
github.com/caarlos0/env v3.5.0+incompatible/go.mod h1:tdCsowwCzMLdkqRYDlHpZCp2UooDD3MspDBjZ2AD02Y=
-github.com/cert-manager/cert-manager v1.16.1 h1:1ceFMqTtwiqY2vyfaRT85CNiVmK7pJjt3GebYCx9awY=
-github.com/cert-manager/cert-manager v1.16.1/go.mod h1:MfLVTL45hFZsqmaT1O0+b2ugaNNQQZttSFV9hASHUb0=
+github.com/cert-manager/cert-manager v1.16.2 h1:c9UU2E+8XWGruyvC/mdpc1wuLddtgmNr8foKdP7a8Jg=
+github.com/cert-manager/cert-manager v1.16.2/go.mod h1:MfLVTL45hFZsqmaT1O0+b2ugaNNQQZttSFV9hASHUb0=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -40,8 +40,6 @@ github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0
github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
github.com/flosch/pongo2/v6 v6.0.0 h1:lsGru8IAzHgIAw6H2m4PCyleO58I40ow6apih0WprMU=
github.com/flosch/pongo2/v6 v6.0.0/go.mod h1:CuDpFm47R0uGGE7z13/tTlt1Y6zdxvr2RLT5LJhsHEU=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
@@ -83,8 +81,6 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
@@ -95,16 +91,14 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
-github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
+github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
+github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
-github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
@@ -126,12 +120,12 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
-github.com/minio/minio-go/v7 v7.0.80 h1:2mdUHXEykRdY/BigLt3Iuu1otL0JTogT0Nmltg0wujk=
-github.com/minio/minio-go/v7 v7.0.80/go.mod h1:84gmIilaX4zcvAWWzJ5Z1WI5axN+hAbM5w25xf8xvC0=
+github.com/minio/minio-go/v7 v7.0.81 h1:SzhMN0TQ6T/xSBu6Nvw3M5M8voM+Ht8RH3hE8S7zxaA=
+github.com/minio/minio-go/v7 v7.0.81/go.mod h1:84gmIilaX4zcvAWWzJ5Z1WI5axN+hAbM5w25xf8xvC0=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
-github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8=
-github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
+github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU=
+github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -143,10 +137,10 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
-github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM=
-github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
-github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
-github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
+github.com/onsi/ginkgo/v2 v2.22.1 h1:QW7tbJAUDyVDVOM5dFa7qaybo+CRfR7bemlQUN6Z8aM=
+github.com/onsi/ginkgo/v2 v2.22.1/go.mod h1:S6aTpoRsSq2cZOd+pssHAlKW/Q/jZt6cPrPlnj4a1xM=
+github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
+github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
@@ -199,8 +193,8 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
-golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -209,43 +203,43 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
-golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
+golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
-golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
-golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
-golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
-golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
-golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
-golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
+golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
+golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
-golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
+golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8=
+golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
-google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
+google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -253,32 +247,29 @@ gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSP
gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
-gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-k8s.io/api v0.31.2 h1:3wLBbL5Uom/8Zy98GRPXpJ254nEFpl+hwndmk9RwmL0=
-k8s.io/api v0.31.2/go.mod h1:bWmGvrGPssSK1ljmLzd3pwCQ9MgoTsRCuK35u6SygUk=
+k8s.io/api v0.32.0 h1:OL9JpbvAU5ny9ga2fb24X8H6xQlVp+aJMFlgtQjR9CE=
+k8s.io/api v0.32.0/go.mod h1:4LEwHZEf6Q/cG96F3dqR965sYOfmPM7rq81BLgsE0p0=
k8s.io/apiextensions-apiserver v0.31.1 h1:L+hwULvXx+nvTYX/MKM3kKMZyei+UiSXQWciX/N6E40=
k8s.io/apiextensions-apiserver v0.31.1/go.mod h1:tWMPR3sgW+jsl2xm9v7lAyRF1rYEK71i9G5dRtkknoQ=
-k8s.io/apimachinery v0.31.2 h1:i4vUt2hPK56W6mlT7Ry+AO8eEsyxMD1U44NR22CLTYw=
-k8s.io/apimachinery v0.31.2/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo=
-k8s.io/client-go v0.31.2 h1:Y2F4dxU5d3AQj+ybwSMqQnpZH9F30//1ObxOKlTI9yc=
-k8s.io/client-go v0.31.2/go.mod h1:NPa74jSVR/+eez2dFsEIHNa+3o09vtNaWwWwb1qSxSs=
+k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg=
+k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
+k8s.io/client-go v0.32.0 h1:DimtMcnN/JIKZcrSrstiwvvZvLjG0aSxy8PxN8IChp8=
+k8s.io/client-go v0.32.0/go.mod h1:boDWvdM1Drk4NJj/VddSLnx59X3OPgwrOo0vGbtq9+8=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 h1:1dWzkmJrrprYvjGwh9kEUxmcUV/CtNU8QM7h1FLWQOo=
-k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38/go.mod h1:coRQXBK9NxO98XUv3ZD6AK3xzHCxV6+b7lrquKwaKzA=
-k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 h1:MDF6h2H/h4tbzmtIKTuctcwZmY0tY9mD9fNT47QO6HI=
-k8s.io/utils v0.0.0-20240921022957-49e7df575cb6/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-sigs.k8s.io/controller-runtime v0.19.1 h1:Son+Q40+Be3QWb+niBXAg2vFiYWolDjjRfO8hn/cxOk=
-sigs.k8s.io/controller-runtime v0.19.1/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4=
+k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y=
+k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4=
+k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
+k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.19.3 h1:XO2GvC9OPftRst6xWCpTgBZO04S2cbp0Qqkj8bX1sPw=
+sigs.k8s.io/controller-runtime v0.19.3/go.mod h1:j4j87DqtsThvwTv5/Tc5NFRyyF/RF0ip4+62tbTSIUM=
sigs.k8s.io/gateway-api v1.1.0 h1:DsLDXCi6jR+Xz8/xd0Z1PYl2Pn0TyaFMOPPZIj4inDM=
sigs.k8s.io/gateway-api v1.1.0/go.mod h1:ZH4lHrL2sDi0FHZ9jjneb8kKnGzFWyrTya35sWUTrRs=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
+sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
+sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
+sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA=
+sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
diff --git a/pkg/apis/pxc/v1/pxc_types.go b/pkg/apis/pxc/v1/pxc_types.go
index 59fea50c2f..65f689f757 100644
--- a/pkg/apis/pxc/v1/pxc_types.go
+++ b/pkg/apis/pxc/v1/pxc_types.go
@@ -417,6 +417,14 @@ func (cr *PerconaXtraDBCluster) Validate() error {
return errors.Errorf("ProxySQL or HAProxy should be enabled if SmartUpdate set")
}
+ customUsers := make(map[string]int8, len(c.Users))
+ for _, user := range c.Users {
+ customUsers[user.Name]++
+ if customUsers[user.Name] > 1 {
+ return errors.Errorf("user %s is duplicated", user.Name)
+ }
+ }
+
return nil
}
@@ -501,6 +509,35 @@ type PodSpec struct {
TopologySpreadConstraints []corev1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"`
}
+func (spec *PodSpec) HasSidecarInternalSecret(secret *corev1.Secret) bool {
+ if spec.Sidecars != nil {
+ for _, container := range spec.Sidecars {
+ for _, env := range container.Env {
+ if env.ValueFrom != nil && env.ValueFrom.SecretKeyRef != nil {
+ if env.ValueFrom.SecretKeyRef.Name == secret.Name {
+ return true
+ }
+ }
+ }
+ }
+ }
+ if spec.SidecarVolumes != nil {
+ for _, volume := range spec.SidecarVolumes {
+ if volume.Secret != nil && volume.Secret.SecretName == secret.Name {
+ return true
+ }
+ if volume.Projected != nil {
+ for _, source := range volume.Projected.Sources {
+ if source.Secret != nil && source.Secret.Name == secret.Name {
+ return true
+ }
+ }
+ }
+ }
+ }
+ return false
+}
+
type ProxySQLSpec struct {
PodSpec `json:",inline"`
Expose ServiceExpose `json:"expose,omitempty"`
@@ -1211,7 +1248,7 @@ func (cr *PerconaXtraDBCluster) setProbesDefaults() {
}
func (cr *PerconaXtraDBCluster) checkSafeDefaults() error {
- if !cr.Spec.Unsafe.TLS && !cr.TLSEnabled() {
+ if !cr.Spec.Unsafe.TLS && !*cr.Spec.TLS.Enabled {
return errors.New("TLS must be enabled. Set spec.unsafeFlags.tls to true to disable this check")
}
@@ -1545,6 +1582,17 @@ func (s *PerconaXtraDBClusterStatus) AddCondition(c ClusterCondition) {
}
}
+// FindCondition finds the conditionType in conditions.
+func (s *PerconaXtraDBClusterStatus) FindCondition(conditionType AppState) *ClusterCondition {
+ for i := range s.Conditions {
+ if s.Conditions[i].Type == conditionType {
+ return &s.Conditions[i]
+ }
+ }
+
+ return nil
+}
+
func (cr *PerconaXtraDBCluster) CanBackup() error {
if cr.Status.Status == AppStateReady {
return nil
diff --git a/pkg/controller/pxc/backup.go b/pkg/controller/pxc/backup.go
index fa54c92a19..29af995c76 100644
--- a/pkg/controller/pxc/backup.go
+++ b/pkg/controller/pxc/backup.go
@@ -48,6 +48,10 @@ func (r *ReconcilePerconaXtraDBCluster) reconcileBackups(ctx context.Context, cr
if err != nil {
return errors.Errorf("get binlog collector deployment for cluster '%s': %v", cr.Name, err)
}
+ err = setControllerReference(cr, &binlogCollector, r.scheme)
+ if err != nil {
+ return errors.Wrapf(err, "set controller reference for binlog collector deployment '%s'", binlogCollector.Name)
+ }
currentCollector := appsv1.Deployment{}
err = r.client.Get(context.TODO(), types.NamespacedName{Name: binlogCollector.Name, Namespace: binlogCollector.Namespace}, ¤tCollector)
diff --git a/pkg/controller/pxc/controller.go b/pkg/controller/pxc/controller.go
index a139ca2775..508e11f9a1 100644
--- a/pkg/controller/pxc/controller.go
+++ b/pkg/controller/pxc/controller.go
@@ -33,7 +33,6 @@ import (
"github.com/percona/percona-xtradb-cluster-operator/clientcmd"
api "github.com/percona/percona-xtradb-cluster-operator/pkg/apis/pxc/v1"
- "github.com/percona/percona-xtradb-cluster-operator/pkg/k8s"
"github.com/percona/percona-xtradb-cluster-operator/pkg/naming"
"github.com/percona/percona-xtradb-cluster-operator/pkg/pxc"
"github.com/percona/percona-xtradb-cluster-operator/pkg/pxc/app"
@@ -225,7 +224,7 @@ func (r *ReconcilePerconaXtraDBCluster) Reconcile(ctx context.Context, request r
log.Info("The finalizer delete-ssl is deprecated and will be deleted in 1.18.0. Use percona.com/delete-ssl")
fallthrough
case naming.FinalizerDeleteSSL:
- err = r.deleteCerts(o)
+ err = r.deleteCerts(ctx, o)
case "delete-proxysql-pvc":
log.Info("The finalizer delete-proxysql-pvc is deprecated and will be deleted in 1.18.0. Use percona.com/delete-proxysql-pvc")
fallthrough
@@ -332,13 +331,18 @@ func (r *ReconcilePerconaXtraDBCluster) Reconcile(ctx context.Context, request r
return reconcile.Result{}, errors.Wrap(err, "reconcile persistent volumes")
}
+ err = r.reconcileSSL(ctx, o)
+ if err != nil {
+ return reconcile.Result{}, errors.Wrapf(err, "failed to reconcile SSL. Please create your TLS secret %s and %s manually or setup cert-manager correctly", o.Spec.PXC.SSLSecretName, o.Spec.PXC.SSLInternalSecretName)
+ }
+
err = r.deploy(ctx, o)
if err != nil {
return reconcile.Result{}, err
}
pxcSet := statefulset.NewNode(o)
- err = r.updatePod(ctx, pxcSet, o.Spec.PXC.PodSpec, o, userReconcileResult.pxcAnnotations)
+ err = r.updatePod(ctx, pxcSet, o.Spec.PXC.PodSpec, o, userReconcileResult.pxcAnnotations, true)
if err != nil {
return reconcile.Result{}, errors.Wrap(err, "pxc upgrade error")
}
@@ -374,7 +378,7 @@ func (r *ReconcilePerconaXtraDBCluster) Reconcile(ctx context.Context, request r
proxysqlSet := statefulset.NewProxy(o)
if o.Spec.ProxySQLEnabled() {
- err = r.updatePod(ctx, proxysqlSet, &o.Spec.ProxySQL.PodSpec, o, userReconcileResult.proxysqlAnnotations)
+ err = r.updatePod(ctx, proxysqlSet, &o.Spec.ProxySQL.PodSpec, o, userReconcileResult.proxysqlAnnotations, true)
if err != nil {
return reconcile.Result{}, errors.Wrap(err, "ProxySQL upgrade error")
}
@@ -487,7 +491,7 @@ func (r *ReconcilePerconaXtraDBCluster) reconcileHAProxy(ctx context.Context, cr
}
sts := statefulset.NewHAProxy(cr)
- if err := r.updatePod(ctx, sts, &cr.Spec.HAProxy.PodSpec, cr, templateAnnotations); err != nil {
+ if err := r.updatePod(ctx, sts, &cr.Spec.HAProxy.PodSpec, cr, templateAnnotations, true); err != nil {
return errors.Wrap(err, "HAProxy upgrade error")
}
svc := pxc.NewServiceHAProxy(cr)
@@ -532,266 +536,29 @@ func (r *ReconcilePerconaXtraDBCluster) reconcileHAProxy(ctx context.Context, cr
}
func (r *ReconcilePerconaXtraDBCluster) deploy(ctx context.Context, cr *api.PerconaXtraDBCluster) error {
- log := logf.FromContext(ctx)
-
- if cr.PVCResizeInProgress() {
- log.V(1).Info("PVC resize in progress, skipping statefulset")
- return nil
- }
-
- stsApp := statefulset.NewNode(cr)
- err := r.reconcileConfigMap(cr)
- if err != nil {
- return err
- }
-
- initImageName, err := k8s.GetInitImage(ctx, cr, r.client)
- if err != nil {
- return errors.Wrap(err, "failed to get initImage")
- }
-
- secretsName := cr.Spec.SecretsName
- if cr.CompareVersionWith("1.6.0") >= 0 {
- secretsName = "internal-" + cr.Name
- }
- secrets := new(corev1.Secret)
- err = r.client.Get(context.TODO(), types.NamespacedName{
- Name: secretsName, Namespace: cr.Namespace,
- }, secrets)
- if client.IgnoreNotFound(err) != nil {
- return errors.Wrap(err, "get internal secret")
- }
- nodeSet, err := pxc.StatefulSet(ctx, r.client, stsApp, cr.Spec.PXC.PodSpec, cr, secrets, initImageName, r.getConfigVolume)
- if err != nil {
- return errors.Wrap(err, "get pxc statefulset")
- }
- currentNodeSet := new(appsv1.StatefulSet)
- err = r.client.Get(context.TODO(), types.NamespacedName{
- Namespace: nodeSet.Namespace,
- Name: nodeSet.Name,
- }, currentNodeSet)
- if client.IgnoreNotFound(err) != nil {
- return errors.Wrap(err, "get current pxc sts")
- }
- // Keep same volumeClaimTemplates labels if statefulset already exists.
- // We can't update volumeClaimTemplates.
- if err == nil && cr.CompareVersionWith("1.16.0") >= 0 {
- for i, pvc := range currentNodeSet.Spec.VolumeClaimTemplates {
- nodeSet.Spec.VolumeClaimTemplates[i].Labels = pvc.Labels
- }
- }
- // TODO: code duplication with updatePod function
- if nodeSet.Spec.Template.Annotations == nil {
- nodeSet.Spec.Template.Annotations = make(map[string]string)
- }
- if v, ok := currentNodeSet.Spec.Template.Annotations["last-applied-secret"]; ok {
- nodeSet.Spec.Template.Annotations["last-applied-secret"] = v
- }
- if cr.CompareVersionWith("1.1.0") >= 0 {
- hash, err := r.getConfigHash(cr, stsApp)
- if err != nil {
- return errors.Wrap(err, "getting node config hash")
- }
- nodeSet.Spec.Template.Annotations["percona.com/configuration-hash"] = hash
- }
-
- err = r.reconcileSSL(cr)
- if err != nil {
- return errors.Wrapf(err, "failed to reconcile SSL.Please create your TLS secret %s and %s manually or setup cert-manager correctly",
- cr.Spec.PXC.SSLSecretName, cr.Spec.PXC.SSLInternalSecretName)
- }
-
- sslHash, err := r.getSecretHash(cr, cr.Spec.PXC.SSLSecretName, !cr.TLSEnabled())
- if err != nil {
- return errors.Wrap(err, "get secret hash")
- }
- if sslHash != "" && cr.CompareVersionWith("1.1.0") >= 0 {
- nodeSet.Spec.Template.Annotations["percona.com/ssl-hash"] = sslHash
- }
-
- sslInternalHash, err := r.getSecretHash(cr, cr.Spec.PXC.SSLInternalSecretName, !cr.TLSEnabled())
- if err != nil && !k8serrors.IsNotFound(err) {
- return errors.Wrap(err, "get internal secret hash")
- }
- if sslInternalHash != "" && cr.CompareVersionWith("1.1.0") >= 0 {
- nodeSet.Spec.Template.Annotations["percona.com/ssl-internal-hash"] = sslInternalHash
- }
-
- if cr.CompareVersionWith("1.9.0") >= 0 {
- envVarsHash, err := r.getSecretHash(cr, cr.Spec.PXC.EnvVarsSecretName, true)
- if err != nil {
- return errors.Wrap(err, "upgradePod/updateApp error: update secret error")
+ deployStatefulApp := func(stsApp api.StatefulApp, podSpec *api.PodSpec) error {
+ if err := r.updatePod(ctx, stsApp, podSpec, cr, nil, false); err != nil {
+ return errors.Wrapf(err, "updatePod for %s", stsApp.Name())
}
- if envVarsHash != "" {
- nodeSet.Spec.Template.Annotations["percona.com/env-secret-config-hash"] = envVarsHash
+ if err := r.reconcilePDB(ctx, cr, podSpec.PodDisruptionBudget, stsApp); err != nil {
+ return errors.Wrapf(err, "failed to reconcile PodDisruptionBudget for %s", stsApp.Name())
}
+ return nil
}
- vaultConfigHash, err := r.getSecretHash(cr, cr.Spec.VaultSecretName, true)
- if err != nil {
- return errors.Wrap(err, "get vault config hash")
- }
- if vaultConfigHash != "" && cr.CompareVersionWith("1.6.0") >= 0 {
- nodeSet.Spec.Template.Annotations["percona.com/vault-config-hash"] = vaultConfigHash
- }
- nodeSet.Spec.Template.Spec.Tolerations = cr.Spec.PXC.Tolerations
- err = setControllerReference(cr, nodeSet, r.scheme)
- if err != nil {
- return err
- }
-
- err = r.createOrUpdate(ctx, cr, nodeSet)
- if err != nil {
- return errors.Wrap(err, "create newStatefulSetNode")
- }
-
- // PodDisruptionBudget object for nodes
- err = r.client.Get(ctx, types.NamespacedName{Name: nodeSet.Name, Namespace: nodeSet.Namespace}, nodeSet)
- if err == nil {
- err := r.reconcilePDB(ctx, cr, cr.Spec.PXC.PodDisruptionBudget, stsApp, nodeSet)
- if err != nil {
- return errors.Wrapf(err, "PodDisruptionBudget for %s", nodeSet.Name)
- }
- } else if !k8serrors.IsNotFound(err) {
- return errors.Wrap(err, "get PXC stateful set")
+ if err := deployStatefulApp(statefulset.NewNode(cr), cr.Spec.PXC.PodSpec); err != nil {
+ return errors.Wrap(err, "failed to deploy pxc")
}
-
- // HAProxy StatefulSet
if cr.HAProxyEnabled() {
- sfsHAProxy := statefulset.NewHAProxy(cr)
- haProxySet, err := pxc.StatefulSet(ctx, r.client, sfsHAProxy, &cr.Spec.HAProxy.PodSpec, cr, secrets, initImageName, r.getConfigVolume)
- if err != nil {
- return errors.Wrap(err, "create HAProxy StatefulSet")
- }
- err = setControllerReference(cr, haProxySet, r.scheme)
- if err != nil {
- return err
- }
-
- // TODO: code duplication with updatePod function
- if haProxySet.Spec.Template.Annotations == nil {
- haProxySet.Spec.Template.Annotations = make(map[string]string)
- }
- hash, err := r.getConfigHash(cr, sfsHAProxy)
- if err != nil {
- return errors.Wrap(err, "getting HAProxy config hash")
- }
- haProxySet.Spec.Template.Annotations["percona.com/configuration-hash"] = hash
- if cr.CompareVersionWith("1.5.0") == 0 {
- if sslHash != "" {
- haProxySet.Spec.Template.Annotations["percona.com/ssl-hash"] = sslHash
- }
- if sslInternalHash != "" {
- haProxySet.Spec.Template.Annotations["percona.com/ssl-internal-hash"] = sslInternalHash
- }
- }
- if cr.CompareVersionWith("1.9.0") >= 0 {
- envVarsHash, err := r.getSecretHash(cr, cr.Spec.HAProxy.EnvVarsSecretName, true)
- if err != nil {
- return errors.Wrap(err, "upgradePod/updateApp error: update secret error")
- }
- if envVarsHash != "" {
- haProxySet.Spec.Template.Annotations["percona.com/env-secret-config-hash"] = envVarsHash
- }
- }
- // PodDisruptionBudget object for HAProxy
- currentHAProxySts := new(appsv1.StatefulSet)
- err = r.client.Get(ctx, types.NamespacedName{Name: haProxySet.Name, Namespace: haProxySet.Namespace}, currentHAProxySts)
- if client.IgnoreNotFound(err) != nil {
- return errors.Wrap(err, "get HAProxy stateful set")
- }
- if err == nil {
- err := r.reconcilePDB(ctx, cr, cr.Spec.HAProxy.PodDisruptionBudget, sfsHAProxy, currentHAProxySts)
- if err != nil {
- return errors.Wrapf(err, "PodDisruptionBudget for %s", haProxySet.Name)
- }
- // Keep same volumeClaimTemplates labels if statefulset already exists.
- // We can't update volumeClaimTemplates.
- if cr.CompareVersionWith("1.16.0") >= 0 {
- for i, pvc := range currentHAProxySts.Spec.VolumeClaimTemplates {
- haProxySet.Spec.VolumeClaimTemplates[i].Labels = pvc.Labels
- }
- }
- }
-
- err = r.client.Create(context.TODO(), haProxySet)
- if err != nil && !k8serrors.IsAlreadyExists(err) {
- return errors.Wrap(err, "create newStatefulSetHAProxy")
+ if err := deployStatefulApp(statefulset.NewHAProxy(cr), &cr.Spec.HAProxy.PodSpec); err != nil {
+ return errors.Wrap(err, "failed to deploy haproxy")
}
}
-
- if cr.Spec.ProxySQLEnabled() {
- sfsProxy := statefulset.NewProxy(cr)
- proxySet, err := pxc.StatefulSet(ctx, r.client, sfsProxy, &cr.Spec.ProxySQL.PodSpec, cr, secrets, initImageName, r.getConfigVolume)
- if err != nil {
- return errors.Wrap(err, "create ProxySQL Service")
- }
- err = setControllerReference(cr, proxySet, r.scheme)
- if err != nil {
- return err
- }
- currentProxySet := new(appsv1.StatefulSet)
- err = r.client.Get(context.TODO(), types.NamespacedName{
- Namespace: proxySet.Namespace,
- Name: proxySet.Name,
- }, currentProxySet)
- if client.IgnoreNotFound(err) != nil {
- return errors.Wrap(err, "get current proxy sts")
- }
- // Keep same volumeClaimTemplates labels if statefulset already exists.
- // We can't update volumeClaimTemplates.
- if err == nil && cr.CompareVersionWith("1.16.0") >= 0 {
- for i, pvc := range currentProxySet.Spec.VolumeClaimTemplates {
- proxySet.Spec.VolumeClaimTemplates[i].Labels = pvc.Labels
- }
- }
-
- // TODO: code duplication with updatePod function
- if proxySet.Spec.Template.Annotations == nil {
- proxySet.Spec.Template.Annotations = make(map[string]string)
- }
- if v, ok := currentProxySet.Spec.Template.Annotations["last-applied-secret"]; ok {
- proxySet.Spec.Template.Annotations["last-applied-secret"] = v
- }
- if cr.CompareVersionWith("1.1.0") >= 0 {
- hash, err := r.getConfigHash(cr, sfsProxy)
- if err != nil {
- return errors.Wrap(err, "getting proxySQL config hash")
- }
- proxySet.Spec.Template.Annotations["percona.com/configuration-hash"] = hash
- if sslHash != "" {
- proxySet.Spec.Template.Annotations["percona.com/ssl-hash"] = sslHash
- }
- if sslInternalHash != "" {
- proxySet.Spec.Template.Annotations["percona.com/ssl-internal-hash"] = sslInternalHash
- }
- }
- if cr.CompareVersionWith("1.9.0") >= 0 {
- envVarsHash, err := r.getSecretHash(cr, cr.Spec.ProxySQL.EnvVarsSecretName, true)
- if err != nil {
- return errors.Wrap(err, "upgradePod/updateApp error: update secret error")
- }
- if envVarsHash != "" {
- proxySet.Spec.Template.Annotations["percona.com/env-secret-config-hash"] = envVarsHash
- }
- }
- err = r.client.Create(context.TODO(), proxySet)
- if err != nil && !k8serrors.IsAlreadyExists(err) {
- return errors.Wrap(err, "create newStatefulSetProxySQL")
- }
-
- // PodDisruptionBudget object for ProxySQL
- err = r.client.Get(ctx, types.NamespacedName{Name: proxySet.Name, Namespace: proxySet.Namespace}, proxySet)
- if err == nil {
- err := r.reconcilePDB(ctx, cr, cr.Spec.ProxySQL.PodDisruptionBudget, sfsProxy, proxySet)
- if err != nil {
- return errors.Wrapf(err, "PodDisruptionBudget for %s", proxySet.Name)
- }
- } else if !k8serrors.IsNotFound(err) {
- return errors.Wrap(err, "get ProxySQL stateful set")
+ if cr.ProxySQLEnabled() {
+ if err := deployStatefulApp(statefulset.NewProxy(cr), &cr.Spec.ProxySQL.PodSpec); err != nil {
+ return errors.Wrap(err, "failed to deploy proxysql")
}
}
-
return nil
}
@@ -958,14 +725,21 @@ func (r *ReconcilePerconaXtraDBCluster) createHookScriptConfigMap(cr *api.Percon
return nil
}
-func (r *ReconcilePerconaXtraDBCluster) reconcilePDB(ctx context.Context, cr *api.PerconaXtraDBCluster, spec *api.PodDisruptionBudgetSpec, sfs api.StatefulApp, owner runtime.Object) error {
+func (r *ReconcilePerconaXtraDBCluster) reconcilePDB(ctx context.Context, cr *api.PerconaXtraDBCluster, spec *api.PodDisruptionBudgetSpec, sfs api.StatefulApp) error {
if spec == nil {
return nil
}
+ sts := new(appsv1.StatefulSet)
+ if err := r.client.Get(ctx, client.ObjectKeyFromObject(sfs.StatefulSet()), sts); err != nil {
+ if k8serrors.IsNotFound(err) {
+ return nil
+ }
+ return errors.Wrap(err, "get PXC stateful set")
+ }
+
pdb := pxc.PodDisruptionBudget(cr, spec, sfs.Labels())
- err := setControllerReference(owner, pdb, r.scheme)
- if err != nil {
+ if err := setControllerReference(sts, pdb, r.scheme); err != nil {
return errors.Wrap(err, "set owner reference")
}
@@ -1139,19 +913,19 @@ func (r *ReconcilePerconaXtraDBCluster) deleteSecrets(cr *api.PerconaXtraDBClust
return nil
}
-func (r *ReconcilePerconaXtraDBCluster) deleteCerts(cr *api.PerconaXtraDBCluster) error {
+func (r *ReconcilePerconaXtraDBCluster) deleteCerts(ctx context.Context, cr *api.PerconaXtraDBCluster) error {
issuers := []string{
cr.Name + "-pxc-ca-issuer",
cr.Name + "-pxc-issuer",
}
for _, issuerName := range issuers {
issuer := &cm.Issuer{}
- err := r.client.Get(context.TODO(), types.NamespacedName{Namespace: cr.Namespace, Name: issuerName}, issuer)
+ err := r.client.Get(ctx, types.NamespacedName{Namespace: cr.Namespace, Name: issuerName}, issuer)
if err != nil {
continue
}
- err = r.client.Delete(context.TODO(), issuer, &client.DeleteOptions{Preconditions: &metav1.Preconditions{UID: &issuer.UID}})
+ err = r.client.Delete(ctx, issuer, &client.DeleteOptions{Preconditions: &metav1.Preconditions{UID: &issuer.UID}})
if err != nil {
return errors.Wrapf(err, "delete issuer %s", issuerName)
}
@@ -1164,12 +938,12 @@ func (r *ReconcilePerconaXtraDBCluster) deleteCerts(cr *api.PerconaXtraDBCluster
}
for _, certName := range certs {
cert := &cm.Certificate{}
- err := r.client.Get(context.TODO(), types.NamespacedName{Namespace: cr.Namespace, Name: certName}, cert)
+ err := r.client.Get(ctx, types.NamespacedName{Namespace: cr.Namespace, Name: certName}, cert)
if err != nil {
continue
}
- err = r.client.Delete(context.TODO(), cert, &client.DeleteOptions{Preconditions: &metav1.Preconditions{UID: &cert.UID}})
+ err = r.client.Delete(ctx, cert, &client.DeleteOptions{Preconditions: &metav1.Preconditions{UID: &cert.UID}})
if err != nil {
return errors.Wrapf(err, "delete certificate %s", certName)
}
@@ -1193,12 +967,12 @@ func (r *ReconcilePerconaXtraDBCluster) deleteCerts(cr *api.PerconaXtraDBCluster
for _, secretName := range secrets {
secret := &corev1.Secret{}
- err := r.client.Get(context.TODO(), types.NamespacedName{Namespace: cr.Namespace, Name: secretName}, secret)
+ err := r.client.Get(ctx, types.NamespacedName{Namespace: cr.Namespace, Name: secretName}, secret)
if err != nil {
continue
}
- err = r.client.Delete(context.TODO(), secret, &client.DeleteOptions{Preconditions: &metav1.Preconditions{UID: &secret.UID}})
+ err = r.client.Delete(ctx, secret, &client.DeleteOptions{Preconditions: &metav1.Preconditions{UID: &secret.UID}})
if err != nil {
return errors.Wrapf(err, "delete secret %s", secretName)
}
diff --git a/pkg/controller/pxc/status.go b/pkg/controller/pxc/status.go
index 77fb3bd2c2..f7f08e3dae 100644
--- a/pkg/controller/pxc/status.go
+++ b/pkg/controller/pxc/status.go
@@ -2,6 +2,7 @@ package pxc
import (
"context"
+ "reflect"
"time"
"github.com/pkg/errors"
@@ -11,6 +12,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
+ "k8s.io/apimachinery/pkg/util/wait"
k8sretry "k8s.io/client-go/util/retry"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -22,7 +24,7 @@ func (r *ReconcilePerconaXtraDBCluster) updateStatus(ctx context.Context, cr *ap
clusterCondition := api.ClusterCondition{
Status: api.ConditionTrue,
Type: api.AppStateInit,
- LastTransitionTime: metav1.NewTime(time.Now()),
+ LastTransitionTime: metav1.NewTime(time.Now().Truncate(time.Second)),
}
if reconcileErr != nil {
@@ -32,7 +34,7 @@ func (r *ReconcilePerconaXtraDBCluster) updateStatus(ctx context.Context, cr *ap
Type: api.AppStateError,
Message: reconcileErr.Error(),
Reason: "ErrorReconcile",
- LastTransitionTime: metav1.NewTime(time.Now()),
+ LastTransitionTime: metav1.NewTime(time.Now().Truncate(time.Second)),
}
cr.Status.AddCondition(clusterCondition)
@@ -155,6 +157,29 @@ func (r *ReconcilePerconaXtraDBCluster) writeStatus(ctx context.Context, cr *api
return r.client.Status().Update(ctx, c)
})
+ // We need to make sure that the next reconcile gets a PerconaXtraDBCluster with an updated status.
+ // Without this, the next reconcile may occur too quickly, possibly before the status is updated.
+ // In this case, the next reconcile may use outdated status data,
+ // potentially breaking functionality that depends on it, such as the reconcileTLSToggle method.
+ b := wait.Backoff{
+ Steps: 10,
+ Duration: 500 * time.Millisecond,
+ Factor: 1.0,
+ }
+ if err := k8sretry.OnError(b, func(error) bool { return true }, func() error {
+ c := &api.PerconaXtraDBCluster{}
+ if err := r.client.Get(ctx, client.ObjectKeyFromObject(cr), c); err != nil {
+ return err
+ }
+
+ if !reflect.DeepEqual(c.Status.Conditions, cr.Status.Conditions) {
+ return errors.Errorf("conditions are not equal: expected %v, have %v", cr.Status.Conditions, c.Status.Conditions)
+ }
+ return nil
+ }); err != nil {
+ return err
+ }
+
return errors.Wrap(client.IgnoreNotFound(err), "write status")
}
diff --git a/pkg/controller/pxc/tls.go b/pkg/controller/pxc/tls.go
index 142a4139a2..3a133d2abf 100644
--- a/pkg/controller/pxc/tls.go
+++ b/pkg/controller/pxc/tls.go
@@ -12,27 +12,33 @@ import (
k8serr "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
+ "sigs.k8s.io/controller-runtime/pkg/client"
api "github.com/percona/percona-xtradb-cluster-operator/pkg/apis/pxc/v1"
+ "github.com/percona/percona-xtradb-cluster-operator/pkg/k8s"
"github.com/percona/percona-xtradb-cluster-operator/pkg/naming"
"github.com/percona/percona-xtradb-cluster-operator/pkg/pxctls"
)
-func (r *ReconcilePerconaXtraDBCluster) reconcileSSL(cr *api.PerconaXtraDBCluster) error {
+func (r *ReconcilePerconaXtraDBCluster) reconcileSSL(ctx context.Context, cr *api.PerconaXtraDBCluster) error {
+ if err := r.reconcileTLSToggle(ctx, cr); err != nil {
+ return errors.Wrap(err, "reconcile tls toggle")
+ }
+
if !cr.TLSEnabled() {
return nil
}
secretObj := corev1.Secret{}
secretInternalObj := corev1.Secret{}
- errSecret := r.client.Get(context.TODO(),
+ errSecret := r.client.Get(ctx,
types.NamespacedName{
Namespace: cr.Namespace,
Name: cr.Spec.PXC.SSLSecretName,
},
&secretObj,
)
- errInternalSecret := r.client.Get(context.TODO(),
+ errInternalSecret := r.client.Get(ctx,
types.NamespacedName{
Namespace: cr.Namespace,
Name: cr.Spec.PXC.SSLInternalSecretName,
@@ -331,3 +337,56 @@ func (r *ReconcilePerconaXtraDBCluster) createSSLManualy(cr *api.PerconaXtraDBCl
}
return nil
}
+
+func (r *ReconcilePerconaXtraDBCluster) reconcileTLSToggle(ctx context.Context, cr *api.PerconaXtraDBCluster) error {
+ if cr.CompareVersionWith("1.16.0") < 0 {
+ return nil
+ }
+
+ condition := cr.Status.FindCondition(naming.ConditionTLS)
+ if condition == nil {
+ cr.Status.AddCondition(api.ClusterCondition{
+ Type: naming.ConditionTLS,
+ Status: api.ConditionStatus(naming.GetConditionTLSState(cr)),
+ LastTransitionTime: metav1.NewTime(time.Now().Truncate(time.Second)),
+ })
+ return nil
+ }
+
+ if condition.Status == api.ConditionStatus(naming.GetConditionTLSState(cr)) {
+ return nil
+ }
+
+ clusterPaused, err := k8s.PauseCluster(ctx, r.client, cr)
+ if err != nil {
+ return errors.Wrap(err, "failed to pause cluster")
+ }
+ if !clusterPaused {
+ return nil
+ }
+
+ switch naming.ConditionTLSState(condition.Status) {
+ case naming.ConditionTLSStateEnabled:
+ if err := r.deleteCerts(ctx, cr); err != nil {
+ return errors.Wrap(err, "failed to delete tls secrets")
+ }
+ case naming.ConditionTLSStateDisabled:
+ default:
+ return errors.Errorf("unknown value for %s condition status: %s", naming.ConditionTLS, condition.Status)
+ }
+
+ patch := client.MergeFrom(cr.DeepCopy())
+ cr.Spec.Unsafe.TLS = !*cr.Spec.TLS.Enabled
+ if err := r.client.Patch(ctx, cr.DeepCopy(), patch); err != nil {
+ return errors.Wrap(err, "failed to patch cr")
+ }
+
+ _, err = k8s.UnpauseCluster(ctx, r.client, cr)
+ if err != nil {
+ return errors.Wrap(err, "failed to start cluster")
+ }
+
+ condition.Status = api.ConditionStatus(naming.GetConditionTLSState(cr))
+ condition.LastTransitionTime = metav1.NewTime(time.Now().Truncate(time.Second))
+ return nil
+}
diff --git a/pkg/controller/pxc/upgrade.go b/pkg/controller/pxc/upgrade.go
index 85fcbc1702..0c232e2a42 100644
--- a/pkg/controller/pxc/upgrade.go
+++ b/pkg/controller/pxc/upgrade.go
@@ -29,7 +29,7 @@ import (
"github.com/percona/percona-xtradb-cluster-operator/pkg/util"
)
-func (r *ReconcilePerconaXtraDBCluster) updatePod(ctx context.Context, sfs api.StatefulApp, podSpec *api.PodSpec, cr *api.PerconaXtraDBCluster, newAnnotations map[string]string) error {
+func (r *ReconcilePerconaXtraDBCluster) updatePod(ctx context.Context, sfs api.StatefulApp, podSpec *api.PodSpec, cr *api.PerconaXtraDBCluster, newAnnotations map[string]string, smartUpdate bool) error {
log := logf.FromContext(ctx)
if cr.PVCResizeInProgress() {
@@ -43,7 +43,6 @@ func (r *ReconcilePerconaXtraDBCluster) updatePod(ctx context.Context, sfs api.S
}
// embed DB configuration hash
- // TODO: code duplication with deploy function
configHash, err := r.getConfigHash(cr, sfs)
if err != nil {
return errors.Wrap(err, "getting config hash")
@@ -97,18 +96,17 @@ func (r *ReconcilePerconaXtraDBCluster) updatePod(ctx context.Context, sfs api.S
}
err = k8sretry.RetryOnConflict(k8sretry.DefaultRetry, func() error {
- sts, err := pxc.StatefulSet(ctx, r.client, sfs, podSpec, cr, secrets, initImageName, r.getConfigVolume)
- if err != nil {
- return errors.Wrap(err, "construct statefulset")
- }
- if err = setControllerReference(cr, sts, r.scheme); err != nil {
- return errors.Wrap(err, "set controller reference")
+ currentSet := sfs.StatefulSet()
+ err := r.client.Get(ctx, client.ObjectKeyFromObject(currentSet), currentSet)
+ if client.IgnoreNotFound(err) != nil {
+ return errors.Wrap(err, "failed to get statefulset")
}
+ annotations := currentSet.Spec.Template.Annotations
+ labels := currentSet.Spec.Template.Labels
- currentSet := sfs.StatefulSet()
- err = r.client.Get(ctx, types.NamespacedName{Name: currentSet.Name, Namespace: currentSet.Namespace}, currentSet)
+ sts, err := pxc.StatefulSet(ctx, r.client, sfs, podSpec, cr, secrets, initImageName, r.getConfigVolume)
if err != nil {
- return errors.Wrap(err, "failed to get statefulset")
+ return errors.Wrap(err, "construct statefulset")
}
// Keep same volumeClaimTemplates labels if statefulset already exists.
// We can't update volumeClaimTemplates.
@@ -118,13 +116,10 @@ func (r *ReconcilePerconaXtraDBCluster) updatePod(ctx context.Context, sfs api.S
}
}
- annotations := currentSet.Spec.Template.Annotations
- labels := currentSet.Spec.Template.Labels
-
- // support annotation adjustements
- util.MergeMaps(annotations, sts.Spec.Template.Annotations, newAnnotations)
-
- util.MergeMaps(labels, sts.Spec.Template.Labels)
+ // If currentSet is not found, both annotations and labels will be nil.
+ // In such cases, MergeMaps will initialize a new map and return it.
+ annotations = util.MergeMaps(annotations, sts.Spec.Template.Annotations, newAnnotations)
+ labels = util.MergeMaps(labels, sts.Spec.Template.Labels)
for k, v := range hashAnnotations {
if v != "" || k == "percona.com/configuration-hash" {
@@ -134,6 +129,10 @@ func (r *ReconcilePerconaXtraDBCluster) updatePod(ctx context.Context, sfs api.S
sts.Spec.Template.Annotations = annotations
sts.Spec.Template.Labels = labels
+
+ if err := setControllerReference(cr, sts, r.scheme); err != nil {
+ return errors.Wrap(err, "set controller reference")
+ }
err = r.createOrUpdate(ctx, cr, sts)
if err != nil {
return errors.Wrap(err, "update error")
@@ -148,7 +147,13 @@ func (r *ReconcilePerconaXtraDBCluster) updatePod(ctx context.Context, sfs api.S
return nil
}
- return r.smartUpdate(ctx, sfs, cr)
+ if smartUpdate {
+ if err := r.smartUpdate(ctx, sfs, cr); err != nil {
+ return errors.Wrap(err, "smart update")
+ }
+ }
+
+ return nil
}
func (r *ReconcilePerconaXtraDBCluster) smartUpdate(ctx context.Context, sfs api.StatefulApp, cr *api.PerconaXtraDBCluster) error {
diff --git a/pkg/controller/pxc/users.go b/pkg/controller/pxc/users.go
index 55d4a99f57..f2d5ef266f 100644
--- a/pkg/controller/pxc/users.go
+++ b/pkg/controller/pxc/users.go
@@ -475,6 +475,9 @@ func (r *ReconcilePerconaXtraDBCluster) handleMonitorUser(ctx context.Context, c
if cr.Spec.PMM != nil && cr.Spec.PMM.IsEnabled(internalSecrets) {
actions.restartPXC = true
}
+ if cr.Spec.PXC.Sidecars != nil && cr.Spec.PXC.HasSidecarInternalSecret(internalSecrets) {
+ actions.restartPXC = true
+ }
err = r.discardOldPassword(cr, secrets, internalSecrets, user)
if err != nil {
diff --git a/pkg/controller/pxc/users_custom.go b/pkg/controller/pxc/users_custom.go
index 85efb9f883..0dc8803746 100644
--- a/pkg/controller/pxc/users_custom.go
+++ b/pkg/controller/pxc/users_custom.go
@@ -51,6 +51,11 @@ func (r *ReconcilePerconaXtraDBCluster) reconcileCustomUsers(ctx context.Context
sysUserNames := sysUserNames()
for _, user := range cr.Spec.Users {
+ if user.Name == "" {
+ log.Error(nil, "user name is not set", "user", user)
+ continue
+ }
+
if _, ok := sysUserNames[user.Name]; ok {
log.Error(nil, "creating user with reserved user name is forbidden", "user", user.Name)
continue
@@ -91,7 +96,13 @@ func (r *ReconcilePerconaXtraDBCluster) reconcileCustomUsers(ctx context.Context
annotationKey := fmt.Sprintf("percona.com/%s-%s-hash", cr.Name, user.Name)
- if userPasswordChanged(userSecret, annotationKey, userSecretPassKey) {
+ u, err := um.GetUser(ctx, user.Name)
+ if err != nil {
+ log.Error(err, "failed to get user", "user", user)
+ continue
+ }
+
+ if userPasswordChanged(userSecret, u, annotationKey, userSecretPassKey) {
log.Info("User password changed", "user", user.Name)
err := um.UpsertUser(ctx, alterUserQuery(&user), string(userSecret.Data[userSecretPassKey]))
@@ -109,12 +120,6 @@ func (r *ReconcilePerconaXtraDBCluster) reconcileCustomUsers(ctx context.Context
log.Info("User password updated", "user", user.Name)
}
- u, err := um.GetUser(ctx, user.Name)
- if err != nil {
- log.Error(err, "failed to get user", "user", user)
- continue
- }
-
if userChanged(u, &user, log) {
log.Info("Creating/updating user", "user", user.Name)
@@ -165,18 +170,19 @@ func generateUserPass(
return nil
}
-func userPasswordChanged(secret *corev1.Secret, key, passKey string) bool {
+func userPasswordChanged(secret *corev1.Secret, dbUser *users.User, key, passKey string) bool {
if secret.Annotations == nil {
return false
}
hash, ok := secret.Annotations[key]
if !ok {
- return false
+ // If annotation is not present in the secret and the user is created (not nil),
+ // we assume that password has changed.
+ return dbUser != nil
}
newHash := sha256Hash(secret.Data[passKey])
-
return hash != newHash
}
@@ -188,16 +194,6 @@ func userChanged(current *users.User, desired *api.User, log logr.Logger) bool {
return true
}
- if len(current.Hosts) != len(desired.Hosts) {
- log.Info("Hosts changed", "current", current.Hosts, "desired", desired.Hosts, "user", userName)
- return true
- }
-
- if len(current.DBs) != len(desired.DBs) {
- log.Info("DBs changed", "current", current.DBs, "desired", desired.DBs)
- return true
- }
-
for _, u := range desired.Hosts {
if !current.Hosts.Has(u) {
log.Info("Hosts changed", "current", current.Hosts, "desired", desired.Hosts, "user", userName)
diff --git a/pkg/controller/pxc/users_without_dp.go b/pkg/controller/pxc/users_without_dp.go
index 3aea25076c..381d9979f2 100644
--- a/pkg/controller/pxc/users_without_dp.go
+++ b/pkg/controller/pxc/users_without_dp.go
@@ -249,6 +249,9 @@ func (r *ReconcilePerconaXtraDBCluster) handleMonitorUserWithoutDP(ctx context.C
if cr.Spec.PMM != nil && cr.Spec.PMM.IsEnabled(internalSecrets) {
actions.restartPXC = true
}
+ if cr.Spec.PXC.Sidecars != nil && cr.Spec.PXC.HasSidecarInternalSecret(internalSecrets) {
+ actions.restartPXC = true
+ }
orig := internalSecrets.DeepCopy()
internalSecrets.Data[user.Name] = secrets.Data[user.Name]
diff --git a/pkg/controller/pxc/version.go b/pkg/controller/pxc/version.go
index d239f350f4..e922cf6cff 100644
--- a/pkg/controller/pxc/version.go
+++ b/pkg/controller/pxc/version.go
@@ -237,17 +237,18 @@ func (r *ReconcilePerconaXtraDBCluster) getNewVersions(ctx context.Context, cr *
}
vm := versionMeta{
- Apply: cr.Spec.UpgradeOptions.Apply,
- Platform: string(cr.Spec.Platform),
- KubeVersion: r.serverVersion.Info.GitVersion,
- PXCVersion: cr.Status.PXC.Version,
- PMMVersion: cr.Status.PMM.Version,
- HAProxyVersion: cr.Status.HAProxy.Version,
- ProxySQLVersion: cr.Status.ProxySQL.Version,
- BackupVersion: cr.Status.Backup.Version,
- LogCollectorVersion: cr.Status.LogCollector.Version,
- CRUID: string(cr.GetUID()),
- ClusterWideEnabled: watchNs == "",
+ Apply: cr.Spec.UpgradeOptions.Apply,
+ Platform: string(cr.Spec.Platform),
+ KubeVersion: r.serverVersion.Info.GitVersion,
+ PXCVersion: cr.Status.PXC.Version,
+ PMMVersion: cr.Status.PMM.Version,
+ HAProxyVersion: cr.Status.HAProxy.Version,
+ ProxySQLVersion: cr.Status.ProxySQL.Version,
+ BackupVersion: cr.Status.Backup.Version,
+ LogCollectorVersion: cr.Status.LogCollector.Version,
+ CRUID: string(cr.GetUID()),
+ ClusterWideEnabled: watchNs == "",
+ UserManagementEnabled: len(cr.Spec.Users) > 0,
}
endpoint := apiv1.GetDefaultVersionServiceEndpoint()
diff --git a/pkg/controller/pxc/volumes.go b/pkg/controller/pxc/volumes.go
index d7a705766e..518800bff9 100644
--- a/pkg/controller/pxc/volumes.go
+++ b/pkg/controller/pxc/volumes.go
@@ -226,7 +226,7 @@ func (r *ReconcilePerconaXtraDBCluster) reconcilePersistentVolumes(ctx context.C
return nil
}
- if cr.CompareVersionWith("1.16.0") >= 0 && !cr.Spec.VolumeExpansionEnabled {
+ if !cr.Spec.VolumeExpansionEnabled {
// If expansion is disabled we should keep the old value
cr.Spec.PXC.VolumeSpec.PersistentVolumeClaim.Resources.Requests[corev1.ResourceStorage] = configured
return nil
diff --git a/pkg/controller/pxc/vs.go b/pkg/controller/pxc/vs.go
index 8356b917ee..577e1114e9 100644
--- a/pkg/controller/pxc/vs.go
+++ b/pkg/controller/pxc/vs.go
@@ -31,22 +31,23 @@ func (vs VersionServiceClient) GetExactVersion(cr *api.PerconaXtraDBCluster, end
})
applyParams := &version_service.VersionServiceApplyParams{
- Apply: vm.Apply,
- BackupVersion: &vm.BackupVersion,
- CustomResourceUID: &vm.CRUID,
- DatabaseVersion: &vm.PXCVersion,
- HaproxyVersion: &vm.HAProxyVersion,
- KubeVersion: &vm.KubeVersion,
- LogCollectorVersion: &vm.LogCollectorVersion,
- NamespaceUID: new(string),
- OperatorVersion: cr.Spec.CRVersion,
- Platform: &vm.Platform,
- PmmVersion: &vm.PMMVersion,
- Product: productName,
- ProxysqlVersion: &vm.ProxySQLVersion,
- Context: nil,
- ClusterWideEnabled: &vm.ClusterWideEnabled,
- HTTPClient: &http.Client{Timeout: 10 * time.Second},
+ Apply: vm.Apply,
+ BackupVersion: &vm.BackupVersion,
+ CustomResourceUID: &vm.CRUID,
+ DatabaseVersion: &vm.PXCVersion,
+ HaproxyVersion: &vm.HAProxyVersion,
+ KubeVersion: &vm.KubeVersion,
+ LogCollectorVersion: &vm.LogCollectorVersion,
+ NamespaceUID: new(string),
+ OperatorVersion: cr.Spec.CRVersion,
+ Platform: &vm.Platform,
+ PmmVersion: &vm.PMMVersion,
+ Product: productName,
+ ProxysqlVersion: &vm.ProxySQLVersion,
+ Context: nil,
+ ClusterWideEnabled: &vm.ClusterWideEnabled,
+ HTTPClient: &http.Client{Timeout: 10 * time.Second},
+ UserManagementEnabled: &vm.UserManagementEnabled,
}
applyParams = applyParams.WithTimeout(10 * time.Second)
@@ -151,15 +152,16 @@ type VersionServiceClient struct {
}
type versionMeta struct {
- Apply string
- PXCVersion string
- KubeVersion string
- Platform string
- PMMVersion string
- BackupVersion string
- ProxySQLVersion string
- HAProxyVersion string
- LogCollectorVersion string
- CRUID string
- ClusterWideEnabled bool
+ Apply string
+ PXCVersion string
+ KubeVersion string
+ Platform string
+ PMMVersion string
+ BackupVersion string
+ ProxySQLVersion string
+ HAProxyVersion string
+ LogCollectorVersion string
+ CRUID string
+ ClusterWideEnabled bool
+ UserManagementEnabled bool
}
diff --git a/pkg/controller/pxcbackup/controller.go b/pkg/controller/pxcbackup/controller.go
index fb354bfd70..c4ae96379d 100644
--- a/pkg/controller/pxcbackup/controller.go
+++ b/pkg/controller/pxcbackup/controller.go
@@ -166,7 +166,7 @@ func (r *ReconcilePerconaXtraDBClusterBackup) Reconcile(ctx context.Context, req
}
if !cluster.Spec.Backup.GetAllowParallel() {
- isRunning, err := r.isOtherBackupRunning(ctx, cr)
+ isRunning, err := r.isOtherBackupRunning(ctx, cr, cluster)
if err != nil {
return rr, errors.Wrap(err, "failed to check if other backups running")
}
@@ -546,21 +546,21 @@ func setControllerReference(cr *api.PerconaXtraDBClusterBackup, obj metav1.Objec
return nil
}
-func (r *ReconcilePerconaXtraDBClusterBackup) isOtherBackupRunning(ctx context.Context, cr *api.PerconaXtraDBClusterBackup) (bool, error) {
+func (r *ReconcilePerconaXtraDBClusterBackup) isOtherBackupRunning(ctx context.Context, cr *api.PerconaXtraDBClusterBackup, cluster *api.PerconaXtraDBCluster) (bool, error) {
list := new(batchv1.JobList)
- lbls := map[string]string{
- "type": "xtrabackup",
- "cluster": cr.Spec.PXCCluster,
- }
if err := r.client.List(ctx, list, &client.ListOptions{
- Namespace: cr.Namespace,
- LabelSelector: labels.SelectorFromSet(lbls),
+ Namespace: cluster.Namespace,
+ LabelSelector: labels.SelectorFromSet(naming.LabelsBackup(cluster)),
}); err != nil {
return false, errors.Wrap(err, "list jobs")
}
for _, job := range list.Items {
- if job.Labels["backup-name"] == cr.Name || job.Labels["backup-name"] == "" {
+ backupNameLabelKey := naming.LabelPerconaBackupName
+ if cluster.CompareVersionWith("1.16.0") < 0 {
+ backupNameLabelKey = "backup-name"
+ }
+ if job.Labels[backupNameLabelKey] == cr.Name {
continue
}
if job.Status.Active == 0 && (jobSucceded(&job) || jobFailed(&job)) {
diff --git a/pkg/controller/pxcrestore/controller.go b/pkg/controller/pxcrestore/controller.go
index 07280a42dc..fc92370598 100644
--- a/pkg/controller/pxcrestore/controller.go
+++ b/pkg/controller/pxcrestore/controller.go
@@ -3,7 +3,6 @@ package pxcrestore
import (
"context"
"fmt"
- "strings"
"time"
"github.com/pkg/errors"
@@ -14,7 +13,6 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
- k8sretry "k8s.io/client-go/util/retry"
"sigs.k8s.io/controller-runtime/pkg/builder"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/handler"
@@ -24,8 +22,7 @@ import (
"github.com/percona/percona-xtradb-cluster-operator/clientcmd"
api "github.com/percona/percona-xtradb-cluster-operator/pkg/apis/pxc/v1"
- "github.com/percona/percona-xtradb-cluster-operator/pkg/pxc/app"
- "github.com/percona/percona-xtradb-cluster-operator/pkg/pxc/app/statefulset"
+ "github.com/percona/percona-xtradb-cluster-operator/pkg/k8s"
"github.com/percona/percona-xtradb-cluster-operator/pkg/pxc/backup"
"github.com/percona/percona-xtradb-cluster-operator/pkg/pxc/backup/storage"
"github.com/percona/percona-xtradb-cluster-operator/version"
@@ -201,7 +198,7 @@ func (r *ReconcilePerconaXtraDBClusterRestore) Reconcile(ctx context.Context, re
err = errors.Wrap(err, "set status")
return rr, err
}
- err = r.stopCluster(cluster.DeepCopy())
+ err = k8s.PauseClusterWithWait(ctx, r.client, cluster, true)
if err != nil {
err = errors.Wrapf(err, "stop cluster %s", cluster.Name)
return rr, err
@@ -252,7 +249,7 @@ func (r *ReconcilePerconaXtraDBClusterRestore) Reconcile(ctx context.Context, re
cluster.Spec.HAProxy.Size = 0
}
- if err := r.startCluster(cluster); err != nil {
+ if err := k8s.UnpauseClusterWithWait(ctx, r.client, cluster); err != nil {
return rr, errors.Wrap(err, "restart cluster for pitr")
}
@@ -286,7 +283,7 @@ func (r *ReconcilePerconaXtraDBClusterRestore) Reconcile(ctx context.Context, re
}
}
- err = r.startCluster(clusterOrig)
+ err = k8s.UnpauseClusterWithWait(ctx, r.client, clusterOrig)
if err != nil {
err = errors.Wrap(err, "restart cluster")
return rr, err
@@ -336,100 +333,6 @@ If everything is fine, you can cleanup the job:
$ kubectl delete pxc-restore/%s
`
-func (r *ReconcilePerconaXtraDBClusterRestore) stopCluster(c *api.PerconaXtraDBCluster) error {
- var gracePeriodSec int64
-
- if c.Spec.PXC != nil && c.Spec.PXC.TerminationGracePeriodSeconds != nil {
- gracePeriodSec = int64(c.Spec.PXC.Size) * *c.Spec.PXC.TerminationGracePeriodSeconds
- }
-
- patch := client.MergeFrom(c.DeepCopy())
- c.Spec.Pause = true
- err := r.client.Patch(context.TODO(), c, patch)
- if err != nil {
- return errors.Wrap(err, "shutdown pods")
- }
-
- ls := statefulset.NewNode(c).Labels()
- err = r.waitForPodsShutdown(ls, c.Namespace, gracePeriodSec)
- if err != nil {
- return errors.Wrap(err, "shutdown pods")
- }
-
- pvcs := corev1.PersistentVolumeClaimList{}
- err = r.client.List(
- context.TODO(),
- &pvcs,
- &client.ListOptions{
- Namespace: c.Namespace,
- LabelSelector: labels.SelectorFromSet(ls),
- },
- )
- if err != nil {
- return errors.Wrap(err, "get pvc list")
- }
-
- pxcNode := statefulset.NewNode(c)
- pvcNameTemplate := app.DataVolumeName + "-" + pxcNode.StatefulSet().Name
- for _, pvc := range pvcs.Items {
- // check prefix just in case, to be sure we're not going to delete a wrong pvc
- if pvc.Name == pvcNameTemplate+"-0" || !strings.HasPrefix(pvc.Name, pvcNameTemplate) {
- continue
- }
-
- err = r.client.Delete(context.TODO(), &pvc)
- if err != nil {
- return errors.Wrap(err, "delete pvc")
- }
- }
-
- err = r.waitForPVCShutdown(ls, c.Namespace)
- if err != nil {
- return errors.Wrap(err, "shutdown pvc")
- }
-
- return nil
-}
-
-func (r *ReconcilePerconaXtraDBClusterRestore) startCluster(cr *api.PerconaXtraDBCluster) (err error) {
- // tryin several times just to avoid possible conflicts with the main controller
- err = k8sretry.RetryOnConflict(k8sretry.DefaultRetry, func() error {
- // need to get the object with latest version of meta-data for update
- current := &api.PerconaXtraDBCluster{}
- rerr := r.client.Get(context.TODO(), types.NamespacedName{Name: cr.Name, Namespace: cr.Namespace}, current)
- if rerr != nil {
- return errors.Wrap(err, "get cluster")
- }
- current.Spec = cr.Spec
- return r.client.Update(context.TODO(), current)
- })
- if err != nil {
- return errors.Wrap(err, "update cluster")
- }
-
- // give time for process new state
- time.Sleep(10 * time.Second)
-
- var waitLimit int32 = 2 * 60 * 60 // 2 hours
- if cr.Spec.PXC.LivenessInitialDelaySeconds != nil {
- waitLimit = *cr.Spec.PXC.LivenessInitialDelaySeconds * cr.Spec.PXC.Size
- }
-
- for i := int32(0); i < waitLimit; i++ {
- current := &api.PerconaXtraDBCluster{}
- err = r.client.Get(context.TODO(), types.NamespacedName{Name: cr.Name, Namespace: cr.Namespace}, current)
- if err != nil {
- return errors.Wrap(err, "get cluster")
- }
- if current.Status.ObservedGeneration == current.Generation && current.Status.PXC.Status == api.AppStateReady {
- return nil
- }
- time.Sleep(time.Second * 1)
- }
-
- return errors.Errorf("exceeded wait limit")
-}
-
const waitLimitSec int64 = 300
func (r *ReconcilePerconaXtraDBClusterRestore) waitForPodsShutdown(ls map[string]string, namespace string, gracePeriodSec int64) error {
diff --git a/pkg/k8s/cluster.go b/pkg/k8s/cluster.go
new file mode 100644
index 0000000000..85054b313a
--- /dev/null
+++ b/pkg/k8s/cluster.go
@@ -0,0 +1,239 @@
+package k8s
+
+import (
+ "context"
+ "strings"
+ "time"
+
+ "github.com/pkg/errors"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/labels"
+ "k8s.io/apimachinery/pkg/types"
+ k8sretry "k8s.io/client-go/util/retry"
+ "sigs.k8s.io/controller-runtime/pkg/client"
+
+ api "github.com/percona/percona-xtradb-cluster-operator/pkg/apis/pxc/v1"
+ "github.com/percona/percona-xtradb-cluster-operator/pkg/pxc/app"
+ "github.com/percona/percona-xtradb-cluster-operator/pkg/pxc/app/statefulset"
+)
+
+func PauseCluster(ctx context.Context, cl client.Client, cr *api.PerconaXtraDBCluster) (bool, error) {
+ if !cr.Spec.Pause {
+ cr := cr.DeepCopy() // calling patch will overwrite cr, removing values set by CheckNsetDefaults. We need to copy it into a new variable
+
+ patch := client.MergeFrom(cr.DeepCopy())
+ cr.Spec.Pause = true
+ err := cl.Patch(ctx, cr, patch)
+ if err != nil {
+ return false, errors.Wrap(err, "shutdown pods")
+ }
+ time.Sleep(time.Second)
+ }
+ cr.Spec.Pause = true
+
+ pods := corev1.PodList{}
+
+ ls := statefulset.NewNode(cr).Labels()
+ if err := cl.List(
+ ctx,
+ &pods,
+ &client.ListOptions{
+ Namespace: cr.Namespace,
+ LabelSelector: labels.SelectorFromSet(ls),
+ },
+ ); err != nil {
+ return false, errors.Wrap(err, "get pods list")
+ }
+
+ if len(pods.Items) != 0 {
+ return false, nil
+ }
+
+ return true, nil
+}
+
+func UnpauseCluster(ctx context.Context, cl client.Client, cr *api.PerconaXtraDBCluster) (bool, error) {
+ if cr.Spec.Pause {
+ cr := cr.DeepCopy() // calling patch will overwrite cr, removing values set by CheckNsetDefaults. We need to copy it into a new variable
+
+ patch := client.MergeFrom(cr.DeepCopy())
+ cr.Spec.Pause = false
+ err := cl.Patch(ctx, cr, patch)
+ if err != nil {
+ return false, errors.Wrap(err, "patch")
+ }
+ }
+ cr.Spec.Pause = false
+
+ ls := statefulset.NewNode(cr).Labels()
+ pods := new(corev1.PodList)
+ if err := cl.List(
+ ctx,
+ pods,
+ &client.ListOptions{
+ Namespace: cr.Namespace,
+ LabelSelector: labels.SelectorFromSet(ls),
+ },
+ ); err != nil {
+ return false, errors.Wrap(err, "get pods list")
+ }
+
+ if len(pods.Items) != int(cr.Spec.PXC.Size) {
+ return false, nil
+ }
+
+ return true, nil
+}
+
+// Deprecated: PauseClusterWithWait is a function which blocks reconcile process. Use PauseCluster instead
+func PauseClusterWithWait(ctx context.Context, cl client.Client, cr *api.PerconaXtraDBCluster, deletePVC bool) error {
+ cr = cr.DeepCopy()
+ var gracePeriodSec int64
+
+ if cr.Spec.PXC != nil && cr.Spec.PXC.TerminationGracePeriodSeconds != nil {
+ gracePeriodSec = int64(cr.Spec.PXC.Size) * *cr.Spec.PXC.TerminationGracePeriodSeconds
+ }
+
+ patch := client.MergeFrom(cr.DeepCopy())
+ cr.Spec.Pause = true
+ err := cl.Patch(ctx, cr, patch)
+ if err != nil {
+ return errors.Wrap(err, "shutdown pods")
+ }
+
+ ls := statefulset.NewNode(cr).Labels()
+ err = waitForPodsShutdown(ctx, cl, ls, cr.Namespace, gracePeriodSec)
+ if err != nil {
+ return errors.Wrap(err, "shutdown pods")
+ }
+ if !deletePVC {
+ return nil
+ }
+
+ pvcs := corev1.PersistentVolumeClaimList{}
+ err = cl.List(
+ ctx,
+ &pvcs,
+ &client.ListOptions{
+ Namespace: cr.Namespace,
+ LabelSelector: labels.SelectorFromSet(ls),
+ },
+ )
+ if err != nil {
+ return errors.Wrap(err, "get pvc list")
+ }
+ pxcNode := statefulset.NewNode(cr)
+ pvcNameTemplate := app.DataVolumeName + "-" + pxcNode.StatefulSet().Name
+ for _, pvc := range pvcs.Items {
+ // check prefix just in case, to be sure we're not going to delete a wrong pvc
+ if pvc.Name == pvcNameTemplate+"-0" || !strings.HasPrefix(pvc.Name, pvcNameTemplate) {
+ continue
+ }
+
+ err = cl.Delete(ctx, &pvc)
+ if err != nil {
+ return errors.Wrap(err, "delete pvc")
+ }
+ }
+
+ err = waitForPVCShutdown(ctx, cl, ls, cr.Namespace)
+ if err != nil {
+ return errors.Wrap(err, "shutdown pvc")
+ }
+
+ return nil
+}
+
+func waitForPodsShutdown(ctx context.Context, cl client.Client, ls map[string]string, namespace string, gracePeriodSec int64) error {
+ for i := int64(0); i < waitLimitSec+gracePeriodSec; i++ {
+ pods := corev1.PodList{}
+
+ err := cl.List(
+ ctx,
+ &pods,
+ &client.ListOptions{
+ Namespace: namespace,
+ LabelSelector: labels.SelectorFromSet(ls),
+ },
+ )
+ if err != nil {
+ return errors.Wrap(err, "get pods list")
+ }
+
+ if len(pods.Items) == 0 {
+ return nil
+ }
+
+ time.Sleep(time.Second * 1)
+ }
+
+ return errors.Errorf("exceeded wait limit")
+}
+
+const waitLimitSec int64 = 300
+
+func waitForPVCShutdown(ctx context.Context, cl client.Client, ls map[string]string, namespace string) error {
+ for i := int64(0); i < waitLimitSec; i++ {
+ pvcs := corev1.PersistentVolumeClaimList{}
+
+ err := cl.List(
+ ctx,
+ &pvcs,
+ &client.ListOptions{
+ Namespace: namespace,
+ LabelSelector: labels.SelectorFromSet(ls),
+ },
+ )
+ if err != nil {
+ return errors.Wrap(err, "get pvc list")
+ }
+
+ if len(pvcs.Items) == 1 {
+ return nil
+ }
+
+ time.Sleep(time.Second * 1)
+ }
+
+ return errors.Errorf("exceeded wait limit")
+}
+
+// Deprecated: UnpauseClusterWithWait is a function which blocks reconcile process. Use UnpauseCluster instead
+func UnpauseClusterWithWait(ctx context.Context, cl client.Client, cr *api.PerconaXtraDBCluster) (err error) {
+ // tryin several times just to avoid possible conflicts with the main controller
+ err = k8sretry.RetryOnConflict(k8sretry.DefaultRetry, func() error {
+ // need to get the object with latest version of meta-data for update
+ current := new(api.PerconaXtraDBCluster)
+ rerr := cl.Get(ctx, types.NamespacedName{Name: cr.Name, Namespace: cr.Namespace}, current)
+ if rerr != nil {
+ return errors.Wrap(err, "get cluster")
+ }
+ current.Spec = cr.Spec
+ return cl.Update(ctx, current)
+ })
+ if err != nil {
+ return errors.Wrap(err, "update cluster")
+ }
+
+ // give time for process new state
+ time.Sleep(10 * time.Second)
+
+ var waitLimit int32 = 2 * 60 * 60 // 2 hours
+ if cr.Spec.PXC.LivenessInitialDelaySeconds != nil {
+ waitLimit = *cr.Spec.PXC.LivenessInitialDelaySeconds * cr.Spec.PXC.Size
+ }
+
+ for i := int32(0); i < waitLimit; i++ {
+ current := new(api.PerconaXtraDBCluster)
+ err = cl.Get(ctx, types.NamespacedName{Name: cr.Name, Namespace: cr.Namespace}, current)
+ if err != nil {
+ return errors.Wrap(err, "get cluster")
+ }
+ if current.Status.ObservedGeneration == current.Generation && current.Status.PXC.Status == api.AppStateReady {
+ return nil
+ }
+ time.Sleep(time.Second * 1)
+ }
+
+ return errors.Errorf("exceeded wait limit")
+}
diff --git a/pkg/naming/backup.go b/pkg/naming/backup.go
index ec7957d5d6..c7e876d03e 100644
--- a/pkg/naming/backup.go
+++ b/pkg/naming/backup.go
@@ -52,23 +52,22 @@ func trimJobName(name string) string {
}
func ScheduledBackupName(crName, storageName, schedule string) string {
- result := "cron-"
+ result := "cron"
if len(crName) > 16 {
- result += crName[:16]
+ result += "-" + crName[:16]
} else {
- result += crName
+ result += "-" + crName
}
if len(storageName) > 16 {
- result += storageName[:16]
+ result += "-" + storageName[:16]
} else {
- result += storageName
+ result += "-" + storageName
}
- result += "-" + storageName + "-"
tnow := time.Now()
- result += fmt.Sprintf("%d%d%d%d%d%d", tnow.Year(), tnow.Month(), tnow.Day(), tnow.Hour(), tnow.Minute(), tnow.Second())
+ result += "-" + fmt.Sprintf("%d%d%d%d%d%d", tnow.Year(), tnow.Month(), tnow.Day(), tnow.Hour(), tnow.Minute(), tnow.Second())
result += "-" + strconv.FormatUint(uint64(crc32.ChecksumIEEE([]byte(schedule))), 32)[:5]
return result
}
diff --git a/pkg/naming/condition.go b/pkg/naming/condition.go
new file mode 100644
index 0000000000..0b8a79524a
--- /dev/null
+++ b/pkg/naming/condition.go
@@ -0,0 +1,21 @@
+package naming
+
+import (
+ api "github.com/percona/percona-xtradb-cluster-operator/pkg/apis/pxc/v1"
+)
+
+const ConditionTLS api.AppState = "tls"
+
+type ConditionTLSState string
+
+const (
+ ConditionTLSStateEnabled ConditionTLSState = "enabled"
+ ConditionTLSStateDisabled ConditionTLSState = "disabled"
+)
+
+func GetConditionTLSState(cr *api.PerconaXtraDBCluster) ConditionTLSState {
+ if *cr.Spec.TLS.Enabled {
+ return ConditionTLSStateEnabled
+ }
+ return ConditionTLSStateDisabled
+}
diff --git a/pkg/naming/labels.go b/pkg/naming/labels.go
index 56d0d08b5e..8fe38bd668 100644
--- a/pkg/naming/labels.go
+++ b/pkg/naming/labels.go
@@ -126,25 +126,34 @@ func LabelsScheduledBackup(cluster *api.PerconaXtraDBCluster, ancestor string) m
return labels
}
+func LabelsBackup(cluster *api.PerconaXtraDBCluster) map[string]string {
+ if cluster.CompareVersionWith("1.16.0") < 0 {
+ return map[string]string{
+ "type": "xtrabackup",
+ "cluster": cluster.Name,
+ }
+ }
+ return map[string]string{
+ LabelPerconaBackupType: "xtrabackup",
+ LabelPerconaClusterName: cluster.Name,
+ }
+}
+
func LabelsBackupJob(cr *api.PerconaXtraDBClusterBackup, cluster *api.PerconaXtraDBCluster, jobName string) map[string]string {
labels := make(map[string]string)
util.MergeMaps(labels, cluster.Spec.Backup.Storages[cr.Spec.StorageName].Labels)
if cluster.CompareVersionWith("1.16.0") < 0 {
- util.MergeMaps(labels, map[string]string{
- "type": "xtrabackup",
- "cluster": cr.Spec.PXCCluster,
+ util.MergeMaps(labels, LabelsBackup(cluster), map[string]string{
"backup-name": cr.Name,
"job-name": jobName,
})
- } else {
- util.MergeMaps(labels, LabelsCluster(cluster), map[string]string{
- LabelPerconaBackupType: "xtrabackup",
- LabelPerconaClusterName: cr.Spec.PXCCluster,
- LabelPerconaBackupName: cr.Name,
- LabelPerconaBackupJobName: jobName,
- })
+ return labels
}
+ util.MergeMaps(labels, LabelsCluster(cluster), LabelsBackup(cluster), map[string]string{
+ LabelPerconaBackupName: cr.Name,
+ LabelPerconaBackupJobName: jobName,
+ })
return labels
}
diff --git a/pkg/pxc/app/pvc.go b/pkg/pxc/app/pvc.go
index 9f706ea10a..32e9566538 100644
--- a/pkg/pxc/app/pvc.go
+++ b/pkg/pxc/app/pvc.go
@@ -1,9 +1,10 @@
package app
import (
- api "github.com/percona/percona-xtradb-cluster-operator/pkg/apis/pxc/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+ api "github.com/percona/percona-xtradb-cluster-operator/pkg/apis/pxc/v1"
)
// PVCs returns the list of PersistentVolumeClaims for the pod
diff --git a/pkg/pxc/app/statefulset/node.go b/pkg/pxc/app/statefulset/node.go
index 938bb56989..8995744c05 100644
--- a/pkg/pxc/app/statefulset/node.go
+++ b/pkg/pxc/app/statefulset/node.go
@@ -255,7 +255,7 @@ func (c *Node) AppContainer(spec *api.PodSpec, secrets string, cr *api.PerconaXt
if cr.CompareVersionWith("1.16.0") >= 0 {
appc.Env = append(appc.Env, []corev1.EnvVar{
{
- Name: "NOTIFY_SOCKET",
+ Name: "MYSQL_NOTIFY_SOCKET",
Value: "/var/lib/mysql/notify.sock",
},
{
diff --git a/pkg/pxc/users/users.go b/pkg/pxc/users/users.go
index 4bf2218837..ec1555ae2c 100644
--- a/pkg/pxc/users/users.go
+++ b/pkg/pxc/users/users.go
@@ -335,6 +335,8 @@ func (p *Manager) GetUser(ctx context.Context, user string) (*User, error) {
if err != nil {
return nil, err
}
+ defer rows.Close()
+
for rows.Next() {
var host string
var db sql.NullString
@@ -349,11 +351,16 @@ func (p *Manager) GetUser(ctx context.Context, user string) (*User, error) {
u.Hosts.Insert(host)
}
+ if len(u.Hosts) == 0 {
+ return nil, nil
+ }
+
for host := range u.Hosts {
rows, err := p.db.QueryContext(ctx, "SHOW GRANTS FOR ?@?", user, host)
if err != nil {
return nil, err
}
+ // Plus 1 is for the default grant every user has, which is USAGE.
grants := make([]string, 0, len(u.DBs)+1)
for rows.Next() {
var grant string
diff --git a/pkg/util/map.go b/pkg/util/map.go
index b87a0b93af..de8eea6602 100644
--- a/pkg/util/map.go
+++ b/pkg/util/map.go
@@ -11,7 +11,11 @@ func MergeTemplateAnnotations(sfs *appsv1.StatefulSet, annotations map[string]st
MergeMaps(sfs.Spec.Template.Annotations, annotations)
}
-func MergeMaps(dest map[string]string, mapList ...map[string]string) {
+// MergeMaps merges multiple maps into the provided `dest` map.
+// If `dest` is nil, a new map is created.
+// When keys overlap across maps, the value from the last map takes precedence.
+// The function returns the resulting `dest` map.
+func MergeMaps(dest map[string]string, mapList ...map[string]string) map[string]string {
if dest == nil {
dest = make(map[string]string)
}
@@ -20,4 +24,5 @@ func MergeMaps(dest map[string]string, mapList ...map[string]string) {
dest[k] = v
}
}
+ return dest
}
diff --git a/version/client/models/googlerpc_status.go b/version/client/models/googlerpc_status.go
index dc0414ab10..2a3a4a9854 100644
--- a/version/client/models/googlerpc_status.go
+++ b/version/client/models/googlerpc_status.go
@@ -88,6 +88,11 @@ func (m *GooglerpcStatus) contextValidateDetails(ctx context.Context, formats st
for i := 0; i < len(m.Details); i++ {
if m.Details[i] != nil {
+
+ if swag.IsZero(m.Details[i]) { // not required
+ return nil
+ }
+
if err := m.Details[i].ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("details" + "." + strconv.Itoa(i))
diff --git a/version/client/models/protobuf_any.go b/version/client/models/protobuf_any.go
index 4454016000..f25b51ed38 100644
--- a/version/client/models/protobuf_any.go
+++ b/version/client/models/protobuf_any.go
@@ -7,125 +7,95 @@ package models
import (
"context"
+ "encoding/json"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
)
-// ProtobufAny `Any` contains an arbitrary serialized protocol buffer message along with a
-// URL that describes the type of the serialized message.
-//
-// Protobuf library provides support to pack/unpack Any values in the form
-// of utility functions or additional generated methods of the Any type.
-//
-// Example 1: Pack and unpack a message in C++.
-//
-// Foo foo = ...;
-// Any any;
-// any.PackFrom(foo);
-// ...
-// if (any.UnpackTo(&foo)) {
-// ...
-// }
-//
-// Example 2: Pack and unpack a message in Java.
-//
-// Foo foo = ...;
-// Any any = Any.pack(foo);
-// ...
-// if (any.is(Foo.class)) {
-// foo = any.unpack(Foo.class);
-// }
-//
-// Example 3: Pack and unpack a message in Python.
-//
-// foo = Foo(...)
-// any = Any()
-// any.Pack(foo)
-// ...
-// if any.Is(Foo.DESCRIPTOR):
-// any.Unpack(foo)
-// ...
-//
-// Example 4: Pack and unpack a message in Go
-//
-// foo := &pb.Foo{...}
-// any, err := ptypes.MarshalAny(foo)
-// ...
-// foo := &pb.Foo{}
-// if err := ptypes.UnmarshalAny(any, foo); err != nil {
-// ...
-// }
-//
-// The pack methods provided by protobuf library will by default use
-// 'type.googleapis.com/full.type.name' as the type URL and the unpack
-// methods only use the fully qualified type name after the last '/'
-// in the type URL, for example "foo.bar.com/x/y.z" will yield type
-// name "y.z".
-//
-// JSON
-// ====
-// The JSON representation of an `Any` value uses the regular
-// representation of the deserialized, embedded message, with an
-// additional field `@type` which contains the type URL. Example:
-//
-// package google.profile;
-// message Person {
-// string first_name = 1;
-// string last_name = 2;
-// }
-//
-// {
-// "@type": "type.googleapis.com/google.profile.Person",
-// "firstName": ,
-// "lastName":
-// }
-//
-// If the embedded message type is well-known and has a custom JSON
-// representation, that representation will be embedded adding a field
-// `value` which holds the custom JSON in addition to the `@type`
-// field. Example (for message [google.protobuf.Duration][]):
-//
-// {
-// "@type": "type.googleapis.com/google.protobuf.Duration",
-// "value": "1.212s"
-// }
+// ProtobufAny protobuf any
//
// swagger:model protobufAny
type ProtobufAny struct {
- // A URL/resource name that uniquely identifies the type of the serialized
- // protocol buffer message. This string must contain at least
- // one "/" character. The last segment of the URL's path must represent
- // the fully qualified name of the type (as in
- // `path/google.protobuf.Duration`). The name should be in a canonical form
- // (e.g., leading "." is not accepted).
- //
- // In practice, teams usually precompile into the binary all types that they
- // expect it to use in the context of Any. However, for URLs which use the
- // scheme `http`, `https`, or no scheme, one can optionally set up a type
- // server that maps type URLs to message definitions as follows:
- //
- // * If no scheme is provided, `https` is assumed.
- // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
- // value in binary format, or produce an error.
- // * Applications are allowed to cache lookup results based on the
- // URL, or have them precompiled into a binary to avoid any
- // lookup. Therefore, binary compatibility needs to be preserved
- // on changes to types. (Use versioned type names to manage
- // breaking changes.)
- //
- // Note: this functionality is not currently available in the official
- // protobuf release, and it is not used for type URLs beginning with
- // type.googleapis.com.
- //
- // Schemes other than `http`, `https` (or the empty scheme) might be
- // used with implementation specific semantics.
- TypeURL string `json:"typeUrl,omitempty"`
-
- // Must be a valid serialized protocol buffer of the above specified type.
- // Format: byte
- Value strfmt.Base64 `json:"value,omitempty"`
+ // at type
+ AtType string `json:"@type,omitempty"`
+
+ // protobuf any
+ ProtobufAny map[string]interface{} `json:"-"`
+}
+
+// UnmarshalJSON unmarshals this object with additional properties from JSON
+func (m *ProtobufAny) UnmarshalJSON(data []byte) error {
+ // stage 1, bind the properties
+ var stage1 struct {
+
+ // at type
+ AtType string `json:"@type,omitempty"`
+ }
+ if err := json.Unmarshal(data, &stage1); err != nil {
+ return err
+ }
+ var rcv ProtobufAny
+
+ rcv.AtType = stage1.AtType
+ *m = rcv
+
+ // stage 2, remove properties and add to map
+ stage2 := make(map[string]json.RawMessage)
+ if err := json.Unmarshal(data, &stage2); err != nil {
+ return err
+ }
+
+ delete(stage2, "@type")
+ // stage 3, add additional properties values
+ if len(stage2) > 0 {
+ result := make(map[string]interface{})
+ for k, v := range stage2 {
+ var toadd interface{}
+ if err := json.Unmarshal(v, &toadd); err != nil {
+ return err
+ }
+ result[k] = toadd
+ }
+ m.ProtobufAny = result
+ }
+
+ return nil
+}
+
+// MarshalJSON marshals this object with additional properties into a JSON object
+func (m ProtobufAny) MarshalJSON() ([]byte, error) {
+ var stage1 struct {
+
+ // at type
+ AtType string `json:"@type,omitempty"`
+ }
+
+ stage1.AtType = m.AtType
+
+ // make JSON object for known properties
+ props, err := json.Marshal(stage1)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(m.ProtobufAny) == 0 { // no additional properties
+ return props, nil
+ }
+
+ // make JSON object for the additional properties
+ additional, err := json.Marshal(m.ProtobufAny)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(props) < 3 { // "{}": only additional properties
+ return additional, nil
+ }
+
+ // concatenate the 2 objects
+ return swag.ConcatJSON(props, additional), nil
}
// Validate validates this protobuf any
diff --git a/version/client/models/version_get_release_notes_response.go b/version/client/models/version_get_release_notes_response.go
new file mode 100644
index 0000000000..74229dacd0
--- /dev/null
+++ b/version/client/models/version_get_release_notes_response.go
@@ -0,0 +1,56 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package models
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+
+ "github.com/go-openapi/strfmt"
+ "github.com/go-openapi/swag"
+)
+
+// VersionGetReleaseNotesResponse version get release notes response
+//
+// swagger:model versionGetReleaseNotesResponse
+type VersionGetReleaseNotesResponse struct {
+
+ // The product name.
+ Product string `json:"product,omitempty"`
+
+ // release_notes is the release note for this version.
+ ReleaseNote string `json:"releaseNote,omitempty"`
+
+ // version
+ Version string `json:"version,omitempty"`
+}
+
+// Validate validates this version get release notes response
+func (m *VersionGetReleaseNotesResponse) Validate(formats strfmt.Registry) error {
+ return nil
+}
+
+// ContextValidate validates this version get release notes response based on context it is used
+func (m *VersionGetReleaseNotesResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
+ return nil
+}
+
+// MarshalBinary interface implementation
+func (m *VersionGetReleaseNotesResponse) MarshalBinary() ([]byte, error) {
+ if m == nil {
+ return nil, nil
+ }
+ return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *VersionGetReleaseNotesResponse) UnmarshalBinary(b []byte) error {
+ var res VersionGetReleaseNotesResponse
+ if err := swag.ReadJSON(b, &res); err != nil {
+ return err
+ }
+ *m = res
+ return nil
+}
diff --git a/version/client/models/version_metadata_response.go b/version/client/models/version_metadata_response.go
new file mode 100644
index 0000000000..c5978122fc
--- /dev/null
+++ b/version/client/models/version_metadata_response.go
@@ -0,0 +1,121 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package models
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+ "strconv"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/strfmt"
+ "github.com/go-openapi/swag"
+)
+
+// VersionMetadataResponse version metadata response
+//
+// swagger:model versionMetadataResponse
+type VersionMetadataResponse struct {
+
+ // versions
+ Versions []*VersionMetadataVersion `json:"versions"`
+}
+
+// Validate validates this version metadata response
+func (m *VersionMetadataResponse) Validate(formats strfmt.Registry) error {
+ var res []error
+
+ if err := m.validateVersions(formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
+
+func (m *VersionMetadataResponse) validateVersions(formats strfmt.Registry) error {
+ if swag.IsZero(m.Versions) { // not required
+ return nil
+ }
+
+ for i := 0; i < len(m.Versions); i++ {
+ if swag.IsZero(m.Versions[i]) { // not required
+ continue
+ }
+
+ if m.Versions[i] != nil {
+ if err := m.Versions[i].Validate(formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("versions" + "." + strconv.Itoa(i))
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("versions" + "." + strconv.Itoa(i))
+ }
+ return err
+ }
+ }
+
+ }
+
+ return nil
+}
+
+// ContextValidate validate this version metadata response based on the context it is used
+func (m *VersionMetadataResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
+ var res []error
+
+ if err := m.contextValidateVersions(ctx, formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
+
+func (m *VersionMetadataResponse) contextValidateVersions(ctx context.Context, formats strfmt.Registry) error {
+
+ for i := 0; i < len(m.Versions); i++ {
+
+ if m.Versions[i] != nil {
+
+ if swag.IsZero(m.Versions[i]) { // not required
+ return nil
+ }
+
+ if err := m.Versions[i].ContextValidate(ctx, formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("versions" + "." + strconv.Itoa(i))
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("versions" + "." + strconv.Itoa(i))
+ }
+ return err
+ }
+ }
+
+ }
+
+ return nil
+}
+
+// MarshalBinary interface implementation
+func (m *VersionMetadataResponse) MarshalBinary() ([]byte, error) {
+ if m == nil {
+ return nil, nil
+ }
+ return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *VersionMetadataResponse) UnmarshalBinary(b []byte) error {
+ var res VersionMetadataResponse
+ if err := swag.ReadJSON(b, &res); err != nil {
+ return err
+ }
+ *m = res
+ return nil
+}
diff --git a/version/client/models/version_metadata_v2_response.go b/version/client/models/version_metadata_v2_response.go
new file mode 100644
index 0000000000..b32e3bfc31
--- /dev/null
+++ b/version/client/models/version_metadata_v2_response.go
@@ -0,0 +1,121 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package models
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+ "strconv"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/strfmt"
+ "github.com/go-openapi/swag"
+)
+
+// VersionMetadataV2Response version metadata v2 response
+//
+// swagger:model versionMetadataV2Response
+type VersionMetadataV2Response struct {
+
+ // versions
+ Versions []*VersionMetadataV2Version `json:"versions"`
+}
+
+// Validate validates this version metadata v2 response
+func (m *VersionMetadataV2Response) Validate(formats strfmt.Registry) error {
+ var res []error
+
+ if err := m.validateVersions(formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
+
+func (m *VersionMetadataV2Response) validateVersions(formats strfmt.Registry) error {
+ if swag.IsZero(m.Versions) { // not required
+ return nil
+ }
+
+ for i := 0; i < len(m.Versions); i++ {
+ if swag.IsZero(m.Versions[i]) { // not required
+ continue
+ }
+
+ if m.Versions[i] != nil {
+ if err := m.Versions[i].Validate(formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("versions" + "." + strconv.Itoa(i))
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("versions" + "." + strconv.Itoa(i))
+ }
+ return err
+ }
+ }
+
+ }
+
+ return nil
+}
+
+// ContextValidate validate this version metadata v2 response based on the context it is used
+func (m *VersionMetadataV2Response) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
+ var res []error
+
+ if err := m.contextValidateVersions(ctx, formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
+
+func (m *VersionMetadataV2Response) contextValidateVersions(ctx context.Context, formats strfmt.Registry) error {
+
+ for i := 0; i < len(m.Versions); i++ {
+
+ if m.Versions[i] != nil {
+
+ if swag.IsZero(m.Versions[i]) { // not required
+ return nil
+ }
+
+ if err := m.Versions[i].ContextValidate(ctx, formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("versions" + "." + strconv.Itoa(i))
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("versions" + "." + strconv.Itoa(i))
+ }
+ return err
+ }
+ }
+
+ }
+
+ return nil
+}
+
+// MarshalBinary interface implementation
+func (m *VersionMetadataV2Response) MarshalBinary() ([]byte, error) {
+ if m == nil {
+ return nil, nil
+ }
+ return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *VersionMetadataV2Response) UnmarshalBinary(b []byte) error {
+ var res VersionMetadataV2Response
+ if err := swag.ReadJSON(b, &res); err != nil {
+ return err
+ }
+ *m = res
+ return nil
+}
diff --git a/version/client/models/version_metadata_v2_version.go b/version/client/models/version_metadata_v2_version.go
new file mode 100644
index 0000000000..c5437cab09
--- /dev/null
+++ b/version/client/models/version_metadata_v2_version.go
@@ -0,0 +1,118 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package models
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/strfmt"
+ "github.com/go-openapi/swag"
+)
+
+// VersionMetadataV2Version MetadataV2Version represents metadata for a given version with additional fields.
+//
+// swagger:model versionMetadataV2Version
+type VersionMetadataV2Version struct {
+
+ // ImageInfo holds information about the docker image for this version.
+ ImageInfo *VersionVersionV2 `json:"imageInfo,omitempty"`
+
+ // Recommended is the recommended version for a given component.
+ Recommended map[string]string `json:"recommended,omitempty"`
+
+ // Supported holds semver constraint per component, such as ">= 1.0, < 1.4".
+ Supported map[string]string `json:"supported,omitempty"`
+
+ // version
+ Version string `json:"version,omitempty"`
+}
+
+// Validate validates this version metadata v2 version
+func (m *VersionMetadataV2Version) Validate(formats strfmt.Registry) error {
+ var res []error
+
+ if err := m.validateImageInfo(formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
+
+func (m *VersionMetadataV2Version) validateImageInfo(formats strfmt.Registry) error {
+ if swag.IsZero(m.ImageInfo) { // not required
+ return nil
+ }
+
+ if m.ImageInfo != nil {
+ if err := m.ImageInfo.Validate(formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("imageInfo")
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("imageInfo")
+ }
+ return err
+ }
+ }
+
+ return nil
+}
+
+// ContextValidate validate this version metadata v2 version based on the context it is used
+func (m *VersionMetadataV2Version) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
+ var res []error
+
+ if err := m.contextValidateImageInfo(ctx, formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
+
+func (m *VersionMetadataV2Version) contextValidateImageInfo(ctx context.Context, formats strfmt.Registry) error {
+
+ if m.ImageInfo != nil {
+
+ if swag.IsZero(m.ImageInfo) { // not required
+ return nil
+ }
+
+ if err := m.ImageInfo.ContextValidate(ctx, formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("imageInfo")
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("imageInfo")
+ }
+ return err
+ }
+ }
+
+ return nil
+}
+
+// MarshalBinary interface implementation
+func (m *VersionMetadataV2Version) MarshalBinary() ([]byte, error) {
+ if m == nil {
+ return nil, nil
+ }
+ return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *VersionMetadataV2Version) UnmarshalBinary(b []byte) error {
+ var res VersionMetadataV2Version
+ if err := swag.ReadJSON(b, &res); err != nil {
+ return err
+ }
+ *m = res
+ return nil
+}
diff --git a/version/client/models/version_metadata_version.go b/version/client/models/version_metadata_version.go
new file mode 100644
index 0000000000..a635c8473f
--- /dev/null
+++ b/version/client/models/version_metadata_version.go
@@ -0,0 +1,56 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package models
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+
+ "github.com/go-openapi/strfmt"
+ "github.com/go-openapi/swag"
+)
+
+// VersionMetadataVersion MetadataVersion represents metadata for a given version.
+//
+// swagger:model versionMetadataVersion
+type VersionMetadataVersion struct {
+
+ // Recommended is the recommended version for a given component.
+ Recommended map[string]string `json:"recommended,omitempty"`
+
+ // Supported holds semver constraint per component, such as ">= 1.0, < 1.4".
+ Supported map[string]string `json:"supported,omitempty"`
+
+ // version
+ Version string `json:"version,omitempty"`
+}
+
+// Validate validates this version metadata version
+func (m *VersionMetadataVersion) Validate(formats strfmt.Registry) error {
+ return nil
+}
+
+// ContextValidate validates this version metadata version based on context it is used
+func (m *VersionMetadataVersion) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
+ return nil
+}
+
+// MarshalBinary interface implementation
+func (m *VersionMetadataVersion) MarshalBinary() ([]byte, error) {
+ if m == nil {
+ return nil, nil
+ }
+ return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *VersionMetadataVersion) UnmarshalBinary(b []byte) error {
+ var res VersionMetadataVersion
+ if err := swag.ReadJSON(b, &res); err != nil {
+ return err
+ }
+ *m = res
+ return nil
+}
diff --git a/version/client/models/version_operator_response.go b/version/client/models/version_operator_response.go
index 6ff2150269..22a92f7051 100644
--- a/version/client/models/version_operator_response.go
+++ b/version/client/models/version_operator_response.go
@@ -82,6 +82,11 @@ func (m *VersionOperatorResponse) contextValidateVersions(ctx context.Context, f
for i := 0; i < len(m.Versions); i++ {
if m.Versions[i] != nil {
+
+ if swag.IsZero(m.Versions[i]) { // not required
+ return nil
+ }
+
if err := m.Versions[i].ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("versions" + "." + strconv.Itoa(i))
diff --git a/version/client/models/version_operator_version.go b/version/client/models/version_operator_version.go
index 7eedb8de94..b7fb267af8 100644
--- a/version/client/models/version_operator_version.go
+++ b/version/client/models/version_operator_version.go
@@ -78,6 +78,11 @@ func (m *VersionOperatorVersion) ContextValidate(ctx context.Context, formats st
func (m *VersionOperatorVersion) contextValidateMatrix(ctx context.Context, formats strfmt.Registry) error {
if m.Matrix != nil {
+
+ if swag.IsZero(m.Matrix) { // not required
+ return nil
+ }
+
if err := m.Matrix.ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("matrix")
diff --git a/version/client/models/version_product_response.go b/version/client/models/version_product_response.go
index 77ff32d0f4..ec7fc278cc 100644
--- a/version/client/models/version_product_response.go
+++ b/version/client/models/version_product_response.go
@@ -82,6 +82,11 @@ func (m *VersionProductResponse) contextValidateVersions(ctx context.Context, fo
for i := 0; i < len(m.Versions); i++ {
if m.Versions[i] != nil {
+
+ if swag.IsZero(m.Versions[i]) { // not required
+ return nil
+ }
+
if err := m.Versions[i].ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("versions" + "." + strconv.Itoa(i))
diff --git a/version/client/models/version_version.go b/version/client/models/version_version.go
index f102929268..7d262b252e 100644
--- a/version/client/models/version_version.go
+++ b/version/client/models/version_version.go
@@ -24,6 +24,9 @@ type VersionVersion struct {
// image hash
ImageHash string `json:"imageHash,omitempty"`
+ // image hash arm64
+ ImageHashArm64 string `json:"imageHashArm64,omitempty"`
+
// image path
ImagePath string `json:"imagePath,omitempty"`
@@ -81,6 +84,11 @@ func (m *VersionVersion) ContextValidate(ctx context.Context, formats strfmt.Reg
func (m *VersionVersion) contextValidateStatus(ctx context.Context, formats strfmt.Registry) error {
if m.Status != nil {
+
+ if swag.IsZero(m.Status) { // not required
+ return nil
+ }
+
if err := m.Status.ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("status")
diff --git a/version/client/models/version_version_matrix.go b/version/client/models/version_version_matrix.go
index 7f59def8ff..fba724e6e8 100644
--- a/version/client/models/version_version_matrix.go
+++ b/version/client/models/version_version_matrix.go
@@ -73,6 +73,9 @@ type VersionVersionMatrix struct {
// pmm
Pmm map[string]VersionVersion `json:"pmm,omitempty"`
+ // postgis
+ Postgis map[string]VersionVersion `json:"postgis,omitempty"`
+
// postgresql
Postgresql map[string]VersionVersion `json:"postgresql,omitempty"`
@@ -93,6 +96,9 @@ type VersionVersionMatrix struct {
// router
Router map[string]VersionVersion `json:"router,omitempty"`
+
+ // toolkit
+ Toolkit map[string]VersionVersion `json:"toolkit,omitempty"`
}
// Validate validates this version version matrix
@@ -171,6 +177,10 @@ func (m *VersionVersionMatrix) Validate(formats strfmt.Registry) error {
res = append(res, err)
}
+ if err := m.validatePostgis(formats); err != nil {
+ res = append(res, err)
+ }
+
if err := m.validatePostgresql(formats); err != nil {
res = append(res, err)
}
@@ -199,6 +209,10 @@ func (m *VersionVersionMatrix) Validate(formats strfmt.Registry) error {
res = append(res, err)
}
+ if err := m.validateToolkit(formats); err != nil {
+ res = append(res, err)
+ }
+
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
@@ -673,6 +687,32 @@ func (m *VersionVersionMatrix) validatePmm(formats strfmt.Registry) error {
return nil
}
+func (m *VersionVersionMatrix) validatePostgis(formats strfmt.Registry) error {
+ if swag.IsZero(m.Postgis) { // not required
+ return nil
+ }
+
+ for k := range m.Postgis {
+
+ if err := validate.Required("postgis"+"."+k, "body", m.Postgis[k]); err != nil {
+ return err
+ }
+ if val, ok := m.Postgis[k]; ok {
+ if err := val.Validate(formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("postgis" + "." + k)
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("postgis" + "." + k)
+ }
+ return err
+ }
+ }
+
+ }
+
+ return nil
+}
+
func (m *VersionVersionMatrix) validatePostgresql(formats strfmt.Registry) error {
if swag.IsZero(m.Postgresql) { // not required
return nil
@@ -855,6 +895,32 @@ func (m *VersionVersionMatrix) validateRouter(formats strfmt.Registry) error {
return nil
}
+func (m *VersionVersionMatrix) validateToolkit(formats strfmt.Registry) error {
+ if swag.IsZero(m.Toolkit) { // not required
+ return nil
+ }
+
+ for k := range m.Toolkit {
+
+ if err := validate.Required("toolkit"+"."+k, "body", m.Toolkit[k]); err != nil {
+ return err
+ }
+ if val, ok := m.Toolkit[k]; ok {
+ if err := val.Validate(formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("toolkit" + "." + k)
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("toolkit" + "." + k)
+ }
+ return err
+ }
+ }
+
+ }
+
+ return nil
+}
+
// ContextValidate validate this version version matrix based on the context it is used
func (m *VersionVersionMatrix) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
var res []error
@@ -931,6 +997,10 @@ func (m *VersionVersionMatrix) ContextValidate(ctx context.Context, formats strf
res = append(res, err)
}
+ if err := m.contextValidatePostgis(ctx, formats); err != nil {
+ res = append(res, err)
+ }
+
if err := m.contextValidatePostgresql(ctx, formats); err != nil {
res = append(res, err)
}
@@ -959,6 +1029,10 @@ func (m *VersionVersionMatrix) ContextValidate(ctx context.Context, formats strf
res = append(res, err)
}
+ if err := m.contextValidateToolkit(ctx, formats); err != nil {
+ res = append(res, err)
+ }
+
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
@@ -1235,6 +1309,21 @@ func (m *VersionVersionMatrix) contextValidatePmm(ctx context.Context, formats s
return nil
}
+func (m *VersionVersionMatrix) contextValidatePostgis(ctx context.Context, formats strfmt.Registry) error {
+
+ for k := range m.Postgis {
+
+ if val, ok := m.Postgis[k]; ok {
+ if err := val.ContextValidate(ctx, formats); err != nil {
+ return err
+ }
+ }
+
+ }
+
+ return nil
+}
+
func (m *VersionVersionMatrix) contextValidatePostgresql(ctx context.Context, formats strfmt.Registry) error {
for k := range m.Postgresql {
@@ -1340,6 +1429,21 @@ func (m *VersionVersionMatrix) contextValidateRouter(ctx context.Context, format
return nil
}
+func (m *VersionVersionMatrix) contextValidateToolkit(ctx context.Context, formats strfmt.Registry) error {
+
+ for k := range m.Toolkit {
+
+ if val, ok := m.Toolkit[k]; ok {
+ if err := val.ContextValidate(ctx, formats); err != nil {
+ return err
+ }
+ }
+
+ }
+
+ return nil
+}
+
// MarshalBinary interface implementation
func (m *VersionVersionMatrix) MarshalBinary() ([]byte, error) {
if m == nil {
diff --git a/version/client/models/version_version_response.go b/version/client/models/version_version_response.go
index 34abed8e6a..906c342be2 100644
--- a/version/client/models/version_version_response.go
+++ b/version/client/models/version_version_response.go
@@ -82,6 +82,11 @@ func (m *VersionVersionResponse) contextValidateVersions(ctx context.Context, fo
for i := 0; i < len(m.Versions); i++ {
if m.Versions[i] != nil {
+
+ if swag.IsZero(m.Versions[i]) { // not required
+ return nil
+ }
+
if err := m.Versions[i].ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("versions" + "." + strconv.Itoa(i))
diff --git a/version/client/models/version_version_v2.go b/version/client/models/version_version_v2.go
new file mode 100644
index 0000000000..68a5bef16b
--- /dev/null
+++ b/version/client/models/version_version_v2.go
@@ -0,0 +1,142 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package models
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/strfmt"
+ "github.com/go-openapi/swag"
+ "github.com/go-openapi/validate"
+)
+
+// VersionVersionV2 Version represents product version information.
+//
+// swagger:model versionVersionV2
+type VersionVersionV2 struct {
+
+ // critical
+ Critical bool `json:"critical,omitempty"`
+
+ // image hash
+ ImageHash string `json:"imageHash,omitempty"`
+
+ // image hash arm64
+ ImageHashArm64 string `json:"imageHashArm64,omitempty"`
+
+ // image path
+ ImagePath string `json:"imagePath,omitempty"`
+
+ // release_timestamp is the release time of this image.
+ // Format: date-time
+ ImageReleaseTimestamp strfmt.DateTime `json:"imageReleaseTimestamp,omitempty"`
+
+ // status
+ Status *VersionStatus `json:"status,omitempty"`
+}
+
+// Validate validates this version version v2
+func (m *VersionVersionV2) Validate(formats strfmt.Registry) error {
+ var res []error
+
+ if err := m.validateImageReleaseTimestamp(formats); err != nil {
+ res = append(res, err)
+ }
+
+ if err := m.validateStatus(formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
+
+func (m *VersionVersionV2) validateImageReleaseTimestamp(formats strfmt.Registry) error {
+ if swag.IsZero(m.ImageReleaseTimestamp) { // not required
+ return nil
+ }
+
+ if err := validate.FormatOf("imageReleaseTimestamp", "body", "date-time", m.ImageReleaseTimestamp.String(), formats); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (m *VersionVersionV2) validateStatus(formats strfmt.Registry) error {
+ if swag.IsZero(m.Status) { // not required
+ return nil
+ }
+
+ if m.Status != nil {
+ if err := m.Status.Validate(formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("status")
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("status")
+ }
+ return err
+ }
+ }
+
+ return nil
+}
+
+// ContextValidate validate this version version v2 based on the context it is used
+func (m *VersionVersionV2) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
+ var res []error
+
+ if err := m.contextValidateStatus(ctx, formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
+
+func (m *VersionVersionV2) contextValidateStatus(ctx context.Context, formats strfmt.Registry) error {
+
+ if m.Status != nil {
+
+ if swag.IsZero(m.Status) { // not required
+ return nil
+ }
+
+ if err := m.Status.ContextValidate(ctx, formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("status")
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("status")
+ }
+ return err
+ }
+ }
+
+ return nil
+}
+
+// MarshalBinary interface implementation
+func (m *VersionVersionV2) MarshalBinary() ([]byte, error) {
+ if m == nil {
+ return nil, nil
+ }
+ return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *VersionVersionV2) UnmarshalBinary(b []byte) error {
+ var res VersionVersionV2
+ if err := swag.ReadJSON(b, &res); err != nil {
+ return err
+ }
+ *m = res
+ return nil
+}
diff --git a/version/client/version_service/version_service_apply_parameters.go b/version/client/version_service/version_service_apply_parameters.go
index 2d19601cb7..cb76bdb1d8 100644
--- a/version/client/version_service/version_service_apply_parameters.go
+++ b/version/client/version_service/version_service_apply_parameters.go
@@ -68,9 +68,15 @@ type VersionServiceApplyParams struct {
// BackupVersion.
BackupVersion *string
- // ClusterWideEnabled.
+ // BackupsEnabled.
+ BackupsEnabled *bool
+
+ // ClusterSize.
//
- // Format: boolean
+ // Format: int32
+ ClusterSize *int32
+
+ // ClusterWideEnabled.
ClusterWideEnabled *bool
// CustomResourceUID.
@@ -79,14 +85,21 @@ type VersionServiceApplyParams struct {
// DatabaseVersion.
DatabaseVersion *string
+ // Extensions.
+ Extensions *string
+
// HaproxyVersion.
HaproxyVersion *string
// HashicorpVaultEnabled.
- //
- // Format: boolean
HashicorpVaultEnabled *bool
+ // HelmDeployCr.
+ HelmDeployCr *bool
+
+ // HelmDeployOperator.
+ HelmDeployOperator *bool
+
// KubeVersion.
KubeVersion *string
@@ -99,9 +112,18 @@ type VersionServiceApplyParams struct {
// OperatorVersion.
OperatorVersion string
+ // PhysicalBackupScheduled.
+ PhysicalBackupScheduled *bool
+
+ // PitrEnabled.
+ PitrEnabled *bool
+
// Platform.
Platform *string
+ // PmmEnabled.
+ PmmEnabled *bool
+
// PmmVersion.
PmmVersion *string
@@ -112,10 +134,14 @@ type VersionServiceApplyParams struct {
ProxysqlVersion *string
// ShardingEnabled.
- //
- // Format: boolean
ShardingEnabled *bool
+ // SidecarsUsed.
+ SidecarsUsed *bool
+
+ // UserManagementEnabled.
+ UserManagementEnabled *bool
+
timeout time.Duration
Context context.Context
HTTPClient *http.Client
@@ -191,6 +217,28 @@ func (o *VersionServiceApplyParams) SetBackupVersion(backupVersion *string) {
o.BackupVersion = backupVersion
}
+// WithBackupsEnabled adds the backupsEnabled to the version service apply params
+func (o *VersionServiceApplyParams) WithBackupsEnabled(backupsEnabled *bool) *VersionServiceApplyParams {
+ o.SetBackupsEnabled(backupsEnabled)
+ return o
+}
+
+// SetBackupsEnabled adds the backupsEnabled to the version service apply params
+func (o *VersionServiceApplyParams) SetBackupsEnabled(backupsEnabled *bool) {
+ o.BackupsEnabled = backupsEnabled
+}
+
+// WithClusterSize adds the clusterSize to the version service apply params
+func (o *VersionServiceApplyParams) WithClusterSize(clusterSize *int32) *VersionServiceApplyParams {
+ o.SetClusterSize(clusterSize)
+ return o
+}
+
+// SetClusterSize adds the clusterSize to the version service apply params
+func (o *VersionServiceApplyParams) SetClusterSize(clusterSize *int32) {
+ o.ClusterSize = clusterSize
+}
+
// WithClusterWideEnabled adds the clusterWideEnabled to the version service apply params
func (o *VersionServiceApplyParams) WithClusterWideEnabled(clusterWideEnabled *bool) *VersionServiceApplyParams {
o.SetClusterWideEnabled(clusterWideEnabled)
@@ -224,6 +272,17 @@ func (o *VersionServiceApplyParams) SetDatabaseVersion(databaseVersion *string)
o.DatabaseVersion = databaseVersion
}
+// WithExtensions adds the extensions to the version service apply params
+func (o *VersionServiceApplyParams) WithExtensions(extensions *string) *VersionServiceApplyParams {
+ o.SetExtensions(extensions)
+ return o
+}
+
+// SetExtensions adds the extensions to the version service apply params
+func (o *VersionServiceApplyParams) SetExtensions(extensions *string) {
+ o.Extensions = extensions
+}
+
// WithHaproxyVersion adds the haproxyVersion to the version service apply params
func (o *VersionServiceApplyParams) WithHaproxyVersion(haproxyVersion *string) *VersionServiceApplyParams {
o.SetHaproxyVersion(haproxyVersion)
@@ -246,6 +305,28 @@ func (o *VersionServiceApplyParams) SetHashicorpVaultEnabled(hashicorpVaultEnabl
o.HashicorpVaultEnabled = hashicorpVaultEnabled
}
+// WithHelmDeployCr adds the helmDeployCr to the version service apply params
+func (o *VersionServiceApplyParams) WithHelmDeployCr(helmDeployCr *bool) *VersionServiceApplyParams {
+ o.SetHelmDeployCr(helmDeployCr)
+ return o
+}
+
+// SetHelmDeployCr adds the helmDeployCr to the version service apply params
+func (o *VersionServiceApplyParams) SetHelmDeployCr(helmDeployCr *bool) {
+ o.HelmDeployCr = helmDeployCr
+}
+
+// WithHelmDeployOperator adds the helmDeployOperator to the version service apply params
+func (o *VersionServiceApplyParams) WithHelmDeployOperator(helmDeployOperator *bool) *VersionServiceApplyParams {
+ o.SetHelmDeployOperator(helmDeployOperator)
+ return o
+}
+
+// SetHelmDeployOperator adds the helmDeployOperator to the version service apply params
+func (o *VersionServiceApplyParams) SetHelmDeployOperator(helmDeployOperator *bool) {
+ o.HelmDeployOperator = helmDeployOperator
+}
+
// WithKubeVersion adds the kubeVersion to the version service apply params
func (o *VersionServiceApplyParams) WithKubeVersion(kubeVersion *string) *VersionServiceApplyParams {
o.SetKubeVersion(kubeVersion)
@@ -290,6 +371,28 @@ func (o *VersionServiceApplyParams) SetOperatorVersion(operatorVersion string) {
o.OperatorVersion = operatorVersion
}
+// WithPhysicalBackupScheduled adds the physicalBackupScheduled to the version service apply params
+func (o *VersionServiceApplyParams) WithPhysicalBackupScheduled(physicalBackupScheduled *bool) *VersionServiceApplyParams {
+ o.SetPhysicalBackupScheduled(physicalBackupScheduled)
+ return o
+}
+
+// SetPhysicalBackupScheduled adds the physicalBackupScheduled to the version service apply params
+func (o *VersionServiceApplyParams) SetPhysicalBackupScheduled(physicalBackupScheduled *bool) {
+ o.PhysicalBackupScheduled = physicalBackupScheduled
+}
+
+// WithPitrEnabled adds the pitrEnabled to the version service apply params
+func (o *VersionServiceApplyParams) WithPitrEnabled(pitrEnabled *bool) *VersionServiceApplyParams {
+ o.SetPitrEnabled(pitrEnabled)
+ return o
+}
+
+// SetPitrEnabled adds the pitrEnabled to the version service apply params
+func (o *VersionServiceApplyParams) SetPitrEnabled(pitrEnabled *bool) {
+ o.PitrEnabled = pitrEnabled
+}
+
// WithPlatform adds the platform to the version service apply params
func (o *VersionServiceApplyParams) WithPlatform(platform *string) *VersionServiceApplyParams {
o.SetPlatform(platform)
@@ -301,6 +404,17 @@ func (o *VersionServiceApplyParams) SetPlatform(platform *string) {
o.Platform = platform
}
+// WithPmmEnabled adds the pmmEnabled to the version service apply params
+func (o *VersionServiceApplyParams) WithPmmEnabled(pmmEnabled *bool) *VersionServiceApplyParams {
+ o.SetPmmEnabled(pmmEnabled)
+ return o
+}
+
+// SetPmmEnabled adds the pmmEnabled to the version service apply params
+func (o *VersionServiceApplyParams) SetPmmEnabled(pmmEnabled *bool) {
+ o.PmmEnabled = pmmEnabled
+}
+
// WithPmmVersion adds the pmmVersion to the version service apply params
func (o *VersionServiceApplyParams) WithPmmVersion(pmmVersion *string) *VersionServiceApplyParams {
o.SetPmmVersion(pmmVersion)
@@ -345,6 +459,28 @@ func (o *VersionServiceApplyParams) SetShardingEnabled(shardingEnabled *bool) {
o.ShardingEnabled = shardingEnabled
}
+// WithSidecarsUsed adds the sidecarsUsed to the version service apply params
+func (o *VersionServiceApplyParams) WithSidecarsUsed(sidecarsUsed *bool) *VersionServiceApplyParams {
+ o.SetSidecarsUsed(sidecarsUsed)
+ return o
+}
+
+// SetSidecarsUsed adds the sidecarsUsed to the version service apply params
+func (o *VersionServiceApplyParams) SetSidecarsUsed(sidecarsUsed *bool) {
+ o.SidecarsUsed = sidecarsUsed
+}
+
+// WithUserManagementEnabled adds the userManagementEnabled to the version service apply params
+func (o *VersionServiceApplyParams) WithUserManagementEnabled(userManagementEnabled *bool) *VersionServiceApplyParams {
+ o.SetUserManagementEnabled(userManagementEnabled)
+ return o
+}
+
+// SetUserManagementEnabled adds the userManagementEnabled to the version service apply params
+func (o *VersionServiceApplyParams) SetUserManagementEnabled(userManagementEnabled *bool) {
+ o.UserManagementEnabled = userManagementEnabled
+}
+
// WriteToRequest writes these params to a swagger request
func (o *VersionServiceApplyParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
@@ -375,6 +511,40 @@ func (o *VersionServiceApplyParams) WriteToRequest(r runtime.ClientRequest, reg
}
}
+ if o.BackupsEnabled != nil {
+
+ // query param backupsEnabled
+ var qrBackupsEnabled bool
+
+ if o.BackupsEnabled != nil {
+ qrBackupsEnabled = *o.BackupsEnabled
+ }
+ qBackupsEnabled := swag.FormatBool(qrBackupsEnabled)
+ if qBackupsEnabled != "" {
+
+ if err := r.SetQueryParam("backupsEnabled", qBackupsEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.ClusterSize != nil {
+
+ // query param clusterSize
+ var qrClusterSize int32
+
+ if o.ClusterSize != nil {
+ qrClusterSize = *o.ClusterSize
+ }
+ qClusterSize := swag.FormatInt32(qrClusterSize)
+ if qClusterSize != "" {
+
+ if err := r.SetQueryParam("clusterSize", qClusterSize); err != nil {
+ return err
+ }
+ }
+ }
+
if o.ClusterWideEnabled != nil {
// query param clusterWideEnabled
@@ -426,6 +596,23 @@ func (o *VersionServiceApplyParams) WriteToRequest(r runtime.ClientRequest, reg
}
}
+ if o.Extensions != nil {
+
+ // query param extensions
+ var qrExtensions string
+
+ if o.Extensions != nil {
+ qrExtensions = *o.Extensions
+ }
+ qExtensions := qrExtensions
+ if qExtensions != "" {
+
+ if err := r.SetQueryParam("extensions", qExtensions); err != nil {
+ return err
+ }
+ }
+ }
+
if o.HaproxyVersion != nil {
// query param haproxyVersion
@@ -460,6 +647,40 @@ func (o *VersionServiceApplyParams) WriteToRequest(r runtime.ClientRequest, reg
}
}
+ if o.HelmDeployCr != nil {
+
+ // query param helmDeployCr
+ var qrHelmDeployCr bool
+
+ if o.HelmDeployCr != nil {
+ qrHelmDeployCr = *o.HelmDeployCr
+ }
+ qHelmDeployCr := swag.FormatBool(qrHelmDeployCr)
+ if qHelmDeployCr != "" {
+
+ if err := r.SetQueryParam("helmDeployCr", qHelmDeployCr); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.HelmDeployOperator != nil {
+
+ // query param helmDeployOperator
+ var qrHelmDeployOperator bool
+
+ if o.HelmDeployOperator != nil {
+ qrHelmDeployOperator = *o.HelmDeployOperator
+ }
+ qHelmDeployOperator := swag.FormatBool(qrHelmDeployOperator)
+ if qHelmDeployOperator != "" {
+
+ if err := r.SetQueryParam("helmDeployOperator", qHelmDeployOperator); err != nil {
+ return err
+ }
+ }
+ }
+
if o.KubeVersion != nil {
// query param kubeVersion
@@ -516,6 +737,40 @@ func (o *VersionServiceApplyParams) WriteToRequest(r runtime.ClientRequest, reg
return err
}
+ if o.PhysicalBackupScheduled != nil {
+
+ // query param physicalBackupScheduled
+ var qrPhysicalBackupScheduled bool
+
+ if o.PhysicalBackupScheduled != nil {
+ qrPhysicalBackupScheduled = *o.PhysicalBackupScheduled
+ }
+ qPhysicalBackupScheduled := swag.FormatBool(qrPhysicalBackupScheduled)
+ if qPhysicalBackupScheduled != "" {
+
+ if err := r.SetQueryParam("physicalBackupScheduled", qPhysicalBackupScheduled); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.PitrEnabled != nil {
+
+ // query param pitrEnabled
+ var qrPitrEnabled bool
+
+ if o.PitrEnabled != nil {
+ qrPitrEnabled = *o.PitrEnabled
+ }
+ qPitrEnabled := swag.FormatBool(qrPitrEnabled)
+ if qPitrEnabled != "" {
+
+ if err := r.SetQueryParam("pitrEnabled", qPitrEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
if o.Platform != nil {
// query param platform
@@ -533,6 +788,23 @@ func (o *VersionServiceApplyParams) WriteToRequest(r runtime.ClientRequest, reg
}
}
+ if o.PmmEnabled != nil {
+
+ // query param pmmEnabled
+ var qrPmmEnabled bool
+
+ if o.PmmEnabled != nil {
+ qrPmmEnabled = *o.PmmEnabled
+ }
+ qPmmEnabled := swag.FormatBool(qrPmmEnabled)
+ if qPmmEnabled != "" {
+
+ if err := r.SetQueryParam("pmmEnabled", qPmmEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
if o.PmmVersion != nil {
// query param pmmVersion
@@ -589,6 +861,40 @@ func (o *VersionServiceApplyParams) WriteToRequest(r runtime.ClientRequest, reg
}
}
+ if o.SidecarsUsed != nil {
+
+ // query param sidecarsUsed
+ var qrSidecarsUsed bool
+
+ if o.SidecarsUsed != nil {
+ qrSidecarsUsed = *o.SidecarsUsed
+ }
+ qSidecarsUsed := swag.FormatBool(qrSidecarsUsed)
+ if qSidecarsUsed != "" {
+
+ if err := r.SetQueryParam("sidecarsUsed", qSidecarsUsed); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.UserManagementEnabled != nil {
+
+ // query param userManagementEnabled
+ var qrUserManagementEnabled bool
+
+ if o.UserManagementEnabled != nil {
+ qrUserManagementEnabled = *o.UserManagementEnabled
+ }
+ qUserManagementEnabled := swag.FormatBool(qrUserManagementEnabled)
+ if qUserManagementEnabled != "" {
+
+ if err := r.SetQueryParam("userManagementEnabled", qUserManagementEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
diff --git a/version/client/version_service/version_service_apply_responses.go b/version/client/version_service/version_service_apply_responses.go
index 677847438c..46884988b0 100644
--- a/version/client/version_service/version_service_apply_responses.go
+++ b/version/client/version_service/version_service_apply_responses.go
@@ -6,6 +6,7 @@ package version_service
// Editing this file might prove futile when you re-run the swagger generate command
import (
+ "encoding/json"
"fmt"
"io"
@@ -55,9 +56,46 @@ type VersionServiceApplyOK struct {
Payload *models.VersionVersionResponse
}
+// IsSuccess returns true when this version service apply o k response has a 2xx status code
+func (o *VersionServiceApplyOK) IsSuccess() bool {
+ return true
+}
+
+// IsRedirect returns true when this version service apply o k response has a 3xx status code
+func (o *VersionServiceApplyOK) IsRedirect() bool {
+ return false
+}
+
+// IsClientError returns true when this version service apply o k response has a 4xx status code
+func (o *VersionServiceApplyOK) IsClientError() bool {
+ return false
+}
+
+// IsServerError returns true when this version service apply o k response has a 5xx status code
+func (o *VersionServiceApplyOK) IsServerError() bool {
+ return false
+}
+
+// IsCode returns true when this version service apply o k response a status code equal to that given
+func (o *VersionServiceApplyOK) IsCode(code int) bool {
+ return code == 200
+}
+
+// Code gets the status code for the version service apply o k response
+func (o *VersionServiceApplyOK) Code() int {
+ return 200
+}
+
func (o *VersionServiceApplyOK) Error() string {
- return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}/{apply}][%d] versionServiceApplyOK %+v", 200, o.Payload)
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}/{apply}][%d] versionServiceApplyOK %s", 200, payload)
+}
+
+func (o *VersionServiceApplyOK) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}/{apply}][%d] versionServiceApplyOK %s", 200, payload)
}
+
func (o *VersionServiceApplyOK) GetPayload() *models.VersionVersionResponse {
return o.Payload
}
@@ -84,7 +122,7 @@ func NewVersionServiceApplyDefault(code int) *VersionServiceApplyDefault {
/*
VersionServiceApplyDefault describes a response with status code -1, with default header values.
-An unexpected error response
+An unexpected error response.
*/
type VersionServiceApplyDefault struct {
_statusCode int
@@ -92,14 +130,46 @@ type VersionServiceApplyDefault struct {
Payload *models.GooglerpcStatus
}
+// IsSuccess returns true when this version service apply default response has a 2xx status code
+func (o *VersionServiceApplyDefault) IsSuccess() bool {
+ return o._statusCode/100 == 2
+}
+
+// IsRedirect returns true when this version service apply default response has a 3xx status code
+func (o *VersionServiceApplyDefault) IsRedirect() bool {
+ return o._statusCode/100 == 3
+}
+
+// IsClientError returns true when this version service apply default response has a 4xx status code
+func (o *VersionServiceApplyDefault) IsClientError() bool {
+ return o._statusCode/100 == 4
+}
+
+// IsServerError returns true when this version service apply default response has a 5xx status code
+func (o *VersionServiceApplyDefault) IsServerError() bool {
+ return o._statusCode/100 == 5
+}
+
+// IsCode returns true when this version service apply default response a status code equal to that given
+func (o *VersionServiceApplyDefault) IsCode(code int) bool {
+ return o._statusCode == code
+}
+
// Code gets the status code for the version service apply default response
func (o *VersionServiceApplyDefault) Code() int {
return o._statusCode
}
func (o *VersionServiceApplyDefault) Error() string {
- return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}/{apply}][%d] VersionService_Apply default %+v", o._statusCode, o.Payload)
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}/{apply}][%d] VersionService_Apply default %s", o._statusCode, payload)
}
+
+func (o *VersionServiceApplyDefault) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}/{apply}][%d] VersionService_Apply default %s", o._statusCode, payload)
+}
+
func (o *VersionServiceApplyDefault) GetPayload() *models.GooglerpcStatus {
return o.Payload
}
diff --git a/version/client/version_service/version_service_client.go b/version/client/version_service/version_service_client.go
index 398c120215..46e8ef9320 100644
--- a/version/client/version_service/version_service_client.go
+++ b/version/client/version_service/version_service_client.go
@@ -7,6 +7,7 @@ package version_service
import (
"github.com/go-openapi/runtime"
+ httptransport "github.com/go-openapi/runtime/client"
"github.com/go-openapi/strfmt"
)
@@ -15,6 +16,31 @@ func New(transport runtime.ClientTransport, formats strfmt.Registry) ClientServi
return &Client{transport: transport, formats: formats}
}
+// New creates a new version service API client with basic auth credentials.
+// It takes the following parameters:
+// - host: http host (github.com).
+// - basePath: any base path for the API client ("/v1", "/v3").
+// - scheme: http scheme ("http", "https").
+// - user: user for basic authentication header.
+// - password: password for basic authentication header.
+func NewClientWithBasicAuth(host, basePath, scheme, user, password string) ClientService {
+ transport := httptransport.New(host, basePath, []string{scheme})
+ transport.DefaultAuthentication = httptransport.BasicAuth(user, password)
+ return &Client{transport: transport, formats: strfmt.Default}
+}
+
+// New creates a new version service API client with a bearer token for authentication.
+// It takes the following parameters:
+// - host: http host (github.com).
+// - basePath: any base path for the API client ("/v1", "/v3").
+// - scheme: http scheme ("http", "https").
+// - bearerToken: bearer token for Bearer authentication header.
+func NewClientWithBearerToken(host, basePath, scheme, bearerToken string) ClientService {
+ transport := httptransport.New(host, basePath, []string{scheme})
+ transport.DefaultAuthentication = httptransport.BearerToken(bearerToken)
+ return &Client{transport: transport, formats: strfmt.Default}
+}
+
/*
Client for version service API
*/
@@ -23,13 +49,19 @@ type Client struct {
formats strfmt.Registry
}
-// ClientOption is the option for Client methods
+// ClientOption may be used to customize the behavior of Client methods.
type ClientOption func(*runtime.ClientOperation)
// ClientService is the interface for Client methods
type ClientService interface {
VersionServiceApply(params *VersionServiceApplyParams, opts ...ClientOption) (*VersionServiceApplyOK, error)
+ VersionServiceGetReleaseNotes(params *VersionServiceGetReleaseNotesParams, opts ...ClientOption) (*VersionServiceGetReleaseNotesOK, error)
+
+ VersionServiceMetadata(params *VersionServiceMetadataParams, opts ...ClientOption) (*VersionServiceMetadataOK, error)
+
+ VersionServiceMetadataV2(params *VersionServiceMetadataV2Params, opts ...ClientOption) (*VersionServiceMetadataV2OK, error)
+
VersionServiceOperator(params *VersionServiceOperatorParams, opts ...ClientOption) (*VersionServiceOperatorOK, error)
VersionServiceProduct(params *VersionServiceProductParams, opts ...ClientOption) (*VersionServiceProductOK, error)
@@ -76,6 +108,123 @@ func (a *Client) VersionServiceApply(params *VersionServiceApplyParams, opts ...
return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code())
}
+/*
+VersionServiceGetReleaseNotes gets the release notes for a product version
+
+Return release notes for a product version
+*/
+func (a *Client) VersionServiceGetReleaseNotes(params *VersionServiceGetReleaseNotesParams, opts ...ClientOption) (*VersionServiceGetReleaseNotesOK, error) {
+ // TODO: Validate the params before sending
+ if params == nil {
+ params = NewVersionServiceGetReleaseNotesParams()
+ }
+ op := &runtime.ClientOperation{
+ ID: "VersionService_GetReleaseNotes",
+ Method: "GET",
+ PathPattern: "/release-notes/v1/{product}/{version}",
+ ProducesMediaTypes: []string{"application/json"},
+ ConsumesMediaTypes: []string{"application/json"},
+ Schemes: []string{"http", "https"},
+ Params: params,
+ Reader: &VersionServiceGetReleaseNotesReader{formats: a.formats},
+ Context: params.Context,
+ Client: params.HTTPClient,
+ }
+ for _, opt := range opts {
+ opt(op)
+ }
+
+ result, err := a.transport.Submit(op)
+ if err != nil {
+ return nil, err
+ }
+ success, ok := result.(*VersionServiceGetReleaseNotesOK)
+ if ok {
+ return success, nil
+ }
+ // unexpected success response
+ unexpectedSuccess := result.(*VersionServiceGetReleaseNotesDefault)
+ return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code())
+}
+
+/*
+VersionServiceMetadata metadata for a product
+
+Return metadata information for a product
+*/
+func (a *Client) VersionServiceMetadata(params *VersionServiceMetadataParams, opts ...ClientOption) (*VersionServiceMetadataOK, error) {
+ // TODO: Validate the params before sending
+ if params == nil {
+ params = NewVersionServiceMetadataParams()
+ }
+ op := &runtime.ClientOperation{
+ ID: "VersionService_Metadata",
+ Method: "GET",
+ PathPattern: "/metadata/v1/{product}",
+ ProducesMediaTypes: []string{"application/json"},
+ ConsumesMediaTypes: []string{"application/json"},
+ Schemes: []string{"http", "https"},
+ Params: params,
+ Reader: &VersionServiceMetadataReader{formats: a.formats},
+ Context: params.Context,
+ Client: params.HTTPClient,
+ }
+ for _, opt := range opts {
+ opt(op)
+ }
+
+ result, err := a.transport.Submit(op)
+ if err != nil {
+ return nil, err
+ }
+ success, ok := result.(*VersionServiceMetadataOK)
+ if ok {
+ return success, nil
+ }
+ // unexpected success response
+ unexpectedSuccess := result.(*VersionServiceMetadataDefault)
+ return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code())
+}
+
+/*
+VersionServiceMetadataV2 v2s metadata for a product
+
+Return metadata information with additional image information for a product
+*/
+func (a *Client) VersionServiceMetadataV2(params *VersionServiceMetadataV2Params, opts ...ClientOption) (*VersionServiceMetadataV2OK, error) {
+ // TODO: Validate the params before sending
+ if params == nil {
+ params = NewVersionServiceMetadataV2Params()
+ }
+ op := &runtime.ClientOperation{
+ ID: "VersionService_MetadataV2",
+ Method: "GET",
+ PathPattern: "/metadata/v2/{product}",
+ ProducesMediaTypes: []string{"application/json"},
+ ConsumesMediaTypes: []string{"application/json"},
+ Schemes: []string{"http", "https"},
+ Params: params,
+ Reader: &VersionServiceMetadataV2Reader{formats: a.formats},
+ Context: params.Context,
+ Client: params.HTTPClient,
+ }
+ for _, opt := range opts {
+ opt(op)
+ }
+
+ result, err := a.transport.Submit(op)
+ if err != nil {
+ return nil, err
+ }
+ success, ok := result.(*VersionServiceMetadataV2OK)
+ if ok {
+ return success, nil
+ }
+ // unexpected success response
+ unexpectedSuccess := result.(*VersionServiceMetadataV2Default)
+ return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code())
+}
+
/*
VersionServiceOperator products versions for specific operator version
diff --git a/version/client/version_service/version_service_get_release_notes_parameters.go b/version/client/version_service/version_service_get_release_notes_parameters.go
new file mode 100644
index 0000000000..c2c2402040
--- /dev/null
+++ b/version/client/version_service/version_service_get_release_notes_parameters.go
@@ -0,0 +1,173 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package version_service
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+ "net/http"
+ "time"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/runtime"
+ cr "github.com/go-openapi/runtime/client"
+ "github.com/go-openapi/strfmt"
+)
+
+// NewVersionServiceGetReleaseNotesParams creates a new VersionServiceGetReleaseNotesParams object,
+// with the default timeout for this client.
+//
+// Default values are not hydrated, since defaults are normally applied by the API server side.
+//
+// To enforce default values in parameter, use SetDefaults or WithDefaults.
+func NewVersionServiceGetReleaseNotesParams() *VersionServiceGetReleaseNotesParams {
+ return &VersionServiceGetReleaseNotesParams{
+ timeout: cr.DefaultTimeout,
+ }
+}
+
+// NewVersionServiceGetReleaseNotesParamsWithTimeout creates a new VersionServiceGetReleaseNotesParams object
+// with the ability to set a timeout on a request.
+func NewVersionServiceGetReleaseNotesParamsWithTimeout(timeout time.Duration) *VersionServiceGetReleaseNotesParams {
+ return &VersionServiceGetReleaseNotesParams{
+ timeout: timeout,
+ }
+}
+
+// NewVersionServiceGetReleaseNotesParamsWithContext creates a new VersionServiceGetReleaseNotesParams object
+// with the ability to set a context for a request.
+func NewVersionServiceGetReleaseNotesParamsWithContext(ctx context.Context) *VersionServiceGetReleaseNotesParams {
+ return &VersionServiceGetReleaseNotesParams{
+ Context: ctx,
+ }
+}
+
+// NewVersionServiceGetReleaseNotesParamsWithHTTPClient creates a new VersionServiceGetReleaseNotesParams object
+// with the ability to set a custom HTTPClient for a request.
+func NewVersionServiceGetReleaseNotesParamsWithHTTPClient(client *http.Client) *VersionServiceGetReleaseNotesParams {
+ return &VersionServiceGetReleaseNotesParams{
+ HTTPClient: client,
+ }
+}
+
+/*
+VersionServiceGetReleaseNotesParams contains all the parameters to send to the API endpoint
+
+ for the version service get release notes operation.
+
+ Typically these are written to a http.Request.
+*/
+type VersionServiceGetReleaseNotesParams struct {
+
+ /* Product.
+
+ Product name.
+ */
+ Product string
+
+ /* Version.
+
+ Product version.
+ */
+ Version string
+
+ timeout time.Duration
+ Context context.Context
+ HTTPClient *http.Client
+}
+
+// WithDefaults hydrates default values in the version service get release notes params (not the query body).
+//
+// All values with no default are reset to their zero value.
+func (o *VersionServiceGetReleaseNotesParams) WithDefaults() *VersionServiceGetReleaseNotesParams {
+ o.SetDefaults()
+ return o
+}
+
+// SetDefaults hydrates default values in the version service get release notes params (not the query body).
+//
+// All values with no default are reset to their zero value.
+func (o *VersionServiceGetReleaseNotesParams) SetDefaults() {
+ // no default values defined for this parameter
+}
+
+// WithTimeout adds the timeout to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) WithTimeout(timeout time.Duration) *VersionServiceGetReleaseNotesParams {
+ o.SetTimeout(timeout)
+ return o
+}
+
+// SetTimeout adds the timeout to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) SetTimeout(timeout time.Duration) {
+ o.timeout = timeout
+}
+
+// WithContext adds the context to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) WithContext(ctx context.Context) *VersionServiceGetReleaseNotesParams {
+ o.SetContext(ctx)
+ return o
+}
+
+// SetContext adds the context to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) SetContext(ctx context.Context) {
+ o.Context = ctx
+}
+
+// WithHTTPClient adds the HTTPClient to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) WithHTTPClient(client *http.Client) *VersionServiceGetReleaseNotesParams {
+ o.SetHTTPClient(client)
+ return o
+}
+
+// SetHTTPClient adds the HTTPClient to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) SetHTTPClient(client *http.Client) {
+ o.HTTPClient = client
+}
+
+// WithProduct adds the product to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) WithProduct(product string) *VersionServiceGetReleaseNotesParams {
+ o.SetProduct(product)
+ return o
+}
+
+// SetProduct adds the product to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) SetProduct(product string) {
+ o.Product = product
+}
+
+// WithVersion adds the version to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) WithVersion(version string) *VersionServiceGetReleaseNotesParams {
+ o.SetVersion(version)
+ return o
+}
+
+// SetVersion adds the version to the version service get release notes params
+func (o *VersionServiceGetReleaseNotesParams) SetVersion(version string) {
+ o.Version = version
+}
+
+// WriteToRequest writes these params to a swagger request
+func (o *VersionServiceGetReleaseNotesParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
+
+ if err := r.SetTimeout(o.timeout); err != nil {
+ return err
+ }
+ var res []error
+
+ // path param product
+ if err := r.SetPathParam("product", o.Product); err != nil {
+ return err
+ }
+
+ // path param version
+ if err := r.SetPathParam("version", o.Version); err != nil {
+ return err
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
diff --git a/version/client/version_service/version_service_get_release_notes_responses.go b/version/client/version_service/version_service_get_release_notes_responses.go
new file mode 100644
index 0000000000..1e5664a272
--- /dev/null
+++ b/version/client/version_service/version_service_get_release_notes_responses.go
@@ -0,0 +1,187 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package version_service
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+
+ "github.com/go-openapi/runtime"
+ "github.com/go-openapi/strfmt"
+
+ "github.com/percona/percona-xtradb-cluster-operator/version/client/models"
+)
+
+// VersionServiceGetReleaseNotesReader is a Reader for the VersionServiceGetReleaseNotes structure.
+type VersionServiceGetReleaseNotesReader struct {
+ formats strfmt.Registry
+}
+
+// ReadResponse reads a server response into the received o.
+func (o *VersionServiceGetReleaseNotesReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) {
+ switch response.Code() {
+ case 200:
+ result := NewVersionServiceGetReleaseNotesOK()
+ if err := result.readResponse(response, consumer, o.formats); err != nil {
+ return nil, err
+ }
+ return result, nil
+ default:
+ result := NewVersionServiceGetReleaseNotesDefault(response.Code())
+ if err := result.readResponse(response, consumer, o.formats); err != nil {
+ return nil, err
+ }
+ if response.Code()/100 == 2 {
+ return result, nil
+ }
+ return nil, result
+ }
+}
+
+// NewVersionServiceGetReleaseNotesOK creates a VersionServiceGetReleaseNotesOK with default headers values
+func NewVersionServiceGetReleaseNotesOK() *VersionServiceGetReleaseNotesOK {
+ return &VersionServiceGetReleaseNotesOK{}
+}
+
+/*
+VersionServiceGetReleaseNotesOK describes a response with status code 200, with default header values.
+
+A successful response.
+*/
+type VersionServiceGetReleaseNotesOK struct {
+ Payload *models.VersionGetReleaseNotesResponse
+}
+
+// IsSuccess returns true when this version service get release notes o k response has a 2xx status code
+func (o *VersionServiceGetReleaseNotesOK) IsSuccess() bool {
+ return true
+}
+
+// IsRedirect returns true when this version service get release notes o k response has a 3xx status code
+func (o *VersionServiceGetReleaseNotesOK) IsRedirect() bool {
+ return false
+}
+
+// IsClientError returns true when this version service get release notes o k response has a 4xx status code
+func (o *VersionServiceGetReleaseNotesOK) IsClientError() bool {
+ return false
+}
+
+// IsServerError returns true when this version service get release notes o k response has a 5xx status code
+func (o *VersionServiceGetReleaseNotesOK) IsServerError() bool {
+ return false
+}
+
+// IsCode returns true when this version service get release notes o k response a status code equal to that given
+func (o *VersionServiceGetReleaseNotesOK) IsCode(code int) bool {
+ return code == 200
+}
+
+// Code gets the status code for the version service get release notes o k response
+func (o *VersionServiceGetReleaseNotesOK) Code() int {
+ return 200
+}
+
+func (o *VersionServiceGetReleaseNotesOK) Error() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /release-notes/v1/{product}/{version}][%d] versionServiceGetReleaseNotesOK %s", 200, payload)
+}
+
+func (o *VersionServiceGetReleaseNotesOK) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /release-notes/v1/{product}/{version}][%d] versionServiceGetReleaseNotesOK %s", 200, payload)
+}
+
+func (o *VersionServiceGetReleaseNotesOK) GetPayload() *models.VersionGetReleaseNotesResponse {
+ return o.Payload
+}
+
+func (o *VersionServiceGetReleaseNotesOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
+
+ o.Payload = new(models.VersionGetReleaseNotesResponse)
+
+ // response payload
+ if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
+ return err
+ }
+
+ return nil
+}
+
+// NewVersionServiceGetReleaseNotesDefault creates a VersionServiceGetReleaseNotesDefault with default headers values
+func NewVersionServiceGetReleaseNotesDefault(code int) *VersionServiceGetReleaseNotesDefault {
+ return &VersionServiceGetReleaseNotesDefault{
+ _statusCode: code,
+ }
+}
+
+/*
+VersionServiceGetReleaseNotesDefault describes a response with status code -1, with default header values.
+
+An unexpected error response.
+*/
+type VersionServiceGetReleaseNotesDefault struct {
+ _statusCode int
+
+ Payload *models.GooglerpcStatus
+}
+
+// IsSuccess returns true when this version service get release notes default response has a 2xx status code
+func (o *VersionServiceGetReleaseNotesDefault) IsSuccess() bool {
+ return o._statusCode/100 == 2
+}
+
+// IsRedirect returns true when this version service get release notes default response has a 3xx status code
+func (o *VersionServiceGetReleaseNotesDefault) IsRedirect() bool {
+ return o._statusCode/100 == 3
+}
+
+// IsClientError returns true when this version service get release notes default response has a 4xx status code
+func (o *VersionServiceGetReleaseNotesDefault) IsClientError() bool {
+ return o._statusCode/100 == 4
+}
+
+// IsServerError returns true when this version service get release notes default response has a 5xx status code
+func (o *VersionServiceGetReleaseNotesDefault) IsServerError() bool {
+ return o._statusCode/100 == 5
+}
+
+// IsCode returns true when this version service get release notes default response a status code equal to that given
+func (o *VersionServiceGetReleaseNotesDefault) IsCode(code int) bool {
+ return o._statusCode == code
+}
+
+// Code gets the status code for the version service get release notes default response
+func (o *VersionServiceGetReleaseNotesDefault) Code() int {
+ return o._statusCode
+}
+
+func (o *VersionServiceGetReleaseNotesDefault) Error() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /release-notes/v1/{product}/{version}][%d] VersionService_GetReleaseNotes default %s", o._statusCode, payload)
+}
+
+func (o *VersionServiceGetReleaseNotesDefault) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /release-notes/v1/{product}/{version}][%d] VersionService_GetReleaseNotes default %s", o._statusCode, payload)
+}
+
+func (o *VersionServiceGetReleaseNotesDefault) GetPayload() *models.GooglerpcStatus {
+ return o.Payload
+}
+
+func (o *VersionServiceGetReleaseNotesDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
+
+ o.Payload = new(models.GooglerpcStatus)
+
+ // response payload
+ if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
+ return err
+ }
+
+ return nil
+}
diff --git a/version/client/version_service/version_service_metadata_parameters.go b/version/client/version_service/version_service_metadata_parameters.go
new file mode 100644
index 0000000000..251f98e56c
--- /dev/null
+++ b/version/client/version_service/version_service_metadata_parameters.go
@@ -0,0 +1,148 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package version_service
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+ "net/http"
+ "time"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/runtime"
+ cr "github.com/go-openapi/runtime/client"
+ "github.com/go-openapi/strfmt"
+)
+
+// NewVersionServiceMetadataParams creates a new VersionServiceMetadataParams object,
+// with the default timeout for this client.
+//
+// Default values are not hydrated, since defaults are normally applied by the API server side.
+//
+// To enforce default values in parameter, use SetDefaults or WithDefaults.
+func NewVersionServiceMetadataParams() *VersionServiceMetadataParams {
+ return &VersionServiceMetadataParams{
+ timeout: cr.DefaultTimeout,
+ }
+}
+
+// NewVersionServiceMetadataParamsWithTimeout creates a new VersionServiceMetadataParams object
+// with the ability to set a timeout on a request.
+func NewVersionServiceMetadataParamsWithTimeout(timeout time.Duration) *VersionServiceMetadataParams {
+ return &VersionServiceMetadataParams{
+ timeout: timeout,
+ }
+}
+
+// NewVersionServiceMetadataParamsWithContext creates a new VersionServiceMetadataParams object
+// with the ability to set a context for a request.
+func NewVersionServiceMetadataParamsWithContext(ctx context.Context) *VersionServiceMetadataParams {
+ return &VersionServiceMetadataParams{
+ Context: ctx,
+ }
+}
+
+// NewVersionServiceMetadataParamsWithHTTPClient creates a new VersionServiceMetadataParams object
+// with the ability to set a custom HTTPClient for a request.
+func NewVersionServiceMetadataParamsWithHTTPClient(client *http.Client) *VersionServiceMetadataParams {
+ return &VersionServiceMetadataParams{
+ HTTPClient: client,
+ }
+}
+
+/*
+VersionServiceMetadataParams contains all the parameters to send to the API endpoint
+
+ for the version service metadata operation.
+
+ Typically these are written to a http.Request.
+*/
+type VersionServiceMetadataParams struct {
+
+ // Product.
+ Product string
+
+ timeout time.Duration
+ Context context.Context
+ HTTPClient *http.Client
+}
+
+// WithDefaults hydrates default values in the version service metadata params (not the query body).
+//
+// All values with no default are reset to their zero value.
+func (o *VersionServiceMetadataParams) WithDefaults() *VersionServiceMetadataParams {
+ o.SetDefaults()
+ return o
+}
+
+// SetDefaults hydrates default values in the version service metadata params (not the query body).
+//
+// All values with no default are reset to their zero value.
+func (o *VersionServiceMetadataParams) SetDefaults() {
+ // no default values defined for this parameter
+}
+
+// WithTimeout adds the timeout to the version service metadata params
+func (o *VersionServiceMetadataParams) WithTimeout(timeout time.Duration) *VersionServiceMetadataParams {
+ o.SetTimeout(timeout)
+ return o
+}
+
+// SetTimeout adds the timeout to the version service metadata params
+func (o *VersionServiceMetadataParams) SetTimeout(timeout time.Duration) {
+ o.timeout = timeout
+}
+
+// WithContext adds the context to the version service metadata params
+func (o *VersionServiceMetadataParams) WithContext(ctx context.Context) *VersionServiceMetadataParams {
+ o.SetContext(ctx)
+ return o
+}
+
+// SetContext adds the context to the version service metadata params
+func (o *VersionServiceMetadataParams) SetContext(ctx context.Context) {
+ o.Context = ctx
+}
+
+// WithHTTPClient adds the HTTPClient to the version service metadata params
+func (o *VersionServiceMetadataParams) WithHTTPClient(client *http.Client) *VersionServiceMetadataParams {
+ o.SetHTTPClient(client)
+ return o
+}
+
+// SetHTTPClient adds the HTTPClient to the version service metadata params
+func (o *VersionServiceMetadataParams) SetHTTPClient(client *http.Client) {
+ o.HTTPClient = client
+}
+
+// WithProduct adds the product to the version service metadata params
+func (o *VersionServiceMetadataParams) WithProduct(product string) *VersionServiceMetadataParams {
+ o.SetProduct(product)
+ return o
+}
+
+// SetProduct adds the product to the version service metadata params
+func (o *VersionServiceMetadataParams) SetProduct(product string) {
+ o.Product = product
+}
+
+// WriteToRequest writes these params to a swagger request
+func (o *VersionServiceMetadataParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
+
+ if err := r.SetTimeout(o.timeout); err != nil {
+ return err
+ }
+ var res []error
+
+ // path param product
+ if err := r.SetPathParam("product", o.Product); err != nil {
+ return err
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
diff --git a/version/client/version_service/version_service_metadata_responses.go b/version/client/version_service/version_service_metadata_responses.go
new file mode 100644
index 0000000000..07d69358e0
--- /dev/null
+++ b/version/client/version_service/version_service_metadata_responses.go
@@ -0,0 +1,187 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package version_service
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+
+ "github.com/go-openapi/runtime"
+ "github.com/go-openapi/strfmt"
+
+ "github.com/percona/percona-xtradb-cluster-operator/version/client/models"
+)
+
+// VersionServiceMetadataReader is a Reader for the VersionServiceMetadata structure.
+type VersionServiceMetadataReader struct {
+ formats strfmt.Registry
+}
+
+// ReadResponse reads a server response into the received o.
+func (o *VersionServiceMetadataReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) {
+ switch response.Code() {
+ case 200:
+ result := NewVersionServiceMetadataOK()
+ if err := result.readResponse(response, consumer, o.formats); err != nil {
+ return nil, err
+ }
+ return result, nil
+ default:
+ result := NewVersionServiceMetadataDefault(response.Code())
+ if err := result.readResponse(response, consumer, o.formats); err != nil {
+ return nil, err
+ }
+ if response.Code()/100 == 2 {
+ return result, nil
+ }
+ return nil, result
+ }
+}
+
+// NewVersionServiceMetadataOK creates a VersionServiceMetadataOK with default headers values
+func NewVersionServiceMetadataOK() *VersionServiceMetadataOK {
+ return &VersionServiceMetadataOK{}
+}
+
+/*
+VersionServiceMetadataOK describes a response with status code 200, with default header values.
+
+A successful response.
+*/
+type VersionServiceMetadataOK struct {
+ Payload *models.VersionMetadataResponse
+}
+
+// IsSuccess returns true when this version service metadata o k response has a 2xx status code
+func (o *VersionServiceMetadataOK) IsSuccess() bool {
+ return true
+}
+
+// IsRedirect returns true when this version service metadata o k response has a 3xx status code
+func (o *VersionServiceMetadataOK) IsRedirect() bool {
+ return false
+}
+
+// IsClientError returns true when this version service metadata o k response has a 4xx status code
+func (o *VersionServiceMetadataOK) IsClientError() bool {
+ return false
+}
+
+// IsServerError returns true when this version service metadata o k response has a 5xx status code
+func (o *VersionServiceMetadataOK) IsServerError() bool {
+ return false
+}
+
+// IsCode returns true when this version service metadata o k response a status code equal to that given
+func (o *VersionServiceMetadataOK) IsCode(code int) bool {
+ return code == 200
+}
+
+// Code gets the status code for the version service metadata o k response
+func (o *VersionServiceMetadataOK) Code() int {
+ return 200
+}
+
+func (o *VersionServiceMetadataOK) Error() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /metadata/v1/{product}][%d] versionServiceMetadataOK %s", 200, payload)
+}
+
+func (o *VersionServiceMetadataOK) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /metadata/v1/{product}][%d] versionServiceMetadataOK %s", 200, payload)
+}
+
+func (o *VersionServiceMetadataOK) GetPayload() *models.VersionMetadataResponse {
+ return o.Payload
+}
+
+func (o *VersionServiceMetadataOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
+
+ o.Payload = new(models.VersionMetadataResponse)
+
+ // response payload
+ if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
+ return err
+ }
+
+ return nil
+}
+
+// NewVersionServiceMetadataDefault creates a VersionServiceMetadataDefault with default headers values
+func NewVersionServiceMetadataDefault(code int) *VersionServiceMetadataDefault {
+ return &VersionServiceMetadataDefault{
+ _statusCode: code,
+ }
+}
+
+/*
+VersionServiceMetadataDefault describes a response with status code -1, with default header values.
+
+An unexpected error response.
+*/
+type VersionServiceMetadataDefault struct {
+ _statusCode int
+
+ Payload *models.GooglerpcStatus
+}
+
+// IsSuccess returns true when this version service metadata default response has a 2xx status code
+func (o *VersionServiceMetadataDefault) IsSuccess() bool {
+ return o._statusCode/100 == 2
+}
+
+// IsRedirect returns true when this version service metadata default response has a 3xx status code
+func (o *VersionServiceMetadataDefault) IsRedirect() bool {
+ return o._statusCode/100 == 3
+}
+
+// IsClientError returns true when this version service metadata default response has a 4xx status code
+func (o *VersionServiceMetadataDefault) IsClientError() bool {
+ return o._statusCode/100 == 4
+}
+
+// IsServerError returns true when this version service metadata default response has a 5xx status code
+func (o *VersionServiceMetadataDefault) IsServerError() bool {
+ return o._statusCode/100 == 5
+}
+
+// IsCode returns true when this version service metadata default response a status code equal to that given
+func (o *VersionServiceMetadataDefault) IsCode(code int) bool {
+ return o._statusCode == code
+}
+
+// Code gets the status code for the version service metadata default response
+func (o *VersionServiceMetadataDefault) Code() int {
+ return o._statusCode
+}
+
+func (o *VersionServiceMetadataDefault) Error() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /metadata/v1/{product}][%d] VersionService_Metadata default %s", o._statusCode, payload)
+}
+
+func (o *VersionServiceMetadataDefault) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /metadata/v1/{product}][%d] VersionService_Metadata default %s", o._statusCode, payload)
+}
+
+func (o *VersionServiceMetadataDefault) GetPayload() *models.GooglerpcStatus {
+ return o.Payload
+}
+
+func (o *VersionServiceMetadataDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
+
+ o.Payload = new(models.GooglerpcStatus)
+
+ // response payload
+ if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
+ return err
+ }
+
+ return nil
+}
diff --git a/version/client/version_service/version_service_metadata_v2_parameters.go b/version/client/version_service/version_service_metadata_v2_parameters.go
new file mode 100644
index 0000000000..2558879e7f
--- /dev/null
+++ b/version/client/version_service/version_service_metadata_v2_parameters.go
@@ -0,0 +1,148 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package version_service
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+ "net/http"
+ "time"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/runtime"
+ cr "github.com/go-openapi/runtime/client"
+ "github.com/go-openapi/strfmt"
+)
+
+// NewVersionServiceMetadataV2Params creates a new VersionServiceMetadataV2Params object,
+// with the default timeout for this client.
+//
+// Default values are not hydrated, since defaults are normally applied by the API server side.
+//
+// To enforce default values in parameter, use SetDefaults or WithDefaults.
+func NewVersionServiceMetadataV2Params() *VersionServiceMetadataV2Params {
+ return &VersionServiceMetadataV2Params{
+ timeout: cr.DefaultTimeout,
+ }
+}
+
+// NewVersionServiceMetadataV2ParamsWithTimeout creates a new VersionServiceMetadataV2Params object
+// with the ability to set a timeout on a request.
+func NewVersionServiceMetadataV2ParamsWithTimeout(timeout time.Duration) *VersionServiceMetadataV2Params {
+ return &VersionServiceMetadataV2Params{
+ timeout: timeout,
+ }
+}
+
+// NewVersionServiceMetadataV2ParamsWithContext creates a new VersionServiceMetadataV2Params object
+// with the ability to set a context for a request.
+func NewVersionServiceMetadataV2ParamsWithContext(ctx context.Context) *VersionServiceMetadataV2Params {
+ return &VersionServiceMetadataV2Params{
+ Context: ctx,
+ }
+}
+
+// NewVersionServiceMetadataV2ParamsWithHTTPClient creates a new VersionServiceMetadataV2Params object
+// with the ability to set a custom HTTPClient for a request.
+func NewVersionServiceMetadataV2ParamsWithHTTPClient(client *http.Client) *VersionServiceMetadataV2Params {
+ return &VersionServiceMetadataV2Params{
+ HTTPClient: client,
+ }
+}
+
+/*
+VersionServiceMetadataV2Params contains all the parameters to send to the API endpoint
+
+ for the version service metadata v2 operation.
+
+ Typically these are written to a http.Request.
+*/
+type VersionServiceMetadataV2Params struct {
+
+ // Product.
+ Product string
+
+ timeout time.Duration
+ Context context.Context
+ HTTPClient *http.Client
+}
+
+// WithDefaults hydrates default values in the version service metadata v2 params (not the query body).
+//
+// All values with no default are reset to their zero value.
+func (o *VersionServiceMetadataV2Params) WithDefaults() *VersionServiceMetadataV2Params {
+ o.SetDefaults()
+ return o
+}
+
+// SetDefaults hydrates default values in the version service metadata v2 params (not the query body).
+//
+// All values with no default are reset to their zero value.
+func (o *VersionServiceMetadataV2Params) SetDefaults() {
+ // no default values defined for this parameter
+}
+
+// WithTimeout adds the timeout to the version service metadata v2 params
+func (o *VersionServiceMetadataV2Params) WithTimeout(timeout time.Duration) *VersionServiceMetadataV2Params {
+ o.SetTimeout(timeout)
+ return o
+}
+
+// SetTimeout adds the timeout to the version service metadata v2 params
+func (o *VersionServiceMetadataV2Params) SetTimeout(timeout time.Duration) {
+ o.timeout = timeout
+}
+
+// WithContext adds the context to the version service metadata v2 params
+func (o *VersionServiceMetadataV2Params) WithContext(ctx context.Context) *VersionServiceMetadataV2Params {
+ o.SetContext(ctx)
+ return o
+}
+
+// SetContext adds the context to the version service metadata v2 params
+func (o *VersionServiceMetadataV2Params) SetContext(ctx context.Context) {
+ o.Context = ctx
+}
+
+// WithHTTPClient adds the HTTPClient to the version service metadata v2 params
+func (o *VersionServiceMetadataV2Params) WithHTTPClient(client *http.Client) *VersionServiceMetadataV2Params {
+ o.SetHTTPClient(client)
+ return o
+}
+
+// SetHTTPClient adds the HTTPClient to the version service metadata v2 params
+func (o *VersionServiceMetadataV2Params) SetHTTPClient(client *http.Client) {
+ o.HTTPClient = client
+}
+
+// WithProduct adds the product to the version service metadata v2 params
+func (o *VersionServiceMetadataV2Params) WithProduct(product string) *VersionServiceMetadataV2Params {
+ o.SetProduct(product)
+ return o
+}
+
+// SetProduct adds the product to the version service metadata v2 params
+func (o *VersionServiceMetadataV2Params) SetProduct(product string) {
+ o.Product = product
+}
+
+// WriteToRequest writes these params to a swagger request
+func (o *VersionServiceMetadataV2Params) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
+
+ if err := r.SetTimeout(o.timeout); err != nil {
+ return err
+ }
+ var res []error
+
+ // path param product
+ if err := r.SetPathParam("product", o.Product); err != nil {
+ return err
+ }
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
diff --git a/version/client/version_service/version_service_metadata_v2_responses.go b/version/client/version_service/version_service_metadata_v2_responses.go
new file mode 100644
index 0000000000..d3ffa50167
--- /dev/null
+++ b/version/client/version_service/version_service_metadata_v2_responses.go
@@ -0,0 +1,187 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package version_service
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+
+ "github.com/go-openapi/runtime"
+ "github.com/go-openapi/strfmt"
+
+ "github.com/percona/percona-xtradb-cluster-operator/version/client/models"
+)
+
+// VersionServiceMetadataV2Reader is a Reader for the VersionServiceMetadataV2 structure.
+type VersionServiceMetadataV2Reader struct {
+ formats strfmt.Registry
+}
+
+// ReadResponse reads a server response into the received o.
+func (o *VersionServiceMetadataV2Reader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) {
+ switch response.Code() {
+ case 200:
+ result := NewVersionServiceMetadataV2OK()
+ if err := result.readResponse(response, consumer, o.formats); err != nil {
+ return nil, err
+ }
+ return result, nil
+ default:
+ result := NewVersionServiceMetadataV2Default(response.Code())
+ if err := result.readResponse(response, consumer, o.formats); err != nil {
+ return nil, err
+ }
+ if response.Code()/100 == 2 {
+ return result, nil
+ }
+ return nil, result
+ }
+}
+
+// NewVersionServiceMetadataV2OK creates a VersionServiceMetadataV2OK with default headers values
+func NewVersionServiceMetadataV2OK() *VersionServiceMetadataV2OK {
+ return &VersionServiceMetadataV2OK{}
+}
+
+/*
+VersionServiceMetadataV2OK describes a response with status code 200, with default header values.
+
+A successful response.
+*/
+type VersionServiceMetadataV2OK struct {
+ Payload *models.VersionMetadataV2Response
+}
+
+// IsSuccess returns true when this version service metadata v2 o k response has a 2xx status code
+func (o *VersionServiceMetadataV2OK) IsSuccess() bool {
+ return true
+}
+
+// IsRedirect returns true when this version service metadata v2 o k response has a 3xx status code
+func (o *VersionServiceMetadataV2OK) IsRedirect() bool {
+ return false
+}
+
+// IsClientError returns true when this version service metadata v2 o k response has a 4xx status code
+func (o *VersionServiceMetadataV2OK) IsClientError() bool {
+ return false
+}
+
+// IsServerError returns true when this version service metadata v2 o k response has a 5xx status code
+func (o *VersionServiceMetadataV2OK) IsServerError() bool {
+ return false
+}
+
+// IsCode returns true when this version service metadata v2 o k response a status code equal to that given
+func (o *VersionServiceMetadataV2OK) IsCode(code int) bool {
+ return code == 200
+}
+
+// Code gets the status code for the version service metadata v2 o k response
+func (o *VersionServiceMetadataV2OK) Code() int {
+ return 200
+}
+
+func (o *VersionServiceMetadataV2OK) Error() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /metadata/v2/{product}][%d] versionServiceMetadataV2OK %s", 200, payload)
+}
+
+func (o *VersionServiceMetadataV2OK) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /metadata/v2/{product}][%d] versionServiceMetadataV2OK %s", 200, payload)
+}
+
+func (o *VersionServiceMetadataV2OK) GetPayload() *models.VersionMetadataV2Response {
+ return o.Payload
+}
+
+func (o *VersionServiceMetadataV2OK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
+
+ o.Payload = new(models.VersionMetadataV2Response)
+
+ // response payload
+ if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
+ return err
+ }
+
+ return nil
+}
+
+// NewVersionServiceMetadataV2Default creates a VersionServiceMetadataV2Default with default headers values
+func NewVersionServiceMetadataV2Default(code int) *VersionServiceMetadataV2Default {
+ return &VersionServiceMetadataV2Default{
+ _statusCode: code,
+ }
+}
+
+/*
+VersionServiceMetadataV2Default describes a response with status code -1, with default header values.
+
+An unexpected error response.
+*/
+type VersionServiceMetadataV2Default struct {
+ _statusCode int
+
+ Payload *models.GooglerpcStatus
+}
+
+// IsSuccess returns true when this version service metadata v2 default response has a 2xx status code
+func (o *VersionServiceMetadataV2Default) IsSuccess() bool {
+ return o._statusCode/100 == 2
+}
+
+// IsRedirect returns true when this version service metadata v2 default response has a 3xx status code
+func (o *VersionServiceMetadataV2Default) IsRedirect() bool {
+ return o._statusCode/100 == 3
+}
+
+// IsClientError returns true when this version service metadata v2 default response has a 4xx status code
+func (o *VersionServiceMetadataV2Default) IsClientError() bool {
+ return o._statusCode/100 == 4
+}
+
+// IsServerError returns true when this version service metadata v2 default response has a 5xx status code
+func (o *VersionServiceMetadataV2Default) IsServerError() bool {
+ return o._statusCode/100 == 5
+}
+
+// IsCode returns true when this version service metadata v2 default response a status code equal to that given
+func (o *VersionServiceMetadataV2Default) IsCode(code int) bool {
+ return o._statusCode == code
+}
+
+// Code gets the status code for the version service metadata v2 default response
+func (o *VersionServiceMetadataV2Default) Code() int {
+ return o._statusCode
+}
+
+func (o *VersionServiceMetadataV2Default) Error() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /metadata/v2/{product}][%d] VersionService_MetadataV2 default %s", o._statusCode, payload)
+}
+
+func (o *VersionServiceMetadataV2Default) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /metadata/v2/{product}][%d] VersionService_MetadataV2 default %s", o._statusCode, payload)
+}
+
+func (o *VersionServiceMetadataV2Default) GetPayload() *models.GooglerpcStatus {
+ return o.Payload
+}
+
+func (o *VersionServiceMetadataV2Default) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
+
+ o.Payload = new(models.GooglerpcStatus)
+
+ // response payload
+ if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
+ return err
+ }
+
+ return nil
+}
diff --git a/version/client/version_service/version_service_operator_parameters.go b/version/client/version_service/version_service_operator_parameters.go
index 1da63ea38a..d8bb33a746 100644
--- a/version/client/version_service/version_service_operator_parameters.go
+++ b/version/client/version_service/version_service_operator_parameters.go
@@ -65,9 +65,15 @@ type VersionServiceOperatorParams struct {
// BackupVersion.
BackupVersion *string
- // ClusterWideEnabled.
+ // BackupsEnabled.
+ BackupsEnabled *bool
+
+ // ClusterSize.
//
- // Format: boolean
+ // Format: int32
+ ClusterSize *int32
+
+ // ClusterWideEnabled.
ClusterWideEnabled *bool
// CustomResourceUID.
@@ -76,14 +82,21 @@ type VersionServiceOperatorParams struct {
// DatabaseVersion.
DatabaseVersion *string
+ // Extensions.
+ Extensions *string
+
// HaproxyVersion.
HaproxyVersion *string
// HashicorpVaultEnabled.
- //
- // Format: boolean
HashicorpVaultEnabled *bool
+ // HelmDeployCr.
+ HelmDeployCr *bool
+
+ // HelmDeployOperator.
+ HelmDeployOperator *bool
+
// KubeVersion.
KubeVersion *string
@@ -96,9 +109,18 @@ type VersionServiceOperatorParams struct {
// OperatorVersion.
OperatorVersion string
+ // PhysicalBackupScheduled.
+ PhysicalBackupScheduled *bool
+
+ // PitrEnabled.
+ PitrEnabled *bool
+
// Platform.
Platform *string
+ // PmmEnabled.
+ PmmEnabled *bool
+
// PmmVersion.
PmmVersion *string
@@ -109,10 +131,14 @@ type VersionServiceOperatorParams struct {
ProxysqlVersion *string
// ShardingEnabled.
- //
- // Format: boolean
ShardingEnabled *bool
+ // SidecarsUsed.
+ SidecarsUsed *bool
+
+ // UserManagementEnabled.
+ UserManagementEnabled *bool
+
timeout time.Duration
Context context.Context
HTTPClient *http.Client
@@ -177,6 +203,28 @@ func (o *VersionServiceOperatorParams) SetBackupVersion(backupVersion *string) {
o.BackupVersion = backupVersion
}
+// WithBackupsEnabled adds the backupsEnabled to the version service operator params
+func (o *VersionServiceOperatorParams) WithBackupsEnabled(backupsEnabled *bool) *VersionServiceOperatorParams {
+ o.SetBackupsEnabled(backupsEnabled)
+ return o
+}
+
+// SetBackupsEnabled adds the backupsEnabled to the version service operator params
+func (o *VersionServiceOperatorParams) SetBackupsEnabled(backupsEnabled *bool) {
+ o.BackupsEnabled = backupsEnabled
+}
+
+// WithClusterSize adds the clusterSize to the version service operator params
+func (o *VersionServiceOperatorParams) WithClusterSize(clusterSize *int32) *VersionServiceOperatorParams {
+ o.SetClusterSize(clusterSize)
+ return o
+}
+
+// SetClusterSize adds the clusterSize to the version service operator params
+func (o *VersionServiceOperatorParams) SetClusterSize(clusterSize *int32) {
+ o.ClusterSize = clusterSize
+}
+
// WithClusterWideEnabled adds the clusterWideEnabled to the version service operator params
func (o *VersionServiceOperatorParams) WithClusterWideEnabled(clusterWideEnabled *bool) *VersionServiceOperatorParams {
o.SetClusterWideEnabled(clusterWideEnabled)
@@ -210,6 +258,17 @@ func (o *VersionServiceOperatorParams) SetDatabaseVersion(databaseVersion *strin
o.DatabaseVersion = databaseVersion
}
+// WithExtensions adds the extensions to the version service operator params
+func (o *VersionServiceOperatorParams) WithExtensions(extensions *string) *VersionServiceOperatorParams {
+ o.SetExtensions(extensions)
+ return o
+}
+
+// SetExtensions adds the extensions to the version service operator params
+func (o *VersionServiceOperatorParams) SetExtensions(extensions *string) {
+ o.Extensions = extensions
+}
+
// WithHaproxyVersion adds the haproxyVersion to the version service operator params
func (o *VersionServiceOperatorParams) WithHaproxyVersion(haproxyVersion *string) *VersionServiceOperatorParams {
o.SetHaproxyVersion(haproxyVersion)
@@ -232,6 +291,28 @@ func (o *VersionServiceOperatorParams) SetHashicorpVaultEnabled(hashicorpVaultEn
o.HashicorpVaultEnabled = hashicorpVaultEnabled
}
+// WithHelmDeployCr adds the helmDeployCr to the version service operator params
+func (o *VersionServiceOperatorParams) WithHelmDeployCr(helmDeployCr *bool) *VersionServiceOperatorParams {
+ o.SetHelmDeployCr(helmDeployCr)
+ return o
+}
+
+// SetHelmDeployCr adds the helmDeployCr to the version service operator params
+func (o *VersionServiceOperatorParams) SetHelmDeployCr(helmDeployCr *bool) {
+ o.HelmDeployCr = helmDeployCr
+}
+
+// WithHelmDeployOperator adds the helmDeployOperator to the version service operator params
+func (o *VersionServiceOperatorParams) WithHelmDeployOperator(helmDeployOperator *bool) *VersionServiceOperatorParams {
+ o.SetHelmDeployOperator(helmDeployOperator)
+ return o
+}
+
+// SetHelmDeployOperator adds the helmDeployOperator to the version service operator params
+func (o *VersionServiceOperatorParams) SetHelmDeployOperator(helmDeployOperator *bool) {
+ o.HelmDeployOperator = helmDeployOperator
+}
+
// WithKubeVersion adds the kubeVersion to the version service operator params
func (o *VersionServiceOperatorParams) WithKubeVersion(kubeVersion *string) *VersionServiceOperatorParams {
o.SetKubeVersion(kubeVersion)
@@ -276,6 +357,28 @@ func (o *VersionServiceOperatorParams) SetOperatorVersion(operatorVersion string
o.OperatorVersion = operatorVersion
}
+// WithPhysicalBackupScheduled adds the physicalBackupScheduled to the version service operator params
+func (o *VersionServiceOperatorParams) WithPhysicalBackupScheduled(physicalBackupScheduled *bool) *VersionServiceOperatorParams {
+ o.SetPhysicalBackupScheduled(physicalBackupScheduled)
+ return o
+}
+
+// SetPhysicalBackupScheduled adds the physicalBackupScheduled to the version service operator params
+func (o *VersionServiceOperatorParams) SetPhysicalBackupScheduled(physicalBackupScheduled *bool) {
+ o.PhysicalBackupScheduled = physicalBackupScheduled
+}
+
+// WithPitrEnabled adds the pitrEnabled to the version service operator params
+func (o *VersionServiceOperatorParams) WithPitrEnabled(pitrEnabled *bool) *VersionServiceOperatorParams {
+ o.SetPitrEnabled(pitrEnabled)
+ return o
+}
+
+// SetPitrEnabled adds the pitrEnabled to the version service operator params
+func (o *VersionServiceOperatorParams) SetPitrEnabled(pitrEnabled *bool) {
+ o.PitrEnabled = pitrEnabled
+}
+
// WithPlatform adds the platform to the version service operator params
func (o *VersionServiceOperatorParams) WithPlatform(platform *string) *VersionServiceOperatorParams {
o.SetPlatform(platform)
@@ -287,6 +390,17 @@ func (o *VersionServiceOperatorParams) SetPlatform(platform *string) {
o.Platform = platform
}
+// WithPmmEnabled adds the pmmEnabled to the version service operator params
+func (o *VersionServiceOperatorParams) WithPmmEnabled(pmmEnabled *bool) *VersionServiceOperatorParams {
+ o.SetPmmEnabled(pmmEnabled)
+ return o
+}
+
+// SetPmmEnabled adds the pmmEnabled to the version service operator params
+func (o *VersionServiceOperatorParams) SetPmmEnabled(pmmEnabled *bool) {
+ o.PmmEnabled = pmmEnabled
+}
+
// WithPmmVersion adds the pmmVersion to the version service operator params
func (o *VersionServiceOperatorParams) WithPmmVersion(pmmVersion *string) *VersionServiceOperatorParams {
o.SetPmmVersion(pmmVersion)
@@ -331,6 +445,28 @@ func (o *VersionServiceOperatorParams) SetShardingEnabled(shardingEnabled *bool)
o.ShardingEnabled = shardingEnabled
}
+// WithSidecarsUsed adds the sidecarsUsed to the version service operator params
+func (o *VersionServiceOperatorParams) WithSidecarsUsed(sidecarsUsed *bool) *VersionServiceOperatorParams {
+ o.SetSidecarsUsed(sidecarsUsed)
+ return o
+}
+
+// SetSidecarsUsed adds the sidecarsUsed to the version service operator params
+func (o *VersionServiceOperatorParams) SetSidecarsUsed(sidecarsUsed *bool) {
+ o.SidecarsUsed = sidecarsUsed
+}
+
+// WithUserManagementEnabled adds the userManagementEnabled to the version service operator params
+func (o *VersionServiceOperatorParams) WithUserManagementEnabled(userManagementEnabled *bool) *VersionServiceOperatorParams {
+ o.SetUserManagementEnabled(userManagementEnabled)
+ return o
+}
+
+// SetUserManagementEnabled adds the userManagementEnabled to the version service operator params
+func (o *VersionServiceOperatorParams) SetUserManagementEnabled(userManagementEnabled *bool) {
+ o.UserManagementEnabled = userManagementEnabled
+}
+
// WriteToRequest writes these params to a swagger request
func (o *VersionServiceOperatorParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
@@ -356,6 +492,40 @@ func (o *VersionServiceOperatorParams) WriteToRequest(r runtime.ClientRequest, r
}
}
+ if o.BackupsEnabled != nil {
+
+ // query param backupsEnabled
+ var qrBackupsEnabled bool
+
+ if o.BackupsEnabled != nil {
+ qrBackupsEnabled = *o.BackupsEnabled
+ }
+ qBackupsEnabled := swag.FormatBool(qrBackupsEnabled)
+ if qBackupsEnabled != "" {
+
+ if err := r.SetQueryParam("backupsEnabled", qBackupsEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.ClusterSize != nil {
+
+ // query param clusterSize
+ var qrClusterSize int32
+
+ if o.ClusterSize != nil {
+ qrClusterSize = *o.ClusterSize
+ }
+ qClusterSize := swag.FormatInt32(qrClusterSize)
+ if qClusterSize != "" {
+
+ if err := r.SetQueryParam("clusterSize", qClusterSize); err != nil {
+ return err
+ }
+ }
+ }
+
if o.ClusterWideEnabled != nil {
// query param clusterWideEnabled
@@ -407,6 +577,23 @@ func (o *VersionServiceOperatorParams) WriteToRequest(r runtime.ClientRequest, r
}
}
+ if o.Extensions != nil {
+
+ // query param extensions
+ var qrExtensions string
+
+ if o.Extensions != nil {
+ qrExtensions = *o.Extensions
+ }
+ qExtensions := qrExtensions
+ if qExtensions != "" {
+
+ if err := r.SetQueryParam("extensions", qExtensions); err != nil {
+ return err
+ }
+ }
+ }
+
if o.HaproxyVersion != nil {
// query param haproxyVersion
@@ -441,6 +628,40 @@ func (o *VersionServiceOperatorParams) WriteToRequest(r runtime.ClientRequest, r
}
}
+ if o.HelmDeployCr != nil {
+
+ // query param helmDeployCr
+ var qrHelmDeployCr bool
+
+ if o.HelmDeployCr != nil {
+ qrHelmDeployCr = *o.HelmDeployCr
+ }
+ qHelmDeployCr := swag.FormatBool(qrHelmDeployCr)
+ if qHelmDeployCr != "" {
+
+ if err := r.SetQueryParam("helmDeployCr", qHelmDeployCr); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.HelmDeployOperator != nil {
+
+ // query param helmDeployOperator
+ var qrHelmDeployOperator bool
+
+ if o.HelmDeployOperator != nil {
+ qrHelmDeployOperator = *o.HelmDeployOperator
+ }
+ qHelmDeployOperator := swag.FormatBool(qrHelmDeployOperator)
+ if qHelmDeployOperator != "" {
+
+ if err := r.SetQueryParam("helmDeployOperator", qHelmDeployOperator); err != nil {
+ return err
+ }
+ }
+ }
+
if o.KubeVersion != nil {
// query param kubeVersion
@@ -497,6 +718,40 @@ func (o *VersionServiceOperatorParams) WriteToRequest(r runtime.ClientRequest, r
return err
}
+ if o.PhysicalBackupScheduled != nil {
+
+ // query param physicalBackupScheduled
+ var qrPhysicalBackupScheduled bool
+
+ if o.PhysicalBackupScheduled != nil {
+ qrPhysicalBackupScheduled = *o.PhysicalBackupScheduled
+ }
+ qPhysicalBackupScheduled := swag.FormatBool(qrPhysicalBackupScheduled)
+ if qPhysicalBackupScheduled != "" {
+
+ if err := r.SetQueryParam("physicalBackupScheduled", qPhysicalBackupScheduled); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.PitrEnabled != nil {
+
+ // query param pitrEnabled
+ var qrPitrEnabled bool
+
+ if o.PitrEnabled != nil {
+ qrPitrEnabled = *o.PitrEnabled
+ }
+ qPitrEnabled := swag.FormatBool(qrPitrEnabled)
+ if qPitrEnabled != "" {
+
+ if err := r.SetQueryParam("pitrEnabled", qPitrEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
if o.Platform != nil {
// query param platform
@@ -514,6 +769,23 @@ func (o *VersionServiceOperatorParams) WriteToRequest(r runtime.ClientRequest, r
}
}
+ if o.PmmEnabled != nil {
+
+ // query param pmmEnabled
+ var qrPmmEnabled bool
+
+ if o.PmmEnabled != nil {
+ qrPmmEnabled = *o.PmmEnabled
+ }
+ qPmmEnabled := swag.FormatBool(qrPmmEnabled)
+ if qPmmEnabled != "" {
+
+ if err := r.SetQueryParam("pmmEnabled", qPmmEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
if o.PmmVersion != nil {
// query param pmmVersion
@@ -570,6 +842,40 @@ func (o *VersionServiceOperatorParams) WriteToRequest(r runtime.ClientRequest, r
}
}
+ if o.SidecarsUsed != nil {
+
+ // query param sidecarsUsed
+ var qrSidecarsUsed bool
+
+ if o.SidecarsUsed != nil {
+ qrSidecarsUsed = *o.SidecarsUsed
+ }
+ qSidecarsUsed := swag.FormatBool(qrSidecarsUsed)
+ if qSidecarsUsed != "" {
+
+ if err := r.SetQueryParam("sidecarsUsed", qSidecarsUsed); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.UserManagementEnabled != nil {
+
+ // query param userManagementEnabled
+ var qrUserManagementEnabled bool
+
+ if o.UserManagementEnabled != nil {
+ qrUserManagementEnabled = *o.UserManagementEnabled
+ }
+ qUserManagementEnabled := swag.FormatBool(qrUserManagementEnabled)
+ if qUserManagementEnabled != "" {
+
+ if err := r.SetQueryParam("userManagementEnabled", qUserManagementEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
diff --git a/version/client/version_service/version_service_operator_responses.go b/version/client/version_service/version_service_operator_responses.go
index 88f2a8dfcc..a4af7f3ebc 100644
--- a/version/client/version_service/version_service_operator_responses.go
+++ b/version/client/version_service/version_service_operator_responses.go
@@ -6,6 +6,7 @@ package version_service
// Editing this file might prove futile when you re-run the swagger generate command
import (
+ "encoding/json"
"fmt"
"io"
@@ -55,9 +56,46 @@ type VersionServiceOperatorOK struct {
Payload *models.VersionOperatorResponse
}
+// IsSuccess returns true when this version service operator o k response has a 2xx status code
+func (o *VersionServiceOperatorOK) IsSuccess() bool {
+ return true
+}
+
+// IsRedirect returns true when this version service operator o k response has a 3xx status code
+func (o *VersionServiceOperatorOK) IsRedirect() bool {
+ return false
+}
+
+// IsClientError returns true when this version service operator o k response has a 4xx status code
+func (o *VersionServiceOperatorOK) IsClientError() bool {
+ return false
+}
+
+// IsServerError returns true when this version service operator o k response has a 5xx status code
+func (o *VersionServiceOperatorOK) IsServerError() bool {
+ return false
+}
+
+// IsCode returns true when this version service operator o k response a status code equal to that given
+func (o *VersionServiceOperatorOK) IsCode(code int) bool {
+ return code == 200
+}
+
+// Code gets the status code for the version service operator o k response
+func (o *VersionServiceOperatorOK) Code() int {
+ return 200
+}
+
func (o *VersionServiceOperatorOK) Error() string {
- return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}][%d] versionServiceOperatorOK %+v", 200, o.Payload)
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}][%d] versionServiceOperatorOK %s", 200, payload)
+}
+
+func (o *VersionServiceOperatorOK) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}][%d] versionServiceOperatorOK %s", 200, payload)
}
+
func (o *VersionServiceOperatorOK) GetPayload() *models.VersionOperatorResponse {
return o.Payload
}
@@ -84,7 +122,7 @@ func NewVersionServiceOperatorDefault(code int) *VersionServiceOperatorDefault {
/*
VersionServiceOperatorDefault describes a response with status code -1, with default header values.
-An unexpected error response
+An unexpected error response.
*/
type VersionServiceOperatorDefault struct {
_statusCode int
@@ -92,14 +130,46 @@ type VersionServiceOperatorDefault struct {
Payload *models.GooglerpcStatus
}
+// IsSuccess returns true when this version service operator default response has a 2xx status code
+func (o *VersionServiceOperatorDefault) IsSuccess() bool {
+ return o._statusCode/100 == 2
+}
+
+// IsRedirect returns true when this version service operator default response has a 3xx status code
+func (o *VersionServiceOperatorDefault) IsRedirect() bool {
+ return o._statusCode/100 == 3
+}
+
+// IsClientError returns true when this version service operator default response has a 4xx status code
+func (o *VersionServiceOperatorDefault) IsClientError() bool {
+ return o._statusCode/100 == 4
+}
+
+// IsServerError returns true when this version service operator default response has a 5xx status code
+func (o *VersionServiceOperatorDefault) IsServerError() bool {
+ return o._statusCode/100 == 5
+}
+
+// IsCode returns true when this version service operator default response a status code equal to that given
+func (o *VersionServiceOperatorDefault) IsCode(code int) bool {
+ return o._statusCode == code
+}
+
// Code gets the status code for the version service operator default response
func (o *VersionServiceOperatorDefault) Code() int {
return o._statusCode
}
func (o *VersionServiceOperatorDefault) Error() string {
- return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}][%d] VersionService_Operator default %+v", o._statusCode, o.Payload)
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}][%d] VersionService_Operator default %s", o._statusCode, payload)
}
+
+func (o *VersionServiceOperatorDefault) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}/{operatorVersion}][%d] VersionService_Operator default %s", o._statusCode, payload)
+}
+
func (o *VersionServiceOperatorDefault) GetPayload() *models.GooglerpcStatus {
return o.Payload
}
diff --git a/version/client/version_service/version_service_product_parameters.go b/version/client/version_service/version_service_product_parameters.go
index cb82db85d1..22a03d3adc 100644
--- a/version/client/version_service/version_service_product_parameters.go
+++ b/version/client/version_service/version_service_product_parameters.go
@@ -65,9 +65,15 @@ type VersionServiceProductParams struct {
// BackupVersion.
BackupVersion *string
- // ClusterWideEnabled.
+ // BackupsEnabled.
+ BackupsEnabled *bool
+
+ // ClusterSize.
//
- // Format: boolean
+ // Format: int32
+ ClusterSize *int32
+
+ // ClusterWideEnabled.
ClusterWideEnabled *bool
// CustomResourceUID.
@@ -76,14 +82,21 @@ type VersionServiceProductParams struct {
// DatabaseVersion.
DatabaseVersion *string
+ // Extensions.
+ Extensions *string
+
// HaproxyVersion.
HaproxyVersion *string
// HashicorpVaultEnabled.
- //
- // Format: boolean
HashicorpVaultEnabled *bool
+ // HelmDeployCr.
+ HelmDeployCr *bool
+
+ // HelmDeployOperator.
+ HelmDeployOperator *bool
+
// KubeVersion.
KubeVersion *string
@@ -93,9 +106,18 @@ type VersionServiceProductParams struct {
// NamespaceUID.
NamespaceUID *string
+ // PhysicalBackupScheduled.
+ PhysicalBackupScheduled *bool
+
+ // PitrEnabled.
+ PitrEnabled *bool
+
// Platform.
Platform *string
+ // PmmEnabled.
+ PmmEnabled *bool
+
// PmmVersion.
PmmVersion *string
@@ -106,10 +128,14 @@ type VersionServiceProductParams struct {
ProxysqlVersion *string
// ShardingEnabled.
- //
- // Format: boolean
ShardingEnabled *bool
+ // SidecarsUsed.
+ SidecarsUsed *bool
+
+ // UserManagementEnabled.
+ UserManagementEnabled *bool
+
timeout time.Duration
Context context.Context
HTTPClient *http.Client
@@ -174,6 +200,28 @@ func (o *VersionServiceProductParams) SetBackupVersion(backupVersion *string) {
o.BackupVersion = backupVersion
}
+// WithBackupsEnabled adds the backupsEnabled to the version service product params
+func (o *VersionServiceProductParams) WithBackupsEnabled(backupsEnabled *bool) *VersionServiceProductParams {
+ o.SetBackupsEnabled(backupsEnabled)
+ return o
+}
+
+// SetBackupsEnabled adds the backupsEnabled to the version service product params
+func (o *VersionServiceProductParams) SetBackupsEnabled(backupsEnabled *bool) {
+ o.BackupsEnabled = backupsEnabled
+}
+
+// WithClusterSize adds the clusterSize to the version service product params
+func (o *VersionServiceProductParams) WithClusterSize(clusterSize *int32) *VersionServiceProductParams {
+ o.SetClusterSize(clusterSize)
+ return o
+}
+
+// SetClusterSize adds the clusterSize to the version service product params
+func (o *VersionServiceProductParams) SetClusterSize(clusterSize *int32) {
+ o.ClusterSize = clusterSize
+}
+
// WithClusterWideEnabled adds the clusterWideEnabled to the version service product params
func (o *VersionServiceProductParams) WithClusterWideEnabled(clusterWideEnabled *bool) *VersionServiceProductParams {
o.SetClusterWideEnabled(clusterWideEnabled)
@@ -207,6 +255,17 @@ func (o *VersionServiceProductParams) SetDatabaseVersion(databaseVersion *string
o.DatabaseVersion = databaseVersion
}
+// WithExtensions adds the extensions to the version service product params
+func (o *VersionServiceProductParams) WithExtensions(extensions *string) *VersionServiceProductParams {
+ o.SetExtensions(extensions)
+ return o
+}
+
+// SetExtensions adds the extensions to the version service product params
+func (o *VersionServiceProductParams) SetExtensions(extensions *string) {
+ o.Extensions = extensions
+}
+
// WithHaproxyVersion adds the haproxyVersion to the version service product params
func (o *VersionServiceProductParams) WithHaproxyVersion(haproxyVersion *string) *VersionServiceProductParams {
o.SetHaproxyVersion(haproxyVersion)
@@ -229,6 +288,28 @@ func (o *VersionServiceProductParams) SetHashicorpVaultEnabled(hashicorpVaultEna
o.HashicorpVaultEnabled = hashicorpVaultEnabled
}
+// WithHelmDeployCr adds the helmDeployCr to the version service product params
+func (o *VersionServiceProductParams) WithHelmDeployCr(helmDeployCr *bool) *VersionServiceProductParams {
+ o.SetHelmDeployCr(helmDeployCr)
+ return o
+}
+
+// SetHelmDeployCr adds the helmDeployCr to the version service product params
+func (o *VersionServiceProductParams) SetHelmDeployCr(helmDeployCr *bool) {
+ o.HelmDeployCr = helmDeployCr
+}
+
+// WithHelmDeployOperator adds the helmDeployOperator to the version service product params
+func (o *VersionServiceProductParams) WithHelmDeployOperator(helmDeployOperator *bool) *VersionServiceProductParams {
+ o.SetHelmDeployOperator(helmDeployOperator)
+ return o
+}
+
+// SetHelmDeployOperator adds the helmDeployOperator to the version service product params
+func (o *VersionServiceProductParams) SetHelmDeployOperator(helmDeployOperator *bool) {
+ o.HelmDeployOperator = helmDeployOperator
+}
+
// WithKubeVersion adds the kubeVersion to the version service product params
func (o *VersionServiceProductParams) WithKubeVersion(kubeVersion *string) *VersionServiceProductParams {
o.SetKubeVersion(kubeVersion)
@@ -262,6 +343,28 @@ func (o *VersionServiceProductParams) SetNamespaceUID(namespaceUID *string) {
o.NamespaceUID = namespaceUID
}
+// WithPhysicalBackupScheduled adds the physicalBackupScheduled to the version service product params
+func (o *VersionServiceProductParams) WithPhysicalBackupScheduled(physicalBackupScheduled *bool) *VersionServiceProductParams {
+ o.SetPhysicalBackupScheduled(physicalBackupScheduled)
+ return o
+}
+
+// SetPhysicalBackupScheduled adds the physicalBackupScheduled to the version service product params
+func (o *VersionServiceProductParams) SetPhysicalBackupScheduled(physicalBackupScheduled *bool) {
+ o.PhysicalBackupScheduled = physicalBackupScheduled
+}
+
+// WithPitrEnabled adds the pitrEnabled to the version service product params
+func (o *VersionServiceProductParams) WithPitrEnabled(pitrEnabled *bool) *VersionServiceProductParams {
+ o.SetPitrEnabled(pitrEnabled)
+ return o
+}
+
+// SetPitrEnabled adds the pitrEnabled to the version service product params
+func (o *VersionServiceProductParams) SetPitrEnabled(pitrEnabled *bool) {
+ o.PitrEnabled = pitrEnabled
+}
+
// WithPlatform adds the platform to the version service product params
func (o *VersionServiceProductParams) WithPlatform(platform *string) *VersionServiceProductParams {
o.SetPlatform(platform)
@@ -273,6 +376,17 @@ func (o *VersionServiceProductParams) SetPlatform(platform *string) {
o.Platform = platform
}
+// WithPmmEnabled adds the pmmEnabled to the version service product params
+func (o *VersionServiceProductParams) WithPmmEnabled(pmmEnabled *bool) *VersionServiceProductParams {
+ o.SetPmmEnabled(pmmEnabled)
+ return o
+}
+
+// SetPmmEnabled adds the pmmEnabled to the version service product params
+func (o *VersionServiceProductParams) SetPmmEnabled(pmmEnabled *bool) {
+ o.PmmEnabled = pmmEnabled
+}
+
// WithPmmVersion adds the pmmVersion to the version service product params
func (o *VersionServiceProductParams) WithPmmVersion(pmmVersion *string) *VersionServiceProductParams {
o.SetPmmVersion(pmmVersion)
@@ -317,6 +431,28 @@ func (o *VersionServiceProductParams) SetShardingEnabled(shardingEnabled *bool)
o.ShardingEnabled = shardingEnabled
}
+// WithSidecarsUsed adds the sidecarsUsed to the version service product params
+func (o *VersionServiceProductParams) WithSidecarsUsed(sidecarsUsed *bool) *VersionServiceProductParams {
+ o.SetSidecarsUsed(sidecarsUsed)
+ return o
+}
+
+// SetSidecarsUsed adds the sidecarsUsed to the version service product params
+func (o *VersionServiceProductParams) SetSidecarsUsed(sidecarsUsed *bool) {
+ o.SidecarsUsed = sidecarsUsed
+}
+
+// WithUserManagementEnabled adds the userManagementEnabled to the version service product params
+func (o *VersionServiceProductParams) WithUserManagementEnabled(userManagementEnabled *bool) *VersionServiceProductParams {
+ o.SetUserManagementEnabled(userManagementEnabled)
+ return o
+}
+
+// SetUserManagementEnabled adds the userManagementEnabled to the version service product params
+func (o *VersionServiceProductParams) SetUserManagementEnabled(userManagementEnabled *bool) {
+ o.UserManagementEnabled = userManagementEnabled
+}
+
// WriteToRequest writes these params to a swagger request
func (o *VersionServiceProductParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
@@ -342,6 +478,40 @@ func (o *VersionServiceProductParams) WriteToRequest(r runtime.ClientRequest, re
}
}
+ if o.BackupsEnabled != nil {
+
+ // query param backupsEnabled
+ var qrBackupsEnabled bool
+
+ if o.BackupsEnabled != nil {
+ qrBackupsEnabled = *o.BackupsEnabled
+ }
+ qBackupsEnabled := swag.FormatBool(qrBackupsEnabled)
+ if qBackupsEnabled != "" {
+
+ if err := r.SetQueryParam("backupsEnabled", qBackupsEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.ClusterSize != nil {
+
+ // query param clusterSize
+ var qrClusterSize int32
+
+ if o.ClusterSize != nil {
+ qrClusterSize = *o.ClusterSize
+ }
+ qClusterSize := swag.FormatInt32(qrClusterSize)
+ if qClusterSize != "" {
+
+ if err := r.SetQueryParam("clusterSize", qClusterSize); err != nil {
+ return err
+ }
+ }
+ }
+
if o.ClusterWideEnabled != nil {
// query param clusterWideEnabled
@@ -393,6 +563,23 @@ func (o *VersionServiceProductParams) WriteToRequest(r runtime.ClientRequest, re
}
}
+ if o.Extensions != nil {
+
+ // query param extensions
+ var qrExtensions string
+
+ if o.Extensions != nil {
+ qrExtensions = *o.Extensions
+ }
+ qExtensions := qrExtensions
+ if qExtensions != "" {
+
+ if err := r.SetQueryParam("extensions", qExtensions); err != nil {
+ return err
+ }
+ }
+ }
+
if o.HaproxyVersion != nil {
// query param haproxyVersion
@@ -427,6 +614,40 @@ func (o *VersionServiceProductParams) WriteToRequest(r runtime.ClientRequest, re
}
}
+ if o.HelmDeployCr != nil {
+
+ // query param helmDeployCr
+ var qrHelmDeployCr bool
+
+ if o.HelmDeployCr != nil {
+ qrHelmDeployCr = *o.HelmDeployCr
+ }
+ qHelmDeployCr := swag.FormatBool(qrHelmDeployCr)
+ if qHelmDeployCr != "" {
+
+ if err := r.SetQueryParam("helmDeployCr", qHelmDeployCr); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.HelmDeployOperator != nil {
+
+ // query param helmDeployOperator
+ var qrHelmDeployOperator bool
+
+ if o.HelmDeployOperator != nil {
+ qrHelmDeployOperator = *o.HelmDeployOperator
+ }
+ qHelmDeployOperator := swag.FormatBool(qrHelmDeployOperator)
+ if qHelmDeployOperator != "" {
+
+ if err := r.SetQueryParam("helmDeployOperator", qHelmDeployOperator); err != nil {
+ return err
+ }
+ }
+ }
+
if o.KubeVersion != nil {
// query param kubeVersion
@@ -478,6 +699,40 @@ func (o *VersionServiceProductParams) WriteToRequest(r runtime.ClientRequest, re
}
}
+ if o.PhysicalBackupScheduled != nil {
+
+ // query param physicalBackupScheduled
+ var qrPhysicalBackupScheduled bool
+
+ if o.PhysicalBackupScheduled != nil {
+ qrPhysicalBackupScheduled = *o.PhysicalBackupScheduled
+ }
+ qPhysicalBackupScheduled := swag.FormatBool(qrPhysicalBackupScheduled)
+ if qPhysicalBackupScheduled != "" {
+
+ if err := r.SetQueryParam("physicalBackupScheduled", qPhysicalBackupScheduled); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.PitrEnabled != nil {
+
+ // query param pitrEnabled
+ var qrPitrEnabled bool
+
+ if o.PitrEnabled != nil {
+ qrPitrEnabled = *o.PitrEnabled
+ }
+ qPitrEnabled := swag.FormatBool(qrPitrEnabled)
+ if qPitrEnabled != "" {
+
+ if err := r.SetQueryParam("pitrEnabled", qPitrEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
if o.Platform != nil {
// query param platform
@@ -495,6 +750,23 @@ func (o *VersionServiceProductParams) WriteToRequest(r runtime.ClientRequest, re
}
}
+ if o.PmmEnabled != nil {
+
+ // query param pmmEnabled
+ var qrPmmEnabled bool
+
+ if o.PmmEnabled != nil {
+ qrPmmEnabled = *o.PmmEnabled
+ }
+ qPmmEnabled := swag.FormatBool(qrPmmEnabled)
+ if qPmmEnabled != "" {
+
+ if err := r.SetQueryParam("pmmEnabled", qPmmEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
if o.PmmVersion != nil {
// query param pmmVersion
@@ -551,6 +823,40 @@ func (o *VersionServiceProductParams) WriteToRequest(r runtime.ClientRequest, re
}
}
+ if o.SidecarsUsed != nil {
+
+ // query param sidecarsUsed
+ var qrSidecarsUsed bool
+
+ if o.SidecarsUsed != nil {
+ qrSidecarsUsed = *o.SidecarsUsed
+ }
+ qSidecarsUsed := swag.FormatBool(qrSidecarsUsed)
+ if qSidecarsUsed != "" {
+
+ if err := r.SetQueryParam("sidecarsUsed", qSidecarsUsed); err != nil {
+ return err
+ }
+ }
+ }
+
+ if o.UserManagementEnabled != nil {
+
+ // query param userManagementEnabled
+ var qrUserManagementEnabled bool
+
+ if o.UserManagementEnabled != nil {
+ qrUserManagementEnabled = *o.UserManagementEnabled
+ }
+ qUserManagementEnabled := swag.FormatBool(qrUserManagementEnabled)
+ if qUserManagementEnabled != "" {
+
+ if err := r.SetQueryParam("userManagementEnabled", qUserManagementEnabled); err != nil {
+ return err
+ }
+ }
+ }
+
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
diff --git a/version/client/version_service/version_service_product_responses.go b/version/client/version_service/version_service_product_responses.go
index 74b9e8e4f5..f1c031ae08 100644
--- a/version/client/version_service/version_service_product_responses.go
+++ b/version/client/version_service/version_service_product_responses.go
@@ -6,6 +6,7 @@ package version_service
// Editing this file might prove futile when you re-run the swagger generate command
import (
+ "encoding/json"
"fmt"
"io"
@@ -55,9 +56,46 @@ type VersionServiceProductOK struct {
Payload *models.VersionProductResponse
}
+// IsSuccess returns true when this version service product o k response has a 2xx status code
+func (o *VersionServiceProductOK) IsSuccess() bool {
+ return true
+}
+
+// IsRedirect returns true when this version service product o k response has a 3xx status code
+func (o *VersionServiceProductOK) IsRedirect() bool {
+ return false
+}
+
+// IsClientError returns true when this version service product o k response has a 4xx status code
+func (o *VersionServiceProductOK) IsClientError() bool {
+ return false
+}
+
+// IsServerError returns true when this version service product o k response has a 5xx status code
+func (o *VersionServiceProductOK) IsServerError() bool {
+ return false
+}
+
+// IsCode returns true when this version service product o k response a status code equal to that given
+func (o *VersionServiceProductOK) IsCode(code int) bool {
+ return code == 200
+}
+
+// Code gets the status code for the version service product o k response
+func (o *VersionServiceProductOK) Code() int {
+ return 200
+}
+
func (o *VersionServiceProductOK) Error() string {
- return fmt.Sprintf("[GET /versions/v1/{product}][%d] versionServiceProductOK %+v", 200, o.Payload)
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}][%d] versionServiceProductOK %s", 200, payload)
+}
+
+func (o *VersionServiceProductOK) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}][%d] versionServiceProductOK %s", 200, payload)
}
+
func (o *VersionServiceProductOK) GetPayload() *models.VersionProductResponse {
return o.Payload
}
@@ -84,7 +122,7 @@ func NewVersionServiceProductDefault(code int) *VersionServiceProductDefault {
/*
VersionServiceProductDefault describes a response with status code -1, with default header values.
-An unexpected error response
+An unexpected error response.
*/
type VersionServiceProductDefault struct {
_statusCode int
@@ -92,14 +130,46 @@ type VersionServiceProductDefault struct {
Payload *models.GooglerpcStatus
}
+// IsSuccess returns true when this version service product default response has a 2xx status code
+func (o *VersionServiceProductDefault) IsSuccess() bool {
+ return o._statusCode/100 == 2
+}
+
+// IsRedirect returns true when this version service product default response has a 3xx status code
+func (o *VersionServiceProductDefault) IsRedirect() bool {
+ return o._statusCode/100 == 3
+}
+
+// IsClientError returns true when this version service product default response has a 4xx status code
+func (o *VersionServiceProductDefault) IsClientError() bool {
+ return o._statusCode/100 == 4
+}
+
+// IsServerError returns true when this version service product default response has a 5xx status code
+func (o *VersionServiceProductDefault) IsServerError() bool {
+ return o._statusCode/100 == 5
+}
+
+// IsCode returns true when this version service product default response a status code equal to that given
+func (o *VersionServiceProductDefault) IsCode(code int) bool {
+ return o._statusCode == code
+}
+
// Code gets the status code for the version service product default response
func (o *VersionServiceProductDefault) Code() int {
return o._statusCode
}
func (o *VersionServiceProductDefault) Error() string {
- return fmt.Sprintf("[GET /versions/v1/{product}][%d] VersionService_Product default %+v", o._statusCode, o.Payload)
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}][%d] VersionService_Product default %s", o._statusCode, payload)
}
+
+func (o *VersionServiceProductDefault) String() string {
+ payload, _ := json.Marshal(o.Payload)
+ return fmt.Sprintf("[GET /versions/v1/{product}][%d] VersionService_Product default %s", o._statusCode, payload)
+}
+
func (o *VersionServiceProductDefault) GetPayload() *models.GooglerpcStatus {
return o.Payload
}
diff --git a/version/version.go b/version/version.go
index 3e5b1d8345..edc8424e7e 100644
--- a/version/version.go
+++ b/version/version.go
@@ -1,5 +1,5 @@
package version
var (
- Version = "1.16.0"
+ Version = "1.17.0"
)