!503 【资源池化】 OM支持NoF/NoF+接口
Merge pull request !503 from Hemny/master-dev
This commit is contained in:
commit
104816a5e7
@ -256,8 +256,49 @@ class DiskUtil(object):
|
||||
return output.split('\n')
|
||||
|
||||
@staticmethod
|
||||
def get_scsi_dev_id(dev_name):
|
||||
cmd = '/lib/udev/scsi_id -g -u {}'.format(dev_name)
|
||||
def get_disk_dev_id(dev_name):
|
||||
cmd = 'udevadm info -q symlink {}'.format(dev_name)
|
||||
sts, out = CmdUtil.getstatusoutput_by_fast_popen(cmd)
|
||||
if sts not in [0]:
|
||||
raise Exception(ErrorCode.GAUSS_504["GAUSS_50422"] %
|
||||
str(out).strip())
|
||||
|
||||
if out.find('disk/by-id/scsi-') != -1:
|
||||
strtmp = out[out.index('disk/by-id/scsi-') + len('disk/by-id/scsi-'):]
|
||||
if out.find(' ') != -1:
|
||||
strtmp = strtmp.split()[0]
|
||||
return strtmp.strip()
|
||||
|
||||
if out.find('disk/by-id/ultrapath') != -1:
|
||||
strtmp = out[out.index('disk/by-id/ultrapath') + len('disk/by-id/ultrapath'):]
|
||||
if out.find(' ') != -1:
|
||||
strtmp = strtmp.split()[0]
|
||||
strtmp = strtmp.split('-', 1)[1]
|
||||
return strtmp.strip()
|
||||
|
||||
if out.find('disk/by-id/wwn-') != -1:
|
||||
strtmp = out[out.index('disk/by-id/wwn-') + len('disk/by-id/wwn-'):]
|
||||
if out.find(' ') != -1:
|
||||
strtmp = strtmp.split()[0]
|
||||
return strtmp.strip()
|
||||
|
||||
if out.find('disk/by-id/ata-') != -1:
|
||||
strtmp = out[out.index('disk/by-id/ata-') + len('disk/by-id/ata-'):]
|
||||
if out.find(' ') != -1:
|
||||
strtmp = strtmp.split()[0]
|
||||
return strtmp.strip()
|
||||
|
||||
if out.find('disk/by-id/dm-uuid-') != -1:
|
||||
strtmp = out[out.index('disk/by-id/dm-uuid-') + len('disk/by-id/dm-uuid-'):]
|
||||
if out.find(' ') != -1:
|
||||
strtmp = strtmp.split()[0]
|
||||
return strtmp.strip()
|
||||
|
||||
return out.strip()
|
||||
|
||||
@staticmethod
|
||||
def get_disk_dev_name(dev_name):
|
||||
cmd = 'udevadm info -q name {}'.format(dev_name)
|
||||
sts, out = CmdUtil.getstatusoutput_by_fast_popen(cmd)
|
||||
if sts not in [0]:
|
||||
raise Exception(ErrorCode.GAUSS_504["GAUSS_50422"] %
|
||||
|
@ -233,6 +233,7 @@ class DefaultValue():
|
||||
GREY_UPGRADE_STEP_UPGRADE_PROCESS = 3
|
||||
|
||||
CAP_WIO = "CAP_SYS_RAWIO"
|
||||
CAP_ADM = "CAP_SYS_ADMIN"
|
||||
|
||||
# env parameter
|
||||
MPPRC_FILE_ENV = "MPPDB_ENV_SEPARATE_PATH"
|
||||
|
@ -402,6 +402,8 @@ class Udev():
|
||||
|
||||
def __init__(self, attr='', **kwargs):
|
||||
# uuid soft_link_name user, group
|
||||
dev_id = ''
|
||||
dev_name = ''
|
||||
if shutil.which('hot_add'):
|
||||
self.KERNEL = 'sd*'
|
||||
else:
|
||||
@ -410,12 +412,19 @@ class Udev():
|
||||
self.SUBSYSTEM = 'block'
|
||||
self.RESULT, self.SYMLINK, self.OWNER, self.GROUP = '', '', '', '',
|
||||
if attr:
|
||||
self.RESULT, self.SYMLINK, self.OWNER, self.GROUP = attr
|
||||
self.PROGRAM = ' '.join([
|
||||
'/lib/udev/scsi_id', '--whitelisted', '--replace-whitespace',
|
||||
'--device=/dev/$name'
|
||||
])
|
||||
dev_id, dev_name, self.SYMLINK, self.OWNER, self.GROUP = attr
|
||||
self.PROGRAM = ' '.join(['/usr/bin/udevadm', 'info', '-q', 'symlink', '/dev/$name'])
|
||||
self.RESULT = '*{}*'.format(dev_id)
|
||||
self.MODE = '0660'
|
||||
if dev_name.startswith('sd'):
|
||||
self.KERNEL = 'sd*'
|
||||
elif dev_name.startswith('nvme'):
|
||||
self.KERNEL = 'nvme*'
|
||||
elif dev_name.startswith('ultrapath'):
|
||||
self.KERNEL = 'ultrapath*'
|
||||
elif dev_name.startswith('dm-'):
|
||||
self.KERNEL = 'dm-*'
|
||||
|
||||
for key, val in kwargs.items():
|
||||
setattr(self, key, val)
|
||||
|
||||
@ -450,9 +459,10 @@ class UdevContext():
|
||||
DSS_UDEV_NAME = 'zz-dss_%s.rules'
|
||||
DSS_UDEV_DIR = '/etc/udev/rules.d/'
|
||||
|
||||
def __init__(self, identity, db_info, uuid_getter=''):
|
||||
def __init__(self, identity, db_info, uuid_getter='', devname_getter=''):
|
||||
self.user, self.group = identity
|
||||
self.uuid_getter = uuid_getter
|
||||
self.devname_getter = devname_getter
|
||||
self.db_info = db_info
|
||||
|
||||
@property
|
||||
@ -515,16 +525,16 @@ class UdevContext():
|
||||
if isinstance(info, dict) and key == 'dss_pri_disks':
|
||||
for dss_id, phy_disk in enumerate(info.values()):
|
||||
yield str(
|
||||
Udev((self.uuid_getter(phy_disk), alias % (str(dss_id)),
|
||||
Udev((self.uuid_getter(phy_disk), self.devname_getter(phy_disk), alias % (str(dss_id)),
|
||||
self.user, self.group)))
|
||||
elif isinstance(info, dict):
|
||||
# shared disk
|
||||
for phy_disk in info.values():
|
||||
yield str(
|
||||
Udev((self.uuid_getter(phy_disk), alias, self.user,
|
||||
Udev((self.uuid_getter(phy_disk), self.devname_getter(phy_disk), alias, self.user,
|
||||
self.group)))
|
||||
elif isinstance(info, str):
|
||||
# the disk used by cm
|
||||
yield str(
|
||||
Udev(
|
||||
(self.uuid_getter(info), alias, self.user, self.group)))
|
||||
(self.uuid_getter(info), self.devname_getter(phy_disk), alias, self.user, self.group)))
|
||||
|
@ -922,7 +922,7 @@ Common options:
|
||||
self.logger.debug("Creating dss disk link.")
|
||||
context = list(
|
||||
UdevContext((self.user, self.group), self.clusterInfo,
|
||||
DiskUtil.get_scsi_dev_id))
|
||||
DiskUtil.get_disk_dev_id, DiskUtil.get_disk_dev_name))
|
||||
|
||||
self.logger.debug("Checking dss udev directory.")
|
||||
if os.path.isdir(UdevContext.DSS_UDEV_DIR):
|
||||
@ -931,7 +931,7 @@ Common options:
|
||||
|
||||
for disk in UdevContext.get_all_phy_disk(self.clusterInfo):
|
||||
cmd = "cd %s; grep -iro '%s' | grep -v grep | grep -v '%s'" % (
|
||||
UdevContext.DSS_UDEV_DIR, DiskUtil.get_scsi_dev_id(disk),
|
||||
UdevContext.DSS_UDEV_DIR, DiskUtil.get_disk_dev_id(disk),
|
||||
UdevContext.DSS_UDEV_NAME % self.user)
|
||||
sts, out = subprocess.getstatusoutput(cmd)
|
||||
if sts == 1:
|
||||
@ -2697,10 +2697,10 @@ Common options:
|
||||
FileUtil.changeMode(DefaultValue.BIN_FILE_MODE,
|
||||
os.path.join(clib_app, file_))
|
||||
|
||||
caps = ['perctrl', 'cm_persist']
|
||||
for file_ in caps:
|
||||
FileUtil.change_caps(DefaultValue.CAP_WIO,
|
||||
os.path.join(clib_app, file_))
|
||||
os.path.join(clib_app, 'cm_persist'))
|
||||
FileUtil.change_caps('{},{}'.format(DefaultValue.CAP_ADM, DefaultValue.CAP_WIO),
|
||||
os.path.join(clib_app, 'perctrl'))
|
||||
self.logger.debug("Successfully modified dss cap permissions.")
|
||||
|
||||
def fix_dss_dir_permission(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user