diff --git a/circle/dashboard/templates/dashboard/vm-detail/_operations.html b/circle/dashboard/templates/dashboard/vm-detail/_operations.html
index df492cf..7f151be 100644
--- a/circle/dashboard/templates/dashboard/vm-detail/_operations.html
+++ b/circle/dashboard/templates/dashboard/vm-detail/_operations.html
@@ -4,7 +4,7 @@
{% if op.show_in_toolbar %}
{% if op.disabled %}
-<span class="operation operation-{{op.op}} btn btn-{{op.effect}} disabled btn-xs">
+<span class="operation operation-{{op.op}} btn btn-default disabled btn-xs">
{% else %}
<a href="{{op.get_url}}" class="operation operation-{{op.op}} btn
btn-{{op.effect}} btn-xs" title="{{op.name}}: {{op.description}}">
diff --git a/circle/vm/models/node.py b/circle/vm/models/node.py
index 29c75bb..993a7c4 100644
--- a/circle/vm/models/node.py
+++ b/circle/vm/models/node.py
@@ -148,10 +148,14 @@ class Node(OperatedMixin, TimeStampedModel):
self.enabled = False
self.save()
- def enable(self, user=None):
+ def enable(self, user=None, base_activity=None):
''' Enable the node. '''
if self.enabled is not True:
- with node_activity(code_suffix='enable', node=self, user=user):
+ if base_activity:
+ act_ctx = base_activity.sub_activity('enable')
+ else:
+ act_ctx = node_activity('enable', node=self, user=user)
+ with act_ctx:
self.enabled = True
self.save()
self.get_info(invalidate_cache=True)
diff --git a/circle/vm/operations.py b/circle/vm/operations.py
index ba889ab..d80ab26 100644
--- a/circle/vm/operations.py
+++ b/circle/vm/operations.py
@@ -649,7 +649,14 @@ class FlushOperation(NodeOperation):
description = _("Disable node and move all instances to other ones.")
required_perms = ()
+ def on_abort(self, activity, error):
+ from manager.scheduler import TraitsUnsatisfiableException
+ if isinstance(error, TraitsUnsatisfiableException):
+ if self.node_enabled:
+ self.node.enable(activity.user, activity)
+
def _operation(self, activity, user):
+ self.node_enabled = self.node.enabled
self.node.disable(user, activity)
for i in self.node.instance_set.all():
with activity.sub_activity('migrate_instance_%d' % i.pk):