From 31951942297190589792f5e1919b3a6d35994b18 Mon Sep 17 00:00:00 2001 From: Timur Nurlygayanov Date: Mon, 25 Feb 2013 08:42:29 -0500 Subject: [PATCH] Fixed Web UI for demo. --- dashboard/api/windc.py | 3 +- dashboard/windc/tables.py | 43 ++++++++++++++++------------ dashboard/windc/urls.py | 2 ++ dashboard/windc/workflows.py | 8 ++++-- dashboard/windcclient/v1/services.py | 6 ++-- 5 files changed, 36 insertions(+), 26 deletions(-) diff --git a/dashboard/api/windc.py b/dashboard/api/windc.py index 3d412e81e..15aa28999 100644 --- a/dashboard/api/windc.py +++ b/dashboard/api/windc.py @@ -49,8 +49,7 @@ def datacenters_list(request): return windcclient(request).datacenters.list() def services_create(request, datacenter, parameters): - name = parameters.get('dc_name', '') - return windcclient(request).services.create(datacenter, name) + return windcclient(request).services.create(datacenter, parameters) def services_list(request, datacenter): return windcclient(request).services.list(datacenter) diff --git a/dashboard/windc/tables.py b/dashboard/windc/tables.py index 099879716..bf34d4bf9 100644 --- a/dashboard/windc/tables.py +++ b/dashboard/windc/tables.py @@ -17,7 +17,7 @@ # TO DO: clear extra modules - +import re import logging from django import shortcuts @@ -85,6 +85,27 @@ class DeleteDataCenter(tables.BatchAction): api.windc.datacenters_delete(request, datacenter) +class DeleteService(tables.BatchAction): + name = "delete" + action_present = _("Delete") + action_past = _("Delete") + data_type_singular = _("Service") + data_type_plural = _("Service") + classes = ('btn-danger', 'btn-terminate') + + def allowed(self, request, datum): + return True + + def action(self, request, service_id): + ############## FIX ME: + link = request.__dict__['META']['HTTP_REFERER'] + datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1] + ############## + datacenter = api.windc.datacenters_get(request, datacenter_id) + + api.windc.services_delete(request, datacenter, service_id) + + class EditService(tables.LinkAction): name = "edit" verbose_name = _("Edit") @@ -95,16 +116,6 @@ class EditService(tables.LinkAction): return True -class DeleteService(tables.LinkAction): - name = "delete" - verbose_name = _("Delete") - url = "horizon:project:windc:delete" - classes = ("ajax-modal", "btn-edit") - - def allowed(self, request, instance): - return True - - class ShowDataCenterServices(tables.LinkAction): name = "edit" verbose_name = _("Services") @@ -138,13 +149,9 @@ class WinDCTable(tables.DataTable): class WinServicesTable(tables.DataTable): - name = tables.Column('name', - link=('horizon:project:windc'), - verbose_name=_('Name')) - _type = tables.Column('type', - verbose_name=_('Type')) - status = tables.Column('status', - verbose_name=_('Status')) + name = tables.Column('dc_name', verbose_name=_('Name')) + _type = tables.Column('type', verbose_name=_('Type')) + status = tables.Column('status', verbose_name=_('Status')) class Meta: name = "services" diff --git a/dashboard/windc/urls.py b/dashboard/windc/urls.py index 6654ed228..bcede424c 100644 --- a/dashboard/windc/urls.py +++ b/dashboard/windc/urls.py @@ -29,6 +29,8 @@ urlpatterns = patterns(VIEW_MOD, url(r'^$', IndexView.as_view(), name='index'), url(r'^create$', CreateWinServiceView.as_view(), name='create'), url(r'^create_dc$', CreateWinDCView.as_view(), name='create_dc'), + url(r'^(?P[^/]+)/$', WinServices.as_view(), + name='services'), url(r'^(?P[^/]+)/$', WinServices.as_view(), name='services') ) diff --git a/dashboard/windc/workflows.py b/dashboard/windc/workflows.py index e61e81a1b..4eb32e9df 100644 --- a/dashboard/windc/workflows.py +++ b/dashboard/windc/workflows.py @@ -165,14 +165,14 @@ class CreateWinService(workflows.Workflow): finalize_button_name = _("Deploy") success_message = _('Created service "%s".') failure_message = _('Unable to create service "%s".') - success_url = "horizon:project:windc:services" + success_url = "/project/windc/%s/" default_steps = (SelectProjectUser, ConfigureWinDC, ConfigureWinIIS) def format_status_message(self, message): - name = self.context.get('dc_name', 'noname') - return message % name + dc_name = self.context.get('dc_name', 'noname') + return message % dc_name def handle(self, request, context): try: @@ -181,6 +181,8 @@ class CreateWinService(workflows.Workflow): datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1] ############## + self.success_url = "/project/windc/%s/" % datacenter_id + service = api.windc.services_create(request, datacenter_id, context) diff --git a/dashboard/windcclient/v1/services.py b/dashboard/windcclient/v1/services.py index 5791c2afa..8309338f8 100644 --- a/dashboard/windcclient/v1/services.py +++ b/dashboard/windcclient/v1/services.py @@ -31,9 +31,9 @@ class DCServiceManager(base.Manager): return self._list("/datacenters/%s/services" % base.getid(datacenter), 'services') - def create(self, datacenter, name, **extra): - body = {'name': name,} - body.update(extra) + def create(self, datacenter, parameters): + body = {'dc_count': 1,} + body.update(parameters) return self._create("/datacenters/%s/services" % base.getid(datacenter), body, 'service')