Exemplo n.º 1
0
def relay_script():
    # Basic commandline interface for testing the relay module.
    def usage():
        print "Usage: %s [powercycle|status|turnon|turnoff] <hostname> <bank> <relay>" % sys.argv[
            0]
        sys.exit(1)

    if len(sys.argv) != 5:
        usage()
    cmd, hostname, bnk, rly = sys.argv[1:5]
    bnk, rly = int(bnk), int(rly)
    if cmd == 'powercycle':
        if relay.powercycle(hostname, bnk, rly, timeout=60):
            print "OK"
        else:
            print "FAILED"
            sys.exit(1)
    elif cmd == 'status':
        status = relay.get_status(hostname, bnk, rly, timeout=60)
        if status is None:
            print "FAILED"
            sys.exit(1)
        print "bank %d, relay %d status: %s" % (bnk, rly,
                                                'on' if status else 'off')
    elif cmd == 'turnon' or cmd == 'turnoff':
        status = (cmd == 'turnon')
        if relay.set_status(hostname, bnk, rly, status, timeout=60):
            print "OK"
        else:
            print "FAILED"
            sys.exit(1)
    else:
        usage()
    sys.exit(0)
 def powercycle(self, device_name):
     """
     Initiate a power-cycle for `device_name`. This will turn the device on
     if it is powered off.  Returns True on success and False on error.
     """
     hostname, bnk, rly = self.db.devices.get_relay_info(device_name)
     return relay.powercycle(hostname, bnk, rly, 30)
Exemplo n.º 3
0
def relay_script():
    # Basic commandline interface for testing the relay module.
    def usage():
        print "Usage: %s [powercycle|status|turnon|turnoff] <hostname> <bank> <relay>" % sys.argv[0]
        sys.exit(2)
    if len(sys.argv) != 5:
        usage()
    cmd, hostname, bnk, rly = sys.argv[1:5]
    bnk, rly = int(bnk), int(rly)
    if cmd == 'powercycle':
        if relay.powercycle(hostname, bnk, rly, timeout=60):
            print "OK"
        else:
            print "FAILED"
            sys.exit(1)
    elif cmd == 'status':
        status = relay.get_status(hostname, bnk, rly, timeout=60)
        if status is None:
            print "FAILED"
            sys.exit(1)
        print "bank %d, relay %d status: %s" % (bnk, rly, 'on' if status else 'off')
    elif cmd == 'turnon' or cmd == 'turnoff':
        status = (cmd == 'turnon')
        if relay.set_status(hostname, bnk, rly, status, timeout=60):
            print "OK"
        else:
            print "FAILED"
            sys.exit(1)
    else:
        usage()
    sys.exit(0)
Exemplo n.º 4
0
def start_powercycle(device_name, callback, max_time=30):
    """
    Initiate a power cycle for DEVICE_NAME.  This function returns immediately,
    and will invoke CALLBACK with a boolean success indication when the
    operation is complete.  CALLBACK will be invoked in a different thread from
    that where this function was called.

    The function guarantees to callback before MAX_TIME seconds have elapsed,
    or not call back at all.
    """
    callback_before = time.time() + max_time

    hostname, bnk, rly = data.device_relay_info(device_name)

    logs.device_logs.add(device_name, "initiating power cycle", 'bmm')
    _run_async(callback_before, callback, lambda : relay.powercycle(hostname, bnk, rly, max_time))
Exemplo n.º 5
0
def start_powercycle(device_name, callback, max_time=30):
    """
    Initiate a power cycle for DEVICE_NAME.  This function returns immediately,
    and will invoke CALLBACK with a boolean success indication when the
    operation is complete.  CALLBACK will be invoked in a different thread from
    that where this function was called.

    The function guarantees to callback before MAX_TIME seconds have elapsed,
    or not call back at all.
    """
    callback_before = time.time() + max_time

    hostname, bnk, rly = data.device_relay_info(device_name)

    logs.device_logs.add(device_name, "initiating power cycle", 'bmm')
    _run_async(callback_before, callback,
               lambda: relay.powercycle(hostname, bnk, rly, max_time))
Exemplo n.º 6
0
 def test_powercycle_timeout(self):
     self.relayboard.delay = 0.06
     self.relayboard.skip_final_1s = True
     self.assertEqual(relay.powercycle(self.relay_host, 2, 2, 0.1), False)
Exemplo n.º 7
0
 def test_powercycle(self, sleep):
     self.assertEqual(relay.powercycle(self.relay_host, 2, 2, 10), True)
     self.assertEqual(self.relayboard.actions, [('set', 'panda-off', 2, 2),
                                                ('get', 2, 2),
                                                ('set', 'panda-on', 2, 2),
                                                ('get', 2, 2)])
Exemplo n.º 8
0
 def test_powercycle_timeout(self):
     self.server.delay = 0.05
     self.assertEqual(relay.powercycle('127.0.0.1', 2, 2, 0.1), False)
Exemplo n.º 9
0
 def test_powercycle(self, sleep):
     self.assertEqual(relay.powercycle('127.0.0.1', 2, 2, 10), True)
     self.assertEqual(self.server.actions,
             [('set', 'panda-off', 2, 2), ('get', 2, 2), ('set', 'panda-on', 2, 2), ('get', 2, 2)])
Exemplo n.º 10
0
 def test_powercycle_timeout(self):
     self.relayboard.delay = 0.05
     self.assertEqual(relay.powercycle(self.relay_host, 2, 2, 0.1), False)
Exemplo n.º 11
0
 def test_powercycle(self, sleep):
     self.assertEqual(relay.powercycle(self.relay_host, 2, 2, 10), True)
     self.assertEqual(self.relayboard.actions,
             [('set', 'panda-off', 2, 2), ('get', 2, 2), ('set', 'panda-on', 2, 2), ('get', 2, 2)])
Exemplo n.º 12
0
 def test_powercycle_timeout(self):
     self.relayboard.delay = 0.06
     self.relayboard.skip_final_1s = True
     self.assertEqual(relay.powercycle(self.relay_host, 2, 2, 0.1), False)