| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2019-07-18 | |||
| 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? | |
| 17:13:02 | efried | it's the virt driver's job to know about the hardware resources it has the ability to assign to VMs. | |
| 17:13:35 | sean-k-mooney | right ad the provider.yamls would know about resoce that are not assinged to the vm but are indrecly consumed by it | |
| 17:13:43 | sean-k-mooney | e.g power | |
| 17:14:05 | sean-k-mooney | or cache if the cache is affiend outside the virt dirver | |
| 17:14:21 | dansmith | efried: the validation becomes "is CUSTOM_ and not already in the stuff I got from the virt driver" right? | |
| 17:14:21 | sean-k-mooney | which you can do with rmd or sysfs and a crons script | |
| 17:14:56 | sean-k-mooney | dansmith: i would hope so. or at least not signifcatly more complex | |
| 17:15:10 | sean-k-mooney | the majority fo the validate would be done when parsing the file | |
| 17:15:13 | dansmith | yeah | |
| 17:15:17 | dansmith | yeah | |
| 17:15:29 | efried | dansmith: yes, the concern I had was with idempotency. The second time through, the provider_tree we hand to upt will already contain the CUSTOM_ RCs from the last iteration when we processed providers.yaml. So upt has to *remove* those, or we'll blow up when we process the providers.yaml blob the second time. | |
| 17:16:00 | dansmith | ah I see | |
| 17:16:06 | efried | if we think of upt's responsibility as simply "completely overwite the inventories for the providers I own" then it works. | |
| 17:16:07 | dansmith | maybe just not fail if they're identical? | |
| 17:16:17 | efried | yeah, or that, that could work. | |
| 17:16:25 | efried | um | |
| 17:16:28 | dansmith | just "isn't already defined or is exactly the same" | |
| 17:16:42 | efried | except "identical" needs to be forgiving of defaults | |
| 17:16:54 | efried | because my providers.yaml is allowed to give only "total" and let the other fields default. | |
| 17:17:04 | dansmith | it's already limited to CUSTOM_ so there wouldn't be any of those right? | |
| 17:17:08 | sean-k-mooney | is identical would require the virt driver to have the infor from the yaml to compare agaisnt | |
| 17:17:19 | efried | default inventory values, like min_unit etc. | |
| 17:17:19 | cdent | good luck, gotta make dinner | |
| 17:17:21 | dansmith | efried: oh I see, | |
| 17:17:23 | efried | o/ cdent | |
| 17:17:29 | sean-k-mooney | unless the virt driver kept a list of the invetores it managed and only looked at those | |
| 17:17:30 | dansmith | well, I'm sure you can work that out | |
| 17:17:35 | sean-k-mooney | cdent: o/ | |
| 17:17:40 | efried | sean-k-mooney: the virt driver does that | |
| 17:17:51 | dansmith | sean-k-mooney: I think what you mean is just mark in the provider tree where each thing came from | |
| 17:17:54 | sean-k-mooney | right so if it igores inventories not in that list | |
| 17:17:56 | dansmith | so we can check the origin | |
| 17:18:05 | efried | except "only looked at those" is what I'm saying *doesn't* work. | |
| 17:18:29 | sean-k-mooney | ya but we dont have an owner on the inventory to do that currently | |
| 17:18:32 | sean-k-mooney | or ever | |
| 17:18:33 | efried | because we're enforcing that providers.yaml is not allowed to muck with resources upt controls. | |
| 17:18:41 | sean-k-mooney | so we would have to determin that in the RT | |
| 17:18:51 | efried | yes | |
| 17:18:57 | sean-k-mooney | whci we could do if we updated form teh provder.yaml first | |
| 17:19:01 | sean-k-mooney | then called the virt dirver | |
| 17:19:07 | efried | not the second time around. | |
| 17:19:08 | sean-k-mooney | then added the auto tratis | |
| 17:19:27 | sean-k-mooney | we should be able to mark them second time around | |
| 17:19:33 | efried | "mark" how? | |
| 17:19:49 | efried | You're talking about adding a metadata field to the ProviderTree object or something? | |
| 17:20:10 | dansmith | efried: that's what I meant, but I'll leave it to you about what approach is best for that conflict resolution | |
| 17:20:12 | sean-k-mooney | we woudl still get the set form teh file and then the tree we pass into upt we embed a flag in each inventory | |
| 17:20:33 | efried | ugh, that seems overly complicated to me. | |
| 17:20:34 | sean-k-mooney | efried: yes but not one that need to ever leave nova | |
| 17:20:40 | efried | yeah, I get that | |
| 17:20:56 | efried | I would just hate to explode the compute service because of a cache bug. | |
| 17:21:17 | efried | maybe we take advantage of the init kwarg | |
| 17:21:21 | efried | and only do that check the first time through. | |
| 17:21:35 | efried | because that's the only time we're worried about it anyway. | |
| 17:21:38 | dansmith | as long as we don't re-load the yaml, that would be reasonable It hink | |
| 17:21:57 | sean-k-mooney | well the work flwo would be. get prov_tree from placement. generate tree from file. merge them and mark any that are common as from the file then pass it to the driver upt meethod | |