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 }