diff -pruN 2.12.0-1/debian/changelog 2.13.0-2/debian/changelog
--- 2.12.0-1/debian/changelog	2021-11-12 13:02:48.000000000 +0000
+++ 2.13.0-2/debian/changelog	2022-03-24 10:54:21.000000000 +0000
@@ -1,3 +1,18 @@
+python-proliantutils (2.13.0-2) unstable; urgency=medium
+
+  * Uploading to unstable.
+
+ -- Thomas Goirand <zigo@debian.org>  Thu, 24 Mar 2022 11:54:21 +0100
+
+python-proliantutils (2.13.0-1) experimental; urgency=medium
+
+  * New upstream release.
+  * Fixed (build-)depends for this release.
+  * Removed patches applied upstream.
+  * Add autopkgtest.
+
+ -- Thomas Goirand <zigo@debian.org>  Wed, 02 Mar 2022 15:35:34 +0100
+
 python-proliantutils (2.12.0-1) unstable; urgency=medium
 
   [ Thomas Goirand ]
diff -pruN 2.12.0-1/debian/control 2.13.0-2/debian/control
--- 2.12.0-1/debian/control	2021-11-12 13:02:48.000000000 +0000
+++ 2.13.0-2/debian/control	2022-03-24 10:54:21.000000000 +0000
@@ -18,7 +18,6 @@ Build-Depends-Indep:
  python3-coverage,
  python3-ddt,
  python3-jsonschema,
- python3-mock,
  python3-openssl (>= 19.1.0),
  python3-os-testr,
  python3-oslo.concurrency,
@@ -29,7 +28,7 @@ Build-Depends-Indep:
  python3-retrying,
  python3-six,
  python3-subunit,
- python3-sushy (>= 3.11.0),
+ python3-sushy (>= 4.1.0),
  python3-testtools,
  python3-xmltodict,
  subunit,
@@ -65,7 +64,7 @@ Depends:
  python3-retrying,
  python3-openssl (>= 19.1.0),
  python3-six,
- python3-sushy (>= 3.11.0),
+ python3-sushy (>= 4.1.0),
  ${misc:Depends},
  ${python3:Depends},
 Suggests:
diff -pruN 2.12.0-1/debian/patches/Fix_the_test_cases_for_latest_sushy.patch 2.13.0-2/debian/patches/Fix_the_test_cases_for_latest_sushy.patch
--- 2.12.0-1/debian/patches/Fix_the_test_cases_for_latest_sushy.patch	2021-11-12 13:02:48.000000000 +0000
+++ 2.13.0-2/debian/patches/Fix_the_test_cases_for_latest_sushy.patch	1970-01-01 00:00:00.000000000 +0000
@@ -1,450 +0,0 @@
-Description: Fix the test cases for latest sushy
- This patch fixes the test cases which are dependent on
- changes in sushy library version 3.12.0.
-From: Nisha Agarwal <agarwalnisha1980@gmail.com>
-Date: Mon, 8 Nov 2021 03:58:50 -0800
-Closes-Bug: 1950421
-Change-Id: I485010c613b0e8d5d4c9bcb96959730bae42dc88
-Bug-Debian: https://bugs.debian.org/997545
-
-diff --git a/proliantutils/tests/redfish/resources/manager/test_security_params.py b/proliantutils/tests/redfish/resources/manager/test_security_params.py
-index c279c5a9..68c86df0 100644
---- a/proliantutils/tests/redfish/resources/manager/test_security_params.py
-+++ b/proliantutils/tests/redfish/resources/manager/test_security_params.py
-@@ -36,7 +36,8 @@ class SecurityParamsTestCase(testtools.TestCase):
-         path = ("/redfish/v1/Mangers/1/SecurityService/"
-                 "SecurityDashboard/SecurityParams")
-         self.sec_param = security_params.SecurityParams(
--            self.conn, path, '1.0.2', None)
-+            self.conn, path, redfish_version='1.0.2',
-+            registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sec_param._parse_attributes(self.json_doc)
-@@ -67,7 +68,7 @@ class SecurityParamsCollectionTestCase(testtools.TestCase):
-             self.conn,
-             ('/redfish/v1/Managers/1/SecurityService/'
-              'SecurityDashboard/SecurityParams'),
--            redfish_version='1.0.2')
-+            redfish_version='1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sec_params_col._parse_attributes(self.json_doc)
-@@ -89,7 +90,8 @@ class SecurityParamsCollectionTestCase(testtools.TestCase):
-             self.sec_params_col._conn,
-             ('/redfish/v1/Managers/1/SecurityService/SecurityDashboard/'
-              'SecurityParams/1'),
--            self.sec_params_col.redfish_version, None)
-+            redfish_version=self.sec_params_col.redfish_version,
-+            registries=None, root=self.sec_params_col.root)
- 
-     @mock.patch.object(security_params, 'SecurityParams', autospec=True)
-     def test_get_members(self, mock_eth):
-@@ -99,9 +101,11 @@ class SecurityParamsCollectionTestCase(testtools.TestCase):
-         path2 = ('/redfish/v1/Managers/1/SecurityService/SecurityDashboard/'
-                  'SecurityParams/1')
-         calls = [mock.call(self.sec_params_col._conn, path,
--                           self.sec_params_col.redfish_version, None),
-+                           redfish_version=self.sec_params_col.redfish_version,
-+                           registries=None, root=self.sec_params_col.root),
-                  mock.call(self.sec_params_col._conn, path2,
--                           self.sec_params_col.redfish_version, None)]
-+                           redfish_version=self.sec_params_col.redfish_version,
-+                           registries=None, root=self.sec_params_col.root)]
-         mock_eth.assert_has_calls(calls)
-         self.assertIsInstance(members, list)
-         self.assertEqual(2, len(members))
-diff --git a/proliantutils/tests/redfish/resources/system/storage/test_array_controller.py b/proliantutils/tests/redfish/resources/system/storage/test_array_controller.py
-index 348875b2..362a66fd 100644
---- a/proliantutils/tests/redfish/resources/system/storage/test_array_controller.py
-+++ b/proliantutils/tests/redfish/resources/system/storage/test_array_controller.py
-@@ -34,7 +34,8 @@ class HPEArrayControllerTestCase(testtools.TestCase):
- 
-         path = ("/redfish/v1/Systems/1/SmartStorage/ArrayControllers")
-         self.sys_stor = array_controller.HPEArrayController(
--            self.conn, path, '1.0.2', None)
-+            self.conn, path, redfish_version='1.0.2',
-+            registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_stor._parse_attributes(self.json_doc)
-@@ -91,7 +92,7 @@ class HPEArrayControllerCollectionTestCase(testtools.TestCase):
-         self.conn.get.return_value.json.return_value = self.json_doc
-         self.sys_stor_col = array_controller.HPEArrayControllerCollection(
-             self.conn, '/redfish/v1/Systems/1/SmartStorage/ArrayControllers',
--            '1.0.2', None)
-+            redfish_version='1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_stor_col._parse_attributes(self.json_doc)
-@@ -108,7 +109,8 @@ class HPEArrayControllerCollectionTestCase(testtools.TestCase):
-         mock_eth.assert_called_once_with(
-             self.sys_stor_col._conn,
-             '/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0',
--            self.sys_stor_col.redfish_version, None)
-+            redfish_version=self.sys_stor_col.redfish_version,
-+            registries=None, root=self.sys_stor_col.root)
- 
-     @mock.patch.object(array_controller, 'HPEArrayController', autospec=True)
-     def test_get_members(self, mock_eth):
-@@ -116,7 +118,8 @@ class HPEArrayControllerCollectionTestCase(testtools.TestCase):
-         path = ("/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0")
-         calls = [
-             mock.call(self.sys_stor_col._conn, path,
--                      self.sys_stor_col.redfish_version, None),
-+                      redfish_version=self.sys_stor_col.redfish_version,
-+                      registries=None, root=self.sys_stor_col.root),
-         ]
-         mock_eth.assert_has_calls(calls)
-         self.assertIsInstance(members, list)
-diff --git a/proliantutils/tests/redfish/resources/system/storage/test_drive.py b/proliantutils/tests/redfish/resources/system/storage/test_drive.py
-index 06c526a7..2f708d41 100644
---- a/proliantutils/tests/redfish/resources/system/storage/test_drive.py
-+++ b/proliantutils/tests/redfish/resources/system/storage/test_drive.py
-@@ -35,7 +35,8 @@ class DriveTestCase(testtools.TestCase):
-         drive_path = ("/redfish/v1/Systems/437XR1138R2/Storage/1/"
-                       "Drives/35D38F11ACEF7BD3")
-         self.sys_drive = drive.Drive(
--            self.conn, drive_path, redfish_version='1.0.2')
-+            self.conn, drive_path, redfish_version='1.0.2',
-+            registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_drive._parse_attributes(self.json_doc['drive1'])
-diff --git a/proliantutils/tests/redfish/resources/system/storage/test_logical_drive.py b/proliantutils/tests/redfish/resources/system/storage/test_logical_drive.py
-index 2ae5a38b..bdc7ade0 100644
---- a/proliantutils/tests/redfish/resources/system/storage/test_logical_drive.py
-+++ b/proliantutils/tests/redfish/resources/system/storage/test_logical_drive.py
-@@ -34,7 +34,7 @@ class HPELogicalDriveTestCase(testtools.TestCase):
-         path = ("/redfish/v1/Systems/1/SmartStorage/"
-                 "ArrayControllers/0/LogicalDrives")
-         self.sys_stor = logical_drive.HPELogicalDrive(
--            self.conn, path, '1.0.2', None)
-+            self.conn, path, '1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_stor._parse_attributes(self.json_doc)
-@@ -53,7 +53,7 @@ class HPELogicalDriveCollectionTestCase(testtools.TestCase):
-         self.sys_stor_col = logical_drive.HPELogicalDriveCollection(
-             self.conn, ('/redfish/v1/Systems/1/SmartStorage/'
-                         'ArrayControllers/0/LogicalDrives'),
--            redfish_version='1.0.2')
-+            redfish_version='1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_stor_col._parse_attributes(self.json_doc)
-@@ -75,7 +75,8 @@ class HPELogicalDriveCollectionTestCase(testtools.TestCase):
-             self.sys_stor_col._conn,
-             ('/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/'
-              'LogicalDrives/1'),
--            self.sys_stor_col.redfish_version, None)
-+            redfish_version=self.sys_stor_col.redfish_version,
-+            registries=None, root=self.sys_stor_col.root)
- 
-     @mock.patch.object(logical_drive, 'HPELogicalDrive', autospec=True)
-     def test_get_members(self, mock_eth):
-@@ -86,9 +87,11 @@ class HPELogicalDriveCollectionTestCase(testtools.TestCase):
-                  "0/LogicalDrives/2")
-         calls = [
-             mock.call(self.sys_stor_col._conn, path1,
--                      self.sys_stor_col.redfish_version, None),
-+                      redfish_version=self.sys_stor_col.redfish_version,
-+                      registries=None, root=self.sys_stor_col.root),
-             mock.call(self.sys_stor_col._conn, path2,
--                      self.sys_stor_col.redfish_version, None),
-+                      redfish_version=self.sys_stor_col.redfish_version,
-+                      registries=None, root=self.sys_stor_col.root),
-         ]
-         mock_eth.assert_has_calls(calls)
-         self.assertIsInstance(members, list)
-diff --git a/proliantutils/tests/redfish/resources/system/storage/test_physical_drive.py b/proliantutils/tests/redfish/resources/system/storage/test_physical_drive.py
-index a96956a2..ce42a738 100644
---- a/proliantutils/tests/redfish/resources/system/storage/test_physical_drive.py
-+++ b/proliantutils/tests/redfish/resources/system/storage/test_physical_drive.py
-@@ -35,7 +35,8 @@ class HPEPhysicalDriveTestCase(testtools.TestCase):
-         path = ("/redfish/v1/Systems/1/SmartStorage/"
-                 "ArrayControllers/0/DiskDrives")
-         self.sys_stor = physical_drive.HPEPhysicalDrive(
--            self.conn, path, '1.0.2', None)
-+            self.conn, path, redfish_version='1.0.2',
-+            registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_stor._parse_attributes(self.json_doc['drive1'])
-@@ -56,7 +57,7 @@ class HPEPhysicalDriveCollectionTestCase(testtools.TestCase):
-         self.sys_stor_col = physical_drive.HPEPhysicalDriveCollection(
-             self.conn, ('/redfish/v1/Systems/1/SmartStorage/'
-                         'ArrayControllers/0/DiskDrives'),
--            redfish_version='1.0.2')
-+            redfish_version='1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_stor_col._parse_attributes(self.json_doc)
-@@ -78,7 +79,8 @@ class HPEPhysicalDriveCollectionTestCase(testtools.TestCase):
-             self.sys_stor_col._conn,
-             ('/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/'
-              'DiskDrives/3'),
--            self.sys_stor_col.redfish_version, None)
-+            redfish_version=self.sys_stor_col.redfish_version,
-+            registries=None, root=self.sys_stor_col.root)
- 
-     @mock.patch.object(physical_drive, 'HPEPhysicalDrive', autospec=True)
-     def test_get_members(self, mock_eth):
-@@ -89,9 +91,11 @@ class HPEPhysicalDriveCollectionTestCase(testtools.TestCase):
-                  "0/DiskDrives/4")
-         calls = [
-             mock.call(self.sys_stor_col._conn, path,
--                      self.sys_stor_col.redfish_version, None),
-+                      redfish_version=self.sys_stor_col.redfish_version,
-+                      registries=None, root=self.sys_stor_col.root),
-             mock.call(self.sys_stor_col._conn, path2,
--                      self.sys_stor_col.redfish_version, None),
-+                      redfish_version=self.sys_stor_col.redfish_version,
-+                      registries=None, root=self.sys_stor_col.root),
-         ]
-         mock_eth.assert_has_calls(calls)
-         self.assertIsInstance(members, list)
-diff --git a/proliantutils/tests/redfish/resources/system/storage/test_simple_storage.py b/proliantutils/tests/redfish/resources/system/storage/test_simple_storage.py
-index 193356f1..3967b209 100644
---- a/proliantutils/tests/redfish/resources/system/storage/test_simple_storage.py
-+++ b/proliantutils/tests/redfish/resources/system/storage/test_simple_storage.py
-@@ -33,7 +33,8 @@ class SimpleStorageTestCase(testtools.TestCase):
- 
-         simple_path = ("/redfish/v1/Systems/437XR1138R2/SimpleStorage/1")
-         self.sys_simple = simple_storage.SimpleStorage(
--            self.conn, simple_path, '1.0.2', None)
-+            self.conn, simple_path, redfish_version='1.0.2',
-+            registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_simple._parse_attributes(self.json_doc)
-@@ -65,7 +66,7 @@ class SimpleStorageCollectionTestCase(testtools.TestCase):
-         self.conn.get.return_value.json.return_value = self.json_doc
-         self.sys_simple_col = simple_storage.SimpleStorageCollection(
-             self.conn, '/redfish/v1/Systems/437XR1138R2/SimpleStorage',
--            '1.0.2', None)
-+            redfish_version='1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_simple_col._parse_attributes(self.json_doc)
-@@ -82,7 +83,8 @@ class SimpleStorageCollectionTestCase(testtools.TestCase):
-         mock_simple.assert_called_once_with(
-             self.sys_simple_col._conn,
-             '/redfish/v1/Systems/437XR1138R2/SimpleStorage/1',
--            self.sys_simple_col.redfish_version, None)
-+            redfish_version=self.sys_simple_col.redfish_version,
-+            registries=None, root=self.sys_simple_col.root)
- 
-     @mock.patch.object(simple_storage, 'SimpleStorage', autospec=True)
-     def test_get_members(self, mock_simple):
-@@ -90,7 +92,8 @@ class SimpleStorageCollectionTestCase(testtools.TestCase):
-         simple_path = ("/redfish/v1/Systems/437XR1138R2/SimpleStorage/1")
-         calls = [
-             mock.call(self.sys_simple_col._conn, simple_path,
--                      self.sys_simple_col.redfish_version, None),
-+                      redfish_version=self.sys_simple_col.redfish_version,
-+                      registries=None, root=self.sys_simple_col.root),
-         ]
-         mock_simple.assert_has_calls(calls)
-         self.assertIsInstance(members, list)
-diff --git a/proliantutils/tests/redfish/resources/system/storage/test_smart_storage.py b/proliantutils/tests/redfish/resources/system/storage/test_smart_storage.py
-index 3234aa51..f43c33ee 100644
---- a/proliantutils/tests/redfish/resources/system/storage/test_smart_storage.py
-+++ b/proliantutils/tests/redfish/resources/system/storage/test_smart_storage.py
-@@ -34,7 +34,7 @@ class HPESmartStorageTestCase(testtools.TestCase):
- 
-         path = ("/redfish/v1/Systems/1/SmartStorage")
-         self.sys_stor = smart_storage.HPESmartStorage(
--            self.conn, path, '1.0.2', None)
-+            self.conn, path, '1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_stor._parse_attributes(self.json_doc)
-diff --git a/proliantutils/tests/redfish/resources/system/storage/test_storage.py b/proliantutils/tests/redfish/resources/system/storage/test_storage.py
-index 1aeac97f..6f4573a2 100644
---- a/proliantutils/tests/redfish/resources/system/storage/test_storage.py
-+++ b/proliantutils/tests/redfish/resources/system/storage/test_storage.py
-@@ -32,7 +32,8 @@ class StorageTestCase(testtools.TestCase):
- 
-         path = ("/redfish/v1/Systems/437XR1138R2/Storage/1")
-         self.sys_stor = storage.Storage(
--            self.conn, path, redfish_version='1.0.2')
-+            self.conn, path, redfish_version='1.0.2',
-+            registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_stor._parse_attributes(self.json_doc)
-@@ -154,7 +155,7 @@ class StorageCollectionTestCase(testtools.TestCase):
-         self.conn.get.return_value.json.return_value = self.json_doc
-         self.sys_stor_col = storage.StorageCollection(
-             self.conn, '/redfish/v1/Systems/437XR1138R2/Storage',
--            redfish_version='1.0.2')
-+            redfish_version='1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_stor_col._parse_attributes(self.json_doc)
-@@ -171,7 +172,8 @@ class StorageCollectionTestCase(testtools.TestCase):
-         mock_eth.assert_called_once_with(
-             self.sys_stor_col._conn,
-             ('/redfish/v1/Systems/437XR1138R2/Storage/1'),
--            self.sys_stor_col.redfish_version, None)
-+            redfish_version=self.sys_stor_col.redfish_version,
-+            registries=None, root=self.sys_stor_col.root)
- 
-     @mock.patch.object(storage, 'Storage', autospec=True)
-     def test_get_members(self, mock_eth):
-@@ -179,7 +181,8 @@ class StorageCollectionTestCase(testtools.TestCase):
-         path = ("/redfish/v1/Systems/437XR1138R2/Storage/1")
-         calls = [
-             mock.call(self.sys_stor_col._conn, path,
--                      self.sys_stor_col.redfish_version, None),
-+                      redfish_version=self.sys_stor_col.redfish_version,
-+                      registries=None, root=self.sys_stor_col.root),
-         ]
-         mock_eth.assert_has_calls(calls)
-         self.assertIsInstance(members, list)
-diff --git a/proliantutils/tests/redfish/resources/system/storage/test_volume.py b/proliantutils/tests/redfish/resources/system/storage/test_volume.py
-index f508866b..d5ad3103 100644
---- a/proliantutils/tests/redfish/resources/system/storage/test_volume.py
-+++ b/proliantutils/tests/redfish/resources/system/storage/test_volume.py
-@@ -32,7 +32,8 @@ class VolumeTestCase(testtools.TestCase):
- 
-         vol_path = ("/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/1")
-         self.sys_vol = volume.Volume(
--            self.conn, vol_path, '1.0.2', None)
-+            self.conn, vol_path, redfish_version='1.0.2',
-+            registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_vol._parse_attributes(self.json_doc)
-@@ -52,7 +53,7 @@ class VolumeCollectionTestCase(testtools.TestCase):
-             self.conn.get.return_value.json.return_value = self.json_doc
-         self.sys_vol_col = volume.VolumeCollection(
-             self.conn, '/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes',
--            '1.0.2', None)
-+            redfish_version='1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_vol_col._parse_attributes(self.json_doc)
-@@ -69,7 +70,8 @@ class VolumeCollectionTestCase(testtools.TestCase):
-         mock_vol.assert_called_once_with(
-             self.sys_vol_col._conn,
-             ('/redfish/v1/Systems/437XR1138R2/Volumes/1'),
--            self.sys_vol_col.redfish_version, None)
-+            redfish_version=self.sys_vol_col.redfish_version,
-+            registries=None, root=self.sys_vol_col.root)
- 
-     @mock.patch.object(volume, 'Volume', autospec=True)
-     def test_get_members(self, mock_vol):
-@@ -77,7 +79,8 @@ class VolumeCollectionTestCase(testtools.TestCase):
-         vol_path = ("/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/1")
-         calls = [
-             mock.call(self.sys_vol_col._conn, vol_path,
--                      self.sys_vol_col.redfish_version, None),
-+                      redfish_version=self.sys_vol_col.redfish_version,
-+                      registries=None, root=self.sys_vol_col.root),
-         ]
-         mock_vol.assert_has_calls(calls)
-         self.assertIsInstance(members, list)
-diff --git a/proliantutils/tests/redfish/resources/system/test_ethernet_interface.py b/proliantutils/tests/redfish/resources/system/test_ethernet_interface.py
-index 9f931981..10c9fb3c 100644
---- a/proliantutils/tests/redfish/resources/system/test_ethernet_interface.py
-+++ b/proliantutils/tests/redfish/resources/system/test_ethernet_interface.py
-@@ -36,7 +36,8 @@ class EthernetInterfaceTestCase(testtools.TestCase):
-         eth_path = ("/redfish/v1/Systems/437XR1138R2/EthernetInterfaces/"
-                     "12446A3B0411")
-         self.sys_eth = ethernet_interface.EthernetInterface(
--            self.conn, eth_path, '1.0.2', None)
-+            self.conn, eth_path, redfish_version='1.0.2',
-+            registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_eth._parse_attributes(self.json_doc['default'])
-@@ -64,7 +65,7 @@ class EthernetInterfaceCollectionTestCase(testtools.TestCase):
-         self.conn.get.return_value.json.return_value = self.json_doc
-         self.sys_eth_col = ethernet_interface.EthernetInterfaceCollection(
-             self.conn, '/redfish/v1/Systems/437XR1138R2/EthernetInterfaces',
--            '1.0.2', None)
-+            '1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_eth_col._parse_attributes(self.json_doc)
-@@ -84,7 +85,8 @@ class EthernetInterfaceCollectionTestCase(testtools.TestCase):
-             self.sys_eth_col._conn,
-             ('/redfish/v1/Systems/437XR1138R2/EthernetInterfaces/'
-              '12446A3B0411'),
--            self.sys_eth_col.redfish_version, None)
-+            redfish_version=self.sys_eth_col.redfish_version, registries=None,
-+            root=self.sys_eth_col.root)
- 
-     @mock.patch.object(ethernet_interface, 'EthernetInterface', autospec=True)
-     def test_get_members(self, mock_eth):
-@@ -93,7 +95,9 @@ class EthernetInterfaceCollectionTestCase(testtools.TestCase):
-                     "12446A3B0411")
-         calls = [
-             mock.call(self.sys_eth_col._conn, eth_path,
--                      self.sys_eth_col.redfish_version, None),
-+                      redfish_version=self.sys_eth_col.redfish_version,
-+                      registries=None,
-+                      root=self.sys_eth_col.root),
-         ]
-         mock_eth.assert_has_calls(calls)
-         self.assertIsInstance(members, list)
-diff --git a/proliantutils/tests/redfish/resources/system/test_pci_device.py b/proliantutils/tests/redfish/resources/system/test_pci_device.py
-index 7369c244..21f2b43d 100644
---- a/proliantutils/tests/redfish/resources/system/test_pci_device.py
-+++ b/proliantutils/tests/redfish/resources/system/test_pci_device.py
-@@ -33,7 +33,8 @@ class PCIDeviceTestCase(testtools.TestCase):
- 
-         pci_path = "/redfish/v1/Systems/1/PCIDevices/1"
-         self.sys_pci = pci_device.PCIDevice(
--            self.conn, pci_path, '1.0.2', None)
-+            self.conn, pci_path, redfish_version='1.0.2',
-+            registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_pci._parse_attributes(self.json_doc)
-@@ -53,7 +54,7 @@ class PCIDeviceCollectionTestCase(testtools.TestCase):
-         self.conn.get.return_value.json.return_value = self.json_doc
-         self.sys_pci_col = pci_device.PCIDeviceCollection(
-             self.conn, '/redfish/v1/Systems/1/PCIDevices',
--            redfish_version='1.0.2')
-+            redfish_version='1.0.2', registries=None, root=None)
- 
-     def test__parse_attributes(self):
-         self.sys_pci_col._parse_attributes(self.json_doc)
-@@ -70,7 +71,8 @@ class PCIDeviceCollectionTestCase(testtools.TestCase):
-         mock_pci.assert_called_once_with(
-             self.sys_pci_col._conn,
-             ('/redfish/v1/Systems/1/PCIDevices/1'),
--            self.sys_pci_col.redfish_version, None)
-+            redfish_version=self.sys_pci_col.redfish_version,
-+            registries=None, root=self.sys_pci_col.root)
- 
-     @mock.patch.object(pci_device, 'PCIDevice', autospec=True)
-     def test_get_members(self, mock_pci):
-@@ -79,9 +81,11 @@ class PCIDeviceCollectionTestCase(testtools.TestCase):
-                      "/redfish/v1/Systems/1/PCIDevices/6"]
-         calls = [
-             mock.call(self.sys_pci_col._conn, path_list[0],
--                      self.sys_pci_col.redfish_version, None),
-+                      redfish_version=self.sys_pci_col.redfish_version,
-+                      registries=None, root=self.sys_pci_col.root),
-             mock.call(self.sys_pci_col._conn, path_list[1],
--                      self.sys_pci_col.redfish_version, None)
-+                      redfish_version=self.sys_pci_col.redfish_version,
-+                      registries=None, root=self.sys_pci_col.root)
-         ]
-         mock_pci.assert_has_calls(calls)
-         self.assertIsInstance(members, list)
-diff --git a/requirements.txt b/requirements.txt
-index a9bdc1d6..e47b028b 100644
---- a/requirements.txt
-+++ b/requirements.txt
-@@ -9,5 +9,5 @@ retrying!=1.3.0,>=1.2.3 # Apache-2.0
- pysnmp>=4.2.3,<5.0.0  # BSD
- 
- # Redfish communication uses the Sushy library
--sushy>=3.1.0
-+sushy>=3.11.0
- pyOpenSSL>=19.1.0
diff -pruN 2.12.0-1/debian/patches/series 2.13.0-2/debian/patches/series
--- 2.12.0-1/debian/patches/series	2021-11-12 13:02:48.000000000 +0000
+++ 2.13.0-2/debian/patches/series	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-Fix_the_test_cases_for_latest_sushy.patch
diff -pruN 2.12.0-1/debian/tests/control 2.13.0-2/debian/tests/control
--- 2.12.0-1/debian/tests/control	1970-01-01 00:00:00.000000000 +0000
+++ 2.13.0-2/debian/tests/control	2022-03-24 10:54:21.000000000 +0000
@@ -0,0 +1,5 @@
+Tests: unittests
+Depends:
+ @,
+ @builddeps@,
+Restrictions: allow-stderr needs-root
diff -pruN 2.12.0-1/debian/tests/unittests 2.13.0-2/debian/tests/unittests
--- 2.12.0-1/debian/tests/unittests	1970-01-01 00:00:00.000000000 +0000
+++ 2.13.0-2/debian/tests/unittests	2022-03-24 10:54:21.000000000 +0000
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -e
+
+pkgos-dh_auto_test --no-py2 'proliantutils\.tests(?!.*ilo\.test_firmware_controller\.FirmwareImageExtractorTestCase\.test_successive_calls_to_extract_method.*|.*ilo\.test_ribcl\.IloRibclTestCase\.test_update_ilo_firmware.*|.*ilo\.test_ribcl\.IloRibclTestCase\.test_update_other_component_firmware.*)'
diff -pruN 2.12.0-1/proliantutils/exception.py 2.13.0-2/proliantutils/exception.py
--- 2.12.0-1/proliantutils/exception.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/exception.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,3 +1,4 @@
+# Copyright 2022 Hewlett Packard Enterprise Development LP
 # Copyright 2014 Hewlett-Packard Development Company, L.P.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -232,3 +233,14 @@ class MissingAttributeError(RedfishError
 class InvalidParameterValueError(RedfishError):
     message = ('The parameter "%(parameter)s" value "%(value)s" is invalid. '
                'Valid values are: %(valid_values)s')
