Revision 6bbd76d2

b/Makefile.am
86 86
	qa \
87 87
	test \
88 88
	test/data \
89
	test/data/htools \
89 90
	test/data/ovfdata \
90 91
	test/data/ovfdata/other \
91 92
	tools
......
710 711
	test/data/kvm_0.12.5_help.txt \
711 712
	test/data/kvm_0.9.1_help.txt \
712 713
	test/data/sys_drbd_usermode_helper.txt \
714
	test/data/htools/hail-alloc-drbd.json \
715
	test/data/htools/hail-change-group.json \
716
	test/data/htools/hail-node-evac.json \
717
	test/data/htools/hail-reloc-drbd.json \
713 718
	test/data/ovfdata/compr_disk.vmdk.gz \
714 719
	test/data/ovfdata/config.ini \
715 720
	test/data/ovfdata/corrupted_resources.ovf \
b/htools/cli-tests-defs.sh
21 21

  
22 22
HBINARY=${HBINARY:-./htools/htools-hpc}
23 23

  
24
TESTDATA_DIR=${TOP_SRCDIR:-.}/test/data/htools
25

  
24 26
hbal() {
25 27
  HTOOLS=hbal $HBINARY "$@"
26 28
}
b/htools/offline-test.sh
101 101
# policy, then we change all nodes from this group to the allocable
102 102
# one, and we check for rebalancing
103 103
FROOT="$T/simu-rebal-orig"
104
hspace --simu p,4,8T,64g,16 --simu u,4,8T,64g,16 \
104
hspace --simu u,4,8T,64g,16 --simu p,4,8T,64g,16 \
105 105
  -S $FROOT --disk-template drbd -l 8 >/dev/null 2>&1
106 106
for suffix in standard tiered; do
107 107
  RELOC="$T/simu-rebal-merged.$suffix"
......
129 129
done
130 130
echo OK
131 131

  
132
echo IAllocator checks
133
# test that on invalid files it can't parse the request
134
! hail /dev/null 2>&1 | grep -q "Invalid JSON"
135
! hail <(echo '[]') >/dev/null 2>&1
136
! hail <(echo '{}') 2>&1 | grep -q "key 'request' not found"
137
! hail <(echo '{"request": 0}') 2>&1 | grep -q "key 'request'"
138
! hail $TESTDATA_DIR/hail-invalid-reloc.json >/dev/null 2>&1
139

  
140
# just test that it can read the file, print the cluster and generate
141
# pre and post allocation files
142
hail -v -v -v -p $TESTDATA_DIR/hail-alloc-drbd.json \
143
  -S $T/hail-alloc >/dev/null 2>&1
144
! cmp -s $T/hail-alloc.pre-ialloc $T/hail-alloc.post-ialloc
145
hail -v -v -v -p $TESTDATA_DIR/hail-reloc-drbd.json \
146
  -S $T/hail-reloc >/dev/null 2>&1
147
! cmp -s $T/hail-reloc.pre-ialloc $T/hail-reloc.post-ialloc
148

  
149
# and now start the real tests
150
hail $TESTDATA_DIR/hail-alloc-drbd.json | \
151
  grep -q '"success":true,.*,"result":\["node2","node1"\]'
152
hail $TESTDATA_DIR/hail-reloc-drbd.json | \
153
  grep -q '"success":true,.*,"result":\["node1"\]'
154

  
155
hail $TESTDATA_DIR/hail-node-evac.json | \
156
  grep -Fq '"success":true,"info":"Request successful: 0 instances failed to move and 1 were moved successfully"'
157

  
158
hail $TESTDATA_DIR/hail-change-group.json | \
159
  grep -Fq '"success":true,"info":"Request successful: 0 instances failed to move and 1 were moved successfully"'
160

  
161
for evac_mode in primary-only secondary-only all; do
162
  sed -e 's/"evac_mode": "all"/"evac_mode": "'${evac_mode}'"/' \
163
    < $TESTDATA_DIR/hail-node-evac.json \
164
    > $T/hail-node-evac.json.$evac_mode
165
  hail $T/hail-node-evac.json.$evac_mode | \
166
    grep -q '"success":true,"info":"Request successful: 0 instances failed to move and 1 were moved successfully"'
167
done
168

  
169
# check that hail can use the simu and text backends
170
hail --simu p,8,8T,16g,16 $TESTDATA_DIR/hail-alloc-drbd.json | \
171
  grep -q '"success":true,'
172
hail -t $T/simu-rebal-merged.standard $TESTDATA_DIR/hail-alloc-drbd.json | \
173
  grep -q '"success":true,'
