github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/api/cloudcontroller/ccv2/stack.go (about) 1 package ccv2 2 3 import ( 4 "encoding/json" 5 6 "code.cloudfoundry.org/cli/api/cloudcontroller" 7 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2/internal" 8 ) 9 10 // Stack represents a Cloud Controller Stack. 11 type Stack struct { 12 GUID string 13 Name string 14 Description string 15 } 16 17 // UnmarshalJSON helps unmarshal a Cloud Controller Stack response. 18 func (stack *Stack) UnmarshalJSON(data []byte) error { 19 var ccStack struct { 20 Metadata internal.Metadata `json:"metadata"` 21 Entity struct { 22 Name string `json:"name"` 23 Description string `json:"description"` 24 } `json:"entity"` 25 } 26 if err := json.Unmarshal(data, &ccStack); err != nil { 27 return err 28 } 29 30 stack.GUID = ccStack.Metadata.GUID 31 stack.Name = ccStack.Entity.Name 32 stack.Description = ccStack.Entity.Description 33 return nil 34 } 35 36 // GetStack returns the requested stack. 37 func (client *Client) GetStack(guid string) (Stack, Warnings, error) { 38 request, err := client.newHTTPRequest(requestOptions{ 39 RequestName: internal.StackRequest, 40 URIParams: Params{"stack_guid": guid}, 41 }) 42 if err != nil { 43 return Stack{}, nil, err 44 } 45 46 var stack Stack 47 response := cloudcontroller.Response{ 48 Result: &stack, 49 } 50 51 err = client.connection.Make(request, &response) 52 return stack, response.Warnings, err 53 }