github.com/sleungcy/cli@v7.1.0+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 MaintenanceInfo MaintenanceInfo `json:"maintenance_info"` 27 } 28 29 // SpaceSummaryServiceInstance represents a service instance inside a space 30 type SpaceSummaryServiceInstance struct { 31 LastOperation LastOperation `json:"last_operation"` 32 Name string `json:"name"` 33 ServicePlan SpaceSummaryServicePlan `json:"service_plan"` 34 MaintenanceInfo MaintenanceInfo `json:"maintenance_info"` 35 } 36 37 // SpaceSummary represents a service instance inside a space 38 type SpaceSummary struct { 39 Applications []SpaceSummaryApplication 40 Name string 41 ServiceInstances []SpaceSummaryServiceInstance 42 } 43 44 // UnmarshalJSON helps unmarshal a Cloud Controller Space Summary response. 45 func (spaceSummary *SpaceSummary) UnmarshalJSON(data []byte) error { 46 var ccSpaceSummary struct { 47 Applications []SpaceSummaryApplication `json:"apps"` 48 Name string `json:"name"` 49 ServiceInstances []SpaceSummaryServiceInstance `json:"services"` 50 } 51 err := cloudcontroller.DecodeJSON(data, &ccSpaceSummary) 52 if err != nil { 53 return err 54 } 55 56 spaceSummary.Name = ccSpaceSummary.Name 57 spaceSummary.Applications = ccSpaceSummary.Applications 58 spaceSummary.ServiceInstances = ccSpaceSummary.ServiceInstances 59 60 return nil 61 } 62 63 // GetSpaceSummary returns the summary of the space with the given GUID. 64 func (client *Client) GetSpaceSummary(spaceGUID string) (SpaceSummary, Warnings, error) { 65 request, err := client.newHTTPRequest(requestOptions{ 66 RequestName: internal.GetSpaceSummaryRequest, 67 URIParams: Params{"space_guid": spaceGUID}, 68 }) 69 if err != nil { 70 return SpaceSummary{}, nil, err 71 } 72 73 var spaceSummary SpaceSummary 74 response := cloudcontroller.Response{ 75 DecodeJSONResponseInto: &spaceSummary, 76 } 77 78 err = client.connection.Make(request, &response) 79 return spaceSummary, response.Warnings, err 80 }