github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/core/cache/cachetest/state.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package cachetest 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/core/cache" 12 "github.com/juju/juju/core/life" 13 "github.com/juju/juju/state" 14 ) 15 16 // ModelChangeFromState returns a ModelChange representing the current 17 // model for the state object. 18 func ModelChangeFromState(c *gc.C, st *state.State) cache.ModelChange { 19 model, err := st.Model() 20 c.Assert(err, jc.ErrorIsNil) 21 return ModelChange(c, model) 22 } 23 24 // ModelChangeFromStateErr returns a ModelChange representing the current 25 // model for the state object. May return an error. 26 func ModelChangeFromStateErr(st *state.State) (cache.ModelChange, error) { 27 model, err := st.Model() 28 if err != nil { 29 return cache.ModelChange{}, errors.Trace(err) 30 } 31 return ModelChangeErr(model) 32 } 33 34 // ModelChange returns a ModelChange representing the current state of the model. 35 func ModelChange(c *gc.C, model *state.Model) cache.ModelChange { 36 change, err := ModelChangeErr(model) 37 c.Assert(err, jc.ErrorIsNil) 38 return change 39 } 40 41 // ModelChangeErr returns a ModelChange representing the current state of the model. 42 // May return an error if unable to load config or status. 43 func ModelChangeErr(model *state.Model) (cache.ModelChange, error) { 44 change := cache.ModelChange{ 45 ModelUUID: model.UUID(), 46 Name: model.Name(), 47 Life: life.Value(model.Life().String()), 48 Owner: model.Owner().Name(), 49 } 50 config, err := model.Config() 51 if err != nil { 52 return cache.ModelChange{}, errors.Trace(err) 53 } 54 change.Config = config.AllAttrs() 55 status, err := model.Status() 56 if err != nil { 57 return cache.ModelChange{}, errors.Trace(err) 58 } 59 change.Status = status 60 return change, nil 61 }