Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1771)

Unified Diff: scripts/common/slave_alloc.py

Issue 1393893004: Add `slave_alloc_update` tool. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: scripts/common/slave_alloc.py
diff --git a/scripts/common/slave_alloc.py b/scripts/common/slave_alloc.py
index 84487ef7a5124640065fce45d76f436cf0618d96..a2f830e67ed3975991c356f3ecb17a51923b7383 100644
--- a/scripts/common/slave_alloc.py
+++ b/scripts/common/slave_alloc.py
@@ -74,14 +74,29 @@ class SlaveAllocator(object):
# The default path to load/save state to, if none is specified.
DEFAULT_STATE_PATH = 'slave_pool.json'
- def __init__(self):
- """Initializes a new slave pool instance."""
+ def __init__(self, state_path=None, list_unallocated=False):
+ """Initializes a new slave pool instance.
+
+ Args:
+ state_path (str): The path (relative or absolute) of the allocation
+ save-state JSON file. If None, DEFAULT_STATE_PATH will be used.
+ list_unallocated (bool): Include an entry listing unallocated slaves.
+ This entry will be ignored for operations, but can be useful when
+ generating expectations.
+ """
+ self._state_path = state_path
+ self._list_unallocated = list_unallocated
+
self._state = None
self._pools = {}
self._classes = {}
self._membership = {}
self._all_slaves = {}
+ @property
+ def state_path(self):
+ return self._state_path or self.DEFAULT_STATE_PATH
+
def LoadStateDict(self, state_class_map=None):
"""Loads previous allocation state from a state dictionary.
@@ -111,37 +126,27 @@ class SlaveAllocator(object):
class_map=class_map,
unallocated=None)
- def LoadState(self, path=None, enforce=True):
+ def LoadState(self, enforce=True):
"""Loads slave pools from the store, replacing the current in-memory set.
Args:
- path (str): If provided, the path to load from; otherwise,
- DEFAULT_STATE_PATH will be used.
enforce (bool): If True, raise an IOError if the state file does not
exist or a ValueError if it could not be loaded.
"""
state = {}
- path = path or self.DEFAULT_STATE_PATH
- if not os.path.exists(path):
+ if not os.path.exists(self.state_path):
if enforce:
- raise IOError("State path does not exist: %s" % (path,))
+ raise IOError("State path does not exist: %s" % (self.state_path,))
try:
- with open(path or self.DEFAULT_STATE_PATH, 'r') as fd:
+ with open(self.state_path, 'r') as fd:
state = json.load(fd)
except (IOError, ValueError):
if enforce:
raise
self.LoadStateDict(state.get('class_map'))
- def SaveState(self, path=None, list_unallocated=False):
- """Saves the current slave pool set to the store path.
-
- Args:
- path (str): The path of the state file. If None, use DEFAULT_STATE_PATH.
- list_unallocated (bool): Include an entry listing unallocated slaves.
- This entry will be ignored for operations, but can be useful when
- generating expectations.
- """
+ def SaveState(self):
+ """Saves the current slave pool set to the store path."""
state_dict = {}
if self._state and self._state.class_map:
class_map = state_dict['class_map'] = {}
@@ -150,10 +155,10 @@ class SlaveAllocator(object):
subtype_dict = class_dict.setdefault(sc.subtype, [])
subtype_dict.extend(slave_list)
- if list_unallocated:
+ if self._list_unallocated:
state_dict['unallocated'] = list(self._state.unallocated or ())
- with open(path or self.DEFAULT_STATE_PATH, 'w') as fd:
+ with open(self.state_path, 'w') as fd:
json.dump(state_dict, fd, sort_keys=True, indent=2)
def AddPool(self, name, *slaves):

Powered by Google App Engine
This is Rietveld 408576698