+ def cancel_shutdown(self):
+ self.success = False
+ self._finished()
+
+ def _stop_if_window_closed(orig_func):
+ @functools.wraps(orig_func)
+ def wrapper(self, *args, **kwargs):
+ if not self._monitor.shutdown_eligible().get():
+ self._logger.info(
+ "Cloud node %s shutdown cancelled - no longer eligible.",
+ self.cloud_node.id)
+ self._later.cancel_shutdown()
+ return None
+ else:
+ return orig_func(self, *args, **kwargs)
+ return wrapper
+
+ @_stop_if_window_closed