Thanks for the review Michal! As for the bp/bug report, there’s four options:

1. Tack the work on as part of bp cinder-objects
2. Make a new blueprint (bp cinder—object-fields)
3. Open a bug to handle all changes for enums/fields
4. Open a bug for each changed enum/field

Personally, I’m partial to #1, but #2 is better if you want to track this work 
separately from the other objects work. I don’t think we should go with bug 
reports because #3 will be a lot of Partial-Bug and #4 will be kinda spammy. I 
don’t know what the spec process is in Cinder compared to Nova, but this is 
nowhere near enough work to be spec-worthy.

If this is something you or others think should be discussed in a meeting, I 
can tack it on to the agenda for tomorrow.

> On Dec 15, 2015, at 3:52 AM, Michał Dulko <michal.du...@intel.com> wrote:
> 
> On 12/14/2015 03:59 PM, Ryan Rossiter wrote:
>> Hi everyone,
>> 
>> I have a change submitted that lays the groundwork for using custom enums 
>> and fields that are used by versioned objects [1]. These custom fields allow 
>> for verification on a set of valid values, which prevents the field from 
>> being mistakenly set to something invalid. These custom fields are best 
>> suited for StringFields that are only assigned certain exact strings (such 
>> as a status, format, or type). Some examples for Nova: PciDevice.status, 
>> ImageMetaProps.hw_scsi_model, and BlockDeviceMapping.source_type.
>> 
>> These new enums (that are consumed by the fields) are also great for 
>> centralizing constants for hard-coded strings throughout the code. For 
>> example (using [1]):
>> 
>> Instead of
>>    if backup.status == ‘creating’:
>>        <do_stuff>
>> 
>> We now have
>>    if backup.status == fields.BackupStatus.CREATING:
>>        <do_stuff>
>> 
>> Granted, this causes a lot of brainless line changes that make for a lot of 
>> +/-, but it centralizes a lot. In changes like this, I hope I found all of 
>> the occurrences of the different backup statuses, but GitHub search and grep 
>> can only do so much. If it turns out this gets in and I missed a string or 
>> two, it’s not the end of the world, just push up a follow-up patch to fix up 
>> the missed strings. That part of the review is not affected in any way by 
>> the RPC/object versioning.
>> 
>> Speaking of object versioning, notice in cinder/objects/backup.py the 
>> version was updated to appropriate the new field type. The underlying data 
>> passed over RPC has not changed, but this is done for compatibility with 
>> older versions that may not have obeyed the set of valid values.
>> 
>> [1] https://review.openstack.org/#/c/256737/
>> 
>> 
>> -----
>> Thanks,
>> 
>> Ryan Rossiter (rlrossit)
> 
> Thanks for starting this work with formalizing the statuses, I've
> commented on the review with a few remarks.
> 
> I think we should start a blueprint or bugreport to be able track these
> efforts.
> 
> 
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


-----
Thanks,

Ryan Rossiter (rlrossit)


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to