[openstack-dev] [nova] solving API case sensitivity issues

Sean Dague sean at dague.net
Wed Feb 24 20:34:15 UTC 2016

On 02/24/2016 03:13 PM, Mooney, Sean K wrote:
>> -----Original Message-----
>> From: James Bottomley [mailto:James.Bottomley at HansenPartnership.com]
>> Sent: Wednesday, February 24, 2016 5:46 PM
>> To: Sean Dague <sean at dague.net>; openstack-dev at lists.openstack.org
>> Subject: Re: [openstack-dev] [nova] solving API case sensitivity issues
>> On Wed, 2016-02-24 at 11:40 -0500, Sean Dague wrote:
>>> On 02/24/2016 11:28 AM, James Bottomley wrote:
>>>> On Wed, 2016-02-24 at 07:48 -0500, Sean Dague wrote:
>>>>> We have a specific bug around aggregrate metadata setting in Nova
>>>>> which exposes a larger issue with our mysql schema.
>>>>> https://bugs.launchpad.net/nova/+bug/1538011
>>>>> On mysql the following will explode with a 500:
>>>>>> nova aggregate-create agg1
>>>>>> nova aggregate-set-metadata agg1 abc=1 nova
>>>>>> aggregate-set-metadata agg1 ABC=2
>>>>> mysql (by default) treats abc == ABC. However the python code does
>>>>> not.
> Personally I would argue that the python code is correct
> and they should not be considered the same. ABC and abc are two different keys
> in the aggregate metadata and I do not think it is correct to treat them the same.
> Assuming the above commands I would expect the metadata to contain  two key pairs [abc=1,ABC=2]
>>>>> We have a couple of options:
>>>>> 1) make the API explicitly case fold
>>>>> 2) update the mysql DB to use latin_bin collation for these
>>>>> columns
> This should not be latin_bin as Unicode is allowed in URLs this should really be utf8_bin

There are no urls stored here. This is content coming through the body.
While I do appreciate many folks weighing in that haven't read the bug
yet, I would be even better if people did read the bug first.

We have the ability to decide at the API level what the behavior is of
payloads in POST / GET. Given the majority of our users are on mysql,
they've never had access to case sensitive overlapping metadata on
aggregates before. Doing so seems odd and potentially confusing.


Sean Dague

More information about the OpenStack-dev mailing list