Project

General

Profile

root / trunk / tests / sample_slottables.py @ 632

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
    #lease3 = create_ar_lease(lease_id = 3,
181
    #                         submit_time = T1200,
182
    #                         start = T1345,
183
    #                         end   = T1400,
184
    #                         preemptible = False,
185
    #                         requested_resources = {1: QRTR_NODE})
186
    #create_reservation_from_lease(lease1, {1:1}, slottable)
187

    
188

    
189
    return slottable, [lease1, lease2, None]