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  }