github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/api/cloudcontroller/ccv3/build.go (about)

     1  package ccv3
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/json"
     6  
     7  	"code.cloudfoundry.org/cli/api/cloudcontroller"
     8  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/internal"
     9  )
    10  
    11  type BuildState string
    12  
    13  const (
    14  	BuildStateFailed  BuildState = "FAILED"
    15  	BuildStateStaged  BuildState = "STAGED"
    16  	BuildStateStaging BuildState = "STAGING"
    17  )
    18  
    19  type Build struct {
    20  	GUID    string     `json:"guid,omitempty"`
    21  	Package Package    `json:"package"`
    22  	State   BuildState `json:"state,omitempty"`
    23  	Droplet Droplet    `json:"droplet"`
    24  }
    25  
    26  func (b Build) MarshalJSON() ([]byte, error) {
    27  	var ccBuild struct {
    28  		Package struct {
    29  			GUID string `json:"guid"`
    30  		} `json:"package"`
    31  	}
    32  
    33  	ccBuild.Package.GUID = b.Package.GUID
    34  
    35  	return json.Marshal(ccBuild)
    36  }
    37  
    38  // CreateBuild creates the given build, requires Package GUID to be set on the
    39  // build.
    40  func (client *Client) CreateBuild(build Build) (Build, Warnings, error) {
    41  	bodyBytes, err := json.Marshal(build)
    42  	if err != nil {
    43  		return Build{}, nil, err
    44  	}
    45  
    46  	request, err := client.newHTTPRequest(requestOptions{
    47  		RequestName: internal.PostBuildRequest,
    48  		Body:        bytes.NewReader(bodyBytes),
    49  	})
    50  
    51  	var responseBuild Build
    52  	response := cloudcontroller.Response{
    53  		Result: &responseBuild,
    54  	}
    55  	err = client.connection.Make(request, &response)
    56  
    57  	return responseBuild, response.Warnings, err
    58  }
    59  
    60  // GetBuild gets the build with the given GUID.
    61  func (client *Client) GetBuild(guid string) (Build, Warnings, error) {
    62  	request, err := client.newHTTPRequest(requestOptions{
    63  		RequestName: internal.GetBuildRequest,
    64  		URIParams:   internal.Params{"guid": guid},
    65  	})
    66  	if err != nil {
    67  		return Build{}, nil, err
    68  	}
    69  
    70  	var responseBuild Build
    71  	response := cloudcontroller.Response{
    72  		Result: &responseBuild,
    73  	}
    74  	err = client.connection.Make(request, &response)
    75  
    76  	return responseBuild, response.Warnings, err
    77  }