Make object attribute names and values consistent

- dict for PrimaryStatus is moved to constants
- inventory.Memory has its size renamed to size_mb
- job.Job has its state renamed to status
- raid.PhysicalDisk and raid.VirtualDisk have their state and raid_state
  renamed to status and raid_status

Change-Id: I0fc8450d13a8f0de271f4e14b770bf5497e19b8e
This commit is contained in:
Imre Farkas
2016-07-12 13:19:41 +02:00
parent f96744daf3
commit 9ff7c31972
5 changed files with 124 additions and 46 deletions

View File

@@ -16,5 +16,12 @@ POWER_ON = 'POWER_ON'
POWER_OFF = 'POWER_OFF' POWER_OFF = 'POWER_OFF'
REBOOT = 'REBOOT' REBOOT = 'REBOOT'
PRIMARY_STATUS = {
'0': 'unknown',
'1': 'ok',
'2': 'degraded',
'3': 'error'
}
# binary unit constants # binary unit constants
UNITS_KI = 2 ** 10 UNITS_KI = 2 ** 10

View File

@@ -17,13 +17,6 @@ from dracclient import constants
from dracclient.resources import uris from dracclient.resources import uris
from dracclient import utils from dracclient import utils
PRIMARY_STATUS = {
'0': 'Unknown',
'1': 'OK',
'2': 'Degraded',
'3': 'Error'
}
CPU_CHARACTERISTICS_64BIT = '4' CPU_CHARACTERISTICS_64BIT = '4'
NIC_LINK_SPEED_MBPS = { NIC_LINK_SPEED_MBPS = {
@@ -58,7 +51,7 @@ CPU = collections.namedtuple(
Memory = collections.namedtuple( Memory = collections.namedtuple(
'Memory', 'Memory',
['id', 'size', 'speed_mhz', 'manufacturer', 'model', 'status']) ['id', 'size_mb', 'speed_mhz', 'manufacturer', 'model', 'status'])
NIC = collections.namedtuple( NIC = collections.namedtuple(
'NIC', 'NIC',
@@ -100,7 +93,8 @@ class InventoryManagement(object):
cores=int(self._get_cpu_attr(cpu, 'NumberOfProcessorCores')), cores=int(self._get_cpu_attr(cpu, 'NumberOfProcessorCores')),
speed_mhz=int(self._get_cpu_attr(cpu, 'CurrentClockSpeed')), speed_mhz=int(self._get_cpu_attr(cpu, 'CurrentClockSpeed')),
model=self._get_cpu_attr(cpu, 'Model'), model=self._get_cpu_attr(cpu, 'Model'),
status=PRIMARY_STATUS[self._get_cpu_attr(cpu, 'PrimaryStatus')], status=constants.PRIMARY_STATUS[
self._get_cpu_attr(cpu, 'PrimaryStatus')],
ht_enabled=bool(self._get_cpu_attr(cpu, 'HyperThreadingEnabled', ht_enabled=bool(self._get_cpu_attr(cpu, 'HyperThreadingEnabled',
allow_missing=True)), allow_missing=True)),
turbo_enabled=bool(self._get_cpu_attr(cpu, 'TurboModeEnabled', turbo_enabled=bool(self._get_cpu_attr(cpu, 'TurboModeEnabled',
@@ -131,15 +125,14 @@ class InventoryManagement(object):
return [self._parse_memory(memory) for memory in installed_memory] return [self._parse_memory(memory) for memory in installed_memory]
def _parse_memory(self, memory): def _parse_memory(self, memory):
return Memory(id=self._get_memory_attr(memory, 'FQDD'), return Memory(
size=int(self._get_memory_attr(memory, 'Size')), id=self._get_memory_attr(memory, 'FQDD'),
speed_mhz=int(self._get_memory_attr(memory, 'Speed')), size_mb=int(self._get_memory_attr(memory, 'Size')),
manufacturer=self._get_memory_attr(memory, speed_mhz=int(self._get_memory_attr(memory, 'Speed')),
'Manufacturer'), manufacturer=self._get_memory_attr(memory, 'Manufacturer'),
model=self._get_memory_attr(memory, 'Model'), model=self._get_memory_attr(memory, 'Model'),
status=PRIMARY_STATUS[self._get_memory_attr( status=constants.PRIMARY_STATUS[
memory, self._get_memory_attr(memory, 'PrimaryStatus')])
'PrimaryStatus')])
def _get_memory_attr(self, memory, attr_name): def _get_memory_attr(self, memory, attr_name):
return utils.get_wsman_resource_attr(memory, uris.DCIM_MemoryView, return utils.get_wsman_resource_attr(memory, uris.DCIM_MemoryView,

View File

@@ -12,13 +12,34 @@
# under the License. # under the License.
import collections import collections
import logging
from dracclient.resources import uris from dracclient.resources import uris
from dracclient import utils from dracclient import utils
from dracclient import wsman from dracclient import wsman
Job = collections.namedtuple('Job', ['id', 'name', 'start_time', 'until_time', LOG = logging.getLogger(__name__)
'message', 'state', 'percent_complete'])
JobTuple = collections.namedtuple(
'Job',
['id', 'name', 'start_time', 'until_time', 'message', 'status',
'percent_complete'])
class Job(JobTuple):
def __new__(cls, **kwargs):
if 'state' in kwargs:
LOG.warning('Job.state is deprecated. Use Job.status instead.')
kwargs['status'] = kwargs['state']
del kwargs['state']
return super(Job, cls).__new__(cls, **kwargs)
@property
def state(self):
LOG.warning('Job.state is deprecated. Use Job.status instead.')
return self.status
class JobManagement(object): class JobManagement(object):
@@ -182,7 +203,7 @@ class JobManagement(object):
start_time=self._get_job_attr(drac_job, 'JobStartTime'), start_time=self._get_job_attr(drac_job, 'JobStartTime'),
until_time=self._get_job_attr(drac_job, 'JobUntilTime'), until_time=self._get_job_attr(drac_job, 'JobUntilTime'),
message=self._get_job_attr(drac_job, 'Message'), message=self._get_job_attr(drac_job, 'Message'),
state=self._get_job_attr(drac_job, 'JobStatus'), status=self._get_job_attr(drac_job, 'JobStatus'),
percent_complete=self._get_job_attr(drac_job, percent_complete=self._get_job_attr(drac_job,
'PercentComplete')) 'PercentComplete'))

View File

@@ -12,11 +12,15 @@
# under the License. # under the License.
import collections import collections
import logging
from dracclient import constants
from dracclient import exceptions from dracclient import exceptions
from dracclient.resources import uris from dracclient.resources import uris
from dracclient import utils from dracclient import utils
LOG = logging.getLogger(__name__)
RAID_LEVELS = { RAID_LEVELS = {
'non-raid': '1', 'non-raid': '1',
'0': '2', '0': '2',
@@ -30,13 +34,6 @@ RAID_LEVELS = {
REVERSE_RAID_LEVELS = dict((v, k) for (k, v) in RAID_LEVELS.items()) REVERSE_RAID_LEVELS = dict((v, k) for (k, v) in RAID_LEVELS.items())
DISK_STATUS = {
'0': 'unknown',
'1': 'ok',
'2': 'degraded',
'3': 'error'
}
DISK_RAID_STATUS = { DISK_RAID_STATUS = {
'0': 'unknown', '0': 'unknown',
'1': 'ready', '1': 'ready',
@@ -71,20 +68,81 @@ PHYSICAL_DISK_BUS_PROTOCOL = {
'6': 'sas' '6': 'sas'
} }
PhysicalDisk = collections.namedtuple( PhysicalDiskTuple = collections.namedtuple(
'PhysicalDisk', 'PhysicalDisk',
['id', 'description', 'controller', 'manufacturer', 'model', 'media_type', ['id', 'description', 'controller', 'manufacturer', 'model', 'media_type',
'interface_type', 'size_mb', 'free_size_mb', 'serial_number', 'interface_type', 'size_mb', 'free_size_mb', 'serial_number',
'firmware_version', 'state', 'raid_state']) 'firmware_version', 'status', 'raid_status'])
class PhysicalDisk(PhysicalDiskTuple):
def __new__(cls, **kwargs):
if 'state' in kwargs:
LOG.warning('PhysicalDisk.state is deprecated. '
'Use PhysicalDisk.status instead.')
kwargs['status'] = kwargs['state']
del kwargs['state']
if 'raid_state' in kwargs:
LOG.warning('PhysicalDisk.raid_state is deprecated. '
'Use PhysicalDisk.raid_status instead.')
kwargs['raid_status'] = kwargs['raid_state']
del kwargs['raid_state']
return super(PhysicalDisk, cls).__new__(cls, **kwargs)
@property
def state(self):
LOG.warning('PhysicalDisk.state is deprecated. '
'Use PhysicalDisk.status instead.')
return self.status
@property
def raid_state(self):
LOG.warning('PhysicalDisk.raid_state is deprecated. '
'Use PhysicalDisk.raid_status instead.')
return self.raid_status
RAIDController = collections.namedtuple( RAIDController = collections.namedtuple(
'RAIDController', ['id', 'description', 'manufacturer', 'model', 'RAIDController', ['id', 'description', 'manufacturer', 'model',
'firmware_version']) 'firmware_version'])
VirtualDisk = collections.namedtuple( VirtualDiskTuple = collections.namedtuple(
'VirtualDisk', 'VirtualDisk',
['id', 'name', 'description', 'controller', 'raid_level', 'size_mb', ['id', 'name', 'description', 'controller', 'raid_level', 'size_mb',
'state', 'raid_state', 'span_depth', 'span_length', 'pending_operations']) 'status', 'raid_status', 'span_depth', 'span_length',
'pending_operations'])
class VirtualDisk(VirtualDiskTuple):
def __new__(cls, **kwargs):
if 'state' in kwargs:
LOG.warning('VirtualDisk.state is deprecated. '
'Use VirtualDisk.status instead.')
kwargs['status'] = kwargs['state']
del kwargs['state']
if 'raid_state' in kwargs:
LOG.warning('VirtualDisk.raid_state is deprecated. '
'Use VirtualDisk.raid_status instead.')
kwargs['raid_status'] = kwargs['raid_state']
del kwargs['raid_state']
return super(VirtualDisk, cls).__new__(cls, **kwargs)
@property
def state(self):
LOG.warning('VirtualDisk.state is deprecated. '
'Use VirtualDisk.status instead.')
return self.status
@property
def raid_state(self):
LOG.warning('VirtualDisk.raid_state is deprecated. '
'Use VirtualDisk.raid_status instead.')
return self.raid_status
class RAIDManagement(object): class RAIDManagement(object):
@@ -167,8 +225,8 @@ class RAIDManagement(object):
controller=fqdd.split(':')[1], controller=fqdd.split(':')[1],
raid_level=REVERSE_RAID_LEVELS[drac_raid_level], raid_level=REVERSE_RAID_LEVELS[drac_raid_level],
size_mb=int(size_b) / 2 ** 20, size_mb=int(size_b) / 2 ** 20,
state=DISK_STATUS[drac_status], status=constants.PRIMARY_STATUS[drac_status],
raid_state=DISK_RAID_STATUS[drac_raid_status], raid_status=DISK_RAID_STATUS[drac_raid_status],
span_depth=int(self._get_virtual_disk_attr(drac_disk, span_depth=int(self._get_virtual_disk_attr(drac_disk,
'SpanDepth')), 'SpanDepth')),
span_length=int(self._get_virtual_disk_attr(drac_disk, span_length=int(self._get_virtual_disk_attr(drac_disk,
@@ -227,8 +285,8 @@ class RAIDManagement(object):
'SerialNumber'), 'SerialNumber'),
firmware_version=self._get_physical_disk_attr(drac_disk, firmware_version=self._get_physical_disk_attr(drac_disk,
'Revision'), 'Revision'),
state=DISK_STATUS[drac_status], status=constants.PRIMARY_STATUS[drac_status],
raid_state=DISK_RAID_STATUS[drac_raid_status]) raid_status=DISK_RAID_STATUS[drac_raid_status])
def _get_physical_disk_attr(self, drac_disk, attr_name): def _get_physical_disk_attr(self, drac_disk, attr_name):
return utils.get_wsman_resource_attr( return utils.get_wsman_resource_attr(

View File

@@ -445,7 +445,7 @@ class ClientJobManagementTestCase(base.BaseTest):
start_time='TIME_NA', start_time='TIME_NA',
until_time='TIME_NA', until_time='TIME_NA',
message='NA', message='NA',
state='Pending', status='Pending',
percent_complete='0') percent_complete='0')
mock_enumerate.return_value = lxml.etree.fromstring( mock_enumerate.return_value = lxml.etree.fromstring(
test_utils.JobEnumerations[uris.DCIM_LifecycleJob]['ok']) test_utils.JobEnumerations[uris.DCIM_LifecycleJob]['ok'])
@@ -666,8 +666,8 @@ class ClientRAIDManagementTestCase(base.BaseTest):
controller='RAID.Integrated.1-1', controller='RAID.Integrated.1-1',
raid_level='1', raid_level='1',
size_mb=571776, size_mb=571776,
state='ok', status='ok',
raid_state='online', raid_status='online',
span_depth=1, span_depth=1,
span_length=2, span_length=2,
pending_operations=None) pending_operations=None)
@@ -693,8 +693,8 @@ class ClientRAIDManagementTestCase(base.BaseTest):
free_size_mb=571776, free_size_mb=571776,
serial_number='S0M3EY2Z', serial_number='S0M3EY2Z',
firmware_version='LS0A', firmware_version='LS0A',
state='ok', status='ok',
raid_state='ready') raid_status='ready')
mock_requests.post( mock_requests.post(
'https://1.2.3.4:443/wsman', 'https://1.2.3.4:443/wsman',
@@ -1060,7 +1060,7 @@ class ClientInventoryManagementTestCase(base.BaseTest):
cores=6, cores=6,
speed_mhz=2400, speed_mhz=2400,
model='Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz', model='Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz',
status='OK', status='ok',
ht_enabled=True, ht_enabled=True,
turbo_enabled=True, turbo_enabled=True,
vt_enabled=True, vt_enabled=True,
@@ -1080,7 +1080,7 @@ class ClientInventoryManagementTestCase(base.BaseTest):
cores=8, cores=8,
speed_mhz=1900, speed_mhz=1900,
model='Intel(R) Xeon(R) CPU E5-2440 v2 @ 1.90GHz', model='Intel(R) Xeon(R) CPU E5-2440 v2 @ 1.90GHz',
status='OK', status='ok',
ht_enabled=False, ht_enabled=False,
turbo_enabled=False, turbo_enabled=False,
vt_enabled=False, vt_enabled=False,
@@ -1098,12 +1098,11 @@ class ClientInventoryManagementTestCase(base.BaseTest):
def test_list_memory(self, mock_requests): def test_list_memory(self, mock_requests):
expected_memory = [inventory.Memory( expected_memory = [inventory.Memory(
id='DIMM.Socket.A1', id='DIMM.Socket.A1',
size=16384, size_mb=16384,
speed_mhz=2133, speed_mhz=2133,
manufacturer='Samsung', manufacturer='Samsung',
model='DDR4 DIMM', model='DDR4 DIMM',
status='OK', status='ok')]
)]
mock_requests.post( mock_requests.post(
'https://1.2.3.4:443/wsman', 'https://1.2.3.4:443/wsman',