github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/client/modelgeneration/interface.go (about) 1 // Copyright 2019 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package modelgeneration 5 6 import ( 7 "gopkg.in/juju/names.v2" 8 9 "github.com/juju/juju/apiserver/params" 10 ) 11 12 // ModelGeneration defines the methods exported by the model generation API facade. 13 type ModelGeneration interface { 14 AddGeneration() (params.ErrorResult, error) 15 AdvanceGeneration(args params.Entities) (params.ErrorResults, error) 16 SwitchGeneration(arg params.GenerationVersionArg) (params.ErrorResult, error) 17 } 18 19 // ModelGenerationState represents the state of an model required by the ModelGeneration. 20 //go:generate mockgen -package mocks -destination mocks/state_mock.go github.com/juju/juju/apiserver/facades/client/modelgeneration ModelGenerationState 21 type ModelGenerationState interface { 22 ControllerTag() names.ControllerTag 23 Model() (GenerationModel, error) 24 } 25 26 //go:generate mockgen -package mocks -destination mocks/model_mock.go github.com/juju/juju/apiserver/facades/client/modelgeneration GenerationModel 27 type GenerationModel interface { 28 AddGeneration() error 29 NextGeneration() (Generation, error) 30 HasNextGeneration() (bool, error) 31 } 32 33 // Generation defines the methods used by a generation. 34 //go:generate mockgen -package mocks -destination mocks/generation_mock.go github.com/juju/juju/apiserver/facades/client/modelgeneration Generation 35 type Generation interface { 36 AssignAllUnits(string) error 37 AssignUnit(string) error 38 MakeCurrent() error 39 AutoComplete() (bool, error) 40 Refresh() error 41 }