github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/provider/lxd/config.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 // +build go1.3 5 6 package lxd 7 8 import ( 9 "github.com/juju/errors" 10 "github.com/juju/schema" 11 "gopkg.in/juju/environschema.v1" 12 13 "github.com/juju/juju/environs/config" 14 ) 15 16 var ( 17 configSchema = environschema.Fields{} 18 configFields, configDefaults = func() (schema.Fields, schema.Defaults) { 19 fields, defaults, err := configSchema.ValidationSchema() 20 if err != nil { 21 panic(err) 22 } 23 return fields, defaults 24 }() 25 ) 26 27 type environConfig struct { 28 *config.Config 29 attrs map[string]interface{} 30 } 31 32 // newConfig builds a new environConfig from the provided Config and 33 // returns it. 34 func newConfig(cfg *config.Config) *environConfig { 35 return &environConfig{ 36 Config: cfg, 37 attrs: cfg.UnknownAttrs(), 38 } 39 } 40 41 // newValidConfig builds a new environConfig from the provided Config 42 // and returns it. This includes applying the provided defaults 43 // values, if any. The resulting config values are validated. 44 func newValidConfig(cfg *config.Config) (*environConfig, error) { 45 // Ensure that the provided config is valid. 46 if err := config.Validate(cfg, nil); err != nil { 47 return nil, errors.Trace(err) 48 } 49 50 // Build the config. 51 ecfg := newConfig(cfg) 52 53 // Do final (more complex, provider-specific) validation. 54 if err := ecfg.validate(); err != nil { 55 return nil, errors.Trace(err) 56 } 57 58 return ecfg, nil 59 } 60 61 // validate validates LXD-specific configuration. 62 func (c *environConfig) validate() error { 63 return nil 64 }