github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/meterstatus/wrapper.go (about)

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