blob: ed8e47aacc6f1784e2d3a78e7c6f2e22eaa36b53 [file] [log] [blame]
Scott Bakerfa8fd292015-09-09 17:31:22 -07001from django.contrib import admin
2
Scott Baker9719c642015-12-31 11:13:21 -08003from services.ceilometer.models import *
Scott Bakerfa8fd292015-09-09 17:31:22 -07004from 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
Sapan Bhatia16be1432016-01-14 11:41:38 -050051 def __init__(self,*args,**kwargs):
52 super (MonitoringChannelForm,self ).__init__(*args,**kwargs)
53 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
58 if (not self.instance) or (not self.instance.pk):
59 # default fields for an 'add' form
60 self.fields['kind'].initial = CEILOMETER_KIND
61 self.fields['creator'].initial = get_request().user
62 if CeilometerService.get_service_objects().exists():
63 self.fields["provider_service"].initial = CeilometerService.get_service_objects().all()[0]
64
65
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:
Scott Bakerfa8fd292015-09-09 17:31:22 -070071 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',
Tony Mack32010062015-09-13 22:50:39 +000078 'instance', 'creator'],
Scott Bakerfa8fd292015-09-09 17:31:22 -070079 'classes':['suit-tab suit-tab-general']})]
Tony Mack32010062015-09-13 22:50:39 +000080 readonly_fields = ('backend_status_text', 'instance', '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'),)
Srikanth Vavilapalli17b5a3c2015-11-17 12:21:02 -060084 actions=['delete_selected_objects']
85
86 def get_actions(self, request):
87 actions = super(MonitoringChannelAdmin, self).get_actions(request)
88 if 'delete_selected' in actions:
89 del actions['delete_selected']
90 return actions
91
92 def delete_selected_objects(self, request, queryset):
93 for obj in queryset:
94 obj.delete()
95 delete_selected_objects.short_description = "Delete Selected MonitoringChannel Objects"
Scott Bakerfa8fd292015-09-09 17:31:22 -070096
97 def queryset(self, request):
98 return MonitoringChannel.get_tenant_objects_by_user(request.user)
99
100admin.site.register(CeilometerService, CeilometerServiceAdmin)
101admin.site.register(MonitoringChannel, MonitoringChannelAdmin)
102