save() and delete() uses caller's credentials to init openstackdriver client
[plstackapi.git] / plstackapi / core / admin.py
index dae2256..82cf613 100644 (file)
@@ -1,8 +1,10 @@
 from plstackapi.core.models import Site
 from plstackapi.core.models import *
+from plstackapi.openstack.driver import OpenStackDriver
+from plstackapi.openstack.client import OpenStackClient
+
 from django.contrib import admin
 from django.contrib.auth.models import Group
-
 from django import forms
 from django.utils.safestring import mark_safe
 from django.contrib.auth.admin import UserAdmin
@@ -62,7 +64,6 @@ class DeploymentNetworkAdminForm(forms.ModelForm):
 
     def save(self, commit=True):
         deploymentNetwork = super(DeploymentNetworkAdminForm, self).save(commit=False)
-
         if commit:
             deploymentNetwork.save()
 
@@ -93,6 +94,17 @@ class KeyAdmin(admin.ModelAdmin):
     ]
     list_display = ['name', 'key', 'type', 'blacklisted', 'user']
 
+    def save_model(self, request, obj, form, change):
+        # attach the caller's openstack clien connection to the object 
+        client = OpenStackClient(tenant=request.user.site.login_base, **request.session.get('auth', {}))
+        obj.driver = OpenStackDriver(client=client)
+        obj.save()
+
+    def delete_model(self, request, obj):
+        client = OpenStackClient(tenant=request.user.site.login_base, **request.session.get('auth', {}))
+        obj.driver = OpenStackDriver(client=client)
+        obj.delete()
+
 class SliceAdmin(PlanetStackBaseAdmin):
     fields = ['name', 'site', 'instantiation', 'description', 'slice_url']
     list_display = ('name', 'site','slice_url', 'instantiation')