X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fadmin.py;h=20fd00064235632124de30cd552e6c59f886b65f;hb=d8dedb099284b8e723a51959e75ecf772d52a34b;hp=29cecfd9d7b3a1e33ee141924b473f2a4d07dd86;hpb=ab27c52305f76cc1be3fd9a0ecd2d41f11599a87;p=plstackapi.git
diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py
index 29cecfd..20fd000 100644
--- a/planetstack/core/admin.py
+++ b/planetstack/core/admin.py
@@ -31,7 +31,7 @@ def backend_icon(obj): # backend_status, enacted, updated):
if (obj.enacted is not None) and obj.enacted >= obj.updated:
return ''
else:
- if obj.backend_status == "Provisioning in progress" or obj.backend_status=="":
+ if ((obj.backend_status is not None) and obj.backend_status.startswith("0 -")) or obj.backend_status == "Provisioning in progress" or obj.backend_status=="":
return '' % obj.backend_status
else:
return '' % html_escape(obj.backend_status, quote=True)
@@ -340,9 +340,9 @@ class NetworkLookerUpper:
class SliverInline(PlStackTabularInline):
model = Sliver
- fields = ['backend_status_icon', 'all_ips_string', 'instance_name', 'slice', 'deployment', 'flavor', 'image', 'node']
+ fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name', 'slice', 'deployment', 'flavor', 'image', 'node']
extra = 0
- readonly_fields = ['backend_status_icon', 'all_ips_string', 'instance_name']
+ readonly_fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name']
suit_classes = 'suit-tab suit-tab-slivers'
def queryset(self, request):
@@ -542,7 +542,7 @@ class DeploymentAdminForm(forms.ModelForm):
self.fields['accessControl'].initial = "allow site " + request.user.site.name
if self.instance and self.instance.pk:
- self.fields['sites'].initial = [x for x in self.instance.sites.all()]
+ self.fields['sites'].initial = [x.site for x in self.instance.sitedeployments.all()]
self.fields['images'].initial = [x.image for x in self.instance.imagedeployments.all()]
self.fields['flavors'].initial = self.instance.flavors.all()
@@ -594,7 +594,7 @@ class DeploymentAdminForm(forms.ModelForm):
# create/destroy the through models ourselves. There has to be
# a better way...
- self.manipulate_m2m_objs(deployment, self.cleaned_data['sites'], deployment.sitedeployment.all(), SiteDeployment, "deployment", "site")
+ self.manipulate_m2m_objs(deployment, self.cleaned_data['sites'], deployment.sitedeployments.all(), SiteDeployment, "deployment", "site")
self.manipulate_m2m_objs(deployment, self.cleaned_data['images'], deployment.imagedeployments.all(), ImageDeployments, "deployment", "image")
# manipulate_m2m_objs doesn't work for Flavor/Deployment relationship
# so well handle that manually here
@@ -633,7 +633,7 @@ class DeploymentAdmin(PlanetStackBaseAdmin):
# nodes no longer direclty connected to deployments
#suit_form_tabs =(('sites','Deployment Details'),('nodes','Nodes'),('deploymentprivileges','Privileges'),('tags','Tags'),('imagedeployments','Images'))
- suit_form_tabs =(('sites','Deployment Details'),('deploymentprivileges','Privileges'),,('imagedeployments','Images'))
+ suit_form_tabs =(('sites','Deployment Details'),('deploymentprivileges','Privileges'))
def get_form(self, request, obj=None, **kwargs):
if request.user.isReadOnlyUser():
@@ -669,7 +669,7 @@ class ControllerAdminForm(forms.ModelForm):
super(ControllerAdminForm, self).__init__(*args, **kwargs)
if self.instance and self.instance.pk:
- self.fields['sites'].initial = [x.site_deployment for x in self.instance.controllersite.all()]
+ self.fields['sites'].initial = [x.site for x in self.instance.controllersite.all()]
def manipulate_m2m_objs(self, this_obj, selected_objs, all_relations, relation_class, local_attrname, foreign_attrname):
""" helper function for handling m2m relations from the MultipleChoiceField
@@ -716,7 +716,7 @@ class ControllerAdminForm(forms.ModelForm):
class ControllerAdmin(PlanetStackBaseAdmin):
model = Controller
- fieldList = ['name', 'version', 'backend_type', 'auth_url', 'admin_user', 'admin_tenant','admin_password']
+ fieldList = ['name', 'backend_type', 'version', 'auth_url', 'admin_user', 'admin_tenant','admin_password']
#fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']})]
inlines = [ControllerSiteInline] # ,ControllerImagesInline]
list_display = ['backend_status_icon', 'name', 'version', 'backend_type']
@@ -742,6 +742,13 @@ class ControllerAdmin(PlanetStackBaseAdmin):
return AdminFormMetaClass
+ def save_model(self, request, obj, form, change):
+ # update openstack connection to use this site/tenant
+ obj.save_by_user(request.user)
+
+ def delete_model(self, request, obj):
+ obj.delete_by_user(request.user)
+
class ServiceAttrAsTabInline(PlStackTabularInline):
model = ServiceAttribute
fields = ['name','value']
@@ -763,6 +770,12 @@ class ServiceAdmin(PlanetStackBaseAdmin):
('serviceattrs','Additional Attributes'),
)
+class SiteNodeInline(PlStackTabularInline):
+ model = Node
+ fields = ['name', 'site_deployment']
+ extra = 0
+ suit_classes = 'suit-tab suit-tab-nodes'
+
class SiteAdmin(PlanetStackBaseAdmin):
fieldList = ['backend_status_text', 'name', 'site_url', 'enabled', 'is_public', 'login_base', 'accountLink','location']
fieldsets = [
@@ -776,8 +789,8 @@ class SiteAdmin(PlanetStackBaseAdmin):
list_display = ('backend_status_icon', 'name', 'login_base','site_url', 'enabled')
list_display_links = ('backend_status_icon', 'name', )
filter_horizontal = ('deployments',)
- inlines = [SliceInline,UserInline,TagInline, SitePrivilegeInline, SiteDeploymentInline]
- admin_inlines = [ControllerSite]
+ inlines = [SliceInline,UserInline,TagInline, SitePrivilegeInline, SiteDeploymentInline, SiteNodeInline]
+ admin_inlines = [ControllerSiteInline]
search_fields = ['name']
@property
@@ -787,7 +800,7 @@ class SiteAdmin(PlanetStackBaseAdmin):
('siteprivileges','Privileges'),
('deployments','Deployments'),
('slices','Slices'),
- #('nodes','Nodes'),
+ ('nodes','Nodes'),
]
request=getattr(_thread_locals, "request", None)
@@ -922,6 +935,7 @@ class SliceAdmin(PlanetStackBaseAdmin):
('sliceprivileges','Privileges'),
('slivers','Slivers'),
('reservations','Reservations'),
+ ('tags','Tags'),
]
request=getattr(_thread_locals, "request", None)
@@ -944,7 +958,7 @@ class SliceAdmin(PlanetStackBaseAdmin):
def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
deployment_nodes = []
for node in Node.objects.all():
- deployment_nodes.append( (node.site_deployment.id, node.id, node.name) )
+ deployment_nodes.append( (node.site_deployment.deployment.id, node.id, node.name) )
deployment_flavors = []
for flavor in Flavor.objects.all():
@@ -1074,6 +1088,7 @@ class SliverForm(forms.ModelForm):
widgets = {
'ip': PlainTextWidget(),
'instance_name': PlainTextWidget(),
+ 'instance_id': PlainTextWidget(),
'slice': LinkedSelect,
'deployment': LinkedSelect,
'node': LinkedSelect,
@@ -1089,13 +1104,13 @@ class TagAdmin(PlanetStackBaseAdmin):
class SliverAdmin(PlanetStackBaseAdmin):
form = SliverForm
fieldsets = [
- ('Sliver Details', {'fields': ['backend_status_text', 'slice', 'deployment', 'node', 'ip', 'instance_name', 'flavor', 'image', ], 'classes': ['suit-tab suit-tab-general'], })
+ ('Sliver Details', {'fields': ['backend_status_text', 'slice', 'deployment', 'node', 'ip', 'instance_id', 'instance_name', 'flavor', 'image', ], 'classes': ['suit-tab suit-tab-general'], })
]
readonly_fields = ('backend_status_text', )
- list_display = ['backend_status_icon', 'ip', 'instance_name', 'slice', 'flavor', 'image', 'node', 'deployment']
+ list_display = ['backend_status_icon', 'ip', 'instance_id', 'instance_name', 'slice', 'flavor', 'image', 'node', 'deployment']
list_display_links = ('backend_status_icon', 'ip',)
- suit_form_tabs =(('general', 'Sliver Details'))
+ suit_form_tabs =(('general', 'Sliver Details'),)
inlines = [TagInline]
@@ -1235,7 +1250,7 @@ class UserAdmin(PermissionCheckingAdminMixin, UserAdmin):
add_fieldsets = (
(None, {
'classes': ('wide',),
- 'fields': ('email', 'firstname', 'lastname', 'is_readonly', 'phone', 'public_key','password1', 'password2')},
+ 'fields': ('site', 'email', 'firstname', 'lastname', 'is_readonly', 'phone', 'public_key','password1', 'password2')},
),
)
readonly_fields = ('backend_status_text', )
@@ -1279,9 +1294,10 @@ class ControllerDashboardViewInline(PlStackTabularInline):
class DashboardViewAdmin(PlanetStackBaseAdmin):
fieldsets = [('Dashboard View Details',
- {'fields': ['backend_status_text', 'name', 'url'],
+ {'fields': ['backend_status_text', 'name', 'url', 'enabled'],
'classes': ['suit-tab suit-tab-general']})
]
+ list_display = ["name", "enabled", "url"]
readonly_fields = ('backend_status_text', )
inlines = [ControllerDashboardViewInline]