Bug 2218 - la mise à jour de simpatix51 a échoué (ClusterConfigurator)

- Correction : bug introduit récemment lors du refactoring
This commit is contained in:
Guillaume Raffy 2018-04-12 14:27:41 +00:00
parent 7e8edeab20
commit 05d21bc427
1 changed files with 92 additions and 58 deletions

48
Util.py
View File

@ -1,12 +1,14 @@
import time
import subprocess
import StringIO
# import StringIO
import re
from wol import *
import os
import signal
# from wol import *
# import os
# import signal
import smtplib
from email.MIMEText import MIMEText
from HTMLParser import HTMLParser
def sendTextMail(strFrom, to, strSubject, text):
# from = "SimpaCluster <guillaume.raffy@univ-rennes1.fr>"
@ -20,10 +22,12 @@ def sendTextMail(strFrom, to, strSubject, text ):
smtp.sendmail(strFrom, [to], mail.as_string())
smtp.close()
class Error(Exception):
def __init__(self, strMessage):
self.m_strMessage = strMessage
def getHostName():
(returnCode, stdout, stderr) = executeProgram(['hostname', '-s'])
if returnCode != 0:
@ -31,11 +35,12 @@ def getHostName():
strHostName = re.sub(r"\n", "", stdout)
return strHostName
def log(message):
print time.asctime(time.localtime()) + ' : ' + message
def executeProgram( astrArguments ):
def executeProgram(astrArguments):
# log('executeProgram : program [%s]' % (','.join(astrArguments)))
popen = subprocess.Popen( astrArguments, bufsize=1, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # bufsize=1 seems to prevent deadlocks that happen 50% the time
stdout, stderr = popen.communicate()
@ -45,6 +50,7 @@ def executeProgram( astrArguments ):
# os.kill(popen.pid, signal.SIGTERM)
return result
def executeCommand(command):
"""
executes the shell command such as 'set x=1; myprog $x'
@ -57,10 +63,37 @@ def executeCommand( command ):
return result
def executeCommandOn(strTargetMachineName, strCommand):
"""
execute command on a local or remote machine (using ssh then)
"""
# print("comparing %s and %s" % (Lib.Util.getHostName(), strTargetMachineName))
if getHostName() == strTargetMachineName:
return executeCommand(strCommand)
else:
return executeProgram(['ssh', strTargetMachineName, "%s" % strCommand])
def getUpsStatus():
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.TokenList = []
def handle_data( self, data):
data = data.strip()
if data and len(data) > 0:
self.TokenList.append(data)
# print data
def GetTokenList(self):
return self.TokenList
import urllib2
try:
url = 'http://Net Vision:public@129.20.27.119/PageMonComprehensive.html'
f = urllib.urlopen(url)
f = urllib2.urlopen(url)
res = f.read()
f.close()
except:
@ -68,9 +101,10 @@ def getUpsStatus():
return
h = MyHTMLParser()
h.feed(res)
tokensList = h.GetTokenList()
tokensList = h.GetTokenList() # @UnusedVariable
if __name__ == '__main__':
from SimpaDbUtil import wakeUp
"""
for i in range(30):
machineName = 'simpatix%d' % (i+10)