github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/common/organizations.go (about) 1 package common 2 3 import ( 4 "fmt" 5 6 "github.com/kubeshop/testkube/pkg/ui" 7 8 cloudclient "github.com/kubeshop/testkube/pkg/cloud/client" 9 ) 10 11 type Organization struct { 12 Id string 13 Name string 14 } 15 16 func GetOrganizations(url, token string) ([]cloudclient.Organization, error) { 17 c := cloudclient.NewOrganizationsClient(url, token) 18 return c.List() 19 } 20 21 func GetOrgNames(orgs []cloudclient.Organization) []string { 22 var names []string 23 for _, org := range orgs { 24 names = append(names, org.Name) 25 } 26 return names 27 } 28 29 func FindOrgId(orgs []cloudclient.Organization, name string) string { 30 for _, org := range orgs { 31 if org.Name == name { 32 return org.Id 33 } 34 } 35 return "" 36 } 37 38 func UiGetOrganizationId(url, token string) (string, string, error) { 39 // Choose organization from orgs available 40 orgs, err := GetOrganizations(url, token) 41 if err != nil { 42 return "", "", fmt.Errorf("failed to get organizations: %s", err.Error()) 43 } 44 45 if len(orgs) == 0 { 46 return "", "", fmt.Errorf("no organizations available, please create one first") 47 } 48 49 orgNames := GetOrgNames(orgs) 50 orgName := ui.Select("Choose organization", orgNames) 51 orgId := FindOrgId(orgs, orgName) 52 53 return orgId, orgName, nil 54 }