github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/api/common/modelwatcher.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common 5 6 import ( 7 "github.com/juju/juju/api/base" 8 apiwatcher "github.com/juju/juju/api/watcher" 9 "github.com/juju/juju/apiserver/params" 10 "github.com/juju/juju/environs/config" 11 "github.com/juju/juju/watcher" 12 ) 13 14 // ModelWatcher provides common client-side API functions 15 // to call into apiserver.common.ModelWatcher. 16 type ModelWatcher struct { 17 facade base.FacadeCaller 18 } 19 20 // NewModelWatcher creates a ModelWatcher on the specified facade, 21 // and uses this name when calling through the caller. 22 func NewModelWatcher(facade base.FacadeCaller) *ModelWatcher { 23 return &ModelWatcher{facade} 24 } 25 26 // WatchForModelConfigChanges return a NotifyWatcher waiting for the 27 // model configuration to change. 28 func (e *ModelWatcher) WatchForModelConfigChanges() (watcher.NotifyWatcher, error) { 29 var result params.NotifyWatchResult 30 err := e.facade.FacadeCall("WatchForModelConfigChanges", nil, &result) 31 if err != nil { 32 return nil, err 33 } 34 return apiwatcher.NewNotifyWatcher(e.facade.RawAPICaller(), result), nil 35 } 36 37 // ModelConfig returns the current model configuration. 38 func (e *ModelWatcher) ModelConfig() (*config.Config, error) { 39 var result params.ModelConfigResult 40 err := e.facade.FacadeCall("ModelConfig", nil, &result) 41 if err != nil { 42 return nil, err 43 } 44 conf, err := config.New(config.NoDefaults, result.Config) 45 if err != nil { 46 return nil, err 47 } 48 return conf, nil 49 }