blob: 45c10838891f4e90db050231998b2176821b7363 [file] [log] [blame]
Scott Bakerc3ce3e72016-06-20 17:35:19 -07001from django.contrib import admin
2
3from django import forms
4from django.utils.safestring import mark_safe
5from django.contrib.auth.admin import UserAdmin
6from django.contrib.admin.widgets import FilteredSelectMultiple
7from django.contrib.auth.forms import ReadOnlyPasswordHashField
8from django.contrib.auth.signals import user_logged_in
9from django.utils import timezone
10from django.contrib.contenttypes import generic
11from suit.widgets import LinkedSelect
12from core.admin import ServiceAppAdmin,SliceInline,ServiceAttrAsTabInline, ReadOnlyAwareAdmin, XOSTabularInline, ServicePrivilegeInline, TenantRootTenantInline, TenantRootPrivilegeInline
13from core.middleware import get_request
14
15from services.vtn.models import *
16
17from functools import update_wrapper
18from django.contrib.admin.views.main import ChangeList
19from django.core.urlresolvers import reverse
20from django.contrib.admin.utils import quote
21
22class VTNServiceForm(forms.ModelForm):
23 privateGatewayMac = forms.CharField(required=False)
24 localManagementIp = forms.CharField(required=False)
25 ovsdbPort = forms.CharField(required=False)
26 sshPort = forms.CharField(required=False)
27 sshUser = forms.CharField(required=False)
28 sshKeyFile = forms.CharField(required=False)
29 mgmtSubnetBits = forms.CharField(required=False)
30 xosEndpoint = forms.CharField(required=False)
31 xosUser = forms.CharField(required=False)
32 xosPassword = forms.CharField(required=False)
Scott Bakerb3a80de2016-09-06 16:51:27 -070033 vtnAPIVersion = forms.IntegerField(required=False)
Scott Bakerc3ce3e72016-06-20 17:35:19 -070034
35 def __init__(self,*args,**kwargs):
36 super (VTNServiceForm,self ).__init__(*args,**kwargs)
37 if self.instance:
38 self.fields['privateGatewayMac'].initial = self.instance.privateGatewayMac
39 self.fields['localManagementIp'].initial = self.instance.localManagementIp
40 self.fields['ovsdbPort'].initial = self.instance.ovsdbPort
41 self.fields['sshPort'].initial = self.instance.sshPort
42 self.fields['sshUser'].initial = self.instance.sshUser
43 self.fields['sshKeyFile'].initial = self.instance.sshKeyFile
44 self.fields['mgmtSubnetBits'].initial = self.instance.mgmtSubnetBits
45 self.fields['xosEndpoint'].initial = self.instance.xosEndpoint
46 self.fields['xosUser'].initial = self.instance.xosUser
47 self.fields['xosPassword'].initial = self.instance.xosPassword
Scott Bakerb3a80de2016-09-06 16:51:27 -070048 self.fields['vtnAPIVersion'].initial = self.instance.vtnAPIVersion
Scott Bakerc3ce3e72016-06-20 17:35:19 -070049
50 def save(self, commit=True):
51 self.instance.privateGatewayMac = self.cleaned_data.get("privateGatewayMac")
52 self.instance.localManagementIp = self.cleaned_data.get("localManagementIp")
53 self.instance.ovsdbPort = self.cleaned_data.get("ovsdbPort")
54 self.instance.sshPort = self.cleaned_data.get("sshPort")
55 self.instance.sshUser = self.cleaned_data.get("sshUser")
56 self.instance.sshKeyFile = self.cleaned_data.get("sshKeyFile")
57 self.instance.mgmtSubnetBits = self.cleaned_data.get("mgmtSubnetBits")
58 self.instance.xosEndpoint = self.cleaned_data.get("xosEndpoint")
59 self.instance.xosUser = self.cleaned_data.get("xosUser")
60 self.instance.xosPassword = self.cleaned_data.get("xosPassword")
Scott Bakerb3a80de2016-09-06 16:51:27 -070061 self.instance.vtnAPIVersion = self.cleaned_data.get("vtnAPIVersion")
Scott Bakerc3ce3e72016-06-20 17:35:19 -070062 return super(VTNServiceForm, self).save(commit=commit)
63
64 class Meta:
65 model = VTNService
Zack Williams13df2672016-06-27 08:34:01 -070066 fields = '__all__'
Scott Bakerc3ce3e72016-06-20 17:35:19 -070067
68class VTNServiceAdmin(ReadOnlyAwareAdmin):
69 model = VTNService
70 form = VTNServiceForm
71 verbose_name = "VTN Service"
72 verbose_name_plural = "VTN Service"
73 list_display = ("backend_status_icon", "name", "enabled")
74 list_display_links = ('backend_status_icon', 'name', )
75 fieldsets = [(None, {'fields': ['backend_status_text', 'name','enabled','versionNumber','description',"view_url","icon_url",
Scott Bakerb3a80de2016-09-06 16:51:27 -070076 'privateGatewayMac', 'localManagementIp', 'ovsdbPort', 'sshPort', 'sshUser', 'sshKeyFile', 'mgmtSubnetBits', 'xosEndpoint', 'xosUser', 'xosPassword', 'vtnAPIVersion' ], 'classes':['suit-tab suit-tab-general']})]
Scott Bakerc3ce3e72016-06-20 17:35:19 -070077 readonly_fields = ('backend_status_text', )
78 inlines = [SliceInline,ServiceAttrAsTabInline,ServicePrivilegeInline]
79
80 extracontext_registered_admins = True
81
82 user_readonly_fields = ["name", "enabled", "versionNumber", "description"]
83
84 suit_form_tabs =(('general', 'VTN Service Details'),
85# ('administration', 'Administration'),
86 ('slices','Slices'),
87 ('serviceattrs','Additional Attributes'),
88 ('serviceprivileges','Privileges'),
89 )
90
91 suit_form_includes = ( # ('vtnadmin.html', 'top', 'administration'),
92 ) #('hpctools.html', 'top', 'tools') )
93
Zack Williamsabe24da2016-06-27 13:09:00 -070094 def get_queryset(self, request):
Scott Bakerc3ce3e72016-06-20 17:35:19 -070095 return VTNService.get_service_objects_by_user(request.user)
96
97admin.site.register(VTNService, VTNServiceAdmin)