Revision c294f84e

b/Makefile.am
1095 1095
	test/data/cert1.pem \
1096 1096
	test/data/cert2.pem \
1097 1097
	test/data/cluster_config_2.7.json \
1098
	test/data/cluster_config_downgraded_2.7.json \
1098
	test/data/cluster_config_2.8.json \
1099 1099
	test/data/instance-minor-pairing.txt \
1100 1100
	test/data/ip-addr-show-dummy0.txt \
1101 1101
	test/data/ip-addr-show-lo-ipv4.txt \
b/test/data/cluster_config_2.8.json
1
{
2
  "cluster": {
3
    "beparams": {
4
      "default": {
5
        "always_failover": false,
6
        "auto_balance": true,
7
        "maxmem": 128,
8
        "minmem": 128,
9
        "spindle_use": 1,
10
        "vcpus": 1
11
      }
12
    },
13
    "blacklisted_os": [],
14
    "candidate_pool_size": 10,
15
    "cluster_name": "cluster.name.example.com",
16
    "ctime": 1343869045.604884,
17
    "default_iallocator": "hail",
18
    "disk_state_static": {},
19
    "diskparams": {
20
      "blockdev": {},
21
      "diskless": {},
22
      "drbd": {
23
        "c-delay-target": 1,
24
        "c-fill-target": 200,
25
        "c-max-rate": 2048,
26
        "c-min-rate": 1024,
27
        "c-plan-ahead": 1,
28
        "data-stripes": 2,
29
        "disk-barriers": "bf",
30
        "disk-custom": "",
31
        "dynamic-resync": false,
32
        "meta-barriers": true,
33
        "meta-stripes": 2,
34
        "metavg": "xenvg",
35
        "net-custom": "",
36
        "resync-rate": 1024
37
      },
38
      "ext": {},
39
      "file": {},
40
      "plain": {
41
        "stripes": 2
42
      },
43
      "rbd": {
44
        "pool": "rbd"
45
      },
46
      "sharedfile": {}
47
    },
48
    "drbd_usermode_helper": "/bin/true",
49
    "enabled_disk_templates": [
50
      "drbd",
51
      "plain",
52
      "file",
53
      "sharedfile"
54
    ],
55
    "enabled_hypervisors": [
56
      "xen-pvm"
57
    ],
58
    "file_storage_dir": "",
59
    "hidden_os": [],
60
    "highest_used_port": 32105,
61
    "hv_state_static": {
62
      "xen-pvm": {
63
        "cpu_node": 1,
64
        "cpu_total": 1,
65
        "mem_hv": 0,
66
        "mem_node": 0,
67
        "mem_total": 0
68
      }
69
    },
70
    "hvparams": {
71
      "chroot": {
72
        "init_script": "/ganeti-chroot"
73
      },
74
      "fake": {},
75
      "kvm": {
76
        "acpi": true,
77
        "boot_order": "disk",
78
        "cdrom2_image_path": "",
79
        "cdrom_disk_type": "",
80
        "cdrom_image_path": "",
81
        "cpu_cores": 0,
82
        "cpu_mask": "all",
83
        "cpu_sockets": 0,
84
        "cpu_threads": 0,
85
        "cpu_type": "",
86
        "disk_cache": "default",
87
        "disk_type": "paravirtual",
88
        "floppy_image_path": "",
89
        "initrd_path": "",
90
        "kernel_args": "ro",
91
        "kernel_path": "/boot/vmlinuz-kvmU",
92
        "keymap": "",
93
        "kvm_extra": "",
94
        "kvm_flag": "",
95
        "kvm_path": "/usr/bin/kvm",
96
        "machine_version": "",
97
        "mem_path": "",
98
        "migration_bandwidth": 4,
99
        "migration_downtime": 30,
100
        "migration_mode": "live",
101
        "migration_port": 4041,
102
        "nic_type": "paravirtual",
103
        "reboot_behavior": "reboot",
104
        "root_path": "/dev/vda1",
105
        "security_domain": "",
106
        "security_model": "none",
107
        "serial_console": true,
108
        "serial_speed": 38400,
109
        "soundhw": "",
110
        "spice_bind": "",
111
        "spice_image_compression": "",
112
        "spice_ip_version": 0,
113
        "spice_jpeg_wan_compression": "",
114
        "spice_password_file": "",
115
        "spice_playback_compression": true,
116
        "spice_streaming_video": "",
117
        "spice_tls_ciphers": "HIGH:-DES:-3DES:-EXPORT:-ADH",
118
        "spice_use_tls": false,
119
        "spice_use_vdagent": true,
120
        "spice_zlib_glz_wan_compression": "",
121
        "usb_devices": "",
122
        "usb_mouse": "",
123
        "use_chroot": false,
124
        "use_localtime": false,
125
        "vga": "",
126
        "vhost_net": false,
127
        "vnc_bind_address": "",
128
        "vnc_password_file": "",
129
        "vnc_tls": false,
130
        "vnc_x509_path": "",
131
        "vnc_x509_verify": false
132
      },
133
      "lxc": {
134
        "cpu_mask": ""
135
      },
136
      "xen-hvm": {
137
        "acpi": true,
138
        "blockdev_prefix": "hd",
139
        "boot_order": "cd",
140
        "cdrom_image_path": "",
141
        "cpu_cap": 0,
142
        "cpu_mask": "all",
143
        "cpu_weight": 256,
144
        "device_model": "/usr/lib/xen/bin/qemu-dm",
145
        "disk_type": "paravirtual",
146
        "kernel_path": "/usr/lib/xen/boot/hvmloader",
147
        "migration_mode": "non-live",
148
        "migration_port": 8082,
149
        "nic_type": "rtl8139",
150
        "pae": true,
151
        "pci_pass": "",
152
        "reboot_behavior": "reboot",
153
        "use_localtime": false,
154
        "vnc_bind_address": "0.0.0.0",
155
        "vnc_password_file": "/your/vnc-cluster-password"
156
      },
157
      "xen-pvm": {
158
        "blockdev_prefix": "sd",
159
        "bootloader_args": "",
160
        "bootloader_path": "",
161
        "cpu_cap": 0,
162
        "cpu_mask": "all",
163
        "cpu_weight": 256,
164
        "initrd_path": "",
165
        "kernel_args": "ro",
166
        "kernel_path": "/boot/vmlinuz-xenU",
167
        "migration_mode": "live",
168
        "migration_port": 8082,
169
        "reboot_behavior": "reboot",
170
        "root_path": "/dev/xvda1",
171
        "use_bootloader": false
172
      }
173
    },
174
    "ipolicy": {
175
      "disk-templates": [
176
        "sharedfile",
177
        "diskless",
178
        "plain",
179
        "blockdev",
180
        "drbd",
181
        "file",
182
        "rbd"
183
      ],
184
      "minmax": [
185
        {
186
          "max": {
187
            "cpu-count": 8,
188
            "disk-count": 16,
189
            "disk-size": 1048576,
190
            "memory-size": 32768,
191
            "nic-count": 8,
192
            "spindle-use": 12
193
          },
194
          "min": {
195
            "cpu-count": 1,
196
            "disk-count": 1,
197
            "disk-size": 1024,
198
            "memory-size": 128,
199
            "nic-count": 1,
200
            "spindle-use": 1
201
          }
202
        }
203
      ],
204
      "spindle-ratio": 32.0,
205
      "std": {
206
        "cpu-count": 1,
207
        "disk-count": 1,
208
        "disk-size": 1024,
209
        "memory-size": 128,
210
        "nic-count": 1,
211
        "spindle-use": 1
212
      },
213
      "vcpu-ratio": 1.0
214
    },
215
    "mac_prefix": "aa:bb:cc",
216
    "maintain_node_health": false,
217
    "master_ip": "192.0.2.87",
218
    "master_netdev": "eth0",
219
    "master_netmask": 32,
220
    "master_node": "node1.example.com",
221
    "modify_etc_hosts": true,
222
    "modify_ssh_setup": true,
223
    "mtime": 1361964122.79471,
224
    "ndparams": {
225
      "exclusive_storage": false,
226
      "oob_program": "",
227
      "spindle_count": 1
228
    },
229
    "nicparams": {
230
      "default": {
231
        "link": "br974",
232
        "mode": "bridged"
233
      }
234
    },
235
    "os_hvp": {
236
      "TEMP-Ganeti-QA-OS": {
237
        "xen-hvm": {
238
          "acpi": false,
239
          "pae": true
240
        },
241
        "xen-pvm": {
242
          "root_path": "/dev/sda5"
243
        }
244
      }
245
    },
246
    "osparams": {},
247
    "prealloc_wipe_disks": false,
248
    "primary_ip_family": 2,
249
    "reserved_lvs": [],
250
    "rsahostkeypub": "YOURKEY",
251
    "serial_no": 3189,
252
    "shared_file_storage_dir": "/srv/ganeti/shared-file-storage",
253
    "tags": [
254
      "mytag"
255
    ],
256
    "tcpudp_port_pool": [
257
      32101,
258
      32102,
259
      32103,
260
      32104,
261
      32105
262
    ],
263
    "uid_pool": [],
264
    "use_external_mip_script": false,
265
    "uuid": "dddf8c12-f2d8-4718-a35b-7804daf12a3f",
266
    "volume_group_name": "xenvg"
267
  },
268
  "ctime": 1343869045.605523,
269
  "instances": {
270
    "instance1.example.com": {
271
      "admin_state": "up",
272
      "beparams": {},
273
      "ctime": 1363620258.608976,
274
      "disk_template": "drbd",
275
      "disks": [
276
        {
277
          "children": [
278
            {
279
              "dev_type": "lvm",
280
              "logical_id": [
281
                "xenvg",
282
                "5c390722-6a7a-4bb4-9cef-98d896a8e6b1.disk0_data"
283
              ],
284
              "params": {},
285
              "physical_id": [
286
                "xenvg",
287
                "5c390722-6a7a-4bb4-9cef-98d896a8e6b1.disk0_data"
288
              ],
289
              "size": 1024
290
            },
291
            {
292
              "dev_type": "lvm",
293
              "logical_id": [
294
                "xenvg",
295
                "5c390722-6a7a-4bb4-9cef-98d896a8e6b1.disk0_meta"
296
              ],
297
              "params": {},
298
              "physical_id": [
299
                "xenvg",
300
                "5c390722-6a7a-4bb4-9cef-98d896a8e6b1.disk0_meta"
301
              ],
302
              "size": 128
303
            }
304
          ],
305
          "dev_type": "drbd8",
306
          "iv_name": "disk/0",
307
          "logical_id": [
308
            "node1.example.com",
309
            "node3.example.com",
310
            32100,
311
            0,
312
            0,
313
            "d3c3fd475fcbaf5fd177fb245ac43b71247ada38"
314
          ],
315
          "mode": "rw",
316
          "params": {},
317
          "physical_id": [
318
            "198.51.100.82",
319
            32100,
320
            "198.51.100.84",
321
            32100,
322
            0,
323
            "d3c3fd475fcbaf5fd177fb245ac43b71247ada38"
324
          ],
325
          "size": 1024,
326
          "uuid": "77ced3a5-6756-49ae-8d1f-274e27664c05"
327
        }
328
      ],
329
      "hvparams": {},
330
      "hypervisor": "xen-pvm",
331
      "mtime": 1363620320.874901,
332
      "name": "instance1.example.com",
333
      "nics": [
334
        {
335
          "mac": "aa:bb:cc:b2:6e:0b",
336
          "nicparams": {},
337
          "uuid": "2c953d72-fac4-4aa9-a225-4131bb271791"
338
        }
339
      ],
340
      "os": "busybox",
341
      "osparams": {},
342
      "primary_node": "node1.example.com",
343
      "serial_no": 2,
344
      "uuid": "6c078d22-3eb6-4780-857d-81772e09eef1"
345
    },
346
    "instance2.example.com": {
347
      "admin_state": "up",
348
      "beparams": {},
349
      "ctime": 1355186880.451181,
350
      "disk_template": "plain",
351
      "disks": [
352
        {
353
          "dev_type": "lvm",
354
          "iv_name": "disk/0",
355
          "logical_id": [
356
            "xenvg",
357
            "3e559cd7-1024-4294-a923-a9fd13182b2f.disk0"
358
          ],
359
          "mode": "rw",
360
          "params": {},
361
          "physical_id": [
362
            "xenvg",
363
            "3e559cd7-1024-4294-a923-a9fd13182b2f.disk0"
364
          ],
365
          "size": 102400,
366
          "uuid": "79acf611-be58-4334-9fe4-4f2b73ae8abb"
367
        }
368
      ],
369
      "hvparams": {},
370
      "hypervisor": "xen-pvm",
371
      "mtime": 1355186898.307642,
372
      "name": "instance2.example.com",
373
      "nics": [
374
        {
375
          "mac": "aa:bb:cc:56:83:fb",
376
          "nicparams": {},
377
          "uuid": "1cf95562-e676-4fd0-8214-e8b84a2f7bd1"
378
        }
379
      ],
380
      "os": "debian-image",
381
      "osparams": {},
382
      "primary_node": "node3.example.com",
383
      "serial_no": 2,
384
      "tags": [],
385
      "uuid": "8fde9f6d-e1f1-4850-9e9c-154966f622f5"
386
    },
387
    "instance3.example.com": {
388
      "admin_state": "up",
389
      "beparams": {},
390
      "ctime": 1354038435.343601,
391
      "disk_template": "plain",
392
      "disks": [
393
        {
394
          "dev_type": "lvm",
395
          "iv_name": "disk/0",
396
          "logical_id": [
397
            "xenvg",
398
            "b27a576a-13f7-4f07-885c-63fcad4fdfcc.disk0"
399
          ],
400
          "mode": "rw",
401
          "params": {},
402
          "physical_id": [
403
            "xenvg",
404
            "b27a576a-13f7-4f07-885c-63fcad4fdfcc.disk0"
405
          ],
406
          "size": 1280,
407
          "uuid": "150bd154-8e23-44d1-b762-5065ae5a507b"
408
        }
409
      ],
410
      "hvparams": {},
411
      "hypervisor": "xen-pvm",
412
      "mtime": 1354224585.700732,
413
      "name": "instance3.example.com",
414
      "nics": [
415
        {
416
          "mac": "aa:bb:cc:5e:5c:75",
417
          "nicparams": {},
418
          "uuid": "1ab090c1-e017-406c-afb4-fc285cb43e31"
419
        }
420
      ],
421
      "os": "debian-image",
422
      "osparams": {},
423
      "primary_node": "node2.example.com",
424
      "serial_no": 4,
425
      "tags": [],
426
      "uuid": "4e091bdc-e205-4ed7-8a47-0c9130a6619f"
427
    }
428
  },
429
  "mtime": 1367352404.758083,
430
  "networks": {
431
    "99f0128a-1c84-44da-90b9-9581ea00c075": {
432
      "ext_reservations": "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
433
      "name": "a network",
434
      "network": "203.0.113.0/24",
435
      "reservations": "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
436
      "serial_no": 1,
437
      "uuid": "99f0128a-1c84-44da-90b9-9581ea00c075"
438
    }
439
  },
440
  "nodegroups": {
441
    "5244a46d-7506-4e14-922d-02b58153dde1": {
442
      "alloc_policy": "preferred",
443
      "diskparams": {},
444
      "ipolicy": {},
445
      "mtime": 1361963775.575009,
446
      "name": "default",
447
      "ndparams": {},
448
      "networks": {},
449
      "serial_no": 125,
450
      "tags": [],
451
      "uuid": "5244a46d-7506-4e14-922d-02b58153dde1"
452
    },
453
    "6c0a8916-b719-45ad-95dd-82192b1e473f": {
454
      "alloc_policy": "preferred",
455
      "diskparams": {},
456
      "ipolicy": {
457
        "disk-templates": [
458
          "plain"
459
        ],
460
        "minmax": [
461
          {
462
            "max": {
463
              "cpu-count": 8,
464
              "disk-count": 16,
465
              "disk-size": 1048576,
466
              "memory-size": 32768,
467
              "nic-count": 18,
468
              "spindle-use": 14
469
            },
470
            "min": {
471
              "cpu-count": 2,
472
              "disk-count": 2,
473
              "disk-size": 1024,
474
              "memory-size": 128,
475
              "nic-count": 1,
476
              "spindle-use": 1
477
            }
478
          }
479
        ],
480
        "spindle-ratio": 5.2,
481
        "vcpu-ratio": 3.14
482
      },
483
      "mtime": 1361963775.575009,
484
      "name": "another",
485
      "ndparams": {
486
        "exclusive_storage": true
487
      },
488
      "networks": {},
489
      "serial_no": 125,
490
      "tags": [],
491
      "uuid": "6c0a8916-b719-45ad-95dd-82192b1e473f"
492
    }
493
  },
494
  "nodes": {
495
    "node1.example.com": {
496
      "ctime": 1349722460.022264,
497
      "drained": false,
498
      "group": "5244a46d-7506-4e14-922d-02b58153dde1",
499
      "master_candidate": true,
500
      "master_capable": true,
501
      "mtime": 1359986533.353329,
502
      "name": "node1.example.com",
503
      "ndparams": {},
504
      "offline": false,
505
      "powered": true,
506
      "primary_ip": "192.0.2.82",
507
      "secondary_ip": "198.51.100.82",
508
      "serial_no": 197,
509
      "tags": [],
510
      "uuid": "9a12d554-75c0-4cb1-8064-103365145db0",
511
      "vm_capable": true
512
    },
513
    "node2.example.com": {
514
      "ctime": 1343869045.604884,
515
      "drained": false,
516
      "group": "5244a46d-7506-4e14-922d-02b58153dde1",
517
      "master_candidate": true,
518
      "master_capable": true,
519
      "mtime": 1358348755.779906,
520
      "name": "node2.example.com",
521
      "ndparams": {},
522
      "offline": false,
523
      "powered": true,
524
      "primary_ip": "192.0.2.83",
525
      "secondary_ip": "198.51.100.83",
526
      "serial_no": 6,
527
      "tags": [],
528
      "uuid": "2ae3d962-2dad-44f2-bdb1-85f77107f907",
529
      "vm_capable": true
530
    },
531
    "node3.example.com": {
532
      "ctime": 1343869205.934807,
533
      "drained": false,
534
      "group": "5244a46d-7506-4e14-922d-02b58153dde1",
535
      "master_candidate": true,
536
      "master_capable": true,
537
      "mtime": 1353019704.885368,
538
      "name": "node3.example.com",
539
      "ndparams": {},
540
      "offline": false,
541
      "powered": true,
542
      "primary_ip": "192.0.2.84",
543
      "secondary_ip": "198.51.100.84",
544
      "serial_no": 2,
545
      "tags": [],
546
      "uuid": "41f9c238-173c-4120-9e41-04ad379b647a",
547
      "vm_capable": true
548
    }
549
  },
550
  "serial_no": 7625,
551
  "version": 2070000
552
}
/dev/null
1
{
2
  "cluster": {
3
    "beparams": {
4
      "default": {
5
        "always_failover": false,
6
        "auto_balance": true,
7
        "maxmem": 128,
8
        "minmem": 128,
9
        "spindle_use": 1,
10
        "vcpus": 1
11
      }
12
    },
13
    "blacklisted_os": [],
14
    "candidate_pool_size": 10,
15
    "cluster_name": "cluster.name.example.com",
16
    "ctime": 1343869045.604884,
17
    "default_iallocator": "hail",
18
    "disk_state_static": {},
19
    "diskparams": {
20
      "blockdev": {},
21
      "diskless": {},
22
      "drbd": {
23
        "c-delay-target": 1,
24
        "c-fill-target": 200,
25
        "c-max-rate": 2048,
26
        "c-min-rate": 1024,
27
        "c-plan-ahead": 1,
28
        "data-stripes": 2,
29
        "disk-barriers": "bf",
30
        "disk-custom": "",
31
        "dynamic-resync": false,
32
        "meta-barriers": true,
33
        "meta-stripes": 2,
34
        "metavg": "xenvg",
35
        "net-custom": "",
36
        "resync-rate": 1024
37
      },
38
      "ext": {},
39
      "file": {},
40
      "plain": {
41
        "stripes": 2
42
      },
43
      "rbd": {
44
        "pool": "rbd"
45
      },
46
      "sharedfile": {}
47
    },
48
    "drbd_usermode_helper": "/bin/true",
49
    "enabled_hypervisors": [
50
      "xen-pvm"
51
    ],
52
    "file_storage_dir": "",
53
    "hidden_os": [],
54
    "highest_used_port": 32105,
55
    "hv_state_static": {
56
      "xen-pvm": {
57
        "cpu_node": 1,
58
        "cpu_total": 1,
59
        "mem_hv": 0,
60
        "mem_node": 0,
61
        "mem_total": 0
62
      }
63
    },
64
    "hvparams": {
65
      "chroot": {
66
        "init_script": "/ganeti-chroot"
67
      },
68
      "fake": {},
69
      "kvm": {
70
        "acpi": true,
71
        "boot_order": "disk",
72
        "cdrom2_image_path": "",
73
        "cdrom_disk_type": "",
74
        "cdrom_image_path": "",
75
        "cpu_cores": 0,
76
        "cpu_mask": "all",
77
        "cpu_sockets": 0,
78
        "cpu_threads": 0,
79
        "cpu_type": "",
80
        "disk_cache": "default",
81
        "disk_type": "paravirtual",
82
        "floppy_image_path": "",
83
        "initrd_path": "",
84
        "kernel_args": "ro",
85
        "kernel_path": "/boot/vmlinuz-kvmU",
86
        "keymap": "",
87
        "kvm_extra": "",
88
        "kvm_flag": "",
89
        "kvm_path": "/usr/bin/kvm",
90
        "machine_version": "",
91
        "mem_path": "",
92
        "migration_bandwidth": 4,
93
        "migration_downtime": 30,
94
        "migration_mode": "live",
95
        "migration_port": 4041,
96
        "nic_type": "paravirtual",
97
        "reboot_behavior": "reboot",
98
        "root_path": "/dev/vda1",
99
        "security_domain": "",
100
        "security_model": "none",
101
        "serial_console": true,
102
        "serial_speed": 38400,
103
        "soundhw": "",
104
        "spice_bind": "",
105
        "spice_image_compression": "",
106
        "spice_ip_version": 0,
107
        "spice_jpeg_wan_compression": "",
108
        "spice_password_file": "",
109
        "spice_playback_compression": true,
110
        "spice_streaming_video": "",
111
        "spice_tls_ciphers": "HIGH:-DES:-3DES:-EXPORT:-ADH",
112
        "spice_use_tls": false,
113
        "spice_use_vdagent": true,
114
        "spice_zlib_glz_wan_compression": "",
115
        "usb_devices": "",
116
        "usb_mouse": "",
117
        "use_chroot": false,
118
        "use_localtime": false,
119
        "vga": "",
120
        "vhost_net": false,
121
        "vnc_bind_address": "",
122
        "vnc_password_file": "",
123
        "vnc_tls": false,
124
        "vnc_x509_path": "",
125
        "vnc_x509_verify": false
126
      },
127
      "lxc": {
128
        "cpu_mask": ""
129
      },
130
      "xen-hvm": {
131
        "acpi": true,
132
        "blockdev_prefix": "hd",
133
        "boot_order": "cd",
134
        "cdrom_image_path": "",
135
        "cpu_cap": 0,
136
        "cpu_mask": "all",
137
        "cpu_weight": 256,
138
        "device_model": "/usr/lib/xen/bin/qemu-dm",
139
        "disk_type": "paravirtual",
140
        "kernel_path": "/usr/lib/xen/boot/hvmloader",
141
        "migration_mode": "non-live",
142
        "migration_port": 8082,
143
        "nic_type": "rtl8139",
144
        "pae": true,
145
        "pci_pass": "",
146
        "reboot_behavior": "reboot",
147
        "use_localtime": false,
148
        "vnc_bind_address": "0.0.0.0",
149
        "vnc_password_file": "/your/vnc-cluster-password"
150
      },
151
      "xen-pvm": {
152
        "blockdev_prefix": "sd",
153
        "bootloader_args": "",
154
        "bootloader_path": "",
155
        "cpu_cap": 0,
156
        "cpu_mask": "all",
157
        "cpu_weight": 256,
158
        "initrd_path": "",
159
        "kernel_args": "ro",
160
        "kernel_path": "/boot/vmlinuz-xenU",
161
        "migration_mode": "live",
162
        "migration_port": 8082,
163
        "reboot_behavior": "reboot",
164
        "root_path": "/dev/xvda1",
165
        "use_bootloader": false
166
      }
167
    },
168
    "ipolicy": {
169
      "disk-templates": [
170
        "sharedfile",
171
        "diskless",
172
        "plain",
173
        "blockdev",
174
        "drbd",
175
        "file",
176
        "rbd"
177
      ],
178
      "max": {
179
        "cpu-count": 8,
180
        "disk-count": 16,
181
        "disk-size": 1048576,
182
        "memory-size": 32768,
183
        "nic-count": 8,
184
        "spindle-use": 12
185
      },
186
      "min": {
187
        "cpu-count": 1,
188
        "disk-count": 1,
189
        "disk-size": 1024,
190
        "memory-size": 128,
191
        "nic-count": 1,
192
        "spindle-use": 1
193
      },
194
      "spindle-ratio": 32.0,
195
      "std": {
196
        "cpu-count": 1,
197
        "disk-count": 1,
198
        "disk-size": 1024,
199
        "memory-size": 128,
200
        "nic-count": 1,
201
        "spindle-use": 1
202
      },
203
      "vcpu-ratio": 1.0
204
    },
205
    "mac_prefix": "aa:bb:cc",
206
    "maintain_node_health": false,
207
    "master_ip": "192.0.2.87",
208
    "master_netdev": "eth0",
209
    "master_netmask": 32,
210
    "master_node": "node1.example.com",
211
    "modify_etc_hosts": true,
212
    "modify_ssh_setup": true,
213
    "mtime": 1361964122.79471,
214
    "ndparams": {
215
      "exclusive_storage": false,
216
      "oob_program": "",
217
      "spindle_count": 1
218
    },
219
    "nicparams": {
220
      "default": {
221
        "link": "br974",
222
        "mode": "bridged"
223
      }
224
    },
225
    "os_hvp": {
226
      "TEMP-Ganeti-QA-OS": {
227
        "xen-hvm": {
228
          "acpi": false,
229
          "pae": true
230
        },
231
        "xen-pvm": {
232
          "root_path": "/dev/sda5"
233
        }
234
      }
235
    },
236
    "osparams": {},
237
    "prealloc_wipe_disks": false,
238
    "primary_ip_family": 2,
239
    "reserved_lvs": [],
240
    "rsahostkeypub": "YOURKEY",
241
    "serial_no": 3189,
242
    "shared_file_storage_dir": "/srv/ganeti/shared-file-storage",
243
    "tags": [
244
      "mytag"
245
    ],
246
    "tcpudp_port_pool": [
247
      32101,
248
      32102,
249
      32103,
250
      32104,
251
      32105
252
    ],
253
    "uid_pool": [],
254
    "use_external_mip_script": false,
255
    "uuid": "dddf8c12-f2d8-4718-a35b-7804daf12a3f",
256
    "volume_group_name": "xenvg"
257
  },
258
  "ctime": 1343869045.605523,
259
  "instances": {
260
    "instance1.example.com": {
261
      "admin_state": "up",
262
      "beparams": {},
263
      "ctime": 1363620258.608976,
264
      "disk_template": "drbd",
265
      "disks": [
266
        {
267
          "children": [
268
            {
269
              "dev_type": "lvm",
270
              "logical_id": [
271
                "xenvg",
272
                "5c390722-6a7a-4bb4-9cef-98d896a8e6b1.disk0_data"
273
              ],
274
              "params": {},
275
              "physical_id": [
276
                "xenvg",
277
                "5c390722-6a7a-4bb4-9cef-98d896a8e6b1.disk0_data"
278
              ],
279
              "size": 1024
280
            },
281
            {
282
              "dev_type": "lvm",
283
              "logical_id": [
284
                "xenvg",
285
                "5c390722-6a7a-4bb4-9cef-98d896a8e6b1.disk0_meta"
286
              ],
287
              "params": {},
288
              "physical_id": [
289
                "xenvg",
290
                "5c390722-6a7a-4bb4-9cef-98d896a8e6b1.disk0_meta"
291
              ],
292
              "size": 128
293
            }
294
          ],
295
          "dev_type": "drbd8",
296
          "iv_name": "disk/0",
297
          "logical_id": [
298
            "node1.example.com",
299
            "node3.example.com",
300
            32100,
301
            0,
302
            0,
303
            "d3c3fd475fcbaf5fd177fb245ac43b71247ada38"
304
          ],
305
          "mode": "rw",
306
          "params": {},
307
          "physical_id": [
308
            "198.51.100.82",
309
            32100,
310
            "198.51.100.84",
311
            32100,
312
            0,
313
            "d3c3fd475fcbaf5fd177fb245ac43b71247ada38"
314
          ],
315
          "size": 1024
316
        }
317
      ],
318
      "hvparams": {},
319
      "hypervisor": "xen-pvm",
320
      "mtime": 1363620320.874901,
321
      "name": "instance1.example.com",
322
      "nics": [
323
        {
324
          "mac": "aa:bb:cc:b2:6e:0b",
325
          "nicparams": {}
326
        }
327
      ],
328
      "os": "busybox",
329
      "osparams": {},
330
      "primary_node": "node1.example.com",
331
      "serial_no": 2,
332
      "uuid": "6c078d22-3eb6-4780-857d-81772e09eef1"
333
    },
334
    "instance2.example.com": {
335
      "admin_state": "up",
336
      "beparams": {},
337
      "ctime": 1355186880.451181,
338
      "disk_template": "plain",
339
      "disks": [
340
        {
341
          "dev_type": "lvm",
342
          "iv_name": "disk/0",
343
          "logical_id": [
344
            "xenvg",
345
            "3e559cd7-1024-4294-a923-a9fd13182b2f.disk0"
346
          ],
347
          "mode": "rw",
348
          "params": {},
349
          "physical_id": [
350
            "xenvg",
351
            "3e559cd7-1024-4294-a923-a9fd13182b2f.disk0"
352
          ],
353
          "size": 102400
354
        }
355
      ],
356
      "hvparams": {},
357
      "hypervisor": "xen-pvm",
358
      "mtime": 1355186898.307642,
359
      "name": "instance2.example.com",
360
      "nics": [
361
        {
362
          "mac": "aa:bb:cc:56:83:fb",
363
          "nicparams": {}
364
        }
365
      ],
366
      "os": "debian-image",
367
      "osparams": {},
368
      "primary_node": "node3.example.com",
369
      "serial_no": 2,
370
      "tags": [],
371
      "uuid": "8fde9f6d-e1f1-4850-9e9c-154966f622f5"
372
    },
373
    "instance3.example.com": {
374
      "admin_state": "up",
375
      "beparams": {},
376
      "ctime": 1354038435.343601,
377
      "disk_template": "plain",
378
      "disks": [
379
        {
380
          "dev_type": "lvm",
381
          "iv_name": "disk/0",
382
          "logical_id": [
383
            "xenvg",
384
            "b27a576a-13f7-4f07-885c-63fcad4fdfcc.disk0"
385
          ],
386
          "mode": "rw",
387
          "params": {},
388
          "physical_id": [
389
            "xenvg",
390
            "b27a576a-13f7-4f07-885c-63fcad4fdfcc.disk0"
391
          ],
392
          "size": 1280
393
        }
394
      ],
395
      "hvparams": {},
396
      "hypervisor": "xen-pvm",
397
      "mtime": 1354224585.700732,
398
      "name": "instance3.example.com",
399
      "nics": [
400
        {
401
          "mac": "aa:bb:cc:5e:5c:75",
402
          "nicparams": {}
403
        }
404
      ],
405
      "os": "debian-image",
406
      "osparams": {},
407
      "primary_node": "node2.example.com",
408
      "serial_no": 4,
409
      "tags": [],
410
      "uuid": "4e091bdc-e205-4ed7-8a47-0c9130a6619f"
411
    }
412
  },
413
  "mtime": 1361984633.373014,
414
  "networks": {
415
    "99f0128a-1c84-44da-90b9-9581ea00c075": {
416
      "ext_reservations": "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
417
      "name": "a network",
418
      "network": "203.0.113.0/24",
419
      "reservations": "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
420
      "serial_no": 1,
421
      "uuid": "99f0128a-1c84-44da-90b9-9581ea00c075"
422
    }
423
  },
424
  "nodegroups": {
425
    "5244a46d-7506-4e14-922d-02b58153dde1": {
426
      "alloc_policy": "preferred",
427
      "diskparams": {},
428
      "ipolicy": {
429
        "max": {},
430
        "min": {},
431
        "std": {}
432
      },
433
      "mtime": 1361963775.575009,
434
      "name": "default",
435
      "ndparams": {},
436
      "networks": {},
437
      "serial_no": 125,
438
      "tags": [],
439
      "uuid": "5244a46d-7506-4e14-922d-02b58153dde1"
440
    },
441
    "6c0a8916-b719-45ad-95dd-82192b1e473f": {
442
      "alloc_policy": "preferred",
443
      "diskparams": {},
444
      "ipolicy": {
445
	"disk-templates": [
446
	  "plain"
447
	],
448
	"max": {},
449
	"min": {},
450
	"spindle-ratio": 5.2,
451
	"std": {},
452
	"vcpu-ratio": 3.14
453
      },
454
      "mtime": 1361963775.575009,
455
      "name": "another",
456
      "ndparams": {
457
        "exclusive_storage": true
458
      },
459
      "networks": {},
460
      "serial_no": 125,
461
      "tags": [],
462
      "uuid": "6c0a8916-b719-45ad-95dd-82192b1e473f"
463
    }
464
  },
465
  "nodes": {
466
    "node1.example.com": {
467
      "ctime": 1349722460.022264,
468
      "drained": false,
469
      "group": "5244a46d-7506-4e14-922d-02b58153dde1",
470
      "master_candidate": true,
471
      "master_capable": true,
472
      "mtime": 1359986533.353329,
473
      "name": "node1.example.com",
474
      "ndparams": {},
475
      "offline": false,
476
      "powered": true,
477
      "primary_ip": "192.0.2.82",
478
      "secondary_ip": "198.51.100.82",
479
      "serial_no": 197,
480
      "tags": [],
481
      "uuid": "9a12d554-75c0-4cb1-8064-103365145db0",
482
      "vm_capable": true
483
    },
484
    "node2.example.com": {
485
      "ctime": 1343869045.604884,
486
      "drained": false,
487
      "group": "5244a46d-7506-4e14-922d-02b58153dde1",
488
      "master_candidate": true,
489
      "master_capable": true,
490
      "mtime": 1358348755.779906,
491
      "name": "node2.example.com",
492
      "ndparams": {},
493
      "offline": false,
494
      "powered": true,
495
      "primary_ip": "192.0.2.83",
496
      "secondary_ip": "198.51.100.83",
497
      "serial_no": 6,
498
      "tags": [],
499
      "uuid": "2ae3d962-2dad-44f2-bdb1-85f77107f907",
500
      "vm_capable": true
501
    },
502
    "node3.example.com": {
503
      "ctime": 1343869205.934807,
504
      "drained": false,
505
      "group": "5244a46d-7506-4e14-922d-02b58153dde1",
506
      "master_candidate": true,
507
      "master_capable": true,
508
      "mtime": 1353019704.885368,
509
      "name": "node3.example.com",
510
      "ndparams": {},
511
      "offline": false,
512
      "powered": true,
513
      "primary_ip": "192.0.2.84",
514
      "secondary_ip": "198.51.100.84",
515
      "serial_no": 2,
516
      "tags": [],
517
      "uuid": "41f9c238-173c-4120-9e41-04ad379b647a",
518
      "vm_capable": true
519
    }
520
  },
521
  "serial_no": 7624,
522
  "version": 2070000
523
}
b/test/py/cfgupgrade_unittest.py
365 365
  def testUpgradeFullConfigFrom_2_7(self):
