Skip to content

Commit 16d7059

Browse files
terraform init should pick up action providers
1 parent 285ff45 commit 16d7059

File tree

4 files changed

+18
-0
lines changed

4 files changed

+18
-0
lines changed

internal/configs/config.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,15 @@ func (c *Config) addProviderRequirements(reqs providerreqs.Requirements, recurse
483483
reqs[fqn] = nil
484484
}
485485

486+
for _, rc := range c.Module.Actions {
487+
fqn := rc.Provider
488+
if _, exists := reqs[fqn]; exists {
489+
// Explicit dependency already present
490+
continue
491+
}
492+
reqs[fqn] = nil
493+
}
494+
486495
// Import blocks that are generating config may have a custom provider
487496
// meta-argument. Like the provider meta-argument used in resource blocks,
488497
// we use this opportunity to load any implicit providers.
@@ -1022,6 +1031,9 @@ func (c *Config) EffectiveRequiredProviderConfigs() addrs.Map[addrs.RootProvider
10221031
for _, rc := range c.Module.DataResources {
10231032
maybePutLocal(rc.ProviderConfigAddr(), false)
10241033
}
1034+
for _, rc := range c.Module.Actions {
1035+
maybePutLocal(rc.ProviderConfigAddr(), false)
1036+
}
10251037
for _, ic := range c.Module.Import {
10261038
if ic.ProviderConfigRef != nil {
10271039
maybePutLocal(addrs.LocalProviderConfig{

internal/configs/config_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ func TestConfigProviderTypes(t *testing.T) {
3535
}
3636

3737
got = cfg.ProviderTypes()
38+
3839
want := []addrs.Provider{
3940
addrs.NewDefaultProvider("aws"),
41+
addrs.NewDefaultProvider("external"),
4042
addrs.NewDefaultProvider("local"),
4143
addrs.NewDefaultProvider("null"),
4244
addrs.NewDefaultProvider("template"),

internal/configs/parser_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ func testParser(files map[string]string) *Parser {
4545
// module and returns its configuration. This is a helper for use in unit tests.
4646
func testModuleConfigFromFile(filename string) (*Config, hcl.Diagnostics) {
4747
parser := NewParser(nil)
48+
parser.allowExperiments = true // Allow language experiments in tests so we can verify actions.
4849
f, diags := parser.LoadConfigFile(filename)
4950
mod, modDiags := NewModule([]*File{f}, nil)
5051
diags = append(diags, modDiags...)

internal/configs/testdata/valid-files/providers-explicit-implied.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ resource "null_resource" "foo" {
1414

1515
}
1616

17+
action "external_test" "foo" {
18+
}
19+
1720
import {
1821
id = "directory/filename"
1922
to = local_file.foo

0 commit comments

Comments
 (0)