1
|
from haizea.core.leases import Lease, Capacity
|
2
|
from haizea.core.scheduler.resourcepool import ResourcePoolNode
|
3
|
from haizea.core.scheduler.slottable import ResourceTuple, SlotTable, ResourceReservation, AvailabilityWindow
|
4
|
from mx import DateTime
|
5
|
import haizea.common.constants as constants
|
6
|
from common import create_ar_lease, create_reservation_from_lease
|
7
|
|
8
|
T1200 = DateTime.DateTime(2006,11,25,12,00)
|
9
|
T1255 = DateTime.DateTime(2006,11,25,12,55)
|
10
|
T1300 = DateTime.DateTime(2006,11,25,13,00)
|
11
|
T1305 = DateTime.DateTime(2006,11,25,13,05)
|
12
|
T1315 = DateTime.DateTime(2006,11,25,13,15)
|
13
|
T1325 = DateTime.DateTime(2006,11,25,13,25)
|
14
|
T1330 = DateTime.DateTime(2006,11,25,13,30)
|
15
|
T1335 = DateTime.DateTime(2006,11,25,13,35)
|
16
|
T1345 = DateTime.DateTime(2006,11,25,13,45)
|
17
|
T1350 = DateTime.DateTime(2006,11,25,13,50)
|
18
|
T1355 = DateTime.DateTime(2006,11,25,13,55)
|
19
|
T1400 = DateTime.DateTime(2006,11,25,14,00)
|
20
|
T1415 = DateTime.DateTime(2006,11,25,14,15)
|
21
|
T1420 = DateTime.DateTime(2006,11,25,14,20)
|
22
|
|
23
|
resource_types_with_max_instances = [(constants.RES_CPU,1),(constants.RES_MEM,1)]
|
24
|
|
25
|
def create_capacities(slottable):
|
26
|
FULL_NODE = Capacity([constants.RES_CPU,constants.RES_MEM])
|
27
|
FULL_NODE.set_quantity(constants.RES_CPU, 100)
|
28
|
FULL_NODE.set_quantity(constants.RES_MEM, 1024)
|
29
|
FULL_NODE = slottable.create_resource_tuple_from_capacity(FULL_NODE)
|
30
|
|
31
|
HALF_NODE = Capacity([constants.RES_CPU,constants.RES_MEM])
|
32
|
HALF_NODE.set_quantity(constants.RES_CPU, 50)
|
33
|
HALF_NODE.set_quantity(constants.RES_MEM, 512)
|
34
|
HALF_NODE = slottable.create_resource_tuple_from_capacity(HALF_NODE)
|
35
|
|
36
|
QRTR_NODE = Capacity([constants.RES_CPU,constants.RES_MEM])
|
37
|
QRTR_NODE.set_quantity(constants.RES_CPU, 25)
|
38
|
QRTR_NODE.set_quantity(constants.RES_MEM, 256)
|
39
|
QRTR_NODE = slottable.create_resource_tuple_from_capacity(QRTR_NODE)
|
40
|
|
41
|
EMPT_NODE = slottable.create_empty_resource_tuple()
|
42
|
|
43
|
return FULL_NODE, HALF_NODE, QRTR_NODE, EMPT_NODE
|
44
|
|
45
|
def sample_slottable_1():
|
46
|
slottable = SlotTable([(constants.RES_CPU,ResourceTuple.SINGLE_INSTANCE),(constants.RES_MEM,ResourceTuple.SINGLE_INSTANCE)])
|
47
|
FULL_NODE, HALF_NODE, QRTR_NODE, EMPT_NODE = create_capacities(slottable)
|
48
|
|
49
|
slottable.add_node(1, FULL_NODE)
|
50
|
slottable.add_node(2, FULL_NODE)
|
51
|
slottable.add_node(3, FULL_NODE)
|
52
|
slottable.add_node(4, FULL_NODE)
|
53
|
|
54
|
lease1 = Lease.create_new(None,{},None,None,None,1,None)
|
55
|
lease1.id = 1
|
56
|
res1 = {2: HALF_NODE}
|
57
|
rr1_1 = ResourceReservation(lease1, T1315, T1325, res1)
|
58
|
rr1_2 = ResourceReservation(lease1, T1325, T1330, res1)
|
59
|
slottable.add_reservation(rr1_1)
|
60
|
slottable.add_reservation(rr1_2)
|
61
|
|
62
|
lease2 = Lease.create_new(None,{},None,None,None,2,None)
|
63
|
lease2.id = 2
|
64
|
res2 = {2: FULL_NODE, 3: FULL_NODE}
|
65
|
rr2 = ResourceReservation(lease2, T1330, T1345, res2)
|
66
|
slottable.add_reservation(rr2)
|
67
|
|
68
|
lease3 = Lease.create_new(None,{},None,None,None,1,None)
|
69
|
lease3.id = 3
|
70
|
res3 = {4: FULL_NODE}
|
71
|
rr3_1 = ResourceReservation(lease3, T1330, T1355, res3)
|
72
|
rr3_2 = ResourceReservation(lease3, T1355, T1400, res3)
|
73
|
slottable.add_reservation(rr3_1)
|
74
|
slottable.add_reservation(rr3_2)
|
75
|
|
76
|
lease4 = Lease.create_new(None,{},None,None,None,1,None)
|
77
|
lease4.id = 4
|
78
|
res4 = {2: QRTR_NODE, 3: HALF_NODE}
|
79
|
rr4 = ResourceReservation(lease4, T1350, T1415, res4)
|
80
|
slottable.add_reservation(rr4)
|
81
|
|
82
|
lease5 = Lease.create_new(None,{},None,None,None,1,None)
|
83
|
lease5.id = 5
|
84
|
res5 = {2: QRTR_NODE}
|
85
|
rr5 = ResourceReservation(lease5, T1350, T1415, res5)
|
86
|
slottable.add_reservation(rr5)
|
87
|
|
88
|
lease6 = Lease.create_new(None,{},None,None,None,1,None)
|
89
|
lease6.id = 6
|
90
|
res6 = {1: FULL_NODE}
|
91
|
rr6 = ResourceReservation(lease6, T1255, T1305, res6)
|
92
|
slottable.add_reservation(rr6)
|
93
|
|
94
|
return slottable, [lease1,lease2,lease3,lease4,lease5,lease6]
|
95
|
|
96
|
def sample_slottable_2():
|
97
|
slottable = SlotTable([(constants.RES_CPU,ResourceTuple.SINGLE_INSTANCE),(constants.RES_MEM,ResourceTuple.SINGLE_INSTANCE)])
|
98
|
FULL_NODE, HALF_NODE, QRTR_NODE, EMPT_NODE = create_capacities(slottable)
|
99
|
|
100
|
slottable.add_node(1, FULL_NODE)
|
101
|
slottable.add_node(2, FULL_NODE)
|
102
|
slottable.add_node(3, FULL_NODE)
|
103
|
slottable.add_node(4, FULL_NODE)
|
104
|
|
105
|
lease1 = create_ar_lease(lease_id = 1,
|
106
|
submit_time = T1200,
|
107
|
start = T1330,
|
108
|
end = T1345,
|
109
|
preemptible = False,
|
110
|
requested_resources = {1: FULL_NODE, 2: FULL_NODE})
|
111
|
create_reservation_from_lease(lease1, {1:1,2:2}, slottable)
|
112
|
|
113
|
lease2 = create_ar_lease(lease_id = 2,
|
114
|
submit_time = T1200,
|
115
|
start = T1315,
|
116
|
end = T1330,
|
117
|
preemptible = False,
|
118
|
requested_resources = {1: HALF_NODE})
|
119
|
create_reservation_from_lease(lease2, {1:1}, slottable)
|
120
|
|
121
|
return slottable, [lease1,lease2]
|
122
|
|
123
|
def sample_slottable_3():
|
124
|
slottable = SlotTable([(constants.RES_CPU,ResourceTuple.SINGLE_INSTANCE),(constants.RES_MEM,ResourceTuple.SINGLE_INSTANCE)])
|
125
|
FULL_NODE, HALF_NODE, QRTR_NODE, EMPT_NODE = create_capacities(slottable)
|
126
|
|
127
|
slottable.add_node(1, FULL_NODE)
|
128
|
slottable.add_node(2, FULL_NODE)
|
129
|
slottable.add_node(3, FULL_NODE)
|
130
|
slottable.add_node(4, FULL_NODE)
|
131
|
|
132
|
lease1 = create_ar_lease(lease_id = 1,
|
133
|
submit_time = T1200,
|
134
|
start = T1345,
|
135
|
end = T1415,
|
136
|
preemptible = False,
|
137
|
requested_resources = {1: FULL_NODE})
|
138
|
create_reservation_from_lease(lease1, {1:1}, slottable)
|
139
|
|
140
|
lease2 = create_ar_lease(lease_id = 2,
|
141
|
submit_time = T1200,
|
142
|
start = T1330,
|
143
|
end = T1415,
|
144
|
preemptible = False,
|
145
|
requested_resources = {1: HALF_NODE})
|
146
|
create_reservation_from_lease(lease2, {1:2}, slottable)
|
147
|
|
148
|
lease3 = create_ar_lease(lease_id = 3,
|
149
|
submit_time = T1200,
|
150
|
start = T1400,
|
151
|
end = T1415,
|
152
|
preemptible = False,
|
153
|
requested_resources = {1: HALF_NODE})
|
154
|
create_reservation_from_lease(lease3, {1:2}, slottable)
|
155
|
|
156
|
return slottable, [lease1, lease2, lease3]
|
157
|
|
158
|
def sample_slottable_4():
|
159
|
slottable = SlotTable([(constants.RES_CPU,ResourceTuple.SINGLE_INSTANCE),(constants.RES_MEM,ResourceTuple.SINGLE_INSTANCE)])
|
160
|
FULL_NODE, HALF_NODE, QRTR_NODE, EMPT_NODE = create_capacities(slottable)
|
161
|
|
162
|
slottable.add_node(1, FULL_NODE)
|
163
|
|
164
|
lease1 = create_ar_lease(lease_id = 1,
|
165
|
submit_time = T1200,
|
166
|
start = T1315,
|
167
|
end = T1420,
|
168
|
preemptible = False,
|
169
|
requested_resources = {1: HALF_NODE})
|
170
|
create_reservation_from_lease(lease1, {1:1}, slottable)
|
171
|
|
172
|
lease2 = create_ar_lease(lease_id = 2,
|
173
|
submit_time = T1200,
|
174
|
start = T1330,
|
175
|
end = T1415,
|
176
|
preemptible = False,
|
177
|
requested_resources = {1: QRTR_NODE})
|
178
|
create_reservation_from_lease(lease2, {1:1}, slottable)
|
179
|
|
180
|
|
181
|
|
182
|
|
183
|
|
184
|
|
185
|
|
186
|
|
187
|
|
188
|
|
189
|
return slottable, [lease1, lease2, None]
|