Method of getting data changed. Fixed MRN-466

Change-Id: I4c2f199bd0ee5d15726f574fef152a0e71320ed2
This commit is contained in:
Ekaterina Fedorova 2013-06-11 20:41:29 +04:00
parent e1083d76a4
commit 6b05ef34d3
6 changed files with 111 additions and 86 deletions

View File

@ -33,18 +33,7 @@ def muranoclient(request):
return Client(endpoint=url, token=token_id)
def get_env_id_for_service(request, service_id):
environments = environments_list(request)
for environment in environments:
services = services_list(request, environment.id)
for service in services:
if service.id == service_id:
return environment.id
def get_status_message_for_service(request, service_id):
environment_id = get_env_id_for_service(request, service_id)
def get_status_message_for_service(request, service_id, environment_id):
session_id = Session.get(request, environment_id)
reports = muranoclient(request).sessions.reports(environment_id,
session_id,
@ -140,6 +129,20 @@ def environment_update(request, environment_id, name):
return muranoclient(request).environments.update(environment_id, name)
def get_environment_name(request, environment_id):
session_id = Session.get(request, environment_id)
environment = muranoclient(request).environments.get(environment_id,
session_id)
return environment.name
def get_environment_status(request, environment_id):
session_id = Session.get(request, environment_id)
environment = muranoclient(request).environments.get(environment_id,
session_id)
return environment.status
def get_service_client(request, service_type):
if service_type == 'Active Directory':
return muranoclient(request).activeDirectories
@ -163,19 +166,19 @@ def services_list(request, environment_id):
environment = get_environment(environment_id, session_id)
for service, instances in environment.services.iteritems():
if instances:
for service_name, instance in environment.services.iteritems():
if instance:
service_data = instance[0]
reports = muranoclient(request).sessions.reports(
environment_id,
session_id,
instances[0]['id'])
environment_id, session_id, service_data['id'])
if reports:
last_operation = str(reports[-1].text)
else:
last_operation = ''
instances[0]['operation'] = last_operation
services += instances
service_data['operation'] = last_operation
service_data['environment_id'] = environment_id
services += instance
log.debug('Service::List')
return [bunch.bunchify(srv) for srv in services]
@ -194,29 +197,30 @@ def service_list_by_type(request, environment_id, service_type):
def service_create(request, environment_id, parameters):
session_id = Session.get_or_create(request, environment_id)
service_client = get_service_client(request, parameters['service_type'])
service_client.create(environment_id, session_id, parameters)
log.debug('Service::Create {0}'.format(service_client))
return service_client
return service_client.create(environment_id, session_id, parameters)
def service_delete(request, service_id):
def service_delete(request, service_id, environment_id, service_type):
log.debug('Service::Delete <SrvId: {0}>'.format(service_id))
environment_id = get_env_id_for_service(request, service_id)
service = service_get(request, service_id)
session_id = Session.get_or_create(request, environment_id)
service_client = get_service_client(request, service.service_type)
service_client = get_service_client(request, service_type)
service_client.delete(environment_id, service_id, session_id)
def service_get(request, service_id):
environment_id = get_env_id_for_service(request, service_id)
services = services_list(request, environment_id)
def service_get(request, environment_id, service_id):
environment = environment_get(request, environment_id)
for service_name, instance in environment.services.iteritems():
if instance:
service_data = instance[0]
if service_data['id'] == service_id:
return service_data
for service in services:
if service.id == service_id:
log.debug('Service::Get {0}'.format(service))
return service
def check_for_services(request, environment_id):
environment = environment_get(request, environment_id)
for service_name, instance in environment.services.iteritems():
if instance:
return True
return False

View File

@ -56,14 +56,6 @@ class CreateService(tables.LinkAction):
return True
return False
def action(self, request, service):
try:
api.service_create(request, service)
except:
msg = _('Sorry, you can\'t create service right now')
redirect = reverse("horizon:project:murano:index")
exceptions.handle(request, msg, redirect=redirect)
class CreateEnvironment(tables.LinkAction):
name = 'CreateEnvironment'
@ -116,7 +108,9 @@ class DeleteService(tables.DeleteAction):
def action(self, request, service_id):
try:
api.service_delete(request, service_id)
env_id = self.table.kwargs.get('environment_id')
service_type = self.table.data[0]['service_type']
api.service_delete(request, service_id, env_id, service_type)
except:
msg = _('Sorry, you can\'t delete service right now')
redirect = reverse("horizon:project:murano:index")
@ -133,18 +127,19 @@ class DeployEnvironment(tables.BatchAction):
def allowed(self, request, environment):
status = getattr(environment, 'status', None)
services = api.services_list(request, environment.id)
if status not in [STATUS_ID_DEPLOYING, None] and services:
return True
return False
if status not in [STATUS_ID_DEPLOYING]:
services_presence = api.check_for_services(request, environment.id)
if services_presence:
return True
else:
return False
def action(self, request, environment_id):
try:
api.environment_deploy(request, environment_id)
except:
msg = _('Unable to deploy. Maybe this environment \
is already deploying. Try again later')
msg = _('Unable to deploy. Try again later')
redirect = reverse("horizon:project:murano:index")
exceptions.handle(request, msg, redirect=redirect)
@ -173,7 +168,8 @@ class UpdateServiceRow(tables.Row):
ajax = True
def get_data(self, request, service_id):
return api.service_get(request, service_id)
environment_id = self.table.kwargs['environment_id']
return api.service_get(request, service_id, environment_id)
class EnvironmentsTable(tables.DataTable):
@ -196,9 +192,14 @@ class EnvironmentsTable(tables.DataTable):
EditEnvironment, DeleteEnvironment)
def get_service_details_link(service):
return reverse('horizon:project:murano:service_details',
args=(service.environment_id, service.id))
class ServicesTable(tables.DataTable):
name = tables.Column('name', verbose_name=_('Name'),
link='horizon:project:murano:service_details')
link=get_service_details_link)
_type = tables.Column('service_type', verbose_name=_('Type'))

