|
1 | 1 | #!/usr/bin/env bash
|
2 | 2 |
|
3 | 3 | function get_mongodb_uri() {
|
4 |
| - local namespace=$1 |
5 |
| - local cluster=$2 |
6 |
| - local replset=$3 |
7 |
| - local username=$4 |
8 |
| - local password=$5 |
9 |
| - local endpoint=$6 |
10 |
| - local database=$7 |
11 |
| - local user_secrets="" |
12 |
| - local sharding="" |
13 |
| - local replset_exposed="" |
| 4 | + local namespace=$1 |
| 5 | + local cluster=$2 |
| 6 | + local replset=$3 |
| 7 | + local username=$4 |
| 8 | + local password=$5 |
| 9 | + local endpoint=$6 |
| 10 | + local database=$7 |
| 11 | + local user_secrets="" |
| 12 | + local sharding="" |
| 13 | + local replset_exposed="" |
14 | 14 |
|
15 |
| - if [[ -z "${password}" && "${username}" == "backup" ]]; then |
16 |
| - user_secrets=$(kubectl get psmdb ${cluster} -ojson | jq -r ".spec.secrets.users") |
17 |
| - password=$(kubectl get secrets ${user_secrets} -o jsonpath="{.data.MONGODB_BACKUP_PASSWORD}" ${namespace:+--namespace $namespace} | base64 --decode) |
18 |
| - elif [[ ! -z "${password}" && "${username}" == "backup" ]]; then |
19 |
| - echo "When specifying password please specify --user also." >&2 |
20 |
| - return 1 |
21 |
| - fi |
| 15 | + if [[ -z ${password} && ${username} == "backup" ]]; then |
| 16 | + user_secrets=$(kubectl get psmdb "${cluster}" -ojson | jq -r ".spec.secrets.users") |
| 17 | + password=$(kubectl get secrets "${user_secrets}" -o jsonpath="{.data.MONGODB_BACKUP_PASSWORD}" ${namespace:+--namespace $namespace} | base64 --decode) |
| 18 | + elif [[ -n ${password} && ${username} == "backup" ]]; then |
| 19 | + echo "When specifying password please specify --user also." >&2 |
| 20 | + return 1 |
| 21 | + fi |
22 | 22 |
|
23 |
| - sharding=$(kubectl get psmdb ${cluster} -o jsonpath='{.spec.sharding.enabled}') |
24 |
| - if [[ "${sharding}" == "false" && -z "${replset}" ]]; then |
25 |
| - replset=$(kubectl get psmdb ${cluster} -o jsonpath='{.spec.replsets[0].name}' ${namespace:+--namespace $namespace}) |
26 |
| - fi |
| 23 | + sharding=$(kubectl get psmdb "${cluster}" -o jsonpath='{.spec.sharding.enabled}') |
| 24 | + if [[ ${sharding} == "false" && -z ${replset} ]]; then |
| 25 | + replset=$(kubectl get psmdb "${cluster}" -o jsonpath='{.spec.replsets[0].name}' ${namespace:+--namespace $namespace}) |
| 26 | + fi |
27 | 27 |
|
28 |
| - if [[ ! -z "${replset}" ]]; then |
29 |
| - if [[ "${replset}" != "cfg" ]]; then |
30 |
| - replset_exposed=$(kubectl get psmdb ${cluster} -ojson | jq -r ".spec.replsets | select(.[].name | contains (\"${replset}\")) | .[].expose.enabled") |
31 |
| - else |
32 |
| - replset_exposed=$(kubectl get psmdb ${cluster} -ojson | jq -r ".spec.sharding.configsvrReplSet.expose.enabled") |
33 |
| - fi |
| 28 | + if [[ -n ${replset} ]]; then |
| 29 | + if [[ ${replset} != "cfg" ]]; then |
| 30 | + replset_exposed=$(kubectl get psmdb "${cluster}" -ojson | jq -r ".spec.replsets | select(.[].name | contains (\"${replset}\")) | .[].expose.enabled" | head -n1) |
| 31 | + else |
| 32 | + replset_exposed=$(kubectl get psmdb "${cluster}" -ojson | jq -r ".spec.sharding.configsvrReplSet.expose.enabled") |
| 33 | + fi |
34 | 34 |
|
35 |
| - if [[ -z "${replset_exposed}" ]]; then |
36 |
| - echo "Replica set name not found!" >&2 |
37 |
| - return 1 |
38 |
| - fi |
39 |
| - fi |
| 35 | + if [[ -z ${replset_exposed} ]]; then |
| 36 | + echo "Replica set name not found!" >&2 |
| 37 | + return 1 |
| 38 | + fi |
| 39 | + fi |
40 | 40 |
|
41 |
| - if [[ -z "${endpoint}" ]]; then |
42 |
| - endpoint=$(kubectl get psmdb ${cluster} -o jsonpath="{.status.host}" ${namespace:+--namespace $namespace}) |
43 |
| - if [[ ! -z "${replset}" && "${replset_exposed}" == "false" ]]; then |
44 |
| - endpoint="${cluster}-${replset}.${namespace}.svc.cluster.local" |
45 |
| - elif [[ ! -z "${replset}" && "${replset_exposed}" == "true" ]]; then |
46 |
| - endpoint="${cluster}-${replset}-0.${namespace}.svc.cluster.local" |
47 |
| - fi |
48 |
| - fi |
| 41 | + if [[ -z ${endpoint} ]]; then |
| 42 | + endpoint=$(kubectl get psmdb "${cluster}" -o jsonpath="{.status.host}" ${namespace:+--namespace $namespace}) |
| 43 | + if [[ -n ${replset} && ${replset_exposed} == "false" ]]; then |
| 44 | + endpoint="${cluster}-${replset}.${namespace}.svc.cluster.local" |
| 45 | + elif [[ -n ${replset} && ${replset_exposed} == "true" ]]; then |
| 46 | + endpoint="${cluster}-${replset}-0.${namespace}.svc.cluster.local" |
| 47 | + fi |
| 48 | + fi |
49 | 49 |
|
50 |
| - echo "mongodb://${username}:${password}@${endpoint}/${database}?ssl=false&authSource=admin${replset:+&replicaSet=$replset}" |
| 50 | + echo "mongodb://${username}:${password}@${endpoint}/${database}?ssl=false&authSource=admin${replset:+&replicaSet=$replset}" |
51 | 51 | }
|
0 commit comments