Project

General

Profile

root / branches / 1.1 / tests / sample_slottables.py @ 847

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

    
187

    
188
    return slottable, [lease1, lease2, None]