コード例 #1
0
 def test_proxy_check_firmware_compatibility_pass(self):
     """Verify proxy firmware compatibility."""
     self._set_args({
         "firmware": "test_firmware.dlp",
         "nvsram": "test_nvsram.dlp"
     })
     firmware = NetAppESeriesFirmware()
     with patch(self.SLEEP_FUNC, return_value=None):
         with patch(self.REQUEST_FUNC,
                    side_effect=[(200, {
                        "requestId": 1
                    }), (200, {
                        "checkRunning": True
                    }),
                                 (200, {
                                     "checkRunning":
                                     False,
                                     "results": [{
                                         "cfwFiles": [{
                                             "filename":
                                             "test_firmware.dlp"
                                         }]
                                     }]
                                 })]):
             firmware.proxy_check_firmware_compatibility()
コード例 #2
0
 def test_check_system_health_pass(self):
     """Validate check_system_health method."""
     self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
     firmware = NetAppESeriesFirmware()
     with patch(self.REQUEST_FUNC, return_value=(200, {
             "successful": True
     })):
         firmware.check_system_health()
コード例 #3
0
 def test_check_system_health_fail(self):
     """Validate check_system_health method throws proper exceptions."""
     self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
     firmware = NetAppESeriesFirmware()
     with patch(self.SLEEP_FUNC, return_value=None):
         with self.assertRaisesRegexp(AnsibleFailJson,
                                      "Health check failed!"):
             with patch(self.REQUEST_FUNC, return_value=(404, Exception())):
                 firmware.check_system_health()
コード例 #4
0
 def test_firmware_version(self):
     """Verify correct firmware version is returned."""
     self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
     firmware = NetAppESeriesFirmware()
     firmware.is_firmware_bundled = lambda: True
     with patch(builtin_path,
                mock_open_with_iter(
                    read_data=self.BUNDLE_HEADER)) as mock_file:
         self.assertEqual(firmware.firmware_version(), b"11.40.5")
コード例 #5
0
    def test_nvsram_version(self):
        """Verify correct nvsram version is returned."""
        self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
        firmware = NetAppESeriesFirmware()

        with patch(builtin_path,
                   mock_open_with_iter(
                       read_data=self.NVSRAM_HEADER)) as mock_file:
            self.assertEqual(firmware.nvsram_version(), b"N280X-852834-D02")
コード例 #6
0
 def test_is_firmware_bundles_fail(self):
     """Verify non-firmware fails."""
     self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
     with patch(builtin_path,
                mock_open(read_data=b"xxxxxxxxxxxxxxxx")) as mock_file:
         firmware = NetAppESeriesFirmware()
         with self.assertRaisesRegexp(AnsibleFailJson,
                                      "Firmware file is invalid."):
             firmware.is_firmware_bundled()
コード例 #7
0
 def test_wait_for_web_services_fail(self):
     """Verify controller reboot wait throws expected exceptions"""
     self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
     firmware = NetAppESeriesFirmware()
     with self.assertRaisesRegexp(
             AnsibleFailJson,
             "Timeout waiting for Santricity Web Services."):
         with patch(self.SLEEP_FUNC, return_value=None):
             with patch(self.BASE_REQUEST_FUNC, return_value=Exception()):
                 firmware.wait_for_web_services()
コード例 #8
0
    def test_proxy_upload_and_check_compatibility_fail(self):
        """Verify proxy_upload_and_check_compatibility throws expected exceptions."""
        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()
        firmware.proxy_check_nvsram_compatibility = lambda: None
        firmware.proxy_check_firmware_compatibility = lambda: None
        with self.assertRaisesRegexp(
                AnsibleFailJson,
                "Failed to retrieve existing firmware files."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("headers", "data")):
                with patch(self.REQUEST_FUNC, return_value=Exception()):
                    firmware.proxy_upload_and_check_compatibility()

        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Failed to upload NVSRAM file."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("headers", "data")):
                with patch(self.REQUEST_FUNC,
                           side_effect=[(200, [{
                               "version": "XX.XX.XX.XX",
                               "filename": "test"
                           }, {
                               "version": "XXXXXXXXXX",
                               "filename": "test.dlp"
                           }, {
                               "filename": "test_firmware.dlp",
                               "version": "test_firmware"
                           }]),
                                        Exception()]):
                    firmware.proxy_upload_and_check_compatibility()

        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Failed to upload firmware bundle file."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("headers", "data")):
                with patch(self.REQUEST_FUNC,
                           side_effect=[(200, [{
                               "version": "XX.XX.XX.XX",
                               "filename": "test"
                           }, {
                               "version": "test_nvsram",
                               "filename": "test_nvsram.dlp"
                           }, {
                               "version": "XXXXXXXXXX",
                               "filename": "test.dlp"
                           }]),
                                        Exception()]):
                    firmware.proxy_upload_and_check_compatibility()
