widgets = {
'password': forms.PasswordInput(),
}
+
class UserAdmin(admin.ModelAdmin):
form = UserForm
fieldsets = [
('User', {'fields': ['firstname', 'lastname', 'email', 'password', 'phone', 'user_url', 'is_admin', 'site']})
]
list_display = ['firstname', 'lastname', 'email', 'password', 'phone', 'user_url', 'is_admin', 'site']
- search_fields = ['email']
+ search_fields = ['email']
+
+class KeyAdmin(admin.ModelAdmin):
+ fieldsets = [
+ ('Key', {'fields': ['name', 'key', 'type', 'blacklisted', 'user']})
+ ]
+ list_display = ['name', 'key', 'type', 'blacklisted', 'user']
class SliceAdmin(PlanetStackBaseAdmin):
fields = ['name', 'site', 'instantiation', 'description', 'slice_url']
list_display = ('name', 'site', 'deploymentNetwork')
list_filter = ('deploymentNetwork',)
-
class RoleAdmin(admin.ModelAdmin):
fieldsets = [
('Role', {'fields': ['role_type']})
admin.site.register(Node, NodeAdmin)
admin.site.register(Sliver)
admin.site.register(Flavor)
-admin.site.register(Key)
+admin.site.register(Key, KeyAdmin)
admin.site.register(Role, RoleAdmin)
admin.site.register(User, UserAdmin)
admin.site.register(DeploymentNetwork, DeploymentNetworkAdmin)
from django.db import models
from plstackapi.core.models import PlCoreBase
from plstackapi.core.models import User
+from plstackapi.openstack.driver import OpenStackDriver
# Create your models here.
class Key(PlCoreBase):
name = models.CharField(max_length=256, unique=True)
+ key_id = models.CharField(max_length=256, unique=True, blank=True)
key = models.CharField(max_length=512)
type = models.CharField(max_length=256)
blacklisted = models.BooleanField(default=False)
user = models.ForeignKey(User, related_name='keys')
def __unicode__(self): return u'%s' % (self.name)
+
+ def save(self, *args, **kwds):
+ driver = OpenStackDriver()
+ if not self.key_id:
+ key_fields = {'name': self.name,
+ 'key': self.key}
+ nova_key = driver.create_keypair(**key_fields)
+ print nova_key.id
+ self.key_id = nova_key.id
+ super(Key, self).save(*args, **kwds)
+
+ def delete(self, *args, **kwds):
+ driver = OpenStackDriver()
+ if self.key_id:
+ driver.delete_keypair(self.key_id)
+ super(Key, self).delete(*args, **kwds)
+
key = self.shell.nova.keypairs.create(name=name, public_key=key)
return key
- def delete_keypair(self, name):
- keys = self.shell.nova.keypairs.findall(name=name)
+ def delete_keypair(self, id):
+ keys = self.shell.nova.keypairs.findall(id=id)
+ print keys
for key in keys:
self.shell.nova.keypairs.delete(key)
return 1