github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/lifeflag/facade.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package lifeflag 5 6 import ( 7 "gopkg.in/juju/names.v2" 8 9 "github.com/juju/juju/apiserver/common" 10 "github.com/juju/juju/apiserver/facade" 11 "github.com/juju/juju/state" 12 ) 13 14 type Backend interface { 15 ModelUUID() string 16 state.EntityFinder 17 } 18 19 func NewFacade(backend Backend, resources facade.Resources, authorizer facade.Authorizer) (*Facade, error) { 20 if !authorizer.AuthModelManager() { 21 return nil, common.ErrPerm 22 } 23 expect := names.NewModelTag(backend.ModelUUID()) 24 getCanAccess := func() (common.AuthFunc, error) { 25 return func(tag names.Tag) bool { 26 return tag == expect 27 }, nil 28 } 29 life := common.NewLifeGetter(backend, getCanAccess) 30 watch := common.NewAgentEntityWatcher(backend, resources, getCanAccess) 31 return &Facade{ 32 LifeGetter: life, 33 AgentEntityWatcher: watch, 34 }, nil 35 } 36 37 type Facade struct { 38 *common.LifeGetter 39 *common.AgentEntityWatcher 40 }