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):