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:
@@ -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
|
||||||
|
@@ -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,
|
||||||
|
@@ -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'))
|
||||||
|
|
||||||
|
@@ -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(
|
||||||
|
@@ -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',
|
||||||
|
Reference in New Issue
Block a user