コード例 #9
0
    def test_proxy_wait_for_upgrade_fail(self):
        """Verify proxy_wait_for_upgrade throws expected exceptions."""
        with patch(self.SLEEP_FUNC, return_value=None):
            self._set_args({
                "firmware": "test_firmware.dlp",
                "nvsram": "test_nvsram.dlp"
            })
            firmware = NetAppESeriesFirmware()

            with self.assertRaisesRegexp(AnsibleFailJson,
                                         "Failed to complete upgrade."):
                with patch(self.REQUEST_FUNC,
                           return_value=(200, {
                               "running": False,
                               "activationCompletionTime": None
                           })):
                    firmware.proxy_wait_for_upgrade()
コード例 #10
0
    def test_embedded_check_firmware_compatibility_pass(self):
        """Verify embedded firmware compatibility."""
        self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
        firmware = NetAppESeriesFirmware()

        with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
            with patch(self.REQUEST_FUNC,
                       return_value=(200, {
                           "signatureTestingPassed":
                           True,
                           "fileCompatible":
                           True,
                           "versionContents": [{
                               "module": "bundle",
                               "bundledVersion": "08.42.50.00.000",
                               "onboardVersion": "08.42.30.05"
                           }, {
                               "module": "bundleDisplay",
                               "bundledVersion": "11.40.5",
                               "onboardVersion": "11.40.3R2"
                           }, {
                               "module": "hypervisor",
                               "bundledVersion": "08.42.50.00",
                               "onboardVersion": "08.42.30.05"
                           }, {
                               "module": "raid",
                               "bundledVersion": "08.42.50.00",
                               "onboardVersion": "08.42.30.05"
                           }, {
                               "module":
                               "management",
                               "bundledVersion":
                               "11.42.0000.0028",
                               "onboardVersion":
                               "11.42.0000.0026"
                           }, {
                               "module":
                               "iom",
                               "bundledVersion":
                               "11.42.0G00.0003",
                               "onboardVersion":
                               "11.42.0G00.0001"
                           }]
                       })):
                firmware.embedded_check_bundle_compatibility()
コード例 #11
0
    def test_proxy_wait_for_upgrade_pass(self):
        """Verify proxy_wait_for_upgrade."""
        with patch(self.SLEEP_FUNC, return_value=None):
            self._set_args({
                "firmware": "test_firmware.dlp",
                "nvsram": "expected_nvsram.dlp"
            })
            firmware = NetAppESeriesFirmware()

            with patch(self.REQUEST_FUNC,
                       side_effect=[(200, {
                           "running": True
                       }),
                                    (200, {
                                        "running":
                                        False,
                                        "activationCompletionTime":
                                        "completion_time"
                                    })]):
                firmware.proxy_wait_for_upgrade()
コード例 #12
0
 def test_embedded_check_nvsram_compatibility_pass(self):
     """Verify embedded nvsram compatibility."""
     self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
     firmware = NetAppESeriesFirmware()
     with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
         with patch(self.REQUEST_FUNC,
                    return_value=(200, {
                        "signatureTestingPassed":
                        True,
                        "fileCompatible":
                        True,
                        "versionContents": [{
                            "module":
                            "nvsram",
                            "bundledVersion":
                            "N280X-842834-D02",
                            "onboardVersion":
                            "N280X-842834-D02"
                        }]
                    })):
             firmware.embedded_check_nvsram_compatibility()
