Files
solum-dashboard/solumdashboard/applications/tabs.py
zhurong 1c35c6bb8b Fix app detail AttributeError
If the app doesn't have app attribute, the app detail will gives the error:
AttributeError: 'NoneType' object has no attribute 'get'

This patch fix this.

Change-Id: Ib7a0172e7341ca24d80e2d164419a636d4595881
Closes-Bug: #1633857
2016-10-16 13:39:48 +00:00

82 lines
2.6 KiB
Python

# Copyright (c) 2014 Rackspace Hosting.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from django.utils.translation import ugettext_lazy as _
import json
from horizon import tabs
from solumclient.v1 import workflow as cli_wf
from solumdashboard.api.client import client as solumclient
class GeneralTab(tabs.Tab):
name = _("General Info")
slug = "application_details_tab"
template_name = ("applications/_detail.html")
def get_context_data(self, request):
app_id = self.tab_group.kwargs['application_id']
solum = solumclient(request)
app = solum.apps.find(name_or_id=app_id)
app.trigger = app.trigger_actions
app.workflow = app.workflow_config
if app.scale_config:
app.target_instances = app.scale_config[app.name].get('target', '')
workflowman = cli_wf.WorkflowManager(solum, app_id=app_id)
workflows = workflowman.list()
return {"application": app, "workflows": workflows}
class LogTab(tabs.Tab):
name = _("Logs")
slug = "application_logs_tab"
template_name = ("applications/_log.html")
def get_context_data(self, request):
app_id = self.tab_group.kwargs['application_id']
solum = solumclient(request)
app = solum.apps.find(name_or_id=app_id)
workflowman = cli_wf.WorkflowManager(solum, app_id=app_id)
workflows = workflowman.list()
logs_list = []
for workflow in workflows:
revision = workflow.wf_id
loglist = workflowman.logs(revision_or_id=revision)
for log in loglist:
logs_list.append(log)
strategy_info = json.loads(log.strategy_info)
if log.strategy == 'local':
log.local_storage = log.location
elif log.strategy == 'swift':
log.swift_container = strategy_info['container']
log.swift_path = log.location
return {"logs": logs_list, "application": app}
class AppDetailsTabs(tabs.TabGroup):
slug = "application_details"
tabs = (GeneralTab, LogTab)
sticky = True