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  }