コード例 #13
0
    def test_embedded_check_nvsram_compatibility_fail(self):
        """Verify embedded nvsram compatibility fails with expected exceptions."""
        self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
        firmware = NetAppESeriesFirmware()

        with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
            with self.assertRaisesRegexp(
                    AnsibleFailJson,
                    "Failed to retrieve NVSRAM compatibility results."):
                with patch(self.REQUEST_FUNC, return_value=Exception()):
                    firmware.embedded_check_nvsram_compatibility()

            with self.assertRaisesRegexp(AnsibleFailJson,
                                         "Invalid NVSRAM file."):
                with patch(self.REQUEST_FUNC,
                           return_value=(200, {
                               "signatureTestingPassed":
                               False,
                               "fileCompatible":
                               False,
                               "versionContents": [{
                                   "module":
                                   "nvsram",
                                   "bundledVersion":
                                   "N280X-842834-D02",
                                   "onboardVersion":
                                   "N280X-842834-D02"
                               }]
                           })):
                    firmware.embedded_check_nvsram_compatibility()

            with self.assertRaisesRegexp(AnsibleFailJson,
                                         "Incompatible NVSRAM file."):
                with patch(self.REQUEST_FUNC,
                           return_value=(200, {
                               "signatureTestingPassed":
                               True,
                               "fileCompatible":
                               False,
                               "versionContents": [{
                                   "module":
                                   "nvsram",
                                   "bundledVersion":
                                   "N280X-842834-D02",
                                   "onboardVersion":
                                   "N280X-842834-D02"
                               }]
                           })):
                    firmware.embedded_check_nvsram_compatibility()
コード例 #14
0
 def test_wait_for_web_services_pass(self):
     """Verify controller reboot wait succeeds."""
     self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
     firmware = NetAppESeriesFirmware()
     firmware.firmware_version = lambda: b"08.42.30.05"
     firmware.nvsram_version = lambda: b"N280X-842834-D02"
     firmware.is_firmware_bundled = lambda: False
     with patch(self.SLEEP_FUNC, return_value=None):
         with patch(self.REQUEST_FUNC,
                    side_effect=[(200, ["08.42.30.05"]),
                                 (200, ["N280X-842834-D02"]),
                                 (200, {
                                     "status": "optimal"
                                 })]):
             firmware.wait_for_web_services()
コード例 #15
0
    def test_proxy_check_firmware_compatibility_fail(self):
        """Verify proxy firmware compatibility throws expected exceptions."""
        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()

        with patch(self.SLEEP_FUNC, return_value=None):
            with self.assertRaisesRegexp(
                    AnsibleFailJson,
                    "Failed to receive firmware compatibility information."):
                with patch(self.REQUEST_FUNC, return_value=Exception()):
                    firmware.proxy_check_firmware_compatibility()

            with self.assertRaisesRegexp(
                    AnsibleFailJson,
                    "Failed to retrieve firmware status update from proxy."):
                with patch(self.REQUEST_FUNC,
                           side_effect=[(200, {
                               "requestId": 1
                           }), Exception()]):
                    firmware.proxy_check_firmware_compatibility(retries=0)

            with self.assertRaisesRegexp(AnsibleFailJson,
                                         "Firmware bundle is not compatible."):
                with patch(self.REQUEST_FUNC,
                           side_effect=[(200, {
                               "requestId": 1
                           }), (200, {
                               "checkRunning": True
                           }),
                                        (200, {
                                            "checkRunning":
                                            False,
                                            "results": [{
                                                "cfwFiles": [{
                                                    "filename":
                                                    "not_test_firmware.dlp"
                                                }]
                                            }]
                                        })]):
                    firmware.proxy_check_firmware_compatibility(retries=0)
コード例 #16
0
    def test_proxy_upgrade_fail(self):
        """Verify proxy_upgrade throws expected exceptions."""
        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()

        firmware.is_firmware_bundled = lambda: True
        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Failed to initiate firmware upgrade."):
            with patch(self.REQUEST_FUNC, return_value=Exception()):
                firmware.proxy_upgrade()

        firmware.is_firmware_bundled = lambda: False
        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Failed to initiate firmware upgrade."):
            with patch(self.REQUEST_FUNC, return_value=Exception()):
                firmware.proxy_upgrade()
