20a571fdd2
This patch adds a tab for cinder user messages for volume backups. Cinder user messages show error details for cinder resources like if we are unable to create a volume backup due to some failure in cinder it will show us the reason for failure. It also updates project and admin SnapshotDetailsTabs to use DetailTabsGroup instead of TabGroup to improve top padding. Also adds the fail_reason in the detail view, if backup errored. Related-Bug https://bugs.launchpad.net/cinder/+bug/1978729 Change-Id: I4e639211043270e814fac489f915588af03f966a
74 lines
2.6 KiB
Python
74 lines
2.6 KiB
Python
# Copyright 2012 Nebula, Inc.
|
|
#
|
|
# 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.urls import reverse
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from horizon import exceptions
|
|
from horizon import tabs
|
|
|
|
from openstack_dashboard.api import cinder
|
|
from openstack_dashboard.dashboards.project.snapshots \
|
|
import tables as snap_messages_tables
|
|
|
|
|
|
class OverviewTab(tabs.Tab):
|
|
name = _("Overview")
|
|
slug = "overview"
|
|
template_name = ("project/snapshots/_detail_overview.html")
|
|
|
|
def get_context_data(self, request):
|
|
try:
|
|
snapshot = self.tab_group.kwargs['snapshot']
|
|
volume = cinder.volume_get(request, snapshot.volume_id)
|
|
except Exception:
|
|
redirect = self.get_redirect_url()
|
|
exceptions.handle(self.request,
|
|
_('Unable to retrieve snapshot details.'),
|
|
redirect=redirect)
|
|
return {"snapshot": snapshot,
|
|
"volume": volume,
|
|
"group_snapshot": snapshot.group_snapshot}
|
|
|
|
def get_redirect_url(self):
|
|
return reverse('horizon:project:snapshots:index')
|
|
|
|
|
|
class SnapshotMessagesTab(tabs.TableTab):
|
|
table_classes = (snap_messages_tables.SnapshotMessagesTable,)
|
|
name = _("Messages")
|
|
slug = "messages_tab"
|
|
template_name = ("horizon/common/_detail_table.html")
|
|
preload = False
|
|
|
|
def get_snapshot_messages_data(self):
|
|
messages = []
|
|
snapshot = self.tab_group.kwargs['snapshot']
|
|
snap_id = snapshot.id
|
|
try:
|
|
snap_msgs = cinder.message_list(self.request, search_opts={
|
|
'resource_type': 'volume_snapshot', 'resource_uuid': snap_id})
|
|
for snap_msg in snap_msgs:
|
|
messages.append(snap_msg)
|
|
|
|
except Exception:
|
|
exceptions.handle(self.request, _("Unable to retrieve "
|
|
"snapshot messages."))
|
|
return messages
|
|
|
|
|
|
class SnapshotDetailTabs(tabs.DetailTabsGroup):
|
|
slug = "snapshot_details"
|
|
tabs = (OverviewTab, SnapshotMessagesTab)
|