View File

@ -32,17 +32,19 @@ class OverviewTab(tabs.Tab):
service_data = self.tab_group.kwargs['service']
for id, name in STATUS_DISPLAY_CHOICES:
if id == service_data.status:
if id == service_data[u'status']:
status_name = name
detail_info = {"service_name": service_data.name,
"service_status": status_name,
"service_type": service_data.service_type,
"service_domain": service_data.domain}
detail_info = {'service_name': service_data[u'name'],
'service_status': status_name,
'service_type': service_data[u'service_type']}
# service_data is a bunch obj
if hasattr(service_data, 'uri'):
detail_info["uri"] = service_data.uri
if not service_data[u'domain']:
detail_info['service_domain'] = 'Not in domain'
uri = service_data.get(u'uri')
if uri:
detail_info[u'uri'] = service_data[u'uri']
return detail_info
@ -51,10 +53,13 @@ class LogsTab(tabs.Tab):
name = _("Logs")
slug = "_logs"
template_name = '_service_logs.html'
preload = False
def get_context_data(self, request):
service = self.tab_group.kwargs['service']
reports = api.get_status_message_for_service(request, service.id)
service_id = self.tab_group.kwargs['service_id']
environment_id = self.tab_group.kwargs['environment_id']
reports = api.get_status_message_for_service(request, service_id,
environment_id)
return {"reports": reports}

View File

@ -19,20 +19,27 @@ from views import Wizard, EditEnvironmentView
from forms import WizardFormServiceType, WizardFormConfiguration
VIEW_MOD = 'openstack_dashboard.dashboards.project.murano.views'
ENVIRONMENT_ID = r'^(?P<environment_id>[^/]+)'
urlpatterns = patterns(
VIEW_MOD,
url(r'^environments$', IndexView.as_view(), name='index'),
url(r'^create$', Wizard.as_view(
[WizardFormServiceType, WizardFormConfiguration]),
name='create'),
url(r'^create_environment$', CreateEnvironmentView.as_view(),
name='create_environment'),
url(r'^(?P<environment_id>[^/]+)/update_environment$',
url(ENVIRONMENT_ID + r'/update_environment$',
EditEnvironmentView.as_view(),
name='update_environment'),
url(r'^(?P<environment_id>[^/]+)/services$', Services.as_view(),
url(ENVIRONMENT_ID + r'/services$', Services.as_view(),
name='services'),
url(r'^services/(?P<service_id>[^/]+)$', DetailServiceView.as_view(),
url(ENVIRONMENT_ID + r'/(?P<service_id>[^/]+)/$',
DetailServiceView.as_view(),
name='service_details')
)

View File

@ -167,29 +167,34 @@ class Services(tables.DataTableView):
def get_context_data(self, **kwargs):
context = super(Services, self).get_context_data(**kwargs)
try:
context['environment_name'] = self.environment_name
environment_name = api.get_environment_name(
self.request,
self.environment_id)
context['environment_name'] = environment_name
except:
msg = _('Sorry, you this environment does\'t exist anymore')
msg = _('Sorry, this environment does\'t exist anymore')
redirect = reverse("horizon:project:murano:index")
exceptions.handle(self.request, msg, redirect=redirect)
return context
def get_data(self):
if not hasattr(self, "_services"):
self.environment_id = self.kwargs['environment_id']
try:
environment = api.environment_get(
self.request, self.environment_id)
self.environment_name = environment.name
services = api.services_list(self.request, self.environment_id)
except:
exceptions.handle(self.request,
_('Unable to retrieve list of services for '
'environment "%s".') % self.environment_id)
else:
self._services = services
return self._services
services = []
self.environment_id = self.kwargs['environment_id']
try:
services = api.services_list(self.request, self.environment_id)
except:
env_status = api.get_environment_status(self.request,
self.environment_id)
msg = _('Unable to retrieve list of services.')
if env_status == 'deploying':
msg += _('This environment is deploying right now')
exceptions.handle(self.request, msg)
return services
class DetailServiceView(tabs.TabView):
@ -199,14 +204,17 @@ class DetailServiceView(tabs.TabView):
def get_context_data(self, **kwargs):
context = super(DetailServiceView, self).get_context_data(**kwargs)
context["service"] = self.get_data()
context["service_name"] = self.get_data().name
context["service_name"] = self.service.get(u'name')
return context
def get_data(self):
if not hasattr(self, "_service"):
service_id = self.kwargs['service_id']
self.environment_id = self.kwargs['environment_id']
try:
service = api.service_get(self.request, service_id)
self.service = api.service_get(self.request,
self.environment_id,
service_id)
except:
redirect = reverse('horizon:project:murano:index')
exceptions.handle(self.request,
@ -214,8 +222,8 @@ class DetailServiceView(tabs.TabView):
'service'),
redirect=redirect)
else:
self._service = service
return self._service
self._service = self.service
return self._service
def get_tabs(self, request, *args, **kwargs):
service = self.get_data()

View File

@ -3,7 +3,7 @@
{% block title %}{% trans "Service Detail" %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" with title="Service Detail: "|add:service.name %}
{% include "horizon/common/_page_header.html" with title="Service Detail: "|add:service_name %}
{% endblock page_header %}
{% block main %}