From 233a8d2c4206910e18bba490573cd2c884d3827f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aija=20Jaunt=C4=93va?= <aija.jaunteva@dell.com>
Date: Thu, 8 Apr 2021 10:51:33 -0400
Subject: [PATCH] Update to not use deprecated `get_task_monitor`.

`update_service.get_task_monitor` is deprecated, using
top level `get_task_monitor` instead.

Change-Id: Ib028313ee14744a2c016ebaa463e6bfc3a4cc5f0
---
 ironic/drivers/modules/redfish/management.py  |  6 ++--
 .../modules/redfish/test_management.py        | 33 ++++++++-----------
 2 files changed, 17 insertions(+), 22 deletions(-)

diff --git a/ironic/drivers/modules/redfish/management.py b/ironic/drivers/modules/redfish/management.py
index 7af5273d1e..4d554925b2 100644
--- a/ironic/drivers/modules/redfish/management.py
+++ b/ironic/drivers/modules/redfish/management.py
@@ -996,9 +996,9 @@ class RedfishManagement(base.ManagementInterface):
             return
 
         try:
-            task_monitor = update_service.get_task_monitor(
-                current_update['task_monitor'])
-        except sushy.exceptions.ResourceNotFoundError:
+            task_monitor = redfish_utils.get_task_monitor(
+                node, current_update['task_monitor'])
+        except exception.RedfishError:
             # The BMC deleted the Task before we could query it
             LOG.warning('Firmware update completed for node %(node)s, '
                         'firmware %(firmware_image)s, but success of the '
diff --git a/ironic/tests/unit/drivers/modules/redfish/test_management.py b/ironic/tests/unit/drivers/modules/redfish/test_management.py
index a74e3d8e12..99da1265b4 100644
--- a/ironic/tests/unit/drivers/modules/redfish/test_management.py
+++ b/ironic/tests/unit/drivers/modules/redfish/test_management.py
@@ -1143,13 +1143,10 @@ class RedfishManagementTestCase(db_base.DbTestCase):
 
     @mock.patch.object(redfish_mgmt.LOG, 'warning', autospec=True)
     @mock.patch.object(redfish_utils, 'get_update_service', autospec=True)
+    @mock.patch.object(redfish_utils, 'get_task_monitor', autospec=True)
     def test__check_node_firmware_update_task_monitor_not_found(
-            self, mock_get_update_service, mock_log):
-        mock_update_service = mock.Mock()
-        mock_update_service.get_task_monitor.side_effect =\
-            sushy.exceptions.ResourceNotFoundError(
-                method='GET', url='/task/123', response=mock.MagicMock())
-        mock_get_update_service.return_value = mock_update_service
+            self, mock_task_monitor, mock_get_update_service, mock_log):
+        mock_task_monitor.side_effect = exception.RedfishError()
         driver_internal_info = {
             'firmware_updates': [
                 {'task_monitor': '/task/123',
@@ -1166,19 +1163,17 @@ class RedfishManagementTestCase(db_base.DbTestCase):
             self.assertTrue(mock_log.called)
             management._continue_firmware_updates.assert_called_once_with(
                 task,
-                mock_update_service,
+                mock_get_update_service.return_value,
                 [{'task_monitor': '/task/123', 'url': 'test1'}])
 
     @mock.patch.object(redfish_mgmt.LOG, 'debug', autospec=True)
     @mock.patch.object(redfish_utils, 'get_update_service', autospec=True)
+    @mock.patch.object(redfish_utils, 'get_task_monitor', autospec=True)
     def test__check_node_firmware_update_in_progress(self,
+                                                     mock_get_task_monitor,
                                                      mock_get_update_service,
                                                      mock_log):
-        mock_task_monitor = mock.Mock()
-        mock_task_monitor.is_processing = True
-        mock_update_service = mock.Mock()
-        mock_update_service.get_task_monitor.return_value = mock_task_monitor
-        mock_get_update_service.return_value = mock_update_service
+        mock_get_task_monitor.return_value.is_processing = True
         driver_internal_info = {
             'firmware_updates': [
                 {'task_monitor': '/task/123',
@@ -1195,7 +1190,9 @@ class RedfishManagementTestCase(db_base.DbTestCase):
 
     @mock.patch.object(manager_utils, 'cleaning_error_handler', autospec=True)
     @mock.patch.object(redfish_utils, 'get_update_service', autospec=True)
+    @mock.patch.object(redfish_utils, 'get_task_monitor', autospec=True)
     def test__check_node_firmware_update_fail(self,
+                                              mock_get_task_monitor,
                                               mock_get_update_service,
                                               mock_cleaning_error_handler):
         mock_sushy_task = mock.Mock()
@@ -1211,9 +1208,7 @@ class RedfishManagementTestCase(db_base.DbTestCase):
         mock_task_monitor = mock.Mock()
         mock_task_monitor.is_processing = False
         mock_task_monitor.get_task.return_value = mock_sushy_task
-        mock_update_service = mock.Mock()
-        mock_update_service.get_task_monitor.return_value = mock_task_monitor
-        mock_get_update_service.return_value = mock_update_service
+        mock_get_task_monitor.return_value = mock_task_monitor
         driver_internal_info = {'something': 'else',
                                 'firmware_updates': [
                                     {'task_monitor': '/task/123',
@@ -1238,7 +1233,9 @@ class RedfishManagementTestCase(db_base.DbTestCase):
 
     @mock.patch.object(redfish_mgmt.LOG, 'info', autospec=True)
     @mock.patch.object(redfish_utils, 'get_update_service', autospec=True)
+    @mock.patch.object(redfish_utils, 'get_task_monitor', autospec=True)
     def test__check_node_firmware_update_done(self,
+                                              mock_get_task_monitor,
                                               mock_get_update_service,
                                               mock_log):
         mock_task = mock.Mock()
@@ -1250,9 +1247,7 @@ class RedfishManagementTestCase(db_base.DbTestCase):
         mock_task_monitor = mock.Mock()
         mock_task_monitor.is_processing = False
         mock_task_monitor.get_task.return_value = mock_task
-        mock_update_service = mock.Mock()
-        mock_update_service.get_task_monitor.return_value = mock_task_monitor
-        mock_get_update_service.return_value = mock_update_service
+        mock_get_task_monitor.return_value = mock_task_monitor
         driver_internal_info = {
             'firmware_updates': [
                 {'task_monitor': '/task/123',
@@ -1269,7 +1264,7 @@ class RedfishManagementTestCase(db_base.DbTestCase):
             self.assertTrue(mock_log.called)
             management._continue_firmware_updates.assert_called_once_with(
                 task,
-                mock_update_service,
+                mock_get_update_service.return_value,
                 [{'task_monitor': '/task/123',
                   'url': 'test1'}])