88
99from __future__ import unicode_literals
1010import importlib
11+ import json
1112
1213from django .conf import settings
1314from django .db import models
@@ -82,12 +83,22 @@ def __str__(self):
8283 return '{0} : {1}' .format (self .owner .username , self .id )
8384
8485
86+ @python_2_unicode_compatible
87+ class ProviderManager (models .Manager ):
88+
89+ def seed (self , user , ** kwargs ):
90+ providers = (('ec2' , 'ec2' ),)
91+ for p_id , p_type in providers :
92+ self .create (owner = user , id = p_id , type = p_type , creds = '{}' )
93+
94+
8595@python_2_unicode_compatible
8696class Provider (UuidAuditedModel ):
8797
8898 """
8999 Cloud provider information for a user. Available as `user.provider_set`.
90100 """
101+ objects = ProviderManager ()
91102
92103 PROVIDERS = (
93104 ('ec2' , 'Amazon Elastic Compute Cloud (EC2)' ),
@@ -103,12 +114,50 @@ class Meta:
103114 unique_together = (('owner' , 'id' ),)
104115
105116
117+ @python_2_unicode_compatible
118+ class FlavorManager (models .Manager ):
119+
120+ def seed (self , user , ** kwargs ):
121+ # TODO: add optimized AMIs to default flavors
122+ flavors = (
123+ {'id' : 'ec2-us-east-1' ,
124+ 'provider' : 'ec2' ,
125+ 'params' : json .dumps ({'region' : 'us-east-1' })},
126+ {'id' : 'ec2-us-west-1' ,
127+ 'provider' : 'ec2' ,
128+ 'params' : json .dumps ({'region' : 'us-west-1' })},
129+ {'id' : 'ec2-us-west-2' ,
130+ 'provider' : 'ec2' ,
131+ 'params' : json .dumps ({'region' : 'us-west-2' })},
132+ {'id' : 'ec2-eu-west-1' ,
133+ 'provider' : 'ec2' ,
134+ 'params' : json .dumps ({'region' : 'eu-west-1' })},
135+ {'id' : 'ec2-ap-northeast-1' ,
136+ 'provider' : 'ec2' ,
137+ 'params' : json .dumps ({'region' : 'ap-northeast-1' })},
138+ {'id' : 'ec2-ap-southeast-1' ,
139+ 'provider' : 'ec2' ,
140+ 'params' : json .dumps ({'region' : 'ap-southeast-1' })},
141+ {'id' : 'ec2-ap-southeast-2' ,
142+ 'provider' : 'ec2' ,
143+ 'params' : json .dumps ({'region' : 'ap-southeast-2' })},
144+ {'id' : 'ec2-sa-east-1' ,
145+ 'provider' : 'ec2' ,
146+ 'params' : json .dumps ({'region' : 'sa-east-1' })},
147+ )
148+ for flavor in flavors :
149+ provider = flavor .pop ('provider' )
150+ flavor ['provider' ] = Provider .objects .get (owner = user , id = provider )
151+ self .create (owner = user , ** flavor )
152+
153+
106154@python_2_unicode_compatible
107155class Flavor (UuidAuditedModel ):
108156
109157 """
110158 Virtual machine flavors available as `user.flavor_set`.
111159 """
160+ objects = FlavorManager ()
112161
113162 owner = models .ForeignKey (settings .AUTH_USER_MODEL )
114163 id = models .SlugField (max_length = 64 )
0 commit comments