Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP1
crmsh.12576
0002-dev-hb_report-Using-Tempfile-class-to-mana...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0002-dev-hb_report-Using-Tempfile-class-to-manage-tempfil.patch of Package crmsh.12576
From 11d206b7320a1b8953cdecb5bc1815aded21df39 Mon Sep 17 00:00:00 2001 From: liangxin1300 <XLiang@suse.com> Date: Wed, 3 Apr 2019 13:38:12 +0800 Subject: [PATCH 2/4] dev: hb_report: Using Tempfile class to manage tempfiles --- hb_report/constants.py | 1 - hb_report/hb_report.in | 6 ++-- hb_report/utillib.py | 67 ++++++++++++++++++++++++------------------ 3 files changed, 40 insertions(+), 34 deletions(-) diff --git a/hb_report/constants.py b/hb_report/constants.py index 5f1276ca..8afefb42 100644 --- a/hb_report/constants.py +++ b/hb_report/constants.py @@ -49,7 +49,6 @@ SSH_USER = "" SUDO = "" THIS_IS_NODE = 0 TMP = None -TMPFLIST = None TO_TIME = 0 TRY_SSH = "root hacluster" # UNIQUE_MSG = "Mark:HB_REPORT:%d" % now_second diff --git a/hb_report/hb_report.in b/hb_report/hb_report.in index 5f55dd1a..40de4047 100755 --- a/hb_report/hb_report.in +++ b/hb_report/hb_report.in @@ -2,7 +2,6 @@ # Copyright (C) 2017 Xin Liang <XLiang@suse.com> # See COPYING for license information. -import atexit import getopt import multiprocessing import os @@ -11,6 +10,7 @@ import sys import datetime import shutil +sys.path.append(os.path.dirname(os.path.realpath(__file__))) import constants import utillib from crmsh import utils as crmutils @@ -210,10 +210,8 @@ def parse_argument(argv): def run(): utillib.check_env() - constants.TMPFLIST = utillib.create_tempfile() - atexit.register(utillib.drop_tempfiles) tmpdir = utillib.make_temp_dir() - utillib.add_tmpfiles(tmpdir) + utillib.add_tempfiles(tmpdir) # # get and check options; and the destination diff --git a/hb_report/utillib.py b/hb_report/utillib.py index 9612abc1..57ca0dc6 100644 --- a/hb_report/utillib.py +++ b/hb_report/utillib.py @@ -15,17 +15,47 @@ import stat import string import subprocess import sys +import atexit import tempfile import contextlib from dateutil import tz from threading import Timer +sys.path.append(os.path.dirname(os.path.realpath(__file__))) import constants import crmsh.config from crmsh import msg as crmmsg from crmsh import utils as crmutils +class Tempfile(object): + + def __init__(self): + self.file = create_tempfile() + log_debug("create tempfile \"{}\"".format(self.file)) + + def add(self, filename): + with open(self.file, 'a') as f: + f.write(filename + '\n') + log_debug("add tempfile \"{}\" to \"{}\"".format(filename, self.file)) + + def drop(self): + with open(self.file, 'r') as f: + for line in f.read().split('\n'): + if os.path.isdir(line): + shutil.rmtree(line) + if os.path.isfile(line): + os.remove(line) + os.remove(self.file) + log_debug("remove tempfile \"{}\"".format(self.file)) + + +def add_tempfiles(filename): + t = Tempfile() + t.add(filename) + atexit.register(t.drop) + + def _mkdir(directory): """ from crmsh/tmpfiles.py @@ -37,14 +67,6 @@ def _mkdir(directory): log_fatal("Failed to create directory: %s" % (err)) -def add_tmpfiles(contents): - """ - add contents for removing when program exit - """ - with open(constants.TMPFLIST, 'a') as f: - f.write(contents+'\n') - - def arch_logs(logf, from_time, to_time): """ go through archived logs (timewise backwards) and see if there @@ -450,19 +472,6 @@ def dlm_dump(): crmutils.str2file(out_string, dlm_f) -def drop_tempfiles(): - """ - tmp files business - """ - with open(constants.TMPFLIST, 'r') as f: - for line in f.read().split('\n'): - if os.path.isdir(line): - shutil.rmtree(line) - if os.path.isfile(line): - os.remove(line) - os.remove(constants.TMPFLIST) - - def dump_log(logf, from_line, to_line): if not from_line: return @@ -549,20 +558,19 @@ def find_files(dirs, from_time, to_time): log_warning("sorry, can't find files based on time if you don't supply time") return - from_stamp = create_tempfile(from_time) - add_tmpfiles(from_stamp) - findexp = "-newer %s" % from_stamp + file_with_stamp = create_tempfile(from_time) + findexp = "-newer %s" % file_with_stamp if crmutils.is_int(to_time) and to_time > 0: - to_stamp = create_tempfile(to_time) - add_tmpfiles(to_stamp) - findexp += " ! -newer %s" % to_stamp + file_with_stamp = create_tempfile(to_time) + findexp += " ! -newer %s" % file_with_stamp cmd = r"find %s -type f %s" % (dirs, findexp) cmd_res = get_command_info(cmd)[1].strip() if cmd_res: res = cmd_res.split('\n') + os.remove(file_with_stamp) return res @@ -1358,7 +1366,8 @@ def print_logseg(logf, from_time, to_time): cat = find_decompressor(logf) if cat != "cat": tmp = create_tempfile() - add_tmpfiles(tmp) + add_tempfiles(tmp) + cmd = "%s %s > %s" % (cat, logf, tmp) code, out, err = crmutils.get_stdout_stderr(cmd) if code != 0: @@ -1444,7 +1453,7 @@ def sanitize_one(in_file, mode=None): return 0 ref = create_tempfile() - add_tmpfiles(ref) + add_tempfiles(ref) touch_r(in_file, ref) with open_(in_file, 'w') as f: -- 2.22.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor