[openstack-dev] [Cinder] Implementation of ABC MetaClasses
thingee at gmail.com
Tue Jul 7 23:37:40 UTC 2015
On 18:38 Jun 22, Marc Koderer wrote:
> Am 20.06.2015 um 01:59 schrieb John Griffith <john.griffith8 at gmail.com>:
> > * The BaseVD represents the functionality we require from all drivers.
> > Yep
> > * The additional ABC classes represent features that are not required yet.
> > * These are represented by classes because some features require a
> > bundle of methods for it to be fulfilled. Consistency group is an
> > example. 
> > Sure, I suppose that's fine for things like CG and Replication. Although I would think that if somebody implemented something optional like CG's that they should be able to figure out they need all of the "cg" methods, it's kinda like that warning on ladders to not stand on the very top rung. By the way, maybe we should discuss the state of "optional API methods" at the mid-cycle.
> > * Any driver that wishes to mark their driver as supporting a
> > non-required feature inherits this feature and fulfills the required
> > methods.
> > Yeah... ok, I guess.
> > * After communication is done on said feature being required, there
> > would be time for driver maintainers to begin supporting it.
> > * Eventually that feature would disappear from it's own class and be
> > put in the BaseVD. Anybody not supporting it would have a broken
> > driver, a broken CI, and eventually removed from the release.
> > Sure, I guess my question is what's the real value in this intermediate step. The bulk of these are things that I'd argue shouldn't be optional anyway (snapshots, transfers, manage, extend, retype and even migrate). Snapshots in particular I find surprising to be considered as "optional“.
> Reducing the number of classes/optional functions sounds good to me.
> I think it’s quite valuable to discuss what are the mandatory functions
> of a cinder driver. Before ABC nobody really cared because all drivers simply raised an run-time exception :)
If Marc is fine with this, I see no harm in us trying out John's proposal of
using decorators in the volume driver class.
More information about the OpenStack-dev