-
Notifications
You must be signed in to change notification settings - Fork 247
/
stack.go
executable file
·316 lines (270 loc) · 7.09 KB
/
stack.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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
package standard
import (
"github.com/denverdino/aliyungo/common"
)
type DeletionProtection string
const (
DeletionProtectionEnabled = DeletionProtection("Enabled")
DeletionProtectionDisabled = DeletionProtection("Disabled")
)
//https://help.aliyun.com/document_detail/28910.html?spm=5176.doc50083.6.580.b5wkQr
type CreateStackRequest struct {
RegionId common.Region
StackName string
DisableRollback bool
TemplateBody string
TemplateURL string
Parameters []Parameter
StackPolicyURL string
TimeoutInMinutes int
StackPolicyBody string
ClientToken string
NotificationURLs []string
DeletionProtection DeletionProtection
RamRoleName string
}
type CreateStackResponse struct {
StackId string
common.Response
}
type ListStackEventsRequest struct {
common.Pagination
RegionId common.Region
StackId string
Status []string
ResourceType []string
LogicalResourceId []string
}
type ListStackEventsResponse struct {
common.Response
common.PaginationResult
RegionId common.Region
Events []Event
}
type Event struct {
StackId string
Status string
StackName string
StatusReason string
EventId string
LogicalResourceId string
ResourceType string
PhysicalResourceId string
CreateTime string
}
func (client *Client) ListStackEvents(args *ListStackEventsRequest) (*ListStackEventsResponse, error) {
response := &ListStackEventsResponse{}
err := client.Invoke("ListStackEvents", args, response)
if err != nil {
return nil, err
}
return response, nil
}
func (client *Client) CreateStack(args *CreateStackRequest) (*CreateStackResponse, error) {
stack := &CreateStackResponse{}
err := client.Invoke("CreateStack", args, stack)
if err != nil {
return nil, err
}
return stack, nil
}
//https://help.aliyun.com/document_detail/28911.html?spm=5176.doc28910.6.581.etoi2Z
type DeleteStackRequest struct {
RegionId common.Region
StackId string
RetainAllResources bool
RetainResources []string
RamRoleName string
}
type DeleteStackResponse struct {
common.Response
}
func (client *Client) DeleteStack(req *DeleteStackRequest) (*DeleteStackResponse, error) {
response := &DeleteStackResponse{}
err := client.Invoke("DeleteStack", req, response)
if err != nil {
return nil, err
}
return response, nil
}
type GetStackRequest struct {
RegionId common.Region
StackId string
ClientToken string
}
type GetStackResponse struct {
CreateTime string
Description string
DisableRollback bool
NotificationURLs []string
Outputs []Output
ParentStackId string
RegionId common.Region
Status string
StackId string
StackName string
Parameters []Parameter
UpdateTime string
StatusReason string
TemplateDescription string
TimeoutInMinutes int
RequestId string
DeletionProtection DeletionProtection
DriftDetectionTime string
RamRoleName string
RootStackId string
StackDriftStatus string
StackType string
}
type Parameter struct {
ParameterKey string
ParameterValue string
}
type Output struct {
Description string
OutputKey string
OutputValue interface{}
}
func (client *Client) GetStack(req *GetStackRequest) (*GetStackResponse, error) {
response := &GetStackResponse{}
err := client.Invoke("GetStack", req, response)
if err != nil {
return nil, err
}
return response, nil
}
type ListStacksRequest struct {
RegionId common.Region
StackId string
Status []string
ParentStackId string
StackName []string
ShowNestedStack bool
Tag []Tag
common.Pagination
}
type ListStacksResponse struct {
common.PaginationResult
common.Response
Stacks []Stack
}
type Stack struct {
CreateTime string
DisableRollback bool
DriftDetectionTime string
ParentStackId string
RegionId common.Region
StackDriftStatus string
StackId string
StackName string
Status string
StatusReason string
TimeoutInMinutes int
UpdateTime string
}
type Tag struct {
Key string
Value string
}
func (client *Client) ListStacks(req *ListStacksRequest) (*ListStacksResponse, error) {
response := &ListStacksResponse{}
err := client.Invoke("ListStacks", req, response)
if err != nil {
return nil, err
}
return response, nil
}
type UpdateStackRequest struct {
Parameters []Parameter
RegionId string
StackId string
ClientToken string
StackPolicyDuringUpdateBody string
TimeoutInMinutes int
TemplateBody string
StackPolicyURL string
StackPolicyDuringUpdateURL string
StackPolicyBody string
UsePreviousParameters bool
DisableRollback bool
TemplateURL string
RamRoleName string
ReplacementOption string
}
type UpdateStackResponse struct {
StackId string
common.Response
}
func (client *Client) UpdateStack(req *UpdateStackRequest) (*UpdateStackResponse, error) {
response := &UpdateStackResponse{}
err := client.Invoke("UpdateStack", req, response)
if err != nil {
return nil, err
}
return response, nil
}
type GetStackResourceRequest struct {
StackId string
LogicalResourceId string
ClientToken string
ShowResourceAttributes bool
RegionId common.Region
}
type GetStackResourceResponse struct {
Status string
Description string
LogicalResourceId string
StackId string
StackName string
StatusReason string
PhysicalResourceId string
ResourceType string
CreateTime string
Metadata map[string]string
UpdateTime string
ResourceAttributes []ResourceAttribute
RequestId string
DriftDetectionTime string
ResourceDriftStatus string
}
type ResourceAttribute struct {
ResourceAttributeValue string
ResourceAttributeKey string
}
func (client *Client) GetStackResource(req *GetStackResourceRequest) (*GetStackResourceResponse, error) {
response := &GetStackResourceResponse{}
err := client.Invoke("GetStackResource", req, response)
if err != nil {
return nil, err
}
return response, nil
}
type ListStackResourcesRequest struct {
RegionId common.Region
StackId string
}
type ListStackResourcesResponse struct {
common.Response
Resources []Resource
}
type Resource struct {
CreateTime string
DriftDetectionTime string
LogicalResourceId string
PhysicalResourceId string
ResourceDriftStatus string
ResourceType string
StackId string
StackName string
Status string
StatusReason string
UpdateTime string
}
func (client *Client) ListStackResources(req *ListStackResourcesRequest) (*ListStackResourcesResponse, error) {
response := &ListStackResourcesResponse{}
err := client.Invoke("ListStackResources", req, response)
if err != nil {
return nil, err
}
return response, nil
}