github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/payload/api/private/helpers.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package private 5 6 import ( 7 "github.com/juju/errors" 8 "gopkg.in/juju/names.v2" 9 10 "github.com/juju/juju/apiserver/common" 11 "github.com/juju/juju/apiserver/params" 12 "github.com/juju/juju/payload" 13 "github.com/juju/juju/payload/api" 14 ) 15 16 // API2Result converts the API result to a payload.Result. 17 func API2Result(r params.PayloadResult) (payload.Result, error) { 18 result := payload.Result{ 19 NotFound: r.NotFound, 20 } 21 22 id, err := api.API2ID(r.Tag) 23 if err != nil { 24 return result, errors.Trace(err) 25 } 26 result.ID = id 27 28 if r.Payload != nil { 29 pl, err := api.API2Payload(*r.Payload) 30 if err != nil { 31 return result, errors.Trace(err) 32 } 33 result.Payload = &pl 34 } 35 36 if r.Error != nil { 37 result.Error = common.RestoreError(r.Error) 38 } 39 40 return result, nil 41 } 42 43 // Payloads2TrackArgs converts the provided payload info into arguments 44 // for the Track API endpoint. 45 func Payloads2TrackArgs(payloads []payload.Payload) params.TrackPayloadArgs { 46 var args params.TrackPayloadArgs 47 for _, pl := range payloads { 48 fullPayload := payload.FullPayloadInfo{Payload: pl} 49 arg := api.Payload2api(fullPayload) 50 args.Payloads = append(args.Payloads, arg) 51 } 52 return args 53 } 54 55 // IDs2ListArgs converts the provided payload IDs into arguments 56 // for the List API endpoint. 57 func IDs2ListArgs(ids []string) params.Entities { 58 return ids2args(ids) 59 } 60 61 // FullIDs2LookUpArgs converts the provided payload "full" IDs into arguments 62 // for the LookUp API endpoint. 63 func FullIDs2LookUpArgs(fullIDs []string) params.LookUpPayloadArgs { 64 var args params.LookUpPayloadArgs 65 for _, fullID := range fullIDs { 66 name, rawID := payload.ParseID(fullID) 67 args.Args = append(args.Args, params.LookUpPayloadArg{ 68 Name: name, 69 ID: rawID, 70 }) 71 } 72 return args 73 } 74 75 // IDs2SetStatusArgs converts the provided payload IDs into arguments 76 // for the SetStatus API endpoint. 77 func IDs2SetStatusArgs(ids []string, status string) params.SetPayloadStatusArgs { 78 var args params.SetPayloadStatusArgs 79 for _, id := range ids { 80 arg := params.SetPayloadStatusArg{ 81 Status: status, 82 } 83 arg.Tag = names.NewPayloadTag(id).String() 84 args.Args = append(args.Args, arg) 85 } 86 return args 87 } 88 89 // IDs2UntrackArgs converts the provided payload IDs into arguments 90 // for the Untrack API endpoint. 91 func IDs2UntrackArgs(ids []string) params.Entities { 92 return ids2args(ids) 93 } 94 95 func ids2args(ids []string) params.Entities { 96 var args params.Entities 97 for _, id := range ids { 98 tag := names.NewPayloadTag(id).String() 99 args.Entities = append(args.Entities, params.Entity{ 100 Tag: tag, 101 }) 102 } 103 return args 104 }