|
|
|
|
@ -3,6 +3,7 @@ package terraform
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"log"
|
|
|
|
|
"strconv"
|
|
|
|
|
"strings"
|
|
|
|
|
"sync"
|
|
|
|
|
"sync/atomic"
|
|
|
|
|
@ -469,10 +470,7 @@ func (c *Context) applyWalkFn() depgraph.WalkFunc {
|
|
|
|
|
|
|
|
|
|
// If we do not have any connection info, initialize
|
|
|
|
|
if r.State.ConnInfo == nil {
|
|
|
|
|
r.State.ConnInfo = &ResourceConnectionInfo{}
|
|
|
|
|
}
|
|
|
|
|
if r.State.ConnInfo.Raw == nil {
|
|
|
|
|
r.State.ConnInfo.Raw = make(map[string]interface{})
|
|
|
|
|
r.State.ConnInfo = make(map[string]string)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Remove any output values from the diff
|
|
|
|
|
@ -584,16 +582,33 @@ func (c *Context) applyProvisioners(r *Resource, rs *ResourceState) (*ResourceSt
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Merge the connection information
|
|
|
|
|
overlay := make(map[string]interface{})
|
|
|
|
|
overlay := make(map[string]string)
|
|
|
|
|
if origConnInfo != nil {
|
|
|
|
|
for k, v := range origConnInfo.Raw {
|
|
|
|
|
for k, v := range origConnInfo {
|
|
|
|
|
overlay[k] = v
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for k, v := range connInfo.Config {
|
|
|
|
|
overlay[k] = v
|
|
|
|
|
switch vt := v.(type) {
|
|
|
|
|
case string:
|
|
|
|
|
overlay[k] = vt
|
|
|
|
|
case int64:
|
|
|
|
|
overlay[k] = strconv.FormatInt(vt, 10)
|
|
|
|
|
case int32:
|
|
|
|
|
overlay[k] = strconv.FormatInt(int64(vt), 10)
|
|
|
|
|
case int:
|
|
|
|
|
overlay[k] = strconv.FormatInt(int64(vt), 10)
|
|
|
|
|
case float32:
|
|
|
|
|
overlay[k] = strconv.FormatFloat(float64(vt), 'f', 3, 32)
|
|
|
|
|
case float64:
|
|
|
|
|
overlay[k] = strconv.FormatFloat(vt, 'f', 3, 64)
|
|
|
|
|
case bool:
|
|
|
|
|
overlay[k] = strconv.FormatBool(vt)
|
|
|
|
|
default:
|
|
|
|
|
overlay[k] = fmt.Sprintf("%v", vt)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rs.ConnInfo = &ResourceConnectionInfo{Raw: overlay}
|
|
|
|
|
rs.ConnInfo = overlay
|
|
|
|
|
|
|
|
|
|
// Invoke the Provisioner
|
|
|
|
|
rs, err = prov.Provisioner.Apply(rs, prov.Config)
|
|
|
|
|
|