Skip to content
This repository was archived by the owner on Feb 10, 2021. It is now read-only.

Commit f9a0529

Browse files
committed
Fix 400 response attaching non-available volume
It's an error to attempt volume attachment before it's finished being created (in OpenStack). This problem wasn't noticed because volumes were always created fast enough previously. Fix this by examining the volume status, and not attempting attachment until it's "available". Also fix a bug when volume attachment fails, ``destroy()`` would leak it. This happens because it only deleted previously attached volumes. Fix this by searching all volumes, and matching the server-id in it's name - volumes always created this way. If matched, include it in the to-be-deleted list. Lastly, do not kill the ``previous_responses`` cache upon ``OpenstackREST()`` init. This makes debugging awful difficult since the default behavior is to try and delete partially created resources. Signed-off-by: Chris Evich <[email protected]>
1 parent 469209f commit f9a0529

File tree

3 files changed

+240
-243
lines changed

3 files changed

+240
-243
lines changed

.test_openstack_TestDestroy.test_found.json

Lines changed: 45 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -4,176 +4,128 @@
44
"response": {
55
"servers": [
66
{
7-
"id": "1d14de48-3ab0-4a0c-8c9f-65f00085d4ec",
7+
"id": "deleteme",
88
"name": "deleteme"
9-
},
10-
{
11-
"id": "c80f2e0a-09b7-4ad0-ac34-e40a5cfd418a",
12-
"name": "troublemaker"
139
}
1410
]
1511
},
16-
"sequence_number": 5,
12+
"sequence_number": 0,
1713
"status_code": 200
1814
},
1915
{
2016
"GET": "http://1.2.3.4/servers",
2117
"response": {
2218
"servers": [
2319
{
24-
"id": "1d14de48-3ab0-4a0c-8c9f-65f00085d4ec",
20+
"id": "deleteme",
2521
"name": "deleteme"
26-
},
27-
{
28-
"id": "c80f2e0a-09b7-4ad0-ac34-e40a5cfd418a",
29-
"name": "troublemaker"
3022
}
3123
]
3224
},
3325
"sequence_number": 10,
3426
"status_code": 200
3527
},
3628
{
37-
"GET": "http://1.2.3.4/servers/1d14de48-3ab0-4a0c-8c9f-65f00085d4ec",
29+
"GET": "http://1.2.3.4/servers/deleteme",
3830
"response": {
3931
"server": {
4032
"OS-EXT-STS:power_state": 1,
4133
"OS-EXT-STS:vm_state": "active",
42-
"addresses": {
43-
"network_name": [
44-
{
45-
"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:1b:51:76",
46-
"OS-EXT-IPS:type": "fixed",
47-
"addr": "5.4.3.2",
48-
"version": 4
49-
},
34+
"accessIPv4": "",
35+
"accessIPv6": "",
36+
"config_drive": "",
37+
"flavor": {
38+
"id": "3",
39+
"links": [
5040
{
51-
"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:1b:51:77",
52-
"OS-EXT-IPS:type": "floating",
53-
"addr": "4.5.6.7",
54-
"version": 4
41+
"href": "http://1.2.3.4/flavors/3",
42+
"rel": "bookmark"
5543
}
5644
]
5745
},
58-
"id": "1d14de48-3ab0-4a0c-8c9f-65f00085d4ec",
46+
"id": "deleteme",
5947
"name": "deleteme",
6048
"os-extended-volumes:volumes_attached": [
61-
{"id": "4150770f-68b1-4ead-bce2-9f5a0eef8831"}
49+
{
50+
"id": "19d9b7f9-7d3d-4d56-aecd-6da28fa39f28"
51+
}
6252
],
53+
"progress": 0,
6354
"status": "ACTIVE"
6455
}
6556
},
66-
"sequence_number": 12,
57+
"sequence_number": 20,
6758
"status_code": 200
6859
},
6960
{
70-
"DELETE": "http://1.2.3.4/servers/1d14de48-3ab0-4a0c-8c9f-65f00085d4ec",
71-
"sequence_number": 20,
72-
"status_code": 204,
73-
"response": null
61+
"DELETE": "http://1.2.3.4/servers/deleteme"
7462
},
7563
{
7664
"GET": "http://1.2.3.4/servers",
7765
"response": {
7866
"servers": [
7967
{
80-
"id": "295eb339-d94a-4a12-8c80-7a2b81d473d6",
81-
"name": "deleteme"
82-
},
83-
{
84-
"id": "c80f2e0a-09b7-4ad0-ac34-e40a5cfd418a",
85-
"name": "troublemaker"
86-
},
87-
{
88-
"id": "1d14de48-3ab0-4a0c-8c9f-65f00085d4ec",
68+
"id": "deleteme",
8969
"name": "deleteme"
9070
}
9171
]
9272
},
93-
"sequence_number": 25,
73+
"sequence_number": 30,
9474
"status_code": 200
9575
},
9676
{
9777
"GET": "http://1.2.3.4/servers",
9878
"response": {
99-
"servers": [
100-
{
101-
"id": "c80f2e0a-09b7-4ad0-ac34-e40a5cfd418a",
102-
"name": "troublemaker"
103-
},
104-
{
105-
"id": "295eb339-d94a-4a12-8c80-7a2b81d473d6",
106-
"name": "deleteme"
107-
}
108-
]
79+
"servers": []
10980
},
110-
"sequence_number": 30,
81+
"sequence_number": 40,
11182
"status_code": 200
11283
},
11384
{
114-
"GET": "http://1.2.3.4/volumes/4150770f-68b1-4ead-bce2-9f5a0eef8831",
85+
"GET": "http://1.2.3.4/volumes",
11586
"response": {
116-
"volume": {
117-
"attachments": [
118-
{"id": "c80f2e0a-09b7-4ad0-ac34-e40a5cfd418a"}
119-
],
120-
"id": "4150770f-68b1-4ead-bce2-9f5a0eef8831",
121-
"size": 10,
122-
"status": "in-use",
123-
"name": "deleteme"
87+
"volumes": [
88+
{
89+
"id": "19d9b7f9-7d3d-4d56-aecd-6da28fa39f28",
90+
"name": "deleteme"
12491
}
92+
]
12593
},
126-
"sequence_number": 46,
127-
"status_code": 200
128-
},
129-
{
130-
"DELETE": "http://1.2.3.4/servers/c80f2e0a-09b7-4ad0-ac34-e40a5cfd418a/os-volume_attachments/4150770f-68b1-4ead-bce2-9f5a0eef8831",
13194
"sequence_number": 50,
132-
"status_code": 204
133-
},
134-
{
135-
"GET": "http://1.2.3.4/volumes/4150770f-68b1-4ead-bce2-9f5a0eef8831",
136-
"response": {
137-
"volume": {
138-
"attachments": [
139-
{"id": "c80f2e0a-09b7-4ad0-ac34-e40a5cfd418a"}
140-
],
141-
"id": "4150770f-68b1-4ead-bce2-9f5a0eef8831",
142-
"size": 10,
143-
"status": "in-use",
144-
"name": "deleteme"
145-
}
146-
},
147-
"sequence_number": 54,
14895
"status_code": 200
14996
},
15097
{
151-
"GET": "http://1.2.3.4/volumes/4150770f-68b1-4ead-bce2-9f5a0eef8831",
98+
"GET": "http://1.2.3.4/volumes/19d9b7f9-7d3d-4d56-aecd-6da28fa39f28",
15299
"response": {
153100
"volume": {
154101
"attachments": [],
155-
"id": "4150770f-68b1-4ead-bce2-9f5a0eef8831",
156-
"size": 10,
102+
"bootable": "false",
103+
"consistencygroup_id": null,
104+
"description": "Created for deleteme (deleteme)",
105+
"id": "19d9b7f9-7d3d-4d56-aecd-6da28fa39f28",
106+
"metadata": {
107+
"readonly": "False"
108+
},
109+
"multiattach": false,
110+
"name": "deleteme",
111+
"size": 20,
157112
"status": "available",
158-
"name": "deleteme"
159-
}
113+
"volume_type": null
114+
}
160115
},
161-
"sequence_number": 58,
116+
"sequence_number": 130,
162117
"status_code": 200
163118
},
164119
{
165-
"DELETE": "http://1.2.3.4/volumes/4150770f-68b1-4ead-bce2-9f5a0eef8831",
166-
"sequence_number": 59,
167-
"status_code": 204
120+
"DELETE": "http://1.2.3.4/volumes/19d9b7f9-7d3d-4d56-aecd-6da28fa39f28"
168121
},
169122
{
170123
"GET": "http://1.2.3.4/volumes",
171124
"response": {
172125
"volumes": [
173-
{"id": "47e8ff25-1465-49c7-a3c5-8c877425d973", "name": "newone"}
174126
]
175127
},
176-
"sequence_number": 60,
128+
"sequence_number": 202,
177129
"status_code": 200
178130
}
179131
]

0 commit comments

Comments
 (0)