def nodeIsOn(self, node): """\brief Checks if given node is on. \param nodeInstance - Instance of node to check \return result - 0 = off, 1 = on, -1 = unknown/unsupported XXX TODO: Use powerd for query, removing dependance on having a ref to henmanager XXX Small leaking here, as powerSilent creates node instances... """ self.__powerStatusCallbackEvent.clear() p = Protocol(None) if DaemonStatus().powerDaemonIsOnline(5): p.open(DaemonLocations.switchDaemon[0], \ DaemonLocations.switchDaemon[1]) p.sendRequest("get_power_status", node.getNodeID(), \ self.powerStatusHandler) p.readAndProcess() self.__powerStatusCallbackEvent.wait(POWER_STATUS_TIMEOUT) try: pnodeid = node.getPowerNodeID() if (pnodeid == "None" or pnodeid == "none"): return -1 if self.__powerResults: (st, msg) = (0, self.__powerResults) else: (st,msg) = self.__hen_manager.powerSilent(node.getNodeID(), \ "status", pnodeid) if (st == 0 and msg == "on"): return 1 if (st == 0 and msg == "off"): return 0 except Exception, e: log.debug("nodeIsOn Exception: %s" % str(e))
def addSocket(self,sock): """\brief Accepts a new customer \param socket (\c socket) The opened socket """ self.sock_list.append(sock) prot = Protocol(sock, self.__useSSL) for i in self.__handlers: prot.registerMethodHandler(i,self.__handlers[i]) self.protocol_list.append(prot)
def runChecker(self): log.debug("runChecker() called.") log.debug("Acquiring checker lock.") self.__checker_lock.acquire() p = Protocol(None) if DaemonStatus().monitorDaemonIsOnline(5): p.open(MONITORD_HOST, MONITORD_PORT) p.sendRequest("get_currentsensorreadings", "", self.nodeStatusHandler) p.readAndProcess() else: log.info("Monitor Daemon is not online!") # TODO: Email self.__checker_lock.release() log.debug("Released checker lock.")
def __init__(self, useSSL=True): Daemon.__init__(self, useSSL) self.__MIN_ID = 100000 self.__MAX_ID = 100000000 self.__SESSION_TIMEOUT_HOURS = 48 self.__loggedInUsers = {} self.__reverseLoggedInUsers = {} self.__userProtocols = {} self.__systemProtocol = Protocol(None) self.__controlProtocol = Protocol(None) try: self.__systemProtocol.open(DaemonLocations.systemDaemon[0], DaemonLocations.systemDaemon[1]) except: print "warning, could not connect to system daemon" try: self.__controlProtocol.open(DaemonLocations.controlDaemon[0], DaemonLocations.controlDaemon[1]) except: print "warning, could not connect to control daemon" self.registerMethodHandler("login", self.login) self.registerMethodHandler("logout", self.logout) self.registerMethodHandler("system", self.systemOperation) self.registerMethodHandler("control", self.controlOperation) self.__consoleOperationReply = None self.__controlOperationReply = None self.__systemOperationReply = None self.__ldapClient = LDAPClient("ldap://henldap:389")
import logging import os.path import pickle from stat import * from auxiliary.daemonlocations import DaemonLocations from auxiliary.protocol import Protocol import datetime powerdaemon = Protocol(None) powerdaemon.open(DaemonLocations.powerDaemon[0], DaemonLocations.powerDaemon[1]) version = powerdaemon.doSynchronousCall("get_config_version", "") print "Version is " + str(version[0][2]) tics = os.stat('/usr/local/hen/etc/physical/topology.xml')[ST_MTIME] t = datetime.datetime.fromtimestamp(tics) lastAccess = str(t.strftime('%Y-%m-%d')) print "Last access time is " + lastAccess if (str(lastAccess) != str(version[0][2])): print "Setting new config" from henmanager import HenManager hm = HenManager() payload = lastAccess + "," + pickle.dumps(hm.getNodes("all")) print "Result is:" + str( powerdaemon.doSynchronousCall("set_config", payload)) def addLink(tag, action, old, new): print "AddLink got " + tag, action, old, new def removeLink(tag, action, old, new):