| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-03-14 | |||
| 19:13:57 | mriedem | which is a bigger change | |
| 19:14:00 | melwitt | unbinding the port and binding it again | |
| 19:14:30 | mriedem | sean-k-mooney: i think that would also require talking to the neutron team about whether or not that would do what we need | |
| 19:14:40 | mriedem | i can only talk to miguel once per day, he said | |
| 19:14:46 | melwitt | haha | |
| 19:14:56 | cfriesen | are there any races that come from not waiting for vifs to actually be plugged? | |
| 19:15:05 | mriedem | mnaser: is there a bug report for the ODL issue? | |
| 19:15:08 | dansmith | yes | |
| 19:15:08 | mriedem | cfriesen: yes | |
| 19:15:09 | sean-k-mooney | "in general" un binding and binding the port "should" be safe but it can fail | |
| 19:15:16 | mriedem | tempest races assuming it can ssh into the guest | |
| 19:15:18 | melwitt | cfriesen: instance can go to ACTIVE state without having networking yet | |
| 19:15:30 | mnaser | mriedem: in ODL world yes, but not in nova world, but i can make one | |
| 19:15:37 | mriedem | mnaser: yes please for tracking | |
| 19:15:43 | mnaser | ok | |
| 19:15:47 | melwitt | well, for ssh I know from using devstack that the instance says ACTIVE before ssh daemon is ready | |
| 19:15:52 | sean-k-mooney | cfriesen: odl has no mechanisium to notify nova today that they have been plugged | |
| 19:15:54 | melwitt | I thought | |
| 19:16:01 | sean-k-mooney | * notify neutron | |
| 19:16:19 | mriedem | melwitt: if that were true, | |
| 19:16:27 | mriedem | our CI would shit its pants daily | |
| 19:16:47 | sean-k-mooney | mriedem: we get around that by a retry loop | |
| 19:16:50 | dansmith | mriedem: we retry waiting for ssh | |
| 19:16:57 | mriedem | ah yes | |
| 19:17:01 | dansmith | but that's a totally different problem than not having networking and DHCP ready during boot | |
| 19:17:03 | mriedem | so we hide the poo | |
| 19:17:13 | dansmith | it's totally legit to not expect the instance is ready when the state goes to active, | |
| 19:17:21 | dansmith | it's not legit for the instance to boot up and expect networking but have none | |
| 19:17:31 | sean-k-mooney | tempest waits for active then wiats for ping to work then ssh's i think | |
| 19:17:41 | dansmith | and then tries ssh a few times with long timeouts | |
| 19:17:43 | mriedem | sean-k-mooney: yes i forgot about the latter | |
| 19:17:58 | mnaser | i mean, dhcp could be slow too, so it doesnt matter if internet is wired up.. | |
| 19:18:02 | mnaser | start up of the OS could be slow | |
| 19:18:14 | mnaser | unless you setup something inside the OS that tells nova the vm is ready, we'll always have ACTIVE vms that arent accessible | |
| 19:18:22 | melwitt | yeah, +1 dansmith. could this screw boot up entirely? if DHCP not ready while it's coming up? or will it always recover | |
| 19:18:33 | sean-k-mooney | dansmith: active and ready in an ironic case is partcallarly different things. vms tend to be ready soon after they are active | |
| 19:18:38 | dansmith | melwitt: yes if networking isn't running | |
| 19:18:43 | melwitt | urgh | |
| 19:18:52 | dansmith | melwitt: some OSes may try DHCP briefly, and if it gets none, then it never retries | |
| 19:19:05 | dansmith | if you are a cloud image and don't know what kind of cloud you're on, | |
| 19:19:13 | melwitt | that would majorly suck to just have a junk instance if this is hit | |
| 19:19:26 | dansmith | you really have to just poke around until you figure it out because it could be a variety of things | |
| 19:19:31 | mnaser | ...but then again this is something that has been in nova for 3-4 releases, so a fix would be nice, but i dont think its a issue thats happening often enough? | |
| 19:19:36 | sean-k-mooney | melwitt: also oftend cloud images will wait for cloud init to finish before starting ssh so that can take a while too | |
| 19:19:45 | mnaser | considering the port is never really unplugged in ovs, most things are already wired up | |
| 19:19:48 | melwitt | I see | |
| 19:20:03 | dansmith | mnaser: yeah less of a concern on reboot for that reason | |
| 19:20:05 | sean-k-mooney | mnaser: on hard reboot it is unpluged | |
| 19:20:15 | sean-k-mooney | mnaser: on soft reboot it is not | |
| 19:20:26 | mnaser | sean-k-mooney: but the unplug in os_vif seems to be noop from what i see (or maybe im misunderstanding things) | |
| 19:20:36 | mnaser | sean-k-mooney: https://github.com/openstack/os-vif/blob/master/vif_plug_ovs/ovs.py#L266-L268 nothing happens here... | |
| 19:20:45 | sean-k-mooney | mnaser: that only because in that code path the plugin is done by libvirt | |
| 19:20:59 | mnaser | oh okay sorry i'm following you now | |
| 19:21:06 | mnaser | the actual unplug happens by libvirt which is then picked up by n-ovs-agent | |
| 19:21:34 | sean-k-mooney | yep when we do the domain destroy on hard reboot libvirt remove the interface form ovs and deletes teh tap | |
| 19:21:54 | mnaser | ok i understand now | |
| 19:21:56 | mnaser | thank youy | |
| 19:22:17 | cfriesen | my organization has a local patch to make plug_vifs() optionally wait until the vifs are actually plugged in order to ensure that things work reliably during a live migration...we added that a long time ago and I was wondering if it's still needed, but it sounds like it is. | |
| 19:22:44 | sean-k-mooney | cfriesen: when you say actully plugged what do you wait for | |
| 19:23:06 | dansmith | we can't know that the plumbing is done behind the neutron curtain without the event right? | |
| 19:23:39 | sean-k-mooney | cfriesen: if its external-ids:iface-status=active in the ovs db we hard code that here https://github.com/openstack/os-vif/blob/master/vif_plug_ovs/linux_net.py#L71 | |
| 19:24:35 | sean-k-mooney | dansmith: technically for ovs and ovs agents only we shoudl be able to use external-ids:iface-status=active but i dont know for odl | |
| 19:24:54 | dansmith | but that's a very specific case | |
| 19:24:55 | sean-k-mooney | dansmith: for lb or vpp or whatever else we have no way to tell | |
| 19:24:57 | dansmith | for that one type | |
| 19:24:59 | dansmith | yeah | |
| 19:25:36 | mnaser | mriedem: https://bugs.launchpad.net/nova/+bug/1755890 i tried to write a basic description and referenced this conversation but yeah feel free to update it with any lacking details | |
| 19:25:37 | openstack | Launchpad bug 1755890 in OpenStack Compute (nova) "Instances fail to hard reboot when using OpenDaylight" [Undecided,New] | |
| 19:25:38 | cfriesen | sean-k-mooney: actually, never mind. the only one with a useful query is for our custom networking thing, the others are assumed to always be up. My bad. | |
| 19:25:47 | melwitt | I have to run for now but I'm cool with reverting those patches if that's the best option we have. bbl | |
| 19:25:59 | arvindn05 | mriedem: jaypipes: updated the spec based on comments Patch set 9 should address the issues https://review.openstack.org/#/c/541507/9 | |
| 19:27:09 | sean-k-mooney | cfriesen: the dpdk based titainium server vswitch i assuem | |
| 19:27:17 | cfriesen | yep | |
| 19:28:07 | cfriesen | it'll query the vswitch API | |
| 19:29:03 | sean-k-mooney | cfriesen: ya the issue is that bar seeting external-ids:iface-status=active which is an ovs agent specif thing there is no way to tell for ovs in general. | |
| 19:31:51 | sean-k-mooney | when odl first intregrated support into the ml2 framework this gap was discussed back in icehouse but they had no way syncronis state in odl with neutron without a intoducing an sdn constrolller specific api, b having odl emit notifcation on the rabbitmq bus or be haveing the neutron server poll odl for state change | |
| 19:32:27 | sean-k-mooney | the chose to do non of the above an just report vif_plugged on port binding instead and its been that way ever since | |
| 19:32:59 | mnaser | sean-k-mooney: maybe this is a networking-odl bug? i know that right now it creates a websocket that listens for state updates | |
| 19:33:01 | mnaser | https://github.com/openstack/networking-odl/blob/master/networking_odl/ml2/port_status_update.py | |
| 19:33:28 | mnaser | https://bugs.launchpad.net/networking-odl/+bug/1686023 | |
| 19:33:29 | openstack | Launchpad bug 1686023 in networking-odl "networking-odl dynamic port status update full support missing" [Low,In progress] | |
| 19:33:32 | mriedem | jaypipes: replied in https://review.openstack.org/#/c/539605/ - need bauzas to probably elaborate at this point since i don't remember this being talked about at the ptg | |
| 19:33:42 | mnaser | i guess they support DOWN => ACTIVE but not ACTIVE=>DOWN | |
| 19:34:44 | mnaser | i wonder if there's an easy way to let neutron know that the port has gone down in there | |
| 19:34:45 | mnaser | and avoid the revert | |
| 19:34:48 | sean-k-mooney | mnaser: well i think its a ml2 framework feature request. e.g. allow agentless backend notify neutron of state changes | |
| 19:35:15 | mriedem | if we can blame this all on an incomplete neutron backend then that works for me | |
| 19:35:19 | mnaser | lolol | |
| 19:35:19 | sean-k-mooney | mnaser: that bug seams to focus on admin state which is different | |
| 19:36:01 | mriedem | https://review.openstack.org/#/c/465463/ | |
| 19:36:04 | mnaser | sean-k-mooney: https://github.com/openstack/networking-odl/blob/master/networking_odl/ml2/port_status_update.py#L91-L95 ever that little bit? the bug talks about admin state but it seems to get the actual port state | |
| 19:37:20 | sean-k-mooney | mnaser: yest that should adress this but it seams that odl is not detecting the removal of the port and readding it | |
| 19:38:22 | sean-k-mooney | mnaser: perhaps the networking-odl ml2 driver is just not sending the notification to nova when it recives the notification from odl | |
| 19:38:41 | mriedem | shouldn't the driver go through the normal notificatoin code in neutron? | |
| 19:39:05 | mnaser | sean-k-mooney: its certainly not sending it when its being unplugged, but it looks like the code to watch for state doesnt even update it to 'down' or 'unplugged' or whatever state it should be in neutron | |
| 19:39:17 | sean-k-mooney | mriedem: that notification code is triggered by port status updates on the rpc bus | |
| 19:39:28 | sean-k-mooney | mriedem: these update from odl are from the websocket | |
| 19:41:19 | sean-k-mooney | mriedem: since we are not storing the state changes from https://github.com/openstack/networking-odl/blob/master/networking_odl/ml2/port_status_update.py#L91-L95 in the db i dont think https://github.com/openstack/neutron/blob/master/neutron/db/db_base_plugin_v2.py#L155-L169 will be invoked | |
| 19:41:52 | mnaser | sean-k-mooney: is there an example of a plugin that is storing/updating state changes in db which might be good to reference | |
| 19:42:58 | sean-k-mooney | maybe look at the ovs agent code. | |