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