blob: ce4888f43874e28f4571dd847b6318fb96cd10bb [file] [log] [blame]
Scott Bakerb3546602015-07-31 12:30:28 -07001import os
2import sys
3
Tony Mack3de59e32015-08-19 11:58:18 -04004from core.models import Slice,Instance,User,Flavor,Node,Image
Scott Bakerb3546602015-07-31 12:30:28 -07005
6class XOSNodeSelector(object):
Scott Baker84377382015-08-10 17:06:42 -07007 def __init__(self, user, mem_size=None, num_cpus=None, disk_size=None, hostname = None):
Scott Bakerb3546602015-07-31 12:30:28 -07008 self.user = user
Scott Baker84377382015-08-10 17:06:42 -07009 self.hostname = None
Scott Bakerb3546602015-07-31 12:30:28 -070010
11 def get_allowed_nodes(self):
12 # TODO: logic to get nodes that the user can use
13 nodes = Node.objects.all()
Scott Baker84377382015-08-10 17:06:42 -070014
15 if self.hostname:
16 nodes = nodes.filter(name = self.hostname)
17
Scott Bakerb3546602015-07-31 12:30:28 -070018 return nodes
19
20 def get_nodes(self, quantity):
21 nodes = self.get_allowed_nodes()
Scott Baker6a6e8b02016-02-02 14:10:23 -080022 # TODO: filter out any nonfunctional nodes
23 # sort by fewest number of instances
24 nodes = sorted(nodes, key=lambda node: node.instances.all().count())
Scott Bakerb3546602015-07-31 12:30:28 -070025 return nodes[:quantity]
26