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  }