aboutsummaryrefslogtreecommitdiff
path: root/deprecated/automation/server/machine_manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/automation/server/machine_manager.py')
-rw-r--r--deprecated/automation/server/machine_manager.py77
1 files changed, 0 insertions, 77 deletions
diff --git a/deprecated/automation/server/machine_manager.py b/deprecated/automation/server/machine_manager.py
deleted file mode 100644
index b7186077..00000000
--- a/deprecated/automation/server/machine_manager.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright 2010 Google Inc. All Rights Reserved.
-
-__author__ = 'asharif@google.com (Ahmad Sharif)'
-
-from operator import attrgetter
-import copy
-import csv
-import threading
-import os.path
-
-from automation.common import machine
-
-DEFAULT_MACHINES_FILE = os.path.join(os.path.dirname(__file__), 'test_pool.csv')
-
-
-class MachineManager(object):
- """Container for list of machines one can run jobs on."""
-
- @classmethod
- def FromMachineListFile(cls, filename):
- # Read the file and skip header
- csv_file = csv.reader(open(filename, 'rb'), delimiter=',', quotechar='"')
- csv_file.next()
-
- return cls([machine.Machine(hostname, label, cpu, int(cores), os, user)
- for hostname, label, cpu, cores, os, user in csv_file])
-
- def __init__(self, machines):
- self._machine_pool = machines
- self._lock = threading.RLock()
-
- def _GetMachine(self, mach_spec):
- available_pool = [m for m in self._machine_pool if mach_spec.IsMatch(m)]
-
- if available_pool:
- # find a machine with minimum uses
- uses = attrgetter('uses')
-
- mach = min(available_pool, key=uses)
-
- if mach_spec.preferred_machines:
- preferred_pool = [m
- for m in available_pool
- if m.hostname in mach_spec.preferred_machines]
- if preferred_pool:
- mach = min(preferred_pool, key=uses)
-
- mach.Acquire(mach_spec.lock_required)
-
- return mach
-
- def GetMachines(self, required_machines):
- """Acquire machines for use by a job."""
-
- with self._lock:
- acquired_machines = [self._GetMachine(ms) for ms in required_machines]
-
- if not all(acquired_machines):
- # Roll back acquires
- while acquired_machines:
- mach = acquired_machines.pop()
- if mach:
- mach.Release()
-
- return acquired_machines
-
- def GetMachineList(self):
- with self._lock:
- return copy.deepcopy(self._machine_pool)
-
- def ReturnMachines(self, machines):
- with self._lock:
- for m in machines:
- m.Release()
-
- def __str__(self):
- return str(self._machine_pool)