This is an automated email from the ASF dual-hosted git repository.

lhotari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-helm-chart.git


The following commit(s) were added to refs/heads/master by this push:
     new 89c5987  Bugfix/pulsar manager init (#463)
89c5987 is described below

commit 89c5987b17fa460177e1b284dd373f4e8522db3f
Author: Martin <[email protected]>
AuthorDate: Thu Feb 22 16:37:25 2024 +0100

    Bugfix/pulsar manager init (#463)
    
    * add some more logs to the pulsar manager test
    
    * fix admin secret "double-encoding"
    
    * make pulsar-manager-cluster-initialize.yaml "rerunnable"
---
 .ci/helm.sh                                        | 10 ++--
 .../templates/pulsar-manager-admin-secret.yaml     |  8 ++--
 .../pulsar-manager-cluster-initialize.yaml         | 53 ++++++++++++++++------
 3 files changed, 50 insertions(+), 21 deletions(-)

diff --git a/.ci/helm.sh b/.ci/helm.sh
index 9945d19..d7b48b4 100644
--- a/.ci/helm.sh
+++ b/.ci/helm.sh
@@ -355,8 +355,10 @@ function ci::test_pulsar_manager() {
   echo "Testing pulsar manager"
 
   until ${KUBECTL} get jobs -n ${NAMESPACE} ${CLUSTER}-pulsar-manager-init -o 
json | jq -r '.status.conditions[] | select (.type | test("Complete")).status' 
| grep True; do sleep 3; done
-
-
+  ${KUBECTL} describe job -n ${NAMESPACE} ${CLUSTER}-pulsar-manager-init
+  ${KUBECTL} logs -n ${NAMESPACE} job.batch/${CLUSTER}-pulsar-manager-init
+  # this line errors in some tests? -  i do not know why, but is really useful 
for debugging, try: cat ./pulsar-manager.log otherwise
+  # ${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-pulsar-manager-0 -- cat 
/pulsar-manager/pulsar-manager/pulsar-manager.log
   echo "Checking Podname"
   podname=$(${KUBECTL} get pods -n ${NAMESPACE} -l component=pulsar-manager 
--no-headers -o custom-columns=":metadata.name")
   echo "Getting pulsar manager UI password"
@@ -377,7 +379,7 @@ function ci::test_pulsar_manager() {
   LOGIN_JSESSIONID=$(${KUBECTL} exec -n ${NAMESPACE} ${podname} -- grep -o 
"JSESSIONID=[a-zA-Z0-9_]*" headers.txt | sed 's/^.*=//')
 
   echo "Checking environment"
-  envs=$(${KUBECTL} exec -n ${NAMESPACE} ${podname} -- curl -X GET 
http://localhost:9527/pulsar-manager/environments \
+  envs=$(${KUBECTL} exec -n ${NAMESPACE} ${podname} -- curl -X GET 
http://127.0.0.1:9527/pulsar-manager/environments \
                   -H 'Content-Type: application/json' \
                   -H "token: $LOGIN_TOKEN" \
                   -H "X-XSRF-TOKEN: $CSRF_TOKEN" \
@@ -393,7 +395,7 @@ function ci::test_pulsar_manager() {
   # Force manager to query broker for tenant info. This will require use of 
the manager's JWT, if JWT authentication is enabled.
   echo "Checking tenants"
   pulsar_env=$(echo $envs | jq -r '.data[0].name')
-  tenants=$(${KUBECTL} exec -n ${NAMESPACE} ${podname} -- curl -X GET 
http://localhost:9527/pulsar-manager/admin/v2/tenants \
+  tenants=$(${KUBECTL} exec -n ${NAMESPACE} ${podname} -- curl -X GET 
http://127.0.0.1:9527/pulsar-manager/admin/v2/tenants \
                   -H 'Content-Type: application/json' \
                   -H "token: $LOGIN_TOKEN" \
                   -H "X-XSRF-TOKEN: $CSRF_TOKEN" \
diff --git a/charts/pulsar/templates/pulsar-manager-admin-secret.yaml 
b/charts/pulsar/templates/pulsar-manager-admin-secret.yaml
index 90cf91f..8d20b26 100644
--- a/charts/pulsar/templates/pulsar-manager-admin-secret.yaml
+++ b/charts/pulsar/templates/pulsar-manager-admin-secret.yaml
@@ -40,13 +40,13 @@ data:
   {{- $secretObj := lookup "v1" "Secret" $namespace $secretName | default dict 
}}
   {{- $secretData := (get $secretObj "data") | default dict }}
 
-  {{- $ui_user := (get $secretData "UI_USERNAME") | default 
(.Values.pulsar_manager.admin.ui_username) | default ("pulsar") | b64enc }}
-  {{- $ui_password := (get $secretData "UI_PASSWORD") | default 
(.Values.pulsar_manager.admin.ui_password) | default (randAlphaNum 32) | b64enc 
}}
+  {{- $ui_user := ((get $secretData "UI_USERNAME") | b64dec) | default 
(.Values.pulsar_manager.admin.ui_username) | default ("pulsar") | b64enc }}
+  {{- $ui_password := ((get $secretData "UI_PASSWORD") | b64dec) | default 
(.Values.pulsar_manager.admin.ui_password) | default (randAlphaNum 32) | b64enc 
}}
   UI_USERNAME: {{ $ui_user | quote }}
   UI_PASSWORD: {{ $ui_password | quote }}
 
-  {{- $db_user := (get $secretData "DB_USERNAME") | default 
(.Values.pulsar_manager.admin.db_username) | default ("pulsar") | b64enc }}
-  {{- $db_password := (get $secretData "DB_PASSWORD") | default 
(.Values.pulsar_manager.admin.db_password) | default (randAlphaNum 32) | b64enc 
}}
+  {{- $db_user := ((get $secretData "DB_USERNAME") | b64dec) | default 
(.Values.pulsar_manager.admin.db_username) | default ("pulsar") | b64enc }}
+  {{- $db_password := ((get $secretData "DB_PASSWORD") | b64dec) | default 
(.Values.pulsar_manager.admin.db_password) | default (randAlphaNum 32) | b64enc 
}}
   DB_USERNAME: {{ $db_user | quote }}
   DB_PASSWORD: {{ $db_password | quote }}
 
diff --git a/charts/pulsar/templates/pulsar-manager-cluster-initialize.yaml 
b/charts/pulsar/templates/pulsar-manager-cluster-initialize.yaml
index 14ff169..419391f 100644
--- a/charts/pulsar/templates/pulsar-manager-cluster-initialize.yaml
+++ b/charts/pulsar/templates/pulsar-manager-cluster-initialize.yaml
@@ -82,24 +82,41 @@ spec:
             - |
               ADMIN_URL={{ template "pulsar.fullname" . }}-{{ 
.Values.pulsar_manager.component }}-admin:{{ 
.Values.pulsar_manager.adminService.port }}
               CSRF_TOKEN=$(curl http://${ADMIN_URL}/pulsar-manager/csrf-token)
-              {{/* set admin credentials */}}
-              curl -v \
-                -X PUT http://${ADMIN_URL}/pulsar-manager/users/superuser \
-                -H "X-XSRF-TOKEN: $CSRF_TOKEN" \
-                -H "Cookie: XSRF-TOKEN=$CSRF_TOKEN;" \
-                -H 'Content-Type: application/json' \
-                -d '{"name": "'"${USERNAME}"'", "password": "'"${PASSWORD}"'", 
"description": "Helm-managed Admin Account", "email": 
"'"${USERNAME}"'@pulsar.org"}'
-
               UI_URL={{ template "pulsar.fullname" . }}-{{ 
.Values.pulsar_manager.component }}:{{ .Values.pulsar_manager.service.port }}
-              {{/* login as admin */}}
-              curl -v \
+
+              {{/* check if account is already existing */}}
+              LOGIN_REPLY=$(curl -v \
                 -X POST http://${UI_URL}/pulsar-manager/login \
                 -H 'Accept: application/json, text/plain, */*' \
                 -H 'Content-Type: application/json' \
                 -H "X-XSRF-TOKEN: $CSRF_TOKEN" \
                 -H "Cookie: XSRF-TOKEN=$CSRF_TOKEN" \
                 -sS -D headers.txt \
-                -d '{"username": "'${USERNAME}'", "password": "'${PASSWORD}'"}'
+                -d '{"username": "'${USERNAME}'", "password": 
"'${PASSWORD}'"}')
+              echo "$LOGIN_REPLY"
+
+              if [ -n "$(echo "$LOGIN_REPLY" | grep 'success')" ]; then
+                echo "account already exists"
+              else
+                echo "creating account"
+                {{/* set admin credentials */}}
+                curl -v \
+                  -X PUT http://${ADMIN_URL}/pulsar-manager/users/superuser \
+                  -H "X-XSRF-TOKEN: $CSRF_TOKEN" \
+                  -H "Cookie: XSRF-TOKEN=$CSRF_TOKEN;" \
+                  -H 'Content-Type: application/json' \
+                  -d '{"name": "'"${USERNAME}"'", "password": 
"'"${PASSWORD}"'", "description": "Helm-managed Admin Account", "email": 
"'"${USERNAME}"'@pulsar.org"}'
+                {{/* login as admin */}}
+                LOGIN_REPLY=$(curl -v \
+                  -X POST http://${UI_URL}/pulsar-manager/login \
+                  -H 'Accept: application/json, text/plain, */*' \
+                  -H 'Content-Type: application/json' \
+                  -H "X-XSRF-TOKEN: $CSRF_TOKEN" \
+                  -H "Cookie: XSRF-TOKEN=$CSRF_TOKEN" \
+                  -sS -D headers.txt \
+                  -d '{"username": "'${USERNAME}'", "password": 
"'${PASSWORD}'"}')
+                echo "$LOGIN_REPLY"
+              fi
 
               LOGIN_TOKEN=$(grep "token:" headers.txt | sed 's/^.*: //')
               LOGIN_JSESSSIONID=$(grep -o "JSESSIONID=[a-zA-Z0-9_]*" 
headers.txt | sed 's/^.*=//')
@@ -111,15 +128,25 @@ spec:
               BROKER_URL="https://{{ template "pulsar.fullname" . }}-{{ 
.Values.broker.component }}:{{ .Values.broker.ports.https }}"
               {{- end }}
               BOOKIE_URL="http://{{ template "pulsar.fullname" . }}-{{ 
.Values.bookkeeper.component }}:{{ .Values.bookkeeper.ports.http }}"
+              echo '{ "name": "{{ template "pulsar.fullname" . }}", "broker": 
"'$BROKER_URL'", "bookie": "'$BOOKIE_URL'"}'
 
-              curl -v \
+              ENVIRONMENT_REPLY=$(curl -v \
                 -X PUT 
http://${UI_URL}/pulsar-manager/environments/environment \
                 -H 'Content-Type: application/json' \
                 -H "token: $LOGIN_TOKEN" \
                 -H "X-XSRF-TOKEN: $CSRF_TOKEN" \
                 -H "username: $USERNAME" \
                 -H "Cookie: XSRF-TOKEN=$CSRF_TOKEN; 
JSESSIONID=$LOGIN_JSESSSIONID;" \
-                -d '{ "name": "{{ template "pulsar.fullname" . }}", "broker": 
"'$BROKER_URL'", "bookie": "'$BOOKIE_URL'"}'
+                -d '{ "name": "{{ template "pulsar.fullname" . }}", "broker": 
"'$BROKER_URL'", "bookie": "'$BOOKIE_URL'"}')
+              echo "$ENVIRONMENT_REPLY"
+
+              if [ -n "$(echo "$ENVIRONMENT_REPLY" | grep -e 'success' -e 
'exist')" ]; then
+                echo "Successfully created / found existing environment"
+                exit 0
+              else
+                echo "Error creating environment"
+                exit 1
+              fi
           env:
             - name: USERNAME
               valueFrom:

Reply via email to