Просмотр исходного кода

Adds file system check and relabel

Alessandro Pilotti 10 лет назад
Родитель
Сommit
d776dd91c0
3 измененных файлов с 14 добавлено и 0 удалено
  1. 1 0
      coriolis/osmorphing/osmount/ubuntu.py
  2. 4 0
      coriolis/osmorphing/redhat.py
  3. 9 0
      coriolis/utils.py

+ 1 - 0
coriolis/osmorphing/osmount/ubuntu.py

@@ -51,6 +51,7 @@ class UbuntuOSMountTools(object):
                 ssh, "sudo blkid -o value -s TYPE %s || true" %
                 ssh, "sudo blkid -o value -s TYPE %s || true" %
                 dev_path).decode().split('\n')[0]
                 dev_path).decode().split('\n')[0]
             if fs_type in valid_filesystems:
             if fs_type in valid_filesystems:
+                utils.check_fs(ssh, fs_type, dev_path)
                 dev_paths_to_mount.append(dev_path)
                 dev_paths_to_mount.append(dev_path)
 
 
         os_root_dir = None
         os_root_dir = None

+ 4 - 0
coriolis/osmorphing/redhat.py

@@ -132,8 +132,12 @@ class RedHatMorphingTools(base.BaseOSMorphingTools):
                 net_ifaces_info.append((name, mac_address))
                 net_ifaces_info.append((name, mac_address))
         return net_ifaces_info
         return net_ifaces_info
 
 
+    def _set_selinux_autorelabel(self):
+        self._exec_cmd_chroot("touch /.autorelabel")
+
     def post_packages_install(self):
     def post_packages_install(self):
         self._add_net_udev_rules()
         self._add_net_udev_rules()
         self._add_hyperv_ballooning_udev_rules()
         self._add_hyperv_ballooning_udev_rules()
         self._run_dracut()
         self._run_dracut()
         self._add_cloud_init_user()
         self._add_cloud_init_user()
+        self._set_selinux_autorelabel()

+ 9 - 0
coriolis/utils.py

@@ -106,6 +106,15 @@ def exec_ssh_cmd_chroot(ssh, chroot_dir, cmd):
     return exec_ssh_cmd(ssh, "sudo chroot %s %s" % (chroot_dir, cmd))
     return exec_ssh_cmd(ssh, "sudo chroot %s %s" % (chroot_dir, cmd))
 
 
 
 
+def check_fs(ssh, fs_type, dev_path):
+    try:
+        out = exec_ssh_cmd(
+            ssh, "sudo fsck -p -t %s %s" % (fs_type, dev_path)).decode()
+        LOG.debug("File system checked:\n%s", out)
+    except Exception as ex:
+        LOG.warn("Checking file system returned an error:\n%s", str(ex))
+
+
 def _check_port_open(host, port):
 def _check_port_open(host, port):
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     try:
     try: