command: closer to compiling
This commit is contained in:
parent
c5d6df692d
commit
cdad3036ae
|
@ -182,14 +182,18 @@ func (c *ApplyCommand) Run(args []string) int {
|
|||
}
|
||||
|
||||
// If we have outputs, then output those at the end.
|
||||
if state != nil && len(state.Outputs) > 0 {
|
||||
var outputs map[string]string
|
||||
if state != nil {
|
||||
outputs = state.RootModule().Outputs
|
||||
}
|
||||
if len(outputs) > 0 {
|
||||
outputBuf := new(bytes.Buffer)
|
||||
outputBuf.WriteString("[reset][bold][green]\nOutputs:\n\n")
|
||||
|
||||
// Output the outputs in alphabetical order
|
||||
keyLen := 0
|
||||
keys := make([]string, 0, len(state.Outputs))
|
||||
for key, _ := range state.Outputs {
|
||||
keys := make([]string, 0, len(outputs))
|
||||
for key, _ := range outputs {
|
||||
keys = append(keys, key)
|
||||
if len(key) > keyLen {
|
||||
keyLen = len(key)
|
||||
|
@ -198,7 +202,7 @@ func (c *ApplyCommand) Run(args []string) int {
|
|||
sort.Strings(keys)
|
||||
|
||||
for _, k := range keys {
|
||||
v := state.Outputs[k]
|
||||
v := outputs[k]
|
||||
|
||||
outputBuf.WriteString(fmt.Sprintf(
|
||||
" %s%s = %s\n",
|
||||
|
|
|
@ -140,8 +140,9 @@ func TestApply_error(t *testing.T) {
|
|||
var lock sync.Mutex
|
||||
errored := false
|
||||
p.ApplyFn = func(
|
||||
s *terraform.ResourceState,
|
||||
d *terraform.ResourceDiff) (*terraform.ResourceState, error) {
|
||||
info *terraform.InstanceInfo,
|
||||
s *terraform.InstanceState,
|
||||
d *terraform.ResourceDiff) (*terraform.InstanceState, error) {
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
|
||||
|
@ -150,10 +151,11 @@ func TestApply_error(t *testing.T) {
|
|||
return nil, fmt.Errorf("error")
|
||||
}
|
||||
|
||||
return &terraform.ResourceState{ID: "foo"}, nil
|
||||
return &terraform.InstanceState{ID: "foo"}, nil
|
||||
}
|
||||
p.DiffFn = func(
|
||||
*terraform.ResourceState,
|
||||
*terraform.InstanceInfo,
|
||||
*terraform.InstanceState,
|
||||
*terraform.ResourceConfig) (*terraform.ResourceDiff, error) {
|
||||
return &terraform.ResourceDiff{
|
||||
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||
|
@ -189,7 +191,7 @@ func TestApply_error(t *testing.T) {
|
|||
if state == nil {
|
||||
t.Fatal("state should not be nil")
|
||||
}
|
||||
if len(state.Resources) == 0 {
|
||||
if len(state.RootModule().Resources) == 0 {
|
||||
t.Fatal("no resources in state")
|
||||
}
|
||||
}
|
||||
|
@ -367,10 +369,17 @@ func TestApply_planVars(t *testing.T) {
|
|||
|
||||
func TestApply_refresh(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -453,7 +462,8 @@ func TestApply_shutdown(t *testing.T) {
|
|||
}
|
||||
|
||||
p.DiffFn = func(
|
||||
*terraform.ResourceState,
|
||||
*terraform.InstanceInfo,
|
||||
*terraform.InstanceState,
|
||||
*terraform.ResourceConfig) (*terraform.ResourceDiff, error) {
|
||||
return &terraform.ResourceDiff{
|
||||
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||
|
@ -464,15 +474,16 @@ func TestApply_shutdown(t *testing.T) {
|
|||
}, nil
|
||||
}
|
||||
p.ApplyFn = func(
|
||||
*terraform.ResourceState,
|
||||
*terraform.ResourceDiff) (*terraform.ResourceState, error) {
|
||||
*terraform.InstanceInfo,
|
||||
*terraform.InstanceState,
|
||||
*terraform.ResourceDiff) (*terraform.InstanceState, error) {
|
||||
if !stopped {
|
||||
stopped = true
|
||||
close(stopCh)
|
||||
<-stopReplyCh
|
||||
}
|
||||
|
||||
return &terraform.ResourceState{
|
||||
return &terraform.InstanceState{
|
||||
ID: "foo",
|
||||
Attributes: map[string]string{
|
||||
"ami": "2",
|
||||
|
@ -518,18 +529,24 @@ func TestApply_shutdown(t *testing.T) {
|
|||
t.Fatal("state should not be nil")
|
||||
}
|
||||
|
||||
if len(state.Resources) != 1 {
|
||||
t.Fatalf("bad: %d", len(state.Resources))
|
||||
if len(state.RootModule().Resources) != 1 {
|
||||
t.Fatalf("bad: %d", len(state.RootModule().Resources))
|
||||
}
|
||||
}
|
||||
|
||||
func TestApply_state(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
ConnInfo: make(map[string]string),
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -563,7 +580,7 @@ func TestApply_state(t *testing.T) {
|
|||
}
|
||||
|
||||
// Verify that the provider was called with the existing state
|
||||
expectedState := originalState.Resources["test_instance.foo"]
|
||||
expectedState := originalState.RootModule().Resources["test_instance.foo"]
|
||||
if !reflect.DeepEqual(p.DiffState, expectedState) {
|
||||
t.Fatalf("bad: %#v", p.DiffState)
|
||||
}
|
||||
|
@ -604,7 +621,7 @@ func TestApply_state(t *testing.T) {
|
|||
}
|
||||
|
||||
// nil out the ConnInfo since that should not be restored
|
||||
originalState.Resources["test_instance.foo"].ConnInfo = nil
|
||||
originalState.RootModule().Resources["test_instance.foo"].Primary.Ephemeral.ConnInfo = nil
|
||||
|
||||
if !reflect.DeepEqual(backupState, originalState) {
|
||||
t.Fatalf("bad: %#v", backupState)
|
||||
|
@ -644,7 +661,8 @@ func TestApply_vars(t *testing.T) {
|
|||
|
||||
actual := ""
|
||||
p.DiffFn = func(
|
||||
s *terraform.ResourceState,
|
||||
info *terraform.InstanceInfo,
|
||||
s *terraform.InstanceState,
|
||||
c *terraform.ResourceConfig) (*terraform.ResourceDiff, error) {
|
||||
if v, ok := c.Config["value"]; ok {
|
||||
actual = v.(string)
|
||||
|
@ -686,7 +704,8 @@ func TestApply_varFile(t *testing.T) {
|
|||
|
||||
actual := ""
|
||||
p.DiffFn = func(
|
||||
s *terraform.ResourceState,
|
||||
info *terraform.InstanceInfo,
|
||||
s *terraform.InstanceState,
|
||||
c *terraform.ResourceConfig) (*terraform.ResourceDiff, error) {
|
||||
if v, ok := c.Config["value"]; ok {
|
||||
actual = v.(string)
|
||||
|
@ -738,7 +757,8 @@ func TestApply_varFileDefault(t *testing.T) {
|
|||
|
||||
actual := ""
|
||||
p.DiffFn = func(
|
||||
s *terraform.ResourceState,
|
||||
info *terraform.InstanceInfo,
|
||||
s *terraform.InstanceState,
|
||||
c *terraform.ResourceConfig) (*terraform.ResourceDiff, error) {
|
||||
if v, ok := c.Config["value"]; ok {
|
||||
actual = v.(string)
|
||||
|
@ -762,10 +782,17 @@ func TestApply_varFileDefault(t *testing.T) {
|
|||
|
||||
func TestApply_backup(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -831,8 +858,8 @@ func TestApply_backup(t *testing.T) {
|
|||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
actual := backupState.Resources["test_instance.foo"]
|
||||
expected := originalState.Resources["test_instance.foo"]
|
||||
actual := backupState.RootModule().Resources["test_instance.foo"]
|
||||
expected := originalState.RootModule().Resources["test_instance.foo"]
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Fatalf("bad: %#v %#v", actual, expected)
|
||||
}
|
||||
|
@ -840,11 +867,17 @@ func TestApply_backup(t *testing.T) {
|
|||
|
||||
func TestApply_disableBackup(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
ConnInfo: make(map[string]string),
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -879,7 +912,7 @@ func TestApply_disableBackup(t *testing.T) {
|
|||
}
|
||||
|
||||
// Verify that the provider was called with the existing state
|
||||
expectedState := originalState.Resources["test_instance.foo"]
|
||||
expectedState := originalState.RootModule().Resources["test_instance.foo"]
|
||||
if !reflect.DeepEqual(p.DiffState, expectedState) {
|
||||
t.Fatalf("bad: %#v", p.DiffState)
|
||||
}
|
||||
|
|
|
@ -67,6 +67,25 @@ func testReadPlan(t *testing.T, path string) *terraform.Plan {
|
|||
return p
|
||||
}
|
||||
|
||||
// testState returns a test State structure that we use for a lot of tests.
|
||||
func testState() *terraform.State {
|
||||
return &terraform.State{
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func testStateFile(t *testing.T, s *terraform.State) string {
|
||||
path := testTempFile(t)
|
||||
|
||||
|
@ -87,7 +106,8 @@ func testProvider() *terraform.MockResourceProvider {
|
|||
p := new(terraform.MockResourceProvider)
|
||||
p.DiffReturn = &terraform.ResourceDiff{}
|
||||
p.RefreshFn = func(
|
||||
s *terraform.ResourceState) (*terraform.ResourceState, error) {
|
||||
info *terraform.InstanceInfo,
|
||||
s *terraform.InstanceState) (*terraform.InstanceState, error) {
|
||||
return s, nil
|
||||
}
|
||||
p.ResourcesReturn = []terraform.ResourceType{
|
||||
|
|
|
@ -16,42 +16,49 @@ func FormatState(s *terraform.State, c *colorstring.Colorize) string {
|
|||
panic("colorize not given")
|
||||
}
|
||||
|
||||
if len(s.Resources) == 0 {
|
||||
if len(s.Modules) == 0 {
|
||||
return "The state file is empty. No resources are represented."
|
||||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
var buf bytes.Buffer
|
||||
for _, m := range s.Modules {
|
||||
formatStateModule(&buf, m, c)
|
||||
}
|
||||
|
||||
return c.Color(strings.TrimSpace(buf.String()))
|
||||
}
|
||||
|
||||
func formatStateModule(buf *bytes.Buffer, m *terraform.ModuleState, c *colorstring.Colorize) {
|
||||
buf.WriteString("[reset]")
|
||||
|
||||
// First get the names of all the resources so we can show them
|
||||
// in alphabetical order.
|
||||
names := make([]string, 0, len(s.Resources))
|
||||
for name, _ := range s.Resources {
|
||||
names := make([]string, 0, len(m.Resources))
|
||||
for name, _ := range m.Resources {
|
||||
names = append(names, name)
|
||||
}
|
||||
sort.Strings(names)
|
||||
|
||||
// Go through each resource and begin building up the output.
|
||||
for _, k := range names {
|
||||
rs := s.Resources[k]
|
||||
id := rs.ID
|
||||
rs := m.Resources[k]
|
||||
is := rs.Primary
|
||||
id := is.ID
|
||||
if id == "" {
|
||||
id = "<not created>"
|
||||
}
|
||||
|
||||
taintStr := ""
|
||||
if s.Tainted != nil {
|
||||
if _, ok := s.Tainted[k]; ok {
|
||||
taintStr = " (tainted)"
|
||||
}
|
||||
if len(rs.Tainted) > 0 {
|
||||
taintStr = " (tainted)"
|
||||
}
|
||||
|
||||
buf.WriteString(fmt.Sprintf("%s:%s\n", k, taintStr))
|
||||
buf.WriteString(fmt.Sprintf(" id = %s\n", id))
|
||||
|
||||
// Sort the attributes
|
||||
attrKeys := make([]string, 0, len(rs.Attributes))
|
||||
for ak, _ := range rs.Attributes {
|
||||
attrKeys := make([]string, 0, len(is.Attributes))
|
||||
for ak, _ := range is.Attributes {
|
||||
// Skip the id attribute since we just show the id directly
|
||||
if ak == "id" {
|
||||
continue
|
||||
|
@ -63,27 +70,25 @@ func FormatState(s *terraform.State, c *colorstring.Colorize) string {
|
|||
|
||||
// Output each attribute
|
||||
for _, ak := range attrKeys {
|
||||
av := rs.Attributes[ak]
|
||||
av := is.Attributes[ak]
|
||||
buf.WriteString(fmt.Sprintf(" %s = %s\n", ak, av))
|
||||
}
|
||||
}
|
||||
|
||||
if len(s.Outputs) > 0 {
|
||||
if len(m.Outputs) > 0 {
|
||||
buf.WriteString("\nOutputs:\n\n")
|
||||
|
||||
// Sort the outputs
|
||||
ks := make([]string, 0, len(s.Outputs))
|
||||
for k, _ := range s.Outputs {
|
||||
ks := make([]string, 0, len(m.Outputs))
|
||||
for k, _ := range m.Outputs {
|
||||
ks = append(ks, k)
|
||||
}
|
||||
sort.Strings(ks)
|
||||
|
||||
// Output each output k/v pair
|
||||
for _, k := range ks {
|
||||
v := s.Outputs[k]
|
||||
v := m.Outputs[k]
|
||||
buf.WriteString(fmt.Sprintf("%s = %s\n", k, v))
|
||||
}
|
||||
}
|
||||
|
||||
return c.Color(strings.TrimSpace(buf.String()))
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ func (h *CountHook) Reset() {
|
|||
|
||||
func (h *CountHook) PreApply(
|
||||
id string,
|
||||
s *terraform.ResourceState,
|
||||
s *terraform.InstanceState,
|
||||
d *terraform.ResourceDiff) (terraform.HookAction, error) {
|
||||
h.Lock()
|
||||
defer h.Unlock()
|
||||
|
@ -62,7 +62,7 @@ func (h *CountHook) PreApply(
|
|||
|
||||
func (h *CountHook) PostApply(
|
||||
id string,
|
||||
s *terraform.ResourceState,
|
||||
s *terraform.InstanceState,
|
||||
e error) (terraform.HookAction, error) {
|
||||
h.Lock()
|
||||
defer h.Unlock()
|
||||
|
|
|
@ -35,7 +35,7 @@ const (
|
|||
|
||||
func (h *UiHook) PreApply(
|
||||
id string,
|
||||
s *terraform.ResourceState,
|
||||
s *terraform.InstanceState,
|
||||
d *terraform.ResourceDiff) (terraform.HookAction, error) {
|
||||
h.once.Do(h.init)
|
||||
|
||||
|
@ -114,7 +114,7 @@ func (h *UiHook) PreApply(
|
|||
|
||||
func (h *UiHook) PostApply(
|
||||
id string,
|
||||
s *terraform.ResourceState,
|
||||
s *terraform.InstanceState,
|
||||
applyerr error) (terraform.HookAction, error) {
|
||||
h.l.Lock()
|
||||
op := h.resources[id]
|
||||
|
@ -145,7 +145,7 @@ func (h *UiHook) PostApply(
|
|||
}
|
||||
|
||||
func (h *UiHook) PreDiff(
|
||||
id string, s *terraform.ResourceState) (terraform.HookAction, error) {
|
||||
id string, s *terraform.InstanceState) (terraform.HookAction, error) {
|
||||
return terraform.HookActionContinue, nil
|
||||
}
|
||||
|
||||
|
@ -157,7 +157,7 @@ func (h *UiHook) PreProvision(id, provId string) (terraform.HookAction, error) {
|
|||
}
|
||||
|
||||
func (h *UiHook) PreRefresh(
|
||||
id string, s *terraform.ResourceState) (terraform.HookAction, error) {
|
||||
id string, s *terraform.InstanceState) (terraform.HookAction, error) {
|
||||
h.once.Do(h.init)
|
||||
|
||||
h.ui.Output(h.Colorize.Color(fmt.Sprintf(
|
||||
|
|
|
@ -50,14 +50,14 @@ func (c *OutputCommand) Run(args []string) int {
|
|||
return 1
|
||||
}
|
||||
|
||||
if len(state.Outputs) == 0 {
|
||||
if len(state.RootModule().Outputs) == 0 {
|
||||
c.Ui.Error(fmt.Sprintf(
|
||||
"The state file has no outputs defined. Define an output\n" +
|
||||
"in your configuration with the `output` directive and re-run\n" +
|
||||
"`terraform apply` for it to become available."))
|
||||
return 1
|
||||
}
|
||||
v, ok := state.Outputs[name]
|
||||
v, ok := state.RootModule().Outputs[name]
|
||||
if !ok {
|
||||
c.Ui.Error(fmt.Sprintf(
|
||||
"The output variable requested could not be found in the state\n" +
|
||||
|
|
|
@ -13,8 +13,13 @@ import (
|
|||
|
||||
func TestOutput(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Outputs: map[string]string{
|
||||
"foo": "bar",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Outputs: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -44,8 +49,13 @@ func TestOutput(t *testing.T) {
|
|||
|
||||
func TestOutput_badVar(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Outputs: map[string]string{
|
||||
"foo": "bar",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Outputs: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -70,8 +80,13 @@ func TestOutput_badVar(t *testing.T) {
|
|||
|
||||
func TestOutput_blank(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Outputs: map[string]string{
|
||||
"foo": "bar",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Outputs: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -129,7 +144,12 @@ func TestOutput_noArgs(t *testing.T) {
|
|||
|
||||
func TestOutput_noVars(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Outputs: map[string]string{},
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Outputs: map[string]string{},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
statePath := testStateFile(t, originalState)
|
||||
|
@ -153,8 +173,13 @@ func TestOutput_noVars(t *testing.T) {
|
|||
|
||||
func TestOutput_stateDefault(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Outputs: map[string]string{
|
||||
"foo": "bar",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Outputs: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -38,10 +38,17 @@ func TestPlan(t *testing.T) {
|
|||
|
||||
func TestPlan_destroy(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -198,10 +205,17 @@ func TestPlan_state(t *testing.T) {
|
|||
defer os.Remove(tf.Name())
|
||||
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -230,7 +244,7 @@ func TestPlan_state(t *testing.T) {
|
|||
}
|
||||
|
||||
// Verify that the provider was called with the existing state
|
||||
expectedState := originalState.Resources["test_instance.foo"]
|
||||
expectedState := originalState.RootModule().Resources["test_instance.foo"]
|
||||
if !reflect.DeepEqual(p.DiffState, expectedState) {
|
||||
t.Fatalf("bad: %#v", p.DiffState)
|
||||
}
|
||||
|
@ -238,10 +252,17 @@ func TestPlan_state(t *testing.T) {
|
|||
|
||||
func TestPlan_stateDefault(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -291,7 +312,7 @@ func TestPlan_stateDefault(t *testing.T) {
|
|||
}
|
||||
|
||||
// Verify that the provider was called with the existing state
|
||||
expectedState := originalState.Resources["test_instance.foo"]
|
||||
expectedState := originalState.RootModule().Resources["test_instance.foo"]
|
||||
if !reflect.DeepEqual(p.DiffState, expectedState) {
|
||||
t.Fatalf("bad: %#v", p.DiffState)
|
||||
}
|
||||
|
@ -309,7 +330,8 @@ func TestPlan_vars(t *testing.T) {
|
|||
|
||||
actual := ""
|
||||
p.DiffFn = func(
|
||||
s *terraform.ResourceState,
|
||||
info *terraform.InstanceInfo,
|
||||
s *terraform.InstanceState,
|
||||
c *terraform.ResourceConfig) (*terraform.ResourceDiff, error) {
|
||||
if v, ok := c.Config["value"]; ok {
|
||||
actual = v.(string)
|
||||
|
@ -348,7 +370,8 @@ func TestPlan_varFile(t *testing.T) {
|
|||
|
||||
actual := ""
|
||||
p.DiffFn = func(
|
||||
s *terraform.ResourceState,
|
||||
info *terraform.InstanceInfo,
|
||||
s *terraform.InstanceState,
|
||||
c *terraform.ResourceConfig) (*terraform.ResourceDiff, error) {
|
||||
if v, ok := c.Config["value"]; ok {
|
||||
actual = v.(string)
|
||||
|
@ -397,7 +420,8 @@ func TestPlan_varFileDefault(t *testing.T) {
|
|||
|
||||
actual := ""
|
||||
p.DiffFn = func(
|
||||
s *terraform.ResourceState,
|
||||
info *terraform.InstanceInfo,
|
||||
s *terraform.InstanceState,
|
||||
c *terraform.ResourceConfig) (*terraform.ResourceDiff, error) {
|
||||
if v, ok := c.Config["value"]; ok {
|
||||
actual = v.(string)
|
||||
|
@ -438,10 +462,17 @@ func TestPlan_backup(t *testing.T) {
|
|||
defer os.Remove(backupPath)
|
||||
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -471,7 +502,7 @@ func TestPlan_backup(t *testing.T) {
|
|||
}
|
||||
|
||||
// Verify that the provider was called with the existing state
|
||||
expectedState := originalState.Resources["test_instance.foo"]
|
||||
expectedState := originalState.RootModule().Resources["test_instance.foo"]
|
||||
if !reflect.DeepEqual(p.DiffState, expectedState) {
|
||||
t.Fatalf("bad: %#v", p.DiffState)
|
||||
}
|
||||
|
@ -503,10 +534,17 @@ func TestPlan_disableBackup(t *testing.T) {
|
|||
defer os.Remove(tf.Name())
|
||||
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
Modules: []*terraform.ModuleState{
|
||||
&terraform.ModuleState{
|
||||
Path: []string{"root"},
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
Type: "test_instance",
|
||||
Primary: &terraform.InstanceState{
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -536,7 +574,7 @@ func TestPlan_disableBackup(t *testing.T) {
|
|||
}
|
||||
|
||||
// Verify that the provider was called with the existing state
|
||||
expectedState := originalState.Resources["test_instance.foo"]
|
||||
expectedState := originalState.RootModule().Resources["test_instance.foo"]
|
||||
if !reflect.DeepEqual(p.DiffState, expectedState) {
|
||||
t.Fatalf("bad: %#v", p.DiffState)
|
||||
}
|
||||
|
|
|
@ -12,14 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func TestRefresh(t *testing.T) {
|
||||
state := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
state := testState()
|
||||
statePath := testStateFile(t, state)
|
||||
|
||||
p := testProvider()
|
||||
|
@ -32,7 +25,7 @@ func TestRefresh(t *testing.T) {
|
|||
}
|
||||
|
||||
p.RefreshFn = nil
|
||||
p.RefreshReturn = &terraform.ResourceState{ID: "yes"}
|
||||
p.RefreshReturn = &terraform.InstanceState{ID: "yes"}
|
||||
|
||||
args := []string{
|
||||
"-state", statePath,
|
||||
|
@ -57,7 +50,7 @@ func TestRefresh(t *testing.T) {
|
|||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
actual := newState.Resources["test_instance.foo"]
|
||||
actual := newState.RootModule().Resources["test_instance.foo"]
|
||||
expected := p.RefreshReturn
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Fatalf("bad: %#v", actual)
|
||||
|
@ -93,14 +86,7 @@ func TestRefresh_cwd(t *testing.T) {
|
|||
}
|
||||
defer os.Chdir(cwd)
|
||||
|
||||
state := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
state := testState()
|
||||
statePath := testStateFile(t, state)
|
||||
|
||||
p := testProvider()
|
||||
|
@ -113,7 +99,7 @@ func TestRefresh_cwd(t *testing.T) {
|
|||
}
|
||||
|
||||
p.RefreshFn = nil
|
||||
p.RefreshReturn = &terraform.ResourceState{ID: "yes"}
|
||||
p.RefreshReturn = &terraform.InstanceState{ID: "yes"}
|
||||
|
||||
args := []string{
|
||||
"-state", statePath,
|
||||
|
@ -137,7 +123,7 @@ func TestRefresh_cwd(t *testing.T) {
|
|||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
actual := newState.Resources["test_instance.foo"]
|
||||
actual := newState.RootModule().Resources["test_instance.foo"]
|
||||
expected := p.RefreshReturn
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Fatalf("bad: %#v", actual)
|
||||
|
@ -145,14 +131,7 @@ func TestRefresh_cwd(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRefresh_defaultState(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
originalState := testState()
|
||||
|
||||
// Write the state file in a temporary directory with the
|
||||
// default filename.
|
||||
|
@ -192,7 +171,7 @@ func TestRefresh_defaultState(t *testing.T) {
|
|||
}
|
||||
|
||||
p.RefreshFn = nil
|
||||
p.RefreshReturn = &terraform.ResourceState{ID: "yes"}
|
||||
p.RefreshReturn = &terraform.InstanceState{ID: "yes"}
|
||||
|
||||
args := []string{
|
||||
testFixturePath("refresh"),
|
||||
|
@ -216,7 +195,7 @@ func TestRefresh_defaultState(t *testing.T) {
|
|||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
actual := newState.Resources["test_instance.foo"]
|
||||
actual := newState.RootModule().Resources["test_instance.foo"].Primary
|
||||
expected := p.RefreshReturn
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Fatalf("bad: %#v", actual)
|
||||
|
@ -233,22 +212,15 @@ func TestRefresh_defaultState(t *testing.T) {
|
|||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
actual = backupState.Resources["test_instance.foo"]
|
||||
expected = originalState.Resources["test_instance.foo"]
|
||||
actual = backupState.RootModule().Resources["test_instance.foo"].Primary
|
||||
expected = originalState.RootModule().Resources["test_instance.foo"].Primary
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Fatalf("bad: %#v", actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRefresh_outPath(t *testing.T) {
|
||||
state := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
state := testState()
|
||||
statePath := testStateFile(t, state)
|
||||
|
||||
// Output path
|
||||
|
@ -270,7 +242,7 @@ func TestRefresh_outPath(t *testing.T) {
|
|||
}
|
||||
|
||||
p.RefreshFn = nil
|
||||
p.RefreshReturn = &terraform.ResourceState{ID: "yes"}
|
||||
p.RefreshReturn = &terraform.InstanceState{ID: "yes"}
|
||||
|
||||
args := []string{
|
||||
"-state", statePath,
|
||||
|
@ -307,7 +279,7 @@ func TestRefresh_outPath(t *testing.T) {
|
|||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
actual := newState.Resources["test_instance.foo"]
|
||||
actual := newState.RootModule().Resources["test_instance.foo"].Primary
|
||||
expected := p.RefreshReturn
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Fatalf("bad: %#v", actual)
|
||||
|
@ -330,14 +302,7 @@ func TestRefresh_outPath(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRefresh_var(t *testing.T) {
|
||||
state := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
state := testState()
|
||||
statePath := testStateFile(t, state)
|
||||
|
||||
p := testProvider()
|
||||
|
@ -367,14 +332,7 @@ func TestRefresh_var(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRefresh_varFile(t *testing.T) {
|
||||
state := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
state := testState()
|
||||
statePath := testStateFile(t, state)
|
||||
|
||||
p := testProvider()
|
||||
|
@ -409,14 +367,7 @@ func TestRefresh_varFile(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRefresh_varFileDefault(t *testing.T) {
|
||||
state := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
state := testState()
|
||||
statePath := testStateFile(t, state)
|
||||
|
||||
p := testProvider()
|
||||
|
@ -460,14 +411,7 @@ func TestRefresh_varFileDefault(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRefresh_backup(t *testing.T) {
|
||||
state := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
state := testState()
|
||||
statePath := testStateFile(t, state)
|
||||
|
||||
// Output path
|
||||
|
@ -498,7 +442,7 @@ func TestRefresh_backup(t *testing.T) {
|
|||
}
|
||||
|
||||
p.RefreshFn = nil
|
||||
p.RefreshReturn = &terraform.ResourceState{ID: "yes"}
|
||||
p.RefreshReturn = &terraform.InstanceState{ID: "yes"}
|
||||
|
||||
args := []string{
|
||||
"-state", statePath,
|
||||
|
@ -536,7 +480,7 @@ func TestRefresh_backup(t *testing.T) {
|
|||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
actual := newState.Resources["test_instance.foo"]
|
||||
actual := newState.RootModule().Resources["test_instance.foo"].Primary
|
||||
expected := p.RefreshReturn
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Fatalf("bad: %#v", actual)
|
||||
|
@ -559,14 +503,7 @@ func TestRefresh_backup(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRefresh_disableBackup(t *testing.T) {
|
||||
state := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
state := testState()
|
||||
statePath := testStateFile(t, state)
|
||||
|
||||
// Output path
|
||||
|
@ -588,7 +525,7 @@ func TestRefresh_disableBackup(t *testing.T) {
|
|||
}
|
||||
|
||||
p.RefreshFn = nil
|
||||
p.RefreshReturn = &terraform.ResourceState{ID: "yes"}
|
||||
p.RefreshReturn = &terraform.InstanceState{ID: "yes"}
|
||||
|
||||
args := []string{
|
||||
"-state", statePath,
|
||||
|
@ -626,7 +563,7 @@ func TestRefresh_disableBackup(t *testing.T) {
|
|||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
actual := newState.Resources["test_instance.foo"]
|
||||
actual := newState.RootModule().Resources["test_instance.foo"].Primary
|
||||
expected := p.RefreshReturn
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Fatalf("bad: %#v", actual)
|
||||
|
|
|
@ -63,15 +63,7 @@ func TestShow_plan(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestShow_state(t *testing.T) {
|
||||
originalState := &terraform.State{
|
||||
Resources: map[string]*terraform.ResourceState{
|
||||
"test_instance.foo": &terraform.ResourceState{
|
||||
ID: "bar",
|
||||
Type: "test_instance",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
originalState := testState()
|
||||
statePath := testStateFile(t, originalState)
|
||||
|
||||
ui := new(cli.MockUi)
|
||||
|
|
Loading…
Reference in New Issue