Added new functional to dashboard, fixed small issues.

This commit is contained in:
Timur Nurlygayanov 2013-02-19 00:04:06 -08:00
parent 6c51f7d983
commit 0136a6f737
6 changed files with 63 additions and 30 deletions

View File

@ -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()

View File

@ -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):

View File

@ -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

View File

@ -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

View File

@ -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')

View File

@ -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