self._pair_nodes(record, arv_rec.arvados_node)
break
for key, record in self.cloud_nodes.orphans.iteritems():
+ if key in self.shutdowns:
+ try:
+ self.shutdowns[key].stop().get()
+ except pykka.ActorDeadError:
+ pass
+ del self.shutdowns[key]
record.actor.stop()
record.cloud_node = None
- self.shutdowns.pop(key, None)
def update_arvados_nodes(self, nodelist):
self._update_poll_time('arvados_nodes')
def _nodes_missing(self):
return sum(1 for arv_node in
pykka.get_all(rec.actor.arvados_node for rec in
- self.cloud_nodes.nodes.itervalues())
+ self.cloud_nodes.nodes.itervalues()
+ if rec.actor.cloud_node.get().id not in self.shutdowns)
if arv_node and cnode.arvados_node_missing(arv_node, self.node_stale_after))
def _nodes_wanted(self):
return len(self.last_wishlist) - up_count
def _nodes_excess(self):
- up_count = self._nodes_up() - len(self.shutdowns) - self._nodes_missing()
+ up_count = self._nodes_up() - len(self.shutdowns)
over_min = up_count - self.min_nodes
if over_min <= 0:
return over_min