Skip to content

Commit 4751787

Browse files
Merge pull request #920 from P-V-SAI-SURAKSHA/feat/phase3_soft_restart
Soft restart
2 parents 6c63c47 + 8cc90ec commit 4751787

File tree

1 file changed

+68
-49
lines changed

1 file changed

+68
-49
lines changed

zvmsdk/smtclient.py

Lines changed: 68 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1407,56 +1407,75 @@ def guest_capture(self, userid, image_name, capture_type='rootonly',
14071407
'successfully' % image_name)
14081408

14091409
def guest_get_os_version(self, userid):
1410-
os_version = ''
1411-
release_file = self.execute_cmd(userid, 'ls /etc/*-release')
1412-
if '/etc/os-release' in release_file:
1413-
# Parse os-release file, part of the output looks like:
1414-
# NAME="Red Hat Enterprise Linux Server"
1415-
# ID="rhel"
1416-
# VERSION_ID="7.0"
1417-
1418-
release_info = self.execute_cmd(userid, 'cat /etc/os-release')
1419-
release_dict = {}
1420-
for item in release_info:
1421-
if item:
1422-
release_dict[item.split('=')[0]] = item.split('=')[1]
1423-
distro = release_dict['ID']
1424-
version = release_dict['VERSION_ID']
1425-
if '"' in distro:
1426-
distro = eval(distro)
1427-
if '"' in version:
1428-
version = eval(version)
1429-
os_version = '%s%s' % (distro, version)
1430-
return os_version
1431-
elif '/etc/redhat-release' in release_file:
1432-
# The output looks like:
1433-
# "Red Hat Enterprise Linux Server release 6.7 (Santiago)"
1434-
distro = 'rhel'
1435-
release_info = self.execute_cmd(userid, 'cat /etc/redhat-release')
1436-
distro_version = release_info[0].split()[6]
1437-
os_version = ''.join((distro, distro_version))
1438-
return os_version
1439-
elif '/etc/SuSE-release' in release_file:
1440-
# The output for this file looks like:
1441-
# SUSE Linux Enterprise Server 11 (s390x)
1442-
# VERSION = 11
1443-
# PATCHLEVEL = 3
1444-
distro = 'sles'
1445-
release_info = self.execute_cmd(userid, 'cat /etc/SuSE-release')
1446-
LOG.debug('OS release info is %s' % release_info)
1447-
release_version = '.'.join((release_info[1].split('=')[1].strip(),
1448-
release_info[2].split('=')[1].strip()))
1449-
os_version = ''.join((distro, release_version))
1450-
return os_version
1451-
elif '/etc/system-release' in release_file:
1452-
# For some rhel6.7 system, it only have system-release file and
1453-
# the output looks like:
1454-
# "Red Hat Enterprise Linux Server release 6.7 (Santiago)"
1455-
distro = 'rhel'
1456-
release_info = self.execute_cmd(userid, 'cat /etc/system-release')
1457-
distro_version = release_info[0].split()[6]
1458-
os_version = ''.join((distro, distro_version))
1410+
"""
1411+
Retrieves the operating system name and version of the VM from release file.
1412+
:param userid: User ID of the VM.
1413+
:return: A string containing the OS name and version information.
1414+
Returns "" if IUCV is not configured.
1415+
Returns "NA" if no OS release file is found.
1416+
"""
1417+
1418+
os_version = 'NA'
1419+
try:
1420+
release_file = self.execute_cmd(userid, 'ls /etc/*-release')
1421+
1422+
if '/etc/os-release' in release_file:
1423+
# Parse os-release file, part of the output looks like:
1424+
# NAME="Red Hat Enterprise Linux Server"
1425+
# ID="rhel"
1426+
# VERSION_ID="7.0"
1427+
1428+
release_info = self.execute_cmd(userid, 'cat /etc/os-release')
1429+
release_dict = {}
1430+
for item in release_info:
1431+
if item:
1432+
release_dict[item.split('=')[0]] = item.split('=')[1]
1433+
distro = release_dict['ID']
1434+
version = release_dict['VERSION_ID']
1435+
if '"' in distro:
1436+
distro = eval(distro)
1437+
if '"' in version:
1438+
version = eval(version)
1439+
os_version = '%s%s' % (distro, version)
1440+
1441+
elif '/etc/redhat-release' in release_file:
1442+
# The output looks like:
1443+
# "Red Hat Enterprise Linux Server release 6.7 (Santiago)"
1444+
distro = 'rhel'
1445+
release_info = self.execute_cmd(userid, 'cat /etc/redhat-release')
1446+
distro_version = release_info[0].split()[6]
1447+
os_version = ''.join((distro, distro_version))
1448+
1449+
elif '/etc/SuSE-release' in release_file:
1450+
# The output for this file looks like:
1451+
# SUSE Linux Enterprise Server 11 (s390x)
1452+
# VERSION = 11
1453+
# PATCHLEVEL = 3
1454+
distro = 'sles'
1455+
release_info = self.execute_cmd(userid, 'cat /etc/SuSE-release')
1456+
LOG.debug('OS release info is %s' % release_info)
1457+
release_version = '.'.join((release_info[1].split('=')[1].strip(),
1458+
release_info[2].split('=')[1].strip()))
1459+
os_version = ''.join((distro, release_version))
1460+
1461+
elif '/etc/system-release' in release_file:
1462+
# For some rhel6.7 system, it only have system-release file and
1463+
# the output looks like:
1464+
# "Red Hat Enterprise Linux Server release 6.7 (Santiago)"
1465+
distro = 'rhel'
1466+
release_info = self.execute_cmd(userid, 'cat /etc/system-release')
1467+
distro_version = release_info[0].split()[6]
1468+
os_version = ''.join((distro, distro_version))
1469+
14591470
return os_version
1471+
except Exception as e:
1472+
if e.results['rc'] in (1, 4):
1473+
# rc = 1,Command was not authorized or a generic Linux error.
1474+
# rc = 4,IUCV socket error
1475+
return ""
1476+
elif e.results['rc'] == 8:
1477+
# rc = 8,Executed command failed
1478+
return "NA"
14601479

14611480
def _get_capture_devices(self, userid, capture_type='rootonly'):
14621481
capture_devices = []

0 commit comments

Comments
 (0)