save() and delete() uses caller's credentials to init openstackdriver client
[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
6 # Create your models here.
7
8 class Key(PlCoreBase):
9     name = models.CharField(max_length=256, unique=True)
10     key_id = models.CharField(max_length=256, unique=True)
11     key = models.CharField(max_length=512)
12     type = models.CharField(max_length=256)
13     blacklisted = models.BooleanField(default=False)
14     user = models.ForeignKey(PLUser, related_name='keys')
15
16     def __unicode__(self):  return u'%s' % (self.name)
17
18     def save(self, *args, **kwds):
19         if not self.key_id:
20             key_fields = {'name': self.name,
21                           'key': self.key}
22             nova_key = self.driver.create_keypair(**key_fields)
23             self.key_id = nova_key.id
24         super(Key, self).save(*args, **kwds)
25
26     def delete(self, *args, **kwds):
27         if self.key_id:
28             self.driver.delete_keypair(self.key_id)
29         super(Key, self).delete(*args, **kwds) 
30