Earlier  
Posted Nick Remark
#openstack-nova - 2019-07-18
16:54:38 efried cdent: not yet, but we've been trying to leave it open for that possibility (in some form) in the future.
16:54:39 dansmith definitely should not
16:54:48 efried okay.
16:54:49 efried so
16:54:50 sean-k-mooney if we allw modifcation of inventores/traits creted by the virt driver i also conceed we might want to delgate processign to the virt driver at that point
16:55:05 dansmith efried: don't we have a declaration of which traits are owned by the compute and virt, so that we can wholly box off those anyway?
16:55:17 efried today: update_provider_tree => update_auto_traits
16:55:17 efried tomorrow: update_provider_tree => process_providers_yaml => update_auto_traits
16:55:24 efried dansmith: no, unfortunately not
16:55:38 efried and in fact, the above mixes poorly
16:55:38 sean-k-mooney dansmith: not really. unless we say provdier.yaml can only use CUSTOM_
16:55:40 dansmith efried: well, maybe we should do that as part of this.. I know we discussed it before
16:55:44 sean-k-mooney which i think is too restrictive
16:55:51 dansmith sean-k-mooney: well, that would probably not be too bad, IMHO
16:55:54 efried because update_provider_tree may have some traits it enforces
16:56:13 dansmith it would clearly draw a box around the things you're doing as being purely localized customization and not mucking with internal features
16:56:20 efried but then update_auto_traits (which is not under control of the virt driver -- except as declared by the compute capabilities dict) has others
16:56:21 sean-k-mooney it would be nice to be able to use a standard hyper treading treat or secure boot trait
16:56:33 sean-k-mooney and use the file to add them if its supported
16:56:42 efried dansmith: unfortunately it's not easy to do. See venn diagram here https://docs.openstack.org/nova/latest/reference/update-provider-tree.html#taxonomy-of-traits-and-capabilities
16:56:57 dansmith sean-k-mooney: but why would that not be exposed by the driver if it's available and enabled? making operators track that is dumb
16:57:03 sean-k-mooney im not sure if those are actully good examples
16:57:06 efried that is, we've identified the problem before, but punted on trying to solve it because it's too hard.
16:57:20 dansmith efried: CUSTOM_ would make it pretty easy
16:57:25 sean-k-mooney dansmith: well the hypertreading tread is explcitly not owned by the virt driver
16:57:42 efried hum
16:57:43 dansmith sean-k-mooney: why?
16:57:52 sean-k-mooney its stated that way to allow the cpu tread polices to work
16:58:12 dansmith sean-k-mooney: give me a reason that makes sense, not one that is tied to how things work today :)
16:58:44 sean-k-mooney this is why i said that might not be a good example but its in che CPU standaisation in placement spec
16:59:14 dansmith ack
16:59:29 sean-k-mooney last paragrh in https://github.com/openstack/nova-specs/blob/master/specs/train/approved/cpu-resources.rst#add-hw_cpu_hyperthreading-trait
16:59:42 sean-k-mooney well that section in general.
16:59:55 sean-k-mooney im not sure if there are standard traits you would want to manage this way
17:00:04 sean-k-mooney i just didnt want to assuem there wasnt
17:00:40 dansmith I think saying that these things are all restricted to the CUSTOM_ realm is a good line, IMHO
17:00:43 efried I think I can buy CUSTOM_ only.
17:00:51 sean-k-mooney again for v1 we could say just CUSTOM_ untill we have a usecase that requires standard traits
17:01:00 dansmith efried: you willing to say that for traits and inventory or just the former?
17:01:33 sean-k-mooney e.g. you can only have CUSTOM_ resouce classes too?
17:01:41 dansmith I'm less sure about it for inventory, but it does eliminate a lot of my concern over overriding virt inventory
17:01:47 efried well, in both cases it would be nice to be able to propose standard so that, if/when those features become native, you don't have to reshape.
17:01:54 sean-k-mooney i think invntories are less of an issue
17:01:56 efried but
17:02:09 efried I can see where it simplifies things to say CUSTOM_ only for now.
17:02:12 dansmith efried: seems like a clearer line though
17:02:15 efried yes
17:02:39 dansmith efried: do you actually expect people to define their own non-custom classes in placement? if they do they run up against id conflict right?
17:02:48 sean-k-mooney we have previosly agreed that that virt divers should not use CUSTOM_ stuff in general right
17:02:57 efried dansmith: no, they would have to propose them in the actual repos
17:03:01 dansmith sean-k-mooney: except for ironic which *relies* on it
17:03:08 dansmith efried: right, so then they have to reshape anyway
17:03:14 sean-k-mooney and i gues the vPMEM stuff
17:03:28 sean-k-mooney ok ignore the virt driver wont use it thing
17:03:32 efried I'm saying if they propose the standard ones before they start customizing, they don't need to reshape.
17:03:46 dansmith efried: that's a big if, but okay :)
17:03:51 efried anyway, I think trying to anticipate how reshapes play in here is a fool's errand
17:04:07 cdent It's an important question though
17:04:10 dansmith I'm massively happier about all this if it's restricted to CUSTOM_
17:04:17 efried so yeah, CUSTOM only for both traits and resource classes is okay for this rev
17:04:31 cdent if the point of the yaml file is to allow people to experiment on thing that they then expect to some day become "normal"
17:04:51 efried cdent: yeah, that's where I was leaning
17:04:51 dansmith cdent: that may be one use of it, but not the primary use I expect
17:05:30 cdent I was going on what the spec says, because I _still_ have trouble comprehending who the user is here
17:05:49 sean-k-mooney there may be some things we never want nova to own on the comptue node like the cyborg aclleartos so something may move out of the provdier.yaml to other service or jsut stay there
17:05:52 dansmith cdent: the user is intel :/
17:05:54 cdent it reads as "some hardware vendors want to get some stuff in faster than nova can do it,but still want nova to do it"
17:06:09 dansmith cdent: pretty much :)
17:06:17 cdent hawt
17:06:32 sean-k-mooney well RMD is one usecase
17:06:34 sean-k-mooney there are others
17:06:53 sean-k-mooney probably
17:07:00 cdent whereas when it was coming in from the jay angle, I understood more as "sometimes we want to shape the hardware that is present to make it look different from what it says"
17:07:21 dansmith I don't think that's jay's angle but I could be wrong
17:07:41 sean-k-mooney well jay would like to abstract where it makes sense too
17:07:52 sean-k-mooney to not expose every faset of the hardware topology
17:07:57 dansmith and in his absence, I would claim that his angle is my angle, which is that this is for custom stuff, like accounting for fan capacity in aisles, etc
17:08:01 sean-k-mooney just the bits that we need
17:08:05 openstackgerrit Artom Lifshitz proposed openstack/nova stable/rocky: [DNM] testing bug/1813789 revert resize events https://review.opendev.org/671303
17:08:29 sean-k-mooney dansmith: ya one of the usecase i was thinking of was power and termal cpasity
17:08:30 cdent fans in aisles are so cool
17:08:39 dansmith sean-k-mooney: yeah
17:08:47 efried So then this suggests a flow like:
17:08:47 efried 0) parse and schema-validate the file. (This happens just once, on startup, and fails the compute service if something is wrong)
17:08:47 efried Then in the RT _update flow:
17:08:47 efried 1) update_provider_tree (as today). (If we ever decide we want to give the driver direct pre/post processing control over the providers.yaml content, we could pass the json blob as a kwarg here. But not now.)
17:08:47 efried 2) automatic traits (as today)
17:08:48 efried 3) merge in providers.yaml stuff. (I think a second level of validation happens here, and fails the compute service if something is wrong -- that should only be possible the first time through, so we're not worried about the service dying after having been running for a while)
17:08:48 efried 4) update_from_provider_tree (flush to placement) (as today)
17:10:37 efried I'm not sure how to detect a conflict between a custom RC from upt and one from providers.yaml.
17:11:04 sean-k-mooney the validation of 3 might be as simple as make sure the intersection between the inventoires form each part of the merger is 0
17:11:19 efried yeah, that's what I'm noodling
17:11:27 sean-k-mooney e.g. an invenotry is not defiend both the provider and virt driver trees
17:11:35 efried that puts a bit of extra onus on upt to make sure it doesn't "ignore resource classes it doesn't know about"
17:12:05 efried cause today we're careful to tell upt it must "ignore child providers it doesn't know about"
17:12:09 sean-k-mooney ya that is related to the general problem of shareign RP between service.
17:12:13 efried but I think that doesn't conflict.
17:12:15 sean-k-mooney which for now we have punted
17:12:20 efried yes
17:12:23 cdent we keep having discussions about things knowing about things, and that makes me anxious. how does anything know?

Earlier   Later