github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/controller/modelupgrader/backend.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package modelupgrader 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/juju/cloud" 9 "github.com/juju/juju/state" 10 ) 11 12 type Backend interface { 13 Cloud(string) (cloud.Cloud, error) 14 } 15 16 type Pool interface { 17 GetModel(string) (Model, func(), error) 18 } 19 20 type Model interface { 21 Cloud() string 22 EnvironVersion() int 23 SetEnvironVersion(int) error 24 } 25 26 func NewPool(pool *state.StatePool) Pool { 27 return &statePool{pool} 28 } 29 30 type statePool struct { 31 pool *state.StatePool 32 } 33 34 func (p *statePool) GetModel(uuid string) (Model, func(), error) { 35 m, ph, err := p.pool.GetModel(uuid) 36 if err != nil { 37 return nil, nil, errors.Trace(err) 38 } 39 return m, func() { ph.Release() }, nil 40 }