82 lines
3.0 KiB
Python
82 lines
3.0 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 yaml
|
|
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from horizon import exceptions
|
|
from horizon import tables
|
|
from horizon import tabs
|
|
|
|
# from openstack_dashboard import api
|
|
# import openstack_dashboard.dashboards.project.stacks.resource_types.tables \
|
|
# as project_tables
|
|
# import openstack_dashboard.dashboards.project.stacks.resource_types.tabs \
|
|
# as project_tabs
|
|
from heat_dashboard import api
|
|
import heat_dashboard.content.resource_types.tables as project_tables
|
|
import heat_dashboard.content.resource_types.tabs as project_tabs
|
|
|
|
|
|
class ResourceTypesView(tables.DataTableView):
|
|
table_class = project_tables.ResourceTypesTable
|
|
page_title = _("Resource Types")
|
|
|
|
def get_data(self):
|
|
try:
|
|
filters = self.get_filters()
|
|
if 'name' in filters:
|
|
filters['name'] = '.*' + filters['name']
|
|
r_types = sorted(api.heat.resource_types_list(self.request,
|
|
filters=filters),
|
|
key=lambda resource: resource.resource_type)
|
|
except Exception:
|
|
r_types = []
|
|
msg = _('Unable to retrieve stack resource types.')
|
|
exceptions.handle(self.request, msg)
|
|
return r_types
|
|
|
|
|
|
class DetailView(tabs.TabView):
|
|
tab_group_class = project_tabs.ResourceTypeDetailsTabs
|
|
template_name = 'horizon/common/_detail.html'
|
|
page_title = "{{ resource_type }}"
|
|
|
|
def get_resource_type(self, request, **kwargs):
|
|
try:
|
|
resource_type_overview = api.heat.resource_type_get(
|
|
request,
|
|
kwargs['resource_type'])
|
|
return resource_type_overview
|
|
except Exception:
|
|
msg = _('Unable to retrieve resource type details.')
|
|
exceptions.handle(request, msg, redirect=self.get_redirect_url())
|
|
|
|
def get_tabs(self, request, **kwargs):
|
|
resource_type_overview = self.get_resource_type(request, **kwargs)
|
|
r_type = resource_type_overview['resource_type']
|
|
r_type_attributes = resource_type_overview['attributes']
|
|
r_type_properties = resource_type_overview['properties']
|
|
return self.tab_group_class(
|
|
request,
|
|
rt=r_type,
|
|
rt_attributes=yaml.safe_dump(r_type_attributes, indent=2),
|
|
rt_properties=yaml.safe_dump(r_type_properties, indent=2),
|
|
**kwargs)
|
|
|
|
@staticmethod
|
|
def get_redirect_url():
|
|
return reverse('horizon:project:resource_types:index')
|