import rig-1.1-3.el8
This commit is contained in:
parent
81cb2e2596
commit
e719f5d071
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/rig-1.0.tar.gz
|
SOURCES/rig-1.1.tar.gz
|
||||||
|
@ -1 +1 @@
|
|||||||
6ee921b7b86e0c39b48ed216f5fd534e0dc5c0cb SOURCES/rig-1.0.tar.gz
|
5d4696794a5f5ff18d05a8595bbc53562b5f372a SOURCES/rig-1.1.tar.gz
|
||||||
|
96
SOURCES/rig-fix-rig-list.patch
Normal file
96
SOURCES/rig-fix-rig-list.patch
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
From dedd8733d6cac622903a58cf7a94503cdbd13d88 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jake Hunsaker <jhunsake@redhat.com>
|
||||||
|
Date: Tue, 24 May 2022 12:06:46 -0400
|
||||||
|
Subject: [PATCH] [BaseRig] Fix fatal error when querying rig list during
|
||||||
|
pre_action()
|
||||||
|
|
||||||
|
If a rig used the sosreport action, and specified `--initial-sos`, *and*
|
||||||
|
queried `rig list` immediately after the rig was deployed, there was a
|
||||||
|
race condition where the status query would have failed and terminated
|
||||||
|
the rig during `pre_action()` execution.
|
||||||
|
|
||||||
|
Fix this, by first not detaching until all `pre_action`s are completed,
|
||||||
|
and second better handle failed `status` queries better generically.
|
||||||
|
|
||||||
|
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
||||||
|
---
|
||||||
|
rigging/__init__.py | 19 +++++++++++++++----
|
||||||
|
rigging/rigs/__init__.py | 6 +++---
|
||||||
|
2 files changed, 18 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rigging/__init__.py b/rigging/__init__.py
|
||||||
|
index 245d2d1..04ad08e 100644
|
||||||
|
--- a/rigging/__init__.py
|
||||||
|
+++ b/rigging/__init__.py
|
||||||
|
@@ -234,6 +234,7 @@ class RigConnection():
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, socket_name):
|
||||||
|
+ self.name = socket_name
|
||||||
|
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||||
|
_address = "/var/run/rig/%s" % socket_name
|
||||||
|
try:
|
||||||
|
@@ -278,10 +279,20 @@ class RigConnection():
|
||||||
|
Returns
|
||||||
|
dict of rig's status information
|
||||||
|
"""
|
||||||
|
- ret = json.loads(self._rig_communicate('status').decode())
|
||||||
|
- if ret['success']:
|
||||||
|
- return ast.literal_eval(ret['result'])
|
||||||
|
- raise Exception
|
||||||
|
+ try:
|
||||||
|
+ ret = json.loads(self._rig_communicate('status').decode())
|
||||||
|
+ if ret['success']:
|
||||||
|
+ return ast.literal_eval(ret['result'])
|
||||||
|
+ except Exception as err:
|
||||||
|
+ print("Error retreiving status for %s: %s" % (self.name, err))
|
||||||
|
+ return {
|
||||||
|
+ 'id': self.name,
|
||||||
|
+ 'pid': '',
|
||||||
|
+ 'rig_type': '',
|
||||||
|
+ 'watch': 'Error retrieving status',
|
||||||
|
+ 'trigger': '',
|
||||||
|
+ 'status': 'Unknown'
|
||||||
|
+ }
|
||||||
|
|
||||||
|
def info(self):
|
||||||
|
"""
|
||||||
|
diff --git a/rigging/rigs/__init__.py b/rigging/rigs/__init__.py
|
||||||
|
index 1d2f2df..f14f312 100644
|
||||||
|
--- a/rigging/rigs/__init__.py
|
||||||
|
+++ b/rigging/rigs/__init__.py
|
||||||
|
@@ -77,6 +77,7 @@ class BaseRig():
|
||||||
|
self.resource_name = self.__class__.__name__.lower()
|
||||||
|
self.parser_usage = self.parser_usage % {'name': self.resource_name}
|
||||||
|
self.pool = None
|
||||||
|
+ self.archive_name = None
|
||||||
|
self.parser = parser
|
||||||
|
self.restart_count = 0
|
||||||
|
subparser = self.parser.add_subparsers()
|
||||||
|
@@ -484,7 +485,6 @@ class BaseRig():
|
||||||
|
conn.sendall(self._fmt_return(command=req['command'],
|
||||||
|
output='No such attribute',
|
||||||
|
success=False))
|
||||||
|
- continue
|
||||||
|
|
||||||
|
def _register_actions(self):
|
||||||
|
"""
|
||||||
|
@@ -536,13 +536,13 @@ class BaseRig():
|
||||||
|
Main entry point for rigs.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
+ self.setup()
|
||||||
|
+ self._register_actions()
|
||||||
|
# detach from console
|
||||||
|
if not self.args['foreground']:
|
||||||
|
print(self.id)
|
||||||
|
self._detach()
|
||||||
|
self.detached = True
|
||||||
|
- self.setup()
|
||||||
|
- self._register_actions()
|
||||||
|
if self.detached:
|
||||||
|
for action in self._actions:
|
||||||
|
self._actions[action].detached = True
|
||||||
|
--
|
||||||
|
2.34.3
|
||||||
|
|
59
SOURCES/rig-full-random-temp.patch
Normal file
59
SOURCES/rig-full-random-temp.patch
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
From 90c5505d82b288bbc0b2e8b01e85b78d18a0bd18 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jake Hunsaker <jhunsake@redhat.com>
|
||||||
|
Date: Thu, 9 Jun 2022 14:26:02 -0400
|
||||||
|
Subject: [PATCH] [rig] Use `tempfile` module for temp directory creation
|
||||||
|
|
||||||
|
Previously, a change was made to temp directory creation in an effort to
|
||||||
|
make it more secure. While that was largely handled, it left us with an
|
||||||
|
unhandled error in an edge case configuration. Rather than putting a
|
||||||
|
band-aid over that again, re-write the temp directory creation process
|
||||||
|
to leverage the `tempfile` module, so that we can safely and completely
|
||||||
|
ignore the id/name of a rig, and leave the use of that for the
|
||||||
|
communication socket.
|
||||||
|
|
||||||
|
Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
|
||||||
|
---
|
||||||
|
rigging/rigs/__init__.py | 13 +++++++------
|
||||||
|
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rigging/rigs/__init__.py b/rigging/rigs/__init__.py
|
||||||
|
index f14f312..29bb8b4 100644
|
||||||
|
--- a/rigging/rigs/__init__.py
|
||||||
|
+++ b/rigging/rigs/__init__.py
|
||||||
|
@@ -18,6 +18,7 @@ import string
|
||||||
|
import socket
|
||||||
|
import sys
|
||||||
|
import tarfile
|
||||||
|
+import tempfile
|
||||||
|
import time
|
||||||
|
|
||||||
|
from argparse import Action
|
||||||
|
@@ -110,7 +111,7 @@ class BaseRig():
|
||||||
|
self.log_debug("Initializing %s rig %s" %
|
||||||
|
(self.resource_name, self.id))
|
||||||
|
self._sock, self._sock_address = self._create_rig_socket()
|
||||||
|
- self._tmp_dir = self._create_temp_dir()
|
||||||
|
+ self._create_temp_dir()
|
||||||
|
self.files = []
|
||||||
|
|
||||||
|
def set_rig_id(self):
|
||||||
|
@@ -196,11 +197,11 @@ class BaseRig():
|
||||||
|
Create a temp directory for rig to use for saving created files too
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
- _dir = "%s.%s/" % (RIG_TMP_DIR_PREFIX, self.id)
|
||||||
|
- os.makedirs(_dir)
|
||||||
|
- return _dir
|
||||||
|
- except OSError:
|
||||||
|
- raise CannotConfigureRigError('failed to create temp directory')
|
||||||
|
+ self._tmp_dir = tempfile.mkdtemp(prefix='rig.', dir='/var/tmp')
|
||||||
|
+ except Exception as err:
|
||||||
|
+ raise CannotConfigureRigError(
|
||||||
|
+ "failed to create temp directory: %s" % err
|
||||||
|
+ )
|
||||||
|
|
||||||
|
def _load_args(self):
|
||||||
|
"""
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
Name: rig
|
Name: rig
|
||||||
Summary: Monitor a system for events and trigger specific actions
|
Summary: Monitor a system for events and trigger specific actions
|
||||||
Version: 1.0
|
Version: 1.1
|
||||||
Release: 3%{?dist}
|
Release: 3%{?dist}
|
||||||
Url: https://github.com/TurboTurtle/rig
|
Url: https://github.com/TurboTurtle/rig
|
||||||
Source0: %{url}/archive/%{name}-%{version}.tar.gz
|
Source0: %{url}/archive/%{name}-%{version}.tar.gz
|
||||||
@ -15,6 +15,9 @@ BuildRequires: python3-setuptools
|
|||||||
BuildRequires: python3dist(systemd-python)
|
BuildRequires: python3dist(systemd-python)
|
||||||
BuildRequires: python3dist(psutil)
|
BuildRequires: python3dist(psutil)
|
||||||
|
|
||||||
|
Patch1: rig-fix-rig-list.patch
|
||||||
|
Patch2: rig-full-random-temp.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Rig is a utility designed to watch or monitor specific system resources (e.g.
|
Rig is a utility designed to watch or monitor specific system resources (e.g.
|
||||||
log files, journals, system activity, etc...) and then take specific action
|
log files, journals, system activity, etc...) and then take specific action
|
||||||
@ -23,6 +26,8 @@ troubleshooting and data collection for randomly occurring events.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%py3_build
|
%py3_build
|
||||||
@ -43,6 +48,16 @@ install -p -m644 man/en/rig.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/
|
|||||||
%doc README.md
|
%doc README.md
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jun 13 2022 Jake Hunsaker <jhunsake@redhat.com> - 1.1-3
|
||||||
|
- Backport change to temp dir creation to ignore rig ID
|
||||||
|
|
||||||
|
* Tue May 31 2022 Jake Hunsaker <jhunsake@redhat.com> - 1.1-2
|
||||||
|
- Backport fix of rig list race condition
|
||||||
|
|
||||||
|
* Fri Apr 22 2022 Jake Hunsaker <jhunsake@redhat.com> - 1.1-1
|
||||||
|
- Rebase to version 1.1
|
||||||
|
Related: RHBZ#2064752
|
||||||
|
|
||||||
* Mon Oct 04 2021 Jake Hunsaker <jhunsake@redhat.com> - 1.0-3
|
* Mon Oct 04 2021 Jake Hunsaker <jhunsake@redhat.com> - 1.0-3
|
||||||
- Rebuilt for RHEL 8.6.0
|
- Rebuilt for RHEL 8.6.0
|
||||||
- RHBZ#1888705
|
- RHBZ#1888705
|
||||||
|
Loading…
Reference in New Issue
Block a user