blob: 8644ab745ec14302babfaec926093a9db7720d0f [file] [log] [blame]
Scott Bakerfa8fd292015-09-09 17:31:22 -07001from django.contrib import admin
2
3from ceilometer.models import *
4from django import forms
5from django.utils.safestring import mark_safe
6from django.contrib.auth.admin import UserAdmin
7from django.contrib.admin.widgets import FilteredSelectMultiple
8from django.contrib.auth.forms import ReadOnlyPasswordHashField
9from django.contrib.auth.signals import user_logged_in
10from django.utils import timezone
11from django.contrib.contenttypes import generic
12from suit.widgets import LinkedSelect
13from core.admin import ServiceAppAdmin,SliceInline,ServiceAttrAsTabInline, ReadOnlyAwareAdmin, XOSTabularInline, ServicePrivilegeInline, TenantRootTenantInline, TenantRootPrivilegeInline
Scott Bakerd145efe2015-09-10 16:01:58 -070014from core.middleware import get_request
Scott Bakerfa8fd292015-09-09 17:31:22 -070015
16from functools import update_wrapper
17from django.contrib.admin.views.main import ChangeList
18from django.core.urlresolvers import reverse
19from django.contrib.admin.utils import quote
20
21class CeilometerServiceAdmin(ReadOnlyAwareAdmin):
22 model = CeilometerService
23 verbose_name = "Ceilometer Service"
24 verbose_name_plural = "Ceilometer Service"
25 list_display = ("backend_status_icon", "name", "enabled")
26 list_display_links = ('backend_status_icon', 'name', )
27 fieldsets = [(None, {'fields': ['backend_status_text', 'name','enabled','versionNumber', 'description',"view_url","icon_url" ], 'classes':['suit-tab suit-tab-general']})]
28 readonly_fields = ('backend_status_text', )
29 inlines = [SliceInline,ServiceAttrAsTabInline,ServicePrivilegeInline]
30
31 extracontext_registered_admins = True
32
33 user_readonly_fields = ["name", "enabled", "versionNumber", "description"]
34
35 suit_form_tabs =(('general', 'Ceilometer Service Details'),
36 ('administration', 'Administration'),
37 ('slices','Slices'),
38 ('serviceattrs','Additional Attributes'),
39 ('serviceprivileges','Privileges'),
40 )
41
42 suit_form_includes = (('ceilometeradmin.html', 'top', 'administration'),
43 )
44
45 def queryset(self, request):
46 return CeilometerService.get_service_objects_by_user(request.user)
47
48class MonitoringChannelForm(forms.ModelForm):
49 creator = forms.ModelChoiceField(queryset=User.objects.all())
50
51 def __init__(self,*args,**kwargs):
52 super (MonitoringChannelForm,self ).__init__(*args,**kwargs)
Scott Bakerfa8fd292015-09-09 17:31:22 -070053 self.fields['kind'].widget.attrs['readonly'] = True
54 self.fields['provider_service'].queryset = CeilometerService.get_service_objects().all()
55 if self.instance:
56 # fields for the attributes
57 self.fields['creator'].initial = self.instance.creator
Scott Bakerd9265292015-09-10 15:33:05 -070058 if (not self.instance) or (not self.instance.pk):
59 # default fields for an 'add' form
60 self.fields['kind'].initial = CEILOMETER_KIND
Scott Bakerd145efe2015-09-10 16:01:58 -070061 self.fields['creator'].initial = get_request().user
Scott Bakerd9265292015-09-10 15:33:05 -070062 if CeilometerService.get_service_objects().exists():
63 self.fields["provider_service"].initial = CeilometerService.get_service_objects().all()[0]
64
Scott Bakerfa8fd292015-09-09 17:31:22 -070065
66 def save(self, commit=True):
67 self.instance.creator = self.cleaned_data.get("creator")
68 return super(MonitoringChannelForm, self).save(commit=commit)
69
70 class Meta:
71 model = MonitoringChannel
72
73class MonitoringChannelAdmin(ReadOnlyAwareAdmin):
Scott Baker588caf92015-09-09 17:57:51 -070074 list_display = ('backend_status_icon', 'id', )
Scott Bakerfa8fd292015-09-09 17:31:22 -070075 list_display_links = ('backend_status_icon', 'id')
Scott Baker588caf92015-09-09 17:57:51 -070076 fieldsets = [ (None, {'fields': ['backend_status_text', 'kind', 'provider_service', 'service_specific_attribute',
Scott Bakerb37a99a2015-09-10 17:36:58 -070077 'ceilometer_url', 'tenant_list_str',
Scott Bakerddf8a942015-09-10 17:07:21 -070078 'sliver', 'creator'],
Scott Bakerfa8fd292015-09-09 17:31:22 -070079 'classes':['suit-tab suit-tab-general']})]
Scott Bakerb37a99a2015-09-10 17:36:58 -070080 readonly_fields = ('backend_status_text', 'sliver', 'service_specific_attribute', 'ceilometer_url', 'tenant_list_str')
Scott Bakerfa8fd292015-09-09 17:31:22 -070081 form = MonitoringChannelForm
82
83 suit_form_tabs = (('general','Details'),)
84
85 def queryset(self, request):
86 return MonitoringChannel.get_tenant_objects_by_user(request.user)
87
88admin.site.register(CeilometerService, CeilometerServiceAdmin)
89admin.site.register(MonitoringChannel, MonitoringChannelAdmin)
90