Spaces and Orgs a user is associated to in CloudFoundry
Assumptions/ Prerequisites
- You have admin rights of CloudFoundry.
- You have
cf
cli installed. - You are using v3 of CloudFoundry API.
Script to get spaces, orgs and roles associated with an user in CloudFoundry
1#!/bin/bash
2
3set -eu -o pipefail
4userObject="$(cf curl '/v3/users?usernames=<SomeUserName>')"
5orgName=""
6spaceName=""
7userFound="$(echo "$userObject" | jq .pagination.total_results)"
8#This script assumes there should be only 1 user with the given username
9if [ "$userFound" == "1" ]; then
10 userID="$(echo "$userObject" | jq -r .resources[0].guid)"
11#This script assumes that the user has got maximum of 1000 roles, otherwise increase the value from 1000 in below line
12 rolesObject="$(cf curl "/v3/roles?user_guids=$userID&per_page=1000")"
13 for key in $(jq '.resources | keys | .[]' <<< "$rolesObject"); do
14 value=$(jq -r ".resources[$key]" <<< "$rolesObject");
15 roleType="$(jq -r '.type' <<< "$value")"
16 if [[ "$roleType" == *"org"* ]]; then
17 orgURL="/v3/organizations/$(jq -r '.relationships.organization.data.guid' <<< "$value")"
18 orgName="$(cf curl "$orgURL" | jq -r .name)"
19 fi
20 if [[ "$roleType" == *"space"* ]]; then
21 spaceURL="/v3/spaces/$(jq -r '.relationships.space.data.guid' <<< "$value")"
22 spaceName="$(cf curl "$spaceURL" | jq -r .name)"
23 orgURL="/v3/organizations/$(cf curl "$spaceURL" | jq -r '.relationships.organization.data.guid')"
24 orgName="$(cf curl "$orgURL" | jq -r .name)"
25 fi
26#This part prints the output, adjust it to your requirements
27 echo "Role: $roleType"
28 echo "OrgName: $orgName"
29 echo "SpaceName: $spaceName"
30 done
31fi
To use the above script login to your CloudFoundry api using cf
cli and admin credentials.
Than in the above script replace <SomeUserName>
with the username for which you need the details, and then run the script.
That is it, you get the required data.