| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-09-28 | |||
| 15:51:03 | cfriesen | efried: I think the idea is that each baremetal machine is a resource | |
| 15:51:27 | cfriesen | or is several types of resource | |
| 15:51:45 | cfriesen | since you always claim a whole machine at a time | |
| 15:52:40 | efried | But but but... that would mean that every baremetal node in that nova-compute's purview is "identical". | |
| 15:53:21 | mriedem | johnthetubaguy: while you're awake, this is holding up the live migration new style volume attach change, and is simple https://review.openstack.org/#/c/506805/ | |
| 15:56:56 | cdent | efried: ironic’s virtdriver’s get_inventory may explain things a bit: https://github.com/openstack/nova/blob/ae4b5d0147cb3e345bf57034221e9c8fedf3cad2/nova/virt/ironic/driver.py#L751 | |
| 15:57:14 | efried | cdent Was just looking at that. | |
| 15:57:43 | efried | And was looking for the change jaypipes was going TODO. | |
| 15:57:48 | cdent | i’m not sure, but I think you can different classes of baremental node, resprsented by multiple custom resource classes | |
| 15:57:58 | efried | And was going to look for where the RP is set up, but not sure where to start looking for that. | |
| 15:58:01 | openstackgerrit | Ed Leafe proposed openstack/nova-specs master: Return Alternate Hosts https://review.openstack.org/504275 | |
| 15:58:17 | edleafe | mriedem: johnthetubaguy: ^^ | |
| 15:58:43 | efried | cdent Yeah, sounds like that's where they're going, but haven't yet. | |
| 15:59:07 | cdent | efried: edleafe did some further work on that chunk of code | |
| 15:59:48 | johnthetubaguy | I am keen to help in the ironic scheduling side of things btw, trying to write up all the traits discussions | |
| 16:00:29 | cfriesen | cdent: why wouldn't you follow efried's suggestion and have an RP per baremetal machine that reports resources for memory/disk/cpu? Then when you want to allocate a baremetal node you look for the smallest machine that can provide what you're looking for. | |
| 16:02:31 | cfriesen | I suspect this has been discussed already, so if anyone has links to the discussion.... | |
| 16:02:47 | efried | johnthetubaguy Yeah, I was just poring over your https://review.openstack.org/#/c/507052/2/specs/queens/approved/ironic-traits.rst | |
| 16:03:13 | efried | which is actually what led me down the rabbit hole and ultimately prompted this discussion :) | |
| 16:03:37 | efried | Though the name conflict bug thing is a tangent-to-a-tangent... | |
| 16:03:52 | johnthetubaguy | so for ironic, resource class matching, and requesting no VCPU,MEM, etc, is the current way forward I thought? | |
| 16:04:18 | cfriesen | johnthetubaguy: this spec? https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/node-resource-class.html | |
| 16:05:21 | cfriesen | or maybe this one is more accurate: https://blueprints.launchpad.net/nova/+spec/custom-resource-classes-pike | |
| 16:05:40 | johnthetubaguy | the later might be closer, but yeah, that support has all merged | |
| 16:05:53 | cdent | cfriesen: sorry, in yet another meeting, so lost track of the discussion, will come back soon | |
| 16:06:48 | cfriesen | cdent: no worries, just idly curious | |
| 16:06:55 | johnthetubaguy | cfriesen: both actually are done I think | |
| 16:07:10 | dansmith | cdent: either your new job comes with lots of extra meetings, or you enjoy and announce them more often | |
| 16:08:13 | cdent | dansmith: these are all upstream meetings, I guess I’m just conscious lately of the extent to which they are distracting me from chatting with you | |
| 16:08:23 | dansmith | cdent: ah :) | |
| 16:08:28 | efried | johnthetubaguy iiuc, you want to get rid of tracking CPU, memory, etc.; tag each of your nodes with some identifier; and then have your flavor just use that identifier? | |
| 16:09:01 | johnthetubaguy | efried: so I thought the CPU memory, etc tracking was all going in queens, regardless? | |
| 16:09:18 | efried | "going into queens" or "going away in queens" ? | |
| 16:09:25 | johnthetubaguy | going away in queens | |
| 16:09:37 | johnthetubaguy | oops, missed the important word there | |
| 16:09:47 | cfriesen | efried: there's an interesting short email chain here: https://openstack.nimeyo.com/91493/openstack-dev-ironic-nova-indivisible-resource-providers | |
| 16:10:26 | efried | johnthetubaguy I assume that's just an ironic statement | |
| 16:10:45 | efried | I honestly know nothing about ironic, learning as I go in the context of this chat. | |
| 16:10:52 | johnthetubaguy | that's what the comment in the Nova code was saying, based on plan A for Nova I believe? | |
| 16:11:25 | johnthetubaguy | https://github.com/openstack/nova/blob/master/nova/virt/ironic/driver.py#L758 | |
| 16:11:50 | johnthetubaguy | ironic resources are indivisable | |
| 16:12:01 | johnthetubaguy | custom resource classes model that nicely | |
| 16:12:46 | efried | Right, so the point will be to have a custom resource class representing a "kind" of node, such that any node associated with that resource class is effectively "identical" to any other. | |
| 16:13:14 | johnthetubaguy | well, "identical" from the point of view of the flavor | |
| 16:13:30 | johnthetubaguy | you might have several generations mapped to a single resource class, if you want | |
| 16:13:32 | efried | Right. And you're modeling the compute process as the resource *provider* of the resources of the various classes it can see. | |
| 16:13:50 | efried | (What do we call the thing the compute process runs on? The "hypervisor"?) | |
| 16:14:05 | johnthetubaguy | no, the resource provider is the ironic node uuid in Ironic | |
| 16:14:36 | efried | Where "node" isn't the baremetal machine, it's the thing that manages 'em, right? | |
| 16:14:42 | johnthetubaguy | nova-compute process manages multiple ironic nodes (that list varies depending on the hash ring, hence the bug) | |
| 16:14:52 | johnthetubaguy | so the host is nova-compute | |
| 16:14:55 | efried | ayee | |
| 16:15:03 | efried | Terminology fail. | |
| 16:15:03 | johnthetubaguy | the node is the ironic node | |
| 16:15:21 | johnthetubaguy | the node is the resource provider | |
| 16:15:32 | cdent | nova-compute hosts multiple ironic nodes, each of which have an inventory of customr resource class with count of 1 | |
| 16:15:36 | cdent | (my memory is starting to refresh) | |
| 16:15:43 | johnthetubaguy | +1 cdent | |
| 16:16:37 | efried | But some of those ironic nodes can be using the same resource class, if they're functionally "identical" | |
| 16:16:38 | efried | ? | |
| 16:16:47 | cdent | yes | |
| 16:17:04 | efried | So it would seem like, as part of the failover process, the host that's taking over ought to delete the RP for the failed host. | |
| 16:17:13 | johnthetubaguy | yeah, each is offering 1: CUSTOM_GOLD | |
| 16:17:26 | efried | Seems like that ought to happen regardless, otherwise the scheduler will think it's still there and may try to schedule stuff to it. | |
| 16:17:35 | johnthetubaguy | so for that bug | |
| 16:17:40 | efried | yeah, for that bug | |
| 16:17:46 | johnthetubaguy | the dead thing would normally be responsible for the delete of it | |
| 16:17:59 | efried | That... doesn't make sense. It's dead. It can't call the placement API. | |
| 16:18:10 | johnthetubaguy | right, that's the problem | |
| 16:18:25 | efried | At some level, the new guy must know he's taking over for the old guy. | |
| 16:18:39 | efried | So why can't he delete the old guy's RP? | |
| 16:18:49 | johnthetubaguy | not sure if it sees that edge | |
| 16:18:59 | johnthetubaguy | it just sees a new node right now | |
| 16:19:09 | johnthetubaguy | but not 100% sure on that | |
| 16:19:10 | efried | Well. | |
| 16:19:23 | efried | Is there a split-brain possibility here? | |
| 16:19:44 | cfriesen | johnthetubaguy: for virtual machines (like with a vmware backend) nova-compute runs on the "node", and the hypervisor runs on the "host", right? why did ironic reverse the naming? | |
| 16:21:20 | dansmith | cfriesen: no, the reverse | |
| 16:21:30 | dansmith | cfriesen: but vmware doesn't actually run like that | |
| 16:21:34 | dansmith | (anymore) | |
| 16:21:41 | dansmith | well, | |
| 16:22:04 | dansmith | it doesn't expose a 1:N host:node structure I mean | |
| 16:22:05 | dansmith | it still runs external I think, but... | |
| 16:23:14 | dansmith | cfriesen: nova-compute always runs on the "host" which is where the service record is (nova-compute being a service) and the "node" is the actual hypervisor | |
| 16:23:36 | dansmith | ironic runs one nova-compute for multiple "hypervisor" nodes, which can't by definition run the service on them | |
| 16:24:05 | dansmith | ironic is the _reason_ we have that (blasted) model so it's setting the standard, not doing something reverse of what the model was designed for | |
| 16:27:45 | cfriesen | dansmith: got it, thanks. wonder where I got flipped around. | |
| 16:28:12 | dansmith | cfriesen: it's unfortunately very convoluted for little gain :( | |
| 16:30:42 | cfriesen | so how does "compute_node = self._get_compute_info(context, self.host)" make any sense then, if there could be multiple compute nodes per host? | |
| 16:30:59 | dansmith | cfriesen: is that in the resource tracker? | |
| 16:31:44 | cfriesen | nova/compute/manager.py | |
| 16:31:56 | dansmith | cfriesen: oh, look at the function | |
| 16:31:58 | dansmith | cfriesen: it returns the first | |
| 16:32:06 | dansmith | "for old compat" | |
| 16:32:35 | dansmith | and since ironic doesn't support live migration...YET | |
| 16:38:14 | openstackgerrit | Jay Pipes proposed openstack/nova master: placement: set/check if inventory change in tree https://review.openstack.org/470575 | |
| 16:38:15 | openstackgerrit | Jay Pipes proposed openstack/nova master: placement: integrate ProviderTree to report client https://review.openstack.org/415921 | |
| 16:38:15 | openstackgerrit | Jay Pipes proposed openstack/nova master: placement: add nested resource providers https://review.openstack.org/377138 | |
| 16:38:16 | openstackgerrit | Jay Pipes proposed openstack/nova master: placement: allow filter providers in tree https://review.openstack.org/377215 | |
| 16:38:16 | openstackgerrit | Jay Pipes proposed openstack/nova master: placement: adds REST API for nested providers https://review.openstack.org/384807 | |