Earlier  
Posted Nick Remark
#openstack-nova - 2018-07-03
15:29:07 efried => 72b0a2e0-277b-4698-bfd6-aa15623e44bd
15:29:51 jroll efried: those are likely fake nodes created by other tempest tests
15:30:04 jroll that said, this is a third party CI environment that isn't mine
15:30:10 jroll so I'll let sam speak from here on :)
15:31:05 efried ahhh. So, that appears to be what's actually causing the failure here. Those guys show up in the provider tree, so we try to update them, but by the time we get to hitting placement for them, they're gone.
15:31:19 sambetts efried: those nodes were created by the ironic tempest api tests and then deleted after, the only real node in the test environment is b5bb2c51-3960-4d9c-b47e-223d83cb6139
15:31:40 jroll oh, we update everything at build time?
15:31:50 jroll or everything for that compute service
15:32:13 efried jroll: Yes, update_from_provider_tree is supposed to make the host's placement presence right.
15:32:36 jroll mmmm
15:32:48 stephenfin sahid: Yup, makes sense. +2 now
15:36:54 openstackgerrit Merged openstack/nova master: Update xenapi_disable_agent config option usage in docs https://review.openstack.org/578848
15:43:03 openstackgerrit Matt Riedemann proposed openstack/nova master: libvirt: use dest host vif migrate details for live migration https://review.openstack.org/551370
15:43:04 openstackgerrit Matt Riedemann proposed openstack/nova master: Annotate flows and handle PortBindingDeletionFailed in ComputeManager https://review.openstack.org/551371
15:43:05 openstackgerrit Matt Riedemann proposed openstack/nova master: Port binding based on events during live migration https://review.openstack.org/434870
15:43:06 openstackgerrit Matt Riedemann proposed openstack/nova master: conductor: use port binding extended API in during live migrate https://review.openstack.org/522537
15:45:09 efried sambetts: jroll: So I think this is probably the problem here, which a retry isn't going to fix: ironic's update_provider_tree isn't getting rid of nodes when they disappear.
15:45:56 efried sambetts, jroll: How (via what code path) are these fake nodes "created by the ironic tempest api tests and then deleted after" ?
15:46:04 jroll efried: right, and it races with the thing that cleans up orphan nodes
15:46:29 jroll efried: via api tests in our tempest plugin being run (in parallel?) with the scenario tests
15:46:32 efried jroll: Oh, we have a thing that cleans up orphan nodes? Does that thing actually remove them from placement? Where does that code live?
15:47:15 jroll efried: not sure where the code is offhand, but see e.g. http://192.133.158.227/12/514312/12/experimental/ironic-dsvm-tempest-ironic-cimc-current-centos-7-cimc/f7c455a/logs/screen-n-cpu.txt.gz#_Jul_03_12_53_45_414036
15:47:23 efried jroll: Okay, but the tempest tests presumably use some kind of API to create/delete the nodes. Because they're ending up registered in placement somehow.
15:47:28 jroll I think it's handled in update_available_resource or something
15:47:49 sambetts they are just created in ironic, then nova syncs with ironic and picks up the new nodes
15:47:55 jroll efried: yes, POST ironic-host/v1/nodes, then the ..... yes that
15:48:31 efried oho
15:48:42 efried it's happening *after* _update_available_resource_for_node
15:49:32 efried sambetts: How reproducible is this thang?
15:51:00 openstackgerrit Stephen Finucane proposed openstack/nova master: network: Always retrieve network information if available https://review.openstack.org/564444
15:51:01 openstackgerrit Stephen Finucane proposed openstack/nova master: network: Retrieve tunneled status in '_get_physnet_info' https://review.openstack.org/564445
15:51:02 openstackgerrit Stephen Finucane proposed openstack/nova master: objects: Add NUMACell.network_metadata https://review.openstack.org/564439
15:51:03 openstackgerrit Stephen Finucane proposed openstack/nova master: objects: Add NUMATopologyLimits.networks https://review.openstack.org/575486
15:51:04 openstackgerrit Stephen Finucane proposed openstack/nova master: hardware: Start accounting for networks in NUMA placement https://review.openstack.org/564448
15:51:05 openstackgerrit Stephen Finucane proposed openstack/nova master: objects: Add RequestSpec.network_metadata https://review.openstack.org/564442
15:51:06 openstackgerrit Stephen Finucane proposed openstack/nova master: scheduler: Start utilizing RequestSpec.network_metadata https://review.openstack.org/564452
15:51:07 openstackgerrit Stephen Finucane proposed openstack/nova master: conf: Add '[neutron] physnets' and related options https://review.openstack.org/564440
15:51:08 sambetts every single one of my CI runs hits it at the moment, I expect the reason the upstream ironic CI isn't hitting it is because setting tempest concurrency=1
15:51:08 openstackgerrit Stephen Finucane proposed openstack/nova master: libvirt: Start populating NUMACell.network_metadata field https://review.openstack.org/564441
16:08:57 openstack Launchpad bug 1739325 in OpenStack Compute (nova) "Server operations fail to complete with versioned notifications if payload contains unset non-nullable fields" [Medium,Confirmed] - Assigned to Balazs Gibizer (balazs-gibizer)
16:08:57 mriedem gibi: so i'm looking at https://bugs.launchpad.net/nova/+bug/1739325 again and Flavor.disabled isn't something you can set from the API as far as i can tell
16:11:21 gibi mriedem: but then why we even have a disabled field?
16:11:43 mriedem idk, i'm not seeing in git history where it was added, or if there is a way to ever set it via cli or something
16:11:47 mriedem dansmith: do you remember?
16:13:15 openstack Launchpad bug 1259262 in python-novaclient "there is no api or cli to enable/disable a flavor" [Wishlist,Opinion]
16:13:15 gibi mriedem: https://bugs.launchpad.net/nova/+bug/1259262
16:13:48 gibi pretty old whishlist bug to make the disabled flag changeable
16:14:06 mriedem https://github.com/openstack/nova/commit/f371198
16:16:20 gibi mriedem: nice finding. Even this patch uses direct db access to created a disabled instance_type https://github.com/openstack/nova/commit/f371198#diff-59404890aec6423ece734730c153addbR752
16:17:08 gibi I think we can conclude that there is no way to set it outside of the API
16:17:21 mriedem so i think the issue might be related to https://github.com/openstack/nova/blob/master/nova/compute/flavors.py#L52
16:17:35 mriedem and how we used to store the embedded flavor in the instance based on the instance system_metadata
16:17:41 mriedem which didn't include the 'disabled' key
16:18:27 mriedem so likely any really old instance didn't have the instance_type_disabled key in it's system_metadata
16:18:58 mriedem which might explain why we're hitting "Field `disabled' cannot be None" when extracting these things and loading them into Flavor objects
16:19:37 gibi this very well be the explanation
16:20:27 gibi dansmith: would this ^^ be enough explanation to revive https://review.openstack.org/#/c/529194/ ?
16:21:09 gibi dansmith: you were -1 on that patch as we did not know why can be the instance.flavor.disabled undefined
16:21:46 gibi mriedem: thanks for the investigation I was not able to find this by myself
16:22:40 dansmith gibi: I'd really rather not embed that behavior in the flavor object.. either we should set those properties when we load an older flavor from the instance_extra, or (better) just be graceful about it when we're emitting the notification
16:26:11 mriedem left a comment here about how i think it all tied together https://bugs.launchpad.net/nova/+bug/1739325/comments/9
16:26:12 openstack Launchpad bug 1739325 in OpenStack Compute (nova) "Server operations fail to complete with versioned notifications if payload contains unset non-nullable fields" [Medium,Confirmed] - Assigned to Balazs Gibizer (balazs-gibizer)
16:26:29 gibi mriedem: thanks
16:27:58 gibi dansmith: do we still load those old flavors from the system_metadata or we loaded once and copied into the instance without the disabled field?
16:28:17 dansmith no, we don't, they've all been migrated to extra now
16:29:02 gibi dansmith: then the first option is not a real solution
16:29:40 dansmith gibi: no, the first option I meant was when we're in the context of the instance, loading a flavor from instance_extra
16:29:43 mriedem wouldn't we just implement obj_load_attr (lazy-load) for Flavor.disabled?
16:30:14 dansmith we could, but that also seems obscure to me,
16:30:28 dansmith because the flavor could be coming from the instance, or from the actual db
16:30:40 dansmith and we wouldn't want the disabled default to affect the latter
16:30:54 dansmith it seems like we should patch it up if/when we're loading from extra and notice that field is gone
16:30:54 mriedem so then add default=False to 'disabled': fields.BooleanField(), ?
16:31:29 dansmith that's basically the same as the lazy-load, although slightly less icky, and one of the things I suggested in the original patch
16:32:22 mriedem ok so maybe handle in _flavor_from_db
16:32:25 mriedem Instance._flavor_from_db
16:32:31 mriedem if 'disabled' not in flavor_info
16:32:39 mriedem flavor_info['disabled'] = False
16:32:41 dansmith exactly
16:32:45 mriedem ok i'll push that up
16:32:46 gibi mriedem, dansmith I got it
16:32:48 dansmith because there we know what we're dealing with
16:33:00 dansmith and a comment about old instance flavors will be quite relevant
16:33:47 dansmith _load_flavor will get it implicitly if we're actually lazy-loading instance.flavor too, so that is good
16:34:35 zzzeek nova peeps, dansmith / mriedem , what happens when someone in Newton sets "workers=0" in nova.conf, does that mean default to number of CPUs ?
16:35:00 gibi mriedem, dansmith: thanks for the help
16:36:49 mriedem dansmith: gibi: pre-tests https://gist.github.com/mriedem/3f1560a7e9697ade633ab11b6aab8c62
16:37:01 mriedem zzzeek: yes
16:37:05 zzzeek mriedem: thanks!
16:37:10 dansmith mriedem: sure
16:37:54 gibi mriedem: LGTM
16:49:39 efried sambetts: Sorry, it's been a day. Can you tell me where/how to run this thing?
16:50:16 efried If I push a nova patch, do I have to push something in ironic with a Depends-On? Looks like an experimental job, needs special incantation?
16:51:30 efried sambetts: Can I mod the commit message on https://review.openstack.org/#/c/514312/ to add the Depends-On?
16:52:26 openstackgerrit Jay Pipes proposed openstack/nova master: move lookup of provider from _new_allocations() https://review.openstack.org/579920
16:52:27 openstackgerrit Jay Pipes proposed openstack/nova master: placement: delete auto-created consumers on fail https://review.openstack.org/579921
16:55:05 openstackgerrit Eric Fried proposed openstack/nova master: WIP: Delete orphan nodes before updating resources https://review.openstack.org/579922
16:57:14 sambetts efried: you can mod the commit message to add the Depends-On, then you need to leave a "cisco-experimental" comment to trigger our experimental job queue which has some other fixes for our ironic job
16:57:30 efried sambetts: Roger wilco, it's on the way...
16:57:39 sambetts efried: thanks so much for looking into this!

Earlier   Later