Merge "Logging multiple WMI job errors"
This commit is contained in:
commit
3bbe2e4a50
21
os_win/tests/unit/utils/test_jobutils.py
Normal file → Executable file
21
os_win/tests/unit/utils/test_jobutils.py
Normal file → Executable file
@ -82,15 +82,32 @@ class JobUtilsTestCase(test_base.OsWinBaseTestCase):
|
|||||||
{"extended": True,
|
{"extended": True,
|
||||||
"expected_fields": ["InstanceID", "DetailedStatus"]})
|
"expected_fields": ["InstanceID", "DetailedStatus"]})
|
||||||
@ddt.unpack
|
@ddt.unpack
|
||||||
def test_get_job_details(self, expected_fields, extended):
|
@mock.patch.object(jobutils.JobUtils, '_get_job_error_details')
|
||||||
|
def test_get_job_details(self, mock_get_job_err, expected_fields,
|
||||||
|
extended):
|
||||||
mock_job = mock.Mock()
|
mock_job = mock.Mock()
|
||||||
|
|
||||||
details = self.jobutils._get_job_details(mock_job, extended=extended)
|
details = self.jobutils._get_job_details(mock_job, extended=extended)
|
||||||
|
|
||||||
|
if extended:
|
||||||
|
mock_get_job_err.assert_called_once_with(mock_job)
|
||||||
|
self.assertEqual(details['RawErrors'],
|
||||||
|
mock_get_job_err.return_value)
|
||||||
|
|
||||||
for field in expected_fields:
|
for field in expected_fields:
|
||||||
self.assertEqual(getattr(mock_job, field),
|
self.assertEqual(getattr(mock_job, field),
|
||||||
details[field])
|
details[field])
|
||||||
|
|
||||||
|
def test_get_job_error_details(self):
|
||||||
|
mock_job = mock.Mock()
|
||||||
|
error_details = self.jobutils._get_job_error_details(mock_job)
|
||||||
|
mock_job.GetErrorEx.assert_called_once_with()
|
||||||
|
self.assertEqual(mock_job.GetErrorEx.return_value, error_details)
|
||||||
|
|
||||||
|
def test_get_job_error_details_exception(self):
|
||||||
|
mock_job = mock.Mock()
|
||||||
|
mock_job.GetErrorEx.side_effect = Exception
|
||||||
|
self.assertIsNone(self.jobutils._get_job_error_details(mock_job))
|
||||||
|
|
||||||
def test_get_pending_jobs(self):
|
def test_get_pending_jobs(self):
|
||||||
mock_killed_job = mock.Mock(JobState=constants.JOB_STATE_KILLED)
|
mock_killed_job = mock.Mock(JobState=constants.JOB_STATE_KILLED)
|
||||||
mock_running_job = mock.Mock(JobState=constants.WMI_JOB_STATE_RUNNING)
|
mock_running_job = mock.Mock(JobState=constants.WMI_JOB_STATE_RUNNING)
|
||||||
|
@ -126,8 +126,13 @@ class JobUtils(baseutils.BaseUtilsVirt):
|
|||||||
|
|
||||||
return job
|
return job
|
||||||
|
|
||||||
@staticmethod
|
def _get_job_error_details(self, job):
|
||||||
def _get_job_details(job, extended=False):
|
try:
|
||||||
|
return job.GetErrorEx()
|
||||||
|
except Exception:
|
||||||
|
LOG.error("Could not get job '%s' error details.", job.InstanceID)
|
||||||
|
|
||||||
|
def _get_job_details(self, job, extended=False):
|
||||||
basic_details = [
|
basic_details = [
|
||||||
"InstanceID", "Description", "ElementName", "JobStatus",
|
"InstanceID", "Description", "ElementName", "JobStatus",
|
||||||
"ElapsedTime", "Cancellable", "JobType", "Owner",
|
"ElapsedTime", "Cancellable", "JobType", "Owner",
|
||||||
@ -139,10 +144,13 @@ class JobUtils(baseutils.BaseUtilsVirt):
|
|||||||
"ErrorCode", "ErrorDescription", "ErrorSummaryDescription"]
|
"ErrorCode", "ErrorDescription", "ErrorSummaryDescription"]
|
||||||
|
|
||||||
fields = list(basic_details)
|
fields = list(basic_details)
|
||||||
|
details = {}
|
||||||
|
|
||||||
if extended:
|
if extended:
|
||||||
fields += extended_details
|
fields += extended_details
|
||||||
|
err_details = self._get_job_error_details(job)
|
||||||
|
details['RawErrors'] = err_details
|
||||||
|
|
||||||
details = {}
|
|
||||||
for field in fields:
|
for field in fields:
|
||||||
try:
|
try:
|
||||||
details[field] = getattr(job, field)
|
details[field] = getattr(job, field)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user