示例#1
0
 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))
示例#2
0
    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)
示例#3
0
 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.")
示例#4
0
    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")
示例#5
0
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):