コード例 #17
0
    def test_is_firmware_bundled_pass(self):
        """Determine whether firmware file is bundled."""
        self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
        with patch(builtin_path,
                   mock_open(read_data=b"firmwarexxxxxxxx")) as mock_file:
            firmware = NetAppESeriesFirmware()
            self.assertEqual(firmware.is_firmware_bundled(), False)

        self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
        with patch(builtin_path,
                   mock_open(read_data=self.BUNDLE_HEADER[:16])) as mock_file:
            firmware = NetAppESeriesFirmware()
            self.assertEqual(firmware.is_firmware_bundled(), True)
コード例 #18
0
    def test_proxy_upload_and_check_compatibility_pass(self):
        """Verify proxy_upload_and_check_compatibility"""
        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()
        firmware.proxy_check_nvsram_compatibility = lambda: None
        firmware.proxy_check_firmware_compatibility = lambda: None
        with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                   return_value=("headers", "data")):
            with patch(self.REQUEST_FUNC,
                       side_effect=[(200, [{
                           "version": "XX.XX.XX.XX",
                           "filename": "test"
                       }, {
                           "version": "XXXXXXXXXX",
                           "filename": "test.dlp"
                       }]), (200, None), (200, None)]):
                firmware.proxy_upload_and_check_compatibility()

            with patch(self.REQUEST_FUNC,
                       side_effect=[(200, [{
                           "version": "XX.XX.XX.XX",
                           "filename": "test"
                       }, {
                           "version": "test_nvsram",
                           "filename": "test_nvsram.dlp"
                       }, {
                           "version": "test",
                           "filename": "test.dlp"
                       }, {
                           "filename": "test_firmware.dlp",
                           "version": "test_firmware"
                       }]), (200, None), (200, None)]):
                firmware.proxy_upload_and_check_compatibility()
コード例 #19
0
    def test_proxy_check_upgrade_required_fail(self):
        """Verify proxy_check_upgrade_required throws expected exceptions."""
        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()

        firmware.firmware_version = lambda: b"08.42.50.00"
        firmware.nvsram_version = lambda: b"not_nvsram_version"
        with self.assertRaisesRegexp(
                AnsibleFailJson,
                "Failed to retrieve controller firmware information."):
            with patch(self.REQUEST_FUNC, return_value=Exception()):
                firmware.proxy_check_upgrade_required()

        with self.assertRaisesRegexp(
                AnsibleFailJson,
                "Failed to retrieve storage system's NVSRAM version."):
            with patch(self.REQUEST_FUNC,
                       side_effect=[(200, [{
                           "versionString": "08.42.50.00"
                       }]),
                                    Exception()]):
                firmware.is_firmware_bundled = lambda: True
                firmware.proxy_check_upgrade_required()

        with self.assertRaisesRegexp(
                AnsibleFailJson,
                "Failed to retrieve storage system's NVSRAM version."):
            with patch(self.REQUEST_FUNC,
                       side_effect=[(200, ["08.42.50.00"]),
                                    Exception()]):
                firmware.is_firmware_bundled = lambda: False
                firmware.proxy_check_upgrade_required()

        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Downgrades are not permitted."):
            with patch(self.REQUEST_FUNC,
                       side_effect=[(200, [{
                           "versionString": "08.42.50.00"
                       }]), (200, ["nvsram_version"])]):
                firmware.firmware_version = lambda: b"08.40.00.00"
                firmware.nvsram_version = lambda: "nvsram_version"
                firmware.is_firmware_bundled = lambda: True
                firmware.proxy_check_upgrade_required()

        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Downgrades are not permitted."):
            with patch(self.REQUEST_FUNC,
                       side_effect=[(200, ["08.42.50.00"]),
                                    (200, ["nvsram_version"])]):
                firmware.is_firmware_bundled = lambda: False
                firmware.proxy_check_upgrade_required()
