[openstack-dev] [nova] nova-manage cell_v2 map_instances uses invalid UUID as marker in the db

Balázs Gibizer balazs.gibizer at ericsson.com
Mon May 14 09:49:56 UTC 2018



On Thu, May 10, 2018 at 8:48 PM, Dan Smith <dms at danplanet.com> wrote:
>>  The oslo UUIDField emits a warning if the string used as a field 
>> value
>>  does not pass the validation of the uuid.UUID(str(value)) call
>>  [3]. All the offending places are fixed in nova except the 
>> nova-manage
>>  cell_v2 map_instances call [1][2]. That call uses markers in the DB
>>  that are not valid UUIDs.
> 
> No, that call uses markers in the DB that don't fit the canonical 
> string
> representation of a UUID that the oslo library is looking for. There 
> are
> many ways to serialize a UUID:
> 
> https://en.wikipedia.org/wiki/Universally_unique_identifier#Format
> 
> The 8-4-4-4-12 format is one of them (and the most popular). Changing
> the dashes to spaces does not make it not a UUID, it makes it not the
> same _string_ and it's done (for better or worse) in the 
> aforementioned
> code to skirt the database's UUID-ignorant _string_ uniqueness
> constraint.

You are right, this is oslo specific. I think this weakens the severity 
of the warning in this particular case.

> 
>>  If we could fix this last offender then we could merge the patch [4]
>>  that changes the this warning to an exception in the nova tests to
>>  avoid such future rule violations.
>> 
>>  However I'm not sure it is easy to fix. Replacing
>>  'INSTANCE_MIGRATION_MARKER' at [1] to
>>  '00000000-0000-0000-0000-00000000' might work
> 
> The project_id field on the object is not a UUIDField, nor is it 36
> characters in the database schema. It can't be because project ids are
> not guaranteed to be UUIDs.

Correct. My bad. Then this does not cause any UUID warning.

> 
>>  but I don't know what to do with instance_uuid.replace(' ', '-') [2]
>>  to make it a valid uuid. Also I think that if there is an unfinished
>>  mapping in the deployment and then the marker is changed in the code
>>  that leads to inconsistencies.
> 
> IMHO, it would be bad to do anything that breaks people in the middle 
> of
> a mapping procedure. While I understand the desire to have fewer
> spurious warnings in the test runs, I feel like doing anything to 
> impact
> the UX or performance of runtime code to make the unit test output
> cleaner is a bad idea.

Thanks for confirming my original bad feelings about these kind of 
solutions.

> 
>>  I'm open to any suggestions.
> 
> We already store values in this field that are not 8-4-4-4-12, and the
> oslo field warning is just a warning. If people feel like we need to 
> do
> something, I propose we just do this:
> 
> https://review.openstack.org/#/c/567669/
> 
> It is one of those "we normally wouldn't do this with object schemas,
> but we know this is okay" sort of situations.
> 
> 
> Personally, I'd just make the offending tests shut up about the 
> warning
> and move on, but I'm also okay with the above solution if people 
> prefer.

I think that was Takashi's first suggestion as well. As in this 
particular case the value stored in the field is still a UUID just not 
in the canonical format I think it is reasonable to silence the warning 
for these 3 tests.

Thanks,
gibi






More information about the OpenStack-dev mailing list