git://git.onelab.eu
/
nodemanager.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1b4f53e
)
first stab at reimaging slivers when created under the wrong slicefamily
author
Thierry Parmentelat
<thierry.parmentelat@inria.fr>
Fri, 19 Jun 2015 14:45:03 +0000
(16:45 +0200)
committer
Thierry Parmentelat
<thierry.parmentelat@inria.fr>
Fri, 19 Jun 2015 14:45:03 +0000
(16:45 +0200)
account.py
patch
|
blob
|
history
diff --git
a/account.py
b/account.py
index
4d74a1b
..
61d3624
100644
(file)
--- a/
account.py
+++ b/
account.py
@@
-138,6
+138,21
@@
class Account:
pass
def is_running(self):
pass
pass
def is_running(self):
pass
+ def needs_reimage(self, target_slicefamily):
+ stampname = "/vservers/{}/etc/slicefamily".format(self.name)
+ try:
+ with open(stampname) as f:
+ current_slicefamily = f.read().strip()
+ if current_slicefamily != target_slicefamily:
+ logger.info("slice {} : new slice family - would require reimaging"
+ .format(self.name))
+ return True
+ else:
+ return False
+ except IOError as e:
+ logger.verbose("Missing slicefamily {} - considered OK"
+ .format(self.name))
+ return False
### this used to be a plain method but because it needs to be invoked by destroy
# which is a static method, they need to become static as well
### this used to be a plain method but because it needs to be invoked by destroy
# which is a static method, they need to become static as well
@@
-223,7
+238,7
@@
class Worker:
# xxx it's not clear what to do when a sliver changes type/class
# in a reservable node
else:
# xxx it's not clear what to do when a sliver changes type/class
# in a reservable node
else:
- if not self.is_running() or next_class != curr_class:
+ if not self.is_running() or
self.needs_reimage(ref['vref']) or
next_class != curr_class:
self.start(rec)
else:
self.configure(rec)
self.start(rec)
else:
self.configure(rec)
@@
-243,13
+258,22
@@
class Worker:
self._acct.stop()
def is_running(self):
self._acct.stop()
def is_running(self):
- if
(self._acct != None)
and self._acct.is_running():
-
status =
True
+ if
self._acct
and self._acct.is_running():
+
return
True
else:
else:
- status = False
- logger.verbose("account: Worker({}): is not running".format(self.name))
- return status
-
+ logger.verbose("Worker.is_running ({}) - no account or not running".format(self.name))
+ return False
+
+ def needs_reimage(self, target_slicefamily):
+ if not self._acct:
+ logger.verbose("Worker.needs_reimage ({}) - no account".format(self.name))
+ return True
+ elif self._acct.needs_reimage(target_slicefamily):
+ logger.info("Worker.needs_reimage ({}) - account needs reimage (tmp: DRY RUN)".format(self.name))
+ return False
+ else:
+ return False
+
def _destroy(self, curr_class):
self._acct = None
if curr_class:
def _destroy(self, curr_class):
self._acct = None
if curr_class: