diff --git a/README.md b/README.md index a49485ab3..1856c4751 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ See the [Contribution Guide](CONTRIBUTING.md) on how you can contribute. ## 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). +We have a public roadmap which can be found [here](https://github.com/orgs/percona/projects/10/views/6). Please feel free to contribute and propose new features by following the roadmap [guidelines](https://github.com/percona/roadmap). ## Submitting Bug Reports diff --git a/e2e-tests/tests/builtin-extensions/06-enable-pgstatmonitor.yaml b/e2e-tests/tests/builtin-extensions/06-enable-pgstatmonitor.yaml index e73f0b8e2..f5fc2e956 100644 --- a/e2e-tests/tests/builtin-extensions/06-enable-pgstatmonitor.yaml +++ b/e2e-tests/tests/builtin-extensions/06-enable-pgstatmonitor.yaml @@ -1,19 +1,38 @@ -apiVersion: pgv2.percona.com/v2 -kind: PerconaPGCluster -metadata: - name: builtin-extensions -spec: - patroni: - dynamicConfiguration: - postgresql: - parameters: - pgaudit.log: 'ddl,write,role' - pgaudit.log_level: 'warning' - logging_collector: 'off' - extensions: - builtin: - pg_stat_monitor: true - pg_stat_statements: false # you can't enable both pg_stat_statements and pg_stat_monitor - pg_audit: true - pgvector: true - pg_repack: true +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: |- + set -o errexit + set -o xtrace + + # community images do not ship pg_stat_monitor; keep the patch so the + # cluster generation still increments and 06-assert.yaml passes. + PG_STAT_MONITOR="true" + if [[ "${PG_DISTRIBUTION}" == "community" ]]; then + PG_STAT_MONITOR="false" + fi + + kubectl patch -n "${NAMESPACE}" perconapgcluster/builtin-extensions --type=merge -p "{ + \"spec\": { + \"patroni\": { + \"dynamicConfiguration\": { + \"postgresql\": { + \"parameters\": { + \"pgaudit.log\": \"ddl,write,role\", + \"pgaudit.log_level\": \"warning\", + \"logging_collector\": \"off\" + } + } + } + }, + \"extensions\": { + \"builtin\": { + \"pg_stat_monitor\": ${PG_STAT_MONITOR}, + \"pg_stat_statements\": false, + \"pg_audit\": true, + \"pgvector\": true, + \"pg_repack\": true + } + } + } + }" diff --git a/e2e-tests/tests/builtin-extensions/07-assert.yaml b/e2e-tests/tests/builtin-extensions/07-assert.yaml index 6c711a033..1d6ba2e61 100644 --- a/e2e-tests/tests/builtin-extensions/07-assert.yaml +++ b/e2e-tests/tests/builtin-extensions/07-assert.yaml @@ -1,15 +1,21 @@ apiVersion: kuttl.dev/v1beta1 kind: TestAssert timeout: 30 ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: 07-check-extensions -data: - data: |2- - pg_repack - pg_stat_monitor - pgaudit - plpgsql - vector +commands: + - script: |- + data=$(kubectl get configmap -n "${NAMESPACE}" 07-check-extensions \ + -o jsonpath='{.data.data}') + + for ext in pg_repack pgaudit plpgsql vector; do + echo "${data}" | grep -q "${ext}" || { + echo "ERROR: '${ext}' missing from extensions. Got: ${data}" + exit 1 + } + done + + if [[ "${PG_DISTRIBUTION}" != "community" ]]; then + echo "${data}" | grep -q "pg_stat_monitor" || { + echo "ERROR: 'pg_stat_monitor' missing from extensions. Got: ${data}" + exit 1 + } + fi diff --git a/e2e-tests/tests/builtin-extensions/08-check-pgstatmonitor.yaml b/e2e-tests/tests/builtin-extensions/08-check-pgstatmonitor.yaml index 1eaa19393..552f43e2d 100644 --- a/e2e-tests/tests/builtin-extensions/08-check-pgstatmonitor.yaml +++ b/e2e-tests/tests/builtin-extensions/08-check-pgstatmonitor.yaml @@ -5,6 +5,11 @@ commands: set -o errexit set -o xtrace + if [[ "${PG_DISTRIBUTION}" == "community" ]]; then + echo "Skipping pg_stat_monitor check: not available in community images" + exit 0 + fi + source ../../functions sleep 30 @@ -15,4 +20,3 @@ commands: "postgres:$(get_psql_user_pass builtin-extensions-pguser-postgres)@$(get_psql_user_host builtin-extensions-pguser-postgres)/postgres" timeout: 360 - diff --git a/e2e-tests/tests/monitoring-pmm3/07-enable-pgstatmonitor-query-source.yaml b/e2e-tests/tests/monitoring-pmm3/07-enable-pgstatmonitor-query-source.yaml index 7b7efff4b..b9d6af8bb 100644 --- a/e2e-tests/tests/monitoring-pmm3/07-enable-pgstatmonitor-query-source.yaml +++ b/e2e-tests/tests/monitoring-pmm3/07-enable-pgstatmonitor-query-source.yaml @@ -5,6 +5,11 @@ commands: set -o errexit set -o xtrace + if [[ "${PG_DISTRIBUTION}" == "community" ]]; then + echo "Skipping pg_stat_monitor query-source test: not available in community images" + exit 0 + fi + source ../../functions kubectl -n ${NAMESPACE} patch perconapgcluster/monitoring-pmm3 --type=merge -p '{ diff --git a/e2e-tests/tests/monitoring/07-enable-pgstatmonitor-query-source.yaml b/e2e-tests/tests/monitoring/07-enable-pgstatmonitor-query-source.yaml index 061bdc3d5..e49742f59 100644 --- a/e2e-tests/tests/monitoring/07-enable-pgstatmonitor-query-source.yaml +++ b/e2e-tests/tests/monitoring/07-enable-pgstatmonitor-query-source.yaml @@ -5,6 +5,11 @@ commands: set -o errexit set -o xtrace + if [[ "${PG_DISTRIBUTION}" == "community" ]]; then + echo "Skipping pg_stat_monitor query-source test: not available in community images" + exit 0 + fi + source ../../functions kubectl -n ${NAMESPACE} patch perconapgcluster/monitoring --type=merge -p '{ diff --git a/e2e-tests/vars.sh b/e2e-tests/vars.sh index 9bc915644..b3a1d6c44 100755 --- a/e2e-tests/vars.sh +++ b/e2e-tests/vars.sh @@ -32,16 +32,25 @@ fi export IMAGE_BASE=${IMAGE_BASE:-"perconalab/percona-postgresql-operator"} export IMAGE=${IMAGE:-"${IMAGE_BASE}:${VERSION}"} if [[ ! $PG_VER && $IMAGE_POSTGRESQL ]]; then - pg_version_value=$(echo "$IMAGE_POSTGRESQL" | sed -E 's/.*:(.*ppg)?([0-9]+).*/\2/') + pg_version_value=$(echo "$IMAGE_POSTGRESQL" | sed -E 's/.*-(ppg|postgres)([0-9]+).*/\2/') export PG_VER="${pg_version_value}" else export PG_VER="${PG_VER:-18}" fi -export IMAGE_PGBOUNCER=${IMAGE_PGBOUNCER:-"${IMAGE_BASE}:main-pgbouncer$PG_VER"} -export IMAGE_POSTGRESQL=${IMAGE_POSTGRESQL:-"${IMAGE_BASE}:main-ppg$PG_VER-postgres"} -export IMAGE_BACKREST=${IMAGE_BACKREST:-"${IMAGE_BASE}:main-pgbackrest$PG_VER"} -export IMAGE_UPGRADE=${IMAGE_UPGRADE:-"${IMAGE_BASE}:main-upgrade"} +export PG_DISTRIBUTION="${PG_DISTRIBUTION:-}" + +if [[ $PG_DISTRIBUTION == "community" ]]; then + export IMAGE_PGBOUNCER=${IMAGE_PGBOUNCER:-"${IMAGE_BASE}:main-pgbouncer-community"} + export IMAGE_POSTGRESQL=${IMAGE_POSTGRESQL:-"${IMAGE_BASE}:main-postgres${PG_VER}-community"} + export IMAGE_BACKREST=${IMAGE_BACKREST:-"${IMAGE_BASE}:main-pgbackrest-community"} + export IMAGE_UPGRADE=${IMAGE_UPGRADE:-"${IMAGE_BASE}:main-upgrade-community"} +else + export IMAGE_PGBOUNCER=${IMAGE_PGBOUNCER:-"${IMAGE_BASE}:main-pgbouncer$PG_VER"} + export IMAGE_POSTGRESQL=${IMAGE_POSTGRESQL:-"${IMAGE_BASE}:main-ppg$PG_VER-postgres"} + export IMAGE_BACKREST=${IMAGE_BACKREST:-"${IMAGE_BASE}:main-pgbackrest$PG_VER"} + export IMAGE_UPGRADE=${IMAGE_UPGRADE:-"${IMAGE_BASE}:main-upgrade"} +fi export BUCKET=${BUCKET:-"pg-operator-testing"} export PMM_SERVER_VERSION=${PMM_SERVER_VERSION:-"9.9.9"} export IMAGE_PMM_CLIENT=${IMAGE_PMM_CLIENT:-"perconalab/pmm-client:dev-latest"}