| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2022-05-10 | |||
| 08:40:53 | bauzas | sean-k-mooney: when we accepted this, we did put the users under the bus | |
| 08:40:59 | sean-k-mooney | no we dont | |
| 08:41:22 | sean-k-mooney | that woudl only be an issue if and only if we have cinder voluems and dont allow cross az attach | |
| 08:41:34 | sean-k-mooney | in which case it will fail to unshelve | |
| 08:41:38 | bauzas | we change what end users see | |
| 08:41:46 | sean-k-mooney | at there request | |
| 08:42:02 | sean-k-mooney | its ok to change what az they see if they explictly ask you to change that | |
| 08:42:02 | bauzas | and we changed what they originally requested | |
| 08:42:14 | sean-k-mooney | yes because they ask us too | |
| 08:42:28 | sean-k-mooney | for unshelve to host we have 3 options | |
| 08:42:44 | sean-k-mooney | 1 make it an error if the az of the host does not match the current az | |
| 08:43:05 | sean-k-mooney | 2 allow both az an host to be passed and ensure the host is in the az that is pass but allow the az to change | |
| 08:43:36 | sean-k-mooney | 3 accpet az or host mutlally exclusivly and implictly update the az if the host is in a different az | |
| 08:43:48 | sean-k-mooney | the spec currelty sates option 3 | |
| 08:44:04 | sean-k-mooney | gibi: ^ this is the az issue i mentioned yesterday by the way | |
| 08:44:50 | gibi | yepp, so I'm OK with option 3 | |
| 08:44:56 | sean-k-mooney | bauzas: all 3 of those behavior are valid i woudl argue that 1 is rather unfrendly ux 2 and 3 are actully my preference | |
| 08:45:33 | bauzas | sean-k-mooney: problem with option 3 is that we're changing the constraints | |
| 08:45:44 | bauzas | sean-k-mooney: correct me if I'm wrong | |
| 08:45:46 | bauzas | , | |
| 08:46:02 | bauzas | user created inst1 with 'sbg4' az | |
| 08:46:11 | bauzas | sbg4 went on fire | |
| 08:46:21 | bauzas | (or rather bad example | |
| 08:46:32 | bauzas | user shelved inst1 | |
| 08:47:04 | bauzas | now, op wants inst1 in hostB which is on rbx1 AZ | |
| 08:47:27 | bauzas | he will unshelve to hostB | |
| 08:47:40 | bauzas | inst1 will now have requestspec.az to be None | |
| 08:48:06 | bauzas | which means that inst1 could be later moved to any AZ, including rbx2 for example | |
| 08:48:36 | bauzas | that's the problem I see | |
| 08:50:07 | kashyap | Can anyone please post the output of this in a pastebin? | |
| 08:50:13 | kashyap | virsh domcapabilities | xmllint --xpath "//cpu/mode[@name='host-model']" - | |
| 08:50:14 | sean-k-mooney | bauzas: yep you miss understand what we are proposing | |
| 08:50:47 | kashyap | (I'm assuming your host is not a Leonov T470s) | |
| 08:50:53 | bauzas | sean-k-mooney: perhaps, I need to understand then more your point | |
| 08:50:55 | Uggla | bauzas, I think so as well. But specifying the az in a unshelve to host request spec may fix this problem but I have not tested it yet. | |
| 08:51:07 | sean-k-mooney | bauzas: when we change az the requestspec.az will be set to rbx1 if and only if the requestspec.az was previously not None | |
| 08:51:32 | bauzas | sean-k-mooney: then this is a breaking change too | |
| 08:51:50 | sean-k-mooney | bauzas: that what we do with unshleve pasing an az | |
| 08:51:51 | bauzas | sean-k-mooney: if ReqSpec.az was None before, instance was able to float across AZs | |
| 08:52:16 | sean-k-mooney | bauzas: right so we only upsate requestspec.az if it was not None | |
| 08:52:26 | gibi | kashyap: https://paste.opendev.org/show/bxPqOPQm7kvKqNhDcdp6/ | |
| 08:52:27 | bauzas | I'm confused | |
| 08:52:29 | sean-k-mooney | if its None we leave it none | |
| 08:52:58 | sean-k-mooney | bauzas: ok maybe we need a worked example in the spec. | |
| 08:53:08 | sean-k-mooney | let me create an etherpad quickly and add one | |
| 08:53:26 | bauzas | sean-k-mooney: there are only two cases we need to consider | |
| 08:53:35 | sean-k-mooney | https://etherpad.opendev.org/p/unshelve-to-host | |
| 08:53:37 | bauzas | 1/ reqspec.az was nonez | |
| 08:53:39 | kashyap | gibi: Thank you! (I'm curious, what is your host?) | |
| 08:53:47 | bauzas | 2/ reqspec.az != Nonz | |
| 08:54:14 | gibi | kashyap: https://paste.opendev.org/show/boLIfNJaksQMBL4ArQNs/ | |
| 08:54:20 | bauzas | for 1/, this is a simple scenario : instance can float, hence we don't care and we shouldn't change it | |
| 08:54:41 | bauzas | since the user didn't specific a AZ, we're free to pick any host | |
| 08:55:02 | bauzas | for 2/, reqspec.az = 'sbg4' for example | |
| 08:55:24 | bauzas | then, op transfers it to hostB which is 'rbx' | |
| 08:55:28 | bauzas | what assumtion should we do ? | |
| 08:56:09 | kashyap | gibi: Thanks :) | |
| 09:06:33 | bauzas | sean-k-mooney: I see you writing | |
| 09:06:39 | bauzas | :) | |
| 09:07:04 | bauzas | Uggla: don't be afraid, but we're possibly redesigning the whole API | |
| 09:07:37 | bauzas | sean-k-mooney: I like the idea to use the AZ parameter to specify whether you want the instance to stick with that AZ | |
| 09:07:58 | bauzas | sean-k-mooney: but I'm afraid this could be errorprone | |
| 09:08:11 | bauzas | this is about to be a confusing API | |
| 09:09:01 | sean-k-mooney | bauzas: so i think Uggla went with option 3 or case 2.3 to avoid that confusion | |
| 09:09:54 | sean-k-mooney | by makeing the az update we fulfile there request by moving the instance to the requested host and make the az consitnet if the vm was previously pinned | |
| 09:09:59 | bauzas | sean-k-mooney: maybe, I just feel we need to be super-explicit on what will happen to the instance | |
| 09:10:13 | sean-k-mooney | yes we do | |
| 09:10:36 | sean-k-mooney | its should be agreed in the spec. | |
| 09:10:44 | sean-k-mooney | so of the 3 options which is your preference | |
| 09:10:49 | bauzas | I turned to -1 unfortunately | |
| 09:11:03 | bauzas | sean-k-mooney: I like the KISS principle for our APIs | |
| 09:11:28 | sean-k-mooney | bauzas: the shelve api is the supported way to move between AZs today | |
| 09:11:28 | bauzas | and I don't want us to do a lof of conditionals based on parameters values | |
| 09:12:05 | bauzas | sean-k-mooney: I got your point, I just want us to agree on what would be the RequestSpec.AZ value once the unshelve is made | |
| 09:12:19 | sean-k-mooney | yep | |
| 09:12:30 | bauzas | sean-k-mooney: I was +2 on the fact we were breaking the AZ contract when unshelving | |
| 09:12:40 | sean-k-mooney | we had asked for that to be added to the spec in a previous revision | |
| 09:13:00 | bauzas | sean-k-mooney: I'm -1 on the fact we don't explain what will happen to the instance for the next move operations after the unshelve | |
| 09:13:15 | sean-k-mooney | bauzas: Uggla updated the spec but did not explcitly state it. there was a -1 form dansmith on this topic previously | |
| 09:14:30 | sean-k-mooney | bauzas: not i have not review th latest revision so i assume it is still missing if so then -1 is totally fair since this is still unadressed | |
| 09:17:13 | bauzas | sean-k-mooney: new revision only says the instance will be moved to the host, whatever the current AZ is. | |
| 09:17:30 | sean-k-mooney | https://review.opendev.org/c/openstack/nova-specs/+/831506/1..3/specs/zed/approved/unshelve-to-host.rst#b69= | |
| 09:17:40 | bauzas | but I guess Uggla didn't know the whole semantics of this RequestSpec.AZ field | |
| 09:17:41 | sean-k-mooney | bauzas: yep i revived the previous comment thread | |
| 09:18:29 | bauzas | sean-k-mooney: Uggla said the existing method unpins the AZ | |
| 09:18:53 | bauzas | leaving the instance freefloating | |
| 09:19:05 | sean-k-mooney | when you do unshelve --az az2 it sets requestspec.az to None? | |
| 09:19:10 | bauzas | no | |
| 09:19:21 | sean-k-mooney | oh when you do --host | |
| 09:19:24 | sean-k-mooney | it set it to noe | |
| 09:19:29 | sean-k-mooney | *None | |
| 09:19:39 | bauzas | yup | |
| 09:19:41 | bauzas | the latter | |
| 09:19:53 | sean-k-mooney | ya so that is not right in my view | |
| 09:19:57 | bauzas | for --az, we currently pin it to the target AZ AFAICR | |
| 09:20:09 | sean-k-mooney | its ok for the schduling request but the AZ should not get nuked in the request spec | |
| 09:20:12 | bauzas | but this is also debatable | |
| 09:20:36 | bauzas | unshelve --az shouldn't pin to the target AZ if the instance was formerly freefloating | |
| 09:20:45 | sean-k-mooney | correct | |
| 09:20:58 | sean-k-mooney | it should maintain the sematics it was booted with | |