| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-03-09 | |||
| 16:08:33 | mriedem | like, a new agent service for managing placement type resource information | |
| 16:10:55 | leakypipes | mriedem: I'm not entirely sure where you're going with these questions... I can remove the multi-provider stuff from the spec, but frankly, I don't see why we'd want to limit ourselves to agents that only work with a single resource provider. | |
| 16:11:49 | mriedem | leakypipes: i'm just trying to understand. i don't know if i'm just retarded and don't know how neutron agents work *today*, or if you're talking about something that could be built off of this spec for a new neutron agent in the future. but if it's a problem then i'll just stop asking questions. | |
| 16:11:58 | leakypipes | superdan: to answer your question above about "if we just let them explicitly set the name on the provider, then can't we avoid providing a generic override mechanism so that other services can use the name to sync up?", we will need to provide trait override information in the (near) future -- think about the whole forbidden traits and cpu_model stuff. Do you propose adding more CONF options for trait overrides as well? | |
| 16:12:34 | leakypipes | mriedem: I'm feeling ganged up on. | |
| 16:12:37 | mriedem | operators, or external services, can set traits | |
| 16:12:50 | mriedem | nova just needs to not overwrite them | |
| 16:13:07 | mriedem | i don't think we need config options for that | |
| 16:13:12 | leakypipes | mriedem: and how do we signal to nova not to override *some* traits but not others? | |
| 16:13:13 | mriedem | it's why we have the rest api | |
| 16:13:21 | mriedem | CUSTOM_? | |
| 16:13:48 | mriedem | i thought there was some discussion about that at the ptg about overriding standard vs custom traits | |
| 16:13:50 | mriedem | would have to look | |
| 16:13:58 | leakypipes | mriedem: that's problematic because the specific traits we need to prevent overriding are things like CPU features when CONF.cpu_model is set. | |
| 16:15:04 | mriedem | L494 https://etherpad.openstack.org/p/nova-ptg-rocky | |
| 16:15:44 | superdan | leakypipes: I'm not ganging up on you, I promise | |
| 16:16:13 | superdan | leakypipes: I think we can avoid overwriting traits easily without any config by having things like the virt driver assert which ones it is authoritative over and leaving others alone | |
| 16:16:36 | mriedem | wrt merging traits i'd be fine with just not touching any traits that aren't in the set that we (nova-compute) says should be on the provider | |
| 16:16:39 | mriedem | the compute node provider | |
| 16:16:46 | mriedem | standard or custom | |
| 16:17:15 | mriedem | but if n-cpu says trait X should be on the provider, and someone removed it, then we're going to end up putting it back on | |
| 16:17:27 | leakypipes | superdan: how are you proposing that the virt driver indicate which traits it is authoritative over? | |
| 16:17:38 | superdan | leakypipes: like I said in the room, | |
| 16:18:05 | superdan | some sort of contract between compute and virt, where virt returns all the traits and a "assert", "de-assert", "dont-care" sort of thing | |
| 16:18:19 | openstackgerrit | Balazs Gibizer proposed openstack/nova-specs master: Network bandwidth resource provider https://review.openstack.org/502306 | |
| 16:18:25 | superdan | compute looks at the traits currently on a provider, and doesn't touch any that are not mentioned or listed as dont-care | |
| 16:18:31 | superdan | same for any compute-manager-owned traits | |
| 16:18:34 | leakypipes | superdan: and for non-virt things? | |
| 16:18:38 | superdan | same | |
| 16:19:00 | mriedem | i'm not yet sure why we need that level of granularity | |
| 16:19:11 | leakypipes | superdan: this "contract" of which you speak... that is my proposed provider config file. | |
| 16:19:25 | superdan | leakypipes: no, it's not | |
| 16:19:29 | leakypipes | yes, it is :) | |
| 16:20:10 | mriedem | the difference is the file is defined out of band, while the virt driver is in control of what it says should be on the provider | |
| 16:20:36 | cdent | presumably the contract has to live _somewhere_, or is just just "known" somehow? | |
| 16:20:43 | mriedem | the file is a proxy iow, so that nova can report stuff that the operator setup, w/o the operator having to set the traits on the provider directly in the rest api | |
| 16:22:00 | mriedem | cdent: i'm not yet sure why we need a contract, why we don't just merge in the common sense of what merge means | |
| 16:22:27 | mriedem | RP has traits x,y,z, nova-compute says it should also have 1,2,3, so we merge those and the RP has 1,2,3,x,y,z | |
| 16:22:53 | mriedem | nova-compute gets its traits from the virt driver | |
| 16:23:07 | leakypipes | mriedem: the file is saying "for this resource provider, ignore these auto-discovered traits or always use these traits even if you didn't auto-discover them. | |
| 16:23:38 | mriedem | leakypipes: so the file would have the forbidden traits logic built in? | |
| 16:23:59 | leakypipes | mriedem: yes, that's what the always and ignore sections are. | |
| 16:24:00 | mriedem | like pci whitelist, but traits blacklist | |
| 16:24:47 | leakypipes | mriedem: though the forbidden traits thing is more about *requesting* a specific traits *not* be present on a provider. | |
| 16:24:56 | mriedem | idk, i can't say i like the proxy aspect of this when we have a rest api for placement | |
| 16:25:19 | leakypipes | mriedem: which is different from the provider config YAML file which is saying what always should be set or always should be ignored for a provider. | |
| 16:25:23 | mriedem | it would be one thing if the traits were only set in the compute_nodes table and we didn't have a REST API to manipulate that data externally | |
| 16:26:13 | mriedem | the ignore case is the CPU features thing when host_model is set? | |
| 16:26:29 | mriedem | the 'always set these traits' thing can be done externally from nova | |
| 16:26:41 | leakypipes | mriedem: we absolutely *do* have a REST API for manipulating things. the provider config YAML stuff is a proposal for how to solve two primary problems: 1) notifying external agents about the identifier for a provider it needs to know about and 2) resolving the "admin set this thing and agent overwrote it" problem. | |
| 16:27:14 | mriedem | leakypipes: i'm talking about different rest apis | |
| 16:27:19 | openstackgerrit | Merged openstack/nova master: Fix indentation in doc/source/cli/* https://review.openstack.org/549166 | |
| 16:27:36 | mriedem | my point is that since we do have a placement rest api to set traits on a provider, we do'nt need nova to proxy that information via a yaml file | |
| 16:28:05 | mriedem | i get (1) | |
| 16:28:13 | leakypipes | mriedem: and what happens with the compute node auto-discover traits stuff? | |
| 16:28:21 | mriedem | for (2) if we simply merge the traits set externally with the traits that nova-compute reports, then we should be fine | |
| 16:28:53 | leakypipes | mriedem: somebody is going to overwrite somebody else. the provider config file is a solution to instruct things not to overwrite (or to always overwrite) certain attributes. | |
| 16:29:24 | mriedem | why does somebody need to overwrite somebody else? | |
| 16:29:39 | mriedem | that's what we do today, yes, but we can change that to merge | |
| 16:29:48 | leakypipes | mriedem: let's say the virt driver reports AVX2 trait and somebody removed that trait. the virt driver will just continue to report that trait if we "merge traits". | |
| 16:29:59 | mriedem | right | |
| 16:30:09 | openstackgerrit | Lee Yarwood proposed openstack/nova master: trivial: Rename reboot kwarg to hard_reboot https://review.openstack.org/551289 | |
| 16:30:15 | leakypipes | mriedem: so we need a way of instructing the virt driver not to report that trait. | |
| 16:30:25 | mriedem | why would someone remove it, is what i'm trying to get at | |
| 16:31:10 | leakypipes | mriedem: ok, let's use allocation ratio as a different example. say the virt driver uses an allocation ratio, but an admin has externally set the allocation ratio. who wins? | |
| 16:31:56 | leakypipes | mriedem: superdan's proposal was to add 3 more default_xxx_allocation_ratio CONF options to control this behaviour. My proposal is put all these things into a single provider config file format. | |
| 16:32:20 | mriedem | i'm not sure if we'd be able to tell if the allocation ratio was changed externally | |
| 16:32:34 | mriedem | we would see that it's different, | |
| 16:32:44 | mriedem | but it could be different because of a config change and restart of nova-compute | |
| 16:32:51 | leakypipes | mriedem: the absence of an allocation_ratio attribute on an inventory record int he provider config file format means "don't change this". | |
| 16:33:04 | kaisers_ | Hi! Can somebody pls. point me to where the QEMU_VERSION var in nova/virt/images.py is set from? I've an env running qemu-img 2.5.0 but nova (master) keeps on identifying this as 2010001 (which seemingly is 2.10.something) at that point which breaks things... :) | |
| 16:33:23 | mriedem | kaisers_: nova.virt.libvirt.driver | |
| 16:33:23 | cdent | (I think the trait removal is likely going to be pretty common (If I'm understanding it right): you buy some hardware that exposes cpus traits that you don't want to allow to limit or drive scheduling, so you need to say "on this machine turn off cpu trait barney") | |
| 16:33:27 | mriedem | somewhere in init_host or something | |
| 16:33:36 | kaisers_ | mriedem: thanks | |
| 16:34:35 | mriedem | cdent: wouldn't the operator just not configure the flavor to require trait barney? | |
| 16:35:00 | cdent | there are other flavors that do want barney | |
| 16:35:13 | cdent | but these machines are not for that | |
| 16:35:18 | mriedem | aggregates then | |
| 16:35:19 | mriedem | ? | |
| 16:35:39 | cdent | or turn off the traits? | |
| 16:35:50 | mriedem | your barney flavors are tied to the aggregates that allow barney | |
| 16:36:19 | mriedem | i just think the idea of masking inventory reporting is weird, | |
| 16:36:27 | mriedem | if the inventory is there, you can use it, or don't | |
| 16:36:39 | mriedem | inventory/trait/whatever | |
| 16:37:06 | mriedem | and it would further complicate the ways to isolate hosts and restrict flavors to them | |
| 16:37:16 | mriedem | b/c you could do it with aggregates, or with disabling traits, or whatever else | |
| 16:37:25 | cdent | yeah, I can that position too, I'm just trying to point out what I saw as one of the aspects of "why" this. My initial reaction was "oh god, yet another file" but then started to see how it was fairly tidy and powerful. | |
| 16:37:37 | mriedem | why not just have one way (that people are already used to) and make that work well | |
| 16:38:11 | mriedem | cdent: tidy and powerful for now, until we use it in practice and start to have all sorts of weird complicated things we didn't envision | |
| 16:38:13 | cdent | Yeah, perhaps. In my head, though, aggregates are difficult (I'm not sure why, they just are) to manage and reason about. | |
| 16:38:44 | cdent | Like I said, I don't have a strong opinion, just trying to see if the picture is clear. | |
| 16:38:53 | leakypipes | I don't really see why aggregates are involved here. | |
| 16:39:05 | mriedem | because cdent was trying to answer my question, | |
| 16:39:17 | mriedem | about why we'd explicitly ignore traits that nova-compute is reporting | |
| 16:41:17 | leakypipes | mriedem: I'm still unsure how you're proposing to solve the "a overwrites b overwrites a" problem. can you elaborate more on that? | |
| 16:41:45 | mriedem | stop overwriting. merge the traits. who is doing the overwriting? | |
| 16:42:18 | leakypipes | how do you "merge traits" when one of them has been manually deleted and the compute node keeps adding the same trait? | |
| 16:42:33 | leakypipes | admin deletes AVX2. virt driver keeps adding it. | |
| 16:42:40 | mriedem | and now we're back to my question about why would someone manually delete a trait that nova-compute is reporting | |