Remove code duplication in enums

Each Cinder's Enum field declaration has almost the same __init__
method. To avoid duplication this patch moves __init__ method with
required logic to the base class.

Change-Id: I566aef9241af570762bcc64eadc6adb3e8e10991
This commit is contained in:
Ivan Kolodyazhny 2016-08-11 13:43:37 +03:00
parent 451e4fcda4
commit e38d039228
1 changed files with 10 additions and 24 deletions

View File

@ -23,7 +23,12 @@ Field = fields.Field
FieldType = fields.FieldType
class BackupStatus(Enum):
class BaseCinderEnum(Enum):
def __init__(self):
super(BaseCinderEnum, self).__init__(valid_values=self.__class__.ALL)
class BackupStatus(BaseCinderEnum):
ERROR = 'error'
ERROR_DELETING = 'error_deleting'
CREATING = 'creating'
@ -35,15 +40,12 @@ class BackupStatus(Enum):
ALL = (ERROR, ERROR_DELETING, CREATING, AVAILABLE, DELETING, DELETED,
RESTORING)
def __init__(self):
super(BackupStatus, self).__init__(valid_values=BackupStatus.ALL)
class BackupStatusField(BaseEnumField):
AUTO_TYPE = BackupStatus()
class ConsistencyGroupStatus(Enum):
class ConsistencyGroupStatus(BaseCinderEnum):
ERROR = 'error'
AVAILABLE = 'available'
CREATING = 'creating'
@ -55,16 +57,12 @@ class ConsistencyGroupStatus(Enum):
ALL = (ERROR, AVAILABLE, CREATING, DELETING, DELETED,
UPDATING, ERROR_DELETING)
def __init__(self):
super(ConsistencyGroupStatus, self).__init__(
valid_values=ConsistencyGroupStatus.ALL)
class ConsistencyGroupStatusField(BaseEnumField):
AUTO_TYPE = ConsistencyGroupStatus()
class ReplicationStatus(Enum):
class ReplicationStatus(BaseCinderEnum):
ERROR = 'error'
ENABLED = 'enabled'
DISABLED = 'disabled'
@ -76,16 +74,12 @@ class ReplicationStatus(Enum):
ALL = (ERROR, ENABLED, DISABLED, NOT_CAPABLE, FAILOVER_ERROR, FAILING_OVER,
FAILED_OVER)
def __init__(self):
super(ReplicationStatus, self).__init__(
valid_values=ReplicationStatus.ALL)
class ReplicationStatusField(BaseEnumField):
AUTO_TYPE = ReplicationStatus()
class SnapshotStatus(Enum):
class SnapshotStatus(BaseCinderEnum):
ERROR = 'error'
AVAILABLE = 'available'
CREATING = 'creating'
@ -97,26 +91,18 @@ class SnapshotStatus(Enum):
ALL = (ERROR, AVAILABLE, CREATING, DELETING, DELETED,
UPDATING, ERROR_DELETING)
def __init__(self):
super(SnapshotStatus, self).__init__(
valid_values=SnapshotStatus.ALL)
class SnapshotStatusField(BaseEnumField):
AUTO_TYPE = SnapshotStatus()
class QoSConsumerValues(Enum):
class QoSConsumerValues(BaseCinderEnum):
BACK_END = 'back-end'
FRONT_END = 'front-end'
BOTH = 'both'
ALL = (BACK_END, FRONT_END, BOTH)
def __init__(self):
super(QoSConsumerValues, self).__init__(
valid_values=QoSConsumerValues.ALL)
class QoSConsumerField(BaseEnumField):
AUTO_TYPE = QoSConsumerValues()