366 366
    self._TestUpgradeFromFile("cluster_config_2.7.json", False)
367 367

  
368
  def testUpgradeFullConfigFrom_2_8(self):
369
    self._TestUpgradeFromFile("cluster_config_2.8.json", False)
370

  
368 371
  def testUpgradeCurrent(self):
369 372
    self._TestSimpleUpgrade(constants.CONFIG_VERSION, False)
370 373

  
......
382 385
  def testDowngradeFullConfig(self):
383 386
    """Test for upgrade + downgrade combination."""
384 387
    # This test can work only with the previous version of a configuration!
385
    # For 2.7, downgrading returns the original file only if group policies
386
    # don't override instance specs, so we need to use an ad-hoc configuration.
387
    oldconfname = "cluster_config_downgraded_2.7.json"
388
    oldconfname = "cluster_config_2.8.json"
388 389
    self._TestUpgradeFromFile(oldconfname, False)
389 390
    _RunUpgrade(self.tmpdir, False, True, downgrade=True)
390 391
    oldconf = self._LoadTestDataConfig(oldconfname)
b/tools/cfgupgrade
260 260
  UpgradeInstances(config_data)
261 261

  
262 262

  
263
def DowngradeIPolicy(ipolicy, owner):
264
  # Downgrade IPolicy to 2.7 (stable)
