9d4b139cafed12eb80dc1d64231fcc12d092ac10
[plstackapi.git] / plstackapi / core / models / key.py
1 import os
2 from django.db import models
3 from plstackapi.core.models import PlCoreBase
4 from plstackapi.core.models import PLUser
5 from plstackapi.openstack.driver import OpenStackDriver
6
7 # Create your models here.
8
9 class Key(PlCoreBase):
10     name = models.CharField(max_length=256, unique=True)
11     key_id = models.CharField(max_length=256, unique=True)
12     key = models.CharField(max_length=512)
13     type = models.CharField(max_length=256)
14     blacklisted = models.BooleanField(default=False)
15     user = models.ForeignKey(PLUser, related_name='keys')
16
17     def __unicode__(self):  return u'%s' % (self.name)
18
19     def save(self, *args, **kwds):
20         driver = OpenStackDriver()
21         if not self.key_id:
22             key_fields = {'name': self.name,
23                           'key': self.key}
24             nova_key = driver.create_keypair(**key_fields)
25             self.key_id = nova_key.id
26         super(Key, self).save(*args, **kwds)
27
28     def delete(self, *args, **kwds):
29         driver  = OpenStackDriver()
30         if self.key_id:
31             driver.delete_keypair(self.key_id)
32         super(Key, self).delete(*args, **kwds) 
33