174
echo OK
175

  
132 176
echo All OK
b/test/data/htools/hail-alloc-drbd.json
1
{
2
  "cluster_tags": [
3
    "htools:iextags:test",
4
    "htools:iextags:service-group"
5
  ],
6
  "nodegroups": {
7
    "uuid-group-1": {
8
      "ipolicy": {
9
        "std": {
10
          "nic-count": 1,
11
          "disk-size": 1024,
12
          "disk-count": 1,
13
          "memory-size": 128,
14
          "cpu-count": 1,
15
          "spindle-use": 1
16
        },
17
        "min": {
18
          "nic-count": 1,
19
          "disk-size": 128,
20
          "disk-count": 1,
21
          "memory-size": 128,
22
          "cpu-count": 1,
23
          "spindle-use": 1
24
        },
25
        "max": {
26
          "nic-count": 8,
27
          "disk-size": 1048576,
28
          "disk-count": 16,
29
          "memory-size": 32768,
30
          "cpu-count": 8,
31
          "spindle-use": 8
32
        },
33
        "vcpu-ratio": 4.0,
34
        "disk-templates": [
35
          "sharedfile",
36
          "diskless",
37
          "plain",
38
          "blockdev",
39
          "drbd",
40
          "file",
41
          "rbd"
42
        ],
43
        "spindle-ratio": 32.0
44
      },
45
      "alloc_policy": "preferred",
46
      "name": "default"
47
    }
48
  },
49
  "ipolicy": {
50
    "std": {
51
      "nic-count": 1,
52
      "disk-size": 1024,
53
      "memory-size": 128,
54
      "cpu-count": 1,
55
      "disk-count": 1,
56
      "spindle-use": 1
57
    },
58
    "min": {
59
      "nic-count": 1,
60
      "disk-size": 1024,
61
      "memory-size": 128,
62
      "cpu-count": 1,
63
      "disk-count": 1,
64
      "spindle-use": 1
65
    },
66
    "max": {
67
      "nic-count": 8,
68
      "disk-size": 1048576,
69
      "memory-size": 32768,
70
      "cpu-count": 8,
71
      "disk-count": 16,
72
      "spindle-use": 8
73
    },
74
    "vcpu-ratio": 4.0,
75
    "disk-templates": [
76
      "sharedfile",
77
      "diskless",
78
      "plain",
79
      "blockdev",
80
      "drbd",
81
      "file",
82
      "rbd"
83
    ],
84
    "spindle-ratio": 32.0
85
  },
86
  "enabled_hypervisors": [
87
    "xen-pvm",
88
    "xen-hvm"
89
  ],
90
  "cluster_name": "cluster",
91
  "instances": {
92
    "instance14": {
93
      "disks": [
94
        {
95
          "mode": "rw",
96
          "size": 128
97
        }
98
      ],
99
      "disk_space_total": 256,
100
      "hypervisor": "xen-pvm",
101
      "tags": [],
102
      "nics": [
103
        {
104
          "ip": null,
105
          "mac": "aa:00:00:eb:0b:a5",
106
          "link": "xen-br0",
107
          "mode": "bridged",
108
          "bridge": "xen-br0"
109
        }
110
      ],
111
      "vcpus": 1,
112
      "admin_state": "down",
113
      "disk_template": "drbd",
114
      "spindle_use": 1,
115
      "memory": 128,
116
      "nodes": [
117
        "node3",
118
        "node4"
119
      ],
120
      "os": "debian-image"
121
    },
122
    "instance13": {
123
      "disks": [
124
        {
125
          "mode": "rw",
126
          "size": 512
127
        }
128
      ],
129
      "disk_space_total": 512,
130
      "hypervisor": "xen-pvm",
131
      "tags": [],
132
      "nics": [
133
        {
134
          "ip": null,
135
          "mac": "aa:00:00:7f:8c:9c",
136
          "link": "xen-br1",
137
          "mode": "bridged",
138
          "bridge": "xen-br1"
139
        }
140
      ],
141
      "vcpus": 1,
142
      "spindle_use": 1,
143
      "admin_state": "down",
144
      "disk_template": "plain",
145
      "memory": 128,
146
      "nodes": [
147
        "node4"
148
      ],
149
      "os": "instance-debootstrap"
150
    },
151
    "instance18": {
152
      "disks": [
153
        {
154
          "mode": "rw",
155
          "size": 128
156
        }
157
      ],
158
      "disk_space_total": 128,
159
      "hypervisor": "xen-pvm",
160
      "tags": [],
161
      "nics": [
162
        {
163
          "ip": null,
164
          "mac": "aa:00:00:55:94:93",
165
          "link": "xen-br0",
166
          "mode": "bridged",
167
          "bridge": "xen-br0"
168
        }
169
      ],
170
      "vcpus": 1,
171
      "spindle_use": 1,
172
      "admin_state": "down",
173
      "disk_template": "plain",
174
      "memory": 8192,
175
      "nodes": [
176
        "node4"
177
      ],
178
      "os": "instance-debootstrap"
179
    },
180
    "instance19": {
181
      "disks": [
182
        {
183
          "mode": "rw",
184
          "size": 128
185
        }
186
      ],
187
      "disk_space_total": 256,
188
      "hypervisor": "xen-pvm",
189
      "tags": [],
190
      "nics": [
191
        {
192
          "ip": null,
193
          "mac": "aa:00:00:15:92:6f",
194
          "link": "xen-br0",
195
          "mode": "bridged",
196
          "bridge": "xen-br0"
197
        }
198
      ],
199
      "vcpus": 1,
200
      "spindle_use": 1,
201
      "admin_state": "down",
202
      "disk_template": "drbd",
203
      "memory": 128,
204
      "nodes": [
205
        "node3",
206
        "node4"
207
      ],
208
      "os": "debian-image"
209
    },
210
    "instance2": {
211
      "disks": [
212
        {
213
          "mode": "rw",
214
          "size": 128
215
        }
216
      ],
217
      "disk_space_total": 256,
218
      "hypervisor": "xen-pvm",
219
      "tags": [],
220
      "nics": [
221
        {
222
          "ip": null,
223
          "mac": "aa:00:00:73:20:3e",
224
          "link": "xen-br0",
225
          "mode": "bridged",
226
          "bridge": "xen-br0"
227
        }
228
      ],
229
      "vcpus": 1,
230
      "spindle_use": 1,
231
      "admin_state": "up",
232
      "disk_template": "drbd",
233
      "memory": 128,
234
      "nodes": [
235
        "node3",
236
        "node4"
237
      ],
238
      "os": "debian-image"
239
    },
240
    "instance3": {
241
      "disks": [
242
        {
243
          "mode": "rw",
244
          "size": 256
245
        },
246
        {
247
          "mode": "rw",
248
          "size": 128
249
        }
250
      ],
251
      "disk_space_total": 384,
252
      "hypervisor": "xen-pvm",
253
      "tags": [],
254
      "nics": [
255
        {
256
          "ip": null,
257
          "mac": "aa:00:00:ec:e8:a2",
258
          "link": "xen-br0",
259
          "mode": "bridged",
260
          "bridge": "xen-br0"
261
        }
262
      ],
263
      "vcpus": 1,
264
      "spindle_use": 1,
265
      "admin_state": "down",
266
      "disk_template": "plain",
267
      "memory": 128,
268
      "nodes": [
269
        "node4"
270
      ],
271
      "os": "debian-image"
272
    },
273
    "instance4": {
274
      "disks": [
275
        {
276
          "mode": "rw",
277
          "size": 2048
278
        }
279
      ],
280
      "disk_space_total": 2176,
281
      "hypervisor": "xen-pvm",
282
      "tags": [],
283
      "nics": [
284
        {
285
          "ip": null,
286
          "mac": "aa:00:00:62:b0:76",
287
          "link": "xen-br0",
288
          "mode": "bridged",
289
          "bridge": "xen-br0"
290
        }
291
      ],
292
      "vcpus": 1,
293
      "spindle_use": 1,
294
      "admin_state": "down",
295
      "disk_template": "drbd",
296
      "memory": 128,
297
      "nodes": [
298
        "node4",
299
        "node3"
300
      ],
301
      "os": "instance-debootstrap"
302
    },
303
    "instance8": {
304
      "disks": [
305
        {
306
          "mode": "rw",
307
          "size": 256
308
        }
309
      ],
310
      "disk_space_total": 256,
311
      "hypervisor": "kvm",
312
      "tags": [],
313
      "nics": [
314
        {
315
          "ip": null,
316
          "mac": "aa:00:00:3f:6d:e3",
317
          "link": "xen-br0",
318
          "mode": "bridged",
319
          "bridge": "xen-br0"
320
        }
321
      ],
322
      "vcpus": 1,
323
      "spindle_use": 1,
324
      "admin_state": "down",
325
      "disk_template": "plain",
326
      "memory": 128,
327
      "nodes": [
328
        "node4"
329
      ],
330
      "os": "debian-image"
331
    },
332
    "instance9": {
333
      "disks": [
334
        {
335
          "mode": "rw",
336
          "size": 128
337
        }
338
      ],
339
      "disk_space_total": 256,
340
      "hypervisor": "xen-pvm",
341
      "tags": [
342
        "test:test"
343
      ],
344
      "nics": [
345
        {
346
          "ip": null,
347
          "mac": "aa:00:00:10:d2:01",
348
          "link": "xen-br0",
349
          "mode": "bridged",
350
          "bridge": "xen-br0"
351
        }
352
      ],
353
      "vcpus": 1,
354
      "spindle_use": 1,
355
      "admin_state": "down",
356
      "disk_template": "drbd",
357
      "memory": 128,
358
      "nodes": [
359
        "node3",
360
        "node4"
361
      ],
362
      "os": "instance-debootstrap"
363
    },
364
    "instance20": {
365
      "disks": [
366
        {
367
          "mode": "rw",
368
          "size": 512
369
        }
370
      ],
371
      "disk_space_total": 512,
372
      "hypervisor": "kvm",
373
      "tags": [],
374
      "nics": [
375
        {
376
          "ip": null,
377
          "mac": "aa:00:00:db:2a:6d",
378
          "link": "xen-br0",
379
          "mode": "bridged",
380
          "bridge": "xen-br0"
381
        }
382
      ],
383
      "vcpus": 1,
384
      "spindle_use": 1,
385
      "admin_state": "down",
386
      "disk_template": "plain",
387
      "memory": 128,
388
      "nodes": [
389
        "node4"
390
      ],
391
      "os": "instance-debootstrap"
392
    }
393
  },
394
  "version": 2,
395
  "nodes": {
396
    "node1": {
397
      "total_disk": 1377280,
398
      "total_cpus": 4,
399
      "group": "uuid-group-1",
400
      "secondary_ip": "192.168.2.1",
401
      "i_pri_up_memory": 0,
402
      "tags": [],
403
      "master_candidate": true,
404
      "free_memory": 31389,
405
      "ndparams": {
406
        "spindle_count": 1,
407
        "oob_program": null
408
      },
409
      "reserved_memory": 1017,
410
      "master_capable": true,
411
      "free_disk": 1377280,
412
      "drained": false,
413
      "total_memory": 32763,
414
      "primary_ip": "192.168.1.1",
415
      "i_pri_memory": 0,
416
      "vm_capable": true,
417
      "offline": false
418
    },
419
    "node2": {
420
      "total_disk": 1377280,
421
      "total_cpus": 4,
422
      "group": "uuid-group-1",
423
      "secondary_ip": "192.168.2.2",
424
      "i_pri_up_memory": 0,
425
      "tags": [],
426
      "master_candidate": true,
427
      "free_memory": 31746,
428
      "ndparams": {
429
        "spindle_count": 1,
430
        "oob_program": null
431
      },
432
      "reserved_memory": 1017,
433
      "master_capable": true,
434
      "free_disk": 1376640,
435
      "drained": false,
436
      "total_memory": 32763,
437
      "primary_ip": "192.168.1.2",
438
      "i_pri_memory": 0,
439
      "vm_capable": true,
440
      "offline": false
441
    },
442
    "node3": {
443
      "total_disk": 1377304,
444
      "total_cpus": 4,
445
      "group": "uuid-group-1",
446
      "secondary_ip": "192.168.2.3",
447
      "i_pri_up_memory": 128,
448
      "tags": [],
449
      "master_candidate": true,
450
      "free_memory": 31234,
451
      "ndparams": {
452
        "spindle_count": 1,
453
        "oob_program": null
454
      },
455
      "reserved_memory": 1017,
456
      "master_capable": true,
457
      "free_disk": 1373336,
458
      "drained": false,
459
      "total_memory": 32763,
460
      "primary_ip": "192.168.1.3",
461
      "i_pri_memory": 2432,
462
      "vm_capable": true,
463
      "offline": false
464
    },
465
    "node4": {
466
      "total_disk": 1377280,
467
      "total_cpus": 4,
468
      "group": "uuid-group-1",
469
      "secondary_ip": "192.168.2.4",
470
      "i_pri_up_memory": 128,
471
      "tags": [],
472
      "master_candidate": true,
473
      "free_memory": 22914,
474
      "ndparams": {
475
        "spindle_count": 1,
476
        "oob_program": null
477
      },
478
      "reserved_memory": 1017,
479
      "master_capable": true,
480
      "free_disk": 1371520,
481
      "drained": false,
482
      "total_memory": 32763,
483
      "primary_ip": "192.168.1.4",
484
      "i_pri_memory": 23552,
485
      "vm_capable": true,
486
      "offline": false
487
    }
488
  },
489
  "request": {
490
    "disks": [
491
      {
492
        "mode": "rw",
493
        "size": 1024
494
      }
495
    ],
496
    "required_nodes": 2,
497
    "name": "instance1",
498
    "tags": [],
499
    "hypervisor": "xen-pvm",
500
    "disk_space_total": 1024,
501
    "nics": [
502
      {
503
        "ip": null,
504
        "mac": "00:11:22:33:44:55",
505
        "bridge": null
506
      }
507
    ],
508
    "vcpus": 1,
509
    "spindle_use": 1,
510
    "os": "instance-debootstrap",
511
    "disk_template": "drbd",
512
    "memory": 1024,
513
    "type": "allocate"
514
  }
515
}
b/test/data/htools/hail-change-group.json
1
{
2
  "cluster_tags": [
3
    "htools:iextags:test",
4
    "htools:iextags:service-group"
5
  ],
6
  "nodegroups": {
7
    "uuid-group-1": {
8
      "ipolicy": {
9
        "std": {
10
          "nic-count": 1,
11
          "disk-size": 1024,
12
          "disk-count": 1,
13
          "memory-size": 128,
14
          "cpu-count": 1,
15
          "spindle-use": 1
16
        },
17
        "min": {
18
          "nic-count": 1,
19
          "disk-size": 128,
20
          "disk-count": 1,
21
          "memory-size": 128,
22
          "cpu-count": 1,
23
          "spindle-use": 1
24
        },
25
        "max": {
26
          "nic-count": 8,
27
          "disk-size": 1048576,
28
          "disk-count": 16,
29
          "memory-size": 32768,
30
          "cpu-count": 8,
31
          "spindle-use": 8
32
        },
33
        "vcpu-ratio": 4.0,
34
        "disk-templates": [
35
          "sharedfile",
36
          "diskless",
37
          "plain",
38
          "blockdev",
39
          "drbd",
40
          "file",
41
          "rbd"
42
        ],
43
        "spindle-ratio": 32.0
44
      },
45
      "alloc_policy": "preferred",
46
      "name": "default"
47
    },
48
    "uuid-group-2": {
49
      "ipolicy": {
50
        "std": {
51
          "nic-count": 1,
52
          "disk-size": 1024,
53
          "disk-count": 1,
54
          "memory-size": 128,
55
          "cpu-count": 1,
56
          "spindle-use": 1
57
        },
58
        "min": {
59
          "nic-count": 1,
60
          "disk-size": 128,
61
          "disk-count": 1,
62
          "memory-size": 128,
63
          "cpu-count": 1,
64
          "spindle-use": 1
65
        },
66
        "max": {
67
          "nic-count": 8,
68
          "disk-size": 1048576,
69
          "disk-count": 16,
70
          "memory-size": 32768,
71
          "cpu-count": 8,
72
          "spindle-use": 8
73
        },
74
        "vcpu-ratio": 4.0,
75
        "disk-templates": [
76
          "sharedfile",
77
          "diskless",
78
          "plain",
79
          "blockdev",
80
          "drbd",
81
          "file",
82
          "rbd"
83
        ],
84
        "spindle-ratio": 32.0
85
      },
86
      "alloc_policy": "preferred",
87
      "name": "empty"
88
    }
89
  },
90
  "ipolicy": {
91
    "std": {
92
      "nic-count": 1,
93
      "disk-size": 1024,
94
      "memory-size": 128,
95
      "cpu-count": 1,
96
      "disk-count": 1,
97
      "spindle-use": 1
98
    },
99
    "min": {
100
      "nic-count": 1,
101
      "disk-size": 1024,
102
      "memory-size": 128,
103
      "cpu-count": 1,
104
      "disk-count": 1,
105
      "spindle-use": 1
106
    },
107
    "max": {
108
      "nic-count": 8,
109
      "disk-size": 1048576,
110
      "memory-size": 32768,
111
      "cpu-count": 8,
112
      "disk-count": 16,
113
      "spindle-use": 8
114
    },
115
    "vcpu-ratio": 4.0,
116
    "disk-templates": [
117
      "sharedfile",
118
      "diskless",
119
      "plain",
120
      "blockdev",
121
      "drbd",
122
      "file",
123
      "rbd"
124
    ],
125
    "spindle-ratio": 32.0
126
  },
127
  "enabled_hypervisors": [
128
    "xen-pvm",
129
    "xen-hvm"
130
  ],
131
  "cluster_name": "cluster",
132
  "instances": {
133
    "instance14": {
134
      "disks": [
135
        {
136
          "mode": "rw",
137
          "size": 128
138
        }
139
      ],
140
      "disk_space_total": 256,
141
      "hypervisor": "xen-pvm",
142
      "tags": [],
143
      "nics": [
144
        {
145
          "ip": null,
146
          "mac": "aa:00:00:eb:0b:a5",
147
          "link": "xen-br0",
148
          "mode": "bridged",
149
          "bridge": "xen-br0"
150
        }
151
      ],
152
      "vcpus": 1,
153
      "spindle_use": 1,
154
      "admin_state": "down",
155
      "disk_template": "drbd",
156
      "memory": 128,
157
      "nodes": [
158
        "node3",
159
        "node4"
160
      ],
161
      "os": "debian-image"
162
    },
163
    "instance13": {
164
      "disks": [
165
        {
166
          "mode": "rw",
167
          "size": 512
168
        }
169
      ],
170
      "disk_space_total": 512,
171
      "hypervisor": "xen-pvm",
172
      "tags": [],
173
      "nics": [
174
        {
175
          "ip": null,
176
          "mac": "aa:00:00:7f:8c:9c",
177
          "link": "xen-br1",
178
          "mode": "bridged",
179
          "bridge": "xen-br1"
180
        }
181
      ],
182
      "vcpus": 1,
183
      "spindle_use": 1,
184
      "admin_state": "down",
185
      "disk_template": "plain",
186
      "memory": 128,
187
      "nodes": [
188
        "node4"
189
      ],
190
      "os": "instance-debootstrap"
191
    },
192
    "instance18": {
193
      "disks": [
194
        {
195
          "mode": "rw",
196
          "size": 128
197
        }
198
      ],
199
      "disk_space_total": 128,
200
      "hypervisor": "xen-pvm",
201
      "tags": [],
202
      "nics": [
203
        {
204
          "ip": null,
205
          "mac": "aa:00:00:55:94:93",
206
          "link": "xen-br0",
207
          "mode": "bridged",
208
          "bridge": "xen-br0"
209
        }
210
      ],
211
      "vcpus": 1,
212
      "spindle_use": 1,
213
      "admin_state": "down",
214
      "disk_template": "plain",
215
      "memory": 8192,
216
      "nodes": [
217
        "node4"
218
      ],
219
      "os": "instance-debootstrap"
220
    },
221
    "instance19": {
222
      "disks": [
223
        {
224
          "mode": "rw",
225
          "size": 128
226
        }
227
      ],
228
      "disk_space_total": 256,
229
      "hypervisor": "xen-pvm",
230
      "tags": [],
231
      "nics": [
232
        {
233
          "ip": null,
234
          "mac": "aa:00:00:15:92:6f",
235
          "link": "xen-br0",
236
          "mode": "bridged",
237
          "bridge": "xen-br0"
238
        }
239
      ],
240
      "vcpus": 1,
241
      "spindle_use": 1,
242
      "admin_state": "down",
243
      "disk_template": "drbd",
244
      "memory": 128,
245
      "nodes": [
246
        "node3",
247
        "node4"
248
      ],
249
      "os": "debian-image"
250
    },
251
    "instance2": {
252
      "disks": [
253
        {
254
          "mode": "rw",
255
          "size": 128
256
        }
257
      ],
258
      "disk_space_total": 256,
259
      "hypervisor": "xen-pvm",
260
      "tags": [],
261
      "nics": [
262
        {
263
          "ip": null,
264
          "mac": "aa:00:00:73:20:3e",
265
          "link": "xen-br0",
266
          "mode": "bridged",
267
          "bridge": "xen-br0"
268
        }
269
      ],
270
      "vcpus": 1,
271
      "spindle_use": 1,
272
      "admin_state": "up",
273
      "disk_template": "drbd",
274
      "memory": 128,
275
      "nodes": [
276
        "node3",
277
        "node4"
278
      ],
279
      "os": "debian-image"
280
    },
281
    "instance3": {
282
      "disks": [
283
        {
284
          "mode": "rw",
285
          "size": 256
286
        },
287
        {
288
          "mode": "rw",
289
          "size": 128
290
        }
291
      ],
292
      "disk_space_total": 384,
293
      "hypervisor": "xen-pvm",
294
      "tags": [],
295
      "nics": [
296
        {
297
          "ip": null,
298
          "mac": "aa:00:00:ec:e8:a2",
299
          "link": "xen-br0",
300
          "mode": "bridged",
301
          "bridge": "xen-br0"
302
        }
303
      ],
304
      "vcpus": 1,
305
      "spindle_use": 1,
306
      "admin_state": "down",
307
      "disk_template": "plain",
308
      "memory": 128,
309
      "nodes": [
310
        "node4"
311
      ],
312
      "os": "debian-image"
313
    },
314
    "instance4": {
315
      "disks": [
316
        {
317
          "mode": "rw",
318
          "size": 2048
319
        }
320
      ],
321
      "disk_space_total": 2176,
322
      "hypervisor": "xen-pvm",
323
      "tags": [],
324
      "nics": [
325
        {
326
          "ip": null,
327
          "mac": "aa:00:00:62:b0:76",
328
          "link": "xen-br0",
329
          "mode": "bridged",
330
          "bridge": "xen-br0"
331
        }
332
      ],
333
      "vcpus": 1,
334
      "spindle_use": 1,
335
      "admin_state": "down",
336
      "disk_template": "drbd",
337
      "memory": 128,
338
      "nodes": [
339
        "node4",
340
        "node3"
341
      ],
342
      "os": "instance-debootstrap"
343
    },
344
    "instance8": {
345
      "disks": [
346
        {
347
          "mode": "rw",
348
          "size": 256
349
        }
350
      ],
351
      "disk_space_total": 256,
352
      "hypervisor": "kvm",
353
      "tags": [],
354
      "nics": [
355
        {
356
          "ip": null,
357
          "mac": "aa:00:00:3f:6d:e3",
358
          "link": "xen-br0",
359
          "mode": "bridged",
360
          "bridge": "xen-br0"
361
        }
362
      ],
363
      "vcpus": 1,
364
      "spindle_use": 1,
365
      "admin_state": "down",
366
      "disk_template": "plain",
367
      "memory": 128,
368
      "nodes": [
369
        "node4"
370
      ],
371
      "os": "debian-image"
372
    },
373
    "instance9": {
374
      "disks": [
375
        {
376
          "mode": "rw",
377
          "size": 128
378
        }
379
      ],
380
      "disk_space_total": 256,
381
      "hypervisor": "xen-pvm",
382
      "tags": [
383
        "test:test"
384
      ],
385
      "nics": [
386
        {
387
          "ip": null,
388
          "mac": "aa:00:00:10:d2:01",
389
          "link": "xen-br0",
390
          "mode": "bridged",
391
          "bridge": "xen-br0"
392
        }
393
      ],
394
      "vcpus": 1,
395
      "spindle_use": 1,
396
      "admin_state": "down",
397
      "disk_template": "drbd",
398
      "memory": 128,
399
      "nodes": [
400
        "node3",
401
        "node4"
402
      ],
403
      "os": "instance-debootstrap"
404
    },
405
    "instance20": {
406
      "disks": [
407
        {
408
          "mode": "rw",
409
          "size": 512
410
        }
411
      ],
412
      "disk_space_total": 512,
413
      "hypervisor": "kvm",
414
      "tags": [],
415
      "nics": [
416
        {
417
          "ip": null,
418
          "mac": "aa:00:00:db:2a:6d",
419
          "link": "xen-br0",
420
          "mode": "bridged",
421
          "bridge": "xen-br0"
422
        }
423
      ],
424
      "vcpus": 1,
425
      "spindle_use": 1,
426
      "admin_state": "down",
427
      "disk_template": "plain",
428
      "memory": 128,
429
      "nodes": [
430
        "node4"
431
      ],
432
      "os": "instance-debootstrap"
433
    }
434
  },
435
  "version": 2,
436
  "nodes": {
437
    "node1": {
438
      "total_disk": 1377280,
439
      "total_cpus": 4,
440
      "group": "uuid-group-1",
441
      "secondary_ip": "192.168.2.1",
442
      "i_pri_up_memory": 0,
443
      "tags": [],
444
      "master_candidate": true,
445
      "free_memory": 31389,
446
      "ndparams": {
447
        "spindle_count": 1,
448
        "oob_program": null
449
      },
450
      "reserved_memory": 1017,
451
      "master_capable": true,
452
      "free_disk": 1377280,
453
      "drained": false,
454
      "total_memory": 32763,
455
      "primary_ip": "192.168.1.1",
456
      "i_pri_memory": 0,
457
      "vm_capable": true,
458
      "offline": false
459
    },
460
    "node3": {
461
      "total_disk": 1377304,
462
      "total_cpus": 4,
463
      "group": "uuid-group-1",
464
      "secondary_ip": "192.168.2.3",
465
      "i_pri_up_memory": 128,
466
      "tags": [],
467
      "master_candidate": true,
468
      "free_memory": 31234,
469
      "ndparams": {
470
        "spindle_count": 1,
471
        "oob_program": null
472
      },
473
      "reserved_memory": 1017,
474
      "master_capable": true,
475
      "free_disk": 1373336,
476
      "drained": false,
477
      "total_memory": 32763,
478
      "primary_ip": "192.168.1.3",
479
      "i_pri_memory": 2432,
480
      "vm_capable": true,
481
      "offline": false
482
    },
483
    "node4": {
484
      "total_disk": 1377280,
485
      "total_cpus": 4,
486
      "group": "uuid-group-1",
487
      "secondary_ip": "192.168.2.4",
488
      "i_pri_up_memory": 128,
489
      "tags": [],
490
      "master_candidate": true,
491
      "free_memory": 22914,
492
      "ndparams": {
493
        "spindle_count": 1,
494
        "oob_program": null
495
      },
496
      "reserved_memory": 1017,
497
      "master_capable": true,
498
      "free_disk": 1371520,
499
      "drained": false,
500
      "total_memory": 32763,
501
      "primary_ip": "192.168.1.4",
502
      "i_pri_memory": 23552,
503
      "vm_capable": true,
504
      "offline": false
505
    },
506
    "node10": {
507
      "total_disk": 1377280,
508
      "total_cpus": 4,
509
      "group": "uuid-group-2",
510
      "secondary_ip": "192.168.2.10",
511
      "i_pri_up_memory": 128,
512
      "tags": [],
513
      "master_candidate": true,
514
      "free_memory": 31746,
515
      "ndparams": {
516
        "spindle_count": 1,
517
        "oob_program": null
518
      },
519
      "reserved_memory": 1017,
520
      "master_capable": true,
521
      "free_disk": 1376640,
522
      "drained": false,
523
      "total_memory": 32763,
524
      "primary_ip": "192.168.1.10",
525
      "i_pri_memory": 23552,
526
      "vm_capable": true,
527
      "offline": false
528
    },
529
    "node11": {
530
      "total_disk": 1377280,
531
      "total_cpus": 4,
532
      "group": "uuid-group-2",
533
      "secondary_ip": "192.168.2.11",
534
      "i_pri_up_memory": 128,
535
      "tags": [],
536
      "master_candidate": true,
537
      "free_memory": 31746,
538
      "ndparams": {
539
        "spindle_count": 1,
540
        "oob_program": null
541
      },
542
      "reserved_memory": 1017,
543
      "master_capable": true,
544
      "free_disk": 1376640,
545
      "drained": false,
546
      "total_memory": 32763,
547
      "primary_ip": "192.168.1.11",
548
      "i_pri_memory": 23552,
549
      "vm_capable": true,
550
      "offline": false
551
    }
552
  },
553
  "request": {
554
    "instances": [
555
      "instance14"
556
    ],
557
    "target_groups": [],
558
    "type": "change-group"
559
  }
560
}
b/test/data/htools/hail-invalid-reloc.json
1
{
2
  "cluster_tags": [],
3
  "nodegroups": {},
4
  "nodes": {},
5
  "instances": {},
6
  "request": {
7
    "relocate_from": [
8
      "node4"
9
    ],
10
    "required_nodes": "aaa",
11
    "type": "relocate",
12
    "name": 0,
13
    "disk_space_total": "aaa"
14
  }
15
}
b/test/data/htools/hail-node-evac.json
1
{
2
  "cluster_tags": [
3
    "htools:iextags:test",
4
    "htools:iextags:service-group"
5
  ],
6
  "nodegroups": {
7
    "uuid-group-1": {
8
      "ipolicy": {
9
        "std": {
10
          "nic-count": 1,
11
          "disk-size": 1024,
12
          "disk-count": 1,
13
          "memory-size": 128,
14
          "cpu-count": 1,
15
          "spindle-use": 1
16
        },
17
        "min": {
18
          "nic-count": 1,
19
          "disk-size": 128,
20
          "disk-count": 1,
21
          "memory-size": 128,
22
          "cpu-count": 1,
23
          "spindle-use": 1
24
        },
25
        "max": {
26
          "nic-count": 8,
27
          "disk-size": 1048576,
28
          "disk-count": 16,
29
          "memory-size": 32768,
30
          "cpu-count": 8,
31
          "spindle-use": 8
32
        },
33
        "vcpu-ratio": 4.0,
34
        "disk-templates": [
35
          "sharedfile",
36
          "diskless",
37
          "plain",
38
          "blockdev",
39
          "drbd",
40
          "file",
41
          "rbd"
42
        ],
43
        "spindle-ratio": 32.0
44
      },
45
      "alloc_policy": "preferred",
46
      "name": "default"
47
    }
48
  },
49
  "ipolicy": {
50
    "std": {
51
      "nic-count": 1,
52
      "disk-size": 1024,
53
      "memory-size": 128,
54
      "cpu-count": 1,
55
      "disk-count": 1,
56
      "spindle-use": 1
57
    },
58
    "min": {
59
      "nic-count": 1,
60
      "disk-size": 1024,
61
      "memory-size": 128,
62
      "cpu-count": 1,
63
      "disk-count": 1,
64
      "spindle-use": 1
65
    },
66
    "max": {
67
      "nic-count": 8,
68
      "disk-size": 1048576,
69
      "memory-size": 32768,
70
      "cpu-count": 8,
71
      "disk-count": 16,
72
      "spindle-use": 8
73
    },
74
    "vcpu-ratio": 4.0,
75
    "disk-templates": [
76
      "sharedfile",
77
      "diskless",
78
      "plain",
79
      "blockdev",
80
      "drbd",
81
      "file",
82
      "rbd"
83
    ],
84
    "spindle-ratio": 32.0
85
  },
86
  "enabled_hypervisors": [
87
    "xen-pvm",
88
    "xen-hvm"
89
  ],
90
  "cluster_name": "cluster",
91
  "instances": {
92
    "instance14": {
93
      "disks": [
94
        {
95
          "mode": "rw",
96
          "size": 128
97
        }
98
      ],
99
      "disk_space_total": 256,
100
      "hypervisor": "xen-pvm",
101
      "tags": [],
102
      "nics": [
103
        {
104
          "ip": null,
105
          "mac": "aa:00:00:eb:0b:a5",
106
          "link": "xen-br0",
107
          "mode": "bridged",
108
          "bridge": "xen-br0"
109
        }
110
      ],
111
      "vcpus": 1,
112
      "spindle_use": 1,
113
      "admin_state": "down",
114
      "disk_template": "drbd",
115
      "memory": 128,
116
      "nodes": [
117
        "node3",
118
        "node4"
119
      ],
120
      "os": "debian-image"
121
    },
122
    "instance13": {
123
      "disks": [
124
        {
125
          "mode": "rw",
126
          "size": 512
127
        }
128
      ],
129
      "disk_space_total": 512,
130
      "hypervisor": "xen-pvm",
131
      "tags": [],
132
      "nics": [
133
        {
134
          "ip": null,
135
          "mac": "aa:00:00:7f:8c:9c",
136
          "link": "xen-br1",
137
          "mode": "bridged",
138
          "bridge": "xen-br1"
139
        }
140
      ],
141
      "vcpus": 1,
142
      "spindle_use": 1,
143
      "admin_state": "down",
144
      "disk_template": "plain",
145
      "memory": 128,
146
      "nodes": [
147
        "node4"
148
      ],
149
      "os": "instance-debootstrap"
150
    },
151
    "instance18": {
152
      "disks": [
153
        {
154
          "mode": "rw",
155
          "size": 128
156
        }
157
      ],
158
      "disk_space_total": 128,
159
      "hypervisor": "xen-pvm",
160
      "tags": [],
161
      "nics": [
162
        {
163
          "ip": null,
164
          "mac": "aa:00:00:55:94:93",
165
          "link": "xen-br0",
166
          "mode": "bridged",
167
          "bridge": "xen-br0"
168
        }
169
      ],
170
      "vcpus": 1,
171
      "spindle_use": 1,
172
      "admin_state": "down",
173
      "disk_template": "plain",
174
      "memory": 8192,
175
      "nodes": [
176
        "node4"
177
      ],
178
      "os": "instance-debootstrap"
179
    },
180
    "instance19": {
181
      "disks": [
182
        {
183
          "mode": "rw",
184
          "size": 128
185
        }
186
      ],
187
      "disk_space_total": 256,
188
      "hypervisor": "xen-pvm",
189
      "tags": [],
190
      "nics": [
191
        {
192
          "ip": null,
193
          "mac": "aa:00:00:15:92:6f",
194
          "link": "xen-br0",
195
          "mode": "bridged",
196
          "bridge": "xen-br0"
197
        }
198
      ],
199
      "vcpus": 1,
200
      "spindle_use": 1,
201
      "admin_state": "down",
202
      "disk_template": "drbd",
203
      "memory": 128,
204
      "nodes": [
205
        "node3",
206
        "node4"
207
      ],
208
      "os": "debian-image"
209
    },
210
    "instance2": {
211
      "disks": [
212
        {
213
          "mode": "rw",
214
          "size": 128
215
        }
216
      ],
217
      "disk_space_total": 256,
218
      "hypervisor": "xen-pvm",
219
      "tags": [],
220
      "nics": [
221
        {
222
          "ip": null,
223
          "mac": "aa:00:00:73:20:3e",
224
          "link": "xen-br0",
225
          "mode": "bridged",
226
          "bridge": "xen-br0"
227
        }
228
      ],
229
      "vcpus": 1,
230
      "spindle_use": 1,
231
      "admin_state": "up",
232
      "disk_template": "drbd",
233
      "memory": 128,
234
      "nodes": [
235
        "node3",
236
        "node4"
237
      ],
238
      "os": "debian-image"
239
    },
240
    "instance3": {
241
      "disks": [
242
        {
243
          "mode": "rw",
244
          "size": 256
245
        },
246
        {
247
          "mode": "rw",
248
          "size": 128
249
        }
250
      ],
251
      "disk_space_total": 384,
252
      "hypervisor": "xen-pvm",
253
      "tags": [],
254
      "nics": [
255
        {
256
          "ip": null,
257
          "mac": "aa:00:00:ec:e8:a2",
258
          "link": "xen-br0",
259
          "mode": "bridged",
260
          "bridge": "xen-br0"
261
        }
262
      ],
263
      "vcpus": 1,
264
      "spindle_use": 1,
265
      "admin_state": "down",
266
      "disk_template": "plain",
267
      "memory": 128,
268
      "nodes": [
269
        "node4"
270
      ],
271
      "os": "debian-image"
272
    },
273
    "instance4": {
274
      "disks": [
275
        {
276
          "mode": "rw",
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff