github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+incompatible/api/cloudcontroller/ccv3/droplet.go (about)

     1  package ccv3
     2  
     3  import (
     4  	"net/url"
     5  
     6  	"code.cloudfoundry.org/cli/api/cloudcontroller"
     7  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccerror"
     8  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/internal"
     9  )
    10  
    11  type DropletState string
    12  
    13  const (
    14  	DropletStateStaged  DropletState = "STAGED"
    15  	DropletStateFailed  DropletState = "FAILED"
    16  	DropletStateCopying DropletState = "COPYING"
    17  	DropletStateExpired DropletState = "EXPIRED"
    18  )
    19  
    20  type Droplet struct {
    21  	GUID       string             `json:"guid"`
    22  	State      DropletState       `json:"state"`
    23  	CreatedAt  string             `json:"created_at"`
    24  	Stack      string             `json:"stack,omitempty"`
    25  	Buildpacks []DropletBuildpack `json:"buildpacks,omitempty"`
    26  	Image      string             `json:"image"`
    27  }
    28  
    29  type DropletBuildpack struct {
    30  	Name         string `json:"name"`
    31  	DetectOutput string `json:"detect_output"`
    32  }
    33  
    34  // GetApplicationDroplets returns the Droplets for a given app
    35  func (client *Client) GetApplicationDroplets(appGUID string, query url.Values) ([]Droplet, Warnings, error) {
    36  	request, err := client.newHTTPRequest(requestOptions{
    37  		RequestName: internal.GetAppDropletsRequest,
    38  		URIParams:   map[string]string{"app_guid": appGUID},
    39  		Query:       query,
    40  	})
    41  	if err != nil {
    42  		return nil, nil, err
    43  	}
    44  
    45  	var responseDroplets []Droplet
    46  	warnings, err := client.paginate(request, Droplet{}, func(item interface{}) error {
    47  		if droplet, ok := item.(Droplet); ok {
    48  			responseDroplets = append(responseDroplets, droplet)
    49  		} else {
    50  			return ccerror.UnknownObjectInListError{
    51  				Expected:   Droplet{},
    52  				Unexpected: item,
    53  			}
    54  		}
    55  		return nil
    56  	})
    57  
    58  	return responseDroplets, warnings, err
    59  }
    60  
    61  func (client *Client) GetDroplet(dropletGUID string) (Droplet, Warnings, error) {
    62  	request, err := client.newHTTPRequest(requestOptions{
    63  		RequestName: internal.GetDropletRequest,
    64  		URIParams:   map[string]string{"droplet_guid": dropletGUID},
    65  	})
    66  	if err != nil {
    67  		return Droplet{}, nil, err
    68  	}
    69  
    70  	var responseDroplet Droplet
    71  	response := cloudcontroller.Response{
    72  		Result: &responseDroplet,
    73  	}
    74  	err = client.connection.Make(request, &response)
    75  
    76  	return responseDroplet, response.Warnings, err
    77  }