コード例 #20
0
    def test_proxy_check_upgrade_required_pass(self):
        """Verify proxy_check_upgrade_required."""
        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()
        firmware.firmware_version = lambda: b"08.42.50.00"
        firmware.nvsram_version = lambda: b"nvsram_version"
        with patch(self.REQUEST_FUNC,
                   side_effect=[(200, [{
                       "versionString": "08.42.50.00"
                   }]), (200, ["nvsram_version"])]):
            firmware.is_firmware_bundled = lambda: True
            firmware.proxy_check_upgrade_required()
            self.assertFalse(firmware.upgrade_required)

        with patch(self.REQUEST_FUNC,
                   side_effect=[(200, ["08.42.50.00"]),
                                (200, ["nvsram_version"])]):
            firmware.is_firmware_bundled = lambda: False
            firmware.proxy_check_upgrade_required()
            self.assertFalse(firmware.upgrade_required)

        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()
        firmware.firmware_version = lambda: b"08.42.50.00"
        firmware.nvsram_version = lambda: b"not_nvsram_version"
        with patch(self.REQUEST_FUNC,
                   side_effect=[(200, [{
                       "versionString": "08.42.50.00"
                   }]), (200, ["nvsram_version"])]):
            firmware.is_firmware_bundled = lambda: True
            firmware.proxy_check_upgrade_required()
            self.assertTrue(firmware.upgrade_required)

        with patch(self.REQUEST_FUNC,
                   side_effect=[(200, ["08.42.50.00"]),
                                (200, ["nvsram_version"])]):
            firmware.is_firmware_bundled = lambda: False
            firmware.proxy_check_upgrade_required()
            self.assertTrue(firmware.upgrade_required)

        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()
        firmware.firmware_version = lambda: b"08.52.00.00"
        firmware.nvsram_version = lambda: b"nvsram_version"
        with patch(self.REQUEST_FUNC,
                   side_effect=[(200, [{
                       "versionString": "08.42.50.00"
                   }]), (200, ["nvsram_version"])]):
            firmware.is_firmware_bundled = lambda: True
            firmware.proxy_check_upgrade_required()
            self.assertTrue(firmware.upgrade_required)

        with patch(self.REQUEST_FUNC,
                   side_effect=[(200, ["08.42.50.00"]),
                                (200, ["nvsram_version"])]):
            firmware.is_firmware_bundled = lambda: False
            firmware.proxy_check_upgrade_required()
            self.assertTrue(firmware.upgrade_required)

        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()
        firmware.firmware_version = lambda: b"08.52.00.00"
        firmware.nvsram_version = lambda: b"not_nvsram_version"
        with patch(self.REQUEST_FUNC,
                   side_effect=[(200, [{
                       "versionString": "08.42.50.00"
                   }]), (200, ["nvsram_version"])]):
            firmware.is_firmware_bundled = lambda: True
            firmware.proxy_check_upgrade_required()
            self.assertTrue(firmware.upgrade_required)

        with patch(self.REQUEST_FUNC,
                   side_effect=[(200, ["08.42.50.00"]),
                                (200, ["nvsram_version"])]):
            firmware.is_firmware_bundled = lambda: False
            firmware.proxy_check_upgrade_required()
            self.assertTrue(firmware.upgrade_required)
