github.com/cycloidio/terraform@v1.1.10-0.20220513142504-76d5c768dc63/cloud/errors.go (about)

     1  package cloud
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/cycloidio/terraform/tfdiags"
     8  	"github.com/zclconf/go-cty/cty"
     9  )
    10  
    11  var (
    12  	invalidOrganizationConfigMissingValue = tfdiags.AttributeValue(
    13  		tfdiags.Error,
    14  		"Invalid organization value",
    15  		`The "organization" attribute value must not be empty.\n\n%s`,
    16  		cty.Path{cty.GetAttrStep{Name: "organization"}},
    17  	)
    18  
    19  	invalidWorkspaceConfigMissingValues = tfdiags.AttributeValue(
    20  		tfdiags.Error,
    21  		"Invalid workspaces configuration",
    22  		fmt.Sprintf("Missing workspace mapping strategy. Either workspace \"tags\" or \"name\" is required.\n\n%s", workspaceConfigurationHelp),
    23  		cty.Path{cty.GetAttrStep{Name: "workspaces"}},
    24  	)
    25  
    26  	invalidWorkspaceConfigMisconfiguration = tfdiags.AttributeValue(
    27  		tfdiags.Error,
    28  		"Invalid workspaces configuration",
    29  		fmt.Sprintf("Only one of workspace \"tags\" or \"name\" is allowed.\n\n%s", workspaceConfigurationHelp),
    30  		cty.Path{cty.GetAttrStep{Name: "workspaces"}},
    31  	)
    32  )
    33  
    34  const ignoreRemoteVersionHelp = "If you're sure you want to upgrade the state, you can force Terraform to continue using the -ignore-remote-version flag. This may result in an unusable workspace."
    35  
    36  func incompatibleWorkspaceTerraformVersion(message string, ignoreVersionConflict bool) tfdiags.Diagnostic {
    37  	severity := tfdiags.Error
    38  	suggestion := ignoreRemoteVersionHelp
    39  	if ignoreVersionConflict {
    40  		severity = tfdiags.Warning
    41  		suggestion = ""
    42  	}
    43  	description := strings.TrimSpace(fmt.Sprintf("%s\n\n%s", message, suggestion))
    44  	return tfdiags.Sourceless(severity, "Incompatible Terraform version", description)
    45  }