Scott Baker | 6821701 | 2015-08-10 17:06:23 -0700 | [diff] [blame] | 1 | import os |
| 2 | import sys |
| 3 | |
Tony Mack | 3de59e3 | 2015-08-19 11:58:18 -0400 | [diff] [blame] | 4 | from core.models import Slice,Instance,User,Flavor,Node,Image |
Scott Baker | 6821701 | 2015-08-10 17:06:23 -0700 | [diff] [blame] | 5 | |
| 6 | class XOSFlavorSelector(object): |
| 7 | def __init__(self, user, mem_size=None, num_cpus=None, disk_size=None): |
| 8 | self.user = user |
| 9 | self.mem_size = self.get_mb(mem_size) |
| 10 | self.num_cpus = int(num_cpus) |
| 11 | self.disk_size = self.get_gb(disk_size) |
| 12 | |
| 13 | def get_gb(self, s): |
| 14 | if "GB" in s: |
| 15 | return int(s.split("GB")[0].strip()) |
| 16 | if "MB" in s: |
| 17 | return int(s.split("MB")[0].strip())/1024 |
| 18 | return int(s) |
| 19 | |
| 20 | def get_mb(self, s): |
Scott Baker | 80f1266 | 2015-09-08 17:23:38 -0700 | [diff] [blame] | 21 | if "GB" in s: |
| 22 | return int(s.split("GB")[0].strip())*1024 |
| 23 | if "MB" in s: |
| 24 | return int(s.split("MB")[0].strip()) |
| 25 | return int(s) |
Scott Baker | 6821701 | 2015-08-10 17:06:23 -0700 | [diff] [blame] | 26 | |
| 27 | def get_flavor(self): |
| 28 | flavor = "m1.tiny" |
| 29 | if (self.mem_size>512) or (self.disk_size>1): |
| 30 | flavor = "m1.small" |
| 31 | if (self.mem_size>2048) or (self.disk_size>20) or (self.num_cpus>1): |
| 32 | flavor = "m1.medium" |
| 33 | if (self.mem_size>4096) or (self.disk_size>40) or (self.num_cpus>2): |
| 34 | flavor = "m1.large" |
| 35 | if (self.mem_size>8192) or (self.disk_size>80) or (self.num_cpus>4): |
| 36 | flavor = "m1.xlarge" |
| 37 | |
| 38 | return Flavor.objects.get(name=flavor) |
| 39 | |