コード例 #21
0
    def test_embedded_check_firmware_compatibility_fail(self):
        """Verify embedded firmware compatibility fails with expected exceptions."""
        self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
        firmware = NetAppESeriesFirmware()

        with self.assertRaisesRegexp(
                AnsibleFailJson,
                "Failed to retrieve bundle compatibility results."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("", {})):
                with patch(self.REQUEST_FUNC, return_value=Exception()):
                    firmware.embedded_check_bundle_compatibility()

        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Invalid firmware bundle file."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("", {})):
                with patch(self.REQUEST_FUNC,
                           return_value=(200, {
                               "signatureTestingPassed":
                               False,
                               "fileCompatible":
                               True,
                               "versionContents": [{
                                   "module":
                                   "bundle",
                                   "bundledVersion":
                                   "08.42.50.00.000",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "bundleDisplay",
                                   "bundledVersion":
                                   "11.40.5",
                                   "onboardVersion":
                                   "11.40.3R2"
                               }, {
                                   "module":
                                   "hypervisor",
                                   "bundledVersion":
                                   "08.42.50.00",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "raid",
                                   "bundledVersion":
                                   "08.42.50.00",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "management",
                                   "bundledVersion":
                                   "11.42.0000.0028",
                                   "onboardVersion":
                                   "11.42.0000.0026"
                               }, {
                                   "module":
                                   "iom",
                                   "bundledVersion":
                                   "11.42.0G00.0003",
                                   "onboardVersion":
                                   "11.42.0G00.0001"
                               }]
                           })):
                    firmware.embedded_check_bundle_compatibility()

        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Incompatible firmware bundle file."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("", {})):
                with patch(self.REQUEST_FUNC,
                           return_value=(200, {
                               "signatureTestingPassed":
                               True,
                               "fileCompatible":
                               False,
                               "versionContents": [{
                                   "module":
                                   "bundle",
                                   "bundledVersion":
                                   "08.42.50.00.000",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "bundleDisplay",
                                   "bundledVersion":
                                   "11.40.5",
                                   "onboardVersion":
                                   "11.40.3R2"
                               }, {
                                   "module":
                                   "hypervisor",
                                   "bundledVersion":
                                   "08.42.50.00",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "raid",
                                   "bundledVersion":
                                   "08.42.50.00",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "management",
                                   "bundledVersion":
                                   "11.42.0000.0028",
                                   "onboardVersion":
                                   "11.42.0000.0026"
                               }, {
                                   "module":
                                   "iom",
                                   "bundledVersion":
                                   "11.42.0G00.0003",
                                   "onboardVersion":
                                   "11.42.0G00.0001"
                               }]
                           })):
                    firmware.embedded_check_bundle_compatibility()

        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Downgrades are not permitted."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("", {})):
                with patch(self.REQUEST_FUNC,
                           return_value=(200, {
                               "signatureTestingPassed":
                               True,
                               "fileCompatible":
                               True,
                               "versionContents": [{
                                   "module":
                                   "bundle",
                                   "bundledVersion":
                                   "08.42.00.00.000",
                                   "onboardVersion":
                                   "08.50.30.05"
                               }, {
                                   "module":
                                   "bundleDisplay",
                                   "bundledVersion":
                                   "11.40.5",
                                   "onboardVersion":
                                   "11.40.3R2"
                               }, {
                                   "module":
                                   "hypervisor",
                                   "bundledVersion":
                                   "08.42.50.00",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "raid",
                                   "bundledVersion":
                                   "08.42.50.00",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "management",
                                   "bundledVersion":
                                   "11.42.0000.0028",
                                   "onboardVersion":
                                   "11.42.0000.0026"
                               }, {
                                   "module":
                                   "iom",
                                   "bundledVersion":
                                   "11.42.0G00.0003",
                                   "onboardVersion":
                                   "11.42.0G00.0001"
                               }]
                           })):
                    firmware.embedded_check_bundle_compatibility()
        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Downgrades are not permitted."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("", {})):
                with patch(self.REQUEST_FUNC,
                           return_value=(200, {
                               "signatureTestingPassed":
                               True,
                               "fileCompatible":
                               True,
                               "versionContents": [{
                                   "module":
                                   "bundle",
                                   "bundledVersion":
                                   "08.42.00.00.000",
                                   "onboardVersion":
                                   "09.20.30.05"
                               }, {
                                   "module":
                                   "bundleDisplay",
                                   "bundledVersion":
                                   "11.40.5",
                                   "onboardVersion":
                                   "11.40.3R2"
                               }, {
                                   "module":
                                   "hypervisor",
                                   "bundledVersion":
                                   "08.42.50.00",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "raid",
                                   "bundledVersion":
                                   "08.42.50.00",
                                   "onboardVersion":
                                   "08.42.30.05"
                               }, {
                                   "module":
                                   "management",
                                   "bundledVersion":
                                   "11.42.0000.0028",
                                   "onboardVersion":
                                   "11.42.0000.0026"
                               }, {
                                   "module":
                                   "iom",
                                   "bundledVersion":
                                   "11.42.0G00.0003",
                                   "onboardVersion":
                                   "11.42.0G00.0001"
                               }]
                           })):
                    firmware.embedded_check_bundle_compatibility()