Commit f49834d1 by Őry Máté

dashboard: highlight preferred operations

based on instance status
parent f816770a
......@@ -2,10 +2,20 @@
{% for op in ops %}
{% if op.show_in_toolbar %}
<a href="{{op.get_url}}" class="operation operation-{{op.op}} btn btn-default btn-xs"
title="{{op.name}}: {{op.description}}">
{% if op.disabled %}
<span class="operation operation-{{op.op}} btn btn-{{op.effect}} 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}}">
{% endif %}
<i class="icon-{{op.icon}}"></i>
<span class="sr-only">{{op.name}}</span>
<span{% if not op.is_preferred %} class="sr-only"{% endif %}>{{op.name}}</span>
{% if op.disabled %}
</span>
{% else %}
</a>
{% endif %}
{% endif %}
{% endfor %}
......@@ -534,6 +534,9 @@ class OperationView(DetailView):
def description(self):
return self.get_op().description
def is_preferred(self):
return self.get_op().is_preferred()
@classmethod
def get_urlname(cls):
return 'dashboard.vm.op.%s' % cls.op
......
......@@ -75,6 +75,11 @@ class InstanceOperation(Operation):
code_suffix=self.activity_code_suffix, instance=self.instance,
user=user)
def is_preferred(self):
"""If this is the recommended op in the current state of the instance.
"""
return False
class AddInterfaceOperation(InstanceOperation):
activity_code_suffix = 'add_interface'
......@@ -154,6 +159,10 @@ class DeployOperation(InstanceOperation):
name = _("deploy")
description = _("Deploy new virtual machine with network.")
def is_preferred(self):
return self.instance.status in (self.instance.STATUS.STOPPED,
self.instance.STATUS.ERROR)
def on_commit(self, activity):
activity.resultant_state = 'RUNNING'
......@@ -337,6 +346,10 @@ class SaveAsTemplateOperation(InstanceOperation):
""")
abortable = True
def is_preferred(self):
return (self.instance.is_base and
self.instance.status == self.instance.STATUS.RUNNING)
@staticmethod
def _rename(name):
m = search(r" v(\d+)$", name)
......@@ -472,6 +485,10 @@ class SleepOperation(InstanceOperation):
name = _("sleep")
description = _("Suspend virtual machine with memory dump.")
def is_preferred(self):
return (not self.instance.is_base and
self.instance.status == self.instance.STATUS.RUNNING)
def check_precond(self):
super(SleepOperation, self).check_precond()
if self.instance.status not in ['RUNNING']:
......@@ -511,6 +528,10 @@ class WakeUpOperation(InstanceOperation):
Power on Virtual Machine and load its memory from dump.
""")
def is_preferred(self):
return (self.instance.is_base and
self.instance.status == self.instance.STATUS.SUSPENDED)
def check_precond(self):
super(WakeUpOperation, self).check_precond()
if self.instance.status not in ['SUSPENDED']:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment