def test_opal_verification_old_firmware(self, mocked_arch, version_getter, xfs_mountable): """Check verify_opal_compatibility with an older firmware.""" message = \ "The system will not be bootable. The firmware does not support " \ "XFS file system features on the boot file system. Upgrade the " \ "firmware or change the file system type." storage = create_storage() mocked_arch.get_arch.return_value = "ppc64le" mocked_arch.is_powernv.return_value = True version_getter.return_value = "5.9.50-openpower1-p59fd803" xfs_mountable.return_value = True # No devices. self._verify_opal_compatibility(storage, message=None) # No mount points. dev1 = StorageDevice("dev1", size=Size("10 GiB")) storage.devicetree._add_device(dev1) self._verify_opal_compatibility(storage, message=None) # Different filesystem. dev1.format = get_format("ext2", mountpoint="/boot") self._verify_opal_compatibility(storage, message=None) # XFS on / dev1.format = get_format("xfs", mountpoint="/") self._verify_opal_compatibility(storage, message=message) # XFS on /boot dev1.format = get_format("xfs", mountpoint="/boot") self._verify_opal_compatibility(storage, message=message)
def test_net_dev_setting(self): """ Verify netdev mount option setting after format assignment. """ netdev = FakeNetDev("net1") dev = StorageDevice("dev1", fmt=get_format("ext4")) self.assertFalse("_netdev" in dev.format.options.split(",")) dev.parents.append(netdev) dev.format = get_format("ext4") self.assertTrue("_netdev" in dev.format.options.split(","))
def test_get_device_mount_options(self): """Test GetDeviceMountOptions.""" dev1 = StorageDevice("dev1", size=Size("10 GiB")) self._add_device(dev1) assert self.interface.GetDeviceMountOptions("dev1") == "" dev1.format = get_format("ext4") dev1.format.options = "defaults,ro" assert self.interface.GetDeviceMountOptions("dev1") == "defaults,ro"
def opal_verification_old_firmware_test(self, mocked_arch, version_getter, xfs_mountable): """Check verify_opal_compatibility with an older firmware.""" reporter = Mock() storage = create_storage() mocked_arch.get_arch.return_value = "ppc64le" mocked_arch.is_powernv.return_value = True version_getter.return_value = "5.9.50-openpower1-p59fd803" xfs_mountable.return_value = True # No devices. verify_opal_compatibility(storage, {}, None, reporter) reporter.assert_not_called() # No mount points. dev1 = StorageDevice("dev1", size=Size("10 GiB")) storage.devicetree._add_device(dev1) verify_opal_compatibility(storage, {}, None, reporter) reporter.assert_not_called() # Different filesystem. dev1.format = get_format("ext2", mountpoint="/boot") verify_opal_compatibility(storage, {}, None, reporter) reporter.assert_not_called() # XFS on / dev1.format = get_format("xfs", mountpoint="/") verify_opal_compatibility(storage, {}, None, reporter) reporter.assert_called_once_with( "Your firmware doesn't support XFS file system features " "on the /boot file system. The system will not be bootable. " "Please, upgrade the firmware or change the file system type." ) reporter.reset_mock() # XFS on /boot dev1.format = get_format("xfs", mountpoint="/boot") verify_opal_compatibility(storage, {}, None, reporter) reporter.assert_called_once_with( "Your firmware doesn't support XFS file system features " "on the /boot file system. The system will not be bootable. " "Please, upgrade the firmware or change the file system type." )
def get_device_mount_options_test(self): """Test GetDeviceMountOptions.""" dev1 = StorageDevice("dev1", size=Size("10 GiB")) self._add_device(dev1) self.assertEqual(self.interface.GetDeviceMountOptions("dev1"), "") dev1.format = get_format("ext4") dev1.format.options = "defaults,ro" self.assertEqual(self.interface.GetDeviceMountOptions("dev1"), "defaults,ro")
def test_find_install_media(self, check_module): """Test FindInstallMedia.""" dev1 = OpticalDevice("dev1") dev1.size = Size("2 GiB") dev1.format = get_format("iso9660") dev1.controllable = True self._add_device(dev1) dev2 = StorageDevice("dev2") dev2.size = Size("2 GiB") dev2.format = get_format("iso9660") dev2.controllable = True self._add_device(dev2) dev3 = StorageDevice("dev3") dev3.size = Size("2 GiB") dev3.format = get_format("ext4") dev3.controllable = True self._add_device(dev3) self.assertEqual(self.interface.FindOpticalMedia(), ["dev1", "dev2"])
def test_recursive_remove(self): dt = DeviceTree() dev1 = StorageDevice("dev1", exists=False, parents=[]) dev2 = StorageDevice("dev2", exists=False, parents=[dev1]) dt._add_device(dev1) dt._add_device(dev2) # normal self.assertTrue(dev1 in dt.devices) self.assertTrue(dev2 in dt.devices) self.assertEqual(dt.actions._actions, list()) dt.recursive_remove(dev1) self.assertFalse(dev1 in dt.devices) self.assertFalse(dev2 in dt.devices) self.assertNotEqual(dt.actions._actions, list()) dt.reset() dt._add_device(dev1) dt._add_device(dev2, new=False) # restore parent/child relationships # remove_device clears descendants and formatting but preserves the device dev1.format = get_format("swap") self.assertEqual(dev1.format.type, "swap") self.assertEqual(dt.actions._actions, list()) dt.recursive_remove(dev1, remove_device=False) self.assertTrue(dev1 in dt.devices) self.assertFalse(dev2 in dt.devices) self.assertEqual(dev1.format.type, None) self.assertNotEqual(dt.actions._actions, list()) dt.reset() dt._add_device(dev1) dt._add_device(dev2, new=False) # restore parent/child relationships # actions=False performs the removals without scheduling actions self.assertEqual(dt.actions._actions, list()) dt.recursive_remove(dev1, actions=False) self.assertFalse(dev1 in dt.devices) self.assertFalse(dev2 in dt.devices) self.assertEqual(dt.actions._actions, list()) dt.reset() dt._add_device(dev1) dt._add_device(dev2, new=False) # restore parent/child relationships # modparent only works when actions=False is passed with patch.object(dt, "_remove_device") as remove_device: dt.recursive_remove(dev1, actions=False) remove_device.assert_called_with(dev1, modparent=True) dt.recursive_remove(dev1, actions=False, modparent=False) remove_device.assert_called_with(dev1, modparent=False)
def reset_device_test(self): """Test ResetDevice.""" dev1 = StorageDevice( "dev1", exists=False, size=Size("15 GiB"), fmt=get_format("disklabel") ) dev2 = StorageDevice( "dev2", exists=False, parents=[dev1], size=Size("6 GiB"), fmt=get_format("ext4") ) dev3 = StorageDevice( "dev3", exists=True, size=Size("6 GiB") ) dev3.original_format = get_format("ext4") dev3.format = get_format("xfs") self.module.on_storage_changed(create_storage()) self.module.storage.devicetree._add_device(dev1) self.module.storage.devicetree._add_device(dev2) self.module.storage.devicetree._add_device(dev3) with self.assertRaises(StorageConfigurationError): self.interface.ResetDevice("dev1") self.assertIn(dev1, self.module.storage.devices) self.assertIn(dev2, self.module.storage.devices) self.assertIn(dev3, self.module.storage.devices) self.assertEqual(dev3.format.type, "xfs") self.interface.ResetDevice("dev2") self.assertNotIn(dev1, self.module.storage.devices) self.assertNotIn(dev2, self.module.storage.devices) self.assertIn(dev3, self.module.storage.devices) self.assertEqual(dev3.format.type, "xfs") self.interface.ResetDevice("dev3") self.assertNotIn(dev1, self.module.storage.devices) self.assertNotIn(dev2, self.module.storage.devices) self.assertIn(dev3, self.module.storage.devices) self.assertEqual(dev3.format.type, "ext4")
def test_set_device_mount_options(self): """Test SetDeviceMountOptions.""" dev1 = StorageDevice("dev1", size=Size("10 GiB")) self._add_device(dev1) self.interface.SetDeviceMountOptions("dev1", "auto") assert dev1.format.options == "auto" self.interface.SetDeviceMountOptions("dev1", "") assert dev1.format.options is None dev1.format = get_format("ext4") dev1.format.options = "defaults,ro" self.interface.SetDeviceMountOptions("dev1", "") assert dev1.format.options == "defaults"
def test_reset_device(self): """Test ResetDevice.""" dev1 = StorageDevice("dev1", exists=False, size=Size("15 GiB"), fmt=get_format("disklabel")) dev2 = StorageDevice("dev2", exists=False, parents=[dev1], size=Size("6 GiB"), fmt=get_format("ext4")) dev3 = StorageDevice("dev3", exists=True, size=Size("6 GiB")) dev3.original_format = get_format("ext4") dev3.format = get_format("xfs") self.module.on_storage_changed(create_storage()) self.module.storage.devicetree._add_device(dev1) self.module.storage.devicetree._add_device(dev2) self.module.storage.devicetree._add_device(dev3) with pytest.raises(StorageConfigurationError): self.interface.ResetDevice("dev1") assert dev1 in self.module.storage.devices assert dev2 in self.module.storage.devices assert dev3 in self.module.storage.devices assert dev3.format.type == "xfs" self.interface.ResetDevice("dev2") assert dev1 not in self.module.storage.devices assert dev2 not in self.module.storage.devices assert dev3 in self.module.storage.devices assert dev3.format.type == "xfs" self.interface.ResetDevice("dev3") assert dev1 not in self.module.storage.devices assert dev2 not in self.module.storage.devices assert dev3 in self.module.storage.devices assert dev3.format.type == "ext4"