265
  minmax_keys = ["min", "max"]
266
  specs_is_split = any((k in ipolicy) for k in minmax_keys)
267
  if not specs_is_split:
268
    if "minmax" in ipolicy:
269
      if type(ipolicy["minmax"]) is not list:
270
        raise Error("Invalid minmax type in %s ipolicy: %s" %
271
                    (owner, type(ipolicy["minmax"])))
272
      if len(ipolicy["minmax"]) > 1:
273
        logging.warning("Discarding some limit specs values from %s policy",
274
                        owner)
275
      minmax = ipolicy["minmax"][0]
276
      del ipolicy["minmax"]
277
    else:
278
      minmax = {}
279
    for key in minmax_keys:
280
      spec = minmax.get(key, {})
281
      ipolicy[key] = spec
282
    if "std" not in ipolicy:
283
      ipolicy["std"] = {}
284

  
285

  
286
def DowngradeGroups(config_data):
287
  for group in config_data["nodegroups"].values():
288
    ipolicy = group.get("ipolicy", None)
289
    if ipolicy is not None:
290
      DowngradeIPolicy(ipolicy, "group \"%s\"" % group.get("name"))
291

  
292

  
293
def DowngradeEnabledTemplates(cluster):
294
  # Remove enabled disk templates to downgrade to 2.7
295
  edt_key = "enabled_disk_templates"
296
  if edt_key in cluster:
297
    logging.warning("Removing cluster's enabled disk templates; value = %s",
298
                    utils.CommaJoin(cluster[edt_key]))
299
    del cluster[edt_key]
300

  
301

  
302
def DowngradeCluster(config_data):
303
  cluster = config_data.get("cluster", None)
304
  if cluster is None:
305
    raise Error("Cannot find cluster")
306
  DowngradeEnabledTemplates(cluster)
307
  ipolicy = cluster.get("ipolicy", None)
308
  if ipolicy:
309
    DowngradeIPolicy(ipolicy, "cluster")
310

  
311

  
312 263
def DowngradeAll(config_data):
264
  # Unused arguments, pylint: disable=W0613
313 265
  # Any code specific to a particular version should be labeled that way, so
314 266
  # it can be removed when updating to the next version.
315
  DowngradeCluster(config_data)
316
  DowngradeGroups(config_data)
267
  pass
317 268

  
318 269

  
319 270
def main():

Also available in: Unified diff