Jelajahi Sumber

Fix osmorphing debian permision denied while reading file

Cristian Matiut 11 bulan lalu
induk
melakukan
9fca7f129d
2 mengubah file dengan 18 tambahan dan 22 penghapusan
  1. 3 6
      coriolis/osmorphing/debian.py
  2. 15 16
      coriolis/tests/osmorphing/test_debian.py

+ 3 - 6
coriolis/osmorphing/debian.py

@@ -2,7 +2,6 @@
 # All Rights Reserved.
 
 from io import StringIO
-import os
 
 from oslo_log import log as logging
 import yaml
@@ -40,12 +39,10 @@ class BaseDebianMorphingTools(base.BaseLinuxOSMorphingTools):
             detected_os_info['release_version'], minimum=8)
 
     def disable_predictable_nic_names(self):
-        grub_cfg = os.path.join(
-            self._os_root_dir,
-            "etc/default/grub")
-        if self._test_path(grub_cfg) is False:
+        grub_cfg = "etc/default/grub"
+        if self._test_path_chroot(grub_cfg) is False:
             return
-        contents = self._read_file(grub_cfg).decode()
+        contents = self._read_file_sudo(grub_cfg).decode()
         cfg = utils.Grub2ConfigEditor(contents)
         cfg.append_to_option(
             "GRUB_CMDLINE_LINUX_DEFAULT",

+ 15 - 16
coriolis/tests/osmorphing/test_debian.py

@@ -45,21 +45,21 @@ class BaseDebianMorphingToolsTestCase(test_base.CoriolisBaseTestCase):
         self.assertFalse(result)
 
     @mock.patch('coriolis.utils.Grub2ConfigEditor')
-    @mock.patch.object(debian.BaseDebianMorphingTools, '_test_path')
+    @mock.patch.object(debian.BaseDebianMorphingTools, '_test_path_chroot')
     @mock.patch.object(debian.BaseDebianMorphingTools, '_exec_cmd_chroot')
     @mock.patch.object(debian.BaseDebianMorphingTools, '_write_file_sudo')
-    @mock.patch.object(debian.BaseDebianMorphingTools, '_read_file')
+    @mock.patch.object(debian.BaseDebianMorphingTools, '_read_file_sudo')
     def test_disable_predictable_nic_names(
-            self, mock_read_file, mock_write_file_sudo, mock_exec_cmd_chroot,
-            mock_test_path, mock_grub2_cfg_editor):
-        mock_test_path.return_value = True
+            self, mock_read_file_sudo, mock_write_file_sudo,
+            mock_exec_cmd_chroot, mock_test_path_chroot,
+            mock_grub2_cfg_editor):
+        mock_test_path_chroot.return_value = True
 
         self.morpher.disable_predictable_nic_names()
 
-        mock_test_path.assert_called_once_with(
-            self.os_root_dir + '/etc/default/grub')
+        mock_test_path_chroot.assert_called_once_with('etc/default/grub')
         mock_grub2_cfg_editor.assert_called_once_with(
-            mock_read_file.return_value.decode.return_value)
+            mock_read_file_sudo.return_value.decode.return_value)
         mock_grub2_cfg_editor.return_value.append_to_option.assert_has_calls(
             [
                 mock.call(
@@ -80,8 +80,7 @@ class BaseDebianMorphingToolsTestCase(test_base.CoriolisBaseTestCase):
                      "opt_val": 0})
             ]
         )
-        mock_read_file.assert_called_once_with(
-            self.os_root_dir + '/etc/default/grub')
+        mock_read_file_sudo.assert_called_once_with('etc/default/grub')
         mock_write_file_sudo.assert_called_once_with(
             "etc/default/grub", mock_grub2_cfg_editor.return_value.dump())
         mock_exec_cmd_chroot.assert_called_once_with("/usr/sbin/update-grub")
@@ -89,17 +88,17 @@ class BaseDebianMorphingToolsTestCase(test_base.CoriolisBaseTestCase):
     @mock.patch('coriolis.utils.Grub2ConfigEditor')
     @mock.patch.object(debian.BaseDebianMorphingTools, '_exec_cmd_chroot')
     @mock.patch.object(debian.BaseDebianMorphingTools, '_write_file_sudo')
-    @mock.patch.object(debian.BaseDebianMorphingTools, '_read_file')
-    @mock.patch.object(debian.BaseDebianMorphingTools, '_test_path')
-    def test_disable_predictable_nic_names_no_test_path(
-            self, mock_test_path, mock_read_file,
+    @mock.patch.object(debian.BaseDebianMorphingTools, '_read_file_sudo')
+    @mock.patch.object(debian.BaseDebianMorphingTools, '_test_path_chroot')
+    def test_disable_predictable_nic_names_no_test_path_chroot(
+            self, mock_test_path_chroot, mock_read_file_sudo,
             mock_write_file_sudo, mock_exec_cmd_chroot, mock_grub2_cfg_editor):
 
-        mock_test_path.return_value = False
+        mock_test_path_chroot.return_value = False
 
         self.morpher.disable_predictable_nic_names()
 
-        mock_read_file.assert_not_called()
+        mock_read_file_sudo.assert_not_called()
         mock_write_file_sudo.assert_not_called()
         mock_exec_cmd_chroot.assert_not_called()
         mock_grub2_cfg_editor.assert_not_called()