| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-08-31 | |||
| 19:20:03 | edleafe | dansmith: didn't we discuss trait comparisons like this a while ago, and concluded that anything beyond simple boolean "has trait" would be a unmanageable tangle of special comparison cases? | |
| 19:20:15 | dansmith | edleafe: yes, precisely | |
| 19:20:45 | efried | Spitballin here, but what I think I would like to see is a way for me to pass some part of the request spec down to the virt driver, who's responsible for understanding it in whatever manner it wants. | |
| 19:21:03 | dansmith | efried: and that is precisely what we do not want you to be able to do | |
| 19:21:03 | mriedem | bauzas: nvm, that's correct | |
| 19:21:09 | artom | That would *definitely* not scale | |
| 19:21:10 | dansmith | we have way too much of that shit today | |
| 19:21:14 | dansmith | yeeeeah. | |
| 19:21:18 | artom | Every boot request would go to every compute? | |
| 19:21:22 | mriedem | if you pass 2.1 and host, force ends up being None in the API and we pass the host to conductor, which then bypasses the scheduler | |
| 19:21:34 | efried | artom ohh, I see. | |
| 19:21:49 | edleafe | Hey! Why don't we allow *extensions*? That'll solve all these problems! | |
| 19:22:03 | efried | Way it's set up today, you can do the whole resource allocation business based on what the compute told you last time it checked in. | |
| 19:22:40 | efried | ...from a centralized spot (placement/scheduler) | |
| 19:22:58 | dansmith | and don't forget multi-hypervisor clouds | |
| 19:23:12 | dansmith | where much of the details aren't known until you get down to the compute, so if you couldn't pick the right one based on some generic properties, | |
| 19:23:21 | dansmith | you get there and libvirt says "wtf is a hyperv 2012.4?" | |
| 19:23:28 | dansmith | that's hugely wasteful | |
| 19:24:26 | efried | So if I need to do something funkily virt-specific, I have to do it at get_inventory time. | |
| 19:24:37 | efried | and setting-up-resource-providers time. | |
| 19:24:49 | dansmith | you have to expose it as a generic count of resources with traits | |
| 19:24:56 | efried | but constrained to ... yeah, what you said. | |
| 19:25:08 | dansmith | because that's a model that the rest of nova can understand | |
| 19:25:10 | artom | There was talk of doing virt driver capabilities as resources (or traits?), I think? | |
| 19:25:24 | dansmith | yep, exactly his hypervisor version query | |
| 19:26:31 | artom | Well, nova virt driver != hypervisor, but yeah, same gist | |
| 19:26:41 | efried | Which is why we need nested resource providers: so my hypervisor can be an outermost one and tag itself with e.g. "CUSTOM_AIX_CAPABLE", and then everything else underneath that will inherit that trait? | |
| 19:26:47 | dansmith | artom: sure, some of both | |
| 19:27:11 | dansmith | efried: no, no trait inheritance plans that I know of, | |
| 19:27:37 | dansmith | but if you request that trait from your compute node, then you won't consider resources under compute nodes that don't | |
| 19:27:45 | artom | efried, I think the nested stuff was thought up for PFs/VFs | |
| 19:27:54 | efried | How do I request a trait for my compute node? | |
| 19:28:18 | efried | I can't... ask for a compute node as a resource | |
| 19:28:22 | efried | can I? | |
| 19:28:24 | dansmith | no | |
| 19:28:45 | edleafe | Flavor extra_specs | |
| 19:28:47 | dansmith | I just mean a trait for whatever the top-level resource provider is that has your custom_aix_foo thing on it | |
| 19:30:00 | efried | What, like a VCPU?? | |
| 19:30:27 | efried | Sorry, thought I was getting the picture here, but that last one threw me for a loop. | |
| 19:30:30 | dansmith | efried: it was your example above | |
| 19:30:34 | dansmith | <efried>Which is why we need nested resource providers: so my hypervisor can be an outermost one and tag itself with e.g. "CUSTOM_AIX_CAPABLE", and then everything else underneath that will inherit that trait? | |
| 19:30:52 | efried | It's the hypervisor that's AIX-capable | |
| 19:30:54 | dansmith | I'm just drilling in on your comment about inheritance | |
| 19:31:02 | efried | As in, you can deploy an AIX VM on it. | |
| 19:31:04 | dansmith | right so that would be virt driver capabilities | |
| 19:31:28 | efried | Right, where/how do those get exposed? Is that still somehow in the placement universe? | |
| 19:32:10 | dansmith | so we're asking for a resource provider that has at least 2 VCPUs available, at least 1G of memory, with a trait of CUSTOM_AIX_WHYWOULDIWANNA | |
| 19:32:26 | dansmith | which would be your node with a virt driver that exposes sufficient inventory and traits | |
| 19:32:47 | artom | Wait, do traits apply to resources or resource providers? | |
| 19:33:04 | dansmith | there is no resources, only resource providers :) | |
| 19:33:16 | dansmith | a resource provider has a set of traits | |
| 19:33:38 | dansmith | a request demands or prefers traits, and asks for quantities of resources by name | |
| 19:33:46 | artom | Err | |
| 19:33:48 | dansmith | we find providers that have sufficient inventory and traits | |
| 19:33:49 | efried | okay, right, my host is the resource provider that provides VCPU and MEM_GB and DISK_GB | |
| 19:33:52 | edleafe | artom: inventory == resources | |
| 19:33:54 | artom | "quantities of resource" | |
| 19:34:00 | efried | and the resource provider has traits | |
| 19:34:01 | artom | "there is no resources" | |
| 19:34:18 | dansmith | artom: meaning there is no object called a resource | |
| 19:34:22 | artom | This isn't the Matrix, yo | |
| 19:34:33 | efried | artom I *think* dansmith means that *placement* doesn't know anything about specific resources. | |
| 19:34:45 | dansmith | artom: there are resource providers that have quantities of a given type, but that type isn't a thing that can have a trait, only the provider | |
| 19:34:53 | dansmith | efried: yeah | |
| 19:34:54 | edleafe | artom: no, but I have an inventory with resource_class == "spoon" | |
| 19:34:57 | efried | (Could it have been Ghostbusters, not Matrix, dansmith?) | |
| 19:35:21 | dansmith | I think I was thinking "there is no try, only do" or whatever | |
| 19:35:33 | artom | That's Star Wars | |
| 19:35:43 | dansmith | yeah, I dunno, I'm not a big enough nerd | |
| 19:35:46 | efried | Yup, and we've reached our limit of three nerd movie franchises. | |
| 19:36:02 | dansmith | yeah, | |
| 19:36:17 | efried | resource_class=SPOON would have a quantity of 8 or whatever | |
| 19:36:17 | dansmith | and eff jay for being on a plane and leaving me with you wolves | |
| 19:36:39 | efried | placement doesn't know about individual spoons | |
| 19:36:43 | dansmith | efried: well, SPOON=8 for consistency but yeah | |
| 19:36:45 | artom | There must always be a core in #openstack-nova | |
| 19:36:54 | artom | (Speaking of wolves) | |
| 19:37:36 | edleafe | er, CUSTOM_SPOON, but whatever | |
| 19:37:49 | dansmith | edleafe: if it's a custom resource yeah | |
| 19:38:22 | dansmith | edleafe: you understand all this, why are you making me squirm alone? :D | |
| 19:38:23 | efried | But if we had soup spoons and dessert spoons, we would either have to make two separate resource classes (SPOON_SOUP, SPOON_DESSERT), or two separate resource providers with traits (CUSTOM_SPOON_SOUP, CUSTOM_SPOON_DESSERT) | |
| 19:38:54 | edleafe | efried: pretty much, yeah | |
| 19:38:56 | mriedem | it'd be a spoon with different traits | |
| 19:39:11 | efried | mriedem The spoon doesn't have traits. | |
| 19:39:12 | dansmith | yeah | |
| 19:39:14 | edleafe | only spoon providers can have traits | |
| 19:39:14 | efried | The resource provider has traits | |
| 19:39:18 | efried | yeah | |
| 19:39:19 | tbachman | there is no spon | |
| 19:39:21 | tbachman | spoon | |
| 19:39:22 | artom | And anyways, there is no | |
| 19:39:23 | mriedem | so the spoon drawer is the provider | |
| 19:39:24 | artom | Dammit! | |
| 19:39:28 | mriedem | that provides spoons | |
| 19:39:39 | tbachman | lol | |
| 19:39:40 | efried | mriedem Right, but you can't have soup spoons and dessert spoons in the same drawer. | |
| 19:39:45 | dansmith | okay so this conversation is over right/ | |
| 19:39:45 | mriedem | i do | |
| 19:39:54 | mriedem | i have all sorts of spoons in the same drawer | |
| 19:40:05 | efried | Dude, okay, we're getting meta here, but I'm actually still trying to understand this seriously. | |