From ebd479e404430df47d3d0e34a96460898d5da0bd Mon Sep 17 00:00:00 2001 From: Brian Flad Date: Thu, 5 Sep 2019 21:38:39 -0400 Subject: [PATCH] deps: Remove github.com/terraform-providers/terraform-provider-template Reference: https://github.com/terraform-providers/terraform-provider-aws/issues/10020 The `TestAccAWSDBInstance_diffSuppressInitialState` test removal is due to this functionality already being covered by this line in the `TestAccAWSDBInstance_basic` test: https://github.com/terraform-providers/terraform-provider-aws/blob/1cccd8185fbffa195a039768f65af85a9647c27e/aws/resource_aws_db_instance_test.go#L94 Output from acceptance testing: ``` --- PASS: TestAccAWSEMRCluster_bootstrap_ordering (383.33s) --- PASS: TestAccAWSLambdaFunction_localUpdate (41.07s) --- PASS: TestAccAWSLambdaFunction_versionedUpdate (56.22s) --- PASS: TestAccAWSSSMMaintenanceWindowTask_TaskInvocationStepFunctionParameters (17.37s) --- PASS: TestAccAWSSSMMaintenanceWindowTask_TaskInvocationLambdaParameters (40.59s) ``` --- aws/provider_test.go | 6 +- aws/resource_aws_db_instance_test.go | 43 -- aws/resource_aws_emr_cluster_test.go | 14 +- aws/resource_aws_lambda_function_test.go | 40 +- ...ce_aws_ssm_maintenance_window_task_test.go | 54 +-- go.mod | 2 +- go.sum | 13 - .../terraform/helper/pathorcontents/read.go | 40 -- .../terraform-provider-template/LICENSE | 373 ------------------ .../template/datasource_cloudinit_config.go | 189 --------- .../template/datasource_template_file.go | 174 -------- .../template/provider.go | 26 -- .../template/resource_template_dir.go | 234 ----------- vendor/modules.txt | 3 - 14 files changed, 26 insertions(+), 1185 deletions(-) delete mode 100644 vendor/github.com/hashicorp/terraform/helper/pathorcontents/read.go delete mode 100644 vendor/github.com/terraform-providers/terraform-provider-template/LICENSE delete mode 100644 vendor/github.com/terraform-providers/terraform-provider-template/template/datasource_cloudinit_config.go delete mode 100644 vendor/github.com/terraform-providers/terraform-provider-template/template/datasource_template_file.go delete mode 100644 vendor/github.com/terraform-providers/terraform-provider-template/template/provider.go delete mode 100644 vendor/github.com/terraform-providers/terraform-provider-template/template/resource_template_dir.go diff --git a/aws/provider_test.go b/aws/provider_test.go index f44059941173..3f983cf1cf3f 100644 --- a/aws/provider_test.go +++ b/aws/provider_test.go @@ -15,7 +15,6 @@ import ( "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform/terraform" - "github.com/terraform-providers/terraform-provider-template/template" "github.com/terraform-providers/terraform-provider-tls/tls" ) @@ -23,14 +22,11 @@ var testAccProviders map[string]terraform.ResourceProvider var testAccProvidersWithTLS map[string]terraform.ResourceProvider var testAccProviderFactories func(providers *[]*schema.Provider) map[string]terraform.ResourceProviderFactory var testAccProvider *schema.Provider -var testAccTemplateProvider *schema.Provider func init() { testAccProvider = Provider().(*schema.Provider) - testAccTemplateProvider = template.Provider().(*schema.Provider) testAccProviders = map[string]terraform.ResourceProvider{ - "aws": testAccProvider, - "template": testAccTemplateProvider, + "aws": testAccProvider, } testAccProviderFactories = func(providers *[]*schema.Provider) map[string]terraform.ResourceProviderFactory { return map[string]terraform.ResourceProviderFactory{ diff --git a/aws/resource_aws_db_instance_test.go b/aws/resource_aws_db_instance_test.go index 2227d07e34de..404d4a0617fd 100644 --- a/aws/resource_aws_db_instance_test.go +++ b/aws/resource_aws_db_instance_test.go @@ -1927,26 +1927,6 @@ func TestAccAWSDBInstance_MinorVersion(t *testing.T) { }) } -// See https://github.com/hashicorp/terraform/issues/11881 -func TestAccAWSDBInstance_diffSuppressInitialState(t *testing.T) { - var v rds.DBInstance - rInt := acctest.RandInt() - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - CheckDestroy: testAccCheckAWSDBInstanceDestroy, - Steps: []resource.TestStep{ - { - Config: testAccAWSDBInstanceConfigSuppressInitialState(rInt), - Check: resource.ComposeTestCheckFunc( - testAccCheckAWSDBInstanceExists("aws_db_instance.bar", &v), - ), - }, - }, - }) -} - func TestAccAWSDBInstance_ec2Classic(t *testing.T) { var v rds.DBInstance @@ -4183,29 +4163,6 @@ resource "aws_db_instance" "bar" { `, rInt) } -func testAccAWSDBInstanceConfigSuppressInitialState(rInt int) string { - return fmt.Sprintf(` -resource "aws_db_instance" "bar" { - identifier = "foobarbaz-test-terraform-%d" - allocated_storage = 10 - engine = "MySQL" - instance_class = "db.t2.micro" - name = "baz" - password = "barbarbarbar" - username = "foo" - skip_final_snapshot = true -} - -data "template_file" "test" { - template = "" - - vars = { - test_var = "${aws_db_instance.bar.engine_version}" - } -} -`, rInt) -} - func testAccAWSDBInstanceConfig_MariaDB(rName string) string { return fmt.Sprintf(` resource "aws_db_instance" "test" { diff --git a/aws/resource_aws_emr_cluster_test.go b/aws/resource_aws_emr_cluster_test.go index e8434d25f5c6..68c7915181a4 100644 --- a/aws/resource_aws_emr_cluster_test.go +++ b/aws/resource_aws_emr_cluster_test.go @@ -1593,7 +1593,7 @@ resource "aws_emr_cluster" "test" { } bootstrap_action { - path = "s3://${aws_s3_bucket.tester.bucket}/testscript.sh" + path = "s3://${aws_s3_bucket_object.testobject.bucket}/${aws_s3_bucket_object.testobject.key}" name = "test" args = ["1", @@ -1848,17 +1848,11 @@ resource "aws_s3_bucket" "tester" { resource "aws_s3_bucket_object" "testobject" { bucket = "${aws_s3_bucket.tester.bucket}" key = "testscript.sh" - - #source = "testscript.sh" - content = "${data.template_file.testscript.rendered}" - acl = "public-read" -} - -data "template_file" "testscript" { - template = <", hcl.Pos{Line: 1, Column: 1}) - if diags.HasErrors() { - return "", diags - } - - ctx := &hcl.EvalContext{ - Variables: map[string]cty.Value{}, - } - for k, v := range vars { - // In practice today this is always a string due to limitations of - // the schema system. In future we'd like to support other types here. - s, ok := v.(string) - if !ok { - return "", fmt.Errorf("unexpected type for variable %q: %T", k, v) - } - ctx.Variables[k] = cty.StringVal(s) - } - - // We borrow the functions from Terraform itself here. This is convenient - // but note that this is coming from whatever version of Terraform we - // have vendored in to this codebase, not from the version of Terraform - // the user is running, and so the set of functions won't always match - // between Terraform itself and this provider. - // (Over time users will hopefully transition over to Terraform's built-in - // templatefile function instead and we can phase this provider out.) - scope := &tflang.Scope{ - BaseDir: ".", - } - ctx.Functions = scope.Functions() - - result, diags := expr.Value(ctx) - if diags.HasErrors() { - return "", diags - } - - // Our result must always be a string, so we'll try to convert it. - var err error - result, err = ctyconvert.Convert(result, cty.String) - if err != nil { - return "", fmt.Errorf("invalid template result: %s", err) - } - - return result.AsString(), nil -} - -func hash(s string) string { - sha := sha256.Sum256([]byte(s)) - return hex.EncodeToString(sha[:]) -} - -func validateVarsAttribute(v interface{}, key string) (ws []string, es []error) { - // vars can only be primitives right now - var badVars []string - for k, v := range v.(map[string]interface{}) { - switch v.(type) { - case []interface{}: - badVars = append(badVars, fmt.Sprintf("%s (list)", k)) - case map[string]interface{}: - badVars = append(badVars, fmt.Sprintf("%s (map)", k)) - } - } - if len(badVars) > 0 { - es = append(es, fmt.Errorf( - "%s: cannot contain non-primitives; bad keys: %s", - key, strings.Join(badVars, ", "))) - } - return -} diff --git a/vendor/github.com/terraform-providers/terraform-provider-template/template/provider.go b/vendor/github.com/terraform-providers/terraform-provider-template/template/provider.go deleted file mode 100644 index fb340754d850..000000000000 --- a/vendor/github.com/terraform-providers/terraform-provider-template/template/provider.go +++ /dev/null @@ -1,26 +0,0 @@ -package template - -import ( - "github.com/hashicorp/terraform/helper/schema" - "github.com/hashicorp/terraform/terraform" -) - -func Provider() terraform.ResourceProvider { - return &schema.Provider{ - DataSourcesMap: map[string]*schema.Resource{ - "template_file": dataSourceFile(), - "template_cloudinit_config": dataSourceCloudinitConfig(), - }, - ResourcesMap: map[string]*schema.Resource{ - "template_file": schema.DataSourceResourceShim( - "template_file", - dataSourceFile(), - ), - "template_cloudinit_config": schema.DataSourceResourceShim( - "template_cloudinit_config", - dataSourceCloudinitConfig(), - ), - "template_dir": resourceDir(), - }, - } -} diff --git a/vendor/github.com/terraform-providers/terraform-provider-template/template/resource_template_dir.go b/vendor/github.com/terraform-providers/terraform-provider-template/template/resource_template_dir.go deleted file mode 100644 index 63a2f18dc956..000000000000 --- a/vendor/github.com/terraform-providers/terraform-provider-template/template/resource_template_dir.go +++ /dev/null @@ -1,234 +0,0 @@ -package template - -import ( - "archive/tar" - "bytes" - "crypto/sha1" - "encoding/hex" - "fmt" - "io" - "io/ioutil" - "os" - "path" - "path/filepath" - - "github.com/hashicorp/terraform/helper/pathorcontents" - "github.com/hashicorp/terraform/helper/schema" -) - -func resourceDir() *schema.Resource { - return &schema.Resource{ - Create: resourceTemplateDirCreate, - Read: resourceTemplateDirRead, - Delete: resourceTemplateDirDelete, - - Schema: map[string]*schema.Schema{ - "source_dir": { - Type: schema.TypeString, - Description: "Path to the directory where the files to template reside", - Required: true, - ForceNew: true, - }, - "vars": { - Type: schema.TypeMap, - Optional: true, - Default: make(map[string]interface{}), - Description: "Variables to substitute", - ValidateFunc: validateVarsAttribute, - ForceNew: true, - }, - "destination_dir": { - Type: schema.TypeString, - Description: "Path to the directory where the templated files will be written", - Required: true, - ForceNew: true, - }, - }, - } -} - -func resourceTemplateDirRead(d *schema.ResourceData, meta interface{}) error { - sourceDir := d.Get("source_dir").(string) - destinationDir := d.Get("destination_dir").(string) - - // If the output doesn't exist, mark the resource for creation. - if _, err := os.Stat(destinationDir); os.IsNotExist(err) { - d.SetId("") - return nil - } - - // If the combined hash of the input and output directories is different from - // the stored one, mark the resource for re-creation. - // - // The output directory is technically enough for the general case, but by - // hashing the input directory as well, we make development much easier: when - // a developer modifies one of the input files, the generation is - // re-triggered. - hash, err := generateID(sourceDir, destinationDir) - if err != nil { - return err - } - if hash != d.Id() { - d.SetId("") - return nil - } - - return nil -} - -func resourceTemplateDirCreate(d *schema.ResourceData, meta interface{}) error { - sourceDir := d.Get("source_dir").(string) - destinationDir := d.Get("destination_dir").(string) - vars := d.Get("vars").(map[string]interface{}) - - // Always delete the output first, otherwise files that got deleted from the - // input directory might still be present in the output afterwards. - if err := resourceTemplateDirDelete(d, meta); err != nil { - return err - } - - // Create the destination directory and any other intermediate directories - // leading to it. - if _, err := os.Stat(destinationDir); err != nil { - if err := os.MkdirAll(destinationDir, 0777); err != nil { - return err - } - } - - // Recursively crawl the input files/directories and generate the output ones. - err := filepath.Walk(sourceDir, func(p string, f os.FileInfo, err error) error { - if err != nil { - return err - } - - if f.IsDir() { - return nil - } - - relPath, _ := filepath.Rel(sourceDir, p) - return generateDirFile(p, path.Join(destinationDir, relPath), f, vars) - }) - if err != nil { - return err - } - - // Compute ID. - hash, err := generateID(sourceDir, destinationDir) - if err != nil { - return err - } - d.SetId(hash) - - return nil -} - -func resourceTemplateDirDelete(d *schema.ResourceData, _ interface{}) error { - d.SetId("") - - destinationDir := d.Get("destination_dir").(string) - if _, err := os.Stat(destinationDir); os.IsNotExist(err) { - return nil - } - - if err := os.RemoveAll(destinationDir); err != nil { - return fmt.Errorf("could not delete directory %q: %s", destinationDir, err) - } - - return nil -} - -func generateDirFile(sourceDir, destinationDir string, f os.FileInfo, vars map[string]interface{}) error { - inputContent, _, err := pathorcontents.Read(sourceDir) - if err != nil { - return err - } - - outputContent, err := execute(inputContent, vars) - if err != nil { - return templateRenderError(fmt.Errorf("failed to render %v: %v", sourceDir, err)) - } - - outputDir := path.Dir(destinationDir) - if _, err := os.Stat(outputDir); err != nil { - if err := os.MkdirAll(outputDir, 0777); err != nil { - return err - } - } - - err = ioutil.WriteFile(destinationDir, []byte(outputContent), f.Mode()) - if err != nil { - return err - } - - return nil -} - -func generateID(sourceDir, destinationDir string) (string, error) { - inputHash, err := generateDirHash(sourceDir) - if err != nil { - return "", err - } - outputHash, err := generateDirHash(destinationDir) - if err != nil { - return "", err - } - checksum := sha1.Sum([]byte(inputHash + outputHash)) - return hex.EncodeToString(checksum[:]), nil -} - -func generateDirHash(directoryPath string) (string, error) { - tarData, err := tarDir(directoryPath) - if err != nil { - return "", fmt.Errorf("could not generate output checksum: %s", err) - } - - checksum := sha1.Sum(tarData) - return hex.EncodeToString(checksum[:]), nil -} - -func tarDir(directoryPath string) ([]byte, error) { - buf := new(bytes.Buffer) - tw := tar.NewWriter(buf) - - writeFile := func(p string, f os.FileInfo, err error) error { - if err != nil { - return err - } - - var header *tar.Header - var file *os.File - - header, err = tar.FileInfoHeader(f, f.Name()) - if err != nil { - return err - } - relPath, _ := filepath.Rel(directoryPath, p) - header.Name = relPath - - if err := tw.WriteHeader(header); err != nil { - return err - } - - if f.IsDir() { - return nil - } - - file, err = os.Open(p) - if err != nil { - return err - } - defer file.Close() - - _, err = io.Copy(tw, file) - return err - } - - if err := filepath.Walk(directoryPath, writeFile); err != nil { - return []byte{}, err - } - if err := tw.Flush(); err != nil { - return []byte{}, err - } - - return buf.Bytes(), nil -} diff --git a/vendor/modules.txt b/vendor/modules.txt index 7ea03a58039b..13bce4eb88d6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -488,7 +488,6 @@ github.com/hashicorp/terraform/internal/earlyconfig github.com/hashicorp/terraform/helper/hilmapstructure github.com/hashicorp/terraform/lang/blocktoattr github.com/hashicorp/terraform/lang/funcs -github.com/hashicorp/terraform/helper/pathorcontents github.com/hashicorp/terraform/svchost github.com/hashicorp/terraform/svchost/auth # github.com/hashicorp/terraform-config-inspect v0.0.0-20190821133035-82a99dc22ef4 @@ -589,8 +588,6 @@ github.com/spf13/jwalterweatherman github.com/spf13/pflag # github.com/spf13/viper v1.0.2 github.com/spf13/viper -# github.com/terraform-providers/terraform-provider-template v2.1.2+incompatible -github.com/terraform-providers/terraform-provider-template/template # github.com/terraform-providers/terraform-provider-tls v2.1.0+incompatible github.com/terraform-providers/terraform-provider-tls/tls # github.com/timakin/bodyclose v0.0.0-20190407043127-4a873e97b2bb