From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32478 invoked by alias); 28 Aug 2009 16:13:15 -0000 Received: (qmail 32470 invoked by alias); 28 Aug 2009 16:13:15 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion2.fedora.phx.redhat.com Subject: cluster: RHEL55 - fencing: #518622 - Force stdout close for fencing agents in python To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/RHEL55 X-Git-Reftype: branch X-Git-Oldrev: e27e6148dd6a033a3e0a57e04c06b6242efb3321 X-Git-Newrev: 66767ee1c9e6d2d9f4cba0b4b5c1fd212222838d From: =?utf-8?q?Marek_Gr=C3=A1c?= Message-Id: <20090828161248.D946F1201BB@lists.fedorahosted.org> Date: Fri, 28 Aug 2009 16:13:00 -0000 X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q3/txt/msg00247.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=66767ee1c9e6d2d9f4cba0b4b5c1fd212222838d Commit: 66767ee1c9e6d2d9f4cba0b4b5c1fd212222838d Parent: e27e6148dd6a033a3e0a57e04c06b6242efb3321 Author: Marek 'marx' Grac AuthorDate: Fri Aug 28 17:21:58 2009 +0200 Committer: Marek 'marx' Grac CommitterDate: Fri Aug 28 17:21:58 2009 +0200 fencing: #518622 - Force stdout close for fencing agents in python --- fence/agents/apc/fence_apc.py | 2 ++ fence/agents/baytech/fence_baytech.pl | 9 +++++++++ fence/agents/bladecenter/fence_bladecenter.py | 2 ++ fence/agents/brocade/fence_brocade.pl | 9 +++++++++ fence/agents/bullpap/fence_bullpap.pl | 9 +++++++++ fence/agents/cisco_mds/fence_cisco_mds.py | 2 ++ fence/agents/cpint/fence_cpint.pl | 9 +++++++++ fence/agents/drac/fence_drac.pl | 9 +++++++++ fence/agents/drac/fence_drac5.py | 2 ++ fence/agents/egenera/fence_egenera.pl | 9 +++++++++ fence/agents/eps/fence_eps.py | 2 ++ fence/agents/ibmblade/fence_ibmblade.pl | 9 +++++++++ fence/agents/ilo/fence_ilo.py | 2 ++ fence/agents/lib/fencing.py.py | 9 +++++++++ fence/agents/lpar/fence_lpar.py | 2 ++ fence/agents/mcdata/fence_mcdata.pl | 9 +++++++++ fence/agents/rsa/fence_rsa.py | 2 ++ fence/agents/sanbox2/fence_sanbox2.pl | 9 +++++++++ fence/agents/scsi/fence_scsi.pl | 9 +++++++++ fence/agents/virsh/fence_virsh.py | 2 ++ fence/agents/vixel/fence_vixel.pl | 9 +++++++++ fence/agents/vmware/fence_vmware.py | 2 ++ fence/agents/wti/fence_wti.py | 2 ++ fence/agents/xcat/fence_xcat.pl | 9 +++++++++ fence/agents/zvm/fence_zvm.pl | 9 +++++++++ 25 files changed, 148 insertions(+), 0 deletions(-) diff --git a/fence/agents/apc/fence_apc.py b/fence/agents/apc/fence_apc.py index dfe9913..2868c16 100755 --- a/fence/agents/apc/fence_apc.py +++ b/fence/agents/apc/fence_apc.py @@ -177,6 +177,8 @@ def main(): "action", "ipaddr", "login", "passwd", "passwd_script", "secure", "port", "switch", "test" ] + atexit.register(atexit_handler) + options = check_input(device_opt, process_input(device_opt)) ## diff --git a/fence/agents/baytech/fence_baytech.pl b/fence/agents/baytech/fence_baytech.pl index cd65a2b..aac218a 100755 --- a/fence/agents/baytech/fence_baytech.pl +++ b/fence/agents/baytech/fence_baytech.pl @@ -27,6 +27,15 @@ use Net::Telnet; use Getopt::Std; +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # WARNING!! Do not add code bewteen "#BEGIN_VERSION_GENERATION" and # "#END_VERSION_GENERATION" It is generated by the Makefile diff --git a/fence/agents/bladecenter/fence_bladecenter.py b/fence/agents/bladecenter/fence_bladecenter.py index 518f6a6..65158c4 100755 --- a/fence/agents/bladecenter/fence_bladecenter.py +++ b/fence/agents/bladecenter/fence_bladecenter.py @@ -69,6 +69,8 @@ def main(): "action", "ipaddr", "login", "passwd", "passwd_script", "cmd_prompt", "secure", "port", "identity_file" ] + atexit.register(atexit_handler) + options = check_input(device_opt, process_input(device_opt)) ## diff --git a/fence/agents/brocade/fence_brocade.pl b/fence/agents/brocade/fence_brocade.pl index 33b0ce2..abb9204 100755 --- a/fence/agents/brocade/fence_brocade.pl +++ b/fence/agents/brocade/fence_brocade.pl @@ -16,6 +16,15 @@ use Getopt::Std; use Net::Telnet (); +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///; diff --git a/fence/agents/bullpap/fence_bullpap.pl b/fence/agents/bullpap/fence_bullpap.pl index 5cad62f..bb02fb8 100755 --- a/fence/agents/bullpap/fence_bullpap.pl +++ b/fence/agents/bullpap/fence_bullpap.pl @@ -15,6 +15,15 @@ use Getopt::Std; use POSIX; +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///; diff --git a/fence/agents/cisco_mds/fence_cisco_mds.py b/fence/agents/cisco_mds/fence_cisco_mds.py index 40faf94..d1838f4 100644 --- a/fence/agents/cisco_mds/fence_cisco_mds.py +++ b/fence/agents/cisco_mds/fence_cisco_mds.py @@ -88,6 +88,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/cpint/fence_cpint.pl b/fence/agents/cpint/fence_cpint.pl index ca5eac4..4a7d582 100755 --- a/fence/agents/cpint/fence_cpint.pl +++ b/fence/agents/cpint/fence_cpint.pl @@ -15,6 +15,15 @@ use Getopt::Std; +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///; diff --git a/fence/agents/drac/fence_drac.pl b/fence/agents/drac/fence_drac.pl index 7b8f51e..3f3bb76 100755 --- a/fence/agents/drac/fence_drac.pl +++ b/fence/agents/drac/fence_drac.pl @@ -30,6 +30,15 @@ use Getopt::Std; use Net::Telnet (); +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///; diff --git a/fence/agents/drac/fence_drac5.py b/fence/agents/drac/fence_drac5.py index cdea52c..57f94b3 100755 --- a/fence/agents/drac/fence_drac5.py +++ b/fence/agents/drac/fence_drac5.py @@ -63,6 +63,8 @@ def main(): "action", "ipaddr", "login", "passwd", "passwd_script", "cmd_prompt", "secure", "drac_version", "module_name" ] + atexit.register(atexit_handler) + options = check_input(device_opt, process_input(device_opt)) ## diff --git a/fence/agents/egenera/fence_egenera.pl b/fence/agents/egenera/fence_egenera.pl index b65ad3e..b516ceb 100755 --- a/fence/agents/egenera/fence_egenera.pl +++ b/fence/agents/egenera/fence_egenera.pl @@ -16,6 +16,15 @@ use Getopt::Std; use IPC::Open3; +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # WARNING!! Do not add code bewteen "#BEGIN_VERSION_GENERATION" and # "#END_VERSION_GENERATION" It is generated by the Makefile diff --git a/fence/agents/eps/fence_eps.py b/fence/agents/eps/fence_eps.py index 69068b1..19310b9 100644 --- a/fence/agents/eps/fence_eps.py +++ b/fence/agents/eps/fence_eps.py @@ -94,6 +94,8 @@ def main(): "action", "ipaddr", "login", "passwd", "passwd_script", "test", "port", "hidden_page", "no_login", "no_password" ] + atexit.register(atexit_handler) + eps_define_new_opts() options = check_input(device_opt,process_input(device_opt)) diff --git a/fence/agents/ibmblade/fence_ibmblade.pl b/fence/agents/ibmblade/fence_ibmblade.pl index 9d75229..bc1efc8 100755 --- a/fence/agents/ibmblade/fence_ibmblade.pl +++ b/fence/agents/ibmblade/fence_ibmblade.pl @@ -16,6 +16,15 @@ use Getopt::Std; use Net::SNMP; +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///; diff --git a/fence/agents/ilo/fence_ilo.py b/fence/agents/ilo/fence_ilo.py index 6513e2a..e3652bf 100755 --- a/fence/agents/ilo/fence_ilo.py +++ b/fence/agents/ilo/fence_ilo.py @@ -59,6 +59,8 @@ def main(): "action", "ipaddr", "login", "passwd", "passwd_script", "ssl", "ribcl" ] + atexit.register(atexit_handler) + options = check_input(device_opt, process_input(device_opt)) options["-z"] = 1 diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py index 59133a6..809c2e2 100644 --- a/fence/agents/lib/fencing.py.py +++ b/fence/agents/lib/fencing.py.py @@ -7,6 +7,7 @@ import sys, getopt, time, os import pexpect, re import telnetlib +import atexit ## do not add code here. #BEGIN_VERSION_GENERATION @@ -199,6 +200,14 @@ class fspawn(pexpect.spawn): options["debug_fh"].write(self.before + self.after) return result +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 version(command, release, build_date, copyright_notice): print command, " ", release, " ", build_date if len(copyright_notice) > 0: diff --git a/fence/agents/lpar/fence_lpar.py b/fence/agents/lpar/fence_lpar.py index 4c6f997..11b0826 100755 --- a/fence/agents/lpar/fence_lpar.py +++ b/fence/agents/lpar/fence_lpar.py @@ -90,6 +90,8 @@ def main(): "action", "ipaddr", "login", "passwd", "passwd_script", "secure", "partition", "managed", "hmc_version", "cmd_prompt" ] + atexit.register(atexit_handler) + options = check_input(device_opt, process_input(device_opt)) ## diff --git a/fence/agents/mcdata/fence_mcdata.pl b/fence/agents/mcdata/fence_mcdata.pl index 6f3c9ef..fb231f0 100755 --- a/fence/agents/mcdata/fence_mcdata.pl +++ b/fence/agents/mcdata/fence_mcdata.pl @@ -23,6 +23,15 @@ use Getopt::Std; use Net::Telnet (); +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///; diff --git a/fence/agents/rsa/fence_rsa.py b/fence/agents/rsa/fence_rsa.py index dab51c1..51feb8a 100755 --- a/fence/agents/rsa/fence_rsa.py +++ b/fence/agents/rsa/fence_rsa.py @@ -43,6 +43,8 @@ def main(): "action", "ipaddr", "login", "passwd", "passwd_script", "cmd_prompt", "secure" ] + atexit.register(atexit_handler) + options = check_input(device_opt, process_input(device_opt)) ## diff --git a/fence/agents/sanbox2/fence_sanbox2.pl b/fence/agents/sanbox2/fence_sanbox2.pl index d407cf2..b93f8da 100644 --- a/fence/agents/sanbox2/fence_sanbox2.pl +++ b/fence/agents/sanbox2/fence_sanbox2.pl @@ -16,6 +16,15 @@ use Getopt::Std; use Net::Telnet (); +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///; diff --git a/fence/agents/scsi/fence_scsi.pl b/fence/agents/scsi/fence_scsi.pl index 62454c7..fb68ff6 100755 --- a/fence/agents/scsi/fence_scsi.pl +++ b/fence/agents/scsi/fence_scsi.pl @@ -5,6 +5,15 @@ use XML::LibXML; use IPC::Open3; use POSIX; +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + my @device_list; $_ = $0; diff --git a/fence/agents/virsh/fence_virsh.py b/fence/agents/virsh/fence_virsh.py index c5eb935..f623ac7 100644 --- a/fence/agents/virsh/fence_virsh.py +++ b/fence/agents/virsh/fence_virsh.py @@ -65,6 +65,8 @@ def main(): "action", "ipaddr", "login", "passwd", "passwd_script", "secure", "identity_file", "test", "port" ] + atexit.register(atexit_handler) + options = check_input(device_opt, process_input(device_opt)) ## Defaults for fence agent diff --git a/fence/agents/vixel/fence_vixel.pl b/fence/agents/vixel/fence_vixel.pl index f02e654..d4af394 100755 --- a/fence/agents/vixel/fence_vixel.pl +++ b/fence/agents/vixel/fence_vixel.pl @@ -16,6 +16,15 @@ use Getopt::Std; use Net::Telnet (); +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///; diff --git a/fence/agents/vmware/fence_vmware.py b/fence/agents/vmware/fence_vmware.py index 1aa0a1e..a20c51b 100755 --- a/fence/agents/vmware/fence_vmware.py +++ b/fence/agents/vmware/fence_vmware.py @@ -83,6 +83,8 @@ def main(): "secure", "identity_file", "test" , "vmipaddr", "vmlogin", "vmpasswd", "port", "vmpasswd_script" ] + atexit.register(atexit_handler) + options = check_input(device_opt, process_input(device_opt)) ## diff --git a/fence/agents/wti/fence_wti.py b/fence/agents/wti/fence_wti.py index e20a16c..4aec6bc 100755 --- a/fence/agents/wti/fence_wti.py +++ b/fence/agents/wti/fence_wti.py @@ -71,6 +71,8 @@ def main(): "cmd_prompt", "secure", "port", "no_login", "no_password", "test" ] + atexit.register(atexit_handler) + options = check_input(device_opt, process_input(device_opt)) ## diff --git a/fence/agents/xcat/fence_xcat.pl b/fence/agents/xcat/fence_xcat.pl index 86af5e9..31168bb 100755 --- a/fence/agents/xcat/fence_xcat.pl +++ b/fence/agents/xcat/fence_xcat.pl @@ -11,6 +11,15 @@ use Getopt::Std; +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///; diff --git a/fence/agents/zvm/fence_zvm.pl b/fence/agents/zvm/fence_zvm.pl index a5ee0d0..ec3adc1 100755 --- a/fence/agents/zvm/fence_zvm.pl +++ b/fence/agents/zvm/fence_zvm.pl @@ -16,6 +16,15 @@ use Getopt::Std; use IPC::Open2; +my $ME = $0; + +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + # Get the program name from $0 and strip directory names $_=$0; s/.*\///;