Skip to content
This repository was archived by the owner on Jan 21, 2020. It is now read-only.

Commit f8ea16b

Browse files
YujiOshimaDavid Chung
authored andcommitted
refactor maas instance.go (#442)
Signed-off-by: Yuji Oshima <[email protected]>
1 parent bbb77bb commit f8ea16b

File tree

1 file changed

+41
-79
lines changed

1 file changed

+41
-79
lines changed

examples/instance/maas/instance.go

Lines changed: 41 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -80,40 +80,28 @@ func (m maasPlugin) deleteTagsFromNode(systemID string, tags []maas.MAASObject)
8080

8181
func (m maasPlugin) getTagsFromNode(systemID string) (map[string]string, error) {
8282
ret := map[string]string{}
83-
nodeListing := m.MaasObj.GetSubObject("nodes")
84-
listNodeObjects, err := nodeListing.CallGet("list", url.Values{})
83+
node, err := m.MaasObj.GetSubObject("nodes").GetSubObject(systemID).Get()
8584
if err != nil {
8685
return nil, err
8786
}
88-
listNodes, err := listNodeObjects.GetArray()
89-
for _, nodeObj := range listNodes {
90-
node, err := nodeObj.GetMAASObject()
87+
tags, err := node.GetMap()["tag_names"].GetArray()
88+
if err != nil {
89+
return nil, err
90+
}
91+
for _, tagObj := range tags {
92+
tag, err := tagObj.GetMAASObject()
9193
if err != nil {
9294
return nil, err
9395
}
94-
id, err := node.GetField("system_id")
95-
if id == systemID {
96-
tags, err := node.GetMap()["tag_names"].GetArray()
97-
if err != nil {
98-
return nil, err
99-
}
100-
for _, tagObj := range tags {
101-
tag, err := tagObj.GetMAASObject()
102-
if err != nil {
103-
return nil, err
104-
}
105-
tagname, err := tag.GetField("name")
106-
if err != nil {
107-
return nil, err
108-
}
109-
tagcomment, err := tag.GetField("comment")
110-
if err != nil {
111-
return nil, err
112-
}
113-
ret[tagname] = tagcomment
114-
}
115-
return ret, nil
96+
tagname, err := tag.GetField("name")
97+
if err != nil {
98+
return nil, err
99+
}
100+
tagcomment, err := tag.GetField("comment")
101+
if err != nil {
102+
return nil, err
116103
}
104+
ret[tagname] = tagcomment
117105
}
118106
return ret, nil
119107
}
@@ -234,78 +222,52 @@ func (m maasPlugin) Provision(spec instance.Spec) (*instance.ID, error) {
234222

235223
// Label labels the instance
236224
func (m maasPlugin) Label(id instance.ID, labels map[string]string) error {
237-
nodeListing := m.MaasObj.GetSubObject("nodes")
238-
listNodeObjects, err := nodeListing.CallGet("list", url.Values{})
225+
node, err := m.MaasObj.GetSubObject("nodes").GetSubObject(string(id)).Get()
239226
if err != nil {
240227
return err
241228
}
242-
listNodes, err := listNodeObjects.GetArray()
243-
for _, nodeObj := range listNodes {
244-
node, err := nodeObj.GetMAASObject()
229+
tagObjs, err := node.GetMap()["tag_names"].GetArray()
230+
if err != nil {
231+
return err
232+
}
233+
tags := make([]maas.MAASObject, len(tagObjs))
234+
for i, tagObj := range tagObjs {
235+
tag, err := tagObj.GetMAASObject()
245236
if err != nil {
246237
return err
247238
}
248-
systemID, err := node.GetField("system_id")
249-
if string(id) == systemID {
250-
tagObjs, err := node.GetMap()["tag_names"].GetArray()
251-
if err != nil {
252-
return err
253-
}
254-
tags := make([]maas.MAASObject, len(tagObjs))
255-
for i, tagObj := range tagObjs {
256-
tag, err := tagObj.GetMAASObject()
257-
if err != nil {
258-
return err
259-
}
260-
tags[i] = tag
261-
}
262-
263-
m.deleteTagsFromNode(systemID, tags)
264-
}
239+
tags[i] = tag
265240
}
241+
242+
m.deleteTagsFromNode(string(id), tags)
266243
return m.addTagsToNode(string(id), labels)
267244
}
268245

269246
// Destroy terminates an existing instance.
270247
func (m maasPlugin) Destroy(id instance.ID) error {
271-
fmt.Println("Destroying ", id)
272-
nodeListing := m.MaasObj.GetSubObject("nodes")
273-
listNodeObjects, err := nodeListing.CallGet("list", url.Values{})
248+
node, err := m.MaasObj.GetSubObject("nodes").GetSubObject(string(id)).Get()
274249
if err != nil {
275250
return err
276251
}
277-
listNodes, err := listNodeObjects.GetArray()
278-
for _, nodeObj := range listNodes {
279-
node, err := nodeObj.GetMAASObject()
252+
tagObjs, err := node.GetMap()["tag_names"].GetArray()
253+
tags := make([]maas.MAASObject, len(tagObjs))
254+
for i, tagObj := range tagObjs {
255+
tag, err := tagObj.GetMAASObject()
280256
if err != nil {
281257
return err
282258
}
283-
systemID, err := node.GetField("system_id")
284-
if err != nil {
259+
tags[i] = tag
260+
}
261+
m.deleteTagsFromNode(string(id), tags)
262+
if state, _ := node.GetField("substatus_name"); state == "Deploying" {
263+
params := url.Values{}
264+
if _, err = node.CallPost("abort_operation", params); err != nil {
285265
return err
286266
}
287-
if systemID == string(id) {
288-
tagObjs, err := node.GetMap()["tag_names"].GetArray()
289-
tags := make([]maas.MAASObject, len(tagObjs))
290-
for i, tagObj := range tagObjs {
291-
tag, err := tagObj.GetMAASObject()
292-
if err != nil {
293-
return err
294-
}
295-
tags[i] = tag
296-
}
297-
m.deleteTagsFromNode(string(id), tags)
298-
if state, _ := node.GetField("substatus_name"); state == "Deploying" {
299-
params := url.Values{}
300-
if _, err = node.CallPost("abort_operation", params); err != nil {
301-
return err
302-
}
303-
}
304-
params := url.Values{}
305-
if _, err = node.CallPost("release", params); err != nil {
306-
return err
307-
}
308-
}
267+
}
268+
params := url.Values{}
269+
if _, err = node.CallPost("release", params); err != nil {
270+
return err
309271
}
310272
files, err := ioutil.ReadDir(m.MaasfilesDir)
311273
if err != nil {

0 commit comments

Comments
 (0)