mirror of https://github.com/kubernetes/kops.git
Merge pull request #10978 from mmerrill3/feature/10786-Dedupe-terraform
Removing duplicate local and output values in terraform(#10786)
This commit is contained in:
commit
d3cf552f37
|
|
@ -1,7 +1,7 @@
|
|||
locals {
|
||||
cluster_name = "existing-iam.example.com"
|
||||
master_autoscaling_group_ids = [aws_autoscaling_group.master-us-test-1a-masters-existing-iam-example-com.id, aws_autoscaling_group.master-us-test-1b-masters-existing-iam-example-com.id, aws_autoscaling_group.master-us-test-1c-masters-existing-iam-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-existing-iam-example-com.id, aws_security_group.masters-existing-iam-example-com.id, aws_security_group.masters-existing-iam-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-existing-iam-example-com.id]
|
||||
node_autoscaling_group_ids = [aws_autoscaling_group.nodes-existing-iam-example-com.id]
|
||||
node_security_group_ids = [aws_security_group.nodes-existing-iam-example-com.id]
|
||||
node_subnet_ids = [aws_subnet.us-test-1a-existing-iam-example-com.id]
|
||||
|
|
@ -23,7 +23,7 @@ output "master_autoscaling_group_ids" {
|
|||
}
|
||||
|
||||
output "master_security_group_ids" {
|
||||
value = [aws_security_group.masters-existing-iam-example-com.id, aws_security_group.masters-existing-iam-example-com.id, aws_security_group.masters-existing-iam-example-com.id]
|
||||
value = [aws_security_group.masters-existing-iam-example-com.id]
|
||||
}
|
||||
|
||||
output "node_autoscaling_group_ids" {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
locals {
|
||||
cluster_name = "ha.example.com"
|
||||
master_autoscaling_group_ids = [aws_autoscaling_group.master-us-test-1a-masters-ha-example-com.id, aws_autoscaling_group.master-us-test-1b-masters-ha-example-com.id, aws_autoscaling_group.master-us-test-1c-masters-ha-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-ha-example-com.id, aws_security_group.masters-ha-example-com.id, aws_security_group.masters-ha-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-ha-example-com.id]
|
||||
masters_role_arn = aws_iam_role.masters-ha-example-com.arn
|
||||
masters_role_name = aws_iam_role.masters-ha-example-com.name
|
||||
node_autoscaling_group_ids = [aws_autoscaling_group.nodes-ha-example-com.id]
|
||||
|
|
@ -27,7 +27,7 @@ output "master_autoscaling_group_ids" {
|
|||
}
|
||||
|
||||
output "master_security_group_ids" {
|
||||
value = [aws_security_group.masters-ha-example-com.id, aws_security_group.masters-ha-example-com.id, aws_security_group.masters-ha-example-com.id]
|
||||
value = [aws_security_group.masters-ha-example-com.id]
|
||||
}
|
||||
|
||||
output "masters_role_arn" {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
locals {
|
||||
cluster_name = "launchtemplates.example.com"
|
||||
master_autoscaling_group_ids = [aws_autoscaling_group.master-us-test-1a-masters-launchtemplates-example-com.id, aws_autoscaling_group.master-us-test-1b-masters-launchtemplates-example-com.id, aws_autoscaling_group.master-us-test-1c-masters-launchtemplates-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-launchtemplates-example-com.id, aws_security_group.masters-launchtemplates-example-com.id, aws_security_group.masters-launchtemplates-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-launchtemplates-example-com.id]
|
||||
masters_role_arn = aws_iam_role.masters-launchtemplates-example-com.arn
|
||||
masters_role_name = aws_iam_role.masters-launchtemplates-example-com.name
|
||||
node_autoscaling_group_ids = [aws_autoscaling_group.nodes-launchtemplates-example-com.id]
|
||||
|
|
@ -27,7 +27,7 @@ output "master_autoscaling_group_ids" {
|
|||
}
|
||||
|
||||
output "master_security_group_ids" {
|
||||
value = [aws_security_group.masters-launchtemplates-example-com.id, aws_security_group.masters-launchtemplates-example-com.id, aws_security_group.masters-launchtemplates-example-com.id]
|
||||
value = [aws_security_group.masters-launchtemplates-example-com.id]
|
||||
}
|
||||
|
||||
output "masters_role_arn" {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
locals {
|
||||
cluster_name = "mixedinstances.example.com"
|
||||
master_autoscaling_group_ids = [aws_autoscaling_group.master-us-test-1a-masters-mixedinstances-example-com.id, aws_autoscaling_group.master-us-test-1b-masters-mixedinstances-example-com.id, aws_autoscaling_group.master-us-test-1c-masters-mixedinstances-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-mixedinstances-example-com.id, aws_security_group.masters-mixedinstances-example-com.id, aws_security_group.masters-mixedinstances-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-mixedinstances-example-com.id]
|
||||
masters_role_arn = aws_iam_role.masters-mixedinstances-example-com.arn
|
||||
masters_role_name = aws_iam_role.masters-mixedinstances-example-com.name
|
||||
node_autoscaling_group_ids = [aws_autoscaling_group.nodes-mixedinstances-example-com.id]
|
||||
|
|
@ -27,7 +27,7 @@ output "master_autoscaling_group_ids" {
|
|||
}
|
||||
|
||||
output "master_security_group_ids" {
|
||||
value = [aws_security_group.masters-mixedinstances-example-com.id, aws_security_group.masters-mixedinstances-example-com.id, aws_security_group.masters-mixedinstances-example-com.id]
|
||||
value = [aws_security_group.masters-mixedinstances-example-com.id]
|
||||
}
|
||||
|
||||
output "masters_role_arn" {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
locals {
|
||||
cluster_name = "mixedinstances.example.com"
|
||||
master_autoscaling_group_ids = [aws_autoscaling_group.master-us-test-1a-masters-mixedinstances-example-com.id, aws_autoscaling_group.master-us-test-1b-masters-mixedinstances-example-com.id, aws_autoscaling_group.master-us-test-1c-masters-mixedinstances-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-mixedinstances-example-com.id, aws_security_group.masters-mixedinstances-example-com.id, aws_security_group.masters-mixedinstances-example-com.id]
|
||||
master_security_group_ids = [aws_security_group.masters-mixedinstances-example-com.id]
|
||||
masters_role_arn = aws_iam_role.masters-mixedinstances-example-com.arn
|
||||
masters_role_name = aws_iam_role.masters-mixedinstances-example-com.name
|
||||
node_autoscaling_group_ids = [aws_autoscaling_group.nodes-mixedinstances-example-com.id]
|
||||
|
|
@ -27,7 +27,7 @@ output "master_autoscaling_group_ids" {
|
|||
}
|
||||
|
||||
output "master_security_group_ids" {
|
||||
value = [aws_security_group.masters-mixedinstances-example-com.id, aws_security_group.masters-mixedinstances-example-com.id, aws_security_group.masters-mixedinstances-example-com.id]
|
||||
value = [aws_security_group.masters-mixedinstances-example-com.id]
|
||||
}
|
||||
|
||||
output "masters_role_arn" {
|
||||
|
|
|
|||
|
|
@ -152,9 +152,12 @@ func writeLocalsOutputs(body *hclwrite.Body, outputs map[string]*terraformOutput
|
|||
writeLiteral(outputBody, "value", v.Value)
|
||||
writeLiteral(localsBody, tfName, v.Value)
|
||||
} else {
|
||||
SortLiterals(v.ValueArray)
|
||||
writeLiteralList(outputBody, "value", v.ValueArray)
|
||||
writeLiteralList(localsBody, tfName, v.ValueArray)
|
||||
deduped, err := DedupLiterals(v.ValueArray)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
writeLiteralList(outputBody, "value", deduped)
|
||||
writeLiteralList(localsBody, tfName, deduped)
|
||||
}
|
||||
|
||||
if existingOutputVars[tfName] {
|
||||
|
|
|
|||
|
|
@ -86,6 +86,27 @@ output "key1" {
|
|||
},
|
||||
errExpected: true,
|
||||
},
|
||||
{
|
||||
name: "duplicate values",
|
||||
values: map[string]*terraformOutputVariable{
|
||||
"key1": {
|
||||
Key: "key1",
|
||||
ValueArray: []*Literal{
|
||||
LiteralFromStringValue("value1"),
|
||||
LiteralFromStringValue("value1"),
|
||||
LiteralFromStringValue("value2"),
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: `
|
||||
locals {
|
||||
key1 = ["value1", "value2"]
|
||||
}
|
||||
|
||||
output "key1" {
|
||||
value = ["value1", "value2"]
|
||||
}`,
|
||||
},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -73,7 +73,6 @@ func (t *TerraformTarget) finishJSON(taskMap map[string]fi.Task) error {
|
|||
if v.Value != nil {
|
||||
tfVar["value"] = v.Value
|
||||
} else {
|
||||
SortLiterals(v.ValueArray)
|
||||
deduped, err := DedupLiterals(v.ValueArray)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -94,7 +93,6 @@ func (t *TerraformTarget) finishJSON(taskMap map[string]fi.Task) error {
|
|||
if v.Value != nil {
|
||||
localVariables[tfName] = v.Value
|
||||
} else {
|
||||
SortLiterals(v.ValueArray)
|
||||
deduped, err := DedupLiterals(v.ValueArray)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
|||
Loading…
Reference in New Issue