def check_attribut2(doc, service, etatnoeud_IHM): a = 0 new_nodeset = NodeSet() for i in range(0, len(service)): ok = 0 name = service[i] if (doc[i].get(name).has_key("state") == False): print("/!\\ attribut \"state\" manquant pour %d: %s /!\\" % (i, name)) QMessageBox.about( etatnoeud_IHM, u"Erreur", "/!\\ attribut \"state\" manquant pour %d: %s /!\\" % (i + 1, name)) return (False) if not (doc[i].get(name).get("state") in ['start', 'stop', 'status', 'reload']): print( "/!\\ attribut \"state\" doit être [start/stop/status/reload] pour %d: %s /!\\" % (i, name)) QMessageBox.about( etatnoeud_IHM, u"Erreur", "/!\\ attribut \"state\" doit être [start/stop/status/reload] pour %d: %s /!\\" % (i + 1, name)) return (False) if (doc[i].get(name).has_key("nodes") == False or doc[i].get(name).get("nodes") == None): print("/!\\ attribut \"nodes\" manquant pour %d: %s /!\\" % (i, name)) QMessageBox.about( etatnoeud_IHM, u"Erreur", "/!\\ attribut \"nodes\" manquant pour %d: %s /!\\" % (i + 1, name)) return (False) try: # vérifie les erreurs de syntaxe pour les node nodeset = NodeSet(doc[i].get(name).get("nodes")) new_nodeset.update(nodeset) ok = 1 except: QMessageBox.about( etatnoeud_IHM, u"Erreur", "/!\\ Problème avec la syntaxe de \"%s\" pour %d: %s /!\\" % (doc[i].get(name).get("nodes"), i, name)) print("/!\\ Problème avec la syntaxe de \"%s\" pour %d: %s /!\\" % (doc[i].get(name).get("nodes"), i + 1, name)) print("\n") return (False) if (ok == 1): check_etat_noeud2(etatnoeud_IHM, new_nodeset) return (True)
def main(): if len(sys.argv) <= 3: print "Veuillez entrer des paramètres (./script.py node[1-3] cron stop)" else: if ((len(sys.argv) % 2) == 0): try: # vérifie les erreurs de syntaxe pour les nodes nodeset = NodeSet(sys.argv[1]) except: print("Erreur: Problème avec la syntaxe \"%s\"" % sys.argv[1]) return for i in range(2, len(sys.argv)): if i % 2 == 0: # pour chaque chiffre pair if (sys.argv[i + 1] == 'start' or 'stop' or 'status' or 'restart' or 'reload'): task = task_self() cli = "service %s %s" % (sys.argv[i], sys.argv[i + 1]) task.shell(cli, nodes=sys.argv[1]) task.run() for output, nodelist in task.iter_buffers(): print '' print '%s: %s' % (NodeSet.fromlist(nodelist), output) else: print( "Erreur: Veuillez vérifier que la commande soit compris dans [start,stop,status,restart,reload]" ) else: print("Erreur: Veuillez vérifier le nombre de paramètres")
def check_attribut(doc, service): for i in range( 0, len(service)): # vérification des attributs de chaque service name = service[i] if (doc[i].get(name).has_key("state") == False): print("/!\\ attribut \"state\" manquant pour %d: %s /!\\" % (i, name)) return (False) if not (doc[i].get(name).get("state") in ['start', 'stop', 'status', 'reload', 'restart']): print( "/!\\ attribut \"state\" doit être [start/stop/status/reload] pour %d: %s /!\\" % (i, name)) return (False) if (doc[i].get(name).has_key("nodes") == False or doc[i].get(name).get("nodes") == None): print("/!\\ attribut \"nodes\" manquant pour %d: %s /!\\" % (i, name)) return (False) try: # vérifie les erreurs de syntaxe pour les nodes nodeset = NodeSet(doc[i].get(name).get("nodes")) except: print("/!\\ Problème avec la syntaxe de \"%s\" pour %d: %s /!\\" % (doc[i].get(name).get("nodes"), i, name)) print("\n") return (False) return (True)
def run_task(cmd): task = task_self() for node in NodeSet('@pbsadmin'): task.run(cmd, nodes=node, timeout=60) for output, nodelist in task.iter_buffers(): if str(NodeSet.fromlist(nodelist)) == node: return str(output) return None
def __init__(self, hostname, nids, hdlr=None): assert isinstance(nids, list) self.nids = nids self.hostname = NodeSet(hostname) self.modules = dict() self.action_enabled = True self.hdlr = hdlr or EventHandler() self._running_actions = []
def check_etat_noeud(): etatnoeud_IHM.listWidget.clear() etatnoeud_IHM.listWidget_2.clear() etatnoeud_IHM.listWidget_3.clear() i = 1 msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setWindowTitle("Erreur") noeuds = etatnoeud_IHM.lineEdit.text() print "noeuds %s" % noeuds if (noeuds != ""): try: nodeset = NodeSet(str(noeuds)) print nodeset for node in nodeset: cli = "echo Hello" taske = task_self() taske.shell(cli, nodes=node) taske.run() for output, nodelist in task_self().iter_buffers(): if (output == "Hello"): etatnoeud_IHM.listWidget.insertItem( i, u"%s" % (NodeSet.fromlist(nodelist))) i = i + 1 else: etatnoeud_IHM.listWidget_2.insertItem( i, u"%s" % (NodeSet.fromlist(nodelist))) i = i + 1 etatnoeud_IHM.sortie.append(output) print "output: %s" % output except: msg.setText("Oups ! Probleme") msg.exec_() else: msg.setText("Veuillez rentrer un ou plusieur noeuds") msg.setDetailedText( "node1,node2\nnode[1-5]\nnode1,node[5-6]\netc...") msg.exec_()
def run_task(cmd): """ run task on pbs server node """ task = task_self() for node in NodeSet('@pbsadmin'): """ run on pbs nodes until it works """ #print (cmd, node) task.run(cmd, nodes=node, timeout=60) #print 'node: %s error: %s' % (node, task.node_error(node)) vlog( 4, '%s timeouts:%s Error=%s' % (node, task.num_timeout(), task.node_error(node))) for output, nodelist in task.iter_buffers(): #print 'nodelist:%s' % NodeSet.fromlist(nodelist) if str(NodeSet.fromlist(nodelist)) == node: return str(output) #print '%s: %s' % (NodeSet.fromlist(nodelist), output) return None
def clustershell(clustershell_IHM, service, i): task = task_self() name = str(service[i].nom) name_split = name.split(",") state = str(service[i].action) nodes = str(service[i].noeuds) test_depend, result = check_depend(clustershell_IHM, service, name, i) if (test_depend == True): for n in range(0, len(name_split)): out = "" output = "" cli = "service %s %s" % (name_split[n], state) task.shell(cli, nodes=nodes) task.run() nodeset = NodeSet(nodes) for output, nodelist in task.iter_buffers(): print("FAIL %s: %s %s" % (name_split[n], NodeSet.fromlist(nodelist), output)) clustershell_IHM.listWidget.addItem( u"FAIL %s: %s %s" % (name_split[n], NodeSet.fromlist(nodelist), output)) nodeset.remove(NodeSet.fromlist(nodelist)) clustershell_IHM.list_recap.append( recap_cluster(name, name_split[n], NodeSet.fromlist(nodelist), 0, 2, output)) if (str(nodeset) != nodes): if (len(nodeset) > 0): print("OK %s: %s" % (name_split[n], nodeset)) clustershell_IHM.listWidget.addItem( u"OK %s: %s" % (name_split[n], nodeset)) clustershell_IHM.list_recap.append( recap_cluster(name, name_split[n], nodeset, 1)) if (str(nodeset) == nodes): print("OK %s: %s" % (name_split[n], nodes)) clustershell_IHM.listWidget.addItem(u"OK %s: %s" % (name_split[n], nodes)) clustershell_IHM.list_recap.append( recap_cluster(name, name_split[n], nodes, 1))
def on_click_add_service(): ok = 0 if (configuration_IHM.lineEdit.text() != ""): name = configuration_IHM.lineEdit.text() dependance = configuration_IHM.lineEdit_3.text() action = configuration_IHM.comboBox.currentText() if (configuration_IHM.lineEdit_2.text() != ""): try: noeuds = configuration_IHM.lineEdit_2.text() nodeset = NodeSet(str(noeuds)) ok = 1 except: noeuds = "" QMessageBox.about(configuration_IHM, "Erreur", "Syntaxe noeuds incorrect") if (ok == 1 and name != "" and noeuds != "" and dependance != ""): configuration_IHM.listWidget.addItem( u"%d: %s %s ON %s (depend %s)" % (configuration_IHM.listWidget.count() + 1, name, action, noeuds, dependance)) clustershell_IHM.list_service.append( typeservice(name, action, noeuds, dependance)) print("c'est cool") if (ok == 1 and name != "" and noeuds != "" and dependance == ""): configuration_IHM.listWidget.addItem( u"%d: %s %s ON %s" % (configuration_IHM.listWidget.count() + 1, name, action, noeuds)) clustershell_IHM.list_service.append( typeservice(name, action, noeuds)) else: QMessageBox.about(configuration_IHM, "Erreur", "Attribut noeuds manquant") else: QMessageBox.about(configuration_IHM, "Erreur", "Attribut service manquant")
def check_attribut(doc, service, clustershell_IHM, configuration_IHM): for i in range(0, len(service)): ok = 0 name = service[i] if (doc[i].get(name).has_key("state") == False): print("/!\\ attribut \"state\" manquant pour %d: %s /!\\" % (i, name)) QMessageBox.about( configuration_IHM, u"Erreur", "/!\\ attribut \"state\" manquant pour %d: %s /!\\" % (i + 1, name)) return (False) if not (doc[i].get(name).get("state") in ['start', 'stop', 'status', 'reload']): print( "/!\\ attribut \"state\" doit être [start/stop/status/reload] pour %d: %s /!\\" % (i, name)) QMessageBox.about( configuration_IHM, u"Erreur", "/!\\ attribut \"state\" doit être [start/stop/status/reload] pour %d: %s /!\\" % (i + 1, name)) return (False) if (doc[i].get(name).has_key("nodes") == False or doc[i].get(name).get("nodes") == None): print("/!\\ attribut \"nodes\" manquant pour %d: %s /!\\" % (i, name)) QMessageBox.about( configuration_IHM, u"Erreur", "/!\\ attribut \"nodes\" manquant pour %d: %s /!\\" % (i + 1, name)) return (False) try: # vérifie les erreurs de syntaxe pour les node nodeset = NodeSet(doc[i].get(name).get("nodes")) ok = 1 except: QMessageBox.about( configuration_IHM, u"Erreur", "/!\\ Problème avec la syntaxe de \"%s\" pour %d: %s /!\\" % (doc[i].get(name).get("nodes"), i, name)) print("/!\\ Problème avec la syntaxe de \"%s\" pour %d: %s /!\\" % (doc[i].get(name).get("nodes"), i + 1, name)) print("\n") return (False) if (ok == 1): for i in range(0, len(service)): name = service[i] action = doc[i].get(name).get("state") noeuds = doc[i].get(name).get("nodes") if (doc[i].get(name).get("depend") != None): dependance = doc[i].get(name).get("depend") print dependance configuration_IHM.listWidget.addItem( u"%d: %s %s ON %s (depend %s)" % (configuration_IHM.listWidget.count() + 1, name, action, str(nodeset), dependance)) clustershell_IHM.list_service.append( typeservice(name, action, noeuds, dependance)) else: configuration_IHM.listWidget.addItem( u"%d: %s %s ON %s" % (configuration_IHM.listWidget.count() + 1, name, action, str(nodeset))) clustershell_IHM.list_service.append( typeservice(name, action, noeuds)) return (True)