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 }