/
get_cf_api_endpoint
executable file
·45 lines (29 loc) · 1.17 KB
/
get_cf_api_endpoint
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env bash
# Determine the Cloud Foundry API endpoint for a given Cloud Foundry
# environment instance connected to a subaccount on BTP. Subaccount
# is identified by display name specified as a parameter, default is
# "trial".
set -o errexit
set -o pipefail
getsubguid() {
# Get GUID for given subaccount display name
local subname=$1
btp --format json list accounts/subaccount 2> /dev/null \
| jq -r --arg subname "$subname" '.value[] | select(.displayName == $subname) | .guid'
}
getsubenvinst() {
# Get details (JSON) of an environment instance for a given subaccount GUID
local subguid=$1
btp --format json list accounts/environment-instance --subaccount "$subguid" 2> /dev/null \
| jq -r --arg subguid "$subguid" '.environmentInstances[] | select(.environmentType == "cloudfoundry" and .subaccountGUID == $subguid)'
}
getapiendpoint() {
# Given JSON details of a CF environment instance, parse out the API endpoint URL
local cfenvjson=$1
jq -r '.labels | fromjson | (."API Endpoint" // ."API Endpoint:")' <<< "$cfenvjson"
}
main() {
local displayname="${1:-trial}"
getapiendpoint "$(getsubenvinst "$(getsubguid "$displayname")")"
}
main "$@"