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  }