Add Start/Stop server support

Change-Id: Ie962b22496e4974c2be2f131c9ff8e888dd86f60
This commit is contained in:
Zhenguo Niu 2017-05-10 13:18:39 +08:00
parent 28d3218d54
commit b05a0bc9fb
2 changed files with 83 additions and 1 deletions

View File

@ -82,6 +82,26 @@ def server_delete(request, server_id):
return server_manager.delete(server_id)
def server_start(request, server_id):
"""Start a server.
:param request: HTTP request.
:param server_id: The uuid of the server.
"""
server_manager = moganclient(request).server
return server_manager.set_power_state(server_id, 'on')
def server_stop(request, server_id):
"""Stop a server.
:param request: HTTP request.
:param server_id: The uuid of the server.
"""
server_manager = moganclient(request).server
return server_manager.set_power_state(server_id, 'off')
def keypair_list(request):
"""Retrieve a list of keypairs.

View File

@ -16,6 +16,7 @@
from django.http import HttpResponse
from django import template
from django.template.defaultfilters import title
from django.utils.translation import npgettext_lazy
from django.utils.translation import pgettext_lazy
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ungettext_lazy
@ -82,6 +83,66 @@ class DeleteServer(tables.DeleteAction):
mogan.server_delete(request, obj_id)
class StartServer(tables.BatchAction):
name = "start"
classes = ('btn-confirm',)
@staticmethod
def action_present(count):
return ungettext_lazy(
u"Start Server",
u"Start Servers",
count
)
@staticmethod
def action_past(count):
return ungettext_lazy(
u"Started Server",
u"Started Servers",
count
)
def allowed(self, request, server):
return ((server is None) or
(server.status in ("stopped",)))
def action(self, request, obj_id):
mogan.server_start(request, obj_id)
class StopServer(tables.BatchAction):
name = "stop"
help_text = _("The server(s) will be shut off.")
action_type = "danger"
@staticmethod
def action_present(count):
return npgettext_lazy(
"Action to perform (the server is currently running)",
u"Shut Off Server",
u"Shut Off Servers",
count
)
@staticmethod
def action_past(count):
return npgettext_lazy(
"Past action (the server is currently already Shut Off)",
u"Shut Off Server",
u"Shut Off Servers",
count
)
def allowed(self, request, server):
return ((server is None)
or ((server.power_state in ("power on",))
and (server.status != "deleting")))
def action(self, request, obj_id):
mogan.server_stop(request, obj_id)
class UpdateRow(tables.Row):
ajax = True
@ -193,5 +254,6 @@ class ServersTable(tables.DataTable):
verbose_name = _("Servers")
status_columns = ["status"]
row_class = UpdateRow
table_actions_menu = (StartServer, StopServer)
table_actions = (LaunchLink, DeleteServer, ServersFilterAction)
row_actions = (DeleteServer,)
row_actions = (StartServer, StopServer, DeleteServer,)