github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/apiserver/meterstatus/meterstatus.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  // Package meterstatus provides functions for getting meterstatus information
     5  // about units.
     6  package meterstatus
     7  
     8  import (
     9  	"github.com/juju/errors"
    10  
    11  	"github.com/juju/juju/state"
    12  )
    13  
    14  // MeterStatusWrapper takes a MeterStatus and converts it into an 'api friendly' form where
    15  // Not Set and Not Available (which are important distinctions in state) are converted
    16  // into Amber and Red respecitvely in the api.
    17  func MeterStatusWrapper(getter func() (state.MeterStatus, error)) (state.MeterStatus, error) {
    18  	status, err := getter()
    19  	if err != nil {
    20  		return state.MeterStatus{}, errors.Trace(err)
    21  	}
    22  	if status.Code == state.MeterNotSet {
    23  		return state.MeterStatus{state.MeterAmber, "not set"}, nil
    24  	}
    25  	if status.Code == state.MeterNotAvailable {
    26  
    27  		return state.MeterStatus{state.MeterRed, "not available"}, nil
    28  	}
    29  	return status, nil
    30  }