Merge pull request #25929 from hashicorp/cam-stitt/config-depends-on
Ensure depends_on is in module calls for config
This commit is contained in:
commit
2e829a0d54
|
@ -48,6 +48,7 @@ type moduleCall struct {
|
||||||
ForEachExpression *expression `json:"for_each_expression,omitempty"`
|
ForEachExpression *expression `json:"for_each_expression,omitempty"`
|
||||||
Module module `json:"module,omitempty"`
|
Module module `json:"module,omitempty"`
|
||||||
VersionConstraint string `json:"version_constraint,omitempty"`
|
VersionConstraint string `json:"version_constraint,omitempty"`
|
||||||
|
DependsOn []string `json:"depends_on,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// variables is the JSON representation of the variables provided to the current
|
// variables is the JSON representation of the variables provided to the current
|
||||||
|
@ -270,6 +271,20 @@ func marshalModuleCall(c *configs.Config, mc *configs.ModuleCall, schemas *terra
|
||||||
module, _ := marshalModule(c, schemas, mc.Name)
|
module, _ := marshalModule(c, schemas, mc.Name)
|
||||||
ret.Module = module
|
ret.Module = module
|
||||||
|
|
||||||
|
if len(mc.DependsOn) > 0 {
|
||||||
|
dependencies := make([]string, len(mc.DependsOn))
|
||||||
|
for i, d := range mc.DependsOn {
|
||||||
|
ref, diags := addrs.ParseRef(d)
|
||||||
|
// we should not get an error here, because `terraform validate`
|
||||||
|
// would have complained well before this point, but if we do we'll
|
||||||
|
// silenty skip it.
|
||||||
|
if !diags.HasErrors() {
|
||||||
|
dependencies[i] = ref.Subject.String()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ret.DependsOn = dependencies
|
||||||
|
}
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
variable "test_var" {
|
||||||
|
default = "foo-var"
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
module "foo" {
|
||||||
|
source = "./foo"
|
||||||
|
|
||||||
|
depends_on = [
|
||||||
|
test_instance.test
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "test_instance" "test" {
|
||||||
|
ami = "foo-bar"
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
{
|
||||||
|
"format_version": "0.1",
|
||||||
|
"terraform_version": "0.13.1-dev",
|
||||||
|
"planned_values": {
|
||||||
|
"root_module": {
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"address": "test_instance.test",
|
||||||
|
"mode": "managed",
|
||||||
|
"type": "test_instance",
|
||||||
|
"name": "test",
|
||||||
|
"provider_name": "registry.terraform.io/hashicorp/test",
|
||||||
|
"schema_version": 0,
|
||||||
|
"values": {
|
||||||
|
"ami": "foo-bar"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resource_changes": [
|
||||||
|
{
|
||||||
|
"address": "test_instance.test",
|
||||||
|
"mode": "managed",
|
||||||
|
"type": "test_instance",
|
||||||
|
"name": "test",
|
||||||
|
"provider_name": "registry.terraform.io/hashicorp/test",
|
||||||
|
"change": {
|
||||||
|
"actions": [
|
||||||
|
"create"
|
||||||
|
],
|
||||||
|
"before": null,
|
||||||
|
"after": {
|
||||||
|
"ami": "foo-bar"
|
||||||
|
},
|
||||||
|
"after_unknown": {
|
||||||
|
"id": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"configuration": {
|
||||||
|
"root_module": {
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"address": "test_instance.test",
|
||||||
|
"mode": "managed",
|
||||||
|
"type": "test_instance",
|
||||||
|
"name": "test",
|
||||||
|
"provider_config_key": "test",
|
||||||
|
"expressions": {
|
||||||
|
"ami": {
|
||||||
|
"constant_value": "foo-bar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schema_version": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"module_calls": {
|
||||||
|
"foo": {
|
||||||
|
"depends_on": [
|
||||||
|
"test_instance.test"
|
||||||
|
],
|
||||||
|
"source": "./foo",
|
||||||
|
"module": {
|
||||||
|
"variables": {
|
||||||
|
"test_var": {
|
||||||
|
"default": "foo-var"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue