Log: /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/logs/custom-users-roles.log Warning: version difference between client (1.35) and server (1.32) exceeds the supported minor version skew of +/-1 Warning: version difference between client (1.35) and server (1.32) exceeds the supported minor version skew of +/-1 Warning: version difference between client (1.35) and server (1.32) exceeds the supported minor version skew of +/-1 + psmdb=some-name + cluster=some-name-rs0 + create_infra custom-users-roles-2071 + local ns=custom-users-roles-2071 + [[ 1 == 1 ]] + delete_crd + desc 'get and delete old CRDs and RBAC' + set +o xtrace ----------------------------------------------------------------------------------- get and delete old CRDs and RBAC ----------------------------------------------------------------------------------- + kubectl_bin delete -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/crd.yaml --ignore-not-found --wait=false ++ mktemp + local LAST_OUT=/tmp/tmp.MCmqi5L7Wh ++ mktemp + local LAST_ERR=/tmp/tmp.ReRnnCfSRy + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl delete -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/crd.yaml --ignore-not-found --wait=false + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.MCmqi5L7Wh customresourcedefinition.apiextensions.k8s.io "perconaservermongodbbackups.psmdb.percona.com" deleted customresourcedefinition.apiextensions.k8s.io "perconaservermongodbrestores.psmdb.percona.com" deleted customresourcedefinition.apiextensions.k8s.io "perconaservermongodbs.psmdb.percona.com" deleted + cat /tmp/tmp.ReRnnCfSRy + rm /tmp/tmp.MCmqi5L7Wh /tmp/tmp.ReRnnCfSRy + return 0 ++ yq eval .metadata.name /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/crd.yaml ++ grep -v '\-\-\-' grep: warning: stray \ before - grep: warning: stray \ before - + for crd_name in $(yq eval '.metadata.name' "${src_dir}/deploy/crd.yaml" | grep -v '\-\-\-') + kubectl get perconaservermongodbbackups.psmdb.percona.com --all-namespaces -o wide + grep -v NAMESPACE + xargs -L 1 sh -xc 'kubectl patch perconaservermongodbbackups.psmdb.percona.com -n $0 $1 --type=merge -p "{\"metadata\":{\"finalizers\":[]}}"' error: the server doesn't have a resource type "perconaservermongodbbackups" + kubectl patch perconaservermongodbbackups.psmdb.percona.com -n sh --type=merge -p '{"metadata":{"finalizers":[]}}' error: the server doesn't have a resource type "perconaservermongodbbackups" + : + kubectl_bin wait --for=delete crd perconaservermongodbbackups.psmdb.percona.com ++ mktemp + local LAST_OUT=/tmp/tmp.3xS9OuryoD ++ mktemp + local LAST_ERR=/tmp/tmp.12EWvLrtem + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl wait --for=delete crd perconaservermongodbbackups.psmdb.percona.com + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.3xS9OuryoD + cat /tmp/tmp.12EWvLrtem + rm /tmp/tmp.3xS9OuryoD /tmp/tmp.12EWvLrtem + return 0 + for crd_name in $(yq eval '.metadata.name' "${src_dir}/deploy/crd.yaml" | grep -v '\-\-\-') + kubectl get perconaservermongodbrestores.psmdb.percona.com --all-namespaces -o wide + grep -v NAMESPACE + xargs -L 1 sh -xc 'kubectl patch perconaservermongodbrestores.psmdb.percona.com -n $0 $1 --type=merge -p "{\"metadata\":{\"finalizers\":[]}}"' error: the server doesn't have a resource type "perconaservermongodbrestores" + kubectl patch perconaservermongodbrestores.psmdb.percona.com -n sh --type=merge -p '{"metadata":{"finalizers":[]}}' error: the server doesn't have a resource type "perconaservermongodbrestores" + : + kubectl_bin wait --for=delete crd perconaservermongodbrestores.psmdb.percona.com ++ mktemp + local LAST_OUT=/tmp/tmp.NaI5Zij64Q ++ mktemp + local LAST_ERR=/tmp/tmp.lv91I3Drdk + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl wait --for=delete crd perconaservermongodbrestores.psmdb.percona.com + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.NaI5Zij64Q + cat /tmp/tmp.lv91I3Drdk + rm /tmp/tmp.NaI5Zij64Q /tmp/tmp.lv91I3Drdk + return 0 + for crd_name in $(yq eval '.metadata.name' "${src_dir}/deploy/crd.yaml" | grep -v '\-\-\-') + kubectl get perconaservermongodbs.psmdb.percona.com --all-namespaces -o wide + grep -v NAMESPACE + xargs -L 1 sh -xc 'kubectl patch perconaservermongodbs.psmdb.percona.com -n $0 $1 --type=merge -p "{\"metadata\":{\"finalizers\":[]}}"' error: the server doesn't have a resource type "perconaservermongodbs" + kubectl patch perconaservermongodbs.psmdb.percona.com -n sh --type=merge -p '{"metadata":{"finalizers":[]}}' error: the server doesn't have a resource type "perconaservermongodbs" + : + kubectl_bin wait --for=delete crd perconaservermongodbs.psmdb.percona.com ++ mktemp + local LAST_OUT=/tmp/tmp.MnmM4J7cJn ++ mktemp + local LAST_ERR=/tmp/tmp.RePkPip7tG + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl wait --for=delete crd perconaservermongodbs.psmdb.percona.com + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.MnmM4J7cJn + cat /tmp/tmp.RePkPip7tG + rm /tmp/tmp.MnmM4J7cJn /tmp/tmp.RePkPip7tG + return 0 + local rbac_yaml=rbac.yaml + '[' -n psmdb-operator ']' + rbac_yaml=cw-rbac.yaml + kubectl_bin delete -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/cw-rbac.yaml --ignore-not-found ++ mktemp + local LAST_OUT=/tmp/tmp.LxFMOfvZiH ++ mktemp + local LAST_ERR=/tmp/tmp.6UMuTNjsNz + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl delete -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/cw-rbac.yaml --ignore-not-found + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.LxFMOfvZiH clusterrole.rbac.authorization.k8s.io "percona-server-mongodb-operator" deleted clusterrolebinding.rbac.authorization.k8s.io "service-account-percona-server-mongodb-operator" deleted + cat /tmp/tmp.6UMuTNjsNz + rm /tmp/tmp.LxFMOfvZiH /tmp/tmp.6UMuTNjsNz + return 0 + check_crd_for_deletion PR-2221-448d41c2 + local git_tag=PR-2221-448d41c2 ++ curl -s https://raw.githubusercontent.com/percona/percona-server-mongodb-operator/PR-2221-448d41c2/deploy/crd.yaml ++ yq eval .metadata.name ++ /usr/sbin/sed s/---//g ++ /usr/sbin/sed ':a;N;$!ba;s/\n/ /g' + for crd_name in $(curl -s https://raw.githubusercontent.com/percona/percona-server-mongodb-operator/${git_tag}/deploy/crd.yaml | yq eval '.metadata.name' | $sed 's/---//g' | $sed ':a;N;$!ba;s/\n/ /g') ++ kubectl_bin get crd/null -o 'jsonpath={.status.conditions[-1].type}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.TSzFS7ksmC +++ mktemp ++ local LAST_ERR=/tmp/tmp.8Ph4kxubu5 ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get crd/null -o 'jsonpath={.status.conditions[-1].type}' ++ exit_status=1 ++ set -e ++ '[' 1 '!=' 0 -a -n 1 ']' ++ cat /tmp/tmp.TSzFS7ksmC ++ cat /tmp/tmp.8Ph4kxubu5 Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "null" not found ++ sleep 0 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get crd/null -o 'jsonpath={.status.conditions[-1].type}' ++ exit_status=1 ++ set -e ++ '[' 1 '!=' 0 -a -n 1 ']' ++ cat /tmp/tmp.TSzFS7ksmC ++ cat /tmp/tmp.8Ph4kxubu5 Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "null" not found ++ sleep 4 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get crd/null -o 'jsonpath={.status.conditions[-1].type}' ++ exit_status=1 ++ set -e ++ '[' 1 '!=' 0 -a -n 1 ']' ++ cat /tmp/tmp.TSzFS7ksmC ++ cat /tmp/tmp.8Ph4kxubu5 Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "null" not found ++ sleep 8 ++ cat /tmp/tmp.TSzFS7ksmC ++ cat /tmp/tmp.8Ph4kxubu5 Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "null" not found ++ rm /tmp/tmp.TSzFS7ksmC /tmp/tmp.8Ph4kxubu5 ++ return 1 + [[ '' == \T\e\r\m\i\n\a\t\i\n\g ]] + '[' -n psmdb-operator ']' + create_namespace psmdb-operator + local namespace=psmdb-operator + local skip_clean_namespace= + [[ 1 == 1 ]] + [[ -z '' ]] + destroy_chaos_mesh ++ helm list --all-namespaces --filter chaos-mesh ++ tail -n1 ++ awk '-F ' '{print $2}' ++ sed s/NAMESPACE// + local chaos_mesh_ns= + desc 'destroy chaos-mesh' + set +o xtrace ----------------------------------------------------------------------------------- destroy chaos-mesh ----------------------------------------------------------------------------------- + '[' -n '' ']' ++ kubectl get MutatingWebhookConfiguration ++ grep chaos-mesh ++ awk '{print $1}' + timeout 30 kubectl delete MutatingWebhookConfiguration error: resource(s) were provided, but no name was specified + : ++ kubectl get ValidatingWebhookConfiguration ++ grep chaos-mesh ++ awk '{print $1}' + timeout 30 kubectl delete ValidatingWebhookConfiguration error: resource(s) were provided, but no name was specified + : ++ kubectl get ValidatingWebhookConfiguration ++ grep validate-auth ++ awk '{print $1}' + timeout 30 kubectl delete ValidatingWebhookConfiguration error: resource(s) were provided, but no name was specified + : ++ kubectl api-resources ++ grep chaos-mesh ++ awk '{print $1}' ++ kubectl get crd ++ grep chaos-mesh.org ++ awk '{print $1}' + timeout 30 kubectl delete crd error: resource(s) were provided, but no name was specified + : ++ kubectl get clusterrolebinding ++ grep chaos-mesh ++ awk '{print $1}' + timeout 30 kubectl delete clusterrolebinding error: resource(s) were provided, but no name was specified + : ++ kubectl get clusterrole ++ grep chaos-mesh ++ awk '{print $1}' + timeout 30 kubectl delete clusterrole error: resource(s) were provided, but no name was specified + : + desc 'cleaned up all old namespaces' + set +o xtrace ----------------------------------------------------------------------------------- cleaned up all old namespaces ----------------------------------------------------------------------------------- + kubectl_bin get ns + grep -E -v '^kube-|^default|Terminating|psmdb-operator|openshift|^gke-|^gmp-|^NAME' + awk '{print$1}' ++ mktemp + '[' -n '' ']' + desc 'cleaned up old namespaces psmdb-operator' + set +o xtrace ----------------------------------------------------------------------------------- cleaned up old namespaces psmdb-operator ----------------------------------------------------------------------------------- + xargs kubectl delete ns + kubectl_bin delete namespace psmdb-operator --ignore-not-found ++ mktemp + local LAST_OUT=/tmp/tmp.6sVBQAnCMp ++ mktemp + local LAST_OUT=/tmp/tmp.2bHCJWB7Dw ++ mktemp + local LAST_ERR=/tmp/tmp.Ya2Jg0NXEA + local exit_status=0 + local timeout=4 ++ seq 0 2 + local LAST_ERR=/tmp/tmp.VLz4WVilzO + local exit_status=0 + local timeout=4 + for i in $(seq 0 2) ++ seq 0 2 + set +e + kubectl get ns + for i in $(seq 0 2) + set +e + kubectl delete namespace psmdb-operator --ignore-not-found + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.6sVBQAnCMp + cat /tmp/tmp.Ya2Jg0NXEA + rm /tmp/tmp.6sVBQAnCMp /tmp/tmp.Ya2Jg0NXEA + return 0 namespace "custom-users-roles-18055" deleted + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.2bHCJWB7Dw namespace "psmdb-operator" deleted + cat /tmp/tmp.VLz4WVilzO + rm /tmp/tmp.2bHCJWB7Dw /tmp/tmp.VLz4WVilzO + return 0 + kubectl_bin wait --for=delete namespace psmdb-operator ++ mktemp + local LAST_OUT=/tmp/tmp.9eiHKcAYaJ ++ mktemp + local LAST_ERR=/tmp/tmp.8I1szeeZ6e + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl wait --for=delete namespace psmdb-operator + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.9eiHKcAYaJ + cat /tmp/tmp.8I1szeeZ6e + rm /tmp/tmp.9eiHKcAYaJ /tmp/tmp.8I1szeeZ6e + return 0 + desc 'create namespace psmdb-operator' + set +o xtrace ----------------------------------------------------------------------------------- create namespace psmdb-operator ----------------------------------------------------------------------------------- + kubectl_bin create namespace psmdb-operator ++ mktemp + local LAST_OUT=/tmp/tmp.CC7cJp6abF ++ mktemp + local LAST_ERR=/tmp/tmp.mOlspOhZQm + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl create namespace psmdb-operator + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.CC7cJp6abF namespace/psmdb-operator created + cat /tmp/tmp.mOlspOhZQm + rm /tmp/tmp.CC7cJp6abF /tmp/tmp.mOlspOhZQm + return 0 + set_kube_ctx psmdb-operator + local namespace=psmdb-operator ++ kubectl_bin config current-context +++ mktemp ++ local LAST_OUT=/tmp/tmp.vRUUNfnXD8 +++ mktemp ++ local LAST_ERR=/tmp/tmp.AeByRkdSxk ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl config current-context ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.vRUUNfnXD8 ++ cat /tmp/tmp.AeByRkdSxk ++ rm /tmp/tmp.vRUUNfnXD8 /tmp/tmp.AeByRkdSxk ++ return 0 + kubectl_bin config set-context gke_cloud-dev-112233_us-central1-a_jen-psmdb-2221-448d41c2-6-cluster6 --namespace=psmdb-operator ++ mktemp + local LAST_OUT=/tmp/tmp.CBxvynr9F2 ++ mktemp + local LAST_ERR=/tmp/tmp.SvOfrdUfn4 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl config set-context gke_cloud-dev-112233_us-central1-a_jen-psmdb-2221-448d41c2-6-cluster6 --namespace=psmdb-operator + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.CBxvynr9F2 Context "gke_cloud-dev-112233_us-central1-a_jen-psmdb-2221-448d41c2-6-cluster6" modified. + cat /tmp/tmp.SvOfrdUfn4 + rm /tmp/tmp.CBxvynr9F2 /tmp/tmp.SvOfrdUfn4 + return 0 + deploy_operator + desc 'start PSMDB operator: docker.io/perconalab/percona-server-mongodb-operator:PR-2221-448d41c2' + set +o xtrace ----------------------------------------------------------------------------------- start PSMDB operator: docker.io/perconalab/percona-server-mongodb-operator:PR-2221-448d41c2 ----------------------------------------------------------------------------------- + local cr_file + '[' -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/conf/crd.yaml ']' + cr_file=/mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/crd.yaml + kubectl_bin apply --server-side --force-conflicts -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/crd.yaml ++ mktemp + local LAST_OUT=/tmp/tmp.o4Q7t0CF7g ++ mktemp + local LAST_ERR=/tmp/tmp.jFQLc0aMY5 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl apply --server-side --force-conflicts -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/crd.yaml + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.o4Q7t0CF7g customresourcedefinition.apiextensions.k8s.io/perconaservermongodbbackups.psmdb.percona.com serverside-applied customresourcedefinition.apiextensions.k8s.io/perconaservermongodbrestores.psmdb.percona.com serverside-applied customresourcedefinition.apiextensions.k8s.io/perconaservermongodbs.psmdb.percona.com serverside-applied + cat /tmp/tmp.jFQLc0aMY5 + rm /tmp/tmp.o4Q7t0CF7g /tmp/tmp.jFQLc0aMY5 + return 0 + '[' -n psmdb-operator ']' + apply_rbac cw-rbac + local operator_namespace=psmdb-operator + local rbac=cw-rbac + cat /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/cw-rbac.yaml + sed -e 's^namespace: .*^namespace: psmdb-operator^' + kubectl_bin apply -n psmdb-operator -f - ++ mktemp + local LAST_OUT=/tmp/tmp.69BHb4qKPa ++ mktemp + local LAST_ERR=/tmp/tmp.noiI3WQCf4 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl apply -n psmdb-operator -f - + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.69BHb4qKPa clusterrole.rbac.authorization.k8s.io/percona-server-mongodb-operator created serviceaccount/percona-server-mongodb-operator created clusterrolebinding.rbac.authorization.k8s.io/service-account-percona-server-mongodb-operator created + cat /tmp/tmp.noiI3WQCf4 + rm /tmp/tmp.69BHb4qKPa /tmp/tmp.noiI3WQCf4 + return 0 + yq eval ' (.spec.template.spec.containers[].image = "docker.io/perconalab/percona-server-mongodb-operator:PR-2221-448d41c2") | ((.. | select(.[] == "DISABLE_TELEMETRY")) |= .value="true") | ((.. | select(.[] == "LOG_LEVEL")) |= .value="DEBUG")' /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/deploy/cw-operator.yaml + kubectl_bin apply -n psmdb-operator -f - ++ mktemp + local LAST_OUT=/tmp/tmp.ISGhccFZ76 ++ mktemp + local LAST_ERR=/tmp/tmp.gezElGaedQ + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl apply -n psmdb-operator -f - + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.ISGhccFZ76 deployment.apps/percona-server-mongodb-operator created + cat /tmp/tmp.gezElGaedQ + rm /tmp/tmp.ISGhccFZ76 /tmp/tmp.gezElGaedQ + return 0 + sleep 20 ++ get_operator_pod ++ kubectl_bin get pods --selector=name=percona-server-mongodb-operator -o 'jsonpath={.items[].metadata.name}' -n psmdb-operator +++ mktemp ++ local LAST_OUT=/tmp/tmp.U6yxpbkq4M +++ mktemp ++ local LAST_ERR=/tmp/tmp.7J76F4Wg4q ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=percona-server-mongodb-operator -o 'jsonpath={.items[].metadata.name}' -n psmdb-operator ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.U6yxpbkq4M ++ cat /tmp/tmp.7J76F4Wg4q ++ rm /tmp/tmp.U6yxpbkq4M /tmp/tmp.7J76F4Wg4q ++ return 0 + wait_operator_pod percona-server-mongodb-operator-84785df65d-s9p7h + local pod=percona-server-mongodb-operator-84785df65d-s9p7h + set +o xtrace waiting for pod/percona-server-mongodb-operator-84785df65d-s9p7h to be ready.OK + echo 'Print operator info from log' Print operator info from log + grep 'Manager starting up' ++ get_operator_pod ++ kubectl_bin get pods --selector=name=percona-server-mongodb-operator -o 'jsonpath={.items[].metadata.name}' -n psmdb-operator +++ mktemp ++ local LAST_OUT=/tmp/tmp.DHbxmwaXoP +++ mktemp ++ local LAST_ERR=/tmp/tmp.1B32wvYsXd ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=percona-server-mongodb-operator -o 'jsonpath={.items[].metadata.name}' -n psmdb-operator ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.DHbxmwaXoP ++ cat /tmp/tmp.1B32wvYsXd ++ rm /tmp/tmp.DHbxmwaXoP /tmp/tmp.1B32wvYsXd ++ return 0 + kubectl_bin logs -n psmdb-operator percona-server-mongodb-operator-84785df65d-s9p7h ++ mktemp + local LAST_OUT=/tmp/tmp.jyjWdu77xB ++ mktemp + local LAST_ERR=/tmp/tmp.ywvKTiwS1K + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl logs -n psmdb-operator percona-server-mongodb-operator-84785df65d-s9p7h + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.jyjWdu77xB + cat /tmp/tmp.ywvKTiwS1K + rm /tmp/tmp.jyjWdu77xB /tmp/tmp.ywvKTiwS1K + return 0 2026-03-10T16:50:48.823Z INFO setup Manager starting up {"gitCommit": "448d41c2c03308c0cc714f5ae30e554dba76e889", "gitBranch": "PR-2221-448d41c2", "buildTime": "", "goVersion": "go1.25.8", "os": "linux", "arch": "amd64"} + create_namespace custom-users-roles-2071 + local namespace=custom-users-roles-2071 + local skip_clean_namespace= + [[ 1 == 1 ]] + [[ -z '' ]] + destroy_chaos_mesh ++ helm list --all-namespaces --filter chaos-mesh ++ tail -n1 ++ awk '-F ' '{print $2}' ++ sed s/NAMESPACE// + local chaos_mesh_ns= + desc 'destroy chaos-mesh' + set +o xtrace ----------------------------------------------------------------------------------- destroy chaos-mesh ----------------------------------------------------------------------------------- + '[' -n '' ']' ++ kubectl get MutatingWebhookConfiguration ++ grep chaos-mesh ++ awk '{print $1}' + timeout 30 kubectl delete MutatingWebhookConfiguration error: resource(s) were provided, but no name was specified + : ++ kubectl get ValidatingWebhookConfiguration ++ grep chaos-mesh ++ awk '{print $1}' + timeout 30 kubectl delete ValidatingWebhookConfiguration error: resource(s) were provided, but no name was specified + : ++ kubectl get ValidatingWebhookConfiguration ++ grep validate-auth ++ awk '{print $1}' + timeout 30 kubectl delete ValidatingWebhookConfiguration error: resource(s) were provided, but no name was specified + : ++ kubectl api-resources ++ grep chaos-mesh ++ awk '{print $1}' ++ kubectl get crd ++ grep chaos-mesh.org ++ awk '{print $1}' + timeout 30 kubectl delete crd error: resource(s) were provided, but no name was specified + : ++ kubectl get clusterrolebinding ++ grep chaos-mesh ++ awk '{print $1}' + timeout 30 kubectl delete clusterrolebinding error: resource(s) were provided, but no name was specified + : ++ kubectl get clusterrole ++ grep chaos-mesh ++ awk '{print $1}' + timeout 30 kubectl delete clusterrole error: resource(s) were provided, but no name was specified + : + desc 'cleaned up all old namespaces' + set +o xtrace ----------------------------------------------------------------------------------- cleaned up all old namespaces ----------------------------------------------------------------------------------- + kubectl_bin get ns + awk '{print$1}' + '[' -n '' ']' + desc 'cleaned up old namespaces custom-users-roles-2071' + set +o xtrace ++ mktemp ----------------------------------------------------------------------------------- cleaned up old namespaces custom-users-roles-2071 ----------------------------------------------------------------------------------- + kubectl_bin delete namespace custom-users-roles-2071 --ignore-not-found + grep -E -v '^kube-|^default|Terminating|psmdb-operator|openshift|^gke-|^gmp-|^NAME' + local LAST_OUT=/tmp/tmp.7afg5u30RD + xargs kubectl delete ns ++ mktemp + local LAST_ERR=/tmp/tmp.YDwqB56O4w + local exit_status=0 + local timeout=4 ++ mktemp ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl get ns + local LAST_OUT=/tmp/tmp.uTos5CMLAS ++ mktemp + local LAST_ERR=/tmp/tmp.RANAs5Cdt2 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl delete namespace custom-users-roles-2071 --ignore-not-found + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.7afg5u30RD + cat /tmp/tmp.YDwqB56O4w + rm /tmp/tmp.7afg5u30RD /tmp/tmp.YDwqB56O4w + return 0 error: resource(s) were provided, but no name was specified + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.uTos5CMLAS + cat /tmp/tmp.RANAs5Cdt2 + rm /tmp/tmp.uTos5CMLAS /tmp/tmp.RANAs5Cdt2 + return 0 + kubectl_bin wait --for=delete namespace custom-users-roles-2071 ++ mktemp + local LAST_OUT=/tmp/tmp.3EvQQ2keQZ ++ mktemp + local LAST_ERR=/tmp/tmp.QUHqPeVWL0 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl wait --for=delete namespace custom-users-roles-2071 + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.3EvQQ2keQZ + cat /tmp/tmp.QUHqPeVWL0 + rm /tmp/tmp.3EvQQ2keQZ /tmp/tmp.QUHqPeVWL0 + return 0 + desc 'create namespace custom-users-roles-2071' + set +o xtrace ----------------------------------------------------------------------------------- create namespace custom-users-roles-2071 ----------------------------------------------------------------------------------- + kubectl_bin create namespace custom-users-roles-2071 ++ mktemp + local LAST_OUT=/tmp/tmp.39jqKM4Cp1 ++ mktemp + local LAST_ERR=/tmp/tmp.Aj2RVSemDN + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl create namespace custom-users-roles-2071 + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.39jqKM4Cp1 namespace/custom-users-roles-2071 created + cat /tmp/tmp.Aj2RVSemDN + rm /tmp/tmp.39jqKM4Cp1 /tmp/tmp.Aj2RVSemDN + return 0 + set_kube_ctx custom-users-roles-2071 + local namespace=custom-users-roles-2071 ++ kubectl_bin config current-context +++ mktemp ++ local LAST_OUT=/tmp/tmp.RwvfXioaGr +++ mktemp ++ local LAST_ERR=/tmp/tmp.lOmymCDycD ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl config current-context ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.RwvfXioaGr ++ cat /tmp/tmp.lOmymCDycD ++ rm /tmp/tmp.RwvfXioaGr /tmp/tmp.lOmymCDycD ++ return 0 + kubectl_bin config set-context gke_cloud-dev-112233_us-central1-a_jen-psmdb-2221-448d41c2-6-cluster6 --namespace=custom-users-roles-2071 ++ mktemp + local LAST_OUT=/tmp/tmp.I9D08hlT4Q ++ mktemp + local LAST_ERR=/tmp/tmp.KE0Pk0WHNK + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl config set-context gke_cloud-dev-112233_us-central1-a_jen-psmdb-2221-448d41c2-6-cluster6 --namespace=custom-users-roles-2071 + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.I9D08hlT4Q Context "gke_cloud-dev-112233_us-central1-a_jen-psmdb-2221-448d41c2-6-cluster6" modified. + cat /tmp/tmp.KE0Pk0WHNK + rm /tmp/tmp.I9D08hlT4Q /tmp/tmp.KE0Pk0WHNK + return 0 + desc 'create secrets and start client' + set +o xtrace ----------------------------------------------------------------------------------- create secrets and start client ----------------------------------------------------------------------------------- + kubectl_bin apply -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/conf/client.yml -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/conf/secrets.yml -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/conf/app-user-secrets.yml ++ mktemp + local LAST_OUT=/tmp/tmp.IjpTZV3lT4 ++ mktemp + local LAST_ERR=/tmp/tmp.lNwKs264z6 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl apply -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/conf/client.yml -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/conf/secrets.yml -f /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/conf/app-user-secrets.yml + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.IjpTZV3lT4 deployment.apps/psmdb-client created secret/some-users created secret/user-one created secret/user-two created + cat /tmp/tmp.lNwKs264z6 + rm /tmp/tmp.IjpTZV3lT4 /tmp/tmp.lNwKs264z6 + return 0 + mongoUri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + desc 'create first PSMDB cluster some-name-rs0' + set +o xtrace ----------------------------------------------------------------------------------- create first PSMDB cluster some-name-rs0 ----------------------------------------------------------------------------------- + apply_cluster /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/conf/some-name-rs0.yml + '[' -z '' ']' + cat_config /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/conf/some-name-rs0.yml + kubectl_bin apply -f - + cat /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/conf/some-name-rs0.yml + yq eval '(.spec | select(.image == null)).image = "docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0"' ++ mktemp + yq eval '(.spec | select(has("pmm"))).pmm.image = "docker.io/percona/pmm-client:2.44.1-1"' + yq eval '(.spec | select(has("initImage"))).initImage = "docker.io/perconalab/percona-server-mongodb-operator:PR-2221-448d41c2"' + yq eval '(.spec | select(has("backup"))).backup.image = "docker.io/perconalab/percona-server-mongodb-operator:main-backup"' + /usr/sbin/sed -e s/NAME_SPACE/custom-users-roles-2071/g + yq eval '.spec.upgradeOptions.apply="Never"' + local LAST_OUT=/tmp/tmp.cubKnQ1IVk ++ mktemp + local LAST_ERR=/tmp/tmp.sJSD1GLfX1 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl apply -f - + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.cubKnQ1IVk perconaservermongodb.psmdb.percona.com/some-name created + cat /tmp/tmp.sJSD1GLfX1 + rm /tmp/tmp.cubKnQ1IVk /tmp/tmp.sJSD1GLfX1 + return 0 + desc 'Check if all 3 Pods started' + set +o xtrace ----------------------------------------------------------------------------------- Check if all 3 Pods started ----------------------------------------------------------------------------------- + wait_for_running some-name-rs0 3 + local name=some-name-rs0 + let last_pod=2 + local check_cluster_readyness=true + set_debug + [[ 1 == 1 ]] + set -o xtrace + local rs_name=rs0 + local cluster_name=some-name ++ seq 0 2 + for i in $(seq 0 $last_pod) + [[ 0 -eq 2 ]] + wait_pod some-name-rs0-0 + local pod=some-name-rs0-0 + set +o xtrace waiting for pod/some-name-rs0-0 to be ready......OK + for i in $(seq 0 $last_pod) + [[ 1 -eq 2 ]] + wait_pod some-name-rs0-1 + local pod=some-name-rs0-1 + set +o xtrace waiting for pod/some-name-rs0-1 to be ready.......OK + for i in $(seq 0 $last_pod) + [[ 2 -eq 2 ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.gPcQLUgmjr +++ mktemp ++ local LAST_ERR=/tmp/tmp.E6SzXef5Uk ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.gPcQLUgmjr ++ cat /tmp/tmp.E6SzXef5Uk ++ rm /tmp/tmp.gPcQLUgmjr /tmp/tmp.E6SzXef5Uk ++ return 0 + [[ '' == \t\r\u\e ]] + wait_pod some-name-rs0-2 + local pod=some-name-rs0-2 + set +o xtrace waiting for pod/some-name-rs0-2 to be ready.....................OK ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.m6f0dySGOi +++ mktemp ++ local LAST_ERR=/tmp/tmp.sBn2MufKKO ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.m6f0dySGOi ++ cat /tmp/tmp.sBn2MufKKO ++ rm /tmp/tmp.m6f0dySGOi /tmp/tmp.sBn2MufKKO ++ return 0 + [[ '' == \t\r\u\e ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.4L4iwiL6Wm +++ mktemp ++ local LAST_ERR=/tmp/tmp.7FT1kCi5iy ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.4L4iwiL6Wm ++ cat /tmp/tmp.7FT1kCi5iy ++ rm /tmp/tmp.4L4iwiL6Wm /tmp/tmp.7FT1kCi5iy ++ return 0 + [[ '' == \t\r\u\e ]] + sleep 10 + [[ true == \t\r\u\e ]] + set +x Waiting for cluster readyness + desc 'check user created on cluster creation' + set +o xtrace ----------------------------------------------------------------------------------- check user created on cluster creation ----------------------------------------------------------------------------------- + userOne=user-one ++ getSecretData user-one userOnePassKey ++ local secretName=user-one ++ local dataKey=userOnePassKey +++ kubectl get secrets/user-one '--template={{.data.userOnePassKey}}' +++ base64 -d ++ local data=clusterMonitor ++ echo clusterMonitor + userOnePass=clusterMonitor ++ get_user_cmd '"user-one"' ++ local 'user="user-one"' ++ cmd='(function() { var user = db.getUser("user-one"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-one"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-one"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-one + local database=admin + local 'command=(function() { var user = db.getUser("user-one"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-one + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var user = db.getUser("user-one"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local 'command=use admin\n (function() { var user = db.getUser("user-one"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.ADk2WHERTg +++ mktemp ++ local LAST_ERR=/tmp/tmp.eTNGWb7WBP ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.ADk2WHERTg ++ cat /tmp/tmp.eTNGWb7WBP ++ rm /tmp/tmp.ADk2WHERTg /tmp/tmp.eTNGWb7WBP ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-one"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.11vhMCJSXV ++ mktemp + local LAST_ERR=/tmp/tmp.eA1ptIviRJ + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-one"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.11vhMCJSXV + cat /tmp/tmp.eA1ptIviRJ + rm /tmp/tmp.11vhMCJSXV /tmp/tmp.eA1ptIviRJ + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-one.json /tmp/tmp.fYs8v8KT4v/user-one + check_mongo_auth user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 + local uri=user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ run_mongo 'db.runCommand({ ping: 1 }).ok' user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 mongodb '' --quiet ++ grep -E -v 'I NETWORK|W NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' ++ local 'command=db.runCommand({ ping: 1 }).ok' ++ local uri=user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ local driver=mongodb ++ local suffix=.svc.cluster.local ++ local mongo_flag=--quiet ++ local replica_set=rs0 ++ [[ user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 == *cfg* ]] +++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++++ mktemp +++ local LAST_OUT=/tmp/tmp.klFh8M0Fxj ++++ mktemp +++ local LAST_ERR=/tmp/tmp.o46sTHtF3v +++ local exit_status=0 +++ local timeout=4 ++++ seq 0 2 +++ for i in $(seq 0 2) +++ set +e +++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ exit_status=0 +++ set -e +++ '[' 0 '!=' 0 -a -n 1 ']' +++ break +++ cat /tmp/tmp.klFh8M0Fxj +++ cat /tmp/tmp.o46sTHtF3v +++ rm /tmp/tmp.klFh8M0Fxj /tmp/tmp.o46sTHtF3v +++ return 0 ++ local client_container=psmdb-client-bb8b97679-5zh7x ++ kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' +++ mktemp ++ local LAST_OUT=/tmp/tmp.3Dko8plA2r +++ mktemp ++ local LAST_ERR=/tmp/tmp.ERCLFbazkv ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.3Dko8plA2r ++ cat /tmp/tmp.ERCLFbazkv ++ rm /tmp/tmp.3Dko8plA2r /tmp/tmp.ERCLFbazkv ++ return 0 + ping=1 + desc 'ping return' + set +o xtrace ----------------------------------------------------------------------------------- ping return ----------------------------------------------------------------------------------- + '[' 1 '!=' 1 ']' + generatedUserSecret=some-name-custom-user-secret ++ kubectl_bin get secret some-name-custom-user-secret -o 'jsonpath={.data.user-gen}' ++ base64 -d +++ mktemp ++ local LAST_OUT=/tmp/tmp.IXtibgnmlD +++ mktemp ++ local LAST_ERR=/tmp/tmp.zdiDeKSqDi ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get secret some-name-custom-user-secret -o 'jsonpath={.data.user-gen}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.IXtibgnmlD ++ cat /tmp/tmp.zdiDeKSqDi ++ rm /tmp/tmp.IXtibgnmlD /tmp/tmp.zdiDeKSqDi ++ return 0 + generatedPass=EfKNhxYPK3jM9RqwcH ++ get_user_cmd '"user-gen"' ++ local 'user="user-gen"' ++ cmd='(function() { var user = db.getUser("user-gen"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-gen"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-gen"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-gen + local database=admin + local 'command=(function() { var user = db.getUser("user-gen"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-gen + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var user = db.getUser("user-gen"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + local 'command=use admin\n (function() { var user = db.getUser("user-gen"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.htVO7vB1k6 +++ mktemp ++ local LAST_ERR=/tmp/tmp.SxHkJgDhQQ ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.htVO7vB1k6 ++ cat /tmp/tmp.SxHkJgDhQQ ++ rm /tmp/tmp.htVO7vB1k6 /tmp/tmp.SxHkJgDhQQ ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-gen"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.BKFXm31O9f ++ mktemp + local LAST_ERR=/tmp/tmp.osyMeZF3ue + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-gen"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.BKFXm31O9f + cat /tmp/tmp.osyMeZF3ue + rm /tmp/tmp.BKFXm31O9f /tmp/tmp.osyMeZF3ue + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-gen.json /tmp/tmp.fYs8v8KT4v/user-gen + check_mongo_auth user-gen:EfKNhxYPK3jM9RqwcH@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 + local uri=user-gen:EfKNhxYPK3jM9RqwcH@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ run_mongo 'db.runCommand({ ping: 1 }).ok' user-gen:EfKNhxYPK3jM9RqwcH@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 mongodb '' --quiet ++ local 'command=db.runCommand({ ping: 1 }).ok' ++ grep -E -v 'I NETWORK|W NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' ++ local uri=user-gen:EfKNhxYPK3jM9RqwcH@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ local driver=mongodb ++ local suffix=.svc.cluster.local ++ local mongo_flag=--quiet ++ local replica_set=rs0 ++ [[ user-gen:EfKNhxYPK3jM9RqwcH@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 == *cfg* ]] +++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++++ mktemp +++ local LAST_OUT=/tmp/tmp.K1uBwL4Upj ++++ mktemp +++ local LAST_ERR=/tmp/tmp.oCm62nzlGD +++ local exit_status=0 +++ local timeout=4 ++++ seq 0 2 +++ for i in $(seq 0 2) +++ set +e +++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ exit_status=0 +++ set -e +++ '[' 0 '!=' 0 -a -n 1 ']' +++ break +++ cat /tmp/tmp.K1uBwL4Upj +++ cat /tmp/tmp.oCm62nzlGD +++ rm /tmp/tmp.K1uBwL4Upj /tmp/tmp.oCm62nzlGD +++ return 0 ++ local client_container=psmdb-client-bb8b97679-5zh7x ++ kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-gen:EfKNhxYPK3jM9RqwcH@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' +++ mktemp ++ local LAST_OUT=/tmp/tmp.dkoL5CumY7 +++ mktemp ++ local LAST_ERR=/tmp/tmp.jkIfs4KnTe ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-gen:EfKNhxYPK3jM9RqwcH@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.dkoL5CumY7 ++ cat /tmp/tmp.jkIfs4KnTe ++ rm /tmp/tmp.dkoL5CumY7 /tmp/tmp.jkIfs4KnTe ++ return 0 + ping=1 + desc 'ping return' + set +o xtrace ----------------------------------------------------------------------------------- ping return ----------------------------------------------------------------------------------- + '[' 1 '!=' 1 ']' ++ get_user_cmd '"user-external"' ++ local 'user="user-external"' ++ cmd='(function() { var user = db.getUser("user-external"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-external"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare '$external' '(function() { var user = db.getUser("user-external"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-external + local 'database=$external' + local 'command=(function() { var user = db.getUser("user-external"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-external + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use $external\n (function() { var user = db.getUser("user-external"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local 'command=use $external\n (function() { var user = db.getUser("user-external"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.QkdKYecZqY +++ mktemp ++ local LAST_ERR=/tmp/tmp.fvhOVPm7o8 ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.QkdKYecZqY ++ cat /tmp/tmp.fvhOVPm7o8 ++ rm /tmp/tmp.QkdKYecZqY /tmp/tmp.fvhOVPm7o8 ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use $external\n (function() { var user = db.getUser("user-external"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.HXM5dGIR8X ++ mktemp + local LAST_ERR=/tmp/tmp.NezKCqfa1w + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use $external\n (function() { var user = db.getUser("user-external"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.HXM5dGIR8X + cat /tmp/tmp.NezKCqfa1w + rm /tmp/tmp.HXM5dGIR8X /tmp/tmp.NezKCqfa1w + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-external.json /tmp/tmp.fYs8v8KT4v/user-external + desc 'delete initial users from CR and create a new one' + set +o xtrace ----------------------------------------------------------------------------------- delete initial users from CR and create a new one ----------------------------------------------------------------------------------- + kubectl_bin patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-two", "db":"admin", "passwordSecretRef": { "name": "user-two", "key": "userTwoPassKey" }, "roles": [ {"db":"admin","name":"userAdminAnyDatabase"}, {"db":"admin","name":"clusterAdmin"} ] } ]} }' ++ mktemp + local LAST_OUT=/tmp/tmp.izFPBbufpj ++ mktemp + local LAST_ERR=/tmp/tmp.3TCdGA1uHK + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-two", "db":"admin", "passwordSecretRef": { "name": "user-two", "key": "userTwoPassKey" }, "roles": [ {"db":"admin","name":"userAdminAnyDatabase"}, {"db":"admin","name":"clusterAdmin"} ] } ]} }' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.izFPBbufpj perconaservermongodb.psmdb.percona.com/some-name patched + cat /tmp/tmp.3TCdGA1uHK + rm /tmp/tmp.izFPBbufpj /tmp/tmp.3TCdGA1uHK + return 0 + wait_for_running some-name-rs0 3 + local name=some-name-rs0 + let last_pod=2 + local check_cluster_readyness=true + set_debug + [[ 1 == 1 ]] + set -o xtrace + local rs_name=rs0 + local cluster_name=some-name ++ seq 0 2 + for i in $(seq 0 $last_pod) + [[ 0 -eq 2 ]] + wait_pod some-name-rs0-0 + local pod=some-name-rs0-0 + set +o xtrace waiting for pod/some-name-rs0-0 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 1 -eq 2 ]] + wait_pod some-name-rs0-1 + local pod=some-name-rs0-1 + set +o xtrace waiting for pod/some-name-rs0-1 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 2 -eq 2 ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.Su1Ip3q4cz +++ mktemp ++ local LAST_ERR=/tmp/tmp.GqMdytQwj8 ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.Su1Ip3q4cz ++ cat /tmp/tmp.GqMdytQwj8 ++ rm /tmp/tmp.Su1Ip3q4cz /tmp/tmp.GqMdytQwj8 ++ return 0 + [[ '' == \t\r\u\e ]] + wait_pod some-name-rs0-2 + local pod=some-name-rs0-2 + set +o xtrace waiting for pod/some-name-rs0-2 to be ready.OK ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.4IWReryP3q +++ mktemp ++ local LAST_ERR=/tmp/tmp.9gMJn2QDQU ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.4IWReryP3q ++ cat /tmp/tmp.9gMJn2QDQU ++ rm /tmp/tmp.4IWReryP3q /tmp/tmp.9gMJn2QDQU ++ return 0 + [[ '' == \t\r\u\e ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.j6vMlBckSg +++ mktemp ++ local LAST_ERR=/tmp/tmp.ATYsxtICg3 ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.j6vMlBckSg ++ cat /tmp/tmp.ATYsxtICg3 ++ rm /tmp/tmp.j6vMlBckSg /tmp/tmp.ATYsxtICg3 ++ return 0 + [[ '' == \t\r\u\e ]] + sleep 10 + [[ true == \t\r\u\e ]] + set +x Waiting for cluster readyness ++ get_user_cmd '"user-two"' ++ local 'user="user-two"' ++ cmd='(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-two + local database=admin + local 'command=(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-two + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local 'command=use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.qEe8sIo0r5 +++ mktemp ++ local LAST_ERR=/tmp/tmp.2vtngvbzlR ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.qEe8sIo0r5 ++ cat /tmp/tmp.2vtngvbzlR ++ rm /tmp/tmp.qEe8sIo0r5 /tmp/tmp.2vtngvbzlR ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.fp2SB4kNYg ++ mktemp + local LAST_ERR=/tmp/tmp.etpz3Yytkr + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.fp2SB4kNYg + cat /tmp/tmp.etpz3Yytkr + rm /tmp/tmp.fp2SB4kNYg /tmp/tmp.etpz3Yytkr + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-two.json /tmp/tmp.fYs8v8KT4v/user-two + userTwo=user-two ++ getSecretData user-two userTwoPassKey ++ local secretName=user-two ++ local dataKey=userTwoPassKey +++ kubectl get secrets/user-two '--template={{.data.userTwoPassKey}}' +++ base64 -d ++ local data=clusterMonitor ++ echo clusterMonitor + userTwoPass=clusterMonitor + check_mongo_auth user-two:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 + local uri=user-two:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ run_mongo 'db.runCommand({ ping: 1 }).ok' user-two:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 mongodb '' --quiet ++ local 'command=db.runCommand({ ping: 1 }).ok' ++ grep -E -v 'I NETWORK|W NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' ++ local uri=user-two:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ local driver=mongodb ++ local suffix=.svc.cluster.local ++ local mongo_flag=--quiet ++ local replica_set=rs0 ++ [[ user-two:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 == *cfg* ]] +++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++++ mktemp +++ local LAST_OUT=/tmp/tmp.KhJFFWTohf ++++ mktemp +++ local LAST_ERR=/tmp/tmp.CIyp0L95Wk +++ local exit_status=0 +++ local timeout=4 ++++ seq 0 2 +++ for i in $(seq 0 2) +++ set +e +++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ exit_status=0 +++ set -e +++ '[' 0 '!=' 0 -a -n 1 ']' +++ break +++ cat /tmp/tmp.KhJFFWTohf +++ cat /tmp/tmp.CIyp0L95Wk +++ rm /tmp/tmp.KhJFFWTohf /tmp/tmp.CIyp0L95Wk +++ return 0 ++ local client_container=psmdb-client-bb8b97679-5zh7x ++ kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-two:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' +++ mktemp ++ local LAST_OUT=/tmp/tmp.bwhXeuaFEf +++ mktemp ++ local LAST_ERR=/tmp/tmp.G2RGCDMIyL ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-two:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.bwhXeuaFEf ++ cat /tmp/tmp.G2RGCDMIyL ++ rm /tmp/tmp.bwhXeuaFEf /tmp/tmp.G2RGCDMIyL ++ return 0 + ping=1 + desc 'ping return' + set +o xtrace ----------------------------------------------------------------------------------- ping return ----------------------------------------------------------------------------------- + '[' 1 '!=' 1 ']' + check_mongo_auth user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 + local uri=user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ run_mongo 'db.runCommand({ ping: 1 }).ok' user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 mongodb '' --quiet ++ local 'command=db.runCommand({ ping: 1 }).ok' ++ local uri=user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ local driver=mongodb ++ local suffix=.svc.cluster.local ++ local mongo_flag=--quiet ++ local replica_set=rs0 ++ [[ user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 == *cfg* ]] ++ grep -E -v 'I NETWORK|W NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' +++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++++ mktemp +++ local LAST_OUT=/tmp/tmp.0P3w9gZzLH ++++ mktemp +++ local LAST_ERR=/tmp/tmp.pwHpoxS1L4 +++ local exit_status=0 +++ local timeout=4 ++++ seq 0 2 +++ for i in $(seq 0 2) +++ set +e +++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ exit_status=0 +++ set -e +++ '[' 0 '!=' 0 -a -n 1 ']' +++ break +++ cat /tmp/tmp.0P3w9gZzLH +++ cat /tmp/tmp.pwHpoxS1L4 +++ rm /tmp/tmp.0P3w9gZzLH /tmp/tmp.pwHpoxS1L4 +++ return 0 ++ local client_container=psmdb-client-bb8b97679-5zh7x ++ kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' +++ mktemp ++ local LAST_OUT=/tmp/tmp.PqDv5Qqh7l +++ mktemp ++ local LAST_ERR=/tmp/tmp.wyHdiuwXu1 ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-one:clusterMonitor@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.PqDv5Qqh7l ++ cat /tmp/tmp.wyHdiuwXu1 ++ rm /tmp/tmp.PqDv5Qqh7l /tmp/tmp.wyHdiuwXu1 ++ return 0 + ping=1 + desc 'ping return' + set +o xtrace ----------------------------------------------------------------------------------- ping return ----------------------------------------------------------------------------------- + '[' 1 '!=' 1 ']' + desc 'check password change' + set +o xtrace ----------------------------------------------------------------------------------- check password change ----------------------------------------------------------------------------------- + userTwoNewPass=new-user-two-password ++ echo -n new-user-two-password ++ base64 + patch_secret user-two userTwoPassKey bmV3LXVzZXItdHdvLXBhc3N3b3Jk + local secret=user-two + local key=userTwoPassKey + local value=bmV3LXVzZXItdHdvLXBhc3N3b3Jk + kubectl patch secret user-two '-p={"data":{"userTwoPassKey": "bmV3LXVzZXItdHdvLXBhc3N3b3Jk"}}' secret/user-two patched + sleep 20 + check_mongo_auth user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 + local uri=user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ run_mongo 'db.runCommand({ ping: 1 }).ok' user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 mongodb '' --quiet ++ local 'command=db.runCommand({ ping: 1 }).ok' ++ local uri=user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ local driver=mongodb ++ grep -E -v 'I NETWORK|W NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' ++ local suffix=.svc.cluster.local ++ local mongo_flag=--quiet ++ local replica_set=rs0 ++ [[ user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 == *cfg* ]] +++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++++ mktemp +++ local LAST_OUT=/tmp/tmp.KaLr3twZ3h ++++ mktemp +++ local LAST_ERR=/tmp/tmp.qhdCZTFkqH +++ local exit_status=0 +++ local timeout=4 ++++ seq 0 2 +++ for i in $(seq 0 2) +++ set +e +++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ exit_status=0 +++ set -e +++ '[' 0 '!=' 0 -a -n 1 ']' +++ break +++ cat /tmp/tmp.KaLr3twZ3h +++ cat /tmp/tmp.qhdCZTFkqH +++ rm /tmp/tmp.KaLr3twZ3h /tmp/tmp.qhdCZTFkqH +++ return 0 ++ local client_container=psmdb-client-bb8b97679-5zh7x ++ kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' +++ mktemp ++ local LAST_OUT=/tmp/tmp.6kMMJ7Q1v4 +++ mktemp ++ local LAST_ERR=/tmp/tmp.IRZROif15T ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.6kMMJ7Q1v4 ++ cat /tmp/tmp.IRZROif15T ++ rm /tmp/tmp.6kMMJ7Q1v4 /tmp/tmp.IRZROif15T ++ return 0 + ping=1 + desc 'ping return' + set +o xtrace ----------------------------------------------------------------------------------- ping return ----------------------------------------------------------------------------------- + '[' 1 '!=' 1 ']' + desc 'check user roles update from CR' + set +o xtrace ----------------------------------------------------------------------------------- check user roles update from CR ----------------------------------------------------------------------------------- + kubectl_bin patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-two", "db":"admin", "passwordSecretRef": { "name": "user-two", "key": "userTwoPassKey" }, "roles": [ {"db":"admin","name":"clusterAdmin"} ] } ]} }' ++ mktemp + local LAST_OUT=/tmp/tmp.q3WCTLRO8X ++ mktemp + local LAST_ERR=/tmp/tmp.qFCsHJL1g7 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-two", "db":"admin", "passwordSecretRef": { "name": "user-two", "key": "userTwoPassKey" }, "roles": [ {"db":"admin","name":"clusterAdmin"} ] } ]} }' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.q3WCTLRO8X perconaservermongodb.psmdb.percona.com/some-name patched + cat /tmp/tmp.qFCsHJL1g7 + rm /tmp/tmp.q3WCTLRO8X /tmp/tmp.qFCsHJL1g7 + return 0 + wait_for_running some-name-rs0 3 + local name=some-name-rs0 + let last_pod=2 + local check_cluster_readyness=true + set_debug + [[ 1 == 1 ]] + set -o xtrace + local rs_name=rs0 + local cluster_name=some-name ++ seq 0 2 + for i in $(seq 0 $last_pod) + [[ 0 -eq 2 ]] + wait_pod some-name-rs0-0 + local pod=some-name-rs0-0 + set +o xtrace waiting for pod/some-name-rs0-0 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 1 -eq 2 ]] + wait_pod some-name-rs0-1 + local pod=some-name-rs0-1 + set +o xtrace waiting for pod/some-name-rs0-1 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 2 -eq 2 ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.7uCfiFYS3N +++ mktemp ++ local LAST_ERR=/tmp/tmp.FmkLRMMWIW ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.7uCfiFYS3N ++ cat /tmp/tmp.FmkLRMMWIW ++ rm /tmp/tmp.7uCfiFYS3N /tmp/tmp.FmkLRMMWIW ++ return 0 + [[ '' == \t\r\u\e ]] + wait_pod some-name-rs0-2 + local pod=some-name-rs0-2 + set +o xtrace waiting for pod/some-name-rs0-2 to be ready.OK ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.BVLy83ZWGM +++ mktemp ++ local LAST_ERR=/tmp/tmp.6YkUeit0MQ ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.BVLy83ZWGM ++ cat /tmp/tmp.6YkUeit0MQ ++ rm /tmp/tmp.BVLy83ZWGM /tmp/tmp.6YkUeit0MQ ++ return 0 + [[ '' == \t\r\u\e ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.ZdKHNqJ2LE +++ mktemp ++ local LAST_ERR=/tmp/tmp.FHwStZblkX ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.ZdKHNqJ2LE ++ cat /tmp/tmp.FHwStZblkX ++ rm /tmp/tmp.ZdKHNqJ2LE /tmp/tmp.FHwStZblkX ++ return 0 + [[ '' == \t\r\u\e ]] + sleep 10 + [[ true == \t\r\u\e ]] + set +x Waiting for cluster readyness ++ get_user_cmd '"user-two"' ++ local 'user="user-two"' ++ cmd='(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-two-update-roles + local database=admin + local 'command=(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-two-update-roles + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' + run_mongo 'use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + local 'command=use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.npa0SIi4Pc +++ mktemp ++ local LAST_ERR=/tmp/tmp.jNh9reiSyI ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.npa0SIi4Pc ++ cat /tmp/tmp.jNh9reiSyI ++ rm /tmp/tmp.npa0SIi4Pc /tmp/tmp.jNh9reiSyI ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.UKqTVDpwM8 ++ mktemp + local LAST_ERR=/tmp/tmp.3s5qia6F6l + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.UKqTVDpwM8 + cat /tmp/tmp.3s5qia6F6l + rm /tmp/tmp.UKqTVDpwM8 /tmp/tmp.3s5qia6F6l + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-two-update-roles.json /tmp/tmp.fYs8v8KT4v/user-two-update-roles + desc 'check user roles update from DB' + set +o xtrace ----------------------------------------------------------------------------------- check user roles update from DB ----------------------------------------------------------------------------------- + run_mongo 'use admin\n db.updateUser("user-two", { roles : [{ role : "userAdminAnyDatabase", db: "admin"}]})' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local 'command=use admin\n db.updateUser("user-two", { roles : [{ role : "userAdminAnyDatabase", db: "admin"}]})' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb+srv + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.vkoxJD7pEI +++ mktemp ++ local LAST_ERR=/tmp/tmp.gUpHJuohle ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.vkoxJD7pEI ++ cat /tmp/tmp.gUpHJuohle ++ rm /tmp/tmp.vkoxJD7pEI /tmp/tmp.gUpHJuohle ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n db.updateUser("user-two", { roles : [{ role : "userAdminAnyDatabase", db: "admin"}]})\n'\'' | mongo mongodb+srv://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.U3bLtiazHf ++ mktemp + local LAST_ERR=/tmp/tmp.pGR6pJzyyI + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n db.updateUser("user-two", { roles : [{ role : "userAdminAnyDatabase", db: "admin"}]})\n'\'' | mongo mongodb+srv://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.U3bLtiazHf Percona Server for MongoDB shell version v4.4.29-28 connecting to: mongodb://some-name-rs0-2.some-name-rs0.custom-users-roles-2071.svc.cluster.local:27017,some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local:27017,some-name-rs0-1.some-name-rs0.custom-users-roles-2071.svc.cluster.local:27017/admin?compressors=disabled&gssapiServiceName=mongodb&replicaSet=rs0&ssl=false Implicit session: session { "id" : UUID("a059d4ce-64bd-4464-b163-55979753b65d") } Percona Server for MongoDB server version: v8.0.19-7 WARNING: shell and server versions do not match switched to db admin bye + cat /tmp/tmp.pGR6pJzyyI + rm /tmp/tmp.U3bLtiazHf /tmp/tmp.pGR6pJzyyI + return 0 + sleep 15 ++ get_user_cmd '"user-two"' ++ local 'user="user-two"' ++ cmd='(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-two-update-roles + local database=admin + local 'command=(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-two-update-roles + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local 'command=use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.vdELRsaXmg +++ mktemp ++ local LAST_ERR=/tmp/tmp.6lNjK6eCyb ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.vdELRsaXmg ++ cat /tmp/tmp.6lNjK6eCyb ++ rm /tmp/tmp.vdELRsaXmg /tmp/tmp.6lNjK6eCyb ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.wlRVSHKsBc ++ mktemp + local LAST_ERR=/tmp/tmp.du7jLZoLKS + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.wlRVSHKsBc + cat /tmp/tmp.du7jLZoLKS + rm /tmp/tmp.wlRVSHKsBc /tmp/tmp.du7jLZoLKS + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-two-update-roles.json /tmp/tmp.fYs8v8KT4v/user-two-update-roles + desc 'check user recreated after deleted from DB' + set +o xtrace ----------------------------------------------------------------------------------- check user recreated after deleted from DB ----------------------------------------------------------------------------------- + run_mongo 'use admin\n db.dropUser("user-two")' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local 'command=use admin\n db.dropUser("user-two")' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb+srv + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.iWuxbhb20E +++ mktemp ++ local LAST_ERR=/tmp/tmp.dTQNBaAzzM ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.iWuxbhb20E ++ cat /tmp/tmp.dTQNBaAzzM ++ rm /tmp/tmp.iWuxbhb20E /tmp/tmp.dTQNBaAzzM ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n db.dropUser("user-two")\n'\'' | mongo mongodb+srv://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.9Cr2DJJ85F ++ mktemp + local LAST_ERR=/tmp/tmp.PPOUmcGzUt + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n db.dropUser("user-two")\n'\'' | mongo mongodb+srv://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.9Cr2DJJ85F Percona Server for MongoDB shell version v4.4.29-28 connecting to: mongodb://some-name-rs0-2.some-name-rs0.custom-users-roles-2071.svc.cluster.local:27017,some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local:27017,some-name-rs0-1.some-name-rs0.custom-users-roles-2071.svc.cluster.local:27017/admin?compressors=disabled&gssapiServiceName=mongodb&replicaSet=rs0&ssl=false Implicit session: session { "id" : UUID("57333a67-49f9-45d4-a262-13cec461fa0b") } Percona Server for MongoDB server version: v8.0.19-7 WARNING: shell and server versions do not match switched to db admin true bye + cat /tmp/tmp.PPOUmcGzUt + rm /tmp/tmp.9Cr2DJJ85F /tmp/tmp.PPOUmcGzUt + return 0 + sleep 15 ++ get_user_cmd '"user-two"' ++ local 'user="user-two"' ++ cmd='(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-two-update-roles + local database=admin + local 'command=(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-two-update-roles + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + local 'command=use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' + sed '/"userId"/d' +++ mktemp ++ local LAST_OUT=/tmp/tmp.C404SadhT5 +++ mktemp ++ local LAST_ERR=/tmp/tmp.cKylKiS1iJ ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.C404SadhT5 ++ cat /tmp/tmp.cKylKiS1iJ ++ rm /tmp/tmp.C404SadhT5 /tmp/tmp.cKylKiS1iJ ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.GXnjbsT6fZ ++ mktemp + local LAST_ERR=/tmp/tmp.O0ZHWM8vkR + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.GXnjbsT6fZ + cat /tmp/tmp.O0ZHWM8vkR + rm /tmp/tmp.GXnjbsT6fZ /tmp/tmp.O0ZHWM8vkR + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-two-update-roles.json /tmp/tmp.fYs8v8KT4v/user-two-update-roles + desc 'check new user created after updated user name via CR' + set +o xtrace ----------------------------------------------------------------------------------- check new user created after updated user name via CR ----------------------------------------------------------------------------------- + kubectl_bin patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-three", "db":"admin", "passwordSecretRef": { "name": "user-two", "key": "userTwoPassKey" }, "roles": [ {"db":"admin","name":"clusterAdmin"} ] } ]} }' ++ mktemp + local LAST_OUT=/tmp/tmp.jocN6HvDll ++ mktemp + local LAST_ERR=/tmp/tmp.xMKVPrjHIF + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-three", "db":"admin", "passwordSecretRef": { "name": "user-two", "key": "userTwoPassKey" }, "roles": [ {"db":"admin","name":"clusterAdmin"} ] } ]} }' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.jocN6HvDll perconaservermongodb.psmdb.percona.com/some-name patched + cat /tmp/tmp.xMKVPrjHIF + rm /tmp/tmp.jocN6HvDll /tmp/tmp.xMKVPrjHIF + return 0 + wait_for_running some-name-rs0 3 + local name=some-name-rs0 + let last_pod=2 + local check_cluster_readyness=true + set_debug + [[ 1 == 1 ]] + set -o xtrace + local rs_name=rs0 + local cluster_name=some-name ++ seq 0 2 + for i in $(seq 0 $last_pod) + [[ 0 -eq 2 ]] + wait_pod some-name-rs0-0 + local pod=some-name-rs0-0 + set +o xtrace waiting for pod/some-name-rs0-0 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 1 -eq 2 ]] + wait_pod some-name-rs0-1 + local pod=some-name-rs0-1 + set +o xtrace waiting for pod/some-name-rs0-1 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 2 -eq 2 ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.6Tm9DNoXT2 +++ mktemp ++ local LAST_ERR=/tmp/tmp.dpg1huKGdb ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.6Tm9DNoXT2 ++ cat /tmp/tmp.dpg1huKGdb ++ rm /tmp/tmp.6Tm9DNoXT2 /tmp/tmp.dpg1huKGdb ++ return 0 + [[ '' == \t\r\u\e ]] + wait_pod some-name-rs0-2 + local pod=some-name-rs0-2 + set +o xtrace waiting for pod/some-name-rs0-2 to be ready.OK ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.BE3WRRsui5 +++ mktemp ++ local LAST_ERR=/tmp/tmp.rAutRpzf1M ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.BE3WRRsui5 ++ cat /tmp/tmp.rAutRpzf1M ++ rm /tmp/tmp.BE3WRRsui5 /tmp/tmp.rAutRpzf1M ++ return 0 + [[ '' == \t\r\u\e ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.L6lUqwGHQF +++ mktemp ++ local LAST_ERR=/tmp/tmp.5aRR8k3SbG ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.L6lUqwGHQF ++ cat /tmp/tmp.5aRR8k3SbG ++ rm /tmp/tmp.L6lUqwGHQF /tmp/tmp.5aRR8k3SbG ++ return 0 + [[ '' == \t\r\u\e ]] + sleep 10 + [[ true == \t\r\u\e ]] + set +x Waiting for cluster readyness ++ get_user_cmd '"user-three"' ++ local 'user="user-three"' ++ cmd='(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-three-admin-db + local database=admin + local 'command=(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-three-admin-db + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + local 'command=use admin\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' ++ local LAST_OUT=/tmp/tmp.YMltOMprWj +++ mktemp + sed '/"userId"/d' ++ local LAST_ERR=/tmp/tmp.39lyTPEZZz ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.YMltOMprWj ++ cat /tmp/tmp.39lyTPEZZz ++ rm /tmp/tmp.YMltOMprWj /tmp/tmp.39lyTPEZZz ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.fonp5g4oPg ++ mktemp + local LAST_ERR=/tmp/tmp.hlKwnqZ4OM + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.fonp5g4oPg + cat /tmp/tmp.hlKwnqZ4OM + rm /tmp/tmp.fonp5g4oPg /tmp/tmp.hlKwnqZ4OM + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-three-admin-db.json /tmp/tmp.fYs8v8KT4v/user-three-admin-db ++ get_user_cmd '"user-two"' ++ local 'user="user-two"' ++ cmd='(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-two-update-roles + local database=admin + local 'command=(function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-two-update-roles + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + local 'command=use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.IbrakQuyrr +++ mktemp ++ local LAST_ERR=/tmp/tmp.h9IM5rFtlU ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.IbrakQuyrr ++ cat /tmp/tmp.h9IM5rFtlU ++ rm /tmp/tmp.IbrakQuyrr /tmp/tmp.h9IM5rFtlU ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.2vLue2PUGw ++ mktemp + local LAST_ERR=/tmp/tmp.EAPxTWWTU2 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-two"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.2vLue2PUGw + cat /tmp/tmp.EAPxTWWTU2 + rm /tmp/tmp.2vLue2PUGw /tmp/tmp.EAPxTWWTU2 + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-two-update-roles.json /tmp/tmp.fYs8v8KT4v/user-two-update-roles + check_mongo_auth user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 + local uri=user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ run_mongo 'db.runCommand({ ping: 1 }).ok' user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 mongodb '' --quiet ++ local 'command=db.runCommand({ ping: 1 }).ok' ++ local uri=user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ local driver=mongodb ++ local suffix=.svc.cluster.local ++ local mongo_flag=--quiet ++ local replica_set=rs0 ++ [[ user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 == *cfg* ]] ++ grep -E -v 'I NETWORK|W NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' +++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++++ mktemp +++ local LAST_OUT=/tmp/tmp.81Ees3c5lh ++++ mktemp +++ local LAST_ERR=/tmp/tmp.hIUxGXaXt5 +++ local exit_status=0 +++ local timeout=4 ++++ seq 0 2 +++ for i in $(seq 0 2) +++ set +e +++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ exit_status=0 +++ set -e +++ '[' 0 '!=' 0 -a -n 1 ']' +++ break +++ cat /tmp/tmp.81Ees3c5lh +++ cat /tmp/tmp.hIUxGXaXt5 +++ rm /tmp/tmp.81Ees3c5lh /tmp/tmp.hIUxGXaXt5 +++ return 0 ++ local client_container=psmdb-client-bb8b97679-5zh7x ++ kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' +++ mktemp ++ local LAST_OUT=/tmp/tmp.7hVelMsyfr +++ mktemp ++ local LAST_ERR=/tmp/tmp.6BQCGQzAlV ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-two:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.7hVelMsyfr ++ cat /tmp/tmp.6BQCGQzAlV ++ rm /tmp/tmp.7hVelMsyfr /tmp/tmp.6BQCGQzAlV ++ return 0 + ping=1 + desc 'ping return' + set +o xtrace ----------------------------------------------------------------------------------- ping return ----------------------------------------------------------------------------------- + '[' 1 '!=' 1 ']' + check_mongo_auth user-three:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 + local uri=user-three:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ run_mongo 'db.runCommand({ ping: 1 }).ok' user-three:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 mongodb '' --quiet ++ local 'command=db.runCommand({ ping: 1 }).ok' ++ local uri=user-three:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 ++ local driver=mongodb ++ local suffix=.svc.cluster.local ++ local mongo_flag=--quiet ++ local replica_set=rs0 ++ grep -E -v 'I NETWORK|W NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' ++ [[ user-three:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071 == *cfg* ]] +++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++++ mktemp +++ local LAST_OUT=/tmp/tmp.YfmsvZ9hBE ++++ mktemp +++ local LAST_ERR=/tmp/tmp.wYCqRAst66 +++ local exit_status=0 +++ local timeout=4 ++++ seq 0 2 +++ for i in $(seq 0 2) +++ set +e +++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ exit_status=0 +++ set -e +++ '[' 0 '!=' 0 -a -n 1 ']' +++ break +++ cat /tmp/tmp.YfmsvZ9hBE +++ cat /tmp/tmp.wYCqRAst66 +++ rm /tmp/tmp.YfmsvZ9hBE /tmp/tmp.wYCqRAst66 +++ return 0 ++ local client_container=psmdb-client-bb8b97679-5zh7x ++ kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-three:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' +++ mktemp ++ local LAST_OUT=/tmp/tmp.UzVueVbLth +++ mktemp ++ local LAST_ERR=/tmp/tmp.FmspfV3MhS ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''db.runCommand({ ping: 1 }).ok\n'\'' | mongo mongodb://user-three:new-user-two-password@some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 --quiet' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.UzVueVbLth ++ cat /tmp/tmp.FmspfV3MhS ++ rm /tmp/tmp.UzVueVbLth /tmp/tmp.FmspfV3MhS ++ return 0 + ping=1 + desc 'ping return' + set +o xtrace ----------------------------------------------------------------------------------- ping return ----------------------------------------------------------------------------------- + '[' 1 '!=' 1 ']' + desc 'check new user created after updated user db via CR' + set +o xtrace ----------------------------------------------------------------------------------- check new user created after updated user db via CR ----------------------------------------------------------------------------------- + kubectl_bin patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-three", "db":"newDb", "passwordSecretRef": { "name": "user-two", "key": "userTwoPassKey" }, "roles": [ {"db":"admin","name":"clusterAdmin"} ] } ]} }' ++ mktemp + local LAST_OUT=/tmp/tmp.a2yj7mNHKL ++ mktemp + local LAST_ERR=/tmp/tmp.06SlOr2VJX + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-three", "db":"newDb", "passwordSecretRef": { "name": "user-two", "key": "userTwoPassKey" }, "roles": [ {"db":"admin","name":"clusterAdmin"} ] } ]} }' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.a2yj7mNHKL perconaservermongodb.psmdb.percona.com/some-name patched + cat /tmp/tmp.06SlOr2VJX + rm /tmp/tmp.a2yj7mNHKL /tmp/tmp.06SlOr2VJX + return 0 + wait_for_running some-name-rs0 3 + local name=some-name-rs0 + let last_pod=2 + local check_cluster_readyness=true + set_debug + [[ 1 == 1 ]] + set -o xtrace + local rs_name=rs0 + local cluster_name=some-name ++ seq 0 2 + for i in $(seq 0 $last_pod) + [[ 0 -eq 2 ]] + wait_pod some-name-rs0-0 + local pod=some-name-rs0-0 + set +o xtrace waiting for pod/some-name-rs0-0 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 1 -eq 2 ]] + wait_pod some-name-rs0-1 + local pod=some-name-rs0-1 + set +o xtrace waiting for pod/some-name-rs0-1 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 2 -eq 2 ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.kCvCX6eG2S +++ mktemp ++ local LAST_ERR=/tmp/tmp.Tyn7izhlQx ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.kCvCX6eG2S ++ cat /tmp/tmp.Tyn7izhlQx ++ rm /tmp/tmp.kCvCX6eG2S /tmp/tmp.Tyn7izhlQx ++ return 0 + [[ '' == \t\r\u\e ]] + wait_pod some-name-rs0-2 + local pod=some-name-rs0-2 + set +o xtrace waiting for pod/some-name-rs0-2 to be ready.OK ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.W9eyNltoeJ +++ mktemp ++ local LAST_ERR=/tmp/tmp.pe1FEyvdAh ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.W9eyNltoeJ ++ cat /tmp/tmp.pe1FEyvdAh ++ rm /tmp/tmp.W9eyNltoeJ /tmp/tmp.pe1FEyvdAh ++ return 0 + [[ '' == \t\r\u\e ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.BG687f2lZA +++ mktemp ++ local LAST_ERR=/tmp/tmp.TfuG9LjaEy ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.BG687f2lZA ++ cat /tmp/tmp.TfuG9LjaEy ++ rm /tmp/tmp.BG687f2lZA /tmp/tmp.TfuG9LjaEy ++ return 0 + [[ '' == \t\r\u\e ]] + sleep 10 + [[ true == \t\r\u\e ]] + set +x Waiting for cluster readyness ++ get_user_cmd '"user-three"' ++ local 'user="user-three"' ++ cmd='(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare newDb '(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-three-newDb-db + local database=newDb + local 'command=(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-three-newDb-db + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use newDb\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local 'command=use newDb\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.V6cOjzTXPC +++ mktemp ++ local LAST_ERR=/tmp/tmp.6nBeZfGA1Y ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.V6cOjzTXPC ++ cat /tmp/tmp.6nBeZfGA1Y ++ rm /tmp/tmp.V6cOjzTXPC /tmp/tmp.6nBeZfGA1Y ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use newDb\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.T6lP0WuqeT ++ mktemp + local LAST_ERR=/tmp/tmp.Lm3EioxHJg + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use newDb\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.T6lP0WuqeT + cat /tmp/tmp.Lm3EioxHJg + rm /tmp/tmp.T6lP0WuqeT /tmp/tmp.Lm3EioxHJg + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-three-newDb-db.json /tmp/tmp.fYs8v8KT4v/user-three-newDb-db ++ get_user_cmd '"user-three"' ++ local 'user="user-three"' ++ cmd='(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-three-admin-db + local database=admin + local 'command=(function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-three-admin-db + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + local 'command=use admin\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.fhksUYu0Bb +++ mktemp ++ local LAST_ERR=/tmp/tmp.5JzNXDDdlb ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.fhksUYu0Bb ++ cat /tmp/tmp.5JzNXDDdlb ++ rm /tmp/tmp.fhksUYu0Bb /tmp/tmp.5JzNXDDdlb ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.r62rWxLb9D ++ mktemp + local LAST_ERR=/tmp/tmp.s6iU7oOCL5 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-three"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.r62rWxLb9D + cat /tmp/tmp.s6iU7oOCL5 + rm /tmp/tmp.r62rWxLb9D /tmp/tmp.s6iU7oOCL5 + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-three-admin-db.json /tmp/tmp.fYs8v8KT4v/user-three-admin-db + desc 'check new user created with default db and secret password key' + set +o xtrace ----------------------------------------------------------------------------------- check new user created with default db and secret password key ----------------------------------------------------------------------------------- + kubectl_bin patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-four", "passwordSecretRef": { "name": "user-two" }, "roles": [ {"db":"admin","name":"clusterAdmin"} ] } ]} }' ++ mktemp + local LAST_OUT=/tmp/tmp.PJ3nyf0E6g ++ mktemp + local LAST_ERR=/tmp/tmp.teA9oZfv4n + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl patch psmdb some-name --type=merge --patch '{ "spec": {"users":[ { "name":"user-four", "passwordSecretRef": { "name": "user-two" }, "roles": [ {"db":"admin","name":"clusterAdmin"} ] } ]} }' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.PJ3nyf0E6g perconaservermongodb.psmdb.percona.com/some-name patched + cat /tmp/tmp.teA9oZfv4n + rm /tmp/tmp.PJ3nyf0E6g /tmp/tmp.teA9oZfv4n + return 0 + wait_for_running some-name-rs0 3 + local name=some-name-rs0 + let last_pod=2 + local check_cluster_readyness=true + set_debug + [[ 1 == 1 ]] + set -o xtrace + local rs_name=rs0 + local cluster_name=some-name ++ seq 0 2 + for i in $(seq 0 $last_pod) + [[ 0 -eq 2 ]] + wait_pod some-name-rs0-0 + local pod=some-name-rs0-0 + set +o xtrace waiting for pod/some-name-rs0-0 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 1 -eq 2 ]] + wait_pod some-name-rs0-1 + local pod=some-name-rs0-1 + set +o xtrace waiting for pod/some-name-rs0-1 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 2 -eq 2 ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.0tAas1pmhe +++ mktemp ++ local LAST_ERR=/tmp/tmp.Qt2XLZFHZa ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.0tAas1pmhe ++ cat /tmp/tmp.Qt2XLZFHZa ++ rm /tmp/tmp.0tAas1pmhe /tmp/tmp.Qt2XLZFHZa ++ return 0 + [[ '' == \t\r\u\e ]] + wait_pod some-name-rs0-2 + local pod=some-name-rs0-2 + set +o xtrace waiting for pod/some-name-rs0-2 to be ready.OK ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.p6HVjjnv0j +++ mktemp ++ local LAST_ERR=/tmp/tmp.sMHxlldzDk ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.p6HVjjnv0j ++ cat /tmp/tmp.sMHxlldzDk ++ rm /tmp/tmp.p6HVjjnv0j /tmp/tmp.sMHxlldzDk ++ return 0 + [[ '' == \t\r\u\e ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.sZL33KQUEf +++ mktemp ++ local LAST_ERR=/tmp/tmp.YlrFN4WfG4 ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.sZL33KQUEf ++ cat /tmp/tmp.YlrFN4WfG4 ++ rm /tmp/tmp.sZL33KQUEf /tmp/tmp.YlrFN4WfG4 ++ return 0 + [[ '' == \t\r\u\e ]] + sleep 10 + [[ true == \t\r\u\e ]] + set +x Waiting for cluster readyness ++ get_user_cmd '"user-four"' ++ local 'user="user-four"' ++ cmd='(function() { var user = db.getUser("user-four"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' ++ echo '(function() { var user = db.getUser("user-four"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + compare admin '(function() { var user = db.getUser("user-four"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 user-four + local database=admin + local 'command=(function() { var user = db.getUser("user-four"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=user-four + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var user = db.getUser("user-four"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + sed '/"userId"/d' + local 'command=use admin\n (function() { var user = db.getUser("user-four"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();' + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.Z81HANk7VR +++ mktemp ++ local LAST_ERR=/tmp/tmp.EuLS4qudJ9 ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.Z81HANk7VR ++ cat /tmp/tmp.EuLS4qudJ9 ++ rm /tmp/tmp.Z81HANk7VR /tmp/tmp.EuLS4qudJ9 ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-four"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.RLEH2TQMj2 ++ mktemp + local LAST_ERR=/tmp/tmp.QKJ8E4c17r + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var user = db.getUser("user-four"); var roles = user.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); user.roles = roles; printjson(user); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.RLEH2TQMj2 + cat /tmp/tmp.QKJ8E4c17r + rm /tmp/tmp.RLEH2TQMj2 /tmp/tmp.QKJ8E4c17r + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/user-four.json /tmp/tmp.fYs8v8KT4v/user-four + desc 'check user role on cluster initialization' + set +o xtrace ----------------------------------------------------------------------------------- check user role on cluster initialization ----------------------------------------------------------------------------------- ++ get_role_cmd '"role-one"' ++ local 'role="role-one"' ++ cmd='(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' ++ echo '(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + compare admin '(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 role-one + local database=admin + local 'command=(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=role-one + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + local 'command=use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.GSSVFGpPMW +++ mktemp ++ local LAST_ERR=/tmp/tmp.OnmAXkPpOD ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.GSSVFGpPMW ++ cat /tmp/tmp.OnmAXkPpOD ++ rm /tmp/tmp.GSSVFGpPMW /tmp/tmp.OnmAXkPpOD ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.oSDbT4wmzi ++ mktemp + local LAST_ERR=/tmp/tmp.sqPnOVc3YM + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.oSDbT4wmzi + cat /tmp/tmp.sqPnOVc3YM + rm /tmp/tmp.oSDbT4wmzi /tmp/tmp.sqPnOVc3YM + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/role-one.json /tmp/tmp.fYs8v8KT4v/role-one + desc 'check role recreated after deleted from DB' + set +o xtrace ----------------------------------------------------------------------------------- check role recreated after deleted from DB ----------------------------------------------------------------------------------- + run_mongo 'use admin\n db.dropRole("role-one")' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local 'command=use admin\n db.dropRole("role-one")' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb+srv + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.YV09XkXQoE +++ mktemp ++ local LAST_ERR=/tmp/tmp.JKFtPL2zFi ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.YV09XkXQoE ++ cat /tmp/tmp.JKFtPL2zFi ++ rm /tmp/tmp.YV09XkXQoE /tmp/tmp.JKFtPL2zFi ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n db.dropRole("role-one")\n'\'' | mongo mongodb+srv://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.n6AmWLlBRY ++ mktemp + local LAST_ERR=/tmp/tmp.J34I6B5ezI + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n db.dropRole("role-one")\n'\'' | mongo mongodb+srv://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.n6AmWLlBRY Percona Server for MongoDB shell version v4.4.29-28 connecting to: mongodb://some-name-rs0-2.some-name-rs0.custom-users-roles-2071.svc.cluster.local:27017,some-name-rs0-0.some-name-rs0.custom-users-roles-2071.svc.cluster.local:27017,some-name-rs0-1.some-name-rs0.custom-users-roles-2071.svc.cluster.local:27017/admin?compressors=disabled&gssapiServiceName=mongodb&replicaSet=rs0&ssl=false Implicit session: session { "id" : UUID("c4758653-3f9c-450d-ae21-51b399b1efe0") } Percona Server for MongoDB server version: v8.0.19-7 WARNING: shell and server versions do not match switched to db admin true bye + cat /tmp/tmp.J34I6B5ezI + rm /tmp/tmp.n6AmWLlBRY /tmp/tmp.J34I6B5ezI + return 0 + sleep 15 ++ get_role_cmd '"role-one"' ++ local 'role="role-one"' ++ cmd='(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' ++ echo '(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + compare admin '(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 role-one + local database=admin + local 'command=(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=role-one + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local 'command=use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.I0mkyrzrZY +++ mktemp ++ local LAST_ERR=/tmp/tmp.ryPymj7K8v ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.I0mkyrzrZY ++ cat /tmp/tmp.ryPymj7K8v ++ rm /tmp/tmp.I0mkyrzrZY /tmp/tmp.ryPymj7K8v ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.NxLpxQ39sS ++ mktemp + local LAST_ERR=/tmp/tmp.H0jQA4CC0N + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.NxLpxQ39sS + cat /tmp/tmp.H0jQA4CC0N + rm /tmp/tmp.NxLpxQ39sS /tmp/tmp.H0jQA4CC0N + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/role-one.json /tmp/tmp.fYs8v8KT4v/role-one + desc 'delete initial role from CR and create a new one' + set +o xtrace ----------------------------------------------------------------------------------- delete initial role from CR and create a new one ----------------------------------------------------------------------------------- + kubectl_bin patch psmdb some-name --type=merge --patch '{ "spec": {"roles":[ { "role": "role-two", "db": "admin", "privileges": [ { "resource": { "db": "config", "collection": "" }, "actions": [ "find" ] } ], "roles": [ { "role": "read", "db": "admin" } ] } ] }}' ++ mktemp + local LAST_OUT=/tmp/tmp.DtXarcioRw ++ mktemp + local LAST_ERR=/tmp/tmp.CUC2Iph8l5 + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl patch psmdb some-name --type=merge --patch '{ "spec": {"roles":[ { "role": "role-two", "db": "admin", "privileges": [ { "resource": { "db": "config", "collection": "" }, "actions": [ "find" ] } ], "roles": [ { "role": "read", "db": "admin" } ] } ] }}' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.DtXarcioRw perconaservermongodb.psmdb.percona.com/some-name patched + cat /tmp/tmp.CUC2Iph8l5 + rm /tmp/tmp.DtXarcioRw /tmp/tmp.CUC2Iph8l5 + return 0 + wait_for_running some-name-rs0 3 + local name=some-name-rs0 + let last_pod=2 + local check_cluster_readyness=true + set_debug + [[ 1 == 1 ]] + set -o xtrace + local rs_name=rs0 + local cluster_name=some-name ++ seq 0 2 + for i in $(seq 0 $last_pod) + [[ 0 -eq 2 ]] + wait_pod some-name-rs0-0 + local pod=some-name-rs0-0 + set +o xtrace waiting for pod/some-name-rs0-0 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 1 -eq 2 ]] + wait_pod some-name-rs0-1 + local pod=some-name-rs0-1 + set +o xtrace waiting for pod/some-name-rs0-1 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 2 -eq 2 ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.qBQtfTHBG1 +++ mktemp ++ local LAST_ERR=/tmp/tmp.rjVUlZ596H ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.qBQtfTHBG1 ++ cat /tmp/tmp.rjVUlZ596H ++ rm /tmp/tmp.qBQtfTHBG1 /tmp/tmp.rjVUlZ596H ++ return 0 + [[ '' == \t\r\u\e ]] + wait_pod some-name-rs0-2 + local pod=some-name-rs0-2 + set +o xtrace waiting for pod/some-name-rs0-2 to be ready.OK ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.FDXUc9Q7t1 +++ mktemp ++ local LAST_ERR=/tmp/tmp.QV1LdT4G7e ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.FDXUc9Q7t1 ++ cat /tmp/tmp.QV1LdT4G7e ++ rm /tmp/tmp.FDXUc9Q7t1 /tmp/tmp.QV1LdT4G7e ++ return 0 + [[ '' == \t\r\u\e ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.9T5LHePSy5 +++ mktemp ++ local LAST_ERR=/tmp/tmp.IrxJQHWtW7 ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.9T5LHePSy5 ++ cat /tmp/tmp.IrxJQHWtW7 ++ rm /tmp/tmp.9T5LHePSy5 /tmp/tmp.IrxJQHWtW7 ++ return 0 + [[ '' == \t\r\u\e ]] + sleep 10 + [[ true == \t\r\u\e ]] + set +x Waiting for cluster readyness ++ get_role_cmd '"role-one"' ++ local 'role="role-one"' ++ cmd='(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' ++ echo '(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + compare admin '(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 role-one + local database=admin + local 'command=(function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=role-one + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local 'command=use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.Dg1BQAxIgn +++ mktemp ++ local LAST_ERR=/tmp/tmp.4buCshyYAq ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.Dg1BQAxIgn ++ cat /tmp/tmp.4buCshyYAq ++ rm /tmp/tmp.Dg1BQAxIgn /tmp/tmp.4buCshyYAq ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.sUAI4XDibD ++ mktemp + local LAST_ERR=/tmp/tmp.gCH9qQTYCi + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-one", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.sUAI4XDibD + cat /tmp/tmp.gCH9qQTYCi + rm /tmp/tmp.sUAI4XDibD /tmp/tmp.gCH9qQTYCi + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/role-one.json /tmp/tmp.fYs8v8KT4v/role-one ++ get_role_cmd '"role-two"' ++ local 'role="role-two"' ++ cmd='(function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' ++ echo '(function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + compare admin '(function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 role-two + local database=admin + local 'command=(function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=role-two + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + local 'command=use admin\n (function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + sed '/"userId"/d' + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.t0fnor77Ih +++ mktemp ++ local LAST_ERR=/tmp/tmp.uqa2vTr53M ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.t0fnor77Ih ++ cat /tmp/tmp.uqa2vTr53M ++ rm /tmp/tmp.t0fnor77Ih /tmp/tmp.uqa2vTr53M ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.c4j3wldJPg ++ mktemp + local LAST_ERR=/tmp/tmp.HrXRMhE46h + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.c4j3wldJPg + cat /tmp/tmp.HrXRMhE46h + rm /tmp/tmp.c4j3wldJPg /tmp/tmp.HrXRMhE46h + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/role-two.json /tmp/tmp.fYs8v8KT4v/role-two + desc 'check role update from CR' + set +o xtrace ----------------------------------------------------------------------------------- check role update from CR ----------------------------------------------------------------------------------- + kubectl_bin patch psmdb some-name --type=merge --patch '{ "spec": {"roles":[ { "role": "role-two", "db": "admin", "privileges": [ { "resource": { "db": "config", "collection": "" }, "actions": [ "find" ] } ] } ] }}' ++ mktemp + local LAST_OUT=/tmp/tmp.FNKOUNRTcK ++ mktemp + local LAST_ERR=/tmp/tmp.T4KUwasS6y + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl patch psmdb some-name --type=merge --patch '{ "spec": {"roles":[ { "role": "role-two", "db": "admin", "privileges": [ { "resource": { "db": "config", "collection": "" }, "actions": [ "find" ] } ] } ] }}' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.FNKOUNRTcK perconaservermongodb.psmdb.percona.com/some-name patched + cat /tmp/tmp.T4KUwasS6y + rm /tmp/tmp.FNKOUNRTcK /tmp/tmp.T4KUwasS6y + return 0 + wait_for_running some-name-rs0 3 + local name=some-name-rs0 + let last_pod=2 + local check_cluster_readyness=true + set_debug + [[ 1 == 1 ]] + set -o xtrace + local rs_name=rs0 + local cluster_name=some-name ++ seq 0 2 + for i in $(seq 0 $last_pod) + [[ 0 -eq 2 ]] + wait_pod some-name-rs0-0 + local pod=some-name-rs0-0 + set +o xtrace waiting for pod/some-name-rs0-0 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 1 -eq 2 ]] + wait_pod some-name-rs0-1 + local pod=some-name-rs0-1 + set +o xtrace waiting for pod/some-name-rs0-1 to be ready.OK + for i in $(seq 0 $last_pod) + [[ 2 -eq 2 ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.YieQG7JMVS +++ mktemp ++ local LAST_ERR=/tmp/tmp.lDeGNBvVBb ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].arbiter.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.YieQG7JMVS ++ cat /tmp/tmp.lDeGNBvVBb ++ rm /tmp/tmp.YieQG7JMVS /tmp/tmp.lDeGNBvVBb ++ return 0 + [[ '' == \t\r\u\e ]] + wait_pod some-name-rs0-2 + local pod=some-name-rs0-2 + set +o xtrace waiting for pod/some-name-rs0-2 to be ready.OK ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.ttN2ZFoqls +++ mktemp ++ local LAST_ERR=/tmp/tmp.aWfGjqDqS7 ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].nonvoting.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.ttN2ZFoqls ++ cat /tmp/tmp.aWfGjqDqS7 ++ rm /tmp/tmp.ttN2ZFoqls /tmp/tmp.aWfGjqDqS7 ++ return 0 + [[ '' == \t\r\u\e ]] ++ kubectl_bin get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.lU5AX2jr0T +++ mktemp ++ local LAST_ERR=/tmp/tmp.mwMYxheRGy ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get psmdb some-name -o 'jsonpath={.spec.replsets[?(@.name=="rs0")].hidden.enabled}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.lU5AX2jr0T ++ cat /tmp/tmp.mwMYxheRGy ++ rm /tmp/tmp.lU5AX2jr0T /tmp/tmp.mwMYxheRGy ++ return 0 + [[ '' == \t\r\u\e ]] + sleep 10 + [[ true == \t\r\u\e ]] + set +x Waiting for cluster readyness ++ get_role_cmd '"role-two"' ++ local 'role="role-two"' ++ cmd='(function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' ++ echo '(function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + compare admin '(function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 role-two-updated + local database=admin + local 'command=(function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local target=role-two-updated + [[ docker.io/perconalab/percona-server-mongodb-operator:main-mongod8.0 =~ 5\.0 ]] + run_mongo 'use admin\n (function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 mongodb + grep -E -v 'I NETWORK|W NETWORK|F NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' + local 'command=use admin\n (function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();' + local uri=userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 + local driver=mongodb + local suffix=.svc.cluster.local + local mongo_flag= + local replica_set=rs0 + [[ userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071 == *cfg* ]] + /usr/sbin/sed -re 's/ObjectId\("[0-9a-f]+"\)//; s/-[0-9]+.svc/-xxxesvc/' + sed '/"userId"/d' ++ kubectl_bin get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' +++ mktemp ++ local LAST_OUT=/tmp/tmp.fZAMElIZIf +++ mktemp ++ local LAST_ERR=/tmp/tmp.2rubDF7ZAu ++ local exit_status=0 ++ local timeout=4 +++ seq 0 2 ++ for i in $(seq 0 2) ++ set +e ++ kubectl get pods --selector=name=psmdb-client -o 'jsonpath={.items[].metadata.name}' ++ exit_status=0 ++ set -e ++ '[' 0 '!=' 0 -a -n 1 ']' ++ break ++ cat /tmp/tmp.fZAMElIZIf ++ cat /tmp/tmp.2rubDF7ZAu ++ rm /tmp/tmp.fZAMElIZIf /tmp/tmp.2rubDF7ZAu ++ return 0 + local client_container=psmdb-client-bb8b97679-5zh7x + kubectl_bin exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' ++ mktemp + local LAST_OUT=/tmp/tmp.JJRb8XBWYA ++ mktemp + local LAST_ERR=/tmp/tmp.Zgkv9S1k5Q + local exit_status=0 + local timeout=4 ++ seq 0 2 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=1 + set -e + '[' 1 '!=' 0 -a -n 1 ']' + cat /tmp/tmp.JJRb8XBWYA + cat /tmp/tmp.Zgkv9S1k5Q command terminated with exit code 1 + sleep 0 + for i in $(seq 0 2) + set +e + kubectl exec psmdb-client-bb8b97679-5zh7x -- bash -c 'printf '\''use admin\n (function() { var role = db.getRole("role-two", {showPrivileges: true, showAuthenticationRestrictions: true}); var roles = role.roles; roles.sort((a, b) => { if (a.role < b.role) return -1; if (a.role > b.role) return 1; return 0; }); role.roles = roles; printjson(role); })();\n'\'' | mongo mongodb://userAdmin:userAdmin123456@some-name-rs0.custom-users-roles-2071.svc.cluster.local/admin?ssl=false\&replicaSet=rs0 ' + exit_status=0 + set -e + '[' 0 '!=' 0 -a -n 1 ']' + break + cat /tmp/tmp.JJRb8XBWYA + cat /tmp/tmp.Zgkv9S1k5Q + rm /tmp/tmp.JJRb8XBWYA /tmp/tmp.Zgkv9S1k5Q + return 0 + diff /mnt/jenkins/workspace/cloud-psmdb-operator_PR-2221/e2e-tests/custom-users-roles/compare/role-two-updated.json /tmp/tmp.fYs8v8KT4v/role-two-updated 0a1,6 > {"t":{"$date":"2026-03-10T16:58:04.017Z"},"s":"I", "c":"NETWORK", "id":4333208, "ctx":"ReplicaSetMonitor-TaskExecutor","msg":"RSM host selection timeout","attr":{"replicaSet":"rs0","error":"FailedToSatisfyReadPreference: Could not find host matching read preference { mode: \"nearest\" } for set rs0"}} > Error: connect failed to replica set rs0/some-name-rs0.custom-users-roles-xxxesvc.cluster.local:27017 : > connect@src/mongo/shell/mongo.js:374:17 > @(connect):2:6 > exception: connect failed > exiting with code 1