blob: f846764ba9ac013b814afc48f614377a64899258 [file] [log] [blame]
#!/usr/bin/python
# Copyright 2015 The Chromium OS Authors. All rights reserved.
"""Utilities for locking machines."""
import os
import sys
import time
import afe_lock_machine
import file_lock_machine
import logger
def AcquireLock(machines, chromeos_root, timeout=1200):
"""Acquire lock for machine(s) with timeout, using AFE server for locking."""
start_time = time.time()
locked = True
sleep_time = min(10, timeout/10.0)
while True:
try:
afe_lock_machine.AFELockManager(machines, False, chromeos_root,
None).UpdateMachines(True)
break
except Exception as e:
if time.time() - start_time > timeout:
locked = False
logger.GetLogger().LogWarning(
"Could not acquire lock on this machine: {0} within {1} seconds. %s"
.format(repr(machines), timeout, str(e)))
break
time.sleep(sleep_time)
return locked
def ReleaseLock(machines, chromeos_root):
"""Release locked machine(s), using AFE server for locking."""
unlocked = True
try:
afe_lock_machine.AFELockManager(machines, False, chromeos_root,
None).UpdateMachines(False)
except Exception as e:
unlocked = False
logger.GetLogger().LogWarning("Could not unlock %s. %s" %
(repr(machines), str(e)))
return unlocked