github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+incompatible/api/cloudcontroller/ccv2/space_summary.go (about) 1 package ccv2 2 3 import ( 4 "code.cloudfoundry.org/cli/api/cloudcontroller" 5 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2/internal" 6 ) 7 8 // SpaceSummaryApplication represents an application inside a space 9 type SpaceSummaryApplication struct { 10 Name string `json:"name"` 11 ServiceNames []string `json:"service_names"` 12 } 13 14 // SpaceSummaryService represents a service inside a space 15 type SpaceSummaryService struct { 16 GUID string 17 Label string 18 ServiceBrokerName string 19 } 20 21 // SpaceSummaryServicePlan represents a service plan inside a space 22 type SpaceSummaryServicePlan struct { 23 GUID string `json:"guid"` 24 Name string `json:"name"` 25 Service SpaceSummaryService `json:"service"` 26 } 27 28 // SpaceSummaryServiceInstance represents a service instance inside a space 29 type SpaceSummaryServiceInstance struct { 30 LastOperation LastOperation `json:"last_operation"` 31 Name string `json:"name"` 32 ServicePlan SpaceSummaryServicePlan `json:"service_plan"` 33 } 34 35 // SpaceSummary represents a service instance inside a space 36 type SpaceSummary struct { 37 Applications []SpaceSummaryApplication 38 Name string 39 ServiceInstances []SpaceSummaryServiceInstance 40 } 41 42 // UnmarshalJSON helps unmarshal a Cloud Controller Space Summary response. 43 func (spaceSummary *SpaceSummary) UnmarshalJSON(data []byte) error { 44 var ccSpaceSummary struct { 45 Applications []SpaceSummaryApplication `json:"apps"` 46 Name string `json:"name"` 47 ServiceInstances []SpaceSummaryServiceInstance `json:"services"` 48 } 49 err := cloudcontroller.DecodeJSON(data, &ccSpaceSummary) 50 if err != nil { 51 return err 52 } 53 54 spaceSummary.Name = ccSpaceSummary.Name 55 spaceSummary.Applications = ccSpaceSummary.Applications 56 spaceSummary.ServiceInstances = ccSpaceSummary.ServiceInstances 57 58 return nil 59 } 60 61 // GetSpaceSummary returns the summary of the space with the given GUID. 62 func (client *Client) GetSpaceSummary(spaceGUID string) (SpaceSummary, Warnings, error) { 63 request, err := client.newHTTPRequest(requestOptions{ 64 RequestName: internal.GetSpaceSummaryRequest, 65 URIParams: Params{"space_guid": spaceGUID}, 66 }) 67 if err != nil { 68 return SpaceSummary{}, nil, err 69 } 70 71 var spaceSummary SpaceSummary 72 response := cloudcontroller.Response{ 73 DecodeJSONResponseInto: &spaceSummary, 74 } 75 76 err = client.connection.Make(request, &response) 77 return spaceSummary, response.Warnings, err 78 }