
First patch in reorganizing the sahara UI to be more tab oriented rather than death by a thousand panels. There are other patches that will complete the work, but this patch addresses the cluster-oriented panels by moving them under a single panel named Clusters. Change-Id: Iae4bf4b5127fb29153ec5335070cde7d344e059e Partial-Implements: bp reduce-number-of-panels
124 lines
4.4 KiB
Python
124 lines
4.4 KiB
Python
# 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.utils.translation import ugettext_lazy as _
|
|
|
|
from horizon import exceptions
|
|
from horizon import tabs
|
|
|
|
from openstack_dashboard.api import network
|
|
from openstack_dashboard.api import nova
|
|
from sahara_dashboard.api import sahara as saharaclient
|
|
|
|
from sahara_dashboard.content.data_processing \
|
|
import tabs as sahara_tabs
|
|
from sahara_dashboard.content. \
|
|
data_processing.utils import workflow_helpers as helpers
|
|
from sahara_dashboard.content.data_processing.clusters.nodegroup_templates \
|
|
import tables as node_group_template_tables
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
|
|
class NodeGroupTemplatesTab(sahara_tabs.SaharaTableTab):
|
|
table_classes = (node_group_template_tables.NodegroupTemplatesTable, )
|
|
name = _("Node Group Templates")
|
|
slug = "node_group_templates_tab"
|
|
template_name = "horizon/common/_detail_table.html"
|
|
|
|
def get_nodegroup_templates_data(self):
|
|
try:
|
|
table = self._tables['nodegroup_templates']
|
|
search_opts = {}
|
|
filter = self.get_server_filter_info(table.request, table)
|
|
if filter['value'] and filter['field']:
|
|
search_opts = {filter['field']: filter['value']}
|
|
node_group_templates = saharaclient.nodegroup_template_list(
|
|
self.request, search_opts)
|
|
except Exception:
|
|
node_group_templates = []
|
|
exceptions.handle(self.request,
|
|
_("Unable to fetch node group template list"))
|
|
return node_group_templates
|
|
|
|
|
|
class GeneralTab(tabs.Tab):
|
|
name = _("General Info")
|
|
slug = "nodegroup_template_details_tab"
|
|
template_name = "nodegroup_templates/_details.html"
|
|
|
|
def get_context_data(self, request):
|
|
template_id = self.tab_group.kwargs['template_id']
|
|
try:
|
|
template = saharaclient.nodegroup_template_get(
|
|
request, template_id)
|
|
except Exception as e:
|
|
template = {}
|
|
LOG.error(
|
|
"Unable to fetch node group template details: %s" % str(e))
|
|
return {"template": template}
|
|
|
|
try:
|
|
flavor = nova.flavor_get(request, template.flavor_id)
|
|
except Exception:
|
|
flavor = {}
|
|
exceptions.handle(request,
|
|
_("Unable to fetch flavor for template."))
|
|
|
|
floating_ip_pool_name = None
|
|
if template.floating_ip_pool:
|
|
try:
|
|
floating_ip_pool_name = self._get_floating_ip_pool_name(
|
|
request, template.floating_ip_pool)
|
|
except Exception:
|
|
exceptions.handle(request,
|
|
_("Unable to fetch floating ip pools."))
|
|
|
|
security_groups = helpers.get_security_groups(
|
|
request, template.security_groups)
|
|
|
|
return {"template": template, "flavor": flavor,
|
|
"floating_ip_pool_name": floating_ip_pool_name,
|
|
"security_groups": security_groups}
|
|
|
|
def _get_floating_ip_pool_name(self, request, pool_id):
|
|
pools = [pool for pool in network.floating_ip_pools_list(
|
|
request) if pool.id == pool_id]
|
|
|
|
return pools[0].name if pools else pool_id
|
|
|
|
|
|
class ConfigsTab(tabs.Tab):
|
|
name = _("Service Configurations")
|
|
slug = "nodegroup_template_service_configs_tab"
|
|
template_name = "nodegroup_templates/_service_confs.html"
|
|
|
|
def get_context_data(self, request):
|
|
template_id = self.tab_group.kwargs['template_id']
|
|
try:
|
|
template = saharaclient.nodegroup_template_get(
|
|
request, template_id)
|
|
except Exception as e:
|
|
template = {}
|
|
LOG.error(
|
|
"Unable to fetch node group template details: %s" % str(e))
|
|
return {"template": template}
|
|
|
|
|
|
class NodegroupTemplateDetailsTabs(tabs.TabGroup):
|
|
slug = "nodegroup_template_details"
|
|
tabs = (GeneralTab, ConfigsTab, )
|
|
sticky = True
|