-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCES_Decider.py
29 lines (26 loc) · 950 Bytes
/
CES_Decider.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from .Decider import *
from provisioner.src.utils import *
from .src.opt import *
class CESDecider(Decider):
def __init__(self):
super().__init__()
self.model_name = 'CES'
self.search = LocalSearch
self.model_loaded = False
def load_model(self):
# Assume pretrained model loaded by provisioner
self.feats = len(self.env.hostlist)
self.model = self.env.provisioner.model
self.host_util = self.env.provisioner.host_util
self.model_loaded = True
def decision(self, workflowlist):
if not self.model_loaded: self.load_model()
predips = self.env.provisioner.predips
opt = self.search(predips, self.env, [w[3] for w in workflowlist], [w[2] for w in workflowlist])
decisions = opt.search()
results = []
for i, (CreationID, interval, SLA, application) in enumerate(workflowlist):
choice = decisions[i]
tasklist = self.createTasks(CreationID, interval, SLA, application, choice)
results += tasklist
return results