terraform: computed outputs

This commit is contained in:
Mitchell Hashimoto 2015-02-11 22:38:38 -08:00
parent de6827b3ed
commit 32e714c41d
2 changed files with 10 additions and 5 deletions

View File

@ -419,12 +419,11 @@ func TestContext2Plan_moduleVar(t *testing.T) {
} }
} }
/* func TestContext2Plan_moduleVarComputed(t *testing.T) {
func TestContextPlan_moduleVarComputed(t *testing.T) {
m := testModule(t, "plan-module-var-computed") m := testModule(t, "plan-module-var-computed")
p := testProvider("aws") p := testProvider("aws")
p.DiffFn = testDiffFn p.DiffFn = testDiffFn
ctx := testContext(t, &ContextOpts{ ctx := testContext2(t, &ContextOpts{
Module: m, Module: m,
Providers: map[string]ResourceProviderFactory{ Providers: map[string]ResourceProviderFactory{
"aws": testProviderFuncFixed(p), "aws": testProviderFuncFixed(p),
@ -443,6 +442,7 @@ func TestContextPlan_moduleVarComputed(t *testing.T) {
} }
} }
/*
func TestContextPlan_nil(t *testing.T) { func TestContextPlan_nil(t *testing.T) {
m := testModule(t, "plan-nil") m := testModule(t, "plan-nil")
p := testProvider("aws") p := testProvider("aws")

View File

@ -2,6 +2,8 @@ package terraform
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/config"
) )
// EvalWriteOutput is an EvalNode implementation that writes the output // EvalWriteOutput is an EvalNode implementation that writes the output
@ -18,7 +20,7 @@ func (n *EvalWriteOutput) Args() ([]EvalNode, []EvalType) {
// TODO: test // TODO: test
func (n *EvalWriteOutput) Eval( func (n *EvalWriteOutput) Eval(
ctx EvalContext, args []interface{}) (interface{}, error) { ctx EvalContext, args []interface{}) (interface{}, error) {
config := args[0].(*ResourceConfig) cfg := args[0].(*ResourceConfig)
state, lock := ctx.State() state, lock := ctx.State()
if state == nil { if state == nil {
@ -36,10 +38,13 @@ func (n *EvalWriteOutput) Eval(
} }
// Get the value from the config // Get the value from the config
valueRaw, ok := config.Get("value") valueRaw, ok := cfg.Get("value")
if !ok { if !ok {
valueRaw = "" valueRaw = ""
} }
if cfg.IsComputed("value") {
valueRaw = config.UnknownVariableValue
}
// If it is a list of values, get the first one // If it is a list of values, get the first one
if list, ok := valueRaw.([]interface{}); ok { if list, ok := valueRaw.([]interface{}); ok {