+
+
+class CertificateCreationError(ProliantUtilsException):
+    message = ("Failed to create HTTPS certificate"
+               "reason: %(reason)s")
+
+    def __init__(self, message=None, **kwargs):
+        if not message:
+            message = self.message % kwargs
+
+        super(CertificateCreationError, self).__init__(message)
diff -pruN 2.12.0-1/proliantutils/ilo/client.py 2.13.0-2/proliantutils/ilo/client.py
--- 2.12.0-1/proliantutils/ilo/client.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/ilo/client.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018 Hewlett-Packard Development Company, L.P.
+# Copyright 2018-2022 Hewlett Packard Enterprise Development LP
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
 # not use this file except in compliance with the License. You may obtain
@@ -134,7 +134,8 @@ SUPPORTED_REDFISH_METHODS = [
     'update_authentication_failure_logging',
     'update_secure_boot',
     'create_csr',
-    'add_https_certificate'
+    'add_https_certificate',
+    'add_ssl_certificate'
 ]
 
 LOG = log.get_logger(__name__)
@@ -1033,6 +1034,7 @@ class IloClient(operations.IloOperations
         """
         return self._call_method('update_secure_boot', enable, ignore)
 
+    # This method is deprecated, and will be removed in future release.
     def create_csr(self, path, csr_params):
         """Creates the Certificate Signing Request.
 
@@ -1043,6 +1045,7 @@ class IloClient(operations.IloOperations
         """
         return self._call_method('create_csr', path, csr_params)
 
+    # This method is deprecated, and will be removed in future release.
     def add_https_certificate(self, cert_file):
         """Adds the signed https certificate to the iLO.
 
@@ -1050,3 +1053,21 @@ class IloClient(operations.IloOperations
         :raises: IloError, on an error from iLO.
         """
         return self._call_method('add_https_certificate', cert_file)
+
+    def add_ssl_certificate(self, csr_params, signed_cert,
+                            private_key, pass_phrase):
+        """Creates CSR and adds the signed SSL certificate to the iLO.
+
+        :param csr_params: A dictionary containing all the necessary
+               information required to create CSR.
+        :param signed_cert: Signed certificate which will be used
+               to sign the created CSR.
+        :param private_key: private key.
+        :param pass_phrase: Pass phrase for the private key.
+        :raises: IloError, on an error from iLO.
+        """
+        return self._call_method('add_ssl_certificate',
+                                 csr_params=csr_params,
+                                 signed_cert=signed_cert,
+                                 private_key=private_key,
+                                 pass_phrase=pass_phrase)
diff -pruN 2.12.0-1/proliantutils/ilo/operations.py 2.13.0-2/proliantutils/ilo/operations.py
--- 2.12.0-1/proliantutils/ilo/operations.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/ilo/operations.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,3 +1,4 @@
+# Copyright 2022 Hewlett Packard Enterprise Development LP
 # Copyright 2014 Hewlett-Packard Development Company, L.P.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -566,5 +567,41 @@ class IloOperations(object):
         :raises: IloError, on an error from iLO.
         :raises: IloCommandNotSupportedError, if the command is
                  not supported on the server.
+        """
+        raise exception.IloCommandNotSupportedError(ERRMSG)
+
+        # This method is deprecated, and will be removed in future release.
+    def create_csr(self, path, csr_params):
+        """Creates the Certificate Signing Request.
+
+        :param path: directory to store csr file.
+        :param csr_params: A dictionary containing all the necessary
+               information required to create CSR.
+        :raises: IloError, on an error from iLO.
+        """
+        raise exception.IloCommandNotSupportedError(ERRMSG)
+
+    # This method is deprecated, and will be removed in future release.
+    def add_https_certificate(self, cert_file):
+        """Adds the signed https certificate to the iLO.
+
+        :param cert_file: Signed HTTPS certificate file.
+        :raises: IloError, on an error from iLO.
+        """
+        raise exception.IloCommandNotSupportedError(ERRMSG)
+
+    def add_ssl_certificate(self, csr_params, signed_cert,
+                            private_key, pass_phrase):
+        """Creates CSR and adds the signed SSL certificate to the iLO.
+
+        :param csr_params: A dictionary containing all the necessary
+               information required to create CSR.
+        :param signed_cert: Signed certificate which will be used
+               to sign the created CSR.
+        :param private_key: private key.
+        :param pass_phrase: Pass phrase for the private key.
+        :raises: IloError, on an error from iLO.
+        :raises: IloCommandNotSupportedError, if the command is
+                 not supported on the server.
         """
         raise exception.IloCommandNotSupportedError(ERRMSG)
diff -pruN 2.12.0-1/proliantutils/ilo/ribcl.py 2.13.0-2/proliantutils/ilo/ribcl.py
--- 2.12.0-1/proliantutils/ilo/ribcl.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/ilo/ribcl.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,3 +1,4 @@
+# Copyright 2022 Hewlett Packard Enterprise Development Company, L.P.
 # Copyright 2018 Hewlett-Packard Development Company, L.P.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -34,6 +35,7 @@ from proliantutils.ilo import firmware_c
 from proliantutils.ilo import mappings
 from proliantutils.ilo import operations
 from proliantutils import log
+from proliantutils import utils
 
 
 POWER_STATE = {
@@ -423,6 +425,10 @@ class RIBCLOperations(operations.IloOper
             'DEVICE': device.upper(),
             'IMAGE_URL': url,
         }
+
+        # Validate url
+        utils.validate_href(url)
+
         data = self._execute_command(
             'INSERT_VIRTUAL_MEDIA', 'RIB_INFO', 'write', dic)
         return data
diff -pruN 2.12.0-1/proliantutils/ilo/ris.py 2.13.0-2/proliantutils/ilo/ris.py
--- 2.12.0-1/proliantutils/ilo/ris.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/ilo/ris.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018 Hewlett Packard Enterprise Development Company, L.P.
+# Copyright 2018-2022 Hewlett Packard Enterprise Development Company, L.P.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
 # not use this file except in compliance with the License. You may obtain
@@ -1506,6 +1506,9 @@ class RISOperations(rest.RestConnectorBa
         :raises: IloCommandNotSupportedError, if the command is not supported
                  on the server.
         """
+        # Validate url
+        utils.validate_href(url)
+
         response, vm_device_uri = self._get_vm_device_status(device)
 
         # Eject media if there is one. RIBCL was tolerant enough to overwrite
diff -pruN 2.12.0-1/proliantutils/redfish/redfish.py 2.13.0-2/proliantutils/redfish/redfish.py
--- 2.12.0-1/proliantutils/redfish/redfish.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/redfish/redfish.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018 Hewlett Packard Enterprise Development LP
+# Copyright 2018-2022 Hewlett Packard Enterprise Development LP
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
 # not use this file except in compliance with the License. You may obtain
@@ -16,16 +16,14 @@ __author__ = 'HPE'
 
 from base64 import b64decode
 import json
-import os
 import re
-import shutil
+import subprocess
 import tempfile
 
 from OpenSSL.crypto import FILETYPE_ASN1
 from OpenSSL.crypto import load_certificate
 from six.moves.urllib import parse
 import sushy
-from sushy.resources.system import mappings as sushy_map
 from sushy import utils
 
 from proliantutils import exception
@@ -127,6 +125,15 @@ _CERTIFICATE_PATTERN = (
 
 LOG = log.get_logger(__name__)
 
+# Copied from ironic/drivers/modules/redfish/inspect.py
+CPU_ARCH_MAP = {
+    sushy.PROCESSOR_ARCH_x86: 'x86_64',
+    sushy.PROCESSOR_ARCH_IA_64: 'ia64',
+    sushy.PROCESSOR_ARCH_ARM: 'arm',
+    sushy.PROCESSOR_ARCH_MIPS: 'mips',
+    sushy.PROCESSOR_ARCH_OEM: 'oem'
+}
+
 
 class RedfishOperations(operations.IloOperations):
     """Operations supported on redfish based hardware.
@@ -447,6 +454,8 @@ class RedfishOperations(operations.IloOp
         :raises: IloError, on an error from iLO.
         :raises: IloInvalidInputError, if the device is not valid.
         """
+        # Validate url
+        common_utils.validate_href(url)
         self._validate_virtual_media(device)
         manager = self._get_sushy_manager(PROLIANT_MANAGER_ID)
         try:
@@ -881,10 +890,9 @@ class RedfishOperations(operations.IloOp
             LOG.debug(msg)
             raise exception.IloError(msg)
 
-    def create_csr(self, path, csr_params):
+    def create_csr(self, csr_params):
         """Creates the Certificate Signing Request.
 
-        :param path: directory to store csr file.
         :param csr_params: A dictionary containing all the necessary
                information required to create CSR.
         :raises: IloError, on an error from iLO.
@@ -895,17 +903,12 @@ class RedfishOperations(operations.IloOp
                 sushy_man.securityservice.https_certificate_uri.generate_csr(
                     csr_params))
 
-            dir = os.path.join(path, 'cert')
-
-            if not os.path.exists(dir):
-                os.makedirs(dir, 0o755)
-
             (fd, temp_file) = tempfile.mkstemp(suffix='.csr')
 
             with open(temp_file, 'w') as f:
                 f.write(cert_request)
 
-            shutil.copy(temp_file, dir)
+            return temp_file
         except sushy.exceptions.SushyError as e:
             msg = (self._('The Redfish controller failed to create the '
                           'certificate signing request. '
@@ -913,6 +916,71 @@ class RedfishOperations(operations.IloOp
             LOG.debug(msg)
             raise exception.IloError(msg)
 
+    def add_ssl_certificate(self, csr_params, signed_cert,
+                            private_key, pass_phrase):
+        """Creates CSR and adds the signed SSL certificate to the iLO.
+
+        :param csr_params: A dictionary containing all the necessary
+               information required to create CSR.
+        :param signed_cert: signed certificate which will be used
+               to sign the created CSR.
+        :param private_key: private key.
+        :param pass_phrase: Pass phrase for the private key.
+        :raises: IloError, on an error from iLO.
+        """
+        csr_file = self.create_csr(csr_params)
+
+        (fd, temp_file) = tempfile.mkstemp(suffix='.ext')
+        (fd, https_cert_file) = tempfile.mkstemp(suffix='.crt')
+        (fd, ss_cert_file) = tempfile.mkstemp(suffix='.crt')
+
+        with open(signed_cert, 'r') as f:
+            data = json.dumps(f.read())
+        p = re.sub(r"\"", "", data)
+        q = re.sub(r"\\n", "\r\n", p).rstrip()
+
+        c_list = re.findall(_CERTIFICATE_PATTERN, q, re.DOTALL)
+
+        if len(c_list) == 0:
+            msg = (self._("No valid certificate in %(cert_file)s.") %
+                   {"cert_file": signed_cert})
+            LOG.debug(msg)
+            raise exception.InvalidParameterValueError(msg)
+
+        ss_cert = c_list[0]
+
+        with open(ss_cert_file, 'w') as f:
+            f.write(ss_cert)
+
+        content = [
+            "authorityKeyIdentifier = keyid,issuer\n",
+            "basicConstraints = CA:true,pathlen:1\n",
+            "keyUsage = digitalSignature,keyEncipherment,keyCertSign,cRLSign",
+            "\nextendedKeyUsage = clientAuth,serverAuth\n",
+            "subjectKeyIdentifier = hash"]
+
+        with open(temp_file, 'w') as f:
+            f.writelines(content)
+
+        cert_cmd = (
+            "openssl x509 -req -days 365 -in %(csr_file)s -extfile"
+            " %(tempfile)s -CA %(cert)s -CAkey %(p_key)s -passin "
+            " pass:%(pphrase)s -CAcreateserial -out %(cert_file)s"
+            % {'csr_file': csr_file, 'tempfile': temp_file,
+               'cert': ss_cert_file, 'p_key': private_key,
+               'pphrase': pass_phrase, 'cert_file': https_cert_file})
+        try:
+            process = subprocess.Popen(cert_cmd, stdout=subprocess.PIPE,
+                                       stderr=subprocess.PIPE, shell=True)
+            out, err = process.communicate()
+        except Exception as e:
+            msg = (self._("Failed to create HTTPS certificate. "
+                          "error: %(err)s") % {"err": e})
+            LOG.debug(msg)
+            raise exception.CertificateCreationError(msg)
+
+        self.add_https_certificate(https_cert_file)
+
     def add_https_certificate(self, cert_file):
         """Adds the signed https certificate to the iLO.
 
@@ -959,11 +1027,13 @@ class RedfishOperations(operations.IloOp
             security_dashboard = (
                 sushy_manager.securityservice.securitydashboard)
             security_params = (
-                sushy_manager.securityservice.securityparamscollectionuri)
+                security_dashboard.securityparamscollectionuri)
+            if security_dashboard.server_configuration_lock_status:
+                sec_capabilities.update(
+                    {'server_configuration_lock_status': (
+                     security_dashboard.server_configuration_lock_status)})
             sec_capabilities.update(
-                {'server_configuration_lock_status': (
-                 security_dashboard.server_configuration_lock_status),
-                 'overall_security_status': (
+                {'overall_security_status': (
                  security_dashboard.overall_status)})
             security_parameters = {}
             param_members = security_params.get_members()
@@ -1237,8 +1307,8 @@ class RedfishOperations(operations.IloOp
             # local_gb = sushy_system.storage_summary
             prop = {'memory_mb': (sushy_system.memory_summary.size_gib * 1024),
                     'cpus': sushy_system.processors.summary.count,
-                    'cpu_arch': sushy_map.PROCESSOR_ARCH_VALUE_MAP_REV.get(
-                    sushy_system.processors.summary.architecture),
+                    'cpu_arch': CPU_ARCH_MAP.get(
+                        sushy_system.processors.summary.architecture),
                     'local_gb': common_storage.get_local_gb(sushy_system)}
             return {'properties': prop,
                     'macs': sushy_system.ethernet_interfaces.summary}
diff -pruN 2.12.0-1/proliantutils/redfish/resources/manager/security_dashboard.py 2.13.0-2/proliantutils/redfish/resources/manager/security_dashboard.py
--- 2.12.0-1/proliantutils/redfish/resources/manager/security_dashboard.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/redfish/resources/manager/security_dashboard.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017 Hewlett Packard Enterprise Development LP
+# Copyright 2021-2022 Hewlett Packard Enterprise Development LP
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
 # not use this file except in compliance with the License. You may obtain
@@ -15,6 +15,9 @@
 __author__ = 'HPE'
 
 from sushy.resources import base
+from sushy import utils as sushy_utils
+
+from proliantutils.redfish.resources.manager import security_params
 
 
 class SecurityDashboard(base.ResourceBase):
@@ -26,6 +29,18 @@ class SecurityDashboard(base.ResourceBas
     """Overall security status of the server"""
 
     server_configuration_lock_status = (
-        base.Field('ServerConfigurationLockStatus', required=True))
+        base.Field('ServerConfigurationLockStatus'))
+
+    security_params_collection_uri = (
+        base.Field(["SecurityParameters", "@odata.id"], required=True))
 
-    security_param_uri = base.Field(["SecurityParameters", "@odata.id"])
+    @property
+    @sushy_utils.cache_it
+    def securityparamscollectionuri(self):
+        """Gets the list of instances for security params
+
+        :returns: the list of instances of security params.
+        """
+        return security_params.SecurityParamsCollection(
+            self._conn, self.security_params_collection_uri,
+            redfish_version=self.redfish_version)
diff -pruN 2.12.0-1/proliantutils/redfish/resources/manager/security_service.py 2.13.0-2/proliantutils/redfish/resources/manager/security_service.py
--- 2.12.0-1/proliantutils/redfish/resources/manager/security_service.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/redfish/resources/manager/security_service.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017 Hewlett Packard Enterprise Development LP
+# Copyright 2021-2022 Hewlett Packard Enterprise Development LP
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
 # not use this file except in compliance with the License. You may obtain
@@ -20,7 +20,6 @@ from sushy import utils as sushy_utils
 from proliantutils import log
 from proliantutils.redfish.resources.manager import https_cert
 from proliantutils.redfish.resources.manager import security_dashboard
-from proliantutils.redfish.resources.manager import security_params
 
 
 LOG = log.get_logger(__name__)
@@ -31,9 +30,6 @@ class SecurityService(base.ResourceBase)
     identity = base.Field('Id', required=True)
     """The identity for the instance."""
 
-    security_params_collection_uri = (
-        base.Field(["Links", "SecurityParams", "@odata.id"],
-                   required=True))
     security_dashboard_uri = (
         base.Field(["Links", "SecurityDashboard", "@odata.id"],
                    required=True))
@@ -53,17 +49,6 @@ class SecurityService(base.ResourceBase)
             redfish_version=self.redfish_version)
 
     @property
-    @sushy_utils.cache_it
-    def securityparamscollectionuri(self):
-        """Gets the list of instances for security params
-
-        :returns: the list of instances of security params.
-        """
-        return security_params.SecurityParamsCollection(
-            self._conn, self.security_params_collection_uri,
-            redfish_version=self.redfish_version)
-
-    @property
     @sushy_utils.cache_it
     def https_certificate_uri(self):
         """Gets the instance of https certificate manager
diff -pruN 2.12.0-1/proliantutils/redfish/resources/system/ethernet_interface.py 2.13.0-2/proliantutils/redfish/resources/system/ethernet_interface.py
--- 2.12.0-1/proliantutils/redfish/resources/system/ethernet_interface.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/redfish/resources/system/ethernet_interface.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,14 +14,12 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import sushy
 from sushy.resources import base
 from sushy.resources.system import ethernet_interface
 from sushy import utils as sushy_utils
 
 
-from proliantutils.redfish.resources.system import constants as sys_cons
-
-
 class EthernetInterface(ethernet_interface.EthernetInterface):
 
     uefi_device_path = base.Field('UefiDevicePath')
@@ -50,8 +48,8 @@ class EthernetInterfaceCollection(base.R
         for eth in self.get_members():
             if eth.mac_address is not None:
                 if (eth.status is not None
-                        and eth.status.health == sys_cons.HEALTH_OK
-                        and eth.status.state == sys_cons.HEALTH_STATE_ENABLED):
+                        and eth.status.health == sushy.HEALTH_OK
+                        and eth.status.state == sushy.STATE_ENABLED):
                     mac_dict.update(
                         {'Port ' + eth.identity: eth.mac_address})
         return mac_dict
diff -pruN 2.12.0-1/proliantutils/redfish/resources/system/pci_device.py 2.13.0-2/proliantutils/redfish/resources/system/pci_device.py
--- 2.12.0-1/proliantutils/redfish/resources/system/pci_device.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/redfish/resources/system/pci_device.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017 Hewlett Packard Enterprise Development LP
+# Copyright 2017-2022 Hewlett Packard Enterprise Development LP
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
 # not use this file except in compliance with the License. You may obtain
@@ -40,10 +40,11 @@ class PCIDevice(base.ResourceBase):
     @property
     @sushy_utils.cache_it
     def nic_capacity(self):
-        for item in self.name.split():
-            if 'Gb' in item:
-                capacity = item.strip('Gb')
-                return int(capacity) if capacity.isdigit() else 0
+        if self.name:
+            for item in self.name.split():
+                if 'Gb' in item:
+                    capacity = item.strip('Gb')
+                    return int(capacity) if capacity.isdigit() else 0
         return 0
 
 
diff -pruN 2.12.0-1/proliantutils/tests/hpssa/test_disk_allocator.py 2.13.0-2/proliantutils/tests/hpssa/test_disk_allocator.py
--- 2.12.0-1/proliantutils/tests/hpssa/test_disk_allocator.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/hpssa/test_disk_allocator.py	2022-02-18 11:12:24.000000000 +0000
@@ -12,7 +12,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-import mock
+from unittest import mock
+
 import testtools
 
 from proliantutils import exception
diff -pruN 2.12.0-1/proliantutils/tests/hpssa/test_manager.py 2.13.0-2/proliantutils/tests/hpssa/test_manager.py
--- 2.12.0-1/proliantutils/tests/hpssa/test_manager.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/hpssa/test_manager.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 # under the License.
 
 import time
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils import exception
diff -pruN 2.12.0-1/proliantutils/tests/hpssa/test_objects.py 2.13.0-2/proliantutils/tests/hpssa/test_objects.py
--- 2.12.0-1/proliantutils/tests/hpssa/test_objects.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/hpssa/test_objects.py	2022-02-18 11:12:24.000000000 +0000
@@ -12,7 +12,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-import mock
+from unittest import mock
+
 from oslo_concurrency import processutils
 import testtools
 
diff -pruN 2.12.0-1/proliantutils/tests/ilo/snmp/test_snmp_cpqdisk_sizes.py 2.13.0-2/proliantutils/tests/ilo/snmp/test_snmp_cpqdisk_sizes.py
--- 2.12.0-1/proliantutils/tests/ilo/snmp/test_snmp_cpqdisk_sizes.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/ilo/snmp/test_snmp_cpqdisk_sizes.py	2022-02-18 11:12:24.000000000 +0000
@@ -12,9 +12,10 @@
 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 # License for the specific language governing permissions and limitations
 # under the License.
-import unittest
 
-import mock
+
+import unittest
+from unittest import mock
 
 from proliantutils.ilo.snmp import snmp_cpqdisk_sizes as snmp
 from proliantutils.tests.ilo.snmp import snmp_sample_output
diff -pruN 2.12.0-1/proliantutils/tests/ilo/test_client.py 2.13.0-2/proliantutils/tests/ilo/test_client.py
--- 2.12.0-1/proliantutils/tests/ilo/test_client.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/ilo/test_client.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,3 +1,4 @@
+# Copyright 2022 Hewlett Packard Enterprise Development LP
 # Copyright 2015 Hewlett-Packard Development Company, L.P.
 # All Rights Reserved.
 #
@@ -13,8 +14,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 """Test class for Client Module."""
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils import exception
@@ -35,7 +36,6 @@ def get_cls_wrapper(cls, cache=True):
 class IloCacheNodeTestCase(testtools.TestCase):
 
     def test_cache_node_cache_true(self):
-
         class Dummyclass1(object):
             pass
 
@@ -43,7 +43,6 @@ class IloCacheNodeTestCase(testtools.Tes
         self.assertNotEqual(id(original_cls), id(decorated_cls))
 
     def test_cache_node_cache_false(self):
-
         class Dummyclass2(object):
             pass
 
@@ -53,7 +52,6 @@ class IloCacheNodeTestCase(testtools.Tes
 
 
 class IloClientWrapperTestCase(testtools.TestCase):
-
     class DummyClass(object):
         def __init__(self, ip, name, password):
             self._ip = ip
@@ -256,7 +254,6 @@ class IloClientInitTestCase(testtools.Te
     @mock.patch.object(redfish, 'RedfishOperations')
     def test_init_with_use_redfish_only_set(
             self, redfish_mock, ribcl_mock):
-
         c = client.IloClient.cls("1.2.3.4", "admin", "Admin",
                                  timeout=120, port=4430,
                                  bios_password='foo', cacert='/somewhere',
@@ -436,6 +433,7 @@ class IloClientTestCase(testtools.TestCa
        true    |   false  |      false         | test__call_method_redfish_4
     ===========|==========|====================|=============================
     """
+
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     @mock.patch.object(redfish, 'RedfishOperations')
     def test__call_method_redfish_1(self, redfish_mock,
@@ -900,19 +898,19 @@ class IloClientTestCase(testtools.TestCa
     def test_delete_raid_configuration_gen9(self, get_product_mock):
         self.client.model = 'Gen9'
         get_product_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                '`delete_raid_configuration` is not supported '
-                                'on ProLiant BL460c Gen9',
-                                self.client.delete_raid_configuration)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               '`delete_raid_configuration` is not supported '
+                               'on ProLiant BL460c Gen9',
+                               self.client.delete_raid_configuration)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_delete_raid_configuration_gen8(self, get_product_mock):
         self.client.model = 'Gen8'
         get_product_mock.return_value = 'ProLiant DL380 G8'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                '`delete_raid_configuration` is not supported '
-                                'on ProLiant DL380 G8',
-                                self.client.delete_raid_configuration)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               '`delete_raid_configuration` is not supported '
+                               'on ProLiant DL380 G8',
+                               self.client.delete_raid_configuration)
 
     @mock.patch.object(client.IloClient.cls, '_call_method')
     def test_do_disk_erase(self, call_mock):
@@ -924,21 +922,21 @@ class IloClientTestCase(testtools.TestCa
     def test_do_disk_erase_gen9(self, get_product_mock):
         self.client.model = 'Gen9'
         get_product_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'The specified operation is not supported '
-                                'on current platform.',
-                                self.client.do_disk_erase,
-                                'SSD', None)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'The specified operation is not supported '
+                               'on current platform.',
+                               self.client.do_disk_erase,
+                               'SSD', None)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_do_disk_erase_gen8(self, get_product_mock):
         self.client.model = 'Gen8'
         get_product_mock.return_value = 'ProLiant DL380 G8'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'The specified operation is not supported '
-                                'on current platform.',
-                                self.client.do_disk_erase,
-                                'SSD', None)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'The specified operation is not supported '
+                               'on current platform.',
+                               self.client.do_disk_erase,
+                               'SSD', None)
 
     @mock.patch.object(client.IloClient.cls, '_call_method')
     def test_do_one_button_secure_erase(self, call_mock):
@@ -949,19 +947,19 @@ class IloClientTestCase(testtools.TestCa
     def test_do_one_button_secure_erase_gen9(self, get_product_mock):
         self.client.model = 'Gen9'
         get_product_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'The specified operation is not supported '
-                                'on current platform.',
-                                self.client.do_one_button_secure_erase)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'The specified operation is not supported '
+                               'on current platform.',
+                               self.client.do_one_button_secure_erase)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_do_one_button_secure_erase_gen8(self, get_product_mock):
         self.client.model = 'Gen8'
         get_product_mock.return_value = 'ProLiant DL380 G8'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'The specified operation is not supported '
-                                'on current platform.',
-                                self.client.do_one_button_secure_erase)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'The specified operation is not supported '
+                               'on current platform.',
+                               self.client.do_one_button_secure_erase)
 
     @mock.patch.object(client.IloClient.cls, '_call_method')
     def test_has_disk_erase_completed(self, call_mock):
@@ -972,19 +970,19 @@ class IloClientTestCase(testtools.TestCa
     def test_has_disk_erase_completed_gen9(self, get_product_mock):
         self.client.model = 'Gen9'
         get_product_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'The specified operation is not supported '
-                                'on current platform.',
-                                self.client.has_disk_erase_completed)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'The specified operation is not supported '
+                               'on current platform.',
+                               self.client.has_disk_erase_completed)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_has_disk_erase_completed_gen8(self, get_product_mock):
         self.client.model = 'Gen8'
         get_product_mock.return_value = 'ProLiant DL380 G8'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'The specified operation is not supported '
-                                'on current platform.',
-                                self.client.has_disk_erase_completed)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'The specified operation is not supported '
+                               'on current platform.',
+                               self.client.has_disk_erase_completed)
 
     @mock.patch.object(client.IloClient.cls, '_call_method')
     def test_create_raid_configuration(self, call_mock):
@@ -1000,11 +998,11 @@ class IloClientTestCase(testtools.TestCa
         ld1 = {"size_gb": 150, "raid_level": '0', "is_root_volume": True}
         raid_config = {"logical_disks": [ld1]}
         get_product_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                '`create_raid_configuration` is not supported '
-                                'on ProLiant BL460c Gen9',
-                                self.client.create_raid_configuration,
-                                raid_config)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               '`create_raid_configuration` is not supported '
+                               'on ProLiant BL460c Gen9',
+                               self.client.create_raid_configuration,
+                               raid_config)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_create_raid_configuration_gen8(self, get_product_mock):
@@ -1012,11 +1010,11 @@ class IloClientTestCase(testtools.TestCa
         ld1 = {"size_gb": 150, "raid_level": '0', "is_root_volume": True}
         raid_config = {"logical_disks": [ld1]}
         get_product_mock.return_value = 'ProLiant DL380 G8'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                '`create_raid_configuration` is not supported '
-                                'on ProLiant DL380 G8',
-                                self.client.create_raid_configuration,
-                                raid_config)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               '`create_raid_configuration` is not supported '
+                               'on ProLiant DL380 G8',
+                               self.client.create_raid_configuration,
+                               raid_config)
 
     @mock.patch.object(client.IloClient.cls, '_call_method')
     def test_read_raid_configuration(self, call_mock):
@@ -1032,11 +1030,11 @@ class IloClientTestCase(testtools.TestCa
         ld1 = {"size_gb": 150, "raid_level": '0', "is_root_volume": True}
         raid_config = {"logical_disks": [ld1]}
         get_product_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                '`read_raid_configuration` is not supported '
-                                'on ProLiant BL460c Gen9',
-                                self.client.read_raid_configuration,
-                                raid_config)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               '`read_raid_configuration` is not supported '
+                               'on ProLiant BL460c Gen9',
+                               self.client.read_raid_configuration,
+                               raid_config)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_read_raid_configuration_gen8(self, get_product_mock):
@@ -1044,11 +1042,11 @@ class IloClientTestCase(testtools.TestCa
         ld1 = {"size_gb": 150, "raid_level": '0', "is_root_volume": True}
         raid_config = {"logical_disks": [ld1]}
         get_product_mock.return_value = 'ProLiant DL380 G8'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                '`read_raid_configuration` is not supported '
-                                'on ProLiant DL380 G8',
-                                self.client.read_raid_configuration,
-                                raid_config)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               '`read_raid_configuration` is not supported '
+                               'on ProLiant DL380 G8',
+                               self.client.read_raid_configuration,
+                               raid_config)
 
     @mock.patch.object(ris.RISOperations, 'eject_virtual_media')
     def test_eject_virtual_media_gen9(self, eject_virtual_media_mock):
@@ -1317,7 +1315,6 @@ class IloClientTestCase(testtools.TestCa
     @mock.patch.object(client.IloClient.cls, '_call_method')
     def test_get_essential_prop_snmp_false_local_gb_0(self, call_mock,
                                                       snmp_mock):
-
         self.client.model = 'Gen9'
         snmp_credentials = {'auth_user': 'user',
                             'auth_prot_pp': '1234',
@@ -1348,9 +1345,9 @@ class IloClientTestCase(testtools.TestCa
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_inject_nmi_gen8(self, product_mock):
         self.client.model = 'Gen8'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'not supported',
-                                self.client.inject_nmi)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'not supported',
+                               self.client.inject_nmi)
 
     @mock.patch.object(client.IloClient.cls, '_call_method')
     def test_get_host_post_state(self, call_mock):
@@ -1383,9 +1380,9 @@ class IloClientTestCase(testtools.TestCa
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_get_bios_settings_result_gen8(self, product_mock):
         self.client.model = 'Gen8'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'not supported',
-                                self.client.get_bios_settings_result)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'not supported',
+                               self.client.get_bios_settings_result)
 
     @mock.patch.object(client.IloClient.cls, '_call_method')
     def test_get_available_disk_types(self, call_mock):
@@ -1396,17 +1393,17 @@ class IloClientTestCase(testtools.TestCa
     def test_get_available_disk_types_gen9(self, get_product_mock):
         self.client.model = 'Gen9'
         get_product_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'not supported',
-                                self.client.get_available_disk_types)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'not supported',
+                               self.client.get_available_disk_types)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_get_available_disk_types_gen8(self, get_product_mock):
         self.client.model = 'Gen8'
         get_product_mock.return_value = 'ProLiant DL380 G8'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'not supported',
-                                self.client.get_available_disk_types)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'not supported',
+                               self.client.get_available_disk_types)
 
 
 class IloRedfishClientTestCase(testtools.TestCase):
@@ -1453,10 +1450,10 @@ class IloRedfishClientTestCase(testtools
         validate_method_calls(
             more_missed_operations, ('arg1', 'arg2'),
             even_more_missed_operations)
-        if(len(even_more_missed_operations) == 1):
+        if (len(even_more_missed_operations) == 1):
             self.assertEqual('set_iscsi_info',
                              even_more_missed_operations[0])
         else:
-            self.assertEqual(2, len(even_more_missed_operations))
-            self.assertEqual(len(client.SUPPORTED_REDFISH_METHODS) - 2,
+            self.assertEqual(3, len(even_more_missed_operations))
+            self.assertEqual(len(client.SUPPORTED_REDFISH_METHODS) - 3,
                              validate_method_calls.no_test_cases)
diff -pruN 2.12.0-1/proliantutils/tests/ilo/test_common.py 2.13.0-2/proliantutils/tests/ilo/test_common.py
--- 2.12.0-1/proliantutils/tests/ilo/test_common.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/ilo/test_common.py	2022-02-18 11:12:24.000000000 +0000
@@ -16,9 +16,9 @@
 
 import time
 import unittest
+from unittest import mock
 
 import ddt
-import mock
 
 from proliantutils import exception
 from proliantutils.ilo import common
diff -pruN 2.12.0-1/proliantutils/tests/ilo/test_firmware_controller.py 2.13.0-2/proliantutils/tests/ilo/test_firmware_controller.py
--- 2.12.0-1/proliantutils/tests/ilo/test_firmware_controller.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/ilo/test_firmware_controller.py	2022-02-18 11:12:24.000000000 +0000
@@ -18,9 +18,9 @@ import os
 import shutil
 import tempfile
 import unittest
+from unittest import mock
 
 import ddt
-import mock
 from six.moves import builtins as __builtin__
 
 from proliantutils import exception
@@ -467,6 +467,9 @@ class FirmwareImageExtractorTestCase(uni
             'extracted_file_from_scexe',
             'extracted_file_from_rpm',
         ]
+        tempfile_mock.mkdtemp.side_effect = [
+            '/tmp', '/tmp', '/tmp'
+        ]
         # | WHEN |
         for fw_file in firmware_files:
             fw_img_extractor = firmware_controller.get_fw_extractor(fw_file)
diff -pruN 2.12.0-1/proliantutils/tests/ilo/test_ipmi.py 2.13.0-2/proliantutils/tests/ilo/test_ipmi.py
--- 2.12.0-1/proliantutils/tests/ilo/test_ipmi.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/ilo/test_ipmi.py	2022-02-18 11:12:24.000000000 +0000
@@ -17,8 +17,7 @@
 
 import subprocess
 import unittest
-
-import mock
+from unittest import mock
 
 from proliantutils.ilo import ipmi
 from proliantutils.tests.ilo import ipmi_sample_outputs as constants
diff -pruN 2.12.0-1/proliantutils/tests/ilo/test_ribcl.py 2.13.0-2/proliantutils/tests/ilo/test_ribcl.py
--- 2.12.0-1/proliantutils/tests/ilo/test_ribcl.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/ilo/test_ribcl.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,3 +1,4 @@
+# Copyright 2022 Hewlett Packard Enterprise Development Company, L.P.
 # Copyright 2014 Hewlett-Packard Development Company, L.P.
 # All Rights Reserved.
 #
@@ -18,10 +19,10 @@
 import json
 import re
 import unittest
+from unittest import mock
 import xml.etree.ElementTree as ET
 
 import ddt
-import mock
 import requests
 from requests.packages import urllib3
 from requests.packages.urllib3 import exceptions as urllib3_exceptions
@@ -32,6 +33,7 @@ from proliantutils.ilo import common
 from proliantutils.ilo import constants as cons
 from proliantutils.ilo import ribcl
 from proliantutils.tests.ilo import ribcl_sample_outputs as constants
+from proliantutils import utils
 
 
 class MaskedRequestDataTestCase(unittest.TestCase):
@@ -275,11 +277,13 @@ class IloRibclTestCase(unittest.TestCase
         self.assertTrue(request_ilo_mock.called)
 
     @mock.patch.object(ribcl.RIBCLOperations, '_request_ilo')
-    def test_insert_virtual_media(self, request_ilo_mock):
+    @mock.patch.object(utils, 'validate_href')
+    def test_insert_virtual_media(self, validate_href_mock, request_ilo_mock):
         request_ilo_mock.return_value = constants.INSERT_VIRTUAL_MEDIA_XML
         result = self.ilo.insert_virtual_media('any_url', 'floppy')
         self.assertIsNone(result)
         self.assertTrue(request_ilo_mock.called)
+        validate_href_mock.assert_called_once_with('any_url')
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_vm_status')
     @mock.patch.object(ribcl.RIBCLOperations, '_request_ilo')
@@ -328,9 +332,13 @@ class IloRibclTestCase(unittest.TestCase
             self, raw_boot_mode_value, expected_boot_mode_value,
             _execute_command_mock):
         # | GIVEN |
-        ret_val = {'GET_SUPPORTED_BOOT_MODE':
-                   {'SUPPORTED_BOOT_MODE':
-                    {'VALUE': raw_boot_mode_value}}}
+        ret_val = {
+            'GET_SUPPORTED_BOOT_MODE': {
+                'SUPPORTED_BOOT_MODE': {
+                    'VALUE': raw_boot_mode_value
+                }
+            }
+        }
         _execute_command_mock.return_value = ret_val
         # | WHEN |
         actual_val = self.ilo.get_supported_boot_mode()
@@ -720,17 +728,17 @@ class IloRibclTestCase(unittest.TestCase
         json_data = json.loads(data)
         health_data_mock.return_value = json_data
         expected_properties = {'macs': {
-                               u'Port 4': u'40:a8:f0:1e:86:77',
-                               u'Port 3': u'40:a8:f0:1e:86:76',
-                               u'Port 2': u'40:a8:f0:1e:86:75',
-                               u'Port 1': u'40:a8:f0:1e:86:74'
-                               },
-                               'properties': {
-                               'memory_mb': 32768,
-                               'cpu_arch': 'x86_64',
-                               'local_gb': 98,
-                               'cpus': 32}
-                               }
+            u'Port 4': u'40:a8:f0:1e:86:77',
+            u'Port 3': u'40:a8:f0:1e:86:76',
+            u'Port 2': u'40:a8:f0:1e:86:75',
+            u'Port 1': u'40:a8:f0:1e:86:74'
+        },
+            'properties': {
+                'memory_mb': 32768,
+                'cpu_arch': 'x86_64',
+                'local_gb': 98,
+                'cpus': 32}
+        }
         properties = self.ilo.get_essential_properties()
         self.assertIsInstance(properties, dict)
         self.assertIn('macs', properties)
@@ -1032,11 +1040,13 @@ class IloRibclTestCaseBeforeRisSupport(u
         self.assertTrue(request_ilo_mock.called)
 
     @mock.patch.object(ribcl.IloClient, '_request_ilo')
-    def test_insert_virtual_media(self, request_ilo_mock):
+    @mock.patch.object(utils, 'validate_href')
+    def test_insert_virtual_media(self, validate_href_mock, request_ilo_mock):
         request_ilo_mock.return_value = constants.INSERT_VIRTUAL_MEDIA_XML
         result = self.ilo.insert_virtual_media('any_url', 'floppy')
         self.assertIsNone(result)
         self.assertTrue(request_ilo_mock.called)
+        validate_href_mock.assert_called_once_with('any_url')
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_vm_status')
     @mock.patch.object(ribcl.IloClient, '_request_ilo')
@@ -1056,50 +1066,50 @@ class IloRibclTestCaseBeforeRisSupport(u
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_inject_nmi(self, product_name_mock):
         product_name_mock.return_value = constants.GET_PRODUCT_NAME
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'ProLiant DL380 G7',
-                                self.ilo.inject_nmi)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'ProLiant DL380 G7',
+                               self.ilo.inject_nmi)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_get_host_post_state(self, product_name_mock):
         product_name_mock.return_value = constants.GET_PRODUCT_NAME
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'ProLiant DL380 G7',
-                                self.ilo.get_host_post_state)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'ProLiant DL380 G7',
+                               self.ilo.get_host_post_state)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_read_raid_configuration(self, product_name_mock):
         ld1 = {"size_gb": 150, "raid_level": '0', "is_root_volume": True}
         raid_config = {"logical_disks": [ld1]}
         product_name_mock.return_value = constants.GET_PRODUCT_NAME
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'ProLiant DL380 G7',
-                                self.ilo.read_raid_configuration,
-                                raid_config)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'ProLiant DL380 G7',
+                               self.ilo.read_raid_configuration,
+                               raid_config)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_delete_raid_configuration(self, product_name_mock):
         product_name_mock.return_value = constants.GET_PRODUCT_NAME
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'ProLiant DL380 G7',
-                                self.ilo.delete_raid_configuration)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'ProLiant DL380 G7',
+                               self.ilo.delete_raid_configuration)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_create_raid_configuration(self, product_name_mock):
         ld1 = {"size_gb": 150, "raid_level": '0', "is_root_volume": True}
         raid_config = {"logical_disks": [ld1]}
         product_name_mock.return_value = constants.GET_PRODUCT_NAME
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'ProLiant DL380 G7',
-                                self.ilo.create_raid_configuration,
-                                raid_config)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'ProLiant DL380 G7',
+                               self.ilo.create_raid_configuration,
+                               raid_config)
 
     @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name')
     def test_get_bios_settings_result(self, product_name_mock):
         product_name_mock.return_value = constants.GET_PRODUCT_NAME
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'ProLiant DL380 G7',
-                                self.ilo.get_bios_settings_result)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'ProLiant DL380 G7',
+                               self.ilo.get_bios_settings_result)
 
 
 if __name__ == '__main__':
diff -pruN 2.12.0-1/proliantutils/tests/ilo/test_ris.py 2.13.0-2/proliantutils/tests/ilo/test_ris.py
--- 2.12.0-1/proliantutils/tests/ilo/test_ris.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/ilo/test_ris.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,3 +1,4 @@
+# Copyright 2022 Hewlett Packard Enterprise Development Company, L.P.
 # Copyright 2015 Hewlett-Packard Development Company, L.P.
 # All Rights Reserved.
 #
@@ -16,9 +17,9 @@
 """Test class for RIS Module."""
 
 import json
+from unittest import mock
 
 import ddt
-import mock
 from requests.packages import urllib3
 from requests.packages.urllib3 import exceptions as urllib3_exceptions
 import testtools
@@ -455,8 +456,15 @@ class IloRisTestCase(testtools.TestCase)
             self, raw_boot_mode_value, expected_boot_mode_value,
             _get_host_details_mock):
         # | GIVEN |
-        system_val = {'Oem': {'Hp': {'Bios':
-                                     {'UefiClass': raw_boot_mode_value}}}}
+        system_val = {
+            'Oem': {
+                'Hp': {
+                    'Bios': {
+                        'UefiClass': raw_boot_mode_value
+                    }
+                }
+            }
+        }
         _get_host_details_mock.return_value = system_val
         # | WHEN |
         actual_val = self.client.get_supported_boot_mode()
@@ -830,7 +838,9 @@ class IloRisTestCase(testtools.TestCase)
 
     @mock.patch.object(ris.RISOperations, '_rest_patch')
     @mock.patch.object(ris.RISOperations, '_get_vm_device_status')
-    def test_insert_virtual_media(self, get_vm_device_mock, patch_mock):
+    @mock.patch.object(utils, 'validate_href')
+    def test_insert_virtual_media(
+            self, validate_href_mock, get_vm_device_mock, patch_mock):
         vm_uri = '/rest/v1/Managers/1/VirtualMedia/2'
 
         cdrom_resp = json.loads(ris_outputs.RESP_VM_STATUS_CDROM_EMPTY)
@@ -845,11 +855,14 @@ class IloRisTestCase(testtools.TestCase)
                                          device='CDROM')
         get_vm_device_mock.assert_called_once_with('CDROM')
         patch_mock.assert_called_once_with(vm_uri, None, vm_patch)
+        validate_href_mock.assert_called_once_with('http://1.1.1.1/cdrom.iso')
 
     @mock.patch.object(ris.RISOperations, '_rest_patch')
     @mock.patch.object(ris.RISOperations, 'eject_virtual_media')
     @mock.patch.object(ris.RISOperations, '_get_vm_device_status')
+    @mock.patch.object(utils, 'validate_href')
     def test_insert_virtual_media_media_attached(self,
+                                                 validate_href_mock,
                                                  get_vm_device_mock,
                                                  eject_virtual_media_mock,
                                                  patch_mock):
@@ -868,10 +881,13 @@ class IloRisTestCase(testtools.TestCase)
         get_vm_device_mock.assert_called_once_with('CDROM')
         eject_virtual_media_mock.assert_called_once_with('CDROM')
         patch_mock.assert_called_once_with(vm_uri, None, vm_patch)
+        validate_href_mock.assert_called_once_with('http://1.1.1.1/cdrom.iso')
 
     @mock.patch.object(ris.RISOperations, '_rest_patch')
     @mock.patch.object(ris.RISOperations, '_get_vm_device_status')
-    def test_insert_virtual_media_fail(self, get_vm_device_mock, patch_mock):
+    @mock.patch.object(utils, 'validate_href')
+    def test_insert_virtual_media_fail(
+            self, validate_href_mock, get_vm_device_mock, patch_mock):
         vm_uri = '/rest/v1/Managers/1/VirtualMedia/2'
 
         cdrom_resp = json.loads(ris_outputs.RESP_VM_STATUS_CDROM_EMPTY)
@@ -887,6 +903,7 @@ class IloRisTestCase(testtools.TestCase)
                           'http://1.1.1.1/cdrom.iso', device='CDROM')
         get_vm_device_mock.assert_called_once_with('CDROM')
         patch_mock.assert_called_once_with(vm_uri, None, vm_patch)
+        validate_href_mock.assert_called_once_with('http://1.1.1.1/cdrom.iso')
 
     @mock.patch.object(ris.RISOperations, '_rest_patch')
     @mock.patch.object(ris.RISOperations, '_get_vm_device_status')
@@ -1833,11 +1850,13 @@ class TestRISOperationsPrivateMethods(te
         map_settings = json.loads(ris_outputs.GET_BIOS_MAPPINGS)
         mappings_mock.return_value = map_settings
         iscsi_uri = '/rest/v1/systems/1/bios/iScsi/Settings'
-        properties = {'iSCSITargetName':
-                      'iqn.2011-07.com.example.server:test1',
-                      'iSCSIBootLUN': '1',
-                      'iSCSITargetIpAddress': '10.10.1.30',
-                      'iSCSITargetTcpPort': 3260}
+        properties = {
+            'iSCSITargetName':
+                'iqn.2011-07.com.example.server:test1',
+                'iSCSIBootLUN': '1',
+                'iSCSITargetIpAddress': '10.10.1.30',
+                'iSCSITargetTcpPort': 3260
+        }
         settings = json.loads(ris_outputs.GET_ISCSI_PATCH)
         check_iscsi_mock.return_value = iscsi_uri
         patch_mock.return_value = (200, ris_outputs.GET_HEADERS,
@@ -1857,11 +1876,13 @@ class TestRISOperationsPrivateMethods(te
             validate_mock):
         nic_association_mock.return_value = 'NicBoot1'
         iscsi_uri = '/rest/v1/systems/1/bios/iScsi/Settings'
-        properties = {'iSCSITargetName':
-                      'iqn.2011-07.com.example.server:test1',
-                      'iSCSIBootLUN': '1',
-                      'iSCSITargetIpAddress': '10.10.1.30',
-                      'iSCSITargetTcpPort': 3260}
+        properties = {
+            'iSCSITargetName':
+                'iqn.2011-07.com.example.server:test1',
+                'iSCSIBootLUN': '1',
+                'iSCSITargetIpAddress': '10.10.1.30',
+                'iSCSITargetTcpPort': 3260
+        }
         settings = json.loads(ris_outputs.GET_ISCSI_PATCH)
         check_iscsi_mock.return_value = iscsi_uri
         patch_mock.return_value = (200, ris_outputs.GET_HEADERS,
@@ -1919,11 +1940,13 @@ class TestRISOperationsPrivateMethods(te
         map_settings = json.loads(ris_outputs.GET_BIOS_MAPPINGS)
         mappings_mock.return_value = map_settings
         iscsi_uri = '/rest/v1/systems/1/bios/iScsi/Settings'
-        properties = {'iSCSITargetName':
-                      'iqn.2011-07.com.example.server:test1',
-                      'iSCSIBootLUN': '1',
-                      'iSCSITargetIpAddress': '10.10.1.30',
-                      'iSCSITargetTcpPort': 3260}
+        properties = {
+            'iSCSITargetName':
+                'iqn.2011-07.com.example.server:test1',
+                'iSCSIBootLUN': '1',
+                'iSCSITargetIpAddress': '10.10.1.30',
+                'iSCSITargetTcpPort': 3260
+        }
         settings = json.loads(ris_outputs.GET_ISCSI_PATCH)
         check_iscsi_mock.return_value = iscsi_uri
         patch_mock.return_value = (301, ris_outputs.GET_HEADERS,
@@ -2212,8 +2235,10 @@ class TestRISOperationsPrivateMethods(te
     def test__update_persistent_boot_for_UefiShell(self, rest_patch_mock):
         systems_uri = "/rest/v1/Systems/1"
         new_boot_settings = {}
-        new_boot_settings['Boot'] = {'BootSourceOverrideEnabled': 'Continuous',
-                                     'BootSourceOverrideTarget': 'UefiShell'}
+        new_boot_settings['Boot'] = {
+            'BootSourceOverrideEnabled': 'Continuous',
+            'BootSourceOverrideTarget': 'UefiShell'
+        }
         rest_patch_mock.return_value = (200, ris_outputs.GET_HEADERS,
                                         ris_outputs.REST_POST_RESPONSE)
         self.client._update_persistent_boot(['UefiShell'],
@@ -2229,13 +2254,15 @@ class TestRISOperationsPrivateMethods(te
             json.loads(ris_outputs.RESPONSE_BODY_FOR_REST_OP_WITH_ISCSI))
         systems_uri = '/rest/v1/Systems/1'
         new1_boot_settings = {}
-        new1_boot_settings['Boot'] = {'UefiTargetBootSourceOverride':
-                                      u'NIC.LOM.1.1.iSCSI'}
+        new1_boot_settings['Boot'] = {
+            'UefiTargetBootSourceOverride':
+                u'NIC.LOM.1.1.iSCSI'
+        }
         new2_boot_settings = {}
-        new2_boot_settings['Boot'] = {'BootSourceOverrideEnabled':
-                                      'Continuous', 'BootSourceOverrideTarget':
-                                      'UefiTarget'}
-
+        new2_boot_settings['Boot'] = {
+            'BootSourceOverrideEnabled': 'Continuous',
+            'BootSourceOverrideTarget': 'UefiTarget'
+        }
         rest_patch_mock.return_value = (200, ris_outputs.GET_HEADERS,
                                         ris_outputs.REST_POST_RESPONSE)
         calls = [mock.call(systems_uri, None, new1_boot_settings),
@@ -2252,12 +2279,14 @@ class TestRISOperationsPrivateMethods(te
                 ris_outputs.RESPONSE_BODY_FOR_REST_OP_WITH_ISCSI_AND_NONE))
         systems_uri = '/rest/v1/Systems/1'
         new1_boot_settings = {}
-        new1_boot_settings['Boot'] = {'UefiTargetBootSourceOverride':
-                                      u'NIC.LOM.1.1.iSCSI'}
+        new1_boot_settings['Boot'] = {
+            'UefiTargetBootSourceOverride': u'NIC.LOM.1.1.iSCSI'
+        }
         new2_boot_settings = {}
-        new2_boot_settings['Boot'] = {'BootSourceOverrideEnabled':
-                                      'Continuous', 'BootSourceOverrideTarget':
-                                      'UefiTarget'}
+        new2_boot_settings['Boot'] = {
+            'BootSourceOverrideEnabled': 'Continuous',
+            'BootSourceOverrideTarget': 'UefiTarget'
+        }
 
         rest_patch_mock.return_value = (200, ris_outputs.GET_HEADERS,
                                         ris_outputs.REST_POST_RESPONSE)
@@ -2272,7 +2301,7 @@ class TestRISOperationsPrivateMethods(te
         get_host_mock.return_value = (
             json.loads(ris_outputs.RESPONSE_BODY_FOR_REST_OP))
         self.assertRaisesRegex(exception.IloError, "No UEFI iSCSI bootable "
-                               "device found",
+                                                   "device found",
                                self.client._update_persistent_boot,
                                ['ISCSI'], persistent=True)
 
@@ -2747,24 +2776,24 @@ class TestRISOperationsPrivateMethods(te
         ld1 = {"size_gb": 150, "raid_level": '0', "is_root_volume": True}
         raid_config = {"logical_disks": [ld1]}
         product_name_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'ProLiant BL460c Gen9',
-                                self.client.read_raid_configuration,
-                                raid_config)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'ProLiant BL460c Gen9',
+                               self.client.read_raid_configuration,
+                               raid_config)
 
     @mock.patch.object(ris.RISOperations, 'get_product_name')
     def test_delete_raid_configuration(self, product_name_mock):
         product_name_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'ProLiant BL460c Gen9',
-                                self.client.delete_raid_configuration)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'ProLiant BL460c Gen9',
+                               self.client.delete_raid_configuration)
 
     @mock.patch.object(ris.RISOperations, 'get_product_name')
     def test_create_raid_configuration(self, product_name_mock):
         ld1 = {"size_gb": 150, "raid_level": '0', "is_root_volume": True}
         raid_config = {"logical_disks": [ld1]}
         product_name_mock.return_value = 'ProLiant BL460c Gen9'
-        self.assertRaisesRegexp(exception.IloCommandNotSupportedError,
-                                'ProLiant BL460c Gen9',
-                                self.client.create_raid_configuration,
-                                raid_config)
+        self.assertRaisesRegex(exception.IloCommandNotSupportedError,
+                               'ProLiant BL460c Gen9',
+                               self.client.create_raid_configuration,
+                               raid_config)
diff -pruN 2.12.0-1/proliantutils/tests/ipa_hw_manager/__init__.py 2.13.0-2/proliantutils/tests/ipa_hw_manager/__init__.py
--- 2.12.0-1/proliantutils/tests/ipa_hw_manager/__init__.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/ipa_hw_manager/__init__.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 # under the License.
 
 import sys
+from unittest import mock
 
-import mock
 from oslo_utils import importutils
 import six
 
diff -pruN 2.12.0-1/proliantutils/tests/ipa_hw_manager/test_hardware_manager.py 2.13.0-2/proliantutils/tests/ipa_hw_manager/test_hardware_manager.py
--- 2.12.0-1/proliantutils/tests/ipa_hw_manager/test_hardware_manager.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/ipa_hw_manager/test_hardware_manager.py	2022-02-18 11:12:24.000000000 +0000
@@ -12,7 +12,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-import mock
+from unittest import mock
+
 from oslo_utils import importutils
 import testtools
 
diff -pruN 2.12.0-1/proliantutils/tests/redfish/json_samples/pci_device2.json 2.13.0-2/proliantutils/tests/redfish/json_samples/pci_device2.json
--- 2.12.0-1/proliantutils/tests/redfish/json_samples/pci_device2.json	1970-01-01 00:00:00.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/json_samples/pci_device2.json	2022-02-18 11:12:24.000000000 +0000
@@ -0,0 +1,24 @@
+{
+    "@odata.context": "/redfish/v1/$metadata#Systems/Members/1/PCIDevices/Members/$entity",
+    "@odata.etag": "W/\"33150E20\"",
+    "@odata.id": "/redfish/v1/Systems/1/PCIDevices/1/",
+    "@odata.type": "#HpeServerPciDevice.v2_0_0.HpeServerPciDevice",
+    "BusNumber": 2,
+    "ClassCode": 2,
+    "DeviceID": 5719,
+    "DeviceInstance": 1,
+    "DeviceLocation": "Embedded",
+    "DeviceNumber": 0,
+    "DeviceSubInstance": 1,
+    "DeviceType": "Embedded LOM",
+    "FunctionNumber": 0,
+    "Id": "1",
+    "LocationString": "Embedded LOM 1",
+    "SegmentNumber": 0,
+    "StructuredName": "NIC.LOM.1.1",
+    "SubclassCode": 0,
+    "SubsystemDeviceID": 8894,
+    "SubsystemVendorID": 4156,
+    "UEFIDevicePath": "PciRoot(0x0)/Pci(0x1C,0x0)/Pci(0x0,0x0)",
+    "VendorID": 5348
+}
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/account_service/test_account.py 2.13.0-2/proliantutils/tests/redfish/resources/account_service/test_account.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/account_service/test_account.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/account_service/test_account.py	2022-02-18 11:12:24.000000000 +0000
@@ -15,8 +15,8 @@
 __author__ = 'HPE'
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.account_service import account
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/account_service/test_account_service.py 2.13.0-2/proliantutils/tests/redfish/resources/account_service/test_account_service.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/account_service/test_account_service.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/account_service/test_account_service.py	2022-02-18 11:12:24.000000000 +0000
@@ -15,8 +15,8 @@
 __author__ = 'HPE'
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.account_service import account
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/chassis/test_chassis.py 2.13.0-2/proliantutils/tests/redfish/resources/chassis/test_chassis.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/chassis/test_chassis.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/chassis/test_chassis.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.chassis import chassis
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/chassis/test_devices.py 2.13.0-2/proliantutils/tests/redfish/resources/chassis/test_devices.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/chassis/test_devices.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/chassis/test_devices.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.chassis import devices
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_https_cert.py 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_https_cert.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_https_cert.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_https_cert.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 """Test Class for HttpsCertTestCase"""
 
 import json
+from unittest import mock
 
-import mock
 import sushy
 import testtools
 
@@ -110,16 +110,20 @@ class HttpsCertTestCase(testtools.TestCa
             'The Redfish controller failed to import certificate. Error',
             self.https_cert_inst.import_certificate, 'certificate')
 
+    @mock.patch('time.sleep', autospec=True)
     @mock.patch.object(https_cert.HttpsCert, 'get_generate_csr_refresh',
                        autospec=True)
-    def test_wait_for_csr_to_create_ok(self, get_generate_csr_refresh_mock):
+    def test_wait_for_csr_to_create_ok(self, get_generate_csr_refresh_mock,
+                                       sleep_mock):
         self.cert_sign_request = 'certificate'
         self.https_cert_inst.wait_for_csr_to_create()
         self.assertTrue(get_generate_csr_refresh_mock.called)
 
+    @mock.patch('time.sleep', autospec=True)
     @mock.patch.object(https_cert.HttpsCert, 'get_generate_csr_refresh',
                        autospec=True)
-    def test_wait_for_csr_to_create_fails(self, get_generate_csr_refresh_mock):
+    def test_wait_for_csr_to_create_fails(self, get_generate_csr_refresh_mock,
+                                          sleep_mock):
         exc = exception.IloError('error')
         get_generate_csr_refresh_mock.side_effect = exc
         self.assertRaises(exception.IloError,
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_manager.py 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_manager.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_manager.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_manager.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.manager import manager
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_security_dashboard.py 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_security_dashboard.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_security_dashboard.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_security_dashboard.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 """Test Class for SecurityDashboard."""
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.manager import security_dashboard
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_security_params.py 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_security_params.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_security_params.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_security_params.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 """Test Class for SecurityParamsTestCase"""
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.manager import security_params
@@ -36,7 +36,8 @@ class SecurityParamsTestCase(testtools.T
         path = ("/redfish/v1/Mangers/1/SecurityService/"
                 "SecurityDashboard/SecurityParams")
         self.sec_param = security_params.SecurityParams(
-            self.conn, path, '1.0.2', None)
+            self.conn, path, redfish_version='1.0.2',
+            registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sec_param._parse_attributes(self.json_doc)
@@ -67,7 +68,7 @@ class SecurityParamsCollectionTestCase(t
             self.conn,
             ('/redfish/v1/Managers/1/SecurityService/'
              'SecurityDashboard/SecurityParams'),
-            redfish_version='1.0.2')
+            redfish_version='1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sec_params_col._parse_attributes(self.json_doc)
@@ -89,7 +90,8 @@ class SecurityParamsCollectionTestCase(t
             self.sec_params_col._conn,
             ('/redfish/v1/Managers/1/SecurityService/SecurityDashboard/'
              'SecurityParams/1'),
-            self.sec_params_col.redfish_version, None)
+            redfish_version=self.sec_params_col.redfish_version,
+            registries=None, root=self.sec_params_col.root)
 
     @mock.patch.object(security_params, 'SecurityParams', autospec=True)
     def test_get_members(self, mock_eth):
@@ -99,9 +101,11 @@ class SecurityParamsCollectionTestCase(t
         path2 = ('/redfish/v1/Managers/1/SecurityService/SecurityDashboard/'
                  'SecurityParams/1')
         calls = [mock.call(self.sec_params_col._conn, path,
-                           self.sec_params_col.redfish_version, None),
+                           redfish_version=self.sec_params_col.redfish_version,
+                           registries=None, root=self.sec_params_col.root),
                  mock.call(self.sec_params_col._conn, path2,
-                           self.sec_params_col.redfish_version, None)]
+                           redfish_version=self.sec_params_col.redfish_version,
+                           registries=None, root=self.sec_params_col.root)]
         mock_eth.assert_has_calls(calls)
         self.assertIsInstance(members, list)
         self.assertEqual(2, len(members))
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_security_service.py 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_security_service.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_security_service.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_security_service.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.manager import security_service
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_virtual_media.py 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_virtual_media.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/manager/test_virtual_media.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/manager/test_virtual_media.py	2022-02-18 11:12:24.000000000 +0000
@@ -15,8 +15,8 @@
 __author__ = 'HPE'
 
 import json
+from unittest import mock
 
-import mock
 from sushy import exceptions
 from sushy.resources.manager import virtual_media as sushy_virt_media
 import testtools
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_array_controller.py 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_array_controller.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_array_controller.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_array_controller.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system.storage import array_controller
@@ -34,7 +34,8 @@ class HPEArrayControllerTestCase(testtoo
 
         path = ("/redfish/v1/Systems/1/SmartStorage/ArrayControllers")
         self.sys_stor = array_controller.HPEArrayController(
-            self.conn, path, '1.0.2', None)
+            self.conn, path, redfish_version='1.0.2',
+            registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_stor._parse_attributes(self.json_doc)
@@ -91,7 +92,7 @@ class HPEArrayControllerCollectionTestCa
         self.conn.get.return_value.json.return_value = self.json_doc
         self.sys_stor_col = array_controller.HPEArrayControllerCollection(
             self.conn, '/redfish/v1/Systems/1/SmartStorage/ArrayControllers',
-            '1.0.2', None)
+            redfish_version='1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_stor_col._parse_attributes(self.json_doc)
@@ -108,7 +109,8 @@ class HPEArrayControllerCollectionTestCa
         mock_eth.assert_called_once_with(
             self.sys_stor_col._conn,
             '/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0',
-            self.sys_stor_col.redfish_version, None)
+            redfish_version=self.sys_stor_col.redfish_version,
+            registries=None, root=self.sys_stor_col.root)
 
     @mock.patch.object(array_controller, 'HPEArrayController', autospec=True)
     def test_get_members(self, mock_eth):
@@ -116,7 +118,8 @@ class HPEArrayControllerCollectionTestCa
         path = ("/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0")
         calls = [
             mock.call(self.sys_stor_col._conn, path,
-                      self.sys_stor_col.redfish_version, None),
+                      redfish_version=self.sys_stor_col.redfish_version,
+                      registries=None, root=self.sys_stor_col.root),
         ]
         mock_eth.assert_has_calls(calls)
         self.assertIsInstance(members, list)
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_common.py 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_common.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_common.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_common.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,9 @@
 # under the License.
 __author__ = 'HPE'
 
+from unittest import mock
+
 import ddt
-import mock
 import sushy
 import testtools
 
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_drive.py 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_drive.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_drive.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_drive.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system.storage import constants
@@ -35,7 +35,8 @@ class DriveTestCase(testtools.TestCase):
         drive_path = ("/redfish/v1/Systems/437XR1138R2/Storage/1/"
                       "Drives/35D38F11ACEF7BD3")
         self.sys_drive = drive.Drive(
-            self.conn, drive_path, redfish_version='1.0.2')
+            self.conn, drive_path, redfish_version='1.0.2',
+            registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_drive._parse_attributes(self.json_doc['drive1'])
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_logical_drive.py 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_logical_drive.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_logical_drive.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_logical_drive.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system.storage import logical_drive
@@ -34,7 +34,7 @@ class HPELogicalDriveTestCase(testtools.
         path = ("/redfish/v1/Systems/1/SmartStorage/"
                 "ArrayControllers/0/LogicalDrives")
         self.sys_stor = logical_drive.HPELogicalDrive(
-            self.conn, path, '1.0.2', None)
+            self.conn, path, '1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_stor._parse_attributes(self.json_doc)
@@ -53,7 +53,7 @@ class HPELogicalDriveCollectionTestCase(
         self.sys_stor_col = logical_drive.HPELogicalDriveCollection(
             self.conn, ('/redfish/v1/Systems/1/SmartStorage/'
                         'ArrayControllers/0/LogicalDrives'),
-            redfish_version='1.0.2')
+            redfish_version='1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_stor_col._parse_attributes(self.json_doc)
@@ -75,7 +75,8 @@ class HPELogicalDriveCollectionTestCase(
             self.sys_stor_col._conn,
             ('/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/'
              'LogicalDrives/1'),
-            self.sys_stor_col.redfish_version, None)
+            redfish_version=self.sys_stor_col.redfish_version,
+            registries=None, root=self.sys_stor_col.root)
 
     @mock.patch.object(logical_drive, 'HPELogicalDrive', autospec=True)
     def test_get_members(self, mock_eth):
@@ -86,9 +87,11 @@ class HPELogicalDriveCollectionTestCase(
                  "0/LogicalDrives/2")
         calls = [
             mock.call(self.sys_stor_col._conn, path1,
-                      self.sys_stor_col.redfish_version, None),
+                      redfish_version=self.sys_stor_col.redfish_version,
+                      registries=None, root=self.sys_stor_col.root),
             mock.call(self.sys_stor_col._conn, path2,
-                      self.sys_stor_col.redfish_version, None),
+                      redfish_version=self.sys_stor_col.redfish_version,
+                      registries=None, root=self.sys_stor_col.root),
         ]
         mock_eth.assert_has_calls(calls)
         self.assertIsInstance(members, list)
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_physical_drive.py 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_physical_drive.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_physical_drive.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_physical_drive.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system.storage import physical_drive
@@ -35,7 +35,8 @@ class HPEPhysicalDriveTestCase(testtools
         path = ("/redfish/v1/Systems/1/SmartStorage/"
                 "ArrayControllers/0/DiskDrives")
         self.sys_stor = physical_drive.HPEPhysicalDrive(
-            self.conn, path, '1.0.2', None)
+            self.conn, path, redfish_version='1.0.2',
+            registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_stor._parse_attributes(self.json_doc['drive1'])
@@ -56,7 +57,7 @@ class HPEPhysicalDriveCollectionTestCase
         self.sys_stor_col = physical_drive.HPEPhysicalDriveCollection(
             self.conn, ('/redfish/v1/Systems/1/SmartStorage/'
                         'ArrayControllers/0/DiskDrives'),
-            redfish_version='1.0.2')
+            redfish_version='1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_stor_col._parse_attributes(self.json_doc)
@@ -78,7 +79,8 @@ class HPEPhysicalDriveCollectionTestCase
             self.sys_stor_col._conn,
             ('/redfish/v1/Systems/1/SmartStorage/ArrayControllers/0/'
              'DiskDrives/3'),
-            self.sys_stor_col.redfish_version, None)
+            redfish_version=self.sys_stor_col.redfish_version,
+            registries=None, root=self.sys_stor_col.root)
 
     @mock.patch.object(physical_drive, 'HPEPhysicalDrive', autospec=True)
     def test_get_members(self, mock_eth):
@@ -89,9 +91,11 @@ class HPEPhysicalDriveCollectionTestCase
                  "0/DiskDrives/4")
         calls = [
             mock.call(self.sys_stor_col._conn, path,
-                      self.sys_stor_col.redfish_version, None),
+                      redfish_version=self.sys_stor_col.redfish_version,
+                      registries=None, root=self.sys_stor_col.root),
             mock.call(self.sys_stor_col._conn, path2,
-                      self.sys_stor_col.redfish_version, None),
+                      redfish_version=self.sys_stor_col.redfish_version,
+                      registries=None, root=self.sys_stor_col.root),
         ]
         mock_eth.assert_has_calls(calls)
         self.assertIsInstance(members, list)
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_simple_storage.py 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_simple_storage.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_simple_storage.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_simple_storage.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system.storage import simple_storage
@@ -33,7 +33,8 @@ class SimpleStorageTestCase(testtools.Te
 
         simple_path = ("/redfish/v1/Systems/437XR1138R2/SimpleStorage/1")
         self.sys_simple = simple_storage.SimpleStorage(
-            self.conn, simple_path, '1.0.2', None)
+            self.conn, simple_path, redfish_version='1.0.2',
+            registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_simple._parse_attributes(self.json_doc)
@@ -65,7 +66,7 @@ class SimpleStorageCollectionTestCase(te
         self.conn.get.return_value.json.return_value = self.json_doc
         self.sys_simple_col = simple_storage.SimpleStorageCollection(
             self.conn, '/redfish/v1/Systems/437XR1138R2/SimpleStorage',
-            '1.0.2', None)
+            redfish_version='1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_simple_col._parse_attributes(self.json_doc)
@@ -82,7 +83,8 @@ class SimpleStorageCollectionTestCase(te
         mock_simple.assert_called_once_with(
             self.sys_simple_col._conn,
             '/redfish/v1/Systems/437XR1138R2/SimpleStorage/1',
-            self.sys_simple_col.redfish_version, None)
+            redfish_version=self.sys_simple_col.redfish_version,
+            registries=None, root=self.sys_simple_col.root)
 
     @mock.patch.object(simple_storage, 'SimpleStorage', autospec=True)
     def test_get_members(self, mock_simple):
@@ -90,7 +92,8 @@ class SimpleStorageCollectionTestCase(te
         simple_path = ("/redfish/v1/Systems/437XR1138R2/SimpleStorage/1")
         calls = [
             mock.call(self.sys_simple_col._conn, simple_path,
-                      self.sys_simple_col.redfish_version, None),
+                      redfish_version=self.sys_simple_col.redfish_version,
+                      registries=None, root=self.sys_simple_col.root),
         ]
         mock_simple.assert_has_calls(calls)
         self.assertIsInstance(members, list)
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_smart_storage.py 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_smart_storage.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_smart_storage.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_smart_storage.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system.storage import array_controller
@@ -34,7 +34,7 @@ class HPESmartStorageTestCase(testtools.
 
         path = ("/redfish/v1/Systems/1/SmartStorage")
         self.sys_stor = smart_storage.HPESmartStorage(
-            self.conn, path, '1.0.2', None)
+            self.conn, path, '1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_stor._parse_attributes(self.json_doc)
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_storage.py 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_storage.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_storage.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_storage.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system.storage import storage
@@ -32,7 +32,8 @@ class StorageTestCase(testtools.TestCase
 
         path = ("/redfish/v1/Systems/437XR1138R2/Storage/1")
         self.sys_stor = storage.Storage(
-            self.conn, path, redfish_version='1.0.2')
+            self.conn, path, redfish_version='1.0.2',
+            registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_stor._parse_attributes(self.json_doc)
@@ -154,7 +155,7 @@ class StorageCollectionTestCase(testtool
         self.conn.get.return_value.json.return_value = self.json_doc
         self.sys_stor_col = storage.StorageCollection(
             self.conn, '/redfish/v1/Systems/437XR1138R2/Storage',
-            redfish_version='1.0.2')
+            redfish_version='1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_stor_col._parse_attributes(self.json_doc)
@@ -171,7 +172,8 @@ class StorageCollectionTestCase(testtool
         mock_eth.assert_called_once_with(
             self.sys_stor_col._conn,
             ('/redfish/v1/Systems/437XR1138R2/Storage/1'),
-            self.sys_stor_col.redfish_version, None)
+            redfish_version=self.sys_stor_col.redfish_version,
+            registries=None, root=self.sys_stor_col.root)
 
     @mock.patch.object(storage, 'Storage', autospec=True)
     def test_get_members(self, mock_eth):
@@ -179,7 +181,8 @@ class StorageCollectionTestCase(testtool
         path = ("/redfish/v1/Systems/437XR1138R2/Storage/1")
         calls = [
             mock.call(self.sys_stor_col._conn, path,
-                      self.sys_stor_col.redfish_version, None),
+                      redfish_version=self.sys_stor_col.redfish_version,
+                      registries=None, root=self.sys_stor_col.root),
         ]
         mock_eth.assert_has_calls(calls)
         self.assertIsInstance(members, list)
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_volume.py 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_volume.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/storage/test_volume.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/storage/test_volume.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system.storage import volume
@@ -32,7 +32,8 @@ class VolumeTestCase(testtools.TestCase)
 
         vol_path = ("/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/1")
         self.sys_vol = volume.Volume(
-            self.conn, vol_path, '1.0.2', None)
+            self.conn, vol_path, redfish_version='1.0.2',
+            registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_vol._parse_attributes(self.json_doc)
@@ -52,7 +53,7 @@ class VolumeCollectionTestCase(testtools
             self.conn.get.return_value.json.return_value = self.json_doc
         self.sys_vol_col = volume.VolumeCollection(
             self.conn, '/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes',
-            '1.0.2', None)
+            redfish_version='1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_vol_col._parse_attributes(self.json_doc)
@@ -69,7 +70,8 @@ class VolumeCollectionTestCase(testtools
         mock_vol.assert_called_once_with(
             self.sys_vol_col._conn,
             ('/redfish/v1/Systems/437XR1138R2/Volumes/1'),
-            self.sys_vol_col.redfish_version, None)
+            redfish_version=self.sys_vol_col.redfish_version,
+            registries=None, root=self.sys_vol_col.root)
 
     @mock.patch.object(volume, 'Volume', autospec=True)
     def test_get_members(self, mock_vol):
@@ -77,7 +79,8 @@ class VolumeCollectionTestCase(testtools
         vol_path = ("/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/1")
         calls = [
             mock.call(self.sys_vol_col._conn, vol_path,
-                      self.sys_vol_col.redfish_version, None),
+                      redfish_version=self.sys_vol_col.redfish_version,
+                      registries=None, root=self.sys_vol_col.root),
         ]
         mock_vol.assert_has_calls(calls)
         self.assertIsInstance(members, list)
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/test_bios.py 2.13.0-2/proliantutils/tests/redfish/resources/system/test_bios.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/test_bios.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/test_bios.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import sushy
 import testtools
 
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/test_ethernet_interface.py 2.13.0-2/proliantutils/tests/redfish/resources/system/test_ethernet_interface.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/test_ethernet_interface.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/test_ethernet_interface.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,11 +14,11 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
+import sushy
 import testtools
 
-from proliantutils.redfish.resources.system import constants as sys_cons
 from proliantutils.redfish.resources.system import ethernet_interface
 
 
@@ -36,7 +36,8 @@ class EthernetInterfaceTestCase(testtool
         eth_path = ("/redfish/v1/Systems/437XR1138R2/EthernetInterfaces/"
                     "12446A3B0411")
         self.sys_eth = ethernet_interface.EthernetInterface(
-            self.conn, eth_path, '1.0.2', None)
+            self.conn, eth_path, redfish_version='1.0.2',
+            registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_eth._parse_attributes(self.json_doc['default'])
@@ -47,9 +48,8 @@ class EthernetInterfaceTestCase(testtool
         self.assertEqual(
             '12:44:6A:3B:04:11', self.sys_eth.permanent_mac_address)
         self.assertEqual('12:44:6A:3B:04:11', self.sys_eth.mac_address)
-        self.assertEqual(sys_cons.HEALTH_STATE_ENABLED,
-                         self.sys_eth.status.state)
-        self.assertEqual(sys_cons.HEALTH_OK, self.sys_eth.status.health)
+        self.assertEqual(sushy.STATE_ENABLED, self.sys_eth.status.state)
+        self.assertEqual(sushy.HEALTH_OK, self.sys_eth.status.health)
         self.assertEqual(1000, self.sys_eth.speed_mbps)
 
 
@@ -64,7 +64,7 @@ class EthernetInterfaceCollectionTestCas
         self.conn.get.return_value.json.return_value = self.json_doc
         self.sys_eth_col = ethernet_interface.EthernetInterfaceCollection(
             self.conn, '/redfish/v1/Systems/437XR1138R2/EthernetInterfaces',
-            '1.0.2', None)
+            '1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_eth_col._parse_attributes(self.json_doc)
@@ -84,7 +84,8 @@ class EthernetInterfaceCollectionTestCas
             self.sys_eth_col._conn,
             ('/redfish/v1/Systems/437XR1138R2/EthernetInterfaces/'
              '12446A3B0411'),
-            self.sys_eth_col.redfish_version, None)
+            redfish_version=self.sys_eth_col.redfish_version, registries=None,
+            root=self.sys_eth_col.root)
 
     @mock.patch.object(ethernet_interface, 'EthernetInterface', autospec=True)
     def test_get_members(self, mock_eth):
@@ -93,7 +94,9 @@ class EthernetInterfaceCollectionTestCas
                     "12446A3B0411")
         calls = [
             mock.call(self.sys_eth_col._conn, eth_path,
-                      self.sys_eth_col.redfish_version, None),
+                      redfish_version=self.sys_eth_col.redfish_version,
+                      registries=None,
+                      root=self.sys_eth_col.root),
         ]
         mock_eth.assert_has_calls(calls)
         self.assertIsInstance(members, list)
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/test_iscsi.py 2.13.0-2/proliantutils/tests/redfish/resources/system/test_iscsi.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/test_iscsi.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/test_iscsi.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,9 +14,9 @@
 #    under the License.
 
 import json
+from unittest import mock
 
 import ddt
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system import iscsi
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/test_memory.py 2.13.0-2/proliantutils/tests/redfish/resources/system/test_memory.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/test_memory.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/test_memory.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system import constants
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/test_pci_device.py 2.13.0-2/proliantutils/tests/redfish/resources/system/test_pci_device.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/test_pci_device.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/test_pci_device.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017 Hewlett Packard Enterprise Development LP
+# Copyright 2017-2022 Hewlett Packard Enterprise Development LP
 # All Rights Reserved.
 #
 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system import pci_device
@@ -33,7 +33,8 @@ class PCIDeviceTestCase(testtools.TestCa
 
         pci_path = "/redfish/v1/Systems/1/PCIDevices/1"
         self.sys_pci = pci_device.PCIDevice(
-            self.conn, pci_path, '1.0.2', None)
+            self.conn, pci_path, redfish_version='1.0.2',
+            registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_pci._parse_attributes(self.json_doc)
@@ -53,7 +54,7 @@ class PCIDeviceCollectionTestCase(testto
         self.conn.get.return_value.json.return_value = self.json_doc
         self.sys_pci_col = pci_device.PCIDeviceCollection(
             self.conn, '/redfish/v1/Systems/1/PCIDevices',
-            redfish_version='1.0.2')
+            redfish_version='1.0.2', registries=None, root=None)
 
     def test__parse_attributes(self):
         self.sys_pci_col._parse_attributes(self.json_doc)
@@ -70,7 +71,8 @@ class PCIDeviceCollectionTestCase(testto
         mock_pci.assert_called_once_with(
             self.sys_pci_col._conn,
             ('/redfish/v1/Systems/1/PCIDevices/1'),
-            self.sys_pci_col.redfish_version, None)
+            redfish_version=self.sys_pci_col.redfish_version,
+            registries=None, root=self.sys_pci_col.root)
 
     @mock.patch.object(pci_device, 'PCIDevice', autospec=True)
     def test_get_members(self, mock_pci):
@@ -79,9 +81,11 @@ class PCIDeviceCollectionTestCase(testto
                      "/redfish/v1/Systems/1/PCIDevices/6"]
         calls = [
             mock.call(self.sys_pci_col._conn, path_list[0],
-                      self.sys_pci_col.redfish_version, None),
+                      redfish_version=self.sys_pci_col.redfish_version,
+                      registries=None, root=self.sys_pci_col.root),
             mock.call(self.sys_pci_col._conn, path_list[1],
-                      self.sys_pci_col.redfish_version, None)
+                      redfish_version=self.sys_pci_col.redfish_version,
+                      registries=None, root=self.sys_pci_col.root)
         ]
         mock_pci.assert_has_calls(calls)
         self.assertIsInstance(members, list)
@@ -115,6 +119,10 @@ class PCIDeviceCollectionTestCase(testto
                 'pci_device1.json')
         with open(path, 'r') as f:
             val.append(json.loads(f.read()))
+        path = ('proliantutils/tests/redfish/json_samples/'
+                'pci_device2.json')
+        with open(path, 'r') as f:
+            val.append(json.loads(f.read()))
         self.conn.get.return_value.json.side_effect = val
         actual_capacity = self.sys_pci_col.max_nic_capacity
         expected = '1Gb'
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/test_secure_boot.py 2.13.0-2/proliantutils/tests/redfish/resources/system/test_secure_boot.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/test_secure_boot.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/test_secure_boot.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils import exception
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/test_smart_storage_config.py 2.13.0-2/proliantutils/tests/redfish/resources/system/test_smart_storage_config.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/test_smart_storage_config.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/test_smart_storage_config.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils import exception
@@ -179,7 +179,7 @@ class HPESmartStorageConfigTestCase(test
         type(self.ssc_inst).physical_drives = mock.PropertyMock(
             return_value=physical_drive)
         message_mock.return_value = False, 'err_mesg'
-        self.assertRaisesRegexp(
+        self.assertRaisesRegex(
             exception.IloError,
             'Failed to perform the create_raid operation successfully',
             self.ssc_inst.read_raid, ld1['controller'])
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/test_system.py 2.13.0-2/proliantutils/tests/redfish/resources/system/test_system.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/test_system.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/test_system.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018 Hewlett Packard Enterprise Development LP
+# Copyright 2018-2022 Hewlett Packard Enterprise Development LP
 # All Rights Reserved.
 #
 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import sushy
 from sushy.resources.system import system as sushy_system
 import testtools
@@ -40,6 +40,7 @@ class HPESystemTestCase(testtools.TestCa
     def setUp(self):
         super(HPESystemTestCase, self).setUp()
         self.conn = mock.MagicMock()
+        self.conn.get.return_value.headers = {'Allow': 'GET,HEAD'}
         with open('proliantutils/tests/redfish/'
                   'json_samples/system.json', 'r') as f:
             system_json = json.loads(f.read())
@@ -181,7 +182,8 @@ class HPESystemTestCase(testtools.TestCa
                  mock.call('/redfish/v1/Systems/1',
                            data={'Boot':
                                  {'BootSourceOverrideTarget': 'UefiTarget',
-                                  'BootSourceOverrideEnabled': 'Continuous'}})]
+                                  'BootSourceOverrideEnabled': 'Continuous'}},
+                           headers=None)]
         self.sys_inst._conn.patch.assert_has_calls(calls)
 
     def test_update_persistent_boot_uefi_no_iscsi_device(self):
@@ -613,7 +615,7 @@ class HPESystemTestCase(testtools.TestCa
         parse_raid_config_mock.return_value = parse_data
         check_smart_storage_config_ids_mock.return_value = None
         get_smart_storage_config_model_mock.return_value = None
-        self.assertRaisesRegexp(
+        self.assertRaisesRegex(
             exception.IloError,
             "The Redfish controller failed to create the raid "
             "configuration for one or more controllers with",
@@ -712,7 +714,7 @@ class HPESystemTestCase(testtools.TestCa
             mock.PropertyMock(return_value=config_id))
         get_smart_storage_config_mock.return_value.read_raid.side_effect = (
             sushy.exceptions.SushyError)
-        self.assertRaisesRegexp(
+        self.assertRaisesRegex(
             exception.IloError,
             "The Redfish controller failed to read the "
             "raid configuration in one or more controllers with Error:",
@@ -736,7 +738,7 @@ class HPESystemTestCase(testtools.TestCa
         parse_raid_config_mock.return_value = parse_data
         (get_smart_storage_config_model_mock.
          return_value.create_raid.side_effect) = sushy.exceptions.SushyError
-        self.assertRaisesRegexp(
+        self.assertRaisesRegex(
             exception.IloError,
             "The Redfish controller failed to create the "
             "raid configuration for one or more controllers with Error:",
@@ -800,7 +802,7 @@ class HPESystemTestCase(testtools.TestCa
         parse_raid_config_data_mock.return_value = parse_data
         (get_ssc_by_controller_model_mock.
          return_value.read_raid.side_effect) = sushy.exceptions.SushyError
-        self.assertRaisesRegexp(
+        self.assertRaisesRegex(
             exception.IloError,
             "The Redfish controller failed to read the "
             "raid configuration in one or more controllers with Error:",
@@ -895,7 +897,7 @@ class HPESystemTestCase(testtools.TestCa
         self.conn.get.return_value.json.reset_mock()
         (self.conn.get.return_value.
          json.side_effect) = [ss_json, sushy.exceptions.SushyError]
-        self.assertRaisesRegexp(
+        self.assertRaisesRegex(
             exception.IloError,
             "The Redfish controller failed to get the status of sanitize disk "
             "erase. Error:",
@@ -924,7 +926,7 @@ class HPESystemTestCase(testtools.TestCa
             '#HpeComputerSystemExt.SecureSystemErase')
         type(secure_erase_action_mock.return_value).target_uri = target_uri
         self.sys_inst._conn.post.side_effect = sushy.exceptions.SushyError
-        self.assertRaisesRegexp(
+        self.assertRaisesRegex(
             exception.IloError,
             "The Redfish controller failed to perform one button "
             "secure erase operation on the hardware. Error:",
@@ -1095,7 +1097,7 @@ class HPESystemTestCase(testtools.TestCa
         self.conn.get.return_value.json.reset_mock()
         (self.conn.get.return_value.
          json.side_effect) = [ss_json, acc_json, sushy.exceptions.SushyError]
-        self.assertRaisesRegexp(
+        self.assertRaisesRegex(
             exception.IloError,
             "The Redfish controller failed to perform the sanitize disk erase "
             "on smart storage controller: HPE Smart Array P408i-p SR Gen10, "
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/system/test_tls_config.py 2.13.0-2/proliantutils/tests/redfish/resources/system/test_tls_config.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/system/test_tls_config.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/system/test_tls_config.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils.redfish.resources.system import tls_config
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/test_gpu_common.py 2.13.0-2/proliantutils/tests/redfish/resources/test_gpu_common.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/test_gpu_common.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/test_gpu_common.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,8 +13,9 @@
 # under the License.
 __author__ = 'HPE'
 
+from unittest import mock
+
 import ddt
-import mock
 import sushy
 import testtools
 
diff -pruN 2.12.0-1/proliantutils/tests/redfish/resources/test_update_service.py 2.13.0-2/proliantutils/tests/redfish/resources/test_update_service.py
--- 2.12.0-1/proliantutils/tests/redfish/resources/test_update_service.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/resources/test_update_service.py	2022-02-18 11:12:24.000000000 +0000
@@ -15,8 +15,8 @@
 
 import json
 import time
+from unittest import mock
 
-import mock
 import sushy
 import testtools
 
diff -pruN 2.12.0-1/proliantutils/tests/redfish/test_connector.py 2.13.0-2/proliantutils/tests/redfish/test_connector.py
--- 2.12.0-1/proliantutils/tests/redfish/test_connector.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/test_connector.py	2022-02-18 11:12:24.000000000 +0000
@@ -13,7 +13,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import mock
+from unittest import mock
+
 from sushy import connector
 from sushy import exceptions
 import testtools
diff -pruN 2.12.0-1/proliantutils/tests/redfish/test_main.py 2.13.0-2/proliantutils/tests/redfish/test_main.py
--- 2.12.0-1/proliantutils/tests/redfish/test_main.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/test_main.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 #    under the License.
 
 import json
+from unittest import mock
 
-import mock
 import testtools
 
 from proliantutils import exception
diff -pruN 2.12.0-1/proliantutils/tests/redfish/test_redfish.py 2.13.0-2/proliantutils/tests/redfish/test_redfish.py
--- 2.12.0-1/proliantutils/tests/redfish/test_redfish.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/test_redfish.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019 Hewlett Packard Enterprise Development LP
+# Copyright 2019-2022 Hewlett Packard Enterprise Development Company, L.P.
 # All Rights Reserved.
 #
 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -18,10 +18,9 @@ import builtins
 import collections
 import io
 import json
-import os
+from unittest import mock
 
 import ddt
-import mock
 import sushy
 from sushy.resources.system import system
 import testtools
@@ -44,6 +43,7 @@ from proliantutils.redfish.resources.sys
 from proliantutils.redfish.resources.system.storage \
     import common as common_storage
 from proliantutils.redfish.resources.system import system as pro_sys
+from proliantutils import utils as common_utils
 
 
 @ddt.ddt
@@ -334,7 +334,9 @@ class RedfishOperationsTestCase(testtool
     @mock.patch.object(redfish.RedfishOperations, '_get_sushy_manager')
     @mock.patch.object(virtual_media.VirtualMedia, 'eject_media')
     @mock.patch.object(virtual_media.VirtualMedia, 'insert_media')
-    def test_insert_virtual_media(self, insert_mock, eject_mock, manager_mock):
+    @mock.patch.object(common_utils, 'validate_href')
+    def test_insert_virtual_media(
+            self, validate_href_mock, insert_mock, eject_mock, manager_mock):
         manager_mock.return_value, vmedia_collection_json, vmedia_json = (
             self._setup_virtual_media())
         self.conn.get.return_value.json.side_effect = [
@@ -345,12 +347,14 @@ class RedfishOperationsTestCase(testtool
 
         self.assertFalse(eject_mock.called)
         insert_mock.assert_called_once_with(url)
+        validate_href_mock.assert_called_once_with(url)
 
     @mock.patch.object(redfish.RedfishOperations, '_get_sushy_manager')
     @mock.patch.object(virtual_media.VirtualMedia, 'eject_media')
     @mock.patch.object(virtual_media.VirtualMedia, 'insert_media')
-    def test_insert_virtual_media_floppy(self, insert_mock, eject_mock,
-                                         manager_mock):
+    @mock.patch.object(common_utils, 'validate_href')
+    def test_insert_virtual_media_floppy(
+            self, validate_href_mock, insert_mock, eject_mock, manager_mock):
         manager_mock.return_value, vmedia_collection_json, vmedia_json = (
             self._setup_virtual_media())
         self.conn.get.return_value.json.side_effect = [
@@ -361,12 +365,14 @@ class RedfishOperationsTestCase(testtool
 
         self.assertFalse(eject_mock.called)
         insert_mock.assert_called_once_with(url)
+        validate_href_mock.assert_called_once_with(url)
 
     @mock.patch.object(redfish.RedfishOperations, '_get_sushy_manager')
     @mock.patch.object(virtual_media.VirtualMedia, 'eject_media')
     @mock.patch.object(virtual_media.VirtualMedia, 'insert_media')
-    def test_insert_virtual_media_inserted(self, insert_mock, eject_mock,
-                                           manager_mock):
+    @mock.patch.object(common_utils, 'validate_href')
+    def test_insert_virtual_media_inserted(
+            self, validate_href_mock, insert_mock, eject_mock, manager_mock):
         manager_mock.return_value, vmedia_collection_json, vmedia_json = (
             self._setup_virtual_media())
         self.conn.get.return_value.json.side_effect = [
@@ -377,12 +383,14 @@ class RedfishOperationsTestCase(testtool
 
         eject_mock.assert_called_once_with()
         insert_mock.assert_called_once_with(url)
+        validate_href_mock.assert_called_once_with(url)
 
     @mock.patch.object(redfish.RedfishOperations, '_get_sushy_manager')
     @mock.patch.object(virtual_media.VirtualMedia, 'eject_media')
     @mock.patch.object(virtual_media.VirtualMedia, 'insert_media')
-    def test_insert_virtual_media_fail(self, insert_mock, eject_mock,
-                                       manager_mock):
+    @mock.patch.object(common_utils, 'validate_href')
+    def test_insert_virtual_media_fail(
+            self, validate_href_mock, insert_mock, eject_mock, manager_mock):
         manager_mock.return_value, vmedia_collection_json, vmedia_json = (
             self._setup_virtual_media())
         insert_mock.side_effect = sushy.exceptions.SushyError
@@ -395,6 +403,7 @@ class RedfishOperationsTestCase(testtool
         self.assertRaisesRegex(exception.IloError, msg,
                                self.rf_client.insert_virtual_media,
                                url, 'CDROM')
+        validate_href_mock.assert_called_once_with(url)
 
     @mock.patch.object(virtual_media.VirtualMedia, 'set_vm_status')
     @mock.patch.object(redfish.RedfishOperations, '_get_sushy_manager')
@@ -1081,7 +1090,7 @@ class RedfishOperationsTestCase(testtool
         count_mock = mock.PropertyMock(return_value=40)
         type(get_system_mock.return_value.processors.summary).count = (
             count_mock)
-        arch_mock = mock.PropertyMock(return_value='x86 or x86-64')
+        arch_mock = mock.PropertyMock(return_value=sushy.PROCESSOR_ARCH_x86)
         type(get_system_mock.return_value.processors.summary).architecture = (
             arch_mock)
         type(get_system_mock.return_value.ethernet_interfaces).summary = (
@@ -1090,7 +1099,7 @@ class RedfishOperationsTestCase(testtool
         local_gb_mock.return_value = 600
         actual = self.rf_client.get_essential_properties()
         expected = {'properties': {'cpus': 40,
-                                   'cpu_arch': 'x86',
+                                   'cpu_arch': 'x86_64',
                                    'memory_mb': 20480,
                                    'local_gb': 600},
                     'macs': {'1': '12:44:6A:3B:04:11'}}
@@ -2515,9 +2524,7 @@ class RedfishOperationsTestCase(testtool
             self.rf_client.update_authentication_failure_logging)
 
     @mock.patch.object(redfish.RedfishOperations, '_get_sushy_manager')
-    @mock.patch.object(os, 'makedirs', autospec=True)
-    @mock.patch.object(redfish, 'shutil', autospec=True)
-    def test_create_csr(self, shutil_mock, makedirs_mock, manager_mock):
+    def test__create_csr(self, manager_mock):
         data = {
             "CommonName": '1.1.1.1',
             "Country": 'IN',
@@ -2528,13 +2535,12 @@ class RedfishOperationsTestCase(testtool
         }
         (manager_mock.return_value.securityservice.https_certificate_uri.
          generate_csr.return_value) = 'certificate'
-        self.rf_client.create_csr('/httproot', data)
+        self.rf_client.create_csr(data)
         (manager_mock.return_value.securityservice.https_certificate_uri.
          generate_csr.assert_called_once_with(data))
-        makedirs_mock.assert_called_once_with('/httproot/cert', 0o755)
 
     @mock.patch.object(redfish.RedfishOperations, '_get_sushy_manager')
-    def test_create_csr_fail(self, manager_mock):
+    def test__create_csr_fail(self, manager_mock):
         data = {
             "CommonName": '1.1.1.1',
             "Country": 'IN',
@@ -2549,12 +2555,47 @@ class RedfishOperationsTestCase(testtool
         msg = ("The Redfish controller failed to create the "
                "certificate signing request. ")
         self.assertRaisesRegex(
-            exception.IloError, msg, self.rf_client.create_csr,
-            '/httproot', data)
+            exception.IloError, msg, self.rf_client.create_csr, data)
+
+    @mock.patch.object(redfish.RedfishOperations, 'create_csr')
+    @mock.patch.object(redfish.RedfishOperations, 'add_https_certificate')
+    @mock.patch.object(builtins, 'open')
+    @mock.patch('subprocess.Popen')
+    def test_add_ssl_certificate(self, subprocess_mock, open_mock,
+                                 https_cert_mock, create_mock):
+        csr_params = {
+            "CommonName": '1.1.1.1',
+            "Country": 'IN',
+            "State": 'KA',
+            "City": 'blr',
+            "OrgName": 'HPE',
+            "OrgUnit": None
+        }
+        p_key = '/p_key.key'
+        create_mock.return_value = '/tmp/csr_file'
+        data = (
+            "-----BEGIN CERTIFICATE-----\nMIID7TC\nCF"
+            "g879\n-----END CERTIFICATE-----\n"
+            "-----BEGIN CERTIFICATE-----\nKHY8UP\nGH"
+            "f792\n-----END CERTIFICATE-----\n"
+        )
+
+        fd_mock = mock.MagicMock(spec=io.BytesIO)
+        open_mock.return_value = fd_mock
+        fd_mock.__enter__.return_value = fd_mock
+        fd_mock.read.return_value = data
+        process_mock = mock.Mock()
+        attrs = {'communicate.return_value': ('output', 'error')}
+        process_mock.configure_mock(**attrs)
+        subprocess_mock.return_value = process_mock
+        self.rf_client.add_ssl_certificate(csr_params, data, p_key, '1234')
+        subprocess_mock.assert_called_once()
+        https_cert_mock.assert_called_once()
+        create_mock.assert_called_once()
 
     @mock.patch.object(redfish.RedfishOperations, '_get_sushy_manager')
     @mock.patch.object(builtins, 'open')
-    def test_add_https_certificate(self, open_mock, manager_mock):
+    def test__add_https_certificate(self, open_mock, manager_mock):
         data = (
             "-----BEGIN CERTIFICATE-----\nMIID7TC\nCF"
             "g879\n-----END CERTIFICATE-----\n"
@@ -2581,8 +2622,8 @@ class RedfishOperationsTestCase(testtool
 
     @mock.patch.object(redfish.RedfishOperations, '_get_sushy_manager')
     @mock.patch.object(builtins, 'open')
-    def test_add_https_certificate_no_certificate(self, open_mock,
-                                                  manager_mock):
+    def test__add_https_certificate_no_certificate(self, open_mock,
+                                                   manager_mock):
         data = (
             "-----UNFORMATED CERTIFICATE-----\nMIID7TC\nCF"
             "g879\n-----END CERTIFICATE-----\n"
diff -pruN 2.12.0-1/proliantutils/tests/redfish/test_utils.py 2.13.0-2/proliantutils/tests/redfish/test_utils.py
--- 2.12.0-1/proliantutils/tests/redfish/test_utils.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/redfish/test_utils.py	2022-02-18 11:12:24.000000000 +0000
@@ -16,9 +16,9 @@
 """Test class for Utils Module."""
 
 import json
+from unittest import mock
 
 import ddt
-import mock
 import testtools
 
 from proliantutils import exception
diff -pruN 2.12.0-1/proliantutils/tests/rest/test_v1.py 2.13.0-2/proliantutils/tests/rest/test_v1.py
--- 2.12.0-1/proliantutils/tests/rest/test_v1.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/rest/test_v1.py	2022-02-18 11:12:24.000000000 +0000
@@ -14,8 +14,8 @@
 
 import base64
 import json
+from unittest import mock
 
-import mock
 import requests
 from requests.packages import urllib3
 from requests.packages.urllib3 import exceptions as urllib3_exceptions
diff -pruN 2.12.0-1/proliantutils/tests/sum/test_sum_controller.py 2.13.0-2/proliantutils/tests/sum/test_sum_controller.py
--- 2.12.0-1/proliantutils/tests/sum/test_sum_controller.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/sum/test_sum_controller.py	2022-02-18 11:12:24.000000000 +0000
@@ -17,8 +17,8 @@ import shutil
 import tarfile
 import tempfile
 import time
+from unittest import mock
 
-import mock
 from oslo_concurrency import processutils
 from oslo_serialization import base64
 import testtools
diff -pruN 2.12.0-1/proliantutils/tests/test_utils.py 2.13.0-2/proliantutils/tests/test_utils.py
--- 2.12.0-1/proliantutils/tests/test_utils.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/tests/test_utils.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016 Hewlett Packard Enterprise Company, L.P.
+# Copyright 2016-2022 Hewlett Packard Enterprise Company, L.P.
 # All Rights Reserved.
 #
 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -15,8 +15,8 @@
 """Test class for Utils Module."""
 
 import hashlib
+from unittest import mock
 
-import mock
 import requests
 import six
 import six.moves.builtins as __builtin__
@@ -259,6 +259,14 @@ class UtilsTestCase(testtools.TestCase):
         self.assertRaises(exception.ImageRefValidationFailed,
                           utils.validate_href, href)
         head_mock.assert_called_once_with(href)
+
+    @mock.patch.object(requests, 'head', autospec=True)
+    def test_validate_href_error_no_base_image(self, head_mock):
+        href = 'http://1.2.3.4/'
+        head_mock.return_value.status_code = http_client.OK
+        self.assertRaises(exception.ImageRefValidationFailed,
+                          utils.validate_href, href)
+        head_mock.assert_called_once_with(href)
 
     def test_apply_bios_properties_filter(self):
         data = {
diff -pruN 2.12.0-1/proliantutils/utils.py 2.13.0-2/proliantutils/utils.py
--- 2.12.0-1/proliantutils/utils.py	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/proliantutils/utils.py	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016 Hewlett Packard Enterprise Company, L.P.
+# Copyright 2016-2022 Hewlett Packard Enterprise Company, L.P.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
 # not use this file except in compliance with the License. You may obtain
@@ -16,7 +16,9 @@
 Non-iLO related utilities and helper functions.
 """
 import hashlib
+import os
 import re
+from urllib import parse
 
 import requests
 import six
@@ -150,6 +152,12 @@ def validate_href(image_href):
                 image_href=image_href,
                 reason=("Got HTTP code %s instead of 200 in response to "
                         "HEAD request." % response.status_code))
+
+        path = parse.urlsplit(image_href).path
+        if os.path.basename(path) == '':
+            raise exception.ImageRefValidationFailed(
+                image_href=image_href,
+                reason=("Given URL is not reachable."))
     except requests.RequestException as e:
         raise exception.ImageRefValidationFailed(image_href=image_href,
                                                  reason=e)
diff -pruN 2.12.0-1/requirements.txt 2.13.0-2/requirements.txt
--- 2.12.0-1/requirements.txt	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/requirements.txt	2022-02-18 11:12:24.000000000 +0000
@@ -9,5 +9,5 @@ retrying!=1.3.0,>=1.2.3 # Apache-2.0
 pysnmp>=4.2.3,<5.0.0  # BSD
 
 # Redfish communication uses the Sushy library
-sushy>=3.1.0
+sushy>=4.1.0
 pyOpenSSL>=19.1.0
diff -pruN 2.12.0-1/setup.cfg 2.13.0-2/setup.cfg
--- 2.12.0-1/setup.cfg	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/setup.cfg	2022-02-18 11:12:24.000000000 +0000
@@ -19,9 +19,8 @@ classifier =
     Programming Language :: Python
     Programming Language :: Python :: 3
     Programming Language :: Python :: 3 :: Only
-    Programming Language :: Python :: 3.6
-    Programming Language :: Python :: 3.7
     Programming Language :: Python :: 3.8
+    Programming Language :: Python :: 3.9
 
 [files]
 packages =
diff -pruN 2.12.0-1/test-requirements.txt 2.13.0-2/test-requirements.txt
--- 2.12.0-1/test-requirements.txt	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/test-requirements.txt	2022-02-18 11:12:24.000000000 +0000
@@ -1,10 +1,9 @@
-# linters
-hacking>=3.0.0,<3.1.0 # Apache-2.0
-flake8-import-order>=0.17.1 # LGPLv3
+# The order of packages is significant, because pip processes them in the order
+# of appearance. Changing the order has an impact on the overall integration
+# process, which may cause wedges in the gate later.
 
-mock
-coverage>=3.6 # Apache-2.0
-stestr!=2.3.0  # Apache-2.0
-testtools>=1.4.0 # MIT
-ddt
-xmltodict
+coverage!=4.4,>=4.0  # Apache-2.0
+stestr>=2.0.0,!=2.3.0,!=3.0.0  # Apache-2.0
+testtools>=2.2.0  # MIT
+ddt>=1.2.2  # MIT
+xmltodict>=0.12.0  # MIT
\ No newline at end of file
diff -pruN 2.12.0-1/tox.ini 2.13.0-2/tox.ini
--- 2.12.0-1/tox.ini	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/tox.ini	2022-02-18 11:12:24.000000000 +0000
@@ -1,5 +1,5 @@
 [tox]
-minversion = 3.1.0
+minversion = 3.18.0
 skipsdist = True
 envlist = py3,pep8
 ignore_basepython_conflict=true
@@ -22,6 +22,11 @@ commands =
 passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
 
 [testenv:pep8]
+deps =
+    hacking>=4.1.0,<5.0.0 # Apache-2.0
+    flake8-import-order>=0.17.1 # LGPLv3
+    pycodestyle>=2.0.0,<3.0.0 # MIT
+    Pygments>=2.2.0 # BSD
 commands = flake8 {posargs}
 
 [testenv:cover]
diff -pruN 2.12.0-1/.zuul.yaml 2.13.0-2/.zuul.yaml
--- 2.12.0-1/.zuul.yaml	2021-07-29 05:14:47.000000000 +0000
+++ 2.13.0-2/.zuul.yaml	2022-02-18 11:12:24.000000000 +0000
@@ -1,4 +1,4 @@
 - project:
     templates:
-      - openstack-python3-victoria-jobs
+      - openstack-python3-yoga-jobs
       - openstack-cover-jobs
