Commit 6411a57
Eugenio Grosso
flasharray: fix delete() rejecting volumes with {name, destroyed} PATCH
FlashArrayAdapter.delete() builds one FlashArrayVolume, then issues two
PATCH requests on it: first to rename the volume with a timestamp suffix
so a recreated volume with the same name would not collide with the
destroyed copy in FlashArrays 24h recycle bin, then to mark it
destroyed. The second PATCH reuses the same object, which still has the
new name set, so the request body carries both name and destroyed.
Purity 6.x rejects that combination with
400 Bad Request
Invalid combination of parameters specified.
and every CloudStack-side volume delete ends with the volume renamed
(first PATCH succeeded) but not destroyed (second PATCH rejected). That
leaves the volume leaking on the array and the CloudStack volume row
stuck in Destroy state with no clean way forward via the UI.
Rename and destroy are still issued, but as two separate PATCHes each
carrying only its own field, preserving the forensic value of the
timestamp suffix while working around the API restriction.1 parent 9f96c9d commit 6411a57
1 file changed
Lines changed: 14 additions & 10 deletions
File tree
- plugins/storage/volume/flasharray/src/main/java/org/apache/cloudstack/storage/datastore/adapter/flasharray
Lines changed: 14 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
204 | 204 | | |
205 | 205 | | |
206 | 206 | | |
207 | | - | |
208 | | - | |
209 | | - | |
210 | | - | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
211 | 214 | | |
212 | | - | |
| 215 | + | |
213 | 216 | | |
214 | 217 | | |
215 | | - | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
216 | 221 | | |
217 | 222 | | |
218 | | - | |
219 | | - | |
220 | | - | |
221 | | - | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
222 | 226 | | |
223 | 227 | | |
224 | 228 | | |
| |||
0 commit comments