old_contents: import os
  import sys
  
  from core.models import Slice,Sliver,User,Flavor,Node,Image
  
  class XOSFlavorSelector(object):
      def __init__(self, user, mem_size=None, num_cpus=None, disk_size=None):
          self.user = user
          self.mem_size = self.get_mb(mem_size)
          self.num_cpus = int(num_cpus)
          self.disk_size = self.get_gb(disk_size)
  
      def get_gb(self, s):
          if "GB" in s:
              return int(s.split("GB")[0].strip())
          if "MB" in s:
              return int(s.split("MB")[0].strip())/1024
          return int(s)
  
      def get_mb(self, s):
          return self.get_gb(s) * 1024
  
      def get_flavor(self):
          flavor = "m1.tiny"
          if (self.mem_size>512) or (self.disk_size>1):
              flavor = "m1.small"
          if (self.mem_size>2048) or (self.disk_size>20) or (self.num_cpus>1):
              flavor = "m1.medium"
          if (self.mem_size>4096) or (self.disk_size>40) or (self.num_cpus>2):
              flavor = "m1.large"
          if (self.mem_size>8192) or (self.disk_size>80) or (self.num_cpus>4):
              flavor = "m1.xlarge"
  
          return Flavor.objects.get(name=flavor)
  
  
new_contents: import os
  import sys
  
  from core.models import Slice,Sliver,User,Flavor,Node,Image
  
  class XOSFlavorSelector(object):
      def __init__(self, user, mem_size=None, num_cpus=None, disk_size=None):
          self.user = user
          self.mem_size = self.get_mb(mem_size)
          self.num_cpus = int(num_cpus)
          self.disk_size = self.get_gb(disk_size)
  
      def get_gb(self, s):
          if "GB" in s:
              return int(s.split("GB")[0].strip())
          if "MB" in s:
              return int(s.split("MB")[0].strip())/1024
          return int(s)
  
      def get_mb(self, s):
          if "GB" in s:
              return int(s.split("GB")[0].strip())*1024
          if "MB" in s:
              return int(s.split("MB")[0].strip())
          return int(s)
  
      def get_flavor(self):
          flavor = "m1.tiny"
          if (self.mem_size>512) or (self.disk_size>1):
              flavor = "m1.small"
          if (self.mem_size>2048) or (self.disk_size>20) or (self.num_cpus>1):
              flavor = "m1.medium"
          if (self.mem_size>4096) or (self.disk_size>40) or (self.num_cpus>2):
              flavor = "m1.large"
          if (self.mem_size>8192) or (self.disk_size>80) or (self.num_cpus>4):
              flavor = "m1.xlarge"
  
          return Flavor.objects.get(name=flavor)
  
  
subject: fix flavor rounding away MB