diff --git a/mogan_ui/api/mogan.py b/mogan_ui/api/mogan.py index d34b890..e16c9f2 100644 --- a/mogan_ui/api/mogan.py +++ b/mogan_ui/api/mogan.py @@ -46,7 +46,7 @@ def server_list(request): def server_get(request, server_id): - """Retrieve a list of servers. + """Get a server. :param request: HTTP request. :param server_id: The uuid of the server. @@ -54,3 +54,13 @@ def server_get(request, server_id): """ server_manager = moganclient(request).server return server_manager.get(server_id) + + +def server_delete(request, server_id): + """Delete a server. + + :param request: HTTP request. + :param server_id: The uuid of the server. + """ + server_manager = moganclient(request).server + return server_manager.delete(server_id) diff --git a/mogan_ui/content/servers/tables.py b/mogan_ui/content/servers/tables.py index 37d63f5..e007961 100644 --- a/mogan_ui/content/servers/tables.py +++ b/mogan_ui/content/servers/tables.py @@ -16,6 +16,7 @@ from django.template.defaultfilters import title from django.utils.translation import pgettext_lazy from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ungettext_lazy from mogan_ui.api import mogan @@ -23,6 +24,39 @@ from horizon import tables from horizon.utils import filters +class DeleteServer(tables.DeleteAction): + help_text = _("Deleted servers are not recoverable.") + + @staticmethod + def action_present(count): + return ungettext_lazy( + u"Delete Server", + u"Delete Servers", + count + ) + + @staticmethod + def action_past(count): + return ungettext_lazy( + u"Scheduled deletion of Server", + u"Scheduled deletion of Servers", + count + ) + + def allowed(self, request, server=None): + """Allow delete action + + if server is in error state or not currently being deleted. + """ + error_state = False + if server: + error_state = (server.status == 'error') + return error_state or not (server.status.lower() == "deleting") + + def action(self, request, obj_id): + mogan.server_delete(request, obj_id) + + class UpdateRow(tables.Row): ajax = True @@ -106,4 +140,5 @@ class ServersTable(tables.DataTable): verbose_name = _("Servers") status_columns = ["status"] row_class = UpdateRow - table_actions = (ServersFilterAction,) + table_actions = (DeleteServer, ServersFilterAction) + row_actions = (DeleteServer,)