From e683a6adef5ab2c67155d7cbd420612b42ecf5ee Mon Sep 17 00:00:00 2001 From: Kristin Laemmert Date: Tue, 31 Mar 2020 14:03:33 -0400 Subject: [PATCH] Mildwonkey/terraform tests (targeting integration branch) (#24513) * configs: remove `Legacy*` Provider functions, switch to default * terraform context test updates --- configs/config.go | 7 +- configs/config_test.go | 35 +- configs/module.go | 33 +- configs/module_merge.go | 4 +- configs/module_merge_test.go | 6 +- configs/module_test.go | 2 +- terraform/context_apply_test.go | 3889 +++++++++++---------------- terraform/context_fixtures_test.go | 28 +- terraform/context_import_test.go | 156 +- terraform/context_input_test.go | 74 +- terraform/context_plan_test.go | 2369 +++++++--------- terraform/context_refresh_test.go | 262 +- terraform/context_validate_test.go | 330 +-- terraform/eval_apply.go | 6 +- terraform/eval_context_builtin.go | 2 +- terraform/eval_context_mock.go | 2 +- terraform/eval_diff.go | 14 +- terraform/eval_read_data.go | 10 +- terraform/eval_refresh.go | 2 +- terraform/evaluate_valid.go | 2 +- terraform/node_resource_abstract.go | 6 +- terraform/terraform_test.go | 226 +- 22 files changed, 3085 insertions(+), 4380 deletions(-) diff --git a/configs/config.go b/configs/config.go index 2d491c8cff..37bb9af45d 100644 --- a/configs/config.go +++ b/configs/config.go @@ -310,10 +310,7 @@ func (c *Config) ResolveAbsProviderAddr(addr addrs.ProviderConfig, inModule addr if providerReq, exists := c.Module.ProviderRequirements[addr.LocalName]; exists { provider = providerReq.Type } else { - // FIXME: For now we're returning a _legacy_ address as fallback here, - // but once we remove legacy addresses this should actually be a - // _default_ provider address. - provider = addrs.NewLegacyProvider(addr.LocalName) + provider = addrs.NewDefaultProvider(addr.LocalName) } return addrs.AbsProviderConfig{ @@ -330,7 +327,7 @@ func (c *Config) ResolveAbsProviderAddr(addr addrs.ProviderConfig, inModule addr // ProviderForConfigAddr returns the FQN for a given addrs.ProviderConfig, first // by checking for the provider in module.ProviderRequirements and falling -// back to addrs.NewLegacyProvider if it is not found. +// back to addrs.NewDefaultProvider if it is not found. func (c *Config) ProviderForConfigAddr(addr addrs.LocalProviderConfig) addrs.Provider { if provider, exists := c.Module.ProviderRequirements[addr.LocalName]; exists { return provider.Type diff --git a/configs/config_test.go b/configs/config_test.go index c28bd83b19..ba97c1ba5e 100644 --- a/configs/config_test.go +++ b/configs/config_test.go @@ -25,9 +25,9 @@ func TestConfigProviderTypes(t *testing.T) { got = cfg.ProviderTypes() want := []addrs.Provider{ - addrs.NewLegacyProvider("aws"), - addrs.NewLegacyProvider("null"), - addrs.NewLegacyProvider("template"), + addrs.NewDefaultProvider("aws"), + addrs.NewDefaultProvider("null"), + addrs.NewDefaultProvider("template"), } for _, problem := range deep.Equal(got, want) { t.Error(problem) @@ -50,10 +50,9 @@ func TestConfigProviderTypes_nested(t *testing.T) { got = cfg.ProviderTypes() want := []addrs.Provider{ - // FIXME: this will be updated to NewDefaultProvider as we remove `Legacy*` - addrs.NewLegacyProvider("test"), addrs.NewProvider(addrs.DefaultRegistryHost, "bar", "test"), addrs.NewProvider(addrs.DefaultRegistryHost, "foo", "test"), + addrs.NewDefaultProvider("test"), } for _, problem := range deep.Equal(got, want) { @@ -85,14 +84,8 @@ func TestConfigResolveAbsProviderAddr(t *testing.T) { } got := cfg.ResolveAbsProviderAddr(addr, addrs.RootModule) want := addrs.AbsProviderConfig{ - Module: addrs.RootModule, - // FIXME: At the time of writing we still have LocalProviderConfig - // nested inside AbsProviderConfig, but a future change will - // stop tis embedding and just have an addrs.Provider and an alias - // string here, at which point the correct result will be: - // Provider as the addrs repr of "registry.terraform.io/hashicorp/implied" - // Alias as "boop". - Provider: addrs.NewLegacyProvider("implied"), + Module: addrs.RootModule, + Provider: addrs.NewDefaultProvider("implied"), Alias: "boop", } if got, want := got.String(), want.String(); got != want { @@ -128,13 +121,9 @@ func TestConfigProviderRequirements(t *testing.T) { svchost.Hostname("tf.example.com"), "awesomecorp", "happycloud", ) - // FIXME: these two are legacy ones for now because the config loader - // isn't using default configurations fully yet. - // Once that changes, these should be default-shaped ones like tlsProvider - // above. - nullProvider := addrs.NewLegacyProvider("null") - randomProvider := addrs.NewLegacyProvider("random") - impliedProvider := addrs.NewLegacyProvider("implied") + nullProvider := addrs.NewDefaultProvider("null") + randomProvider := addrs.NewDefaultProvider("random") + impliedProvider := addrs.NewDefaultProvider("implied") got, diags := cfg.ProviderRequirements() assertNoDiagnostics(t, diags) @@ -152,7 +141,7 @@ func TestConfigProviderRequirements(t *testing.T) { } } -func TestProviderForConfigAddr(t *testing.T) { +func TestConfigProviderForConfigAddr(t *testing.T) { cfg, diags := testModuleConfigFromDir("testdata/valid-modules/providers-fqns") assertNoDiagnostics(t, diags) @@ -162,9 +151,9 @@ func TestProviderForConfigAddr(t *testing.T) { t.Errorf("wrong result\ngot: %s\nwant: %s", got, want) } - // now check a provider that isn't in the configuration. It should return a NewLegacyProvider. + // now check a provider that isn't in the configuration. It should return a DefaultProvider. got = cfg.ProviderForConfigAddr(addrs.NewDefaultLocalProviderConfig("bar-test")) - want = addrs.NewLegacyProvider("bar-test") + want = addrs.NewDefaultProvider("bar-test") if !got.Equals(want) { t.Errorf("wrong result\ngot: %s\nwant: %s", got, want) } diff --git a/configs/module.go b/configs/module.go index d6f88f99e4..aaca5f24d1 100644 --- a/configs/module.go +++ b/configs/module.go @@ -195,7 +195,7 @@ func (m *Module) appendFile(file *File) hcl.Diagnostics { } diags = append(diags, hclDiags...) } else { - fqn = addrs.NewLegacyProvider(reqd.Name) + fqn = addrs.NewDefaultProvider(reqd.Name) } if existing, exists := m.ProviderRequirements[reqd.Name]; exists { if existing.Type != fqn { @@ -208,8 +208,8 @@ func (m *Module) appendFile(file *File) hcl.Diagnostics { } for _, pm := range file.ProviderMetas { - // TODO(paddy): pm.Provider is a string, but we need to build an addrs.Provider out of it somehow - if existing, exists := m.ProviderMetas[addrs.NewLegacyProvider(pm.Provider)]; exists { + provider := m.ProviderForLocalConfig(addrs.LocalProviderConfig{LocalName: pm.Provider}) + if existing, exists := m.ProviderMetas[provider]; exists { diags = append(diags, &hcl.Diagnostic{ Severity: hcl.DiagError, Summary: "Duplicate provider_meta block", @@ -217,7 +217,7 @@ func (m *Module) appendFile(file *File) hcl.Diagnostics { Subject: &pm.DeclRange, }) } - m.ProviderMetas[addrs.NewLegacyProvider(pm.Provider)] = pm + m.ProviderMetas[provider] = pm } for _, v := range file.Variables { @@ -282,20 +282,15 @@ func (m *Module) appendFile(file *File) hcl.Diagnostics { m.ManagedResources[key] = r // set the provider FQN for the resource - var provider addrs.Provider if r.ProviderConfigRef != nil { if existing, exists := m.ProviderRequirements[r.ProviderConfigAddr().LocalName]; exists { - provider = existing.Type + r.Provider = existing.Type } else { - // FIXME: This will be a NewDefaultProvider - provider = addrs.NewLegacyProvider(r.ProviderConfigAddr().LocalName) + r.Provider = addrs.NewDefaultProvider(r.ProviderConfigAddr().LocalName) } - r.Provider = provider continue } - // FIXME: this will replaced with NewDefaultProvider when provider - // source is fully implemented. - r.Provider = addrs.NewLegacyProvider(r.Addr().ImpliedProvider()) + r.Provider = addrs.NewDefaultProvider(r.Addr().ImpliedProvider()) } for _, r := range file.DataResources { @@ -312,20 +307,16 @@ func (m *Module) appendFile(file *File) hcl.Diagnostics { m.DataResources[key] = r // set the provider FQN for the resource - var provider addrs.Provider if r.ProviderConfigRef != nil { if existing, exists := m.ProviderRequirements[r.ProviderConfigAddr().LocalName]; exists { - provider = existing.Type + r.Provider = existing.Type + } else { - // FIXME: This will be a NewDefaultProvider - provider = addrs.NewLegacyProvider(r.ProviderConfigAddr().LocalName) + r.Provider = addrs.NewDefaultProvider(r.ProviderConfigAddr().LocalName) } - r.Provider = provider continue } - // FIXME: this will replaced with NewDefaultProvider when provider - // source is fully implemented. - r.Provider = addrs.NewLegacyProvider(r.Addr().ImpliedProvider()) + r.Provider = addrs.NewDefaultProvider(r.Addr().ImpliedProvider()) } return diags @@ -520,5 +511,5 @@ func (m *Module) ProviderForLocalConfig(pc addrs.LocalProviderConfig) addrs.Prov if provider, exists := m.ProviderRequirements[pc.LocalName]; exists { return provider.Type } - return addrs.NewLegacyProvider(pc.LocalName) + return addrs.NewDefaultProvider(pc.LocalName) } diff --git a/configs/module_merge.go b/configs/module_merge.go index 8f84544825..be0e294d9d 100644 --- a/configs/module_merge.go +++ b/configs/module_merge.go @@ -48,7 +48,7 @@ func mergeProviderVersionConstraints(recv map[string]ProviderRequirements, ovrd // any errors parsing the source string will have already been captured. fqn, _ = addrs.ParseProviderSourceString(reqd.Source.SourceStr) } else { - fqn = addrs.NewLegacyProvider(reqd.Name) + fqn = addrs.NewDefaultProvider(reqd.Name) } recv[reqd.Name] = ProviderRequirements{Type: fqn, VersionConstraints: []VersionConstraint{reqd.Requirement}} } @@ -218,7 +218,7 @@ func (r *Resource) merge(or *Resource, prs map[string]ProviderRequirements) hcl. if existing, exists := prs[or.ProviderConfigRef.Name]; exists { r.Provider = existing.Type } else { - r.Provider = addrs.NewLegacyProvider(r.ProviderConfigRef.Name) + r.Provider = addrs.NewDefaultProvider(r.ProviderConfigRef.Name) } } diff --git a/configs/module_merge_test.go b/configs/module_merge_test.go index 991bb9fadf..082c244476 100644 --- a/configs/module_merge_test.go +++ b/configs/module_merge_test.go @@ -224,7 +224,7 @@ func TestModuleOverrideResourceFQNs(t *testing.T) { // now verify that a resource with no provider config falls back to default got = mod.ManagedResources["test_instance.default"] - wantProvider = addrs.NewLegacyProvider("test") + wantProvider = addrs.NewDefaultProvider("test") if !got.Provider.Equals(wantProvider) { t.Fatalf("wrong provider %s, want %s", got.Provider, wantProvider) } @@ -267,7 +267,7 @@ func TestMergeProviderVersionConstraints(t *testing.T) { VersionConstraints: []VersionConstraint{}, }, "null": ProviderRequirements{ - Type: addrs.NewLegacyProvider("null"), + Type: addrs.NewDefaultProvider("null"), VersionConstraints: []VersionConstraint{ VersionConstraint{ Required: version.Constraints(nil), @@ -292,7 +292,7 @@ func TestMergeProviderVersionConstraints(t *testing.T) { }, map[string]ProviderRequirements{ "random": ProviderRequirements{ - Type: addrs.NewLegacyProvider("random"), + Type: addrs.NewDefaultProvider("random"), VersionConstraints: []VersionConstraint{vc2}, }, }, diff --git a/configs/module_test.go b/configs/module_test.go index 81d05ea351..0bcd012504 100644 --- a/configs/module_test.go +++ b/configs/module_test.go @@ -45,7 +45,7 @@ func TestNewModule_resource_providers(t *testing.T) { // both the root and child module have two resources, one which should use // the default implied provider and one explicitly using a provider set in // required_providers - wantImplicit := addrs.NewLegacyProvider("test") + wantImplicit := addrs.NewDefaultProvider("test") wantFoo := addrs.NewProvider(addrs.DefaultRegistryHost, "foo", "test") wantBar := addrs.NewProvider(addrs.DefaultRegistryHost, "bar", "test") diff --git a/terraform/context_apply_test.go b/terraform/context_apply_test.go index cecd14f8db..98014080ba 100644 --- a/terraform/context_apply_test.go +++ b/terraform/context_apply_test.go @@ -39,11 +39,9 @@ func TestContext2Apply_basic(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -82,11 +80,9 @@ func TestContext2Apply_unstable(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -138,11 +134,9 @@ func TestContext2Apply_escape(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -157,7 +151,7 @@ func TestContext2Apply_escape(t *testing.T) { checkStateString(t, state, ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = "bar" type = aws_instance `) @@ -170,11 +164,9 @@ func TestContext2Apply_resourceCountOneList(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -187,7 +179,7 @@ func TestContext2Apply_resourceCountOneList(t *testing.T) { got := strings.TrimSpace(state.String()) want := strings.TrimSpace(`null_resource.foo.0: ID = foo - provider = provider["registry.terraform.io/-/null"] + provider = provider["registry.terraform.io/hashicorp/null"] Outputs: @@ -203,11 +195,9 @@ func TestContext2Apply_resourceCountZeroList(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -262,11 +252,9 @@ func TestContext2Apply_resourceDependsOnModule(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -301,7 +289,7 @@ func TestContext2Apply_resourceDependsOnModuleStateOnly(t *testing.T) { AttrsJSON: []byte(`{"id":"parent"}`), Dependencies: []addrs.ConfigResource{mustResourceAddr("module.child.aws_instance.child")}, }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) child := state.EnsureModule(addrs.RootModuleInstance.Child("child", addrs.NoKey)) child.SetResourceInstanceCurrent( @@ -310,7 +298,7 @@ func TestContext2Apply_resourceDependsOnModuleStateOnly(t *testing.T) { Status: states.ObjectReady, AttrsJSON: []byte(`{"id":"child"}`), }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) { @@ -341,11 +329,9 @@ func TestContext2Apply_resourceDependsOnModuleStateOnly(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -374,11 +360,9 @@ func TestContext2Apply_resourceDependsOnModuleDestroy(t *testing.T) { p.ApplyFn = testApplyFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -421,11 +405,9 @@ func TestContext2Apply_resourceDependsOnModuleDestroy(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: globalState, Destroy: true, }) @@ -480,11 +462,9 @@ func TestContext2Apply_resourceDependsOnModuleGrandchild(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -533,11 +513,9 @@ func TestContext2Apply_resourceDependsOnModuleInModule(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -564,11 +542,9 @@ func TestContext2Apply_mapVarBetweenModules(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -589,7 +565,7 @@ amis_from_module = {eu-west-1:ami-789012 eu-west-2:ami-989484 us-west-1:ami-1234 module.test: null_resource.noop: ID = foo - provider = provider["registry.terraform.io/-/null"] + provider = provider["registry.terraform.io/hashicorp/null"] Outputs: @@ -606,11 +582,9 @@ func TestContext2Apply_refCount(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -641,11 +615,9 @@ func TestContext2Apply_providerAlias(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -679,11 +651,9 @@ func TestContext2Apply_providerAliasConfigure(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("another"): testProviderFuncFixed(p2), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("another"): testProviderFuncFixed(p2), + }, }) if p, diags := ctx.Plan(); diags.HasErrors() { @@ -737,11 +707,9 @@ func TestContext2Apply_providerWarning(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -757,7 +725,7 @@ func TestContext2Apply_providerWarning(t *testing.T) { expected := strings.TrimSpace(` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) if actual != expected { t.Fatalf("got: \n%s\n\nexpected:\n%s", actual, expected) @@ -776,11 +744,9 @@ func TestContext2Apply_emptyModule(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -805,31 +771,21 @@ func TestContext2Apply_createBeforeDestroy(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "require_new": "abc", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar", "require_new": "abc"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -862,31 +818,23 @@ func TestContext2Apply_createBeforeDestroyUpdate(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "bar", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","foo":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -920,41 +868,31 @@ func TestContext2Apply_createBeforeDestroy_dependsNonCBD(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "require_new": "abc", - }, - }, - }, - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - Attributes: map[string]string{ - "require_new": "abc", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar", "require_new": "abc"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo", "require_new": "abc"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -972,7 +910,7 @@ func TestContext2Apply_createBeforeDestroy_dependsNonCBD(t *testing.T) { checkStateString(t, state, ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = yes type = aws_instance value = foo @@ -981,7 +919,7 @@ aws_instance.bar: aws_instance.foo aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = yes type = aws_instance `) @@ -993,25 +931,16 @@ func TestContext2Apply_createBeforeDestroy_hook(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "require_new": "abc", - }, - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar", "require_new": "abc"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) var actual []cty.Value var actualLock sync.Mutex @@ -1026,11 +955,9 @@ func TestContext2Apply_createBeforeDestroy_hook(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -1066,49 +993,48 @@ func TestContext2Apply_createBeforeDestroy_deposedCount(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Tainted: true, - }, - - Deposed: []*InstanceState{ - &InstanceState{ - ID: "foo", - }, - }, - }, - "aws_instance.bar.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Tainted: true, - }, - - Deposed: []*InstanceState{ - &InstanceState{ - ID: "bar", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceDeposed( + mustResourceInstanceAddr("aws_instance.bar[0]").Resource, + states.NewDeposedKey(), + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"foo"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceDeposed( + mustResourceInstanceAddr("aws_instance.bar[1]").Resource, + states.NewDeposedKey(), + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -1126,12 +1052,12 @@ func TestContext2Apply_createBeforeDestroy_deposedCount(t *testing.T) { checkStateString(t, state, ` aws_instance.bar.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.bar.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance `) @@ -1145,36 +1071,31 @@ func TestContext2Apply_createBeforeDestroy_deposedOnly(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - - Deposed: []*InstanceState{ - &InstanceState{ - ID: "foo", - }, - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceDeposed( + mustResourceInstanceAddr("aws_instance.bar").Resource, + states.NewDeposedKey(), + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"foo"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -1192,7 +1113,7 @@ func TestContext2Apply_createBeforeDestroy_deposedOnly(t *testing.T) { checkStateString(t, state, ` aws_instance.bar: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) } @@ -1201,32 +1122,21 @@ func TestContext2Apply_destroyComputed(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - Attributes: map[string]string{ - "output": "value", - }, - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo", "output": "value"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Destroy: true, }) @@ -1267,7 +1177,7 @@ func testContext2Apply_destroyDependsOn(t *testing.T) { Status: states.ObjectReady, AttrsJSON: []byte(`{"id":"bar"}`), }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) root.SetResourceInstanceCurrent( mustResourceInstanceAddr("aws_instance.foo").Resource, @@ -1276,7 +1186,7 @@ func testContext2Apply_destroyDependsOn(t *testing.T) { AttrsJSON: []byte(`{"id":"foo"}`), Dependencies: []addrs.ConfigResource{mustResourceAddr("aws_instance.bar")}, }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) // Record the order we see Apply @@ -1292,11 +1202,9 @@ func testContext2Apply_destroyDependsOn(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Destroy: true, Parallelism: 1, // To check ordering @@ -1333,7 +1241,7 @@ func TestContext2Apply_destroyDependsOnStateOnly(t *testing.T) { Dependencies: []addrs.ConfigResource{}, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -1358,7 +1266,7 @@ func TestContext2Apply_destroyDependsOnStateOnly(t *testing.T) { }, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -1390,11 +1298,9 @@ func testContext2Apply_destroyDependsOnStateOnly(t *testing.T, state *states.Sta ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Destroy: true, Parallelism: 1, // To check ordering @@ -1431,7 +1337,7 @@ func TestContext2Apply_destroyDependsOnStateOnlyModule(t *testing.T) { Dependencies: []addrs.ConfigResource{}, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -1456,7 +1362,7 @@ func TestContext2Apply_destroyDependsOnStateOnlyModule(t *testing.T) { }, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -1489,11 +1395,9 @@ func testContext2Apply_destroyDependsOnStateOnlyModule(t *testing.T, state *stat ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Destroy: true, Parallelism: 1, // To check ordering @@ -1527,11 +1431,9 @@ func TestContext2Apply_dataBasic(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, }) if p, diags := ctx.Plan(); diags.HasErrors() { @@ -1555,33 +1457,23 @@ func TestContext2Apply_destroyData(t *testing.T) { p := testProvider("null") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "data.null_data_source.testing": &ResourceState{ - Type: "null_data_source", - Primary: &InstanceState{ - ID: "-", - Attributes: map[string]string{ - "inputs.#": "1", - "inputs.test": "yes", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("data.null_data_source.testing").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"-"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/null"]`), + ) + hook := &testHook{} ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, State: state, Destroy: true, Hooks: []Hook{hook}, @@ -1625,34 +1517,30 @@ func TestContext2Apply_destroySkipsCBD(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - }, - }, - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Destroy: true, }) @@ -1673,28 +1561,21 @@ func TestContext2Apply_destroyModuleVarProviderConfig(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Destroy: true, }) @@ -1728,6 +1609,10 @@ func TestContext2Apply_destroyCrossProviders(t *testing.T) { }, "aws_vpc": { Attributes: map[string]*configschema.Attribute{ + "id": { + Type: cty.String, + Computed: true, + }, "value": { Type: cty.String, Optional: true, @@ -1738,7 +1623,7 @@ func TestContext2Apply_destroyCrossProviders(t *testing.T) { } providers := map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p_aws), + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p_aws), } // Bug only appears from time to time, @@ -1762,45 +1647,31 @@ func TestContext2Apply_destroyCrossProviders(t *testing.T) { } func getContextForApply_destroyCrossProviders(t *testing.T, m *configs.Config, providerFactories map[addrs.Provider]providers.Factory) *Context { - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.shared": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "remote-2652591293", - Attributes: map[string]string{ - "id": "test", - }, - }, - Provider: "provider.aws", - }, - }, - }, - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_vpc.bar": &ResourceState{ - Type: "aws_vpc", - Primary: &InstanceState{ - ID: "vpc-aaabbb12", - Attributes: map[string]string{ - "value": "test", - }, - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.shared").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"test"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + child := state.EnsureModule(addrs.RootModuleInstance.Child("child", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_vpc.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id": "vpc-aaabbb12", "value":"test"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providers.ResolverFixed(providerFactories), - State: state, - Destroy: true, + Config: m, + Providers: providerFactories, + State: state, + Destroy: true, }) return ctx @@ -1813,11 +1684,9 @@ func TestContext2Apply_minimal(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -1843,11 +1712,9 @@ func TestContext2Apply_badDiff(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -1878,11 +1745,9 @@ func TestContext2Apply_cancel(t *testing.T) { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ApplyFn = func(*InstanceInfo, *InstanceState, *InstanceDiff) (*InstanceState, error) { @@ -1957,11 +1822,9 @@ func TestContext2Apply_cancelBlock(t *testing.T) { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) applyCh := make(chan struct{}) @@ -2041,7 +1904,7 @@ func TestContext2Apply_cancelBlock(t *testing.T) { checkStateString(t, state, ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 `) } @@ -2066,11 +1929,9 @@ func TestContext2Apply_cancelProvisioner(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -2110,7 +1971,7 @@ func TestContext2Apply_cancelProvisioner(t *testing.T) { checkStateString(t, state, ` aws_instance.foo: (tainted) ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance `) @@ -2164,11 +2025,9 @@ func TestContext2Apply_compute(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) ctx.variables = InputValues{ @@ -2199,53 +2058,39 @@ func TestContext2Apply_countDecrease(t *testing.T) { p := testProvider("aws") p.DiffFn = testDiffFn p.ApplyFn = testApplyFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - "aws_instance.foo.2": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","foo": "foo","type": "aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","foo": "foo","type": "aws_instance"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[2]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar", "foo": "foo", "type": "aws_instance"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -2253,10 +2098,10 @@ func TestContext2Apply_countDecrease(t *testing.T) { t.Fatal("plan failed") } - state, diags := ctx.Apply() + s, diags := ctx.Apply() assertNoErrors(t, diags) - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace(testTerraformApplyCountDecStr) if actual != expected { t.Fatalf("wrong result\n\ngot:\n%s\n\nwant:\n%s", actual, expected) @@ -2268,57 +2113,51 @@ func TestContext2Apply_countDecreaseToOneX(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - "aws_instance.foo.2": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar", "foo": "foo", "type": "aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[2]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) if _, diags := ctx.Plan(); diags.HasErrors() { t.Fatalf("plan errors: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace(testTerraformApplyCountDecToOneStr) if actual != expected { t.Fatalf("wrong result\n\ngot:\n%s\n\nwant:\n%s", actual, expected) @@ -2335,42 +2174,31 @@ func TestContext2Apply_countDecreaseToOneCorrupted(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - Attributes: map[string]string{ - "type": "aws_instance", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar", "foo": "foo", "type": "aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"baz", "type": "aws_instance"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) if p, diags := ctx.Plan(); diags.HasErrors() { @@ -2383,12 +2211,12 @@ func TestContext2Apply_countDecreaseToOneCorrupted(t *testing.T) { } } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace(testTerraformApplyCountDecToOneCorruptedStr) if actual != expected { t.Fatalf("wrong final state\n\ngot:\n%s\n\nwant:\n%s", actual, expected) @@ -2400,34 +2228,22 @@ func TestContext2Apply_countTainted(t *testing.T) { p := testProvider("aws") p.DiffFn = testDiffFn p.ApplyFn = testApplyFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - Tainted: true, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"bar", "type": "aws_instance", "foo": "foo"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) { @@ -2449,19 +2265,19 @@ CREATE: aws_instance.foo[1] } } - state, diags := ctx.Apply() + s, diags := ctx.Apply() assertNoErrors(t, diags) - got := strings.TrimSpace(state.String()) + got := strings.TrimSpace(s.String()) want := strings.TrimSpace(` aws_instance.foo.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance aws_instance.foo.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance `) @@ -2477,11 +2293,9 @@ func TestContext2Apply_countVariable(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -2507,11 +2321,9 @@ func TestContext2Apply_countVariableRef(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -2543,18 +2355,17 @@ func TestContext2Apply_provisionerInterpCount(t *testing.T) { pr := testProvisioner() - providerResolver := providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ) + Providers := map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + } + provisioners := map[string]ProvisionerFactory{ "local-exec": testProvisionerFuncFixed(pr), } ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providerResolver, - Provisioners: provisioners, + Config: m, + Providers: Providers, + Provisioners: provisioners, }) plan, diags := ctx.Plan() @@ -2571,7 +2382,7 @@ func TestContext2Apply_provisionerInterpCount(t *testing.T) { if err != nil { t.Fatal(err) } - ctxOpts.ProviderResolver = providerResolver + ctxOpts.Providers = Providers ctxOpts.Provisioners = provisioners ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { @@ -2597,11 +2408,9 @@ func TestContext2Apply_foreachVariable(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("hello"), @@ -2632,11 +2441,9 @@ func TestContext2Apply_moduleBasic(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -2701,7 +2508,7 @@ func TestContext2Apply_moduleDestroyOrder(t *testing.T) { Status: states.ObjectReady, AttrsJSON: []byte(`{"id":"a"}`), }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) root := state.EnsureModule(addrs.RootModuleInstance) root.SetResourceInstanceCurrent( @@ -2711,16 +2518,14 @@ func TestContext2Apply_moduleDestroyOrder(t *testing.T) { AttrsJSON: []byte(`{"id":"b"}`), Dependencies: []addrs.ConfigResource{mustResourceAddr("module.child.aws_instance.a")}, }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Destroy: true, }) @@ -2768,11 +2573,9 @@ func TestContext2Apply_moduleInheritAlias(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -2789,7 +2592,7 @@ func TestContext2Apply_moduleInheritAlias(t *testing.T) { module.child: aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"].eu + provider = provider["registry.terraform.io/hashicorp/aws"].eu `) } @@ -2813,11 +2616,9 @@ func TestContext2Apply_orphanResource(t *testing.T) { m := testModule(t, "apply-orphan-resource") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() assertNoErrors(t, diags) @@ -2828,7 +2629,7 @@ func TestContext2Apply_orphanResource(t *testing.T) { // with the single instance associated with test_thing.one. want := states.BuildState(func(s *states.SyncState) { providerAddr := addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, } oneAddr := addrs.Resource{ @@ -2853,11 +2654,9 @@ func TestContext2Apply_orphanResource(t *testing.T) { ctx = testContext2(t, &ContextOpts{ Config: m, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags = ctx.Plan() assertNoErrors(t, diags) @@ -2895,31 +2694,23 @@ func TestContext2Apply_moduleOrphanInheritAlias(t *testing.T) { } // Create a state with an orphan module - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - Provider: "provider.aws.eu", - }, - }, - }, + state := states.NewState() + child := state.EnsureModule(addrs.RootModuleInstance.Child("child", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -2953,31 +2744,23 @@ func TestContext2Apply_moduleOrphanProvider(t *testing.T) { } // Create a state with an orphan module - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + child := state.EnsureModule(addrs.RootModuleInstance.Child("child", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3004,31 +2787,23 @@ func TestContext2Apply_moduleOrphanGrandchildProvider(t *testing.T) { } // Create a state with an orphan module that is nested (grandchild) - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "parent", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + child := state.EnsureModule(addrs.RootModuleInstance.Child("parent", addrs.NoKey).Child("child", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3061,11 +2836,9 @@ func TestContext2Apply_moduleGrandchildProvider(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3098,12 +2871,10 @@ func TestContext2Apply_moduleOnlyProvider(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - addrs.NewLegacyProvider("test"): testProviderFuncFixed(pTest), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + addrs.NewDefaultProvider("test"): testProviderFuncFixed(pTest), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3129,11 +2900,9 @@ func TestContext2Apply_moduleProviderAlias(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3159,11 +2928,9 @@ func TestContext2Apply_moduleProviderAliasTargets(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.ConfigResource{ Module: addrs.RootModule, @@ -3199,28 +2966,23 @@ func TestContext2Apply_moduleProviderCloseNested(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child", "subchild"}, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Destroy: true, }) @@ -3243,34 +3005,22 @@ func TestContext2Apply_moduleVarRefExisting(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - Attributes: map[string]string{ - "foo": "bar", - }, - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo","foo":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -3297,11 +3047,9 @@ func TestContext2Apply_moduleVarResourceCount(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "num": &InputValue{ Value: cty.NumberIntVal(2), @@ -3321,11 +3069,9 @@ func TestContext2Apply_moduleVarResourceCount(t *testing.T) { ctx = testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "num": &InputValue{ Value: cty.NumberIntVal(5), @@ -3351,11 +3097,9 @@ func TestContext2Apply_moduleBool(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3383,11 +3127,9 @@ func TestContext2Apply_moduleTarget(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("B", addrs.NoKey), }, @@ -3407,7 +3149,7 @@ func TestContext2Apply_moduleTarget(t *testing.T) { module.A: aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance @@ -3417,7 +3159,7 @@ module.A: module.B: aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance @@ -3438,12 +3180,10 @@ func TestContext2Apply_multiProvider(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - addrs.NewLegacyProvider("do"): testProviderFuncFixed(pDO), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + addrs.NewDefaultProvider("do"): testProviderFuncFixed(pDO), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3506,12 +3246,10 @@ func TestContext2Apply_multiProviderDestroy(t *testing.T) { { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - addrs.NewLegacyProvider("vault"): testProviderFuncFixed(p2), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + addrs.NewDefaultProvider("vault"): testProviderFuncFixed(p2), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3563,12 +3301,10 @@ func TestContext2Apply_multiProviderDestroy(t *testing.T) { Destroy: true, State: state, Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - addrs.NewLegacyProvider("vault"): testProviderFuncFixed(p2), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + addrs.NewDefaultProvider("vault"): testProviderFuncFixed(p2), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3633,12 +3369,10 @@ func TestContext2Apply_multiProviderDestroyChild(t *testing.T) { { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - addrs.NewLegacyProvider("vault"): testProviderFuncFixed(p2), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + addrs.NewDefaultProvider("vault"): testProviderFuncFixed(p2), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3690,12 +3424,10 @@ func TestContext2Apply_multiProviderDestroyChild(t *testing.T) { Destroy: true, State: state, Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - addrs.NewLegacyProvider("vault"): testProviderFuncFixed(p2), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + addrs.NewDefaultProvider("vault"): testProviderFuncFixed(p2), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -3728,11 +3460,9 @@ func TestContext2Apply_multiVar(t *testing.T) { // First, apply with a count of 3 ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "num": &InputValue{ Value: cty.NumberIntVal(3), @@ -3763,11 +3493,9 @@ func TestContext2Apply_multiVar(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "num": &InputValue{ Value: cty.NumberIntVal(1), @@ -3871,11 +3599,9 @@ func TestContext2Apply_multiVarComprehensive(t *testing.T) { // First, apply with a count of 3 ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, Variables: InputValues{ "num": &InputValue{ Value: cty.NumberIntVal(3), @@ -4024,11 +3750,9 @@ func TestContext2Apply_multiVarOrder(t *testing.T) { // First, apply with a count of 3 ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -4060,11 +3784,9 @@ func TestContext2Apply_multiVarOrderInterp(t *testing.T) { // First, apply with a count of 3 ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -4098,11 +3820,9 @@ func TestContext2Apply_multiVarCountDec(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "num": &InputValue{ Value: cty.NumberIntVal(2), @@ -4166,11 +3886,9 @@ func TestContext2Apply_multiVarCountDec(t *testing.T) { ctx := testContext2(t, &ContextOpts{ State: s, Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "num": &InputValue{ Value: cty.NumberIntVal(1), @@ -4226,11 +3944,9 @@ func TestContext2Apply_multiVarMissingState(t *testing.T) { // First, apply with a count of 3 ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -4252,11 +3968,9 @@ func TestContext2Apply_nilDiff(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -4294,11 +4008,9 @@ func TestContext2Apply_outputDependsOn(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -4319,11 +4031,9 @@ func TestContext2Apply_outputDependsOn(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -4338,7 +4048,7 @@ func TestContext2Apply_outputDependsOn(t *testing.T) { checkStateString(t, state, ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] Outputs: @@ -4353,33 +4063,16 @@ func TestContext2Apply_outputOrphan(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Outputs: map[string]*OutputState{ - "foo": &OutputState{ - Type: "string", - Sensitive: false, - Value: "bar", - }, - "bar": &OutputState{ - Type: "string", - Sensitive: false, - Value: "baz", - }, - }, - }, - }, - }) + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetOutputValue("foo", cty.StringVal("bar"), false) + root.SetOutputValue("bar", cty.StringVal("baz"), false) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -4405,44 +4098,26 @@ func TestContext2Apply_outputOrphanModule(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child"}, - Outputs: map[string]*OutputState{ - "foo": &OutputState{ - Type: "string", - Value: "bar", - }, - "bar": &OutputState{ - Type: "string", - Value: "baz", - }, - }, - }, - }, - }) + state := states.NewState() ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: state.DeepCopy(), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) if _, diags := ctx.Plan(); diags.HasErrors() { t.Fatalf("plan errors: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace(testTerraformApplyOutputOrphanModuleStr) if actual != expected { t.Fatalf("expected:\n%s\n\ngot:\n%s", expected, actual) @@ -4452,11 +4127,9 @@ func TestContext2Apply_outputOrphanModule(t *testing.T) { // remaining output ctx = testContext2(t, &ContextOpts{ Config: configs.NewEmptyConfig(), - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state.DeepCopy(), }) @@ -4486,12 +4159,10 @@ func TestContext2Apply_providerComputedVar(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - addrs.NewLegacyProvider("test"): testProviderFuncFixed(pTest), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + addrs.NewDefaultProvider("test"): testProviderFuncFixed(pTest), + }, }) p.ConfigureFn = func(c *ResourceConfig) error { @@ -4538,11 +4209,9 @@ func TestContext2Apply_providerConfigureDisabled(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -4576,11 +4245,9 @@ func TestContext2Apply_provisionerModule(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -4623,11 +4290,9 @@ func TestContext2Apply_Provisioner_compute(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -4673,11 +4338,9 @@ func TestContext2Apply_provisionerCreateFail(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -4714,11 +4377,9 @@ func TestContext2Apply_provisionerCreateFailNoId(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -4753,11 +4414,9 @@ func TestContext2Apply_provisionerFail(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -4789,31 +4448,22 @@ func TestContext2Apply_provisionerFail_createBeforeDestroy(t *testing.T) { return fmt.Errorf("EXPLOSION") } - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "require_new": "abc", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar", "require_new": "abc"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -4839,31 +4489,23 @@ func TestContext2Apply_provisionerFail_createBeforeDestroy(t *testing.T) { func TestContext2Apply_error_createBeforeDestroy(t *testing.T) { m := testModule(t, "apply-error-create-before") p := testProvider("aws") - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "require_new": "abc", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar", "require_new": "abc"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) p.ApplyFn = func(info *InstanceInfo, is *InstanceState, id *InstanceDiff) (*InstanceState, error) { @@ -4895,31 +4537,23 @@ func TestContext2Apply_error_createBeforeDestroy(t *testing.T) { func TestContext2Apply_errorDestroy_createBeforeDestroy(t *testing.T) { m := testModule(t, "apply-error-create-before") p := testProvider("aws") - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "require_new": "abc", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar", "require_new": "abc"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) p.ApplyFn = func(info *InstanceInfo, is *InstanceState, id *InstanceDiff) (*InstanceState, error) { @@ -4959,6 +4593,7 @@ func TestContext2Apply_errorDestroy_createBeforeDestroy(t *testing.T) { func TestContext2Apply_multiDepose_createBeforeDestroy(t *testing.T) { m := testModule(t, "apply-multi-depose-create-before-destroy") p := testProvider("aws") + ps := map[addrs.Provider]providers.Factory{addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p)} p.GetSchemaReturn = &ProviderSchema{ ResourceTypes: map[string]*configschema.Block{ "aws_instance": { @@ -4969,20 +4604,17 @@ func TestContext2Apply_multiDepose_createBeforeDestroy(t *testing.T) { }, }, } - ps := map[addrs.Provider]providers.Factory{addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p)} - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.web": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ID: "foo"}, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.web").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) p.DiffFn = func(info *InstanceInfo, s *InstanceState, rc *ResourceConfig) (*InstanceDiff, error) { if rc == nil { @@ -5009,9 +4641,9 @@ func TestContext2Apply_multiDepose_createBeforeDestroy(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providers.ResolverFixed(ps), - State: state, + Config: m, + Providers: ps, + State: state, }) createdInstanceId := "bar" // Create works @@ -5049,16 +4681,16 @@ func TestContext2Apply_multiDepose_createBeforeDestroy(t *testing.T) { checkStateString(t, state, ` aws_instance.web: (1 deposed) ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = yes Deposed ID 1 = foo `) createdInstanceId = "baz" ctx = testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providers.ResolverFixed(ps), - State: state, + Config: m, + Providers: ps, + State: state, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -5115,9 +4747,9 @@ aws_instance.web: (1 deposed) createdInstanceId = "qux" ctx = testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providers.ResolverFixed(ps), - State: state, + Config: m, + Providers: ps, + State: state, }) if _, diags := ctx.Plan(); diags.HasErrors() { t.Fatalf("plan errors: %s", diags.Err()) @@ -5132,7 +4764,7 @@ aws_instance.web: (1 deposed) checkStateString(t, state, ` aws_instance.web: (1 deposed) ID = qux - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = yes Deposed ID 1 = bar `) @@ -5144,9 +4776,9 @@ aws_instance.web: (1 deposed) createdInstanceId = "quux" ctx = testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providers.ResolverFixed(ps), - State: state, + Config: m, + Providers: ps, + State: state, }) if _, diags := ctx.Plan(); diags.HasErrors() { t.Fatalf("plan errors: %s", diags.Err()) @@ -5160,7 +4792,7 @@ aws_instance.web: (1 deposed) checkStateString(t, state, ` aws_instance.web: ID = quux - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = yes `) } @@ -5180,11 +4812,9 @@ func TestContext2Apply_provisionerFailContinue(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5202,7 +4832,7 @@ func TestContext2Apply_provisionerFailContinue(t *testing.T) { checkStateString(t, state, ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance `) @@ -5229,11 +4859,9 @@ func TestContext2Apply_provisionerFailContinueHook(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5278,18 +4906,16 @@ func TestContext2Apply_provisionerDestroy(t *testing.T) { Status: states.ObjectReady, AttrsJSON: []byte(`{"id":"bar"}`), }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) ctx := testContext2(t, &ContextOpts{ Config: m, State: state, Destroy: true, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5331,18 +4957,16 @@ func TestContext2Apply_provisionerDestroyFail(t *testing.T) { Status: states.ObjectReady, AttrsJSON: []byte(`{"id":"bar"}`), }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) ctx := testContext2(t, &ContextOpts{ Config: m, State: state, Destroy: true, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5360,7 +4984,7 @@ func TestContext2Apply_provisionerDestroyFail(t *testing.T) { checkStateString(t, state, ` aws_instance.foo["a"]: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) // Verify apply was invoked @@ -5400,18 +5024,16 @@ func TestContext2Apply_provisionerDestroyFailContinue(t *testing.T) { Status: states.ObjectReady, AttrsJSON: []byte(`{"id":"bar"}`), }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) ctx := testContext2(t, &ContextOpts{ Config: m, State: state, Destroy: true, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5463,31 +5085,24 @@ func TestContext2Apply_provisionerDestroyFailContinueFail(t *testing.T) { return fmt.Errorf("provisioner error") } - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, State: state, Destroy: true, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5505,7 +5120,7 @@ func TestContext2Apply_provisionerDestroyFailContinueFail(t *testing.T) { checkStateString(t, state, ` aws_instance.foo: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) // Verify apply was invoked @@ -5551,17 +5166,15 @@ func TestContext2Apply_provisionerDestroyTainted(t *testing.T) { Status: states.ObjectTainted, AttrsJSON: []byte(`{"id":"bar"}`), }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) ctx := testContext2(t, &ContextOpts{ Config: m, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5587,7 +5200,7 @@ func TestContext2Apply_provisionerDestroyTainted(t *testing.T) { checkStateString(t, state, ` aws_instance.foo["a"]: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance `) @@ -5620,11 +5233,9 @@ func TestContext2Apply_provisionerResourceRef(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5668,11 +5279,9 @@ func TestContext2Apply_provisionerSelfRef(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5723,11 +5332,9 @@ func TestContext2Apply_provisionerMultiSelfRef(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5785,11 +5392,9 @@ func TestContext2Apply_provisionerMultiSelfRefSingle(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5842,11 +5447,9 @@ func TestContext2Apply_provisionerExplicitSelfRef(t *testing.T) { { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5873,11 +5476,9 @@ func TestContext2Apply_provisionerExplicitSelfRef(t *testing.T) { Config: m, Destroy: true, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5915,11 +5516,9 @@ func TestContext2Apply_provisionerForEachSelfRef(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5947,11 +5546,9 @@ func TestContext2Apply_Provisioner_Diff(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -5997,11 +5594,9 @@ func TestContext2Apply_Provisioner_Diff(t *testing.T) { // Re-create context with state ctx = testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -6033,29 +5628,24 @@ func TestContext2Apply_Provisioner_Diff(t *testing.T) { func TestContext2Apply_outputDiffVars(t *testing.T) { m := testModule(t, "apply-good") p := testProvider("aws") - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.baz": &ResourceState{ // This one is not in config, so should be destroyed - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.baz").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) p.ApplyFn = func(info *InstanceInfo, s *InstanceState, d *InstanceDiff) (*InstanceState, error) { @@ -6113,11 +5703,9 @@ func TestContext2Apply_destroyX(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6137,11 +5725,9 @@ func TestContext2Apply_destroyX(t *testing.T) { State: state, Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -6177,11 +5763,9 @@ func TestContext2Apply_destroyOrder(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6203,11 +5787,9 @@ func TestContext2Apply_destroyOrder(t *testing.T) { State: state, Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -6244,11 +5826,9 @@ func TestContext2Apply_destroyModulePrefix(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6273,11 +5853,9 @@ func TestContext2Apply_destroyModulePrefix(t *testing.T) { State: state, Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -6301,31 +5879,23 @@ func TestContext2Apply_destroyNestedModule(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child", "subchild"}, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) // First plan and apply a create operation @@ -6333,13 +5903,13 @@ func TestContext2Apply_destroyNestedModule(t *testing.T) { t.Fatalf("plan errors: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } // Test that things were destroyed - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) if actual != "" { t.Fatalf("expected no state, got: %s", actual) } @@ -6351,31 +5921,23 @@ func TestContext2Apply_destroyDeeplyNestedModule(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child", "subchild", "subsubchild"}, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) // First plan and apply a create operation @@ -6383,14 +5945,14 @@ func TestContext2Apply_destroyDeeplyNestedModule(t *testing.T) { t.Fatalf("plan errors: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } // Test that things were destroyed - if !state.Empty() { - t.Fatalf("wrong final state %s\nwant empty state", spew.Sdump(state)) + if !s.Empty() { + t.Fatalf("wrong final state %s\nwant empty state", spew.Sdump(s)) } } @@ -6405,11 +5967,9 @@ func TestContext2Apply_destroyModuleWithAttrsReferencingResource(t *testing.T) { { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6437,11 +5997,9 @@ func TestContext2Apply_destroyModuleWithAttrsReferencingResource(t *testing.T) { Config: m, State: state, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6457,11 +6015,10 @@ func TestContext2Apply_destroyModuleWithAttrsReferencingResource(t *testing.T) { t.Fatalf("failed to round-trip through planfile: %s", err) } - ctxOpts.ProviderResolver = providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ) + ctxOpts.Providers = map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + } + ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) @@ -6494,11 +6051,9 @@ func TestContext2Apply_destroyWithModuleVariableAndCount(t *testing.T) { { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6521,11 +6076,9 @@ func TestContext2Apply_destroyWithModuleVariableAndCount(t *testing.T) { Config: m, State: state, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6539,11 +6092,11 @@ func TestContext2Apply_destroyWithModuleVariableAndCount(t *testing.T) { t.Fatalf("failed to round-trip through planfile: %s", err) } - ctxOpts.ProviderResolver = providers.ResolverFixed( + ctxOpts.Providers = map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ) + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + } + ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) @@ -6577,11 +6130,9 @@ func TestContext2Apply_destroyTargetWithModuleVariableAndCount(t *testing.T) { { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6600,11 +6151,9 @@ func TestContext2Apply_destroyTargetWithModuleVariableAndCount(t *testing.T) { Destroy: true, Config: m, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("child", addrs.NoKey), }, @@ -6660,11 +6209,9 @@ func TestContext2Apply_destroyWithModuleVariableAndCountNested(t *testing.T) { { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6687,11 +6234,9 @@ func TestContext2Apply_destroyWithModuleVariableAndCountNested(t *testing.T) { Config: m, State: state, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6705,11 +6250,11 @@ func TestContext2Apply_destroyWithModuleVariableAndCountNested(t *testing.T) { t.Fatalf("failed to round-trip through planfile: %s", err) } - ctxOpts.ProviderResolver = providers.ResolverFixed( + ctxOpts.Providers = map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ) + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + } + ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) @@ -6739,11 +6284,9 @@ func TestContext2Apply_destroyOutputs(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -6762,11 +6305,9 @@ func TestContext2Apply_destroyOutputs(t *testing.T) { Destroy: true, State: state, Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -6788,11 +6329,9 @@ func TestContext2Apply_destroyOutputs(t *testing.T) { Destroy: true, State: state, Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { t.Fatal(diags.Err()) @@ -6806,29 +6345,22 @@ func TestContext2Apply_destroyOutputs(t *testing.T) { func TestContext2Apply_destroyOrphan(t *testing.T) { m := testModule(t, "apply-error") p := testProvider("aws") - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.baz": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.baz").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) p.ApplyFn = func(info *InstanceInfo, s *InstanceState, d *InstanceDiff) (*InstanceState, error) { @@ -6861,12 +6393,12 @@ func TestContext2Apply_destroyOrphan(t *testing.T) { t.Fatalf("plan errors: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } - mod := state.RootModule() + mod := s.RootModule() if _, ok := mod.Resources["aws_instance.baz"]; ok { t.Fatalf("bad: %#v", mod.Resources) } @@ -6885,37 +6417,26 @@ func TestContext2Apply_destroyTaintedProvisioner(t *testing.T) { return nil } - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "id": "bar", - }, - Tainted: true, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, - State: s, + State: state, Destroy: true, }) @@ -6923,7 +6444,7 @@ func TestContext2Apply_destroyTaintedProvisioner(t *testing.T) { t.Fatalf("plan errors: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } @@ -6932,7 +6453,7 @@ func TestContext2Apply_destroyTaintedProvisioner(t *testing.T) { t.Fatal("provisioner should not be called") } - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace("") if actual != expected { t.Fatalf("wrong result\n\ngot:\n%s\n\nwant:\n%s", actual, expected) @@ -6946,11 +6467,9 @@ func TestContext2Apply_error(t *testing.T) { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ApplyFn = func(*InstanceInfo, *InstanceState, *InstanceDiff) (*InstanceState, error) { @@ -7045,16 +6564,14 @@ func TestContext2Apply_errorDestroy(t *testing.T) { AttrsJSON: []byte(`{"id":"baz"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, }, ) }), - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -7070,7 +6587,7 @@ func TestContext2Apply_errorDestroy(t *testing.T) { expected := strings.TrimSpace(` test_thing.foo: ID = baz - provider = provider["registry.terraform.io/-/test"] + provider = provider["registry.terraform.io/hashicorp/test"] `) // test_thing.foo is still here, even though provider returned no new state along with its error if actual != expected { t.Fatalf("expected:\n%s\n\ngot:\n%s", expected, actual) @@ -7111,11 +6628,9 @@ func TestContext2Apply_errorCreateInvalidNew(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -7185,16 +6700,14 @@ func TestContext2Apply_errorUpdateNullNew(t *testing.T) { AttrsJSON: []byte(`{"value":"old"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) }), - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -7236,29 +6749,24 @@ func TestContext2Apply_errorPartial(t *testing.T) { m := testModule(t, "apply-error") p := testProvider("aws") - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) p.ApplyFn = func(info *InstanceInfo, s *InstanceState, d *InstanceDiff) (*InstanceState, error) { @@ -7295,17 +6803,17 @@ func TestContext2Apply_errorPartial(t *testing.T) { t.Fatalf("plan errors: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags == nil { t.Fatal("should have error") } - mod := state.RootModule() + mod := s.RootModule() if len(mod.Resources) != 2 { t.Fatalf("bad: %#v", mod.Resources) } - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace(testTerraformApplyErrorPartialStr) if actual != expected { t.Fatalf("expected:\n%s\n\ngot:\n%s", expected, actual) @@ -7321,11 +6829,9 @@ func TestContext2Apply_hook(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -7354,32 +6860,24 @@ func TestContext2Apply_hookOrphan(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, State: state, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -7406,11 +6904,9 @@ func TestContext2Apply_idAttr(t *testing.T) { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ApplyFn = func(info *InstanceInfo, s *InstanceState, d *InstanceDiff) (*InstanceState, error) { @@ -7464,11 +6960,9 @@ func TestContext2Apply_outputBasic(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -7494,11 +6988,9 @@ func TestContext2Apply_outputAdd(t *testing.T) { p1.DiffFn = testDiffFn ctx1 := testContext2(t, &ContextOpts{ Config: m1, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p1), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p1), + }, }) if _, diags := ctx1.Plan(); diags.HasErrors() { @@ -7516,11 +7008,10 @@ func TestContext2Apply_outputAdd(t *testing.T) { p2.DiffFn = testDiffFn ctx2 := testContext2(t, &ContextOpts{ Config: m2, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p2), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p2), + }, + State: state1, }) @@ -7547,11 +7038,9 @@ func TestContext2Apply_outputList(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -7577,11 +7066,9 @@ func TestContext2Apply_outputMulti(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -7607,11 +7094,9 @@ func TestContext2Apply_outputMultiIndex(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -7649,34 +7134,24 @@ func TestContext2Apply_taintX(t *testing.T) { return testApplyFn(info, s, d) } p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - Attributes: map[string]string{ - "num": "2", - "type": "aws_instance", - }, - Tainted: true, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"baz","num": "2", "type": "aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) if p, diags := ctx.Plan(); diags.HasErrors() { @@ -7685,12 +7160,12 @@ func TestContext2Apply_taintX(t *testing.T) { t.Logf("plan: %s", legacyDiffComparisonString(p.Changes)) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace(testTerraformApplyTaintStr) if actual != expected { t.Fatalf("bad:\n%s", actual) @@ -7706,45 +7181,33 @@ func TestContext2Apply_taintDep(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - Attributes: map[string]string{ - "num": "2", - "type": "aws_instance", - }, - Tainted: true, - }, - }, - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "baz", - "num": "2", - "type": "aws_instance", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"baz","num": "2", "type": "aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","num": "2", "type": "aws_instance", "foo": "baz"}`), + Dependencies: []addrs.ConfigResource{mustResourceAddr("aws_instance.foo")}, + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) if p, diags := ctx.Plan(); diags.HasErrors() { @@ -7753,12 +7216,12 @@ func TestContext2Apply_taintDep(t *testing.T) { t.Logf("plan: %s", legacyDiffComparisonString(p.Changes)) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace(testTerraformApplyTaintDepStr) if actual != expected { t.Fatalf("bad:\n%s", actual) @@ -7770,45 +7233,33 @@ func TestContext2Apply_taintDepRequiresNew(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - Attributes: map[string]string{ - "num": "2", - "type": "aws_instance", - }, - Tainted: true, - }, - }, - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "baz", - "num": "2", - "type": "aws_instance", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"baz","num": "2", "type": "aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","num": "2", "type": "aws_instance", "foo": "baz"}`), + Dependencies: []addrs.ConfigResource{mustResourceAddr("aws_instance.foo")}, + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) if p, diags := ctx.Plan(); diags.HasErrors() { @@ -7817,12 +7268,12 @@ func TestContext2Apply_taintDepRequiresNew(t *testing.T) { t.Logf("plan: %s", legacyDiffComparisonString(p.Changes)) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace(testTerraformApplyTaintDepRequireNewStr) if actual != expected { t.Fatalf("bad:\n%s", actual) @@ -7836,11 +7287,9 @@ func TestContext2Apply_targeted(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( addrs.ManagedResourceMode, "aws_instance", "foo", @@ -7865,7 +7314,7 @@ func TestContext2Apply_targeted(t *testing.T) { checkStateString(t, state, ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance `) @@ -7878,11 +7327,9 @@ func TestContext2Apply_targetedCount(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( addrs.ManagedResourceMode, "aws_instance", "foo", @@ -7902,13 +7349,13 @@ func TestContext2Apply_targetedCount(t *testing.T) { checkStateString(t, state, ` aws_instance.foo.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo.2: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) } @@ -7919,11 +7366,9 @@ func TestContext2Apply_targetedCountIndex(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.ResourceInstance( addrs.ManagedResourceMode, "aws_instance", "foo", addrs.IntKey(1), @@ -7943,7 +7388,7 @@ func TestContext2Apply_targetedCountIndex(t *testing.T) { checkStateString(t, state, ` aws_instance.foo.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) } @@ -7952,24 +7397,32 @@ func TestContext2Apply_targetedDestroy(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-bcd345"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": resourceState("aws_instance", "i-bcd345"), - "aws_instance.bar": resourceState("aws_instance", "i-abc123"), - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( addrs.ManagedResourceMode, "aws_instance", "foo", @@ -7995,7 +7448,7 @@ func TestContext2Apply_targetedDestroy(t *testing.T) { checkStateString(t, state, ` aws_instance.bar: ID = i-abc123 - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) } @@ -8013,7 +7466,7 @@ func TestContext2Apply_targetedDestroyCountDeps(t *testing.T) { Status: states.ObjectReady, AttrsJSON: []byte(`{"id":"i-bcd345"}`), }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) root.SetResourceInstanceCurrent( mustResourceInstanceAddr("aws_instance.bar").Resource, @@ -8022,16 +7475,14 @@ func TestContext2Apply_targetedDestroyCountDeps(t *testing.T) { AttrsJSON: []byte(`{"id":"i-abc123"}`), Dependencies: []addrs.ConfigResource{mustResourceAddr("aws_instance.foo")}, }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"]`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( @@ -8059,31 +7510,49 @@ func TestContext2Apply_targetedDestroyModule(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-bcd345"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + child := state.EnsureModule(addrs.RootModuleInstance.Child("child", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-bcd345"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": resourceState("aws_instance", "i-bcd345"), - "aws_instance.bar": resourceState("aws_instance", "i-abc123"), - }, - }, - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.foo": resourceState("aws_instance", "i-bcd345"), - "aws_instance.bar": resourceState("aws_instance", "i-abc123"), - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("child", addrs.NoKey).Resource( addrs.ManagedResourceMode, "aws_instance", "foo", @@ -8104,15 +7573,15 @@ func TestContext2Apply_targetedDestroyModule(t *testing.T) { checkStateString(t, state, ` aws_instance.bar: ID = i-abc123 - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo: ID = i-bcd345 - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] module.child: aws_instance.bar: ID = i-abc123 - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) } @@ -8121,28 +7590,55 @@ func TestContext2Apply_targetedDestroyCountIndex(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn + + foo := &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-bcd345"}`), + } + bar := &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + } + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + foo, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + foo, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[2]").Resource, + foo, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar[0]").Resource, + bar, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar[1]").Resource, + bar, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar[2]").Resource, + bar, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": resourceState("aws_instance", "i-bcd345"), - "aws_instance.foo.1": resourceState("aws_instance", "i-bcd345"), - "aws_instance.foo.2": resourceState("aws_instance", "i-bcd345"), - "aws_instance.bar.0": resourceState("aws_instance", "i-abc123"), - "aws_instance.bar.1": resourceState("aws_instance", "i-abc123"), - "aws_instance.bar.2": resourceState("aws_instance", "i-abc123"), - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Targets: []addrs.Targetable{ addrs.RootModuleInstance.ResourceInstance( addrs.ManagedResourceMode, "aws_instance", "foo", addrs.IntKey(2), @@ -8166,16 +7662,16 @@ func TestContext2Apply_targetedDestroyCountIndex(t *testing.T) { checkStateString(t, state, ` aws_instance.bar.0: ID = i-abc123 - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.bar.2: ID = i-abc123 - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo.0: ID = i-bcd345 - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo.1: ID = i-bcd345 - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) } @@ -8186,11 +7682,9 @@ func TestContext2Apply_targetedModule(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("child", addrs.NoKey), }, @@ -8218,12 +7712,12 @@ func TestContext2Apply_targetedModule(t *testing.T) { module.child: aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance `) @@ -8237,11 +7731,9 @@ func TestContext2Apply_targetedModuleDep(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( addrs.ManagedResourceMode, "aws_instance", "foo", @@ -8263,7 +7755,7 @@ func TestContext2Apply_targetedModuleDep(t *testing.T) { checkStateString(t, state, ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance @@ -8273,7 +7765,7 @@ aws_instance.foo: module.child: aws_instance.mod: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] Outputs: @@ -8288,47 +7780,26 @@ func TestContext2Apply_targetedModuleUnrelatedOutputs(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn + + state := states.NewState() + _ = state.EnsureModule(addrs.RootModuleInstance.Child("child2", addrs.NoKey)) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("child2", addrs.NoKey), }, - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - { - Path: []string{"root"}, - Outputs: map[string]*OutputState{}, - Resources: map[string]*ResourceState{}, - }, - { - Path: []string{"root", "child1"}, - Outputs: map[string]*OutputState{ - "instance_id": { - Type: "string", - Value: "foo-bar-baz", - }, - }, - Resources: map[string]*ResourceState{}, - }, - { - Path: []string{"root", "child2"}, - Outputs: map[string]*OutputState{}, - Resources: map[string]*ResourceState{}, - }, - }, - }), + State: state, }) if _, diags := ctx.Plan(); diags.HasErrors() { t.Fatalf("plan errors: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("diags: %s", diags.Err()) } @@ -8337,7 +7808,7 @@ func TestContext2Apply_targetedModuleUnrelatedOutputs(t *testing.T) { // non-root module outputs between runs (they can be recalculated from config) // - module.child2's instance_id is updated because its dependency is updated // - child2_id is updated because if its transitive dependency via module.child2 - checkStateString(t, state, ` + checkStateString(t, s, ` Outputs: @@ -8346,7 +7817,7 @@ child2_id = foo module.child2: aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] Outputs: @@ -8361,11 +7832,9 @@ func TestContext2Apply_targetedModuleResource(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("child", addrs.NoKey).Resource( addrs.ManagedResourceMode, "aws_instance", "foo", @@ -8392,7 +7861,7 @@ func TestContext2Apply_targetedModuleResource(t *testing.T) { module.child: aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance `) @@ -8404,29 +7873,22 @@ func TestContext2Apply_targetedResourceOrphanModule(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - // Create a state with an orphan module - state := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{}, - Provider: "provider.aws", - }, - }, - }, + state := states.NewState() + child := state.EnsureModule(addrs.RootModuleInstance.Child("parent", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"type":"aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( @@ -8451,11 +7913,9 @@ func TestContext2Apply_unknownAttribute(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -8481,11 +7941,9 @@ func TestContext2Apply_unknownAttributeInterpolate(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags == nil { @@ -8612,7 +8070,7 @@ func TestContext2Apply_createBefore_depends(t *testing.T) { AttrsJSON: []byte(`{"id":"bar","require_new":"ami-old"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -8638,7 +8096,7 @@ func TestContext2Apply_createBefore_depends(t *testing.T) { }, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -8646,11 +8104,9 @@ func TestContext2Apply_createBefore_depends(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -8745,7 +8201,7 @@ func TestContext2Apply_singleDestroy(t *testing.T) { AttrsJSON: []byte(`{"id":"bar","require_new":"ami-old"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -8771,7 +8227,7 @@ func TestContext2Apply_singleDestroy(t *testing.T) { }, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -8779,11 +8235,9 @@ func TestContext2Apply_singleDestroy(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -8823,11 +8277,9 @@ func TestContext2Apply_issue7824(t *testing.T) { // Apply cleanly step 0 ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("template"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("template"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -8841,11 +8293,11 @@ func TestContext2Apply_issue7824(t *testing.T) { t.Fatalf("failed to round-trip through planfile: %s", err) } - ctxOpts.ProviderResolver = providers.ResolverFixed( + ctxOpts.Providers = map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("template"): testProviderFuncFixed(p), - }, - ) + addrs.NewDefaultProvider("template"): testProviderFuncFixed(p), + } + ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) @@ -8881,11 +8333,9 @@ func TestContext2Apply_issue5254(t *testing.T) { // Apply cleanly step 0 ctx := testContext2(t, &ContextOpts{ Config: testModule(t, "issue-5254/step-0"), - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("template"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("template"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -8904,11 +8354,9 @@ func TestContext2Apply_issue5254(t *testing.T) { ctx = testContext2(t, &ContextOpts{ Config: m, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("template"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("template"): testProviderFuncFixed(p), + }, }) plan, diags = ctx.Plan() @@ -8922,11 +8370,10 @@ func TestContext2Apply_issue5254(t *testing.T) { t.Fatalf("failed to round-trip through planfile: %s", err) } - ctxOpts.ProviderResolver = providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("template"): testProviderFuncFixed(p), - }, - ) + ctxOpts.Providers = map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("template"): testProviderFuncFixed(p), + } + ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) @@ -8941,7 +8388,7 @@ func TestContext2Apply_issue5254(t *testing.T) { expected := strings.TrimSpace(` template_file.child: ID = foo - provider = provider["registry.terraform.io/-/template"] + provider = provider["registry.terraform.io/hashicorp/template"] __template_requires_new = true template = Hi type = template_file @@ -8950,7 +8397,7 @@ template_file.child: template_file.parent template_file.parent.0: ID = foo - provider = provider["registry.terraform.io/-/template"] + provider = provider["registry.terraform.io/hashicorp/template"] template = Hi type = template_file `) @@ -8964,34 +8411,29 @@ func TestContext2Apply_targetedWithTaintedInState(t *testing.T) { p.DiffFn = testDiffFn p.ApplyFn = testApplyFn m, snap := testModuleWithSnapshot(t, "apply-tainted-targets") + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.ifailedprovisioners").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"ifailedprovisioners"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( addrs.ManagedResourceMode, "aws_instance", "iambeingadded", ), }, - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.ifailedprovisioners": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "ifailedprovisioners", - Tainted: true, - }, - }, - }, - }, - }, - }), + State: state, }) plan, diags := ctx.Plan() @@ -9005,29 +8447,28 @@ func TestContext2Apply_targetedWithTaintedInState(t *testing.T) { t.Fatalf("failed to round-trip through planfile: %s", err) } - ctxOpts.ProviderResolver = providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ) + ctxOpts.Providers = map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + } + ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) } - actual := strings.TrimSpace(state.String()) + actual := strings.TrimSpace(s.String()) expected := strings.TrimSpace(` aws_instance.iambeingadded: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.ifailedprovisioners: (tainted) ID = ifailedprovisioners - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] `) if actual != expected { t.Fatalf("expected state: \n%s\ngot: \n%s", expected, actual) @@ -9050,11 +8491,9 @@ func TestContext2Apply_ignoreChangesCreate(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if p, diags := ctx.Plan(); diags.HasErrors() { @@ -9078,7 +8517,7 @@ func TestContext2Apply_ignoreChangesCreate(t *testing.T) { expected := strings.TrimSpace(` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] required_field = set type = aws_instance `) @@ -9112,73 +8551,58 @@ func TestContext2Apply_ignoreChangesWithDep(t *testing.T) { return nil, nil } } - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc123", - Attributes: map[string]string{ - "ami": "ami-abcd1234", - "id": "i-abc123", - }, - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-bcd234", - Attributes: map[string]string{ - "ami": "ami-abcd1234", - "id": "i-bcd234", - }, - }, - }, - "aws_eip.foo.0": &ResourceState{ - Type: "aws_eip", - Primary: &InstanceState{ - ID: "eip-abc123", - Attributes: map[string]string{ - "id": "eip-abc123", - "instance": "i-abc123", - }, - }, - }, - "aws_eip.foo.1": &ResourceState{ - Type: "aws_eip", - Primary: &InstanceState{ - ID: "eip-bcd234", - Attributes: map[string]string{ - "id": "eip-bcd234", - "instance": "i-bcd234", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123","ami":"ami-abcd1234"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-bcd234","ami":"i-bcd234"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_eip.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"eip-abc123","instance":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_eip.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"eip-bcd234","instance":"i-bcd234"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) _, diags := ctx.Plan() assertNoErrors(t, diags) - state, diags := ctx.Apply() + s, diags := ctx.Apply() assertNoErrors(t, diags) - actual := strings.TrimSpace(state.String()) - expected := strings.TrimSpace(s.String()) + actual := strings.TrimSpace(s.String()) + expected := strings.TrimSpace(state.String()) if actual != expected { t.Fatalf("expected:\n%s\n\ngot:\n%s", expected, actual) } @@ -9198,11 +8622,9 @@ func TestContext2Apply_ignoreChangesWildcard(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if p, diags := ctx.Plan(); diags.HasErrors() { @@ -9225,7 +8647,7 @@ func TestContext2Apply_ignoreChangesWildcard(t *testing.T) { expected := strings.TrimSpace(` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] required_field = set type = aws_instance `) @@ -9246,11 +8668,9 @@ func TestContext2Apply_destroyNestedModuleWithAttrsReferencingResource(t *testin { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, }) // First plan and apply a create operation @@ -9269,11 +8689,9 @@ func TestContext2Apply_destroyNestedModuleWithAttrsReferencingResource(t *testin Destroy: true, Config: m, State: state, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -9286,11 +8704,10 @@ func TestContext2Apply_destroyNestedModuleWithAttrsReferencingResource(t *testin t.Fatalf("failed to round-trip through planfile: %s", err) } - ctxOpts.ProviderResolver = providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ) + ctxOpts.Providers = map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + } + ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) @@ -9315,11 +8732,9 @@ func TestContext2Apply_dataDependsOn(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, }) // the "provisioner" here writes to this variable, because the intent is to @@ -9382,11 +8797,9 @@ func TestContext2Apply_terraformWorkspace(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Meta: &ContextMeta{Env: "foo"}, Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -9413,11 +8826,9 @@ func TestContext2Apply_multiRef(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -9442,11 +8853,9 @@ func TestContext2Apply_targetedModuleRecursive(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("child", addrs.NoKey), }, @@ -9476,7 +8885,7 @@ func TestContext2Apply_targetedModuleRecursive(t *testing.T) { module.child.subchild: aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance `) @@ -9485,10 +8894,8 @@ module.child.subchild: func TestContext2Apply_localVal(t *testing.T) { m := testModule(t, "apply-local-val") ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{}, - ), + Config: m, + Providers: map[addrs.Provider]providers.Factory{}, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -9527,41 +8934,25 @@ func TestContext2Apply_destroyWithLocals(t *testing.T) { d, err := testDiffFn(info, s, c) return d, err } - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Outputs: map[string]*OutputState{ - "name": &OutputState{ - Type: "string", - Value: "test-bar", - }, - }, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - // FIXME: id should only exist in one place - Attributes: map[string]string{ - "id": "foo", - }, - }, - Provider: "provider.aws", - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetOutputValue("name", cty.StringVal("test-bar"), false) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Destroy: true, }) @@ -9569,12 +8960,12 @@ func TestContext2Apply_destroyWithLocals(t *testing.T) { t.Fatalf("err: %s", diags.Err()) } - state, diags := ctx.Apply() + s, diags := ctx.Apply() if diags.HasErrors() { t.Fatalf("error during apply: %s", diags.Err()) } - got := strings.TrimSpace(state.String()) + got := strings.TrimSpace(s.String()) want := strings.TrimSpace(``) if got != want { t.Fatalf("wrong final state\ngot:\n%s\nwant:\n%s", got, want) @@ -9597,11 +8988,9 @@ func TestContext2Apply_providerWithLocals(t *testing.T) { p.ApplyFn = testApplyFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -9615,11 +9004,9 @@ func TestContext2Apply_providerWithLocals(t *testing.T) { ctx = testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Destroy: true, }) @@ -9656,16 +9043,14 @@ func TestContext2Apply_destroyWithProviders(t *testing.T) { Status: states.ObjectReady, AttrsJSON: []byte(`{"id":"bar"}`), }, - mustProviderConfig(`provider["registry.terraform.io/-/aws"].baz`), + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"].baz`), ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Destroy: true, }) @@ -9677,7 +9062,7 @@ func TestContext2Apply_destroyWithProviders(t *testing.T) { // correct the state state.Modules["module.mod.module.removed"].Resources["aws_instance.child"].ProviderConfig = addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Alias: "bar", Module: addrs.RootModule, } @@ -9703,6 +9088,39 @@ func TestContext2Apply_providersFromState(t *testing.T) { p := testProvider("aws") p.DiffFn = testDiffFn + implicitProviderState := states.NewState() + impRoot := implicitProviderState.EnsureModule(addrs.RootModuleInstance) + impRoot.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.a").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + + aliasedProviderState := states.NewState() + aliasRoot := aliasedProviderState.EnsureModule(addrs.RootModuleInstance) + aliasRoot.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.a").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"].bar`), + ) + + moduleProviderState := states.NewState() + moduleProviderRoot := moduleProviderState.EnsureModule(addrs.RootModuleInstance) + moduleProviderRoot.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.a").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`module.child.provider["registry.terraform.io/hashicorp/aws"]`), + ) + for _, tc := range []struct { name string state *states.State @@ -9710,81 +9128,33 @@ func TestContext2Apply_providersFromState(t *testing.T) { err bool }{ { - name: "add implicit provider", - state: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root"}, - Resources: map[string]*ResourceState{ - "aws_instance.a": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - Provider: "provider.aws", - }, - }, - }, - }, - }), + name: "add implicit provider", + state: implicitProviderState, err: false, output: "", }, // an aliased provider must be in the config to remove a resource { - name: "add aliased provider", - state: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root"}, - Resources: map[string]*ResourceState{ - "aws_instance.a": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - Provider: "provider.aws.bar", - }, - }, - }, - }, - }), - err: true, + name: "add aliased provider", + state: aliasedProviderState, + err: true, }, // a provider in a module implies some sort of config, so this isn't // allowed even without an alias { - name: "add unaliased module provider", - state: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.a": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - Provider: "module.child.provider.aws", - }, - }, - }, - }, - }), - err: true, + name: "add unaliased module provider", + state: moduleProviderState, + err: true, }, } { - t.Run(tc.name, func(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: tc.state, }) @@ -9818,33 +9188,25 @@ func TestContext2Apply_plannedInterpolatedCount(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - providerResolver := providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + Providers := map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + } + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.test").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.test": { - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - }, - Provider: "provider.aws", - }, - }, - }, - }, - }) - ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providerResolver, - State: s, + Config: m, + Providers: Providers, + State: state, }) plan, diags := ctx.Plan() @@ -9860,7 +9222,7 @@ func TestContext2Apply_plannedInterpolatedCount(t *testing.T) { t.Fatalf("failed to round-trip through planfile: %s", err) } - ctxOpts.ProviderResolver = providerResolver + ctxOpts.Providers = Providers ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) @@ -9879,48 +9241,35 @@ func TestContext2Apply_plannedDestroyInterpolatedCount(t *testing.T) { p := testProvider("aws") p.ApplyFn = testApplyFn p.DiffFn = testDiffFn + providers := map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + } - providerResolver := providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.a[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) - - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.a.0": { - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - }, - Provider: "provider.aws", - }, - "aws_instance.a.1": { - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - }, - Provider: "provider.aws", - }, - }, - Outputs: map[string]*OutputState{ - "out": { - Type: "list", - Value: []string{"foo", "foo"}, - }, - }, - }, + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.a[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetOutputValue("out", cty.ListVal([]cty.Value{cty.StringVal("foo"), cty.StringVal("foo")}), false) ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providerResolver, - State: s, - Destroy: true, + Config: m, + Providers: providers, + State: state, + Destroy: true, }) plan, diags := ctx.Plan() @@ -9936,7 +9285,7 @@ func TestContext2Apply_plannedDestroyInterpolatedCount(t *testing.T) { t.Fatalf("failed to round-trip through planfile: %s", err) } - ctxOpts.ProviderResolver = providerResolver + ctxOpts.Providers = providers ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("err: %s", diags.Err()) @@ -9956,43 +9305,33 @@ func TestContext2Apply_scaleInMultivarRef(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - providerResolver := providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + Providers := map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + } + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.one").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.two").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), ) - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.one": { - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - }, - Provider: "provider.aws", - }, - "aws_instance.two": { - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - Attributes: map[string]string{ - "value": "foo", - }, - }, - Provider: "provider.aws", - }, - }, - }, - }, - }) - ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providerResolver, - State: s, + Config: m, + Providers: Providers, + State: state, Variables: InputValues{ "instance_count": { Value: cty.NumberIntVal(0), @@ -10039,11 +9378,9 @@ func TestContext2Apply_inconsistentWithPlan(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -10102,16 +9439,14 @@ func TestContext2Apply_issue19908(t *testing.T) { Status: states.ObjectReady, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, }, ) }), - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Plan(); diags.HasErrors() { @@ -10164,11 +9499,9 @@ func TestContext2Apply_invalidIndexRef(t *testing.T) { m := testModule(t, "apply-invalid-index") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) diags := c.Validate() if diags.HasErrors() { @@ -10230,7 +9563,7 @@ func TestContext2Apply_moduleReplaceCycle(t *testing.T) { CreateBeforeDestroy: mode == "cbd", }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -10247,7 +9580,7 @@ func TestContext2Apply_moduleReplaceCycle(t *testing.T) { AttrsJSON: []byte(`{"id":"b","require_new":"old"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -10290,7 +9623,7 @@ func TestContext2Apply_moduleReplaceCycle(t *testing.T) { Name: "a", }.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance.Child("a", addrs.NoKey)), ProviderAddr: addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ChangeSrc: plans.ChangeSrc{ @@ -10306,7 +9639,7 @@ func TestContext2Apply_moduleReplaceCycle(t *testing.T) { Name: "b", }.Instance(addrs.IntKey(0)).Absolute(addrs.RootModuleInstance.Child("b", addrs.NoKey)), ProviderAddr: addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ChangeSrc: plans.ChangeSrc{ @@ -10320,11 +9653,9 @@ func TestContext2Apply_moduleReplaceCycle(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: state, Changes: changes, }) @@ -10357,7 +9688,7 @@ func TestContext2Apply_destroyDataCycle(t *testing.T) { AttrsJSON: []byte(`{"id":"a"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("null"), + Provider: addrs.NewDefaultProvider("null"), Module: addrs.RootModule, }, ) @@ -10372,24 +9703,22 @@ func TestContext2Apply_destroyDataCycle(t *testing.T) { AttrsJSON: []byte(`{"id":"data"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("null"), + Provider: addrs.NewDefaultProvider("null"), Module: addrs.RootModule, }, ) - providerResolver := providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ) + Providers := map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + } hook := &testHook{} ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providerResolver, - State: state, - Destroy: true, - Hooks: []Hook{hook}, + Config: m, + Providers: Providers, + State: state, + Destroy: true, + Hooks: []Hook{hook}, }) plan, diags := ctx.Plan() @@ -10405,7 +9734,7 @@ func TestContext2Apply_destroyDataCycle(t *testing.T) { if err != nil { t.Fatal(err) } - ctxOpts.ProviderResolver = providerResolver + ctxOpts.Providers = Providers ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("failed to create context for plan: %s", diags.Err()) @@ -10447,7 +9776,7 @@ func TestContext2Apply_taintedDestroyFailure(t *testing.T) { AttrsJSON: []byte(`{"id":"a","foo":"a"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, }, ) @@ -10462,7 +9791,7 @@ func TestContext2Apply_taintedDestroyFailure(t *testing.T) { AttrsJSON: []byte(`{"id":"b","foo":"b"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, }, ) @@ -10477,22 +9806,20 @@ func TestContext2Apply_taintedDestroyFailure(t *testing.T) { AttrsJSON: []byte(`{"id":"c","foo":"old"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, }, ) - providerResolver := providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ) + Providers := map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + } ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providerResolver, - State: state, - Hooks: []Hook{&testHook{}}, + Config: m, + Providers: Providers, + State: state, + Hooks: []Hook{&testHook{}}, }) _, diags := ctx.Plan() @@ -10587,11 +9914,9 @@ func TestContext2Apply_plannedConnectionRefs(t *testing.T) { return resp } - providerResolver := providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ) + Providers := map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + } provisioners := map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), @@ -10599,10 +9924,10 @@ func TestContext2Apply_plannedConnectionRefs(t *testing.T) { hook := &testHook{} ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providerResolver, - Provisioners: provisioners, - Hooks: []Hook{hook}, + Config: m, + Providers: Providers, + Provisioners: provisioners, + Hooks: []Hook{hook}, }) _, diags := ctx.Plan() @@ -10654,7 +9979,7 @@ func TestContext2Apply_cbdCycle(t *testing.T) { }, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, }, ) @@ -10679,7 +10004,7 @@ func TestContext2Apply_cbdCycle(t *testing.T) { }, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, }, ) @@ -10694,23 +10019,21 @@ func TestContext2Apply_cbdCycle(t *testing.T) { AttrsJSON: []byte(`{"id":"c","require_new":"old"}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, }, ) - providerResolver := providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ) + Providers := map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + } hook := &testHook{} ctx := testContext2(t, &ContextOpts{ - Config: m, - ProviderResolver: providerResolver, - State: state, - Hooks: []Hook{hook}, + Config: m, + Providers: Providers, + State: state, + Hooks: []Hook{hook}, }) plan, diags := ctx.Plan() @@ -10726,7 +10049,7 @@ func TestContext2Apply_cbdCycle(t *testing.T) { if err != nil { t.Fatal(err) } - ctxOpts.ProviderResolver = providerResolver + ctxOpts.Providers = Providers ctx, diags = NewContext(ctxOpts) if diags.HasErrors() { t.Fatalf("failed to create context for plan: %s", diags.Err()) @@ -10763,11 +10086,9 @@ func TestContext2Apply_ProviderMeta_apply_set(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -10839,11 +10160,9 @@ func TestContext2Apply_ProviderMeta_apply_unset(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -10892,11 +10211,9 @@ func TestContext2Apply_ProviderMeta_plan_set(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -10963,11 +10280,9 @@ func TestContext2Apply_ProviderMeta_plan_unset(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -10997,11 +10312,9 @@ func TestContext2Apply_ProviderMeta_plan_setNoSchema(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -11012,7 +10325,7 @@ func TestContext2Apply_ProviderMeta_plan_setNoSchema(t *testing.T) { var rootErr, subErr bool errorSummary := "The resource test_%s.bar belongs to a provider that doesn't support provider_meta blocks" for _, diag := range diags { - if diag.Description().Summary != "Provider registry.terraform.io/-/test doesn't support provider_meta" { + if diag.Description().Summary != "Provider registry.terraform.io/hashicorp/test doesn't support provider_meta" { t.Errorf("Unexpected error: %+v", diag.Description()) } switch diag.Description().Detail { @@ -11049,11 +10362,9 @@ func TestContext2Apply_ProviderMeta_plan_setInvalid(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -11116,11 +10427,9 @@ func TestContext2Apply_ProviderMeta_refresh_set(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -11187,11 +10496,9 @@ func TestContext2Apply_ProviderMeta_refresh_unset(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -11230,11 +10537,9 @@ func TestContext2Apply_ProviderMeta_refresh_setNoSchema(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -11248,11 +10553,9 @@ func TestContext2Apply_ProviderMeta_refresh_setNoSchema(t *testing.T) { p.GetSchemaReturn = schema ctx = testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, State: ctx.State(), }) @@ -11264,7 +10567,7 @@ func TestContext2Apply_ProviderMeta_refresh_setNoSchema(t *testing.T) { var rootErr, subErr bool errorSummary := "The resource test_%s.bar belongs to a provider that doesn't support provider_meta blocks" for _, diag := range diags { - if diag.Description().Summary != "Provider registry.terraform.io/-/test doesn't support provider_meta" { + if diag.Description().Summary != "Provider registry.terraform.io/hashicorp/test doesn't support provider_meta" { t.Errorf("Unexpected error: %+v", diag.Description()) } switch diag.Description().Detail { @@ -11303,11 +10606,9 @@ func TestContext2Apply_ProviderMeta_refresh_setInvalid(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -11328,11 +10629,9 @@ func TestContext2Apply_ProviderMeta_refresh_setInvalid(t *testing.T) { p.GetSchemaReturn = schema ctx = testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, State: ctx.State(), }) @@ -11385,11 +10684,9 @@ func TestContext2Apply_ProviderMeta_refreshdata_set(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) rdsPMs := map[string]cty.Value{} p.ReadDataSourceFn = func(req providers.ReadDataSourceRequest) providers.ReadDataSourceResponse { @@ -11483,11 +10780,9 @@ func TestContext2Apply_ProviderMeta_refreshdata_unset(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) rdsPMs := map[string]cty.Value{} p.ReadDataSourceFn = func(req providers.ReadDataSourceRequest) providers.ReadDataSourceResponse { @@ -11547,11 +10842,9 @@ func TestContext2Apply_ProviderMeta_refreshdata_setNoSchema(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) p.ReadDataSourceResponse = providers.ReadDataSourceResponse{ State: cty.ObjectVal(map[string]cty.Value{ @@ -11568,7 +10861,7 @@ func TestContext2Apply_ProviderMeta_refreshdata_setNoSchema(t *testing.T) { var rootErr, subErr bool errorSummary := "The resource data.test_%s.foo belongs to a provider that doesn't support provider_meta blocks" for _, diag := range diags { - if diag.Description().Summary != "Provider registry.terraform.io/-/test doesn't support provider_meta" { + if diag.Description().Summary != "Provider registry.terraform.io/hashicorp/test doesn't support provider_meta" { t.Errorf("Unexpected error: %+v", diag.Description()) } switch diag.Description().Detail { @@ -11605,11 +10898,9 @@ func TestContext2Apply_ProviderMeta_refreshdata_setInvalid(t *testing.T) { p.GetSchemaReturn = schema ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) p.ReadDataSourceResponse = providers.ReadDataSourceResponse{ State: cty.ObjectVal(map[string]cty.Value{ diff --git a/terraform/context_fixtures_test.go b/terraform/context_fixtures_test.go index 96cdb13d53..5b2a6eed9d 100644 --- a/terraform/context_fixtures_test.go +++ b/terraform/context_fixtures_test.go @@ -14,9 +14,9 @@ import ( // to create a base testing scenario. This is used to represent some common // situations used as the basis for multiple tests. type contextTestFixture struct { - Config *configs.Config - ProviderResolver providers.Resolver - Provisioners map[string]ProvisionerFactory + Config *configs.Config + Providers map[addrs.Provider]providers.Factory + Provisioners map[string]ProvisionerFactory } // ContextOpts returns a ContextOps pre-populated with the elements of this @@ -24,9 +24,9 @@ type contextTestFixture struct { // _shallow_ modifications to the options as needed. func (f *contextTestFixture) ContextOpts() *ContextOpts { return &ContextOpts{ - Config: f.Config, - ProviderResolver: f.ProviderResolver, - Provisioners: f.Provisioners, + Config: f.Config, + Providers: f.Providers, + Provisioners: f.Provisioners, } } @@ -52,11 +52,9 @@ func contextFixtureApplyVars(t *testing.T) *contextTestFixture { p.DiffFn = testDiffFn return &contextTestFixture{ Config: c, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, } } @@ -80,10 +78,8 @@ func contextFixtureApplyVarsEnv(t *testing.T) *contextTestFixture { p.DiffFn = testDiffFn return &contextTestFixture{ Config: c, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, } } diff --git a/terraform/context_import_test.go b/terraform/context_import_test.go index 4162bb46e7..6c24c1ba2e 100644 --- a/terraform/context_import_test.go +++ b/terraform/context_import_test.go @@ -17,11 +17,9 @@ func TestContextImport_basic(t *testing.T) { m := testModule(t, "import-provider") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -57,11 +55,9 @@ func TestContextImport_basic_errpr(t *testing.T) { m := testModule(t, "import-provider") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -92,11 +88,9 @@ func TestContextImport_countIndex(t *testing.T) { m := testModule(t, "import-provider") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -132,11 +126,9 @@ func TestContextImport_collision(t *testing.T) { m := testModule(t, "import-provider") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, State: states.BuildState(func(s *states.SyncState) { s.SetResourceInstanceCurrent( @@ -152,7 +144,7 @@ func TestContextImport_collision(t *testing.T) { Status: states.ObjectReady, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("aws"), + Provider: addrs.NewDefaultProvider("aws"), Module: addrs.RootModule, }, ) @@ -183,7 +175,7 @@ func TestContextImport_collision(t *testing.T) { actual := strings.TrimSpace(state.String()) expected := `aws_instance.foo: ID = bar - provider = provider["registry.terraform.io/-/aws"]` + provider = provider["registry.terraform.io/hashicorp/aws"]` if actual != expected { t.Fatalf("bad: \n%s", actual) @@ -202,11 +194,9 @@ func TestContextImport_missingType(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) state, diags := ctx.Import(&ImportOpts{ @@ -254,11 +244,9 @@ func TestContextImport_moduleProvider(t *testing.T) { m := testModule(t, "import-provider") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) state, diags := ctx.Import(&ImportOpts{ @@ -292,11 +280,9 @@ func TestContextImport_providerModule(t *testing.T) { m := testModule(t, "import-module") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -343,11 +329,9 @@ func TestContextImport_providerVarConfig(t *testing.T) { m := testModule(t, "import-provider-vars") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("bar"), @@ -405,11 +389,9 @@ func TestContextImport_providerNonVarConfig(t *testing.T) { m := testModule(t, "import-provider-non-vars") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -439,11 +421,9 @@ func TestContextImport_refresh(t *testing.T) { m := testModule(t, "import-provider") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -488,11 +468,9 @@ func TestContextImport_refreshNil(t *testing.T) { m := testModule(t, "import-provider") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -534,11 +512,9 @@ func TestContextImport_module(t *testing.T) { m := testModule(t, "import-module") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -574,11 +550,9 @@ func TestContextImport_moduleDepth2(t *testing.T) { m := testModule(t, "import-module") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -614,11 +588,9 @@ func TestContextImport_moduleDiff(t *testing.T) { m := testModule(t, "import-module") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) p.ImportStateReturn = []*InstanceState{ @@ -686,11 +658,9 @@ func TestContextImport_multiState(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) state, diags := ctx.Import(&ImportOpts{ @@ -755,11 +725,9 @@ func TestContextImport_multiStateSame(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) state, diags := ctx.Import(&ImportOpts{ @@ -786,13 +754,13 @@ func TestContextImport_multiStateSame(t *testing.T) { const testImportStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testImportCountIndexStr = ` aws_instance.foo.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testImportModuleStr = ` @@ -800,7 +768,7 @@ const testImportModuleStr = ` module.child: aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testImportModuleDepth2Str = ` @@ -808,7 +776,7 @@ const testImportModuleDepth2Str = ` module.child.nested: aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testImportModuleExistingStr = ` @@ -816,36 +784,36 @@ const testImportModuleExistingStr = ` module.foo: aws_instance.bar: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testImportMultiStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance_thing.foo: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testImportMultiSameStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance_thing.foo: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance_thing.foo-1: ID = qux - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testImportRefreshStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar ` diff --git a/terraform/context_input_test.go b/terraform/context_input_test.go index d7e48f151c..8361305798 100644 --- a/terraform/context_input_test.go +++ b/terraform/context_input_test.go @@ -42,11 +42,9 @@ func TestContext2Input_provider(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, UIInput: inp, }) @@ -113,11 +111,9 @@ func TestContext2Input_providerMulti(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, UIInput: inp, }) @@ -158,11 +154,9 @@ func TestContext2Input_providerOnce(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) //count := 0 @@ -214,11 +208,9 @@ func TestContext2Input_providerId(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, UIInput: input, }) @@ -279,11 +271,9 @@ func TestContext2Input_providerOnly(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("us-west-2"), @@ -335,11 +325,9 @@ func TestContext2Input_providerVars(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("bar"), @@ -388,11 +376,9 @@ func TestContext2Input_providerVarsModuleInherit(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, UIInput: input, }) @@ -420,11 +406,9 @@ func TestContext2Input_submoduleTriggersInvalidCount(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, UIInput: input, }) @@ -479,7 +463,7 @@ func TestContext2Input_dataSourceRequiresRefresh(t *testing.T) { Status: states.ObjectReady, }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("null"), + Provider: addrs.NewDefaultProvider("null"), Module: addrs.RootModule, }, ) @@ -487,11 +471,9 @@ func TestContext2Input_dataSourceRequiresRefresh(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, State: state, UIInput: input, }) diff --git a/terraform/context_plan_test.go b/terraform/context_plan_test.go index 4b3e63e64d..323caa20cc 100644 --- a/terraform/context_plan_test.go +++ b/terraform/context_plan_test.go @@ -30,11 +30,9 @@ func TestContext2Plan_basic(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, ProviderSHA256s: map[string][]byte{ "aws": []byte("placeholder"), }, @@ -87,41 +85,32 @@ func TestContext2Plan_createBefore_deposed(t *testing.T) { p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root"}, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - Attributes: map[string]string{ - "id": "baz", - }, - }, - Deposed: []*InstanceState{ - &InstanceState{ - ID: "foo", - Attributes: map[string]string{ - "id": "foo", - }, - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"baz"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceDeposed( + mustResourceInstanceAddr("aws_instance.foo").Resource, + states.DeposedKey("00000001"), + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -133,7 +122,7 @@ func TestContext2Plan_createBefore_deposed(t *testing.T) { expectedState := strings.TrimSpace(` aws_instance.foo: (1 deposed) ID = baz - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] Deposed ID 1 = foo`) if ctx.State().String() != expectedState { @@ -208,11 +197,9 @@ func TestContext2Plan_createBefore_maintainRoot(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -248,11 +235,9 @@ func TestContext2Plan_emptyDiff(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -289,11 +274,9 @@ func TestContext2Plan_escapedVar(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -333,11 +316,9 @@ func TestContext2Plan_minimal(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -374,11 +355,9 @@ func TestContext2Plan_modules(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -436,11 +415,9 @@ func TestContext2Plan_moduleExpand(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -500,11 +477,9 @@ func TestContext2Plan_moduleCycle(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -556,11 +531,9 @@ func TestContext2Plan_moduleDeadlock(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, err := ctx.Plan() @@ -602,11 +575,9 @@ func TestContext2Plan_moduleInput(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -659,11 +630,9 @@ func TestContext2Plan_moduleInputComputed(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -713,11 +682,9 @@ func TestContext2Plan_moduleInputFromVar(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("52"), @@ -784,11 +751,9 @@ func TestContext2Plan_moduleMultiVar(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -847,30 +812,24 @@ func TestContext2Plan_moduleOrphans(t *testing.T) { m := testModule(t, "plan-modules-remove") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - }, - Provider: "provider.aws", - }, - }, - }, + + state := states.NewState() + child := state.EnsureModule(addrs.RootModuleInstance.Child("child", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"baz"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -914,7 +873,7 @@ func TestContext2Plan_moduleOrphans(t *testing.T) { module.child: aws_instance.foo: ID = baz - provider = provider["registry.terraform.io/-/aws"]` + provider = provider["registry.terraform.io/hashicorp/aws"]` if ctx.State().String() != expectedState { t.Fatalf("\nexpected state: %q\n\ngot: %q", expectedState, ctx.State().String()) @@ -927,56 +886,45 @@ func TestContext2Plan_moduleOrphansWithProvisioner(t *testing.T) { p := testProvider("aws") pr := testProvisioner() p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root"}, - Resources: map[string]*ResourceState{ - "aws_instance.top": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "top", - }, - }, - }, - }, - &ModuleState{ - Path: []string{"root", "parent", "childone"}, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - }, - Provider: "provider.aws", - }, - }, - }, - &ModuleState{ - Path: []string{"root", "parent", "childtwo"}, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - }, - Provider: "provider.aws", - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.top").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"top"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + child1 := state.EnsureModule(addrs.RootModuleInstance.Child("parent", addrs.NoKey).Child("child1", addrs.NoKey)) + child1.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"baz"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + child2 := state.EnsureModule(addrs.RootModuleInstance.Child("parent", addrs.NoKey).Child("child2", addrs.NoKey)) + child2.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"baz"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, - State: s, + State: state, }) plan, diags := ctx.Plan() @@ -999,17 +947,17 @@ func TestContext2Plan_moduleOrphansWithProvisioner(t *testing.T) { } switch i := ric.Addr.String(); i { - case "module.parent.module.childone.aws_instance.foo": + case "module.parent.module.child1.aws_instance.foo": if res.Action != plans.Delete { t.Fatalf("expected resource Delete, got %s", res.Action) } - case "module.parent.module.childtwo.aws_instance.foo": + case "module.parent.module.child2.aws_instance.foo": if res.Action != plans.Delete { t.Fatalf("expected resource Delete, got %s", res.Action) } case "aws_instance.top": if res.Action != plans.NoOp { - t.Fatal("expected no changes, got", res.Action) + t.Fatalf("expected no changes, got %s", res.Action) } default: t.Fatalf("unknown instance: %s\nafter: %#v", i, hcl2shim.ConfigValueFromHCL2(ric.After)) @@ -1018,19 +966,19 @@ func TestContext2Plan_moduleOrphansWithProvisioner(t *testing.T) { expectedState := `aws_instance.top: ID = top - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] -module.parent.childone: +module.parent.child1: aws_instance.foo: ID = baz - provider = provider["registry.terraform.io/-/aws"] -module.parent.childtwo: + provider = provider["registry.terraform.io/hashicorp/aws"] +module.parent.child2: aws_instance.foo: ID = baz - provider = provider["registry.terraform.io/-/aws"]` + provider = provider["registry.terraform.io/hashicorp/aws"]` if expectedState != ctx.State().String() { - t.Fatalf("\nexpect state: %q\ngot state: %q\n", expectedState, ctx.State().String()) + t.Fatalf("\nexpect state:\n%s\n\ngot state:\n%s\n", expectedState, ctx.State().String()) } } @@ -1041,49 +989,47 @@ func TestContext2Plan_moduleProviderInherit(t *testing.T) { m := testModule(t, "plan-module-provider-inherit") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): func() (providers.Interface, error) { - l.Lock() - defer l.Unlock() + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): func() (providers.Interface, error) { + l.Lock() + defer l.Unlock() - p := testProvider("aws") - p.GetSchemaReturn = &ProviderSchema{ - Provider: &configschema.Block{ + p := testProvider("aws") + p.GetSchemaReturn = &ProviderSchema{ + Provider: &configschema.Block{ + Attributes: map[string]*configschema.Attribute{ + "from": {Type: cty.String, Optional: true}, + }, + }, + ResourceTypes: map[string]*configschema.Block{ + "aws_instance": { Attributes: map[string]*configschema.Attribute{ "from": {Type: cty.String, Optional: true}, }, }, - ResourceTypes: map[string]*configschema.Block{ - "aws_instance": { - Attributes: map[string]*configschema.Attribute{ - "from": {Type: cty.String, Optional: true}, - }, - }, - }, + }, + } + p.ConfigureFn = func(c *ResourceConfig) error { + if v, ok := c.Get("from"); !ok || v.(string) != "root" { + return fmt.Errorf("bad") } - p.ConfigureFn = func(c *ResourceConfig) error { - if v, ok := c.Get("from"); !ok || v.(string) != "root" { - return fmt.Errorf("bad") - } - return nil - } - p.DiffFn = func( - info *InstanceInfo, - state *InstanceState, - c *ResourceConfig) (*InstanceDiff, error) { - v, _ := c.Get("from") + return nil + } + p.DiffFn = func( + info *InstanceInfo, + state *InstanceState, + c *ResourceConfig) (*InstanceDiff, error) { + v, _ := c.Get("from") - l.Lock() - defer l.Unlock() - calls = append(calls, v.(string)) - return testDiffFn(info, state, c) - } - return p, nil - }, + l.Lock() + defer l.Unlock() + calls = append(calls, v.(string)) + return testDiffFn(info, state, c) + } + return p, nil }, - ), + }, }) _, err := ctx.Plan() @@ -1107,52 +1053,50 @@ func TestContext2Plan_moduleProviderInheritDeep(t *testing.T) { m := testModule(t, "plan-module-provider-inherit-deep") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): func() (providers.Interface, error) { - l.Lock() - defer l.Unlock() + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): func() (providers.Interface, error) { + l.Lock() + defer l.Unlock() - var from string - p := testProvider("aws") + var from string + p := testProvider("aws") - p.GetSchemaReturn = &ProviderSchema{ - Provider: &configschema.Block{ - Attributes: map[string]*configschema.Attribute{ - "from": {Type: cty.String, Optional: true}, - }, + p.GetSchemaReturn = &ProviderSchema{ + Provider: &configschema.Block{ + Attributes: map[string]*configschema.Attribute{ + "from": {Type: cty.String, Optional: true}, }, - ResourceTypes: map[string]*configschema.Block{ - "aws_instance": { - Attributes: map[string]*configschema.Attribute{}, - }, + }, + ResourceTypes: map[string]*configschema.Block{ + "aws_instance": { + Attributes: map[string]*configschema.Attribute{}, }, + }, + } + + p.ConfigureFn = func(c *ResourceConfig) error { + v, ok := c.Get("from") + if !ok || v.(string) != "root" { + return fmt.Errorf("bad") } - p.ConfigureFn = func(c *ResourceConfig) error { - v, ok := c.Get("from") - if !ok || v.(string) != "root" { - return fmt.Errorf("bad") - } + from = v.(string) + return nil + } - from = v.(string) - return nil + p.DiffFn = func( + info *InstanceInfo, + state *InstanceState, + c *ResourceConfig) (*InstanceDiff, error) { + if from != "root" { + return nil, fmt.Errorf("bad resource") } - p.DiffFn = func( - info *InstanceInfo, - state *InstanceState, - c *ResourceConfig) (*InstanceDiff, error) { - if from != "root" { - return nil, fmt.Errorf("bad resource") - } - - return testDiffFn(info, state, c) - } - return p, nil - }, + return testDiffFn(info, state, c) + } + return p, nil }, - ), + }, }) _, err := ctx.Plan() @@ -1168,47 +1112,45 @@ func TestContext2Plan_moduleProviderDefaultsVar(t *testing.T) { m := testModule(t, "plan-module-provider-defaults-var") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): func() (providers.Interface, error) { - l.Lock() - defer l.Unlock() + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): func() (providers.Interface, error) { + l.Lock() + defer l.Unlock() - p := testProvider("aws") - p.GetSchemaReturn = &ProviderSchema{ - Provider: &configschema.Block{ + p := testProvider("aws") + p.GetSchemaReturn = &ProviderSchema{ + Provider: &configschema.Block{ + Attributes: map[string]*configschema.Attribute{ + "to": {Type: cty.String, Optional: true}, + "from": {Type: cty.String, Optional: true}, + }, + }, + ResourceTypes: map[string]*configschema.Block{ + "aws_instance": { Attributes: map[string]*configschema.Attribute{ - "to": {Type: cty.String, Optional: true}, "from": {Type: cty.String, Optional: true}, }, }, - ResourceTypes: map[string]*configschema.Block{ - "aws_instance": { - Attributes: map[string]*configschema.Attribute{ - "from": {Type: cty.String, Optional: true}, - }, - }, - }, + }, + } + p.ConfigureFn = func(c *ResourceConfig) error { + var buf bytes.Buffer + if v, ok := c.Get("from"); ok { + buf.WriteString(v.(string) + "\n") + } + if v, ok := c.Get("to"); ok { + buf.WriteString(v.(string) + "\n") } - p.ConfigureFn = func(c *ResourceConfig) error { - var buf bytes.Buffer - if v, ok := c.Get("from"); ok { - buf.WriteString(v.(string) + "\n") - } - if v, ok := c.Get("to"); ok { - buf.WriteString(v.(string) + "\n") - } - l.Lock() - defer l.Unlock() - calls = append(calls, buf.String()) - return nil - } - p.DiffFn = testDiffFn - return p, nil - }, + l.Lock() + defer l.Unlock() + calls = append(calls, buf.String()) + return nil + } + p.DiffFn = testDiffFn + return p, nil }, - ), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("root"), @@ -1253,11 +1195,9 @@ func TestContext2Plan_moduleProviderVar(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -1298,11 +1238,9 @@ func TestContext2Plan_moduleVar(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -1355,11 +1293,9 @@ func TestContext2Plan_moduleVarWrongTypeBasic(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -1374,11 +1310,9 @@ func TestContext2Plan_moduleVarWrongTypeNested(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -1393,11 +1327,9 @@ func TestContext2Plan_moduleVarWithDefaultValue(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -1412,11 +1344,9 @@ func TestContext2Plan_moduleVarComputed(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -1463,28 +1393,23 @@ func TestContext2Plan_preventDestroy_bad(t *testing.T) { m := testModule(t, "plan-prevent-destroy-bad") p := testProvider("aws") p.DiffFn = testDiffFn + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc123", - }, - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, err := ctx.Plan() @@ -1502,28 +1427,24 @@ func TestContext2Plan_preventDestroy_good(t *testing.T) { m := testModule(t, "plan-prevent-destroy-good") p := testProvider("aws") p.DiffFn = testDiffFn + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc123", - }, - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -1540,34 +1461,32 @@ func TestContext2Plan_preventDestroy_countBad(t *testing.T) { m := testModule(t, "plan-prevent-destroy-count-bad") p := testProvider("aws") p.DiffFn = testDiffFn + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc345"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc123", - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc345", - }, - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, err := ctx.Plan() @@ -1589,40 +1508,38 @@ func TestContext2Plan_preventDestroy_countGood(t *testing.T) { "aws_instance": { Attributes: map[string]*configschema.Attribute{ "current": {Type: cty.String, Optional: true}, + "id": {Type: cty.String, Computed: true}, }, }, }, } p.DiffFn = testDiffFn + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc345"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc123", - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc345", - }, - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -1643,38 +1560,31 @@ func TestContext2Plan_preventDestroy_countGoodNoChange(t *testing.T) { "aws_instance": { Attributes: map[string]*configschema.Attribute{ "current": {Type: cty.String, Optional: true}, + "type": {Type: cty.String, Optional: true}, + "id": {Type: cty.String, Computed: true}, }, }, }, } p.DiffFn = testDiffFn + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123","current":"0","type":"aws_instance"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc123", - Attributes: map[string]string{ - "current": "0", - "type": "aws_instance", - }, - }, - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -1691,28 +1601,24 @@ func TestContext2Plan_preventDestroy_destroyPlan(t *testing.T) { m := testModule(t, "plan-prevent-destroy-good") p := testProvider("aws") p.DiffFn = testDiffFn + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc123", - }, - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Destroy: true, }) @@ -1734,11 +1640,9 @@ func TestContext2Plan_provisionerCycle(t *testing.T) { pr := testProvisioner() ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "local-exec": testProvisionerFuncFixed(pr), }, @@ -1756,11 +1660,9 @@ func TestContext2Plan_computed(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -1831,11 +1733,9 @@ func TestContext2Plan_blockNestingGroup(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -1904,11 +1804,9 @@ func TestContext2Plan_computedDataResource(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -1973,11 +1871,9 @@ func TestContext2Plan_computedInFunction(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -2027,11 +1923,9 @@ func TestContext2Plan_computedDataCountResource(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2059,11 +1953,9 @@ func TestContext2Plan_localValueCount(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2127,32 +2019,23 @@ func TestContext2Plan_dataResourceBecomesComputed(t *testing.T) { Diagnostics: tfdiags.Diagnostics(nil).Append(fmt.Errorf("ReadDataSource called, but should not have been")), } + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("data.aws_data_source.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123","foo":"baz"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "data.aws_data_source.foo": &ResourceState{ - Type: "aws_data_source", - Primary: &InstanceState{ - ID: "i-abc123", - Attributes: map[string]string{ - "id": "i-abc123", - "foo": "baz", - }, - }, - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) _, diags := ctx.Refresh() @@ -2259,11 +2142,9 @@ func TestContext2Plan_computedList(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2371,11 +2252,9 @@ func TestContext2Plan_computedMultiIndex(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2429,11 +2308,9 @@ func TestContext2Plan_count(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2506,11 +2383,9 @@ func TestContext2Plan_countComputed(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, err := ctx.Plan() @@ -2525,11 +2400,9 @@ func TestContext2Plan_countComputedModule(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, err := ctx.Plan() @@ -2547,11 +2420,9 @@ func TestContext2Plan_countModuleStatic(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2600,11 +2471,9 @@ func TestContext2Plan_countModuleStaticGrandchild(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2653,11 +2522,9 @@ func TestContext2Plan_countIndex(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2706,11 +2573,9 @@ func TestContext2Plan_countVar(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "instance_count": &InputValue{ Value: cty.StringVal("3"), @@ -2792,11 +2657,9 @@ func TestContext2Plan_countZero(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2835,11 +2698,9 @@ func TestContext2Plan_countOneIndex(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -2886,45 +2747,40 @@ func TestContext2Plan_countDecreaseToOne(t *testing.T) { m := testModule(t, "plan-count-dec") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - "aws_instance.foo.2": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","foo":"foo","type":"aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[2]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -2974,15 +2830,15 @@ func TestContext2Plan_countDecreaseToOne(t *testing.T) { expectedState := `aws_instance.foo.0: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance aws_instance.foo.1: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo.2: ID = bar - provider = provider["registry.terraform.io/-/aws"]` + provider = provider["registry.terraform.io/hashicorp/aws"]` if ctx.State().String() != expectedState { t.Fatalf("epected state:\n%q\n\ngot state:\n%q\n", expectedState, ctx.State().String()) @@ -2993,33 +2849,24 @@ func TestContext2Plan_countIncreaseFromNotSet(t *testing.T) { m := testModule(t, "plan-count-inc") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","type":"aws_instance","foo":"foo"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -3082,33 +2929,23 @@ func TestContext2Plan_countIncreaseFromOne(t *testing.T) { m := testModule(t, "plan-count-inc") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","foo":"foo","type":"aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -3176,43 +3013,32 @@ func TestContext2Plan_countIncreaseFromOneCorrupted(t *testing.T) { m := testModule(t, "plan-count-inc") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo": "foo", - "type": "aws_instance", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","foo":"foo","type":"aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","foo":"foo","type":"aws_instance"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -3292,65 +3118,54 @@ func TestContext2Plan_countIncreaseWithSplatReference(t *testing.T) { Attributes: map[string]*configschema.Attribute{ "name": {Type: cty.String, Optional: true}, "foo_name": {Type: cty.String, Optional: true}, + "id": {Type: cty.String, Computed: true}, }, }, }, } p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "name": "foo 0", - }, - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "name": "foo 1", - }, - }, - }, - "aws_instance.bar.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo_name": "foo 0", - }, - }, - }, - "aws_instance.bar.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "foo_name": "foo 1", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","name":"foo 0"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","name":"foo 1"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","foo_name":"foo 0"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","foo_name":"foo 1"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -3380,16 +3195,18 @@ func TestContext2Plan_countIncreaseWithSplatReference(t *testing.T) { if res.Action != plans.Create { t.Fatalf("expected resource create, got %s", res.Action) } - checkVals(t, objectVal(t, schema, map[string]cty.Value{ - "foo_name": cty.StringVal("foo 2"), - }), ric.After) + // The instance ID changed, so just check that the name updated + if ric.After.GetAttr("foo_name") != cty.StringVal("foo 2") { + t.Fatalf("resource %s attr \"foo_name\" should be changed", i) + } case "aws_instance.foo[2]": if res.Action != plans.Create { t.Fatalf("expected resource create, got %s", res.Action) } - checkVals(t, objectVal(t, schema, map[string]cty.Value{ - "name": cty.StringVal("foo 2"), - }), ric.After) + // The instance ID changed, so just check that the name updated + if ric.After.GetAttr("name") != cty.StringVal("foo 2") { + t.Fatalf("resource %s attr \"name\" should be changed", i) + } default: t.Fatal("unknown instance:", i) } @@ -3402,11 +3219,9 @@ func TestContext2Plan_forEach(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -3440,11 +3255,9 @@ func TestContext2Plan_forEachUnknownValue(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": { Value: cty.UnknownVal(cty.String), @@ -3471,35 +3284,32 @@ func TestContext2Plan_destroy(t *testing.T) { m := testModule(t, "plan-destroy") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.one": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - "aws_instance.two": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.one").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.two").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"baz"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Destroy: true, }) @@ -3537,40 +3347,33 @@ func TestContext2Plan_moduleDestroy(t *testing.T) { m := testModule(t, "plan-module-destroy") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + child := state.EnsureModule(addrs.RootModuleInstance.Child("child", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Destroy: true, }) @@ -3608,40 +3411,33 @@ func TestContext2Plan_moduleDestroyCycle(t *testing.T) { m := testModule(t, "plan-module-destroy-gh-1835") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "a_module"}, - Resources: map[string]*ResourceState{ - "aws_instance.a": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "a", - }, - }, - }, - }, - &ModuleState{ - Path: []string{"root", "b_module"}, - Resources: map[string]*ResourceState{ - "aws_instance.b": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "b", - }, - }, - }, - }, + + state := states.NewState() + aModule := state.EnsureModule(addrs.RootModuleInstance.Child("a_module", addrs.NoKey)) + aModule.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.a").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"a"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + bModule := state.EnsureModule(addrs.RootModuleInstance.Child("b_module", addrs.NoKey)) + bModule.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.b").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"b"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Destroy: true, }) @@ -3679,39 +3475,32 @@ func TestContext2Plan_moduleDestroyMultivar(t *testing.T) { m := testModule(t, "plan-module-destroy-multivar") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{}, - }, - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar0", - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar1", - }, - }, - }, - }, + + state := states.NewState() + child := state.EnsureModule(addrs.RootModuleInstance.Child("child", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar0"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar1"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Destroy: true, }) @@ -3768,11 +3557,9 @@ func TestContext2Plan_pathVar(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -3812,32 +3599,23 @@ func TestContext2Plan_pathVar(t *testing.T) { func TestContext2Plan_diffVar(t *testing.T) { m := testModule(t, "plan-diffvar") p := testProvider("aws") - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "num": "2", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","num":"2"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) p.DiffFn = func( @@ -3912,11 +3690,9 @@ func TestContext2Plan_hook(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -3941,11 +3717,9 @@ func TestContext2Plan_closeProvider(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -3962,29 +3736,23 @@ func TestContext2Plan_orphan(t *testing.T) { m := testModule(t, "plan-orphan") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.baz": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.baz").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -4033,11 +3801,9 @@ func TestContext2Plan_shadowUuid(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -4050,29 +3816,22 @@ func TestContext2Plan_state(t *testing.T) { m := testModule(t, "plan-good") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -4130,37 +3889,31 @@ func TestContext2Plan_taint(t *testing.T) { m := testModule(t, "plan-taint") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{"num": "2"}, - }, - }, - "aws_instance.bar": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "baz", - Tainted: true, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","num":"2"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"baz"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -4218,34 +3971,23 @@ func TestContext2Plan_taintIgnoreChanges(t *testing.T) { p.ApplyFn = testApplyFn p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "foo", - Attributes: map[string]string{ - "vars": "foo", - "type": "aws_instance", - }, - Tainted: true, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"foo","vars":"foo","type":"aws_instance"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -4292,40 +4034,40 @@ func TestContext2Plan_taintDestroyInterpolatedCountRace(t *testing.T) { m := testModule(t, "plan-taint-interpolated-count") p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Tainted: true, - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ID: "bar"}, - }, - "aws_instance.foo.2": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ID: "bar"}, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectTainted, + AttrsJSON: []byte(`{"id":"bar"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[2]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) for i := 0; i < 100; i++ { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -4374,11 +4116,9 @@ func TestContext2Plan_targeted(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( addrs.ManagedResourceMode, "aws_instance", "foo", @@ -4427,11 +4167,9 @@ func TestContext2Plan_targetedCrossModule(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("B", addrs.NoKey), }, @@ -4494,11 +4232,9 @@ func TestContext2Plan_targetedModuleWithProvider(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("null"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("child2", addrs.NoKey), }, @@ -4531,34 +4267,32 @@ func TestContext2Plan_targetedOrphan(t *testing.T) { m := testModule(t, "plan-targeted-orphan") p := testProvider("aws") p.DiffFn = testDiffFn + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.orphan").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-789xyz"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.nottargeted").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.orphan": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-789xyz", - }, - }, - "aws_instance.nottargeted": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc123", - }, - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Destroy: true, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( @@ -4601,36 +4335,32 @@ func TestContext2Plan_targetedModuleOrphan(t *testing.T) { m := testModule(t, "plan-targeted-module-orphan") p := testProvider("aws") p.DiffFn = testDiffFn + + state := states.NewState() + child := state.EnsureModule(addrs.RootModuleInstance.Child("child", addrs.NoKey)) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.orphan").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-789xyz"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + child.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.nottargeted").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"i-abc123"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: []string{"root", "child"}, - Resources: map[string]*ResourceState{ - "aws_instance.orphan": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-789xyz", - }, - Provider: "provider.aws", - }, - "aws_instance.nottargeted": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "i-abc123", - }, - Provider: "provider.aws", - }, - }, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Destroy: true, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("child", addrs.NoKey).Resource( @@ -4671,11 +4401,9 @@ func TestContext2Plan_targetedModuleUntargetedVariable(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Resource( addrs.ManagedResourceMode, "aws_instance", "blue", @@ -4729,11 +4457,9 @@ func TestContext2Plan_outputContainsTargetedResource(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Targets: []addrs.Targetable{ addrs.RootModuleInstance.Child("mod", addrs.NoKey).Resource( addrs.ManagedResourceMode, "aws_instance", "a", @@ -4762,33 +4488,31 @@ func TestContext2Plan_targetedOverTen(t *testing.T) { p := testProvider("aws") p.DiffFn = testDiffFn - resources := make(map[string]*ResourceState) + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) var expectedState []string for i := 0; i < 13; i++ { - key := fmt.Sprintf("aws_instance.foo.%d", i) + key := fmt.Sprintf("aws_instance.foo[%d]", i) id := fmt.Sprintf("i-abc%d", i) - resources[key] = &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ID: id}, - } - expectedState = append(expectedState, - fmt.Sprintf("%s:\n ID = %s\n", key, id)) + attrs := fmt.Sprintf("{\"id\":\"%s\"}", id) + + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr(key).Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(attrs), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + expectedState = append(expectedState, fmt.Sprintf("%s:\n ID = %s\n", key, id)) } + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: resources, - }, - }, - }), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, Targets: []addrs.Targetable{ addrs.RootModuleInstance.ResourceInstance( addrs.ManagedResourceMode, "aws_instance", "foo", addrs.IntKey(1), @@ -4828,11 +4552,9 @@ func TestContext2Plan_provider(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("bar"), @@ -4855,11 +4577,9 @@ func TestContext2Plan_varListErr(t *testing.T) { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, err := ctx.Plan() @@ -4872,39 +4592,31 @@ func TestContext2Plan_varListErr(t *testing.T) { func TestContext2Plan_ignoreChanges(t *testing.T) { m := testModule(t, "plan-ignore-changes") p := testProvider("aws") - p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{"ami": "ami-abcd1234"}, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","ami":"ami-abcd1234"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("ami-1234abcd"), SourceType: ValueFromCaller, }, }, - State: s, + State: state, }) plan, diags := ctx.Plan() @@ -4944,32 +4656,22 @@ func TestContext2Plan_ignoreChangesWildcard(t *testing.T) { p := testProvider("aws") p.DiffFn = testDiffFn - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "ami": "ami-abcd1234", - "instance": "t2.micro", - }, - }, - }, - }, - }, + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar","ami":"ami-abcd1234","instance":"t2.micro"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("ami-1234abcd"), @@ -4980,7 +4682,7 @@ func TestContext2Plan_ignoreChangesWildcard(t *testing.T) { SourceType: ValueFromCaller, }, }, - State: s, + State: state, }) plan, diags := ctx.Plan() @@ -5027,7 +4729,7 @@ func TestContext2Plan_ignoreChangesInMap(t *testing.T) { AttrsJSON: []byte(`{"tags":{"ignored":"from state","other":"from state"}}`), }, addrs.AbsProviderConfig{ - Provider: addrs.NewLegacyProvider("test"), + Provider: addrs.NewDefaultProvider("test"), Module: addrs.RootModule, }, ) @@ -5036,11 +4738,9 @@ func TestContext2Plan_ignoreChangesInMap(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, State: s, }) @@ -5116,11 +4816,9 @@ func TestContext2Plan_moduleMapLiteral(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -5163,11 +4861,9 @@ func TestContext2Plan_computedValueInMap(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -5222,11 +4918,9 @@ func TestContext2Plan_moduleVariableFromSplat(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -5305,11 +4999,9 @@ func TestContext2Plan_createBeforeDestroy_depends_datasource(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) // We're skipping ctx.Refresh here, which simulates what happens when @@ -5418,11 +5110,9 @@ func TestContext2Plan_listOrder(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -5472,39 +5162,28 @@ func TestContext2Plan_ignoreChangesWithFlatmaps(t *testing.T) { }, }, } - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo": &ResourceState{ - Type: "aws_instance", - Primary: &InstanceState{ - ID: "bar", - Attributes: map[string]string{ - "user_data": "x", - "require_new": "", - "set.#": "1", - "set.0.%": "1", - "set.0.a": "1", - "lst.#": "1", - "lst.0": "j", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{ + "user_data":"x","require_new":"", + "set":[{"a":"1"}], + "lst":["j"] + }`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) plan, diags := ctx.Plan() @@ -5560,87 +5239,67 @@ func TestContext2Plan_resourceNestedCount(t *testing.T) { NewState: req.PriorState, } } - s := MustShimLegacyState(&State{ - Modules: []*ModuleState{ - &ModuleState{ - Path: rootModulePath, - Resources: map[string]*ResourceState{ - "aws_instance.foo.0": &ResourceState{ - Type: "aws_instance", - Provider: "provider.aws", - Primary: &InstanceState{ - ID: "foo0", - Attributes: map[string]string{ - "id": "foo0", - }, - }, - }, - "aws_instance.foo.1": &ResourceState{ - Type: "aws_instance", - Provider: "provider.aws", - Primary: &InstanceState{ - ID: "foo1", - Attributes: map[string]string{ - "id": "foo1", - }, - }, - }, - "aws_instance.bar.0": &ResourceState{ - Type: "aws_instance", - Provider: "provider.aws", - Dependencies: []string{"aws_instance.foo"}, - Primary: &InstanceState{ - ID: "bar0", - Attributes: map[string]string{ - "id": "bar0", - }, - }, - }, - "aws_instance.bar.1": &ResourceState{ - Type: "aws_instance", - Provider: "provider.aws", - Dependencies: []string{"aws_instance.foo"}, - Primary: &InstanceState{ - ID: "bar1", - Attributes: map[string]string{ - "id": "bar1", - }, - }, - }, - "aws_instance.baz.0": &ResourceState{ - Type: "aws_instance", - Provider: "provider.aws", - Dependencies: []string{"aws_instance.bar"}, - Primary: &InstanceState{ - ID: "baz0", - Attributes: map[string]string{ - "id": "baz0", - }, - }, - }, - "aws_instance.baz.1": &ResourceState{ - Type: "aws_instance", - Provider: "provider.aws", - Dependencies: []string{"aws_instance.bar"}, - Primary: &InstanceState{ - ID: "baz1", - Attributes: map[string]string{ - "id": "baz1", - }, - }, - }, - }, - }, + + state := states.NewState() + root := state.EnsureModule(addrs.RootModuleInstance) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo0"}`), }, - }) + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.foo[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"foo1"}`), + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar0"}`), + Dependencies: []addrs.ConfigResource{mustResourceAddr("aws_instance.foo")}, + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.bar[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"bar1"}`), + Dependencies: []addrs.ConfigResource{mustResourceAddr("aws_instance.foo")}, + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.baz[0]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"baz0"}`), + Dependencies: []addrs.ConfigResource{mustResourceAddr("aws_instance.bar")}, + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) + root.SetResourceInstanceCurrent( + mustResourceInstanceAddr("aws_instance.baz[1]").Resource, + &states.ResourceInstanceObjectSrc{ + Status: states.ObjectReady, + AttrsJSON: []byte(`{"id":"baz1"}`), + Dependencies: []addrs.ConfigResource{mustResourceAddr("aws_instance.bar")}, + }, + mustProviderConfig(`provider["registry.terraform.io/hashicorp/aws"]`), + ) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), - State: s, + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, + State: state, }) diags := ctx.Validate() @@ -5717,11 +5376,9 @@ func TestContext2Plan_computedAttrRefTypeMismatch(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -5750,11 +5407,9 @@ func TestContext2Plan_selfRef(t *testing.T) { m := testModule(t, "plan-self-ref") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -5789,11 +5444,9 @@ func TestContext2Plan_selfRefMulti(t *testing.T) { m := testModule(t, "plan-self-ref-multi") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -5828,11 +5481,9 @@ func TestContext2Plan_selfRefMultiAll(t *testing.T) { m := testModule(t, "plan-self-ref-multi-all") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -5869,11 +5520,9 @@ output "out" { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -5911,11 +5560,9 @@ resource "aws_instance" "foo" { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -5960,11 +5607,9 @@ resource "aws_instance" "foo" { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Plan() @@ -6010,11 +5655,9 @@ func TestContext2Plan_requiredModuleOutput(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() @@ -6077,11 +5720,9 @@ func TestContext2Plan_requiredModuleObject(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, }) plan, diags := ctx.Plan() diff --git a/terraform/context_refresh_test.go b/terraform/context_refresh_test.go index ad87877e0a..4d158eaaf4 100644 --- a/terraform/context_refresh_test.go +++ b/terraform/context_refresh_test.go @@ -44,11 +44,9 @@ func TestContext2Refresh(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: startingState, }) @@ -132,11 +130,9 @@ func TestContext2Refresh_dynamicAttr(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), + }, State: startingState, }) @@ -168,11 +164,9 @@ func TestContext2Refresh_dataComputedModuleVar(t *testing.T) { m := testModule(t, "refresh-data-module-var") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) p.ReadResourceFn = nil @@ -259,11 +253,9 @@ func TestContext2Refresh_targeted(t *testing.T) { m := testModule(t, "refresh-targeted") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: MustShimLegacyState(&State{ Modules: []*ModuleState{ &ModuleState{ @@ -342,11 +334,9 @@ func TestContext2Refresh_targetedCount(t *testing.T) { m := testModule(t, "refresh-targeted-count") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: MustShimLegacyState(&State{ Modules: []*ModuleState{ &ModuleState{ @@ -435,11 +425,9 @@ func TestContext2Refresh_targetedCountIndex(t *testing.T) { m := testModule(t, "refresh-targeted-count") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: MustShimLegacyState(&State{ Modules: []*ModuleState{ &ModuleState{ @@ -504,11 +492,9 @@ func TestContext2Refresh_moduleComputedVar(t *testing.T) { m := testModule(t, "refresh-module-computed-var") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) // This was failing (see GH-2188) at some point, so this test just @@ -523,11 +509,9 @@ func TestContext2Refresh_delete(t *testing.T) { m := testModule(t, "refresh-basic") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: MustShimLegacyState(&State{ Modules: []*ModuleState{ &ModuleState{ @@ -566,11 +550,9 @@ func TestContext2Refresh_ignoreUncreated(t *testing.T) { m := testModule(t, "refresh-basic") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: nil, }) @@ -597,11 +579,9 @@ func TestContext2Refresh_hook(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: MustShimLegacyState(&State{ Modules: []*ModuleState{ &ModuleState{ @@ -663,11 +643,9 @@ func TestContext2Refresh_modules(t *testing.T) { }) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -725,11 +703,9 @@ func TestContext2Refresh_moduleInputComputedOutput(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Refresh(); diags.HasErrors() { @@ -743,11 +719,9 @@ func TestContext2Refresh_moduleVarModule(t *testing.T) { p.DiffFn = testDiffFn ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) if _, diags := ctx.Refresh(); diags.HasErrors() { @@ -761,11 +735,9 @@ func TestContext2Refresh_noState(t *testing.T) { m := testModule(t, "refresh-no-state") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) p.ReadResourceFn = nil @@ -803,11 +775,9 @@ func TestContext2Refresh_output(t *testing.T) { m := testModule(t, "refresh-output") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: MustShimLegacyState(&State{ Modules: []*ModuleState{ &ModuleState{ @@ -879,11 +849,9 @@ func TestContext2Refresh_outputPartial(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: MustShimLegacyState(&State{ Modules: []*ModuleState{ &ModuleState{ @@ -934,11 +902,9 @@ func TestContext2Refresh_stateBasic(t *testing.T) { }) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -1009,11 +975,9 @@ func TestContext2Refresh_dataCount(t *testing.T) { } ctx := testContext2(t, &ContextOpts{ - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), + }, Config: m, }) @@ -1055,11 +1019,9 @@ func TestContext2Refresh_dataOrphan(t *testing.T) { }, }) ctx := testContext2(t, &ContextOpts{ - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), + }, State: state, }) @@ -1105,11 +1067,9 @@ func TestContext2Refresh_dataState(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), + }, State: state, }) @@ -1212,11 +1172,9 @@ func TestContext2Refresh_dataStateRefData(t *testing.T) { }) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("null"): testProviderFuncFixed(p), + }, State: state, }) @@ -1263,11 +1221,9 @@ func TestContext2Refresh_tainted(t *testing.T) { }) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) p.ReadResourceFn = func(req providers.ReadResourceRequest) providers.ReadResourceResponse { @@ -1306,10 +1262,8 @@ func TestContext2Refresh_unknownProvider(t *testing.T) { p.DiffFn = testDiffFn _, diags := NewContext(&ContextOpts{ - Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{}, - ), + Config: m, + Providers: map[addrs.Provider]providers.Factory{}, State: MustShimLegacyState(&State{ Modules: []*ModuleState{ &ModuleState{ @@ -1360,11 +1314,9 @@ func TestContext2Refresh_vars(t *testing.T) { m := testModule(t, "refresh-vars") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: MustShimLegacyState(&State{ Modules: []*ModuleState{ @@ -1522,11 +1474,9 @@ func TestContext2Refresh_orphanModule(t *testing.T) { }) ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -1567,11 +1517,9 @@ func TestContext2Validate(t *testing.T) { m := testModule(t, "validate-good") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -1630,11 +1578,9 @@ func TestContext2Refresh_noDiffHookOnScaleOut(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, Hooks: []Hook{h}, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -1678,11 +1624,9 @@ func TestContext2Refresh_updateProviderInState(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: s, }) @@ -1749,11 +1693,9 @@ func TestContext2Refresh_schemaUpgradeFlatmap(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), + }, State: s, }) @@ -1835,11 +1777,9 @@ func TestContext2Refresh_schemaUpgradeJSON(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), + }, State: s, }) @@ -1895,11 +1835,9 @@ data "aws_data_source" "foo" { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) _, diags := ctx.Refresh() @@ -1958,11 +1896,9 @@ func TestContext2Refresh_dataResourceDependsOn(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), + }, State: s, }) @@ -2034,11 +1970,9 @@ resource "aws_instance" "foo" { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) diff --git a/terraform/context_validate_test.go b/terraform/context_validate_test.go index a528145162..5ac1e2959c 100644 --- a/terraform/context_validate_test.go +++ b/terraform/context_validate_test.go @@ -29,11 +29,9 @@ func TestContext2Validate_badCount(t *testing.T) { m := testModule(t, "validate-bad-count") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -58,11 +56,9 @@ func TestContext2Validate_badVar(t *testing.T) { m := testModule(t, "validate-bad-var") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -89,11 +85,9 @@ func TestContext2Validate_varMapOverrideOld(t *testing.T) { _, diags := NewContext(&ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{}, }) if !diags.HasErrors() { @@ -141,12 +135,10 @@ func TestContext2Validate_computedVar(t *testing.T) { m := testModule(t, "validate-computed-var") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - addrs.NewLegacyProvider("test"): testProviderFuncFixed(pt), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + addrs.NewLegacyProvider("test"): testProviderFuncFixed(pt), + }, }) p.ValidateFn = func(c *ResourceConfig) ([]string, []error) { @@ -190,11 +182,9 @@ func TestContext2Validate_computedInFunction(t *testing.T) { m := testModule(t, "validate-computed-in-function") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -227,11 +217,9 @@ func TestContext2Validate_countComputed(t *testing.T) { m := testModule(t, "validate-count-computed") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -253,11 +241,9 @@ func TestContext2Validate_countNegative(t *testing.T) { m := testModule(t, "validate-count-negative") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -281,11 +267,9 @@ func TestContext2Validate_countVariable(t *testing.T) { m := testModule(t, "apply-count-variable") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -309,11 +293,9 @@ func TestContext2Validate_countVariableNoDefault(t *testing.T) { _, diags := NewContext(&ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) if !diags.HasErrors() { // Error should be: The input variable "foo" has not been assigned a value. @@ -336,11 +318,9 @@ func TestContext2Validate_moduleBadOutput(t *testing.T) { m := testModule(t, "validate-bad-module-output") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -364,11 +344,9 @@ func TestContext2Validate_moduleGood(t *testing.T) { m := testModule(t, "validate-good-module") c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -390,11 +368,9 @@ func TestContext2Validate_moduleBadResource(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) p.ValidateResourceTypeConfigResponse = providers.ValidateResourceTypeConfigResponse{ @@ -422,11 +398,9 @@ func TestContext2Validate_moduleDepsShouldNotCycle(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -455,11 +429,9 @@ func TestContext2Validate_moduleProviderVar(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "provider_var": &InputValue{ Value: cty.StringVal("bar"), @@ -498,11 +470,9 @@ func TestContext2Validate_moduleProviderInheritUnused(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) p.ValidateFn = func(c *ResourceConfig) ([]string, []error) { @@ -546,11 +516,9 @@ func TestContext2Validate_orphans(t *testing.T) { }) c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -588,11 +556,9 @@ func TestContext2Validate_providerConfig_bad(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) p.PrepareProviderConfigResponse = providers.PrepareProviderConfigResponse{ @@ -626,11 +592,9 @@ func TestContext2Validate_providerConfig_badEmpty(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) p.PrepareProviderConfigResponse = providers.PrepareProviderConfigResponse{ @@ -661,11 +625,9 @@ func TestContext2Validate_providerConfig_good(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -691,11 +653,9 @@ func TestContext2Validate_provisionerConfig_bad(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -728,11 +688,9 @@ func TestContext2Validate_badResourceConnection(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -762,11 +720,9 @@ func TestContext2Validate_badProvisionerConnection(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -810,11 +766,9 @@ func TestContext2Validate_provisionerConfig_good(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -841,11 +795,9 @@ func TestContext2Validate_requiredVar(t *testing.T) { _, diags := NewContext(&ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) if !diags.HasErrors() { // Error should be: The input variable "foo" has not been assigned a value. @@ -868,11 +820,9 @@ func TestContext2Validate_resourceConfig_bad(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) p.ValidateResourceTypeConfigResponse = providers.ValidateResourceTypeConfigResponse{ @@ -900,11 +850,9 @@ func TestContext2Validate_resourceConfig_good(t *testing.T) { c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := c.Validate() @@ -945,11 +893,9 @@ func TestContext2Validate_tainted(t *testing.T) { }) c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, State: state, }) @@ -988,11 +934,9 @@ func TestContext2Validate_targetedDestroy(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, Provisioners: map[string]ProvisionerFactory{ "shell": testProvisionerFuncFixed(pr), }, @@ -1035,11 +979,9 @@ func TestContext2Validate_varRefUnknown(t *testing.T) { } c := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, Variables: InputValues{ "foo": &InputValue{ Value: cty.StringVal("bar"), @@ -1085,11 +1027,9 @@ func TestContext2Validate_interpolateVar(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("template"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("template"): testProviderFuncFixed(p), + }, UIInput: input, }) @@ -1120,11 +1060,9 @@ func TestContext2Validate_interpolateComputedModuleVarDef(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, UIInput: input, }) @@ -1145,11 +1083,9 @@ func TestContext2Validate_interpolateMap(t *testing.T) { ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("template"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("template"): testProviderFuncFixed(p), + }, UIInput: input, }) @@ -1225,11 +1161,9 @@ output "out" { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -1264,11 +1198,9 @@ resource "aws_instance" "foo" { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -1295,11 +1227,9 @@ output "out" { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -1328,11 +1258,9 @@ output "out" { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -1361,11 +1289,9 @@ output "out" { p := testProvider("aws") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -1393,11 +1319,9 @@ resource "test_instance" "bar" { p := testProvider("test") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -1428,11 +1352,9 @@ resource "test_instance" "bar" { p := testProvider("test") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -1455,11 +1377,9 @@ func TestContext2Validate_variableCustomValidationsFail(t *testing.T) { p := testProvider("test") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), + }, }) diags := ctx.Validate() @@ -1500,11 +1420,9 @@ variable "test" { p := testProvider("test") ctx := testContext2(t, &ContextOpts{ Config: m, - ProviderResolver: providers.ResolverFixed( - map[addrs.Provider]providers.Factory{ - addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), - }, - ), + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewLegacyProvider("test"): testProviderFuncFixed(p), + }, Variables: InputValues{ "test": &InputValue{ Value: cty.UnknownVal(cty.String), diff --git a/terraform/eval_apply.go b/terraform/eval_apply.go index cba8d44cd4..788542a448 100644 --- a/terraform/eval_apply.go +++ b/terraform/eval_apply.go @@ -155,7 +155,7 @@ func (n *EvalApply) Eval(ctx EvalContext) (interface{}, error) { "Provider produced invalid object", fmt.Sprintf( "Provider %q produced an invalid value after apply for %s. The result cannot not be saved in the Terraform state.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), + n.ProviderAddr.Provider.String(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), ), )) } @@ -225,7 +225,7 @@ func (n *EvalApply) Eval(ctx EvalContext) (interface{}, error) { // to notice in the logs if an inconsistency beyond the type system // leads to a downstream provider failure. var buf strings.Builder - fmt.Fprintf(&buf, "[WARN] Provider %q produced an unexpected new value for %s, but we are tolerating it because it is using the legacy plugin SDK.\n The following problems may be the cause of any confusing errors from downstream operations:", n.ProviderAddr.Provider.LegacyString(), absAddr) + fmt.Fprintf(&buf, "[WARN] Provider %q produced an unexpected new value for %s, but we are tolerating it because it is using the legacy plugin SDK.\n The following problems may be the cause of any confusing errors from downstream operations:", n.ProviderAddr.Provider.String(), absAddr) for _, err := range errs { fmt.Fprintf(&buf, "\n - %s", tfdiags.FormatError(err)) } @@ -245,7 +245,7 @@ func (n *EvalApply) Eval(ctx EvalContext) (interface{}, error) { "Provider produced inconsistent result after apply", fmt.Sprintf( "When applying changes to %s, provider %q produced an unexpected new value for %s.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - absAddr, n.ProviderAddr.Provider.LegacyString(), tfdiags.FormatError(err), + absAddr, n.ProviderAddr.Provider.String(), tfdiags.FormatError(err), ), )) } diff --git a/terraform/eval_context_builtin.go b/terraform/eval_context_builtin.go index 755d2d8f3c..a0784af47f 100644 --- a/terraform/eval_context_builtin.go +++ b/terraform/eval_context_builtin.go @@ -135,7 +135,7 @@ func (ctx *BuiltinEvalContext) InitProvider(addr addrs.AbsProviderConfig) (provi return nil, err } - log.Printf("[TRACE] BuiltinEvalContext: Initialized %q provider for %s", addr.LegacyString(), addr) + log.Printf("[TRACE] BuiltinEvalContext: Initialized %q provider for %s", addr.String(), addr) ctx.ProviderCache[key] = p return p, nil diff --git a/terraform/eval_context_mock.go b/terraform/eval_context_mock.go index 15bf80569e..ecb01d643a 100644 --- a/terraform/eval_context_mock.go +++ b/terraform/eval_context_mock.go @@ -156,7 +156,7 @@ func (c *MockEvalContext) Input() UIInput { func (c *MockEvalContext) InitProvider(addr addrs.AbsProviderConfig) (providers.Interface, error) { c.InitProviderCalled = true - c.InitProviderType = addr.LegacyString() + c.InitProviderType = addr.String() c.InitProviderAddr = addr return c.InitProviderProvider, c.InitProviderError } diff --git a/terraform/eval_diff.go b/terraform/eval_diff.go index f00814c9e0..c5c24b49e7 100644 --- a/terraform/eval_diff.go +++ b/terraform/eval_diff.go @@ -65,7 +65,7 @@ func (n *EvalCheckPlannedChange) Eval(ctx EvalContext) (interface{}, error) { "Provider produced inconsistent final plan", fmt.Sprintf( "When expanding the plan for %s to include new values learned so far during apply, provider %q changed the planned action from %s to %s.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - absAddr, n.ProviderAddr.Provider.LegacyString(), + absAddr, n.ProviderAddr.Provider.String(), plannedChange.Action, actualChange.Action, ), )) @@ -79,7 +79,7 @@ func (n *EvalCheckPlannedChange) Eval(ctx EvalContext) (interface{}, error) { "Provider produced inconsistent final plan", fmt.Sprintf( "When expanding the plan for %s to include new values learned so far during apply, provider %q produced an invalid new value for %s.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - absAddr, n.ProviderAddr.Provider.LegacyString(), tfdiags.FormatError(err), + absAddr, n.ProviderAddr.Provider.String(), tfdiags.FormatError(err), ), )) } @@ -254,7 +254,7 @@ func (n *EvalDiff) Eval(ctx EvalContext) (interface{}, error) { "Provider produced invalid plan", fmt.Sprintf( "Provider %q planned an invalid value for %s.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), + n.ProviderAddr.Provider.String(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), ), )) } @@ -272,7 +272,7 @@ func (n *EvalDiff) Eval(ctx EvalContext) (interface{}, error) { var buf strings.Builder fmt.Fprintf(&buf, "[WARN] Provider %q produced an invalid plan for %s, but we are tolerating it because it is using the legacy plugin SDK.\n The following problems may be the cause of any confusing errors from downstream operations:", - n.ProviderAddr.Provider.LegacyString(), absAddr, + n.ProviderAddr.Provider.String(), absAddr, ) for _, err := range errs { fmt.Fprintf(&buf, "\n - %s", tfdiags.FormatError(err)) @@ -285,7 +285,7 @@ func (n *EvalDiff) Eval(ctx EvalContext) (interface{}, error) { "Provider produced invalid plan", fmt.Sprintf( "Provider %q planned an invalid value for %s.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), + n.ProviderAddr.Provider.String(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), ), )) } @@ -328,7 +328,7 @@ func (n *EvalDiff) Eval(ctx EvalContext) (interface{}, error) { "Provider produced invalid plan", fmt.Sprintf( "Provider %q has indicated \"requires replacement\" on %s for a non-existent attribute path %#v.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), absAddr, path, + n.ProviderAddr.Provider.String(), absAddr, path, ), )) continue @@ -425,7 +425,7 @@ func (n *EvalDiff) Eval(ctx EvalContext) (interface{}, error) { "Provider produced invalid plan", fmt.Sprintf( "Provider %q planned an invalid value for %s%s.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), absAddr, tfdiags.FormatError(err), + n.ProviderAddr.Provider.String(), absAddr, tfdiags.FormatError(err), ), )) } diff --git a/terraform/eval_read_data.go b/terraform/eval_read_data.go index 76b4a86fdf..ef9fad0384 100644 --- a/terraform/eval_read_data.go +++ b/terraform/eval_read_data.go @@ -87,7 +87,7 @@ func (n *EvalReadData) Eval(ctx EvalContext) (interface{}, error) { schema, _ := providerSchema.SchemaForResourceAddr(n.Addr.ContainingResource()) if schema == nil { // Should be caught during validation, so we don't bother with a pretty error here - return nil, fmt.Errorf("provider %q does not support data source %q", n.ProviderAddr.Provider.LegacyString(), n.Addr.Resource.Type) + return nil, fmt.Errorf("provider %q does not support data source %q", n.ProviderAddr.Provider.String(), n.Addr.Resource.Type) } // We'll always start by evaluating the configuration. What we do after @@ -248,7 +248,7 @@ func (n *EvalReadData) Eval(ctx EvalContext) (interface{}, error) { "Provider produced invalid object", fmt.Sprintf( "Provider %q produced an invalid value for %s.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), + n.ProviderAddr.Provider.String(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), ), )) } @@ -262,7 +262,7 @@ func (n *EvalReadData) Eval(ctx EvalContext) (interface{}, error) { "Provider produced null object", fmt.Sprintf( "Provider %q produced a null value for %s.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), absAddr, + n.ProviderAddr.Provider.String(), absAddr, ), )) } @@ -272,7 +272,7 @@ func (n *EvalReadData) Eval(ctx EvalContext) (interface{}, error) { "Provider produced invalid object", fmt.Sprintf( "Provider %q produced a value for %s that is not wholly known.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), absAddr, + n.ProviderAddr.Provider.String(), absAddr, ), )) @@ -411,7 +411,7 @@ func (n *EvalReadDataApply) Eval(ctx EvalContext) (interface{}, error) { "Provider produced invalid object", fmt.Sprintf( "Provider %q planned an invalid value for %s. The result could not be saved.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), + n.ProviderAddr.Provider.String(), tfdiags.FormatErrorPrefixed(err, absAddr.String()), ), )) } diff --git a/terraform/eval_refresh.go b/terraform/eval_refresh.go index 7ec875a976..4162331df4 100644 --- a/terraform/eval_refresh.go +++ b/terraform/eval_refresh.go @@ -107,7 +107,7 @@ func (n *EvalRefresh) Eval(ctx EvalContext) (interface{}, error) { "Provider produced invalid object", fmt.Sprintf( "Provider %q planned an invalid value for %s during refresh: %s.\n\nThis is a bug in the provider, which should be reported in the provider's own issue tracker.", - n.ProviderAddr.Provider.LegacyString(), absAddr, tfdiags.FormatError(err), + n.ProviderAddr.Provider.String(), absAddr, tfdiags.FormatError(err), ), )) } diff --git a/terraform/evaluate_valid.go b/terraform/evaluate_valid.go index 5fabb96be8..86475a605e 100644 --- a/terraform/evaluate_valid.go +++ b/terraform/evaluate_valid.go @@ -222,7 +222,7 @@ func (d *evaluationStateData) staticValidateResourceReference(modCfg *configs.Co diags = diags.Append(&hcl.Diagnostic{ Severity: hcl.DiagError, Summary: `Invalid resource type`, - Detail: fmt.Sprintf(`A %s resource type %q is not supported by provider %q.`, modeAdjective, addr.Type, providerFqn.LegacyString()), + Detail: fmt.Sprintf(`A %s resource type %q is not supported by provider %q.`, modeAdjective, addr.Type, providerFqn.String()), Subject: rng.ToHCL().Ptr(), }) return diags diff --git a/terraform/node_resource_abstract.go b/terraform/node_resource_abstract.go index 72816dfd13..32ca32899b 100644 --- a/terraform/node_resource_abstract.go +++ b/terraform/node_resource_abstract.go @@ -305,8 +305,7 @@ func (n *NodeAbstractResource) Provider() addrs.Provider { if n.Config != nil { return n.Config.Provider } - // FIXME: this will be a default provider - return addrs.NewLegacyProvider(n.Addr.Resource.ImpliedProvider()) + return addrs.NewDefaultProvider(n.Addr.Resource.ImpliedProvider()) } // GraphNodeProviderConsumer @@ -340,8 +339,7 @@ func (n *NodeAbstractResourceInstance) Provider() addrs.Provider { if n.Config != nil { return n.Config.Provider } - // FIXME: this will be a default provider - return addrs.NewLegacyProvider(n.Addr.Resource.ContainingResource().ImpliedProvider()) + return addrs.NewDefaultProvider(n.Addr.Resource.ContainingResource().ImpliedProvider()) } // GraphNodeProvisionerConsumer diff --git a/terraform/terraform_test.go b/terraform/terraform_test.go index 7251e729c5..7a97dafa41 100644 --- a/terraform/terraform_test.go +++ b/terraform/terraform_test.go @@ -283,13 +283,13 @@ func (h *HookRecordApplyOrder) PreApply(addr addrs.AbsResourceInstance, gen stat const testTerraformInputProviderStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] bar = override foo = us-east-1 type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] bar = baz num = 2 type = aws_instance @@ -298,7 +298,7 @@ aws_instance.foo: const testTerraformInputProviderOnlyStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = us-west-2 type = aws_instance ` @@ -306,7 +306,7 @@ aws_instance.foo: const testTerraformInputVarOnlyStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = us-east-1 type = aws_instance ` @@ -314,7 +314,7 @@ aws_instance.foo: const testTerraformInputVarOnlyUnsetStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] bar = baz foo = foovalue type = aws_instance @@ -323,13 +323,13 @@ aws_instance.foo: const testTerraformInputVarsStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] bar = override foo = us-east-1 type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] bar = baz num = 2 type = aws_instance @@ -338,12 +338,12 @@ aws_instance.foo: const testTerraformApplyStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance ` @@ -351,13 +351,13 @@ aws_instance.foo: const testTerraformApplyDataBasicStr = ` data.null_data_source.testing: ID = yo - provider = provider["registry.terraform.io/-/null"] + provider = provider["registry.terraform.io/hashicorp/null"] ` const testTerraformApplyRefCountStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = 3 type = aws_instance @@ -365,24 +365,24 @@ aws_instance.bar: aws_instance.foo aws_instance.foo.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo.2: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testTerraformApplyProviderAliasStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"].bar + provider = provider["registry.terraform.io/hashicorp/aws"].bar foo = bar type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance ` @@ -390,10 +390,10 @@ aws_instance.foo: const testTerraformApplyProviderAliasConfigStr = ` another_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/another"].two + provider = provider["registry.terraform.io/hashicorp/another"].two another_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/another"] + provider = provider["registry.terraform.io/hashicorp/another"] ` const testTerraformApplyEmptyModuleStr = ` @@ -412,7 +412,7 @@ aws_route53_zone_id = XXXX const testTerraformApplyDependsCreateBeforeStr = ` aws_instance.lb: ID = baz - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] instance = foo type = aws_instance @@ -420,7 +420,7 @@ aws_instance.lb: aws_instance.web aws_instance.web: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = ami-new type = aws_instance ` @@ -428,7 +428,7 @@ aws_instance.web: const testTerraformApplyCreateBeforeStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = xyz type = aws_instance ` @@ -436,7 +436,7 @@ aws_instance.bar: const testTerraformApplyCreateBeforeUpdateStr = ` aws_instance.bar: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = baz type = aws_instance ` @@ -444,14 +444,14 @@ aws_instance.bar: const testTerraformApplyCancelStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] value = 2 ` const testTerraformApplyComputeStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = computed_value type = aws_instance @@ -459,7 +459,7 @@ aws_instance.bar: aws_instance.foo aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] compute = value compute_value = 1 num = 2 @@ -470,17 +470,17 @@ aws_instance.foo: const testTerraformApplyCountDecStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.foo.0: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance aws_instance.foo.1: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance ` @@ -488,7 +488,7 @@ aws_instance.foo.1: const testTerraformApplyCountDecToOneStr = ` aws_instance.foo: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance ` @@ -496,7 +496,7 @@ aws_instance.foo: const testTerraformApplyCountDecToOneCorruptedStr = ` aws_instance.foo: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance ` @@ -514,24 +514,24 @@ STATE: aws_instance.foo: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance aws_instance.foo.0: ID = baz - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] type = aws_instance ` const testTerraformApplyCountVariableStr = ` aws_instance.foo.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance aws_instance.foo.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance ` @@ -539,7 +539,7 @@ aws_instance.foo.1: const testTerraformApplyCountVariableRefStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = 2 type = aws_instance @@ -547,70 +547,70 @@ aws_instance.bar: aws_instance.foo aws_instance.foo.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testTerraformApplyForEachVariableStr = ` aws_instance.foo["b15c6d616d6143248c575900dff57325eb1de498"]: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance aws_instance.foo["c3de47d34b0a9f13918dd705c141d579dd6555fd"]: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance aws_instance.foo["e30a7edcc42a846684f2a4eea5f3cd261d33c46d"]: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo type = aws_instance aws_instance.one["a"]: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.one["b"]: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.two["a"]: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] Dependencies: aws_instance.one aws_instance.two["b"]: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] Dependencies: aws_instance.one` const testTerraformApplyMinimalStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testTerraformApplyModuleStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance module.child: aws_instance.baz: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance ` @@ -618,7 +618,7 @@ module.child: const testTerraformApplyModuleBoolStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = true type = aws_instance @@ -636,12 +636,12 @@ const testTerraformApplyModuleDestroyOrderStr = ` const testTerraformApplyMultiProviderStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance do_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/do"] + provider = provider["registry.terraform.io/hashicorp/do"] num = 2 type = do_instance ` @@ -651,10 +651,10 @@ const testTerraformApplyModuleOnlyProviderStr = ` module.child: aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] test_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/test"] + provider = provider["registry.terraform.io/hashicorp/test"] ` const testTerraformApplyModuleProviderAliasStr = ` @@ -662,19 +662,19 @@ const testTerraformApplyModuleProviderAliasStr = ` module.child: aws_instance.foo: ID = foo - provider = module.child.provider["registry.terraform.io/-/aws"].eu + provider = module.child.provider["registry.terraform.io/hashicorp/aws"].eu ` const testTerraformApplyModuleVarRefExistingStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar module.child: aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] type = aws_instance value = bar @@ -696,13 +696,13 @@ const testTerraformApplyOutputOrphanModuleStr = ` const testTerraformApplyProvisionerStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] Dependencies: aws_instance.foo aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] compute = value compute_value = 1 num = 2 @@ -715,16 +715,16 @@ const testTerraformApplyProvisionerModuleStr = ` module.child: aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testTerraformApplyProvisionerFailStr = ` aws_instance.bar: (tainted) ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance ` @@ -732,7 +732,7 @@ aws_instance.foo: const testTerraformApplyProvisionerFailCreateStr = ` aws_instance.bar: (tainted) ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ` const testTerraformApplyProvisionerFailCreateNoIdStr = ` @@ -742,7 +742,7 @@ const testTerraformApplyProvisionerFailCreateNoIdStr = ` const testTerraformApplyProvisionerFailCreateBeforeDestroyStr = ` aws_instance.bar: (tainted) (1 deposed) ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = xyz type = aws_instance Deposed ID 1 = bar @@ -751,7 +751,7 @@ aws_instance.bar: (tainted) (1 deposed) const testTerraformApplyProvisionerResourceRefStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance ` @@ -759,7 +759,7 @@ aws_instance.bar: const testTerraformApplyProvisionerSelfRefStr = ` aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance ` @@ -767,17 +767,17 @@ aws_instance.foo: const testTerraformApplyProvisionerMultiSelfRefStr = ` aws_instance.foo.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = number 0 type = aws_instance aws_instance.foo.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = number 1 type = aws_instance aws_instance.foo.2: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = number 2 type = aws_instance ` @@ -785,17 +785,17 @@ aws_instance.foo.2: const testTerraformApplyProvisionerMultiSelfRefSingleStr = ` aws_instance.foo.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = number 0 type = aws_instance aws_instance.foo.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = number 1 type = aws_instance aws_instance.foo.2: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = number 2 type = aws_instance ` @@ -803,7 +803,7 @@ aws_instance.foo.2: const testTerraformApplyProvisionerDiffStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance ` @@ -815,27 +815,27 @@ const testTerraformApplyDestroyStr = ` const testTerraformApplyErrorStr = ` aws_instance.bar: (tainted) ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] Dependencies: aws_instance.foo aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] value = 2 ` const testTerraformApplyErrorCreateBeforeDestroyStr = ` aws_instance.bar: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = abc ` const testTerraformApplyErrorDestroyCreateBeforeDestroyStr = ` aws_instance.bar: (1 deposed) ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] require_new = xyz type = aws_instance Deposed ID 1 = bar @@ -844,20 +844,20 @@ aws_instance.bar: (1 deposed) const testTerraformApplyErrorPartialStr = ` aws_instance.bar: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] Dependencies: aws_instance.foo aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] value = 2 ` const testTerraformApplyResourceDependsOnModuleStr = ` aws_instance.a: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ami = parent type = aws_instance @@ -867,7 +867,7 @@ aws_instance.a: module.child: aws_instance.child: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ami = child type = aws_instance ` @@ -875,7 +875,7 @@ module.child: const testTerraformApplyResourceDependsOnModuleDeepStr = ` aws_instance.a: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ami = parent type = aws_instance @@ -885,7 +885,7 @@ aws_instance.a: module.child.grandchild: aws_instance.c: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ami = grandchild type = aws_instance ` @@ -895,7 +895,7 @@ const testTerraformApplyResourceDependsOnModuleInModuleStr = ` module.child: aws_instance.b: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ami = child type = aws_instance @@ -904,7 +904,7 @@ module.child: module.child.grandchild: aws_instance.c: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] ami = grandchild type = aws_instance ` @@ -912,7 +912,7 @@ module.child.grandchild: const testTerraformApplyTaintStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance ` @@ -920,7 +920,7 @@ aws_instance.bar: const testTerraformApplyTaintDepStr = ` aws_instance.bar: ID = bar - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo num = 2 type = aws_instance @@ -929,7 +929,7 @@ aws_instance.bar: aws_instance.foo aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance ` @@ -937,7 +937,7 @@ aws_instance.foo: const testTerraformApplyTaintDepRequireNewStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo require_new = yes type = aws_instance @@ -946,7 +946,7 @@ aws_instance.bar: aws_instance.foo aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance ` @@ -954,12 +954,12 @@ aws_instance.foo: const testTerraformApplyOutputStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance @@ -971,12 +971,12 @@ foo_num = 2 const testTerraformApplyOutputAddStr = ` aws_instance.test.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo0 type = aws_instance aws_instance.test.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = foo1 type = aws_instance @@ -989,22 +989,22 @@ secondOutput = foo1 const testTerraformApplyOutputListStr = ` aws_instance.bar.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.bar.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.bar.2: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance @@ -1016,22 +1016,22 @@ foo_num = [bar,bar,bar] const testTerraformApplyOutputMultiStr = ` aws_instance.bar.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.bar.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.bar.2: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance @@ -1043,22 +1043,22 @@ foo_num = bar,bar,bar const testTerraformApplyOutputMultiIndexStr = ` aws_instance.bar.0: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.bar.1: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.bar.2: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] foo = bar type = aws_instance aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] num = 2 type = aws_instance @@ -1070,7 +1070,7 @@ foo_num = bar const testTerraformApplyUnknownAttrStr = ` aws_instance.foo: (tainted) ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] compute = unknown num = 2 type = aws_instance @@ -1079,13 +1079,13 @@ aws_instance.foo: (tainted) const testTerraformApplyVarsStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] bar = override baz = override foo = us-east-1 aws_instance.foo: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] bar = baz list.# = 2 list.0 = Hello @@ -1099,7 +1099,7 @@ aws_instance.foo: const testTerraformApplyVarsEnvStr = ` aws_instance.bar: ID = foo - provider = provider["registry.terraform.io/-/aws"] + provider = provider["registry.terraform.io/hashicorp/aws"] list.# = 2 list.0 = Hello list.1 = World @@ -1294,7 +1294,7 @@ STATE: const testTerraformInputHCL = ` hcl_instance.hcltest: ID = foo - provider = provider["registry.terraform.io/-/hcl"] + provider = provider["registry.terraform.io/hashicorp/hcl"] bar.w = z bar.x = y foo.# = 2 @@ -1306,10 +1306,10 @@ hcl_instance.hcltest: const testTerraformRefreshDataRefDataStr = ` data.null_data_source.bar: ID = foo - provider = provider["registry.terraform.io/-/null"] + provider = provider["registry.terraform.io/hashicorp/null"] bar = yes data.null_data_source.foo: ID = foo - provider = provider["registry.terraform.io/-/null"] + provider = provider["registry.terraform.io/hashicorp/null"] foo = yes `