| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-02-14 | |||
| 21:32:38 | dansmith | efried: ha | |
| 21:32:40 | dansmith | *ah | |
| 21:32:58 | dansmith | efried: you could have flavors you allow BFV from but that aren't dedicated to bfv | |
| 21:32:59 | efried | dansmith: Getting the trait from not-flavor to avoid Skittles. | |
| 21:33:47 | dansmith | efried: so if you want to make sure that BFV requests using generic flavors don't get routed to any old host, you might want to slap a trait on those requests so that you can send them to the right place | |
| 21:33:59 | mriedem | my idea was that the pre-placement filter thing dan's spec is adding, would shove a trait into the flavor embedded in the reqspec b/c that's currently how we get the traits from the user to the scheduler to placement | |
| 21:34:28 | efried | Right, so we're merging traits-from-flavor with traits-from-elsewhere | |
| 21:34:32 | dansmith | we could do that too | |
| 21:34:41 | mriedem | so if we know we're doing bfv on a multiattach volume (or a tagged bdm), this code puts a CUSTOM_COMPUTE_SUPPORTS_MULTIATTACH on the flavor within the reqspec | |
| 21:34:47 | mriedem | efried: yeah | |
| 21:35:10 | efried | mriedem: Not on the flavor - on the allocation_candidates request | |
| 21:35:12 | mriedem | we could always do something else like the pre-placement filters add RequestSpec.system_traits (like system_metadata) or something | |
| 21:35:25 | mriedem | efried: but we have to get them to the allocation candidates request somehow | |
| 21:35:26 | dansmith | efried: on the flavor in the reqspec if we want it to be honored for a resize or migration kinda thing | |
| 21:36:25 | efried | Do we make other "modifications" to flavor data between when we pull it from the flavor db and when we attach it to the instance? | |
| 21:36:36 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Remove old flavor_create db api method https://review.openstack.org/544703 | |
| 21:36:51 | dansmith | efried: we suggested doing this for zero-root-disk BFV things I think | |
| 21:37:12 | dansmith | efried: we also probably need traits to be stored in the reqspec proper for when the user asked for them right/ | |
| 21:37:22 | mriedem | https://review.openstack.org/#/c/428505/ ? | |
| 21:37:54 | dansmith | mriedem: no, mine below that | |
| 21:37:56 | efried | My point is that it feels kinda weird for me to say 'boot an instance with this flavor, that has traits X,Y,Z' and then when I look at the flavor on the instance later, it also has traits A,B,C. I'm like where tf did those come from? | |
| 21:38:09 | mriedem | efried: you wouldn't see those | |
| 21:38:15 | efried | Okay, then I'm cool. | |
| 21:38:25 | efried | If they're on the RequestSpec and not on the flavor per se. | |
| 21:38:26 | mriedem | the instance.flavor would show the public facing flavor you used to create the instace | |
| 21:38:45 | dansmith | instance.flavor not reqspec.flavor | |
| 21:38:46 | mriedem | right, they'd be on the flavor embedded within the request spec, which doesn't get exposed out of the api today | |
| 21:38:55 | mriedem | ? | |
| 21:39:11 | mriedem | GET /servers/{id}/detail shows the flavor embedded in the instance | |
| 21:39:17 | dansmith | although we probably create instance.flavor from reqspec.flavor | |
| 21:39:28 | mriedem | we don't | |
| 21:40:05 | mriedem | https://github.com/openstack/nova/blob/master/nova/compute/api.py#L910 | |
| 21:40:12 | mriedem | https://github.com/openstack/nova/blob/master/nova/compute/api.py#L891 | |
| 21:40:19 | efried | So yeah. dansmith What I'm saying is that this is an alternative that should be at least documented in the Alternatives section; *and* some more explanation along these lines is needed for the reader to make sense of the statement on L47 that mentions traits for the first/last/only time. | |
| 21:40:20 | dansmith | it doesn't really matter anyway, as that'd be a conversation for how we're going to do a thing with traits, | |
| 21:40:32 | dansmith | unrelated to the general idea of augmenting the request to placement | |
| 21:40:57 | dansmith | efried: I'm not sure I get what is an alternative | |
| 21:41:10 | dansmith | efried: traits for the tenant isolation is not an option, IMHO | |
| 21:41:33 | dansmith | if you mean it's an alternative to the "and also maybe later we could do a bfv thingy", then agree, but it's not really the subject of this spec | |
| 21:41:46 | efried | So | |
| 21:41:53 | mriedem | "Although not covered by this spec directly, the mechanism added here | |
| 21:41:53 | mriedem | would enable other such request-limiting filters in the future. For | |
| 21:41:53 | mriedem | example," | |
| 21:42:00 | mriedem | that seems pretty clear that this is a framework type thing | |
| 21:42:08 | mriedem | the spec is dealing with the specific tenant aggregate problem, | |
| 21:42:10 | dansmith | this could have been two specs, but I felt it was way better to not have a tiny spec for each | |
| 21:42:14 | mriedem | but is generic enough that we can build on it for other problems | |
| 21:42:32 | mriedem | other problems like bfv | |
| 21:42:33 | dansmith | maybe I'm missing what efried is saying is an alternative though | |
| 21:43:43 | mriedem | i think he's saying, if i have A, B, C in aggregate X, rather than model it as an aggregate, the resource providers for A,B,C would have an X trait | |
| 21:43:49 | mriedem | which is a PITA | |
| 21:43:53 | mriedem | so i agree we don't want to do that | |
| 21:44:10 | dansmith | for tenant isolation for sure | |
| 21:44:11 | efried | dansmith: I agree that [traits for tenant isolation if you have to specify the traits in flavors] is not an option - but you describe it in Alternatives and explain why it's not an option (Skittles). IMO, [traits for tenant isolation where we merge the traits from the RequestSpec that we got from conf just like you're talking about doing with aggregates] *may* also not be viable, but it doesn't suffer from your main objec | |
| 21:44:11 | efried | therefore at least closer to being a viable option, and should therefore be described in the Alternatives section, and dismissed with an explanation as to why it's being dismissed if indeed there's a good reason for that. | |
| 21:44:53 | mnaser | mriedem: good call on suggesting functional test. while the codebase seems to actually not stop there, it looks like it's not getting any bdms in _delete() .. BlockDeviceMappingList(objects=[]) | |
| 21:45:03 | efried | And then you get the added bonus of being able to refer to that model from L46-7, because otherwise L46-7 doesn't make sense in the context of the rest of the spec. | |
| 21:45:06 | mnaser | is it possible that bdms are created later? :< | |
| 21:45:18 | dansmith | efried: ah okay, that's what I'm saying is also not an option IMHO, but for other reasons than flavor explosion | |
| 21:45:21 | mriedem | mnaser: i bet i know why, | |
| 21:45:27 | mriedem | mnaser: i bet the bdms aren't buried in cell0 | |
| 21:45:32 | efried | dansmith: Cool, please say that in the spec and I'm good. | |
| 21:45:50 | mnaser | yay.. | |
| 21:45:58 | mnaser | should they be buried in cell0? | |
| 21:45:58 | mriedem | mnaser: just a guess, but that's my guess | |
| 21:46:01 | dansmith | efried: because we have to label each compute individually with the trait and I think that's what aggregates are for, but yep, I'll put it in as a slightly different thing.. just for you :) | |
| 21:46:20 | efried | Thanks dansmith. Kisses. | |
| 21:46:40 | mriedem | it's a valentines day miracle | |
| 21:46:54 | efried | dansmith: Having to label each compute individually with the trait - what I'm confused about on L46-7 is why that argument doesn't apply for BFV too. | |
| 21:47:47 | dansmith | efried: well, the way I phrased that is silly, since that's traits all up and down, but let me say it in the spec and then you can argue about it, if it's clear | |
| 21:47:51 | mriedem | efried: for one thing, nova-compute can report the BFV traits capabilities automatically, the operator / admin doesn't have to do that for every tenant | |
| 21:48:00 | mnaser | select * from block_device_mapping => Empty set | |
| 21:48:09 | mnaser | i guess i'll get them added.. | |
| 21:48:19 | efried | mriedem: It can do that for host aggs too, though, nah? | |
| 21:48:34 | dansmith | mriedem: and compute can report aggregates automaticaly | |
| 21:48:47 | mriedem | that's an up-call for one thing | |
| 21:49:19 | mriedem | nova-compute would have to get the aggregates that the host is in, find the tenant_id meta on those, and convert that to traits on the RP | |
| 21:49:22 | mriedem | i agree we could do that, | |
| 21:49:22 | efried | mriedem, dansmith: Oh, so yeah, that was my point: we're talking about automatically mirroring host aggs as placement aggs; in the alternative I describe above, we would be instead automatically mirroring host aggs as traits on the compute node RP. | |
| 21:49:24 | mriedem | but it's an up-call | |
| 21:49:53 | mriedem | the bfv trait is much more clear to me as a 'trait', | |
| 21:50:03 | dansmith | efried: right, but then you create a tenant trait, apply to all computes. if you want to reassign a cell to a different tenant, you remove/reapply against all those computes | |
| 21:50:04 | mriedem | the tenant isolation thing is very much less a 'trait' in my head | |
| 21:50:07 | dansmith | efried: compared with: | |
| 21:50:25 | efried | ...same but for agg associations | |
| 21:50:27 | dansmith | efried: this cell is aggregate cell-foo, and add "tenant bar is allowed" to the cell-foo aggregate, | |
| 21:50:44 | mriedem | mnaser: oh i know the problem, | |
| 21:50:46 | dansmith | efried: then you can reassign a cell to a tenant in one place instead of mass add/remove of the other trait | |
| 21:51:04 | efried | Sorry, I don't get the difference. | |
| 21:51:10 | dansmith | efried: hangout? | |
| 21:51:11 | efried | If the trait is CUSTOM_CELL_FOO | |
| 21:51:12 | mriedem | mnaser: so in conductor schedule_and_build_instances, we call the scheduler for a host and if we get one, we look up what cell that host is in and create the instance and bdms in that cell, | |
| 21:51:24 | efried | dansmith: Sure | |
| 21:51:25 | mriedem | mnaser: if scheduling fails, we create the instance in cell0, | |
| 21:51:30 | mriedem | but we don't create the bdms in cell0 | |
| 21:51:32 | mnaser | but not the bdms | |
| 21:51:49 | mriedem | exactamundo | |
| 21:51:50 | mriedem | melwitt: ^ | |
| 21:51:52 | dansmith | efried: required https://hangouts.google.com/call/vebCoylDfu_0tvlCDPwmAAEE, edleafe mriedem jaypipes optional | |
| 21:52:04 | mnaser | i guess i'll look into making it create bdms in cell0 | |