diff --git a/dashboard/api/windc.py b/dashboard/api/windc.py index 1210ae829..147e6b9e3 100644 --- a/dashboard/api/windc.py +++ b/dashboard/api/windc.py @@ -54,11 +54,11 @@ def datacenter_create(request, parameters): version, ip, port, user, password) -def datacenter_delete(request, datacenter): - return windcclient(request).datacenters.delete(datacenter) +def datacenter_delete(request, datacenter_id): + return windcclient(request).datacenters.delete(datacenter_id) -def datacenter_get(request, lb_id): - return windcclient(request).datacenters.get(lb_id) +def datacenter_get(request, datacenter_id): + return windcclient(request).datacenters.get(datacenter_id) def datacenter_list(request): return windcclient(request).datacenters.list() diff --git a/dashboard/windc/tables.py b/dashboard/windc/tables.py index 1c1811a35..09b9c8699 100644 --- a/dashboard/windc/tables.py +++ b/dashboard/windc/tables.py @@ -55,6 +55,7 @@ class CreateService(tables.LinkAction): # FIX ME api.windc.datacenter.create_service(request, obj_id) + class CreateDataCenter(tables.LinkAction): name = "CreateDataCenter" verbose_name = _("Create Windows Data Center") @@ -69,6 +70,23 @@ class CreateDataCenter(tables.LinkAction): api.windc.datacenter.create(request, obj_id) +class DeleteDataCenter(tables.BatchAction): + name = "delete" + action_present = _("Delete") + action_past = _("Delete") + data_type_singular = _("Data Center") + data_type_plural = _("Data Center") + classes = ('btn-danger', 'btn-terminate') + + def allowed(self, request, datum): + return True + + def action(self, request, datacenter_id): + # FIX ME + datacenter = api.windc.datacenter_get(request, datacenter_id) + api.windc.datacenter_delete(request, datacenter) + + class EditService(tables.LinkAction): name = "edit" verbose_name = _("Edit Service") @@ -78,6 +96,7 @@ class EditService(tables.LinkAction): def allowed(self, request, instance): return True + class ShowDataCenterServices(tables.LinkAction): name = "edit" verbose_name = _("Services") @@ -86,6 +105,7 @@ class ShowDataCenterServices(tables.LinkAction): def allowed(self, request, instance): return True + class UpdateRow(tables.Row): ajax = True @@ -115,7 +135,7 @@ class WinDCTable(tables.DataTable): verbose_name = _("Windows Data Centers") row_class = UpdateRow table_actions = (CreateDataCenter,) - row_actions = (ShowDataCenterServices,) + row_actions = (ShowDataCenterServices,DeleteDataCenter) class WinServicesTable(tables.DataTable): diff --git a/dashboard/windc/workflows.py b/dashboard/windc/workflows.py index 7db3e783b..16996a7e7 100644 --- a/dashboard/windc/workflows.py +++ b/dashboard/windc/workflows.py @@ -29,9 +29,6 @@ from horizon import forms from horizon import workflows from openstack_dashboard import api -from openstack_dashboard.api import cinder -from openstack_dashboard.api import glance -from openstack_dashboard.usage import quotas LOG = logging.getLogger(__name__) @@ -61,13 +58,11 @@ class SelectProjectUserAction(workflows.Action): class SelectProjectUser(workflows.Step): action_class = SelectProjectUserAction - #contributes = ("project_id", "user_id") class ConfigureDCAction(workflows.Action): - dc_name = forms.CharField(label=_("Data Center Name"), - required=True, - help_text=_("A name of new data center.")) + name = forms.CharField(label=_("Data Center Name"), + required=True) class Meta: name = _("Data Center") @@ -76,6 +71,13 @@ class ConfigureDCAction(workflows.Action): class ConfigureDC(workflows.Step): action_class = ConfigureDCAction + contibutes = ("name",) + + def contribute(self, data, context): + if data: + context['name'] = data.get("name", "") + return context + class ConfigureWinDCAction(workflows.Action): dc_name = forms.CharField(label=_("Domain Name"), @@ -167,20 +169,24 @@ class CreateWinService(workflows.Workflow): class CreateWinDC(workflows.Workflow): slug = "create" name = _("Create Windows Data Center") - finalize_button_name = _("Deploy") - success_message = _('Deployed %(count)s named "%(name)s".') - failure_message = _('Unable to deploy %(count)s named "%(name)s".') + finalize_button_name = _("Create") + success_message = _('Created data center "%(name)s".') + failure_message = _('Unable to create data center "%(name)s".') success_url = "horizon:project:windc" default_steps = (SelectProjectUser, ConfigureDC) - ## TO DO: - ## Need to rewrite the following code: - - #def handle(self, request, context): - # try: - # api.windc.create(request,...) - # return True - # except: - # exceptions.handle(request) - # return False + def handle(self, request, context): + try: + # FIX ME: + context['type'] = 'datacenter' + context['version'] = '1.0' + context['ip'] = '1.1.1.1' + context['port'] = '80' + context['user'] = 'administrator' + context['password'] = 'swordfish' + datacenter = api.windc.datacenter_create(request, context) + return True + except: + exceptions.handle(request) + return False diff --git a/dashboard/windcclient/common/client.py b/dashboard/windcclient/common/client.py index 04740cfd8..d8c9eb7d3 100644 --- a/dashboard/windcclient/common/client.py +++ b/dashboard/windcclient/common/client.py @@ -96,6 +96,8 @@ class HTTPClient(httplib2.Http): body = None if 400 <= resp.status < 600: + # DELETE THIS STRING + logger.exception(url) raise exceptions.from_response(resp, body) return resp, body @@ -110,6 +112,7 @@ class HTTPClient(httplib2.Http): resp, body = self._http_request(url, method, **kwargs) if 400 <= resp.status < 600: + logger.exception(url) raise exceptions.from_response(resp, body) return resp, body diff --git a/dashboard/windcclient/v1/datacenters.py b/dashboard/windcclient/v1/datacenters.py index 6805be0aa..a5c1e4ec5 100644 --- a/dashboard/windcclient/v1/datacenters.py +++ b/dashboard/windcclient/v1/datacenters.py @@ -40,10 +40,11 @@ class DCManager(base.Manager): 'user': user, 'password': password} body.update(extra) - return self._create('/devices', body, 'device') + return self._create('/datacenters', body, 'datacenter') def delete(self, datacenter): - self._delete("/datacenters/%s" % base.getid(datacenter)) + return self._delete("/datacenters/%s" % base.getid(datacenter)) def get(self, datacenter): - return self._get("/datacenters/%s" % base.getid(datacenter), 'datacenter') + return self._get("/datacenters/%s" % base.getid(datacenter), + 'datacenter') diff --git a/windc/windc/db/api.py b/windc/windc/db/api.py index d01c3caa7..08b305c4a 100644 --- a/windc/windc/db/api.py +++ b/windc/windc/db/api.py @@ -88,7 +88,8 @@ def datacenter_create(conf, values): def datacenter_update(conf, datacenter_id, values): session = get_session(conf) with session.begin(): - datacenter_ref = datacenter_get(conf, datacenter_id, session=session) + datacenter_ref = session.query(models.DataCenter).\ + filter_by(id=datacenter_id).first() datacenter_ref.update(values) return datacenter_ref @@ -96,8 +97,10 @@ def datacenter_update(conf, datacenter_id, values): def datacenter_destroy(conf, datacenter_id): session = get_session(conf) with session.begin(): - datacenter_ref = device_get(conf, datacenter_id, session=session) + datacenter_ref = session.query(models.DataCenter).\ + filter_by(id=datacenter_id).first() session.delete(datacenter_ref) + return datacenter_ref # Service