Merge pull request #10297 from hashicorp/b-template-path
providers/template: disallow file paths in `template`
This commit is contained in:
commit
68c96e0ce5
|
@ -25,7 +25,6 @@ func dataSourceFile() *schema.Resource {
|
|||
Optional: true,
|
||||
Description: "Contents of the template",
|
||||
ConflictsWith: []string{"filename"},
|
||||
ValidateFunc: validateTemplateAttribute,
|
||||
},
|
||||
"filename": &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
|
@ -82,13 +81,14 @@ func renderFile(d *schema.ResourceData) (string, error) {
|
|||
filename := d.Get("filename").(string)
|
||||
vars := d.Get("vars").(map[string]interface{})
|
||||
|
||||
contents := template
|
||||
if template == "" && filename != "" {
|
||||
template = filename
|
||||
}
|
||||
data, _, err := pathorcontents.Read(filename)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
contents, _, err := pathorcontents.Read(template)
|
||||
if err != nil {
|
||||
return "", err
|
||||
contents = data
|
||||
}
|
||||
|
||||
rendered, err := execute(contents, vars)
|
||||
|
@ -145,20 +145,6 @@ func hash(s string) string {
|
|||
return hex.EncodeToString(sha[:])
|
||||
}
|
||||
|
||||
func validateTemplateAttribute(v interface{}, key string) (ws []string, es []error) {
|
||||
_, wasPath, err := pathorcontents.Read(v.(string))
|
||||
if err != nil {
|
||||
es = append(es, err)
|
||||
return
|
||||
}
|
||||
|
||||
if wasPath {
|
||||
ws = append(ws, fmt.Sprintf("%s: looks like you specified a path instead of file contents. Use `file()` to load this path. Specifying a path directly is deprecated and will be removed in a future version.", key))
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func validateVarsAttribute(v interface{}, key string) (ws []string, es []error) {
|
||||
// vars can only be primitives right now
|
||||
var badVars []string
|
||||
|
|
|
@ -2,8 +2,6 @@ package template
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
|
@ -26,6 +24,7 @@ func TestTemplateRendering(t *testing.T) {
|
|||
{`{a="foo"}`, `$${a}`, `foo`},
|
||||
{`{a="hello"}`, `$${replace(a, "ello", "i")}`, `hi`},
|
||||
{`{}`, `${1+2+3}`, `6`},
|
||||
{`{}`, `/`, `/`},
|
||||
}
|
||||
|
||||
for _, tt := range cases {
|
||||
|
@ -47,30 +46,6 @@ func TestTemplateRendering(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestValidateTemplateAttribute(t *testing.T) {
|
||||
file, err := ioutil.TempFile("", "testtemplate")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
file.WriteString("Hello world.")
|
||||
file.Close()
|
||||
defer os.Remove(file.Name())
|
||||
|
||||
ws, es := validateTemplateAttribute(file.Name(), "test")
|
||||
|
||||
if len(es) != 0 {
|
||||
t.Fatalf("Unexpected errors: %#v", es)
|
||||
}
|
||||
|
||||
if len(ws) != 1 {
|
||||
t.Fatalf("Expected 1 warning, got %d", len(ws))
|
||||
}
|
||||
|
||||
if !strings.Contains(ws[0], "Specifying a path directly is deprecated") {
|
||||
t.Fatalf("Expected warning about path, got: %s", ws[0])
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateVarsAttribute(t *testing.T) {
|
||||
cases := map[string]struct {
|
||||
Vars map[string]interface{}
|
||||
|
|
Loading…
Reference in New Issue