The same I commented regarding the commit message.
On 02/11/2015 10:03, mesmriti(a)linux.vnet.ibm.com wrote:
From: Megha Smriti <mesmriti(a)linux.vnet.ibm.com>
---
src/wok/plugins/gingerbase/i18n.py | 2 +
src/wok/plugins/gingerbase/model/debugreports.py | 80 +++++++++++++++++++++---
2 files changed, 72 insertions(+), 10 deletions(-)
diff --git a/src/wok/plugins/gingerbase/i18n.py b/src/wok/plugins/gingerbase/i18n.py
index 01573b0..e19b997 100644
--- a/src/wok/plugins/gingerbase/i18n.py
+++ b/src/wok/plugins/gingerbase/i18n.py
@@ -36,6 +36,8 @@ messages = {
"GGBDR0007E": _("Debug report name must be a string. Only letters,
digits, underscore ('_') and "
"hyphen ('-') are allowed."),
"GGBDR0008E": _("The debug report with specified name
\"%(name)s\" already exists. Please use another one."),
+ "GGBDR0009E": _("Unable to create dbginfo report with %(retcode)s.
Details: %(err)s"),
+ "GGBDR0010E": _("Unable to tar the final debug
report tar file with %(retcode)s. Details: %(error)s"),
"Unable to compress the final debug report data due error %(retcode)s.
Details: %(error)s"
"GGBHOST0001E": _("Unable to shutdown host
machine as there are running virtual machines"),
"GGBHOST0002E": _("Unable to reboot host machine as there are
running virtual machines"),
"GGBHOST0005E": _("When specifying CPU topology, each element must
be an integer greater than zero."),
diff --git a/src/wok/plugins/gingerbase/model/debugreports.py
b/src/wok/plugins/gingerbase/model/debugreports.py
index 0bb36fe..719e460 100644
--- a/src/wok/plugins/gingerbase/model/debugreports.py
+++ b/src/wok/plugins/gingerbase/model/debugreports.py
@@ -25,6 +25,7 @@ import os
import shutil
import subprocess
import time
+import platform
import re
from wok.exception import InvalidParameter, NotFoundError, OperationFailed
@@ -108,16 +109,75 @@ class DebugReportsModel(object):
raise OperationFailed('GGBDR0004E', {'name': name})
md5_report_file = sosreport_file + '.md5'
report_file_extension = '.' + sosreport_file.split('.',
1)[1]
- path = config.get_debugreports_path()
- sosreport_target = os.path.join(path,
- name + report_file_extension)
- msg = 'Moving debug report file "%s" to "%s"' \
- % (sosreport_file, sosreport_target)
- wok_log.info(msg)
- shutil.move(sosreport_file, sosreport_target)
- delete_the_sosreport_md5_file(md5_report_file)
- cb('OK', True)
- return
+ # If the platform is a system Z machine.
+ if platform.machine().startswith('s390'):
I suggest to create a new function to handle the sosreport generation
for s390x. Just to make the code easier to read.
+ dbgreport_regex =
'(\S+\s+)(\/\w+\/\w+-[\d+]{4}-[\d+]{2}' \
+ '-[\d+]{2}-[\d+]{2}-[\d+]{2}' \
+ '-[\d+]{2}-\w+-\d+\S+)(\s+\S+)'
+ command = ['/usr/sbin/dbginfo.sh']
Is there a parameter like '--tmp-dir' from sosreport to use with dbginfo.sh?
What about the report name? Is it auto generated?
+ output, error, retcode = run_command(command)
+ if retcode != 0:
+ raise OperationFailed("GGBDR0009E",
+ {'retcode': retcode, 'err':
error})
+ output = output.splitlines()
+ for line in output:
+ line = line.strip()
+ n = re.match(dbgreport_regex, line)
+ if n:
+ dbginfo_report = n.groups()[1]
+ break
+ pathis = '/var/tmp/'
+ file_extension_dbginfo = dbginfo_report.split('/', 2)[2]
+ target_report_file = os.path.join(pathis,
+ file_extension_dbginfo)
+ msg = 'Moving the "%s" to "%s"'\
+ % (dbginfo_report, target_report_file)
+ shutil.move(dbginfo_report, target_report_file)
So the report is generated somewhere and moved to /var/tmp. Is that
correct? Why do you need to move it to /var/tmp?
+ wok_log.info(msg)
+ final_tar_report_name = name + report_file_extension
In the code below you are creating the tar.gz file. So why are you using
an extension variable? It should correspond to the tar command you are
using below.
+ if dbginfo_report is not None:
+ sosreport_tar = sosreport_file.split('/', 3)[3]
+ dbginfo_tar = dbginfo_report.split('/', 2)[2]
+ msg = 'Zipping the sosreport and debug info files into ' \
+ 'final report file'
+ wok_log.info(msg)
+ command = ['tar', '-cvzf', '%s' %
final_tar_report_name,
+ '-C', '/var/tmp/', dbginfo_tar,
sosreport_tar]
Are you mixing sosreport with dbginfo? Is sosreport still present in
s390x systems? Is the debug report a collection of sosreport + dbginfo?
Sorry, I am newbie with s390x tools, so it'd be good if you explain what
you are going to do here.
+ output, error, retcode = run_command(command)
+ if retcode != 0:
+ raise OperationFailed("GGBDR0010E",
+ {'retcode': retcode,
+ 'error': error})
+ path = config.get_debugreports_path()
+ dbg_target = os.path.join(path,
+ name + report_file_extension)
+ # Moving report
+ msg = 'Moving final debug report file "%s" to
"%s"' % \
+ (final_tar_report_name, dbg_target)
+ wok_log.info(msg)
+ shutil.move(final_tar_report_name, dbg_target)
+ delete_the_sosreport_md5_file(md5_report_file)
+ msg = 'Deleting the dbginfo file "%s" ' \
+ % target_report_file
+ wok_log.info(msg)
+ os.remove(target_report_file)
+ msg = 'Deleting the sosreport file "%s" ' %
sosreport_file
+ wok_log.info(msg)
+ os.remove(sosreport_file)
+ wok_log.info('The debug report file has been moved')
+ cb('OK', True)
+ return
> + else:
> + path = config.get_debugreports_path()
> + sosreport_target = os.path.join(path,
> + name + report_file_extension)
> + msg = 'Moving debug report file "%s" to
"%s"' \
> + % (sosreport_file, sosreport_target)
+ wok_log.info(msg)
> +
shutil.move(sosreport_file, sosreport_target)
> + delete_the_sosreport_md5_file(md5_report_file)
> + cb('OK', True)
> + return
>
> except WokException as e:
> log_error(e)