Ensure amazon-private-ip fixes string values

The "ssh_private_ip" key works with either boolean values or string
representations of booleans. The fixer errors when the value is defined
as, for example, "true" (with quotation marks). This commit will attempt
to convert the string into a bool when necessary to ensure this case is
handled.

Signed-off-by: Brendan Devenney <brendan.devenney@cloudreach.com>
This commit is contained in:
Brendan Devenney 2018-07-05 16:57:54 +01:00
parent 4b1f96b527
commit 73c532e772
2 changed files with 20 additions and 2 deletions

View File

@ -2,6 +2,7 @@ package fix
import (
"log"
"strconv"
"strings"
"github.com/mitchellh/mapstructure"
@ -49,8 +50,12 @@ func (FixerAmazonPrivateIP) Fix(input map[string]interface{}) (map[string]interf
}
privateIP, ok := privateIPi.(bool)
if !ok {
log.Fatalf("Wrong type for ssh_private_ip")
continue
var err error
privateIP, err = strconv.ParseBool(privateIPi.(string))
if err != nil {
log.Fatalf("Wrong type for ssh_private_ip")
continue
}
}
delete(builder, "ssh_private_ip")

View File

@ -39,6 +39,19 @@ func TestFixerAmazonPrivateIP(t *testing.T) {
"ssh_interface": "private_ip",
},
},
// ssh_private_ip specified as string
{
Input: map[string]interface{}{
"type": "amazon-ebs",
"ssh_private_ip": "true",
},
Expected: map[string]interface{}{
"type": "amazon-ebs",
"ssh_interface": "private_ip",
},
},
}
for _, tc := range cases {