From 5be08f1456ee467428a61288258485d6fabfe6f4 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Thu, 2 Apr 2009 19:05:52 +0000 Subject: [PATCH] add yum clean all to the routine of NodeUpdate --- NodeUpdate.py | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/NodeUpdate.py b/NodeUpdate.py index 47029c2..11742f9 100644 --- a/NodeUpdate.py +++ b/NodeUpdate.py @@ -55,7 +55,7 @@ def Message(message): print strftime(TIMEFORMAT), print message -# print out a message only if we are displaying output +# always print errors def Error(Str): print strftime(TIMEFORMAT), print Str @@ -72,6 +72,7 @@ def UpdateCronFile(): f = open( CRON_FILE, 'w' ); f.write( "# %s\n" % (TARGET_DESC) ); + ### xxx is root aliased to the support mailing list ? f.write( "MAILTO=%s\n" % (TARGET_USER) ); f.write( "SHELL=%s\n" % (TARGET_SHELL) ); f.write( "%s %s,%s * * * %s %s\n\n" % @@ -138,19 +139,19 @@ class NodeUpdate: Message( "\nChecking if yum supports SSL certificate checks" ) if os.system( "%s --help | grep -q sslcertdir" % YUM_PATH ) == 0: - Message( "Yes, using --sslcertdir option" ) + Message( "It does, using --sslcertdir option" ) sslcertdir = "--sslcertdir=" + SSL_CERT_DIR else: - Message( "No, not using --sslcertdir option" ) + Message( "Unsupported, not using --sslcertdir option" ) sslcertdir = "" yum_options="" Message( "\nChecking if yum supports --verbose" ) if os.system( "%s --help | grep -q verbose" % YUM_PATH ) == 0: - Message( "Yes, using --verbose option" ) + Message( "It does, using --verbose option" ) yum_options += " --verbose" else: - Message( "No, not using --verbose option" ) + Message( "Unsupported, not using --verbose option" ) Message( "\nUpdating PlanetLab group" ) os.system( "%s %s %s -y groupupdate \"PlanetLab\"" % @@ -179,6 +180,12 @@ class NodeUpdate: Message( "\nAt least one update requested the system be rebooted" ) self.ClearRebootFlag() os.system( "/sbin/shutdown -r now" ) + # in the case where shutdown would hang, e.g. b/c of an initscript + # leave it 10 minutes and brute-force kill + DELAY=10*60 + time.sleep(DELAY) + # bad, but not worse than a PCU-driven powercycle + os.system ("sync; sleep 1; sync; reboot") def RebuildRPMdb( self ): Message( "\nRebuilding RPM Database." ) @@ -187,6 +194,13 @@ class NodeUpdate: try: os.system( "%s --rebuilddb" % RPM_PATH ) except Exception, err: print "RebuildRPMdb: %s" % err + def YumCleanAll ( self ): + Message ("\nCleaning all yum cache (yum clean all)") + try: + os.system( "yum clean all") + except: + pass + def RemoveRPMS( self ): Message( "\nLooking for RPMs to be deleted." ) @@ -218,9 +232,10 @@ class NodeUpdate: if __name__ == "__main__": - # if we are invoked with 'start', display the output. this - # is usefull for running something under cron and as a service - # (at startup), so the cron only outputs errors and doesn't + # if we are invoked with 'start', display the output. + # this is useful for running something silently + # under cron and as a service (at startup), + # so the cron only outputs errors and doesn't # generate mail when it works correctly displayOutput= 0 @@ -231,8 +246,9 @@ if __name__ == "__main__": doReboot= 1 - if "start" in sys.argv: + if "start" in sys.argv or "display" in sys.argv: displayOutput= 1 + Message ("\nTurning on messages") if "noreboot" in sys.argv: doReboot= 0 @@ -272,6 +288,7 @@ if __name__ == "__main__": nodeupdate.RebuildRPMdb() nodeupdate.RemoveRPMS() nodeupdate.InstallKeys() + nodeupdate.YumCleanAll() nodeupdate.CheckForUpdates() Message( "\nUpdate complete." ) -- 2.43.0