public inbox for cluster-cvs@sourceware.org
help / color / mirror / Atom feed
* fence-agents: master - fence_*.py: Fix no fencing.py based scripts to force stdout close
@ 2009-03-03 10:59 Jan Friesse
0 siblings, 0 replies; only message in thread
From: Jan Friesse @ 2009-03-03 10:59 UTC (permalink / raw)
To: cluster-cvs-relay
Gitweb: http://git.fedorahosted.org/git/fence-agents.git?p=fence-agents.git;a=commitdiff;h=e421362e3f6926ce6a0914dff33ffadb3d12deaf
Commit: e421362e3f6926ce6a0914dff33ffadb3d12deaf
Parent: a6d00b47d451a71e5d9efcd173829fdaf503d14d
Author: Jan Friesse <jfriesse@redhat.com>
AuthorDate: Tue Mar 3 11:58:36 2009 +0100
Committer: Jan Friesse <jfriesse@redhat.com>
CommitterDate: Tue Mar 3 11:58:36 2009 +0100
fence_*.py: Fix no fencing.py based scripts to force stdout close
This feature is advise from Jim Meyering. On the beginning
of script, we register end callback, which close stdout and
show error, if this wasn't successful.
---
fence/agents/apc_snmp/fence_apc_snmp.py | 10 ++++++++++
fence/agents/cisco_mds/fence_cisco_mds.py | 2 ++
fence/agents/ifmib/fence_ifmib.py | 10 ++++++++++
fence/agents/rsa/fence_rsa.py | 11 +++++++++++
fence/agents/rsb/fence_rsb.py | 11 +++++++++++
5 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/fence/agents/apc_snmp/fence_apc_snmp.py b/fence/agents/apc_snmp/fence_apc_snmp.py
index b7a8c8a..d2530da 100644
--- a/fence/agents/apc_snmp/fence_apc_snmp.py
+++ b/fence/agents/apc_snmp/fence_apc_snmp.py
@@ -13,6 +13,7 @@ import datetime
import time
import select
import signal
+import atexit
from glob import glob
#BEGIN_VERSION_GENERATION
@@ -243,9 +244,18 @@ def log(msg, error=False):
o = sys.stdout
o.write(msg)
+def atexit_handler():
+ try:
+ sys.stdout.close()
+ os.close(1)
+ except IOError:
+ sys.stderr.write("%s failed to close standard output\n"%(sys.argv[0]))
+ sys.exit(1)
def main():
+ atexit.register(atexit_handler)
+
try:
main2()
return 0
diff --git a/fence/agents/cisco_mds/fence_cisco_mds.py b/fence/agents/cisco_mds/fence_cisco_mds.py
index d5de816..0e18037 100644
--- a/fence/agents/cisco_mds/fence_cisco_mds.py
+++ b/fence/agents/cisco_mds/fence_cisco_mds.py
@@ -87,6 +87,8 @@ def main():
"snmp_priv_prot", "snmp_priv_passwd", "snmp_priv_passwd_script",
"udpport"]
+ atexit.register(atexit_handler)
+
options=process_input(device_opt)
# Emulate enable/disable functionality
diff --git a/fence/agents/ifmib/fence_ifmib.py b/fence/agents/ifmib/fence_ifmib.py
index 3f0c43d..42345ff 100644
--- a/fence/agents/ifmib/fence_ifmib.py
+++ b/fence/agents/ifmib/fence_ifmib.py
@@ -19,6 +19,7 @@ BUILD_DATE="March, 2008"
import os
os.environ['PYSNMP_API_VERSION'] = 'v2'
import sys, getopt, random, socket
+import atexit
from pysnmp import role, v2c, asn1
ifAdminStatus = '.1.3.6.1.2.1.2.2.1.7.'
@@ -160,8 +161,17 @@ def snmpset (host, comm, oid, type, value):
else:
raise IOError('SNMP error while setting')
+def atexit_handler():
+ try:
+ sys.stdout.close()
+ os.close(1)
+ except IOError:
+ sys.stderr.write("%s failed to close standard output\n"%(sys.argv[0]))
+ sys.exit(1)
def main():
+ atexit.register(atexit_handler)
+
if len (sys.argv) > 1:
(comm, host, index, option, verbose) = parseargs ()
else:
diff --git a/fence/agents/rsa/fence_rsa.py b/fence/agents/rsa/fence_rsa.py
index 51910e8..831848e 100644
--- a/fence/agents/rsa/fence_rsa.py
+++ b/fence/agents/rsa/fence_rsa.py
@@ -4,6 +4,7 @@ import getopt, sys
import os
import socket
import time
+import atexit
from telnetlib import Telnet
@@ -38,6 +39,14 @@ def version():
print "%s\n" % REDHAT_COPYRIGHT
sys.exit(0)
+def atexit_handler():
+ try:
+ sys.stdout.close()
+ os.close(1)
+ except IOError:
+ sys.stderr.write("%s failed to close standard output\n"%(sys.argv[0]))
+ sys.exit(1)
+
def main():
POWER_OFF = 0
@@ -67,6 +76,8 @@ def main():
regex_list.append("Power:")
regex_list.append("Error:")
+ atexit.register(atexit_handler)
+
if len(sys.argv) > 1:
try:
opts, args = getopt.getopt(sys.argv[1:], "a:hl:o:p:S:vV", ["help", "output="])
diff --git a/fence/agents/rsb/fence_rsb.py b/fence/agents/rsb/fence_rsb.py
index a11e7ce..1df0374 100644
--- a/fence/agents/rsb/fence_rsb.py
+++ b/fence/agents/rsb/fence_rsb.py
@@ -4,6 +4,7 @@ import getopt, sys
import os
import socket
import time
+import atexit
from telnetlib import Telnet
@@ -40,6 +41,14 @@ def version():
print "%s\n" % REDHAT_COPYRIGHT
sys.exit(0)
+def atexit_handler():
+ try:
+ sys.stdout.close()
+ os.close(1)
+ except IOError:
+ sys.stderr.write("%s failed to close standard output\n"%(sys.argv[0]))
+ sys.exit(1)
+
def main():
depth = 0
POWER_OFF = 0
@@ -80,6 +89,8 @@ def main():
regex_list.append("really want to")
regex_list.append("CLOSING TELNET CONNECTION")
+ atexit.register(atexit_handler)
+
if len(sys.argv) > 1:
try:
opts, args = getopt.getopt(sys.argv[1:], "a:hl:n:o:p:S:vV", ["help", "output="])
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-03-03 10:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-03 10:59 fence-agents: master - fence_*.py: Fix no fencing.py based scripts to force stdout close Jan Friesse
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).