github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/payload/status/formatter.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package status
     5  
     6  import (
     7  	"github.com/juju/juju/payload"
     8  )
     9  
    10  type listFormatter struct {
    11  	payloads []payload.FullPayloadInfo
    12  }
    13  
    14  func newListFormatter(payloads []payload.FullPayloadInfo) *listFormatter {
    15  	lf := listFormatter{
    16  		payloads: payloads,
    17  	}
    18  	return &lf
    19  }
    20  
    21  func (lf *listFormatter) format() []FormattedPayload {
    22  	if lf.payloads == nil {
    23  		return nil
    24  	}
    25  
    26  	var formatted []FormattedPayload
    27  	for _, payload := range lf.payloads {
    28  		formatted = append(formatted, FormatPayload(payload))
    29  	}
    30  	return formatted
    31  }
    32  
    33  // FormatPayload converts the Payload into a FormattedPayload.
    34  func FormatPayload(payload payload.FullPayloadInfo) FormattedPayload {
    35  	var labels []string
    36  	if len(payload.Labels) > 0 {
    37  		labels = make([]string, len(payload.Labels))
    38  		copy(labels, payload.Labels)
    39  	}
    40  	return FormattedPayload{
    41  		Unit:    payload.Unit,
    42  		Machine: payload.Machine,
    43  		ID:      payload.ID,
    44  		Type:    payload.Type,
    45  		Class:   payload.Name,
    46  		Labels:  labels,
    47  		// TODO(ericsnow) Explicitly convert to a string?
    48  		Status: payload.Status,
    49  	}
    50  }