Skip to content

Commit

Permalink
Merge pull request #264 from Dany9966/lvm-names-fix
Browse files Browse the repository at this point in the history
More worker-related fixes
  • Loading branch information
Dany9966 authored Sep 6, 2023
2 parents b8aadc5 + 2524664 commit 8db8b63
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 15 deletions.
52 changes: 38 additions & 14 deletions coriolis/osmorphing/osmount/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import itertools
import os
import re
import uuid

from oslo_log import log as logging
import paramiko
Expand All @@ -16,6 +17,7 @@
from coriolis import exception
from coriolis import utils


LOG = logging.getLogger(__name__)

MAJOR_COLUMN_INDEX = 4
Expand Down Expand Up @@ -130,6 +132,34 @@ def _get_pvs(self):
LOG.debug("Physical Volume attributes: %s", pvs)
return pvs

def _get_vgs(self):
vgs_cmd = (
"sudo vgs -o vg_name,pv_name,vg_uuid, --noheadings --separator :")
out = self._exec_cmd(vgs_cmd).decode().splitlines()
LOG.debug("Output of %s command: %s", vgs_cmd, out)
vgs = {}
for line in out:
if line == "":
continue
line = line.strip().split(":")
if len(line) >= 3:
vg_name, pv_name, vg_uuid = line[0], line[1], line[2]
if vgs.get(vg_name) is None:
vgs[vg_name] = pv_name
else:
new_name = str(uuid.uuid4())
LOG.debug(
"VG with name '%s' already detected. Renaming VG with "
"UUID '%s' to '%s' to avoid conflicts",
vg_name, vg_uuid, new_name)
self._exec_cmd("sudo vgrename %s %s" % (vg_uuid, new_name))
vgs[new_name] = pv_name
else:
LOG.warning("Ignoring improper `vgs` output entry: %s", line)
LOG.debug("Volume groups: %s", vgs)

return vgs

def _check_vgs(self):
try:
self._exec_cmd("sudo vgck")
Expand Down Expand Up @@ -500,20 +530,14 @@ def mount_os(self):

lvm_dev_paths = []
self._check_vgs()
pvs = self._get_pvs()
for vg_name in self._get_vgnames():
found = False
for pv in pvs[vg_name]:
if pv in dev_paths:
found = True
break
if not found:
continue
self._exec_cmd("sudo vgchange -ay %s" % vg_name)
self._exec_cmd("sudo vgchange --refresh")
dev_paths_for_group = self._exec_cmd(
"sudo ls -1 /dev/%s/*" % vg_name).decode().splitlines()
lvm_dev_paths.extend(dev_paths_for_group)
vgs = self._get_vgs()
for vg_name, pv_name in vgs.items():
if pv_name in dev_paths:
self._exec_cmd("sudo vgchange -ay %s" % vg_name)
self._exec_cmd("sudo vgchange --refresh")
dev_paths_for_group = self._exec_cmd(
"sudo ls -1 /dev/%s/*" % vg_name).decode().splitlines()
lvm_dev_paths.extend(dev_paths_for_group)
LOG.debug("All LVM vols to scan: %s", lvm_dev_paths)

valid_filesystems = ['ext2', 'ext3', 'ext4', 'xfs', 'btrfs']
Expand Down
2 changes: 1 addition & 1 deletion coriolis/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ def _reload_and_start(start=True):
get_pty=True)

def _correct_selinux_label():
cmd = "sudo /sbin/restorecon -v %s" % serviceFilePath
cmd = "sudo restorecon -v %s" % serviceFilePath
try:
exec_ssh_cmd(ssh, cmd, get_pty=True)
except exception.CoriolisException:
Expand Down

0 comments on commit 8db8b63

Please sign in to comment.