// getControllerEnviron gets the bootstrap information required to destroy the // environment by first checking the config store, then querying the API if // the information is not in the store. func (c *destroyCommandBase) getControllerEnviron(info configstore.EnvironInfo, sysAPI destroyControllerAPI) (_ environs.Environ, err error) { bootstrapCfg := info.BootstrapConfig() if bootstrapCfg == nil { if sysAPI == nil { return nil, errors.New("unable to get bootstrap information from API") } bootstrapCfg, err = sysAPI.EnvironmentConfig() if params.IsCodeNotImplemented(err) { // Fallback to the client API. Better to encapsulate the logic for // old servers than worry about connecting twice. client, err := c.getClientAPI() if err != nil { return nil, errors.Trace(err) } defer client.Close() bootstrapCfg, err = client.EnvironmentGet() if err != nil { return nil, errors.Trace(err) } } else if err != nil { return nil, errors.Trace(err) } } cfg, err := config.New(config.NoDefaults, bootstrapCfg) if err != nil { return nil, errors.Trace(err) } return environs.New(cfg) }
// getConfig looks for configuration info on the given environment func getConfig(info configstore.EnvironInfo, envs *environs.Environs, envName string) (*config.Config, error) { if info != nil && len(info.BootstrapConfig()) > 0 { cfg, err := config.New(config.NoDefaults, info.BootstrapConfig()) if err != nil { logger.Warningf("failed to parse bootstrap-config: %v", err) } return cfg, err } if envs != nil { cfg, err := envs.Config(envName) if err != nil && !errors.IsNotFound(err) { logger.Warningf("failed to get config for environment %q: %v", envName, err) } return cfg, err } return nil, errors.NotFoundf("environment %q", envName) }
// getControllerEnviron gets the bootstrap information required to destroy the // environment by first checking the config store, then querying the API if // the information is not in the store. func (c *destroyCommandBase) getControllerEnviron(info configstore.EnvironInfo, sysAPI destroyControllerAPI) (_ environs.Environ, err error) { bootstrapCfg := info.BootstrapConfig() if bootstrapCfg == nil { if sysAPI == nil { return nil, errors.New("unable to get bootstrap information from API") } bootstrapCfg, err = sysAPI.ModelConfig() if err != nil { return nil, errors.Trace(err) } } cfg, err := config.New(config.NoDefaults, bootstrapCfg) if err != nil { return nil, errors.Trace(err) } return environs.New(cfg) }