Earlier  
Posted Nick Remark
#openstack-nova - 2022-01-31
14:51:54 gmann sean-k-mooney: stephenfin +1 on changing return code from 201 to 400 without microversion in case of 'Reject duplicate port IDs in' because server goes in error at the end
14:51:58 opendevreview Balazs Gibizer proposed openstack/placement master: Extra tests around required traits https://review.opendev.org/c/openstack/placement/+/825846
14:51:59 opendevreview Balazs Gibizer proposed openstack/placement master: Extend the RP db query to support any-traits https://review.opendev.org/c/openstack/placement/+/825848
14:51:59 opendevreview Balazs Gibizer proposed openstack/placement master: Refactor trait normalization https://review.opendev.org/c/openstack/placement/+/825847
14:52:05 opendevreview Balazs Gibizer proposed openstack/placement master: DB layer should only depend on trait id not names https://review.opendev.org/c/openstack/placement/+/826490
14:52:06 opendevreview Balazs Gibizer proposed openstack/placement master: Extend the RP tree DB query to support any-traits https://review.opendev.org/c/openstack/placement/+/825849
14:52:06 opendevreview Balazs Gibizer proposed openstack/placement master: Enhance doc of _get_trees_with_traits https://review.opendev.org/c/openstack/placement/+/825780
14:52:07 opendevreview Balazs Gibizer proposed openstack/placement master: Add any-traits support for listing resource providers https://review.opendev.org/c/openstack/placement/+/826491
14:52:29 opendevreview Balazs Gibizer proposed openstack/placement master: Add any-traits support for allocation candidates https://review.opendev.org/c/openstack/placement/+/826492
14:52:30 opendevreview Balazs Gibizer proposed openstack/placement master: Remove unused compatibility code https://review.opendev.org/c/openstack/placement/+/826493
14:52:43 opendevreview Balazs Gibizer proposed openstack/placement master: Add microversion 1.39 to support any-trait queries https://review.opendev.org/c/openstack/placement/+/826719
14:52:53 gmann gibi: sean-k-mooney bauzas for placement API ignoring the extra param in query seems like API change which impact users. We should not do that without microversion because of interop.
14:53:28 gibi gmann: even if ignoring a repeated silently hides an error?
14:53:36 gibi *repeated param
14:54:35 gmann gibi: sean-k-mooney bauzas we fixed that in nova with microversion only - https://specs.openstack.org/openstack/nova-specs/specs/train/implemented/api-consistency-cleanup.html#proposed-change
14:54:54 gibi e.g. the user asked for an RP that has both trait A and trait B but because A is ignored it gets RPs with only trait B
14:55:12 gibi this is a logic error not just inconvinience
14:56:21 gibi so it is not about ignoring invalid query params
14:56:23 gmann gibi: but that is what user asked, 'trait B' at the end of query he mentioned. it can be used in confusion as I am mentioning two value in single field and API should accept it as both but that is wring query
14:57:01 gmann gibi: yeah so this is only if user query in for same field.
14:57:04 gibi I don't think that when the user said required=A&required=B she meant that only apply B filter
14:57:29 gmann how they can do multiple query ? for 'required' A and B both together?
14:58:03 gibi today with required=A,B
14:58:20 gibi after microversion 1.39 required=A&required=B will work too
14:58:39 gibi but today required=A&required=B is paresed as required=B by placement
15:00:18 gmann gibi: so you are fixing it with 400 or allow required=A&required=B to return A and B ?
15:00:46 gibi I have a bugfix without microversion bump that retuns http400 if required is repeated
15:01:04 gibi and I have a feature with a microversion bump that allows repeating and pareses it as A and B
15:01:14 gibi (and that microversion adds other things to required too)
15:01:52 gibi gmann: this is the series, the bottom is the bugifx https://review.opendev.org/q/topic:any-traits-support
15:02:38 opendevreview Stephen Finucane proposed openstack/nova stable/xena: api: Reject duplicate port IDs in server create https://review.opendev.org/c/openstack/nova/+/827120
15:02:41 gmann ok so changing behavior of " required=A&required=B " with microversion but for older microversion we will change 200 -> 400 right ?
15:02:58 sean-k-mooney gmann: yes
15:03:39 sean-k-mooney today if you are repeating the required parmater you have a bug in the code that is calling placement
15:03:57 sean-k-mooney with the new version there will be a vaild meanign for that and that will be supproted with the new microverion
15:04:15 gibi gmann: yes
15:04:28 gmann 'changing behavior of " required=A&required=B " with microversion' is all good, I am thinking on for old microverison change
15:04:29 gibi btw efried is on gmann's side in the code review...
15:04:36 gmann which break users
15:04:47 sean-k-mooney gmann: it wont break users
15:04:57 sean-k-mooney gmann: user that have a duplciat request are already broken
15:04:58 gibi gmann: it breaks uses if the user query was wrong in the first place
15:05:03 efried ^
15:05:07 gmann sean-k-mooney: 200 to 400. when user asking with wring query
15:05:31 sean-k-mooney yes it will only be 400 for an invild query
15:05:38 sean-k-mooney where one of the requiremnt was being ignored
15:06:57 sean-k-mooney nova wont generate this but if we were to consider the isolated aggreates feature
15:06:59 sean-k-mooney https://docs.openstack.org/nova/latest/reference/isolate-aggregates.html
15:07:19 gibi I can imagine one case when we break a valid query. required=A,B&required=A,B is valid today and has a good meaning but it will be HTTP 400 after the fix
15:07:36 sean-k-mooney if we had &required:CUSTOM_LICENSED_WINDOWS&required:CUSTOM_SOMETHING_ELSE
15:07:43 sean-k-mooney the the isolated aggreate part would be lost
15:07:55 opendevreview Stephen Finucane proposed openstack/nova stable/wallaby: api: Reject duplicate port IDs in server create https://review.opendev.org/c/openstack/nova/+/827121
15:08:19 sean-k-mooney gibi: two idential values i guess we could check for and allow that
15:08:39 opendevreview Stephen Finucane proposed openstack/nova stable/victoria: api: Reject duplicate port IDs in server create https://review.opendev.org/c/openstack/nova/+/827122
15:08:51 gibi sean-k-mooney: we coudl but that gets complicate if we need to allow required=A,B&required=B,A as well
15:09:10 sean-k-mooney gibi: it does and i would still consider that to be invalid today
15:09:19 opendevreview Stephen Finucane proposed openstack/nova stable/ussuri: api: Reject duplicate port IDs in server create https://review.opendev.org/c/openstack/nova/+/827123
15:09:29 sean-k-mooney it makes logical sense but the parmater is not intended to be repatable today
15:09:30 efried IMO going into the weeds to allow special corner cases is not The Way. I think we should fix this, but it would be best to do it in a microversion.
15:09:46 efried And by "we" of course I mean "y'all" :P
15:09:50 sean-k-mooney efried: we cant backport it then
15:10:05 sean-k-mooney we can certenly fix it in a microverion if that is what we want
15:10:24 sean-k-mooney but if we do that we need to docuemnt that for older microversion only the last requires clasue will be used
15:10:34 gibi we have the microversion to fix it above in that series :)
15:10:37 sean-k-mooney and we need to ensure we dont break that goign forward for older microverion so tech debt
15:11:04 sean-k-mooney gibi: yes i guess it fixed implictly by the new fature
15:11:04 opendevreview Imran Hussain proposed openstack/nova master: [nova/libvirt] Support for checking and enabling SMM when needed https://review.opendev.org/c/openstack/nova/+/825496
15:11:10 sean-k-mooney *feature
15:11:11 gibi sean-k-mooney: yes
15:11:27 gmann f I am using it required=A,B&required=B with expectation that I need B (onerously wrong way) but it will be broken if we do without microversion
15:11:48 efried such is life. I thought the whole point of the microversion thing was that we weren't locked into major versions where we had to worry about backporting at all. You use whatever microversion you use, from whatever version of other stuff you are using, to support whatever features you need.
15:11:54 gmann and if we are changing the behavior with microversion then we are fixing it anyways so no need to fix for older microversion
15:12:08 efried ^
15:12:48 gmann gibi: if you would change it from 400 ever then we might think to do without microversion or not. otherwise it is like required=A,B&required=B is 200 now, required=A,B&required=B is 400 after fix required=A,B&required=B is again 200 with microversion
15:13:06 gmann * if you would change it from 400 always
15:13:08 sean-k-mooney efried: iguess we were just tryign to avoid operators having upgrade pain
15:13:11 gmann * if you would change it to 400 always
15:13:19 sean-k-mooney nova will not repeat the parmaters today
15:13:30 sean-k-mooney so for nova this wont matter one way of another
15:14:32 efried yeah, as usual the reality is that it is vanishingly unlikely that anything in the field is going to be affected by this fix; it's a matter of doing The Right Thing software hygiene process-wise.
15:14:58 gibi I feel more hygenic if we not silently ignore query params
15:15:00 sean-k-mooney right so hygine wise accepting known invlaid input to me is wrong
15:15:33 efried um, that's not the point. I don't think anyone is disputing that there's a bug. It's a matter of the proper procedure to get the fix done.
15:15:42 opendevreview Stephen Finucane proposed openstack/nova stable/train: api: Reject duplicate port IDs in server create https://review.opendev.org/c/openstack/nova/+/827126
15:15:49 gibi I cannot fix the bug on stable branches if it is requires a microversion bump
15:16:09 gmann efried: yeah.
15:16:10 efried stable branches of what?
15:16:14 sean-k-mooney placment
15:16:16 gibi placenet
15:16:20 gibi placement
15:16:49 efried And those stable branches affect... what? Only OpenStack?
15:16:51 gmann it is definitely a bug but our code has made it working in some way even with not expected result
15:17:27 gibi efried: this argument can be used for any placement change. should we then drop all placement stable branches?
15:17:38 gmann or may be expected results as we cannot say users would not be using it for query B only but in mistaken way of leaving duplicate query
15:18:09 efried IMHO documenting the old broken behavior for stable branches would be adequate.
15:18:54 efried Stable consumers who are affected and care can fix their query if they wish.
15:18:55 gmann gibi: sean-k-mooney efried I feel best way for existing user or stable is to update the api-ref "required=A,B&required=B is unexpected behavior until microversion 1.39 and after it work like returning both "
15:19:32 gmann yeah documenting it is enough I think when we are anyways fixing it with microversion
15:20:32 gmann that is how we do for any other bugs also right? 'fix in new microversion and old microverison it is bug and we donot fix'
15:20:39 sean-k-mooney gmann: well the primary reason for supprot it in 1.39 is for the any traits feature

Earlier   Later