Merge pull request #10978 from mmerrill3/feature/10786-Dedupe-terraform

Removing duplicate local and output values in terraform(#10786)
This commit is contained in:
Kubernetes Prow Robot 2021-03-04 21:08:22 -08:00 committed by GitHub
commit d3cf552f37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 37 additions and 15 deletions

View File

@ -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" {

View File

@ -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" {

View File

@ -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" {

View File

@ -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" {

View File

@ -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" {

View File

@ -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] {

View File

@ -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) {

View File

@ -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