Method of getting data changed. Fixed MRN-466
Change-Id: I4c2f199bd0ee5d15726f574fef152a0e71320ed2
This commit is contained in:
parent
e1083d76a4
commit
6b05ef34d3
|
@ -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
|
||||
|
|
|
@ -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'))
|
||||
|
||||
|
|
|
@ -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}
|
||||
|
||||
|
||||
|
|
|
@ -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')
|
||||
)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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 %}
|
||||
|
|
Loading…
Reference in New Issue