forked from cloudfoundry/bosh-bootloader
-
Notifications
You must be signed in to change notification settings - Fork 2
/
stack_manager.go
123 lines (102 loc) · 2.9 KB
/
stack_manager.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package fakes
import (
"time"
"github.com/cloudfoundry/bosh-bootloader/aws/cloudformation"
"github.com/cloudfoundry/bosh-bootloader/aws/cloudformation/templates"
)
type StackManager struct {
DescribeCall struct {
CallCount int
Receives struct {
StackName string
}
Returns struct {
Stack cloudformation.Stack
Error error
}
Stub func(string) (cloudformation.Stack, error)
}
CreateOrUpdateCall struct {
Receives struct {
StackName string
Template templates.Template
Tags cloudformation.Tags
}
Returns struct {
Error error
}
}
UpdateCall struct {
Receives struct {
StackName string
Template templates.Template
Tags cloudformation.Tags
}
Returns struct {
Error error
}
}
WaitForCompletionCall struct {
Receives struct {
StackName string
SleepInterval time.Duration
Action string
}
Returns struct {
Error error
}
}
DeleteCall struct {
Receives struct {
StackName string
}
Returns struct {
Error error
}
}
GetPhysicalIDForResourceCall struct {
Receives struct {
StackName string
LogicalResourceID string
}
Returns struct {
PhysicalResourceID string
Error error
}
}
}
func (m *StackManager) CreateOrUpdate(stackName string, template templates.Template, tags cloudformation.Tags) error {
m.CreateOrUpdateCall.Receives.StackName = stackName
m.CreateOrUpdateCall.Receives.Template = template
m.CreateOrUpdateCall.Receives.Tags = tags
return m.CreateOrUpdateCall.Returns.Error
}
func (m *StackManager) Update(stackName string, template templates.Template, tags cloudformation.Tags) error {
m.UpdateCall.Receives.StackName = stackName
m.UpdateCall.Receives.Template = template
m.UpdateCall.Receives.Tags = tags
return m.UpdateCall.Returns.Error
}
func (m *StackManager) WaitForCompletion(stackName string, sleepInterval time.Duration, action string) error {
m.WaitForCompletionCall.Receives.StackName = stackName
m.WaitForCompletionCall.Receives.SleepInterval = sleepInterval
m.WaitForCompletionCall.Receives.Action = action
return m.WaitForCompletionCall.Returns.Error
}
func (m *StackManager) Describe(stackName string) (cloudformation.Stack, error) {
m.DescribeCall.CallCount++
m.DescribeCall.Receives.StackName = stackName
if m.DescribeCall.Stub != nil {
return m.DescribeCall.Stub(stackName)
}
return m.DescribeCall.Returns.Stack, m.DescribeCall.Returns.Error
}
func (m *StackManager) Delete(stackName string) error {
m.DeleteCall.Receives.StackName = stackName
return m.DeleteCall.Returns.Error
}
func (m *StackManager) GetPhysicalIDForResource(stackName string, logicalResourceID string) (string, error) {
m.GetPhysicalIDForResourceCall.Receives.StackName = stackName
m.GetPhysicalIDForResourceCall.Receives.LogicalResourceID = logicalResourceID
return m.GetPhysicalIDForResourceCall.Returns.PhysicalResourceID, m.GetPhysicalIDForResourceCall.Returns.Error
}