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  }