support retry on first ssh commands

This commit is contained in:
Grant Gongaware 2017-02-15 15:32:37 -08:00
parent 28dbb40192
commit 39a47f793f
3 changed files with 20 additions and 6 deletions

View File

@ -11,6 +11,7 @@ import (
"log"
"strconv"
"strings"
"time"
)
const eth0Payload = "echo $'%s' > /tmp/tf_eth0_payload"
@ -59,9 +60,20 @@ func preProvisionUbuntu(d *schema.ResourceData) error {
}
log.Print("[DEBUG] sending os_network_config")
err = runCommand(comm, fmt.Sprintf(eth0Payload, strings.Trim(strconv.Quote(d.Get("os_network_config").(string)), "\"")))
if err != nil {
return err
// on this first one allow some retries to connect
rr := 0
for {
rr++
err = runCommand(comm, fmt.Sprintf(eth0Payload, strings.Trim(strconv.Quote(d.Get("os_network_config").(string)), "\"")))
if err != nil {
if rr > 3 {
return err
}
time.Sleep(2 * time.Second)
continue
}
break
}
hostname := d.Get("name").(string)

View File

@ -25,6 +25,7 @@ func Provider() *schema.Provider {
Required: true,
DefaultFunc: schema.EnvDefaultFunc("PM_PASS", nil),
Description: "secret",
Sensitive: true,
},
"pm_api_url": {
Type: schema.TypeString,

View File

@ -95,9 +95,10 @@ func resourceVmQemu() *schema.Resource {
ForceNew: true,
},
"ssh_private_key": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Sensitive: true,
},
},
}