Temp HCL2 stuff for registry smoke testing

f-hcl2-context-old
Martin Atkins 8 years ago
parent f3eeaab22b
commit 191efb4870

@ -12,7 +12,6 @@ import (
multierror "github.com/hashicorp/go-multierror"
"github.com/hashicorp/terraform/backend"
"github.com/hashicorp/terraform/config"
"github.com/hashicorp/terraform/config/module"
"github.com/hashicorp/terraform/helper/variables"
"github.com/hashicorp/terraform/plugin"
"github.com/hashicorp/terraform/plugin/discovery"
@ -129,9 +128,16 @@ func (c *InitCommand) Run(args []string) int {
)))
header = true
s := module.NewStorage("", c.Services, c.Credentials)
if err := s.GetModule(path, src); err != nil {
c.Ui.Error(fmt.Sprintf("Error copying source module: %s", err))
instHooks := uiModuleInstallHooks{
ShowLocalPaths: false,
Ui: c.Ui,
}
diags := c.initDirFromModule(path, src, instHooks)
if diags.HasErrors() {
// Since this may be the user's first ever interaction with Terraform,
// we'll provide some additional context in this case.
c.Ui.Error(strings.TrimSpace(errInitConfigError))
c.showDiagnostics(diags)
return 1
}
}
@ -278,6 +284,10 @@ func (c *InitCommand) Run(args []string) int {
// Load the complete module tree, and fetch any missing providers.
// This method outputs its own Ui.
func (c *InitCommand) getProviders(path string, state *terraform.State, upgrade bool) error {
// FIXME: Temporarily disabled until we can update to the new config
// loader and associated models.
return nil
mod, diags := c.Module(path)
if diags.HasErrors() {
c.showDiagnostics(diags)
@ -290,11 +300,14 @@ func (c *InitCommand) getProviders(path string, state *terraform.State, upgrade
return err
}
if err := terraform.CheckRequiredVersion(mod); err != nil {
diags = diags.Append(err)
c.showDiagnostics(diags)
return err
}
// TODO: Update for new version models
/*if versionDiags := terraform.CheckRequiredVersion(cfg); len(versionDiags) != 0 {
diags = diags.Append(versionDiags)
if versionDiags.HasErrors() {
c.showDiagnostics(diags)
return diags.Err()
}
}*/
var available discovery.PluginMetaSet
if upgrade {

@ -3,10 +3,9 @@ package terraform
import (
"fmt"
"github.com/hashicorp/go-version"
"github.com/hashicorp/terraform/config"
"github.com/hashicorp/terraform/config/module"
"github.com/hashicorp/hcl2/hcl"
"github.com/hashicorp/terraform/configs"
"github.com/hashicorp/terraform/tfdiags"
tfversion "github.com/hashicorp/terraform/version"
)
@ -17,55 +16,30 @@ import (
// from child modules.
//
// This is tested in context_test.go.
func CheckRequiredVersion(m *module.Tree) error {
// Check any children
for _, c := range m.Children() {
if err := CheckRequiredVersion(c); err != nil {
return err
func CheckRequiredVersion(cfg *configs.Config) tfdiags.Diagnostics {
var diags tfdiags.Diagnostics
for _, constraint := range cfg.Module.CoreVersionConstraints {
if !constraint.Required.Check(tfversion.SemVer) {
diags = diags.Append(&hcl.Diagnostic{
Severity: hcl.DiagError,
Summary: "Unmet Terraform version requirement",
Detail: fmt.Sprintf(checkRequiredVersionDetailFormat, tfversion.SemVer),
Subject: &constraint.DeclRange,
})
}
}
var tf *config.Terraform
if c := m.Config(); c != nil {
tf = c.Terraform
}
// If there is no Terraform config or the required version isn't set,
// we move on.
if tf == nil || tf.RequiredVersion == "" {
return nil
for _, child := range cfg.Children {
childDiags := CheckRequiredVersion(child)
diags = diags.Append(childDiags)
}
// Path for errors
module := "root"
if path := normalizeModulePath(m.Path()); len(path) > 1 {
module = modulePrefixStr(path)
}
return diags
}
// Check this version requirement of this module
cs, err := version.NewConstraint(tf.RequiredVersion)
if err != nil {
return fmt.Errorf(
"%s: terraform.required_version %q syntax error: %s",
module,
tf.RequiredVersion, err)
}
const checkRequiredVersionDetailFormat = `Your current Terraform Core version %s does not meet this version constraint.
if !cs.Check(tfversion.SemVer) {
return fmt.Errorf(
"The currently running version of Terraform doesn't meet the\n"+
"version requirements explicitly specified by the configuration.\n"+
"Please use the required version or update the configuration.\n"+
"Note that version requirements are usually set for a reason, so\n"+
"we recommend verifying with whoever set the version requirements\n"+
"prior to making any manual changes.\n\n"+
" Module: %s\n"+
" Required version: %s\n"+
" Current version: %s",
module,
tf.RequiredVersion,
tfversion.SemVer)
}
To proceed, either switch to an allowed version or update the configuration to permit your current version.
return nil
}
Version requirements are usually set for a good reason, so check with whoever set this version constraint before adjusting it.`

Loading…
Cancel
Save