Merge "Fix idrac Job.state renamed to Job.status"
This commit is contained in:
commit
8bd3c531a0
@ -841,9 +841,9 @@ class DracRAID(base.RAIDInterface):
|
|||||||
for config_job_id in raid_config_job_ids:
|
for config_job_id in raid_config_job_ids:
|
||||||
config_job = drac_job.get_job(node, job_id=config_job_id)
|
config_job = drac_job.get_job(node, job_id=config_job_id)
|
||||||
|
|
||||||
if config_job.state == 'Completed':
|
if config_job.status == 'Completed':
|
||||||
finished_job_ids.append(config_job_id)
|
finished_job_ids.append(config_job_id)
|
||||||
elif config_job.state == 'Failed':
|
elif config_job.status == 'Failed':
|
||||||
finished_job_ids.append(config_job_id)
|
finished_job_ids.append(config_job_id)
|
||||||
self._set_raid_config_job_failure(node)
|
self._set_raid_config_job_failure(node)
|
||||||
|
|
||||||
|
@ -43,9 +43,9 @@ class DracJobTestCase(test_utils.BaseDracTest):
|
|||||||
'start_time': '00000101000000',
|
'start_time': '00000101000000',
|
||||||
'until_time': 'TIME_NA',
|
'until_time': 'TIME_NA',
|
||||||
'message': 'Job in progress',
|
'message': 'Job in progress',
|
||||||
'state': 'Running',
|
'status': 'Running',
|
||||||
'percent_complete': 34}
|
'percent_complete': 34}
|
||||||
self.job = test_utils.dict_to_namedtuple(values=self.job_dict)
|
self.job = test_utils.make_job(self.job_dict)
|
||||||
|
|
||||||
def test_get_job(self, mock_get_drac_client):
|
def test_get_job(self, mock_get_drac_client):
|
||||||
mock_client = mock.Mock()
|
mock_client = mock.Mock()
|
||||||
@ -127,9 +127,9 @@ class DracVendorPassthruJobTestCase(test_utils.BaseDracTest):
|
|||||||
'start_time': '00000101000000',
|
'start_time': '00000101000000',
|
||||||
'until_time': 'TIME_NA',
|
'until_time': 'TIME_NA',
|
||||||
'message': 'Job in progress',
|
'message': 'Job in progress',
|
||||||
'state': 'Running',
|
'status': 'Running',
|
||||||
'percent_complete': 34}
|
'percent_complete': 34}
|
||||||
self.job = test_utils.dict_to_namedtuple(values=self.job_dict)
|
self.job = test_utils.make_job(self.job_dict)
|
||||||
|
|
||||||
def test_list_unfinished_jobs(self, mock_get_drac_client):
|
def test_list_unfinished_jobs(self, mock_get_drac_client):
|
||||||
mock_client = mock.Mock()
|
mock_client = mock.Mock()
|
||||||
|
@ -42,7 +42,7 @@ class DracPeriodicTaskTestCase(db_base.DbTestCase):
|
|||||||
'start_time': '00000101000000',
|
'start_time': '00000101000000',
|
||||||
'until_time': 'TIME_NA',
|
'until_time': 'TIME_NA',
|
||||||
'message': 'Job in progress',
|
'message': 'Job in progress',
|
||||||
'state': 'Running',
|
'status': 'Running',
|
||||||
'percent_complete': 34}
|
'percent_complete': 34}
|
||||||
self.virtual_disk = {
|
self.virtual_disk = {
|
||||||
'id': 'Disk.Virtual.0:RAID.Integrated.1-1',
|
'id': 'Disk.Virtual.0:RAID.Integrated.1-1',
|
||||||
@ -51,8 +51,8 @@ class DracPeriodicTaskTestCase(db_base.DbTestCase):
|
|||||||
'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
|
||||||
@ -153,7 +153,7 @@ class DracPeriodicTaskTestCase(db_base.DbTestCase):
|
|||||||
# mock task
|
# mock task
|
||||||
task = mock.Mock(node=self.node, context=self.context)
|
task = mock.Mock(node=self.node, context=self.context)
|
||||||
# mock dracclient.get_job
|
# mock dracclient.get_job
|
||||||
self.job['state'] = 'Completed'
|
self.job['status'] = 'Completed'
|
||||||
mock_client = mock.Mock()
|
mock_client = mock.Mock()
|
||||||
mock_get_drac_client.return_value = mock_client
|
mock_get_drac_client.return_value = mock_client
|
||||||
mock_client.get_job.return_value = test_utils.dict_to_namedtuple(
|
mock_client.get_job.return_value = test_utils.dict_to_namedtuple(
|
||||||
@ -183,7 +183,7 @@ class DracPeriodicTaskTestCase(db_base.DbTestCase):
|
|||||||
# mock task
|
# mock task
|
||||||
task = mock.Mock(node=self.node, context=self.context)
|
task = mock.Mock(node=self.node, context=self.context)
|
||||||
# mock dracclient.get_job
|
# mock dracclient.get_job
|
||||||
self.job['state'] = 'Failed'
|
self.job['status'] = 'Failed'
|
||||||
self.job['message'] = 'boom'
|
self.job['message'] = 'boom'
|
||||||
mock_client = mock.Mock()
|
mock_client = mock.Mock()
|
||||||
mock_get_drac_client.return_value = mock_client
|
mock_get_drac_client.return_value = mock_client
|
||||||
@ -222,7 +222,7 @@ class DracPeriodicTaskTestCase(db_base.DbTestCase):
|
|||||||
# mock task
|
# mock task
|
||||||
task = mock.Mock(node=self.node, context=self.context)
|
task = mock.Mock(node=self.node, context=self.context)
|
||||||
# mock dracclient.get_job
|
# mock dracclient.get_job
|
||||||
self.job['state'] = 'Completed'
|
self.job['status'] = 'Completed'
|
||||||
mock_client = mock.Mock()
|
mock_client = mock.Mock()
|
||||||
mock_get_drac_client.return_value = mock_client
|
mock_get_drac_client.return_value = mock_client
|
||||||
mock_client.get_job.return_value = test_utils.dict_to_namedtuple(
|
mock_client.get_job.return_value = test_utils.dict_to_namedtuple(
|
||||||
@ -261,7 +261,7 @@ class DracPeriodicTaskTestCase(db_base.DbTestCase):
|
|||||||
# mock task
|
# mock task
|
||||||
task = mock.Mock(node=self.node, context=self.context)
|
task = mock.Mock(node=self.node, context=self.context)
|
||||||
# mock dracclient.get_job
|
# mock dracclient.get_job
|
||||||
self.job['state'] = 'Completed'
|
self.job['status'] = 'Completed'
|
||||||
mock_client = mock.Mock()
|
mock_client = mock.Mock()
|
||||||
mock_get_drac_client.return_value = mock_client
|
mock_get_drac_client.return_value = mock_client
|
||||||
mock_client.get_job.return_value = test_utils.dict_to_namedtuple(
|
mock_client.get_job.return_value = test_utils.dict_to_namedtuple(
|
||||||
@ -302,9 +302,9 @@ class DracPeriodicTaskTestCase(db_base.DbTestCase):
|
|||||||
# mock task
|
# mock task
|
||||||
task = mock.Mock(node=self.node, context=self.context)
|
task = mock.Mock(node=self.node, context=self.context)
|
||||||
# mock dracclient.get_job
|
# mock dracclient.get_job
|
||||||
self.job['state'] = 'Completed'
|
self.job['status'] = 'Completed'
|
||||||
failed_job = self.job.copy()
|
failed_job = self.job.copy()
|
||||||
failed_job['state'] = 'Failed'
|
failed_job['status'] = 'Failed'
|
||||||
failed_job['message'] = 'boom'
|
failed_job['message'] = 'boom'
|
||||||
mock_client = mock.Mock()
|
mock_client = mock.Mock()
|
||||||
mock_get_drac_client.return_value = mock_client
|
mock_get_drac_client.return_value = mock_client
|
||||||
|
@ -45,9 +45,11 @@ class DracQueryRaidConfigurationTestCase(test_utils.BaseDracTest):
|
|||||||
'description': 'Integrated RAID Controller 1',
|
'description': 'Integrated RAID Controller 1',
|
||||||
'manufacturer': 'DELL',
|
'manufacturer': 'DELL',
|
||||||
'model': 'PERC H710 Mini',
|
'model': 'PERC H710 Mini',
|
||||||
'firmware_version': '21.3.0-0009'}
|
'primary_status': 'ok',
|
||||||
self.raid_controller = test_utils.dict_to_namedtuple(
|
'firmware_version': '21.3.0-0009',
|
||||||
values=raid_controller_dict)
|
'bus': '1'}
|
||||||
|
self.raid_controller = test_utils.make_raid_controller(
|
||||||
|
raid_controller_dict)
|
||||||
|
|
||||||
virtual_disk_dict = {
|
virtual_disk_dict = {
|
||||||
'id': 'Disk.Virtual.0:RAID.Integrated.1-1',
|
'id': 'Disk.Virtual.0:RAID.Integrated.1-1',
|
||||||
@ -56,13 +58,13 @@ class DracQueryRaidConfigurationTestCase(test_utils.BaseDracTest):
|
|||||||
'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,
|
||||||
self.virtual_disk = test_utils.dict_to_namedtuple(
|
'physical_disks': []}
|
||||||
values=virtual_disk_dict)
|
self.virtual_disk = test_utils.make_virtual_disk(virtual_disk_dict)
|
||||||
|
|
||||||
physical_disk_dict = {
|
physical_disk_dict = {
|
||||||
'id': 'Disk.Bay.1:Enclosure.Internal.0-1:RAID.Integrated.1-1',
|
'id': 'Disk.Bay.1:Enclosure.Internal.0-1:RAID.Integrated.1-1',
|
||||||
@ -77,10 +79,11 @@ class DracQueryRaidConfigurationTestCase(test_utils.BaseDracTest):
|
|||||||
'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',
|
||||||
self.physical_disk = test_utils.dict_to_namedtuple(
|
'sas_address': '500056B37789ABE3',
|
||||||
values=physical_disk_dict)
|
'device_protocol': None}
|
||||||
|
self.physical_disk = test_utils.make_physical_disk(physical_disk_dict)
|
||||||
|
|
||||||
def test_list_raid_controllers(self, mock_get_drac_client):
|
def test_list_raid_controllers(self, mock_get_drac_client):
|
||||||
mock_client = mock.Mock()
|
mock_client = mock.Mock()
|
||||||
@ -287,8 +290,10 @@ class DracCreateRaidConfigurationHelpersTestCase(test_utils.BaseDracTest):
|
|||||||
'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',
|
||||||
|
'sas_address': '500056B37789ABE3',
|
||||||
|
'device_protocol': None}
|
||||||
|
|
||||||
self.physical_disks = []
|
self.physical_disks = []
|
||||||
for i in range(8):
|
for i in range(8):
|
||||||
@ -330,8 +335,7 @@ class DracCreateRaidConfigurationHelpersTestCase(test_utils.BaseDracTest):
|
|||||||
physical_disks = []
|
physical_disks = []
|
||||||
|
|
||||||
for disk in self.physical_disks:
|
for disk in self.physical_disks:
|
||||||
physical_disks.append(
|
physical_disks.append(test_utils.make_physical_disk(disk))
|
||||||
test_utils.dict_to_namedtuple(values=disk))
|
|
||||||
|
|
||||||
return physical_disks
|
return physical_disks
|
||||||
|
|
||||||
@ -539,8 +543,10 @@ class DracRaidInterfaceTestCase(test_utils.BaseDracTest):
|
|||||||
'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',
|
||||||
|
'sas_address': '500056B37789ABE3',
|
||||||
|
'device_protocol': None}
|
||||||
|
|
||||||
self.physical_disks = []
|
self.physical_disks = []
|
||||||
for i in range(8):
|
for i in range(8):
|
||||||
@ -582,8 +588,7 @@ class DracRaidInterfaceTestCase(test_utils.BaseDracTest):
|
|||||||
physical_disks = []
|
physical_disks = []
|
||||||
|
|
||||||
for disk in self.physical_disks:
|
for disk in self.physical_disks:
|
||||||
physical_disks.append(
|
physical_disks.append(test_utils.make_physical_disk(disk))
|
||||||
test_utils.dict_to_namedtuple(values=disk))
|
|
||||||
|
|
||||||
return physical_disks
|
return physical_disks
|
||||||
|
|
||||||
@ -1300,13 +1305,14 @@ class DracRaidInterfaceTestCase(test_utils.BaseDracTest):
|
|||||||
'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,
|
||||||
|
'physical_disks': []}
|
||||||
mock_list_virtual_disks.return_value = [
|
mock_list_virtual_disks.return_value = [
|
||||||
test_utils.dict_to_namedtuple(values=virtual_disk_dict)]
|
test_utils.make_virtual_disk(virtual_disk_dict)]
|
||||||
mock_commit_config.return_value = '42'
|
mock_commit_config.return_value = '42'
|
||||||
|
|
||||||
with task_manager.acquire(self.context, self.node.uuid,
|
with task_manager.acquire(self.context, self.node.uuid,
|
||||||
@ -1359,13 +1365,14 @@ class DracRaidInterfaceTestCase(test_utils.BaseDracTest):
|
|||||||
'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,
|
||||||
|
'physical_disks': []}
|
||||||
mock_list_virtual_disks.return_value = [
|
mock_list_virtual_disks.return_value = [
|
||||||
test_utils.dict_to_namedtuple(values=virtual_disk_dict)]
|
test_utils.make_virtual_disk(virtual_disk_dict)]
|
||||||
expected_logical_disk = {'id': 'Disk.Virtual.0:RAID.Integrated.1-1',
|
expected_logical_disk = {'id': 'Disk.Virtual.0:RAID.Integrated.1-1',
|
||||||
'size_gb': 558,
|
'size_gb': 558,
|
||||||
'raid_level': '1',
|
'raid_level': '1',
|
||||||
|
@ -13,12 +13,17 @@
|
|||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
|
||||||
|
from oslo_utils import importutils
|
||||||
|
|
||||||
from ironic.tests.unit.db import base as db_base
|
from ironic.tests.unit.db import base as db_base
|
||||||
from ironic.tests.unit.db import utils as db_utils
|
from ironic.tests.unit.db import utils as db_utils
|
||||||
|
|
||||||
|
|
||||||
INFO_DICT = db_utils.get_test_drac_info()
|
INFO_DICT = db_utils.get_test_drac_info()
|
||||||
|
|
||||||
|
dracclient_job = importutils.try_import('dracclient.resources.job')
|
||||||
|
dracclient_raid = importutils.try_import('dracclient.resources.raid')
|
||||||
|
|
||||||
|
|
||||||
class BaseDracTest(db_base.DbTestCase):
|
class BaseDracTest(db_base.DbTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@ -55,3 +60,31 @@ def dict_of_object(data):
|
|||||||
dict_obj = DictToObj(v)
|
dict_obj = DictToObj(v)
|
||||||
data[k] = dict_obj
|
data[k] = dict_obj
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def make_job(job_dict):
|
||||||
|
if dracclient_job:
|
||||||
|
return dracclient_job.Job(**job_dict)
|
||||||
|
else:
|
||||||
|
return dict_to_namedtuple(values=job_dict)
|
||||||
|
|
||||||
|
|
||||||
|
def make_raid_controller(raid_controller_dict):
|
||||||
|
if dracclient_raid:
|
||||||
|
return dracclient_raid.RAIDController(**raid_controller_dict)
|
||||||
|
else:
|
||||||
|
return dict_to_namedtuple(values=raid_controller_dict)
|
||||||
|
|
||||||
|
|
||||||
|
def make_virtual_disk(virtual_disk_dict):
|
||||||
|
if dracclient_raid:
|
||||||
|
return dracclient_raid.VirtualDisk(**virtual_disk_dict)
|
||||||
|
else:
|
||||||
|
return dict_to_namedtuple(values=virtual_disk_dict)
|
||||||
|
|
||||||
|
|
||||||
|
def make_physical_disk(physical_disk_dict):
|
||||||
|
if dracclient_raid:
|
||||||
|
return dracclient_raid.PhysicalDisk(**physical_disk_dict)
|
||||||
|
else:
|
||||||
|
return dict_to_namedtuple(values=physical_disk_dict)
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Fixes an issue in the ``idrac`` RAID interface seen when creating RAID
|
||||||
|
configurations using ``python-dracclient`` version ``2.0.0`` or higher.
|
Loading…
x
Reference in New Issue
Block a user