65d748fb25
As discussed in the horizon meetings or in horizon PTG sessions, horizon team agreed to deprecate django version of Images, Keypair and Roles panel as we think that feature gaps between the two implementations have been closed. Let's mark the Django version as deprecated for all these panels and gather more attention from operators. Change-Id: I965f9dbdd5e78b52a788f73b359c1c6fbc18637e
97 lines
3.4 KiB
Python
97 lines
3.4 KiB
Python
# Copyright 2016 Cisco Systems
|
|
#
|
|
# 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.
|
|
|
|
import logging
|
|
|
|
from django.urls import reverse
|
|
from django.urls import reverse_lazy
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from horizon import exceptions
|
|
from horizon import forms
|
|
from horizon import messages
|
|
from horizon import tables
|
|
from horizon.utils import memoized
|
|
from horizon import views
|
|
from openstack_dashboard.api import nova
|
|
from openstack_dashboard.dashboards.project.key_pairs \
|
|
import forms as key_pairs_forms
|
|
from openstack_dashboard.dashboards.project.key_pairs \
|
|
import tables as key_pairs_tables
|
|
from openstack_dashboard import policy
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
|
|
class IndexView(tables.DataTableView):
|
|
table_class = key_pairs_tables.KeyPairsTable
|
|
page_title = _("Key Pairs")
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
LOG.warning('The Django version of the Key Pairs panel is deprecated '
|
|
'since Zed release. Switch to the AngularJS version by '
|
|
'setting "ANGULAR_FEATURES[\'key_pairs_panel\'] = True".')
|
|
|
|
def get_data(self):
|
|
if not policy.check(
|
|
(("compute", "os_compute_api:os-keypairs:index"),),
|
|
self.request):
|
|
msg = _("Insufficient privilege level to retrieve key pair list.")
|
|
messages.info(self.request, msg)
|
|
return []
|
|
try:
|
|
keypairs = nova.keypair_list(self.request)
|
|
except Exception:
|
|
keypairs = []
|
|
exceptions.handle(self.request,
|
|
_('Unable to retrieve key pair list.'))
|
|
return keypairs
|
|
|
|
|
|
class ImportView(forms.ModalFormView):
|
|
form_class = key_pairs_forms.ImportKeypair
|
|
template_name = 'project/key_pairs/import.html'
|
|
submit_url = reverse_lazy(
|
|
"horizon:project:key_pairs:import")
|
|
success_url = reverse_lazy('horizon:project:key_pairs:index')
|
|
submit_label = page_title = _("Import Key Pair")
|
|
|
|
def get_object_id(self, keypair):
|
|
return keypair.name
|
|
|
|
|
|
class DetailView(views.HorizonTemplateView):
|
|
template_name = 'project/key_pairs/detail.html'
|
|
page_title = _("Key Pair Details")
|
|
|
|
@memoized.memoized_method
|
|
def _get_data(self):
|
|
try:
|
|
keypair = nova.keypair_get(self.request,
|
|
self.kwargs['keypair_name'])
|
|
except Exception:
|
|
redirect = reverse('horizon:project:key_pairs:index')
|
|
msg = _('Unable to retrieve details for keypair "%s".')\
|
|
% (self.kwargs['keypair_name'])
|
|
exceptions.handle(self.request, msg,
|
|
redirect=redirect)
|
|
return keypair
|
|
|
|
def get_context_data(self, **kwargs):
|
|
"""Gets the context data for keypair."""
|
|
context = super().get_context_data(**kwargs)
|
|
context['keypair'] = self._get_data()
|
|
return context
|