github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/migrationmaster/shim.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package migrationmaster 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/juju/apiserver/facade" 9 "github.com/juju/juju/migration" 10 "github.com/juju/juju/state" 11 "github.com/juju/version" 12 "gopkg.in/juju/names.v2" 13 ) 14 15 // newAPIForRegistration exists to provide the required signature for 16 // RegisterStandardFacade, converting st to backend. 17 func newAPIForRegistration( 18 st *state.State, 19 resources facade.Resources, 20 authorizer facade.Authorizer, 21 ) (*API, error) { 22 return NewAPI(&backendShim{st}, migration.PrecheckShim(st), resources, authorizer) 23 } 24 25 // backendShim wraps a *state.State to implement Backend. It is 26 // untested, but is simple enough to be verified by inspection. 27 type backendShim struct { 28 *state.State 29 } 30 31 // ModelName implements Backend. 32 func (s *backendShim) ModelName() (string, error) { 33 model, err := s.Model() 34 if err != nil { 35 return "", errors.Trace(err) 36 } 37 return model.Name(), nil 38 } 39 40 // ModelOwner implements Backend. 41 func (s *backendShim) ModelOwner() (names.UserTag, error) { 42 model, err := s.Model() 43 if err != nil { 44 return names.UserTag{}, errors.Trace(err) 45 } 46 return model.Owner(), nil 47 } 48 49 // AgentVersion implements Backend. 50 func (s *backendShim) AgentVersion() (version.Number, error) { 51 cfg, err := s.ModelConfig() 52 if err != nil { 53 return version.Zero, errors.Trace(err) 54 } 55 vers, ok := cfg.AgentVersion() 56 if !ok { 57 return version.Zero, errors.New("no agent version") 58 } 59 return vers, nil 60 }