Revision bump for 2.14.2
[ganeti-github.git] / NEWS
1 News
2 ====
3
4
5 Version 2.14.2
6 --------------
7
8 *(Released Tue, 15 Dec 2015)*
9
10 Important changes and security notes
11 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12
13 Security release.
14
15 CVE-2015-7944
16
17 Ganeti provides a RESTful control interface called the RAPI. Its HTTPS
18 implementation is vulnerable to DoS attacks via client-initiated SSL
19 parameter renegotiation. While the interface is not meant to be exposed
20 publicly, due to the fact that it binds to all interfaces, we believe
21 some users might be exposing it unintentionally and are vulnerable. A
22 DoS attack can consume resources meant for Ganeti daemons and instances
23 running on the master node, making both perform badly.
24
25 Fixes are not feasible due to the OpenSSL Python library not exposing
26 functionality needed to disable client-side renegotiation. Instead, we
27 offer instructions on how to control RAPI's exposure, along with info
28 on how RAPI can be setup alongside an HTTPS proxy in case users still
29 want or need to expose the RAPI interface. The instructions are
30 outlined in Ganeti's security document: doc/html/security.html
31
32 CVE-2015-7945
33
34 Ganeti leaks the DRBD secret through the RAPI interface. Examining job
35 results after an instance information job reveals the secret. With the
36 DRBD secret, access to the local cluster network, and ARP poisoning,
37 an attacker can impersonate a Ganeti node and clone the disks of a
38 DRBD-based instance. While an attacker with access to the cluster
39 network is already capable of accessing any data written as DRBD
40 traffic is unencrypted, having the secret expedites the process and
41 allows access to the entire disk.
42
43 Fixes contained in this release prevent the secret from being exposed
44 via the RAPI. The DRBD secret can be changed by converting an instance
45 to plain and back to DRBD, generating a new secret, but redundancy will
46 be lost until the process completes.
47 Since attackers with node access are capable of accessing some and
48 potentially all data even without the secret, we do not recommend that
49 the secret be changed for existing instances.
50
51 Minor changes
52 ~~~~~~~~~~~~~
53
54 - Allow disk attachment to diskless instances
55 - Calculate correct affected nodes set in InstanceChangeGroup
56   (Issue 1144)
57 - Do not retry all requests after connection timeouts to prevent
58   repeated job submission
59 - Fix reason trails of expanding opcodes
60 - Make lockConfig call retryable
61 - Extend timeout for gnt-cluster renew-crypto
62 - Return the correct error code in the post-upgrade script
63 - Make OpenSSL refrain from DH altogether
64 - Fix faulty iallocator type check
65 - Improve cfgupgrade output in case of errors
66 - Fix upgrades of instances with missing creation time
67 - Make htools tolerate missing "dtotal" and "dfree" on luxi
68 - Fix default for --default-iallocator-params
69 - Renew-crypto: stop daemons on master node first
70 - Don't warn about broken SSH setup of offline nodes (Issue 1131)
71 - At IAlloc backend guess state from admin state
72 - Set node tags in iallocator htools backend
73 - Only search for Python-2 interpreters
74 - Handle Xen 4.3 states better
75 - Improve xl socat migrations
76 - replace-disks: fix --ignore-ipolicy
77 - Fix disabling of user shutdown reporting
78 - Allow userspace-only disk templates
79 - Fix instance failover in case of DTS_EXT_MIRROR
80 - Fix operations on empty nodes by accepting allocation of 0 jobs
81 - Fix instance multi allocation for non-DRBD disks
82 - Redistribute master key on downgrade
83 - Allow more failover options when using the --no-disk-moves flag
84
85
86 Version 2.14.1
87 --------------
88
89 *(Released Fri, 10 Jul 2015)*
90
91 Incompatible/important changes
92 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
93
94 - The SSH security changes reduced the number of nodes which can SSH into
95   other nodes. Unfortunately enough, the Ganeti implementation of migration
96   for the xl stack of Xen required SSH to be able to migrate the instance,
97   leading to a situation where full movement of an instance around the cluster
98   was not possible. This version fixes the issue by using socat to transfer
99   instance data. While socat is less secure than SSH, it is about as secure as
100   xm migrations, and occurs over the secondary network if present. As a
101   consequence of this change, Xen instance migrations using xl cannot occur
102   between nodes running 2.14.0 and 2.14.1.
103 - This release contains a fix for the problem that different encodings in
104   SSL certificates can break RPC communication (issue 1094). The fix makes
105   it necessary to rerun 'gnt-cluster renew-crypto --new-node-certificates'
106   after the cluster is fully upgraded to 2.14.1
107
108 Other Changes
109 ~~~~~~~~~~~~~
110
111 - The ``htools`` now properly work also on shared-storage clusters.
112 - Instance moves now work properly also for the plain disk template.
113 - Filter-evaluation for run-time data filter was fixed (issue 1100).
114 - Various improvements to the documentation have been added.
115
116
117 Version 2.14.0
118 --------------
119
120 *(Released Tue, 2 Jun 2015)*
121
122 New features
123 ~~~~~~~~~~~~
124
125 - The build system now enforces external Haskell dependencies to lie in
126   a supported range as declared by our new ganeti.cabal file.
127 - Basic support for instance reservations has been added. Instance addition
128   supports a --forthcoming option telling Ganeti to only reserve the resources
129   but not create the actual instance. The instance can later be created with
130   by passing the --commit option to the instance addition command.
131 - Node tags starting with htools:nlocation: now have a special meaning to htools(1).
132   They control between which nodes migration is possible, e.g., during hypervisor
133   upgrades. See hbal(1) for details.
134 - The node-allocation lock as been removed for good, thus speeding up parallel
135   instance allocation and creation.
136 - The external storage interface has been extended by optional ``open``
137   and ``close`` scripts.
138
139 New dependencies
140 ~~~~~~~~~~~~~~~~
141
142 - Building the Haskell part of Ganeti now requires Cabal and cabal-install.
143
144 Known issues
145 ~~~~~~~~~~~~
146
147 - Under certain conditions instance doesn't get unpaused after live
148   migration (issue #1050)
149
150 Since 2.14.0 rc1
151 ~~~~~~~~~~~~~~~~
152
153 - The call to the IAllocator in 'gnt-node evacuate' has been fixed.
154 - In opportunistic locking, only ask for those node resource locks where
155   the node lock is held.
156 - Lock requests are repeatable now; this avoids failure of a job in a
157   race condition with a signal sent to the job.
158 - Various improvements to the QA.
159
160
161 Version 2.14.0 rc2
162 ------------------
163
164 *(Released Tue, 19 May 2015)*
165
166 This was the second release candidate in the 2.14 series. All important
167 changes are listed in the 2.14.0 entry.
168
169 Since 2.14.0 rc1
170 ~~~~~~~~~~~~~~~~
171
172 - private parameters are now properly exported to instance create scripts
173 - unnecessary config unlocks and upgrades have been removed, improving
174   performance, in particular of cluster verification
175 - some rarely occuring file-descriptor leaks have been fixed
176 - The checks for orphan and lost volumes have been fixed to also work
177   correctly when multiple volume groups are used.
178
179
180 Version 2.14.0 rc1
181 ------------------
182
183 *(Released Wed, 29 Apr 2015)*
184
185 This was the first release candidate in the 2.14 series. All important
186 changes are listed in the latest 2.14 entry.
187
188 Since 2.14.0 beta2
189 ~~~~~~~~~~~~~~~~~~
190
191 The following issue has been fixed:
192
193 - A race condition where a badly timed kill of WConfD could lead to
194   an incorrect configuration.
195
196 Fixes inherited from the 2.12 branch:
197
198 - Upgrade from old versions (2.5 and 2.6) was failing (issues 1070, 1019).
199 - gnt-network info outputs wrong external reservations (issue 1068)
200 - Refuse to demote master from master capability (issue 1023)
201
202 Fixes inherited from the 2.13 branch:
203
204 - bugs related to ssh-key handling of master candidate (issues 1045, 1046, 1047)
205
206
207 Version 2.14.0 beta2
208 --------------------
209
210 *(Released Thu, 26 Mar 2015)*
211
212 This was the second beta release in the 2.14 series. All important changes
213 are listed in the latest 2.14 entry.
214
215 Since 2.14.0 beta1
216 ~~~~~~~~~~~~~~~~~~
217
218 The following issues have been fixed:
219
220 - Issue 1018: Cluster init (and possibly other jobs) occasionally fail to start
221
222 The extension of the external storage interface was not present in 2.14.0 beta1.
223
224
225 Version 2.14.0 beta1
226 --------------------
227
228 *(Released Fri, 13 Feb 2015)*
229
230 This was the first beta release of the 2.14 series. All important changes
231 are listed in the latest 2.14 entry.
232
233
234 Version 2.13.3
235 --------------
236
237 *(Released Mon, 14 Dec 2015)*
238
239 Important changes and security notes
240 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
241
242 Security release.
243
244 CVE-2015-7944
245
246 Ganeti provides a RESTful control interface called the RAPI. Its HTTPS
247 implementation is vulnerable to DoS attacks via client-initiated SSL
248 parameter renegotiation. While the interface is not meant to be exposed
249 publicly, due to the fact that it binds to all interfaces, we believe
250 some users might be exposing it unintentionally and are vulnerable. A
251 DoS attack can consume resources meant for Ganeti daemons and instances
252 running on the master node, making both perform badly.
253
254 Fixes are not feasible due to the OpenSSL Python library not exposing
255 functionality needed to disable client-side renegotiation. Instead, we
256 offer instructions on how to control RAPI's exposure, along with info
257 on how RAPI can be setup alongside an HTTPS proxy in case users still
258 want or need to expose the RAPI interface. The instructions are
259 outlined in Ganeti's security document: doc/html/security.html
260
261 CVE-2015-7945
262
263 Ganeti leaks the DRBD secret through the RAPI interface. Examining job
264 results after an instance information job reveals the secret. With the
265 DRBD secret, access to the local cluster network, and ARP poisoning,
266 an attacker can impersonate a Ganeti node and clone the disks of a
267 DRBD-based instance. While an attacker with access to the cluster
268 network is already capable of accessing any data written as DRBD
269 traffic is unencrypted, having the secret expedites the process and
270 allows access to the entire disk.
271
272 Fixes contained in this release prevent the secret from being exposed
273 via the RAPI. The DRBD secret can be changed by converting an instance
274 to plain and back to DRBD, generating a new secret, but redundancy will
275 be lost until the process completes.
276 Since attackers with node access are capable of accessing some and
277 potentially all data even without the secret, we do not recommend that
278 the secret be changed for existing instances.
279
280 Minor changes
281 ~~~~~~~~~~~~~
282
283 - Calculate correct affected nodes set in InstanceChangeGroup
284   (Issue 1144)
285 - Do not retry all requests after connection timeouts to prevent
286   repeated job submission
287 - Fix reason trails of expanding opcodes
288 - Make lockConfig call retryable
289 - Extend timeout for gnt-cluster renew-crypto
290 - Return the correct error code in the post-upgrade script
291 - Make OpenSSL refrain from DH altogether
292 - Fix upgrades of instances with missing creation time
293 - Make htools tolerate missing "dtotal" and "dfree" on luxi
294 - Fix default for --default-iallocator-params
295 - Renew-crypto: stop daemons on master node first
296 - Don't warn about broken SSH setup of offline nodes (Issue 1131)
297 - At IAlloc backend guess state from admin state
298 - Only search for Python-2 interpreters
299 - Handle Xen 4.3 states better
300 - Improve xl socat migrations
301 - replace-disks: fix --ignore-ipolicy
302 - Fix disabling of user shutdown reporting
303 - Fix operations on empty nodes by accepting allocation of 0 jobs
304 - Fix instance multi allocation for non-DRBD disks
305 - Redistribute master key on downgrade
306 - Allow more failover options when using the --no-disk-moves flag
307
308
309 Version 2.13.2
310 --------------
311
312 *(Released Mon, 13 Jul 2015)*
313
314 Incompatible/important changes
315 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
316
317 - This release contains a fix for the problem that different encodings in
318   SSL certificates can break RPC communication (issue 1094). The fix makes
319   it necessary to rerun 'gnt-cluster renew-crypto --new-node-certificates'
320   after the cluster is fully upgraded to 2.13.2
321
322 Other fixes and known issues
323 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
324
325 Inherited from 2.12:
326
327 - Fixed Issue #1115: Race between starting WConfD and updating the config
328 - Fixed Issue #1114: Binding RAPI to a specific IP makes the watcher
329   restart the RAPI
330 - Fixed Issue #1100: Filter-evaluation for run-time data filter
331 - Better handling of the "crashed" Xen state
332 - The watcher can be instructed to skip disk verification
333 - Reduce amount of logging on successful requests
334 - Prevent multiple communication NICs being created for instances
335 - The ``htools`` now properly work also on shared-storage clusters
336 - Instance moves now work properly also for the plain disk template
337 - Various improvements to the documentation have been added
338
339 Known issues:
340 - Issue #1104: gnt-backup: dh key too small
341
342
343 Version 2.13.1
344 --------------
345
346 *(Released Tue, 16 Jun 2015)*
347
348 Incompatible/important changes
349 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
350
351 - The SSH security changes reduced the number of nodes which can SSH into
352   other nodes. Unfortunately enough, the Ganeti implementation of migration
353   for the xl stack of Xen required SSH to be able to migrate the instance,
354   leading to a situation where full movement of an instance around the cluster
355   was not possible. This version fixes the issue by using socat to transfer
356   instance data. While socat is less secure than SSH, it is about as secure as
357   xm migrations, and occurs over the secondary network if present. As a
358   consequence of this change, Xen instance migrations using xl cannot occur
359   between nodes running 2.13.0 and 2.13.1.
360
361 Other fixes and known issues
362 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
363
364 Inherited from 2.12:
365
366 - Fixed Issue #1082: RAPI is unresponsive after master-failover
367 - Fixed Issue #1083: Cluster verify reports existing instance disks on
368   non-default VGs as missing
369 - Fixed Issue #1101: Modifying the storage directory for the shared-file disk
370   template doesn't work
371 - Fixed a possible file descriptor leak when forking jobs
372 - Fixed missing private parameters in the environment for OS scripts
373 - Fixed a performance regression when handling configuration
374   (only upgrade it if it changes)
375 - Adapt for compilation with GHC7.8 (compiles with warnings;
376   cherrypicked from 2.14)
377
378 Known issues:
379 - Issue #1094: Mismatch in SSL encodings breaks RPC communication
380 - Issue #1104: Export fails: key is too small
381
382
383 Version 2.13.0
384 --------------
385
386 *(Released Tue, 28 Apr 2015)*
387
388 Incompatible/important changes
389 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
390
391 - Ganeti now internally retries the instance creation opcode if opportunistic
392   locking did not acquire nodes with enough free resources. The internal retry
393   will not use opportunistic locking. In particular, instance creation, even
394   if opportunistic locking is set, will never fail with ECODE_TEMP_NORES.
395 - The handling of SSH security had undergone a significant change. From
396   this version on, each node has an individual SSH key pair instead of
397   sharing one with all nodes of the cluster. From now on, we also
398   restrict SSH access to master candidates. This means that only master
399   candidates can ssh into other cluster nodes and all
400   non-master-candidates cannot. Refer to the UPGRADE notes
401   for further instructions on the creation and distribution of the keys.
402 - Ganeti now checks hypervisor version compatibility before trying an instance
403   migration. It errors out if the versions are not compatible. Add the option
404   --ignore-hvversions to restore the old behavior of only warning.
405 - Node tags starting with htools:migration: or htools:allowmigration: now have
406   a special meaning to htools(1). See hbal(1) for details.
407 - The LXC hypervisor code has been repaired and improved. Instances cannot be
408   migrated and cannot have more than one disk, but should otherwise work as with
409   other hypervisors. OS script changes should not be necessary. LXC version
410   1.0.0 or higher required.
411
412 New features
413 ~~~~~~~~~~~~
414
415 - A new job filter rules system allows to define iptables-like rules for the
416   job scheduler, making it easier to (soft-)drain the job queue, perform
417   maintenance, and rate-limit selected job types. See gnt-filter(8) for
418   details.
419 - Ganeti jobs can now be ad-hoc rate limited via the reason trail.
420   For a set of jobs queued with "--reason=rate-limit:n:label", the job
421   scheduler ensures that not more than n will be scheduled to run at the same
422   time. See ganeti(7), section "Options", for details.
423 - The monitoring daemon has now variable sleep times for the data
424   collectors. This currently means that the granularity of cpu-avg-load
425   can be configured.
426 - The 'gnt-cluster verify' command now has the option
427   '--verify-ssh-clutter', which verifies whether Ganeti (accidentally)
428   cluttered up the 'authorized_keys' file.
429 - Instance disks can now be converted from one disk template to another for many
430   different template combinations. When available, more efficient conversions
431   will be used, otherwise the disks are simply copied over.
432
433 New dependencies
434 ~~~~~~~~~~~~~~~~
435
436 - The monitoring daemon uses the PSQueue library. Be sure to install it
437   if you use Mond.
438 - The formerly optional regex-pcre is now an unconditional dependency because
439   the new job filter rules have regular expressions as a core feature.
440
441 Since 2.13.0 rc1
442 ~~~~~~~~~~~~~~~~~~
443
444 The following issues have been fixed:
445
446 - Bugs related to ssh-key handling of master candidates (issues 1045,
447   1046, 1047)
448
449 Fixes inherited from the 2.12 branch:
450
451 - Upgrade from old versions (2.5 and 2.6) was failing (issues 1070, 1019).
452 - gnt-network info outputs wrong external reservations (issue 1068)
453 - Refuse to demote master from master capability (issue 1023)
454
455
456 Version 2.13.0 rc1
457 ------------------
458
459 *(Released Wed, 25 Mar 2015)*
460
461 This was the first release candidate of the 2.13 series.
462 All important changes are listed in the latest 2.13 entry.
463
464 Since 2.13.0 beta1
465 ~~~~~~~~~~~~~~~~~~
466
467 The following issues have been fixed:
468
469 - Issue 1018: Cluster init (and possibly other jobs) occasionally fail to start
470
471
472 Version 2.13.0 beta1
473 --------------------
474
475 *(Released Wed, 14 Jan 2015)*
476
477 This was the first beta release of the 2.13 series. All important changes
478 are listed in the latest 2.13 entry.
479
480
481 Version 2.12.6
482 --------------
483
484 *(Released Mon, 14 Dec 2015)*
485
486 Important changes and security notes
487 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
488
489 Security release.
490
491 CVE-2015-7944
492
493 Ganeti provides a RESTful control interface called the RAPI. Its HTTPS
494 implementation is vulnerable to DoS attacks via client-initiated SSL
495 parameter renegotiation. While the interface is not meant to be exposed
496 publicly, due to the fact that it binds to all interfaces, we believe
497 some users might be exposing it unintentionally and are vulnerable. A
498 DoS attack can consume resources meant for Ganeti daemons and instances
499 running on the master node, making both perform badly.
500
501 Fixes are not feasible due to the OpenSSL Python library not exposing
502 functionality needed to disable client-side renegotiation. Instead, we
503 offer instructions on how to control RAPI's exposure, along with info
504 on how RAPI can be setup alongside an HTTPS proxy in case users still
505 want or need to expose the RAPI interface. The instructions are
506 outlined in Ganeti's security document: doc/html/security.html
507
508 CVE-2015-7945
509
510 Ganeti leaks the DRBD secret through the RAPI interface. Examining job
511 results after an instance information job reveals the secret. With the
512 DRBD secret, access to the local cluster network, and ARP poisoning,
513 an attacker can impersonate a Ganeti node and clone the disks of a
514 DRBD-based instance. While an attacker with access to the cluster
515 network is already capable of accessing any data written as DRBD
516 traffic is unencrypted, having the secret expedites the process and
517 allows access to the entire disk.
518
519 Fixes contained in this release prevent the secret from being exposed
520 via the RAPI. The DRBD secret can be changed by converting an instance
521 to plain and back to DRBD, generating a new secret, but redundancy will
522 be lost until the process completes.
523 Since attackers with node access are capable of accessing some and
524 potentially all data even without the secret, we do not recommend that
525 the secret be changed for existing instances.
526
527 Minor changes
528 ~~~~~~~~~~~~~
529
530 - Calculate correct affected nodes set in InstanceChangeGroup
531   (Issue 1144)
532 - Do not retry all requests after connection timeouts to prevent
533   repeated job submission
534 - Fix reason trails of expanding opcodes
535 - Make lockConfig call retryable
536 - Return the correct error code in the post-upgrade script
537 - Make OpenSSL refrain from DH altogether
538 - Fix upgrades of instances with missing creation time
539 - Make htools tolerate missing "dtotal" and "dfree" on luxi
540 - Fix default for --default-iallocator-params
541 - At IAlloc backend guess state from admin state
542 - Only search for Python-2 interpreters
543 - Handle Xen 4.3 states better
544 - replace-disks: fix --ignore-ipolicy
545 - Fix disabling of user shutdown reporting
546 - Fix operations on empty nodes by accepting allocation of 0 jobs
547 - Fix instance multi allocation for non-DRBD disks
548 - Allow more failover options when using the --no-disk-moves flag
549
550
551 Version 2.12.5
552 --------------
553
554 *(Released Mon, 13 Jul 2015)*
555
556 Incompatible/important changes
557 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
558
559 - This release contains a fix for the problem that different encodings in
560   SSL certificates can break RPC communication (issue 1094). The fix makes
561   it necessary to rerun 'gnt-cluster renew-crypto --new-node-certificates'
562   after the cluster is fully upgraded to 2.12.5.
563
564 Fixed and improvements
565 ~~~~~~~~~~~~~~~~~~~~~~
566
567 - Fixed Issue #1030: GlusterFS support breaks at upgrade to 2.12 -
568   switches back to shared-file
569 - Fixed Issue #1094 (see the notice in Incompatible/important changes):
570   Differences in encodings of SSL certificates can render a cluster
571   uncommunicative after a master-failover
572 - Fixed Issue #1098: Support for ECDSA SSH keys
573 - Fixed Issue #1100: Filter-evaluation for run-time data filter
574 - Fixed Issue #1101: Modifying the storage directory for the shared-file
575   disk template doesn't work
576 - Fixed Issue #1108: Spurious "NIC name already used" errors during
577   instance creation
578 - Fixed Issue #1114: Binding RAPI to a specific IP makes the watcher
579   restart the RAPI
580 - Fixed Issue #1115: Race between starting WConfD and updating the config
581 - Better handling of the "crashed" Xen state
582 - The ``htools`` now properly work also on shared-storage clusters
583 - Various improvements to the documentation have been added
584
585 Inherited from the 2.11 branch:
586
587 - Fixed Issue #1113: Reduce amount of logging on successful requests
588
589 Known issues
590 ~~~~~~~~~~~~
591
592 - Issue #1104: gnt-backup: dh key too small
593
594
595 Version 2.12.4
596 --------------
597
598 *(Released Tue, 12 May 2015)*
599
600 - Fixed Issue #1082: RAPI is unresponsive after master-failover
601 - Fixed Issue #1083: Cluster verify reports existing instance disks on
602   non-default VGs as missing
603 - Fixed a possible file descriptor leak when forking jobs
604 - Fixed missing private parameters in the environment for OS scripts
605 - Fixed a performance regression when handling configuration
606   (only upgrade it if it changes)
607 - Adapt for compilation with GHC7.8 (compiles with warnings;
608   cherrypicked from 2.14)
609
610 Known issues
611 ~~~~~~~~~~~~
612
613 Pending since 2.12.2:
614
615 - Under certain conditions instance doesn't get unpaused after live
616   migration (issue #1050)
617 - GlusterFS support breaks at upgrade to 2.12 - switches back to
618   shared-file (issue #1030)
619
620
621 Version 2.12.3
622 --------------
623
624 *(Released Wed, 29 Apr 2015)*
625
626 - Fixed Issue #1019: upgrade from 2.6.2 to 2.12 fails. cfgupgrade
627   doesn't migrate the config.data file properly
628 - Fixed Issue 1023: Master master-capable option bug
629 - Fixed Issue 1068: gnt-network info outputs wrong external reservations
630 - Fixed Issue 1070: Upgrade of Ganeti 2.5.2 to 2.12.0 fails due to
631   missing UUIDs for disks
632 - Fixed Issue 1073: ssconf_hvparams_* not distributed with ssconf
633
634 Inherited from the 2.11 branch:
635
636 - Fixed Issue 1032: Renew-crypto --new-node-certificates sometimes does not
637   complete.
638   The operation 'gnt-cluster renew-crypto --new-node-certificates' is
639   now more robust against intermitten reachability errors. Nodes that
640   are temporarily not reachable, are contacted with several retries.
641   Nodes which are marked as offline are omitted right away.
642
643 Inherited from the 2.10 branch:
644
645 - Fixed Issue 1057: master-failover succeeds, but IP remains assigned to
646   old master
647 - Fixed Issue 1058: Python's os.minor() does not support devices with
648   high minor numbers
649 - Fixed Issue 1059: Luxid fails if DNS returns an IPv6 address that does
650   not reverse resolve
651
652 Known issues
653 ~~~~~~~~~~~~
654
655 Pending since 2.12.2:
656
657 - GHC 7.8 introduced some incompatible changes, so currently Ganeti
658   2.12. doesn't compile on GHC 7.8
659 - Under certain conditions instance doesn't get unpaused after live
660   migration (issue #1050)
661 - GlusterFS support breaks at upgrade to 2.12 - switches back to
662   shared-file (issue #1030)
663
664
665 Version 2.12.2
666 --------------
667
668 *(Released Wed, 25 Mar 2015)*
669
670 - Support for the lens Haskell library up to version 4.7 (issue #1028)
671 - SSH keys are now distributed only to master and master candidates
672   (issue #377)
673 - Improved performance for operations that frequently read the
674   cluster configuration
675 - Improved robustness of spawning job processes that occasionally caused
676   newly-started jobs to timeout
677 - Fixed race condition during cluster verify which occasionally caused
678   it to fail
679
680 Inherited from the 2.11 branch:
681
682 - Fix failing automatic glusterfs mounts (issue #984)
683 - Fix watcher failing to read its status file after an upgrade
684   (issue #1022)
685 - Improve Xen instance state handling, in particular of somewhat exotic
686   transitional states
687
688 Inherited from the 2.10 branch:
689
690 - Fix failing to change a diskless drbd instance to plain
691   (issue #1036)
692 - Fixed issues with auto-upgrades from pre-2.6
693   (hv_state_static and disk_state_static)
694 - Fix memory leak in the monitoring daemon
695
696 Inherited from the 2.9 branch:
697
698 - Fix file descriptor leak in Confd client
699
700 Known issues
701 ~~~~~~~~~~~~
702
703 - GHC 7.8 introduced some incompatible changes, so currently Ganeti
704   2.12. doesn't compile on GHC 7.8
705 - Under certain conditions instance doesn't get unpaused after live
706   migration (issue #1050)
707 - GlusterFS support breaks at upgrade to 2.12 - switches back to
708   shared-file (issue #1030)
709
710
711 Version 2.12.1
712 --------------
713
714 *(Released Wed, 14 Jan 2015)*
715
716 - Fix users under which the wconfd and metad daemons run (issue #976)
717 - Clean up stale livelock files (issue #865)
718 - Fix setting up the metadata daemon's network interface for Xen
719 - Make watcher identify itself on disk activation
720 - Add "ignore-ipolicy" option to gnt-instance grow-disk
721 - Check disk size ipolicy during "gnt-instance grow-disk" (issue #995)
722
723 Inherited from the 2.11 branch:
724
725 - Fix counting votes when doing master failover (issue #962)
726 - Fix broken haskell dependencies (issues #758 and #912)
727 - Check if IPv6 is used directly when running SSH (issue #892)
728
729 Inherited from the 2.10 branch:
730
731 - Fix typo in gnt_cluster output (issue #1015)
732 - Use the Python path detected at configure time in the top-level Python
733   scripts.
734 - Fix check for sphinx-build from python2-sphinx
735 - Properly check if an instance exists in 'gnt-instance console'
736
737
738 Version 2.12.0
739 --------------
740
741 *(Released Fri, 10 Oct 2014)*
742
743 Incompatible/important changes
744 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
745
746 - Ganeti is now distributed under the 2-clause BSD license.
747   See the COPYING file.
748 - Do not use debug mode in production. Certain daemons will issue warnings
749   when launched in debug mode. Some debug logging violates some of the new
750   invariants in the system (see "New features"). The logging has been kept as
751   it aids diagnostics and development.
752
753 New features
754 ~~~~~~~~~~~~
755
756 - OS install script parameters now come in public, private and secret
757   varieties:
758
759   - Public parameters are like all other parameters in Ganeti.
760   - Ganeti will not log private and secret parameters, *unless* it is running
761     in debug mode.
762   - Ganeti will not save secret parameters to configuration. Secret parameters
763     must be supplied every time you install, or reinstall, an instance.
764   - Attempting to override public parameters with private or secret parameters
765     results in an error. Similarly, you may not use secret parameters to
766     override private parameters.
767
768 - The move-instance tool can now attempt to allocate an instance by using
769   opportunistic locking when an iallocator is used.
770 - The build system creates sample systemd unit files, available under
771   doc/examples/systemd. These unit files allow systemd to natively
772   manage and supervise all Ganeti processes.
773 - Different types of compression can be applied during instance moves, including
774   user-specified ones.
775 - Ganeti jobs now run as separate processes. The jobs are coordinated by
776   a new daemon "WConfd" that manages cluster's configuration and locks
777   for individual jobs. A consequence is that more jobs can run in parallel;
778   the number is run-time configurable, see "New features" entry
779   of 2.11.0. To avoid luxid being overloaded with tracking running jobs, it
780   backs of and only occasionally, in a sequential way, checks if jobs have
781   finished and schedules new ones. In this way, luxid keeps responsive under
782   high cluster load. The limit as when to start backing of is also run-time
783   configurable.
784 - The metadata daemon is now optionally available, as part of the
785   partial implementation of the OS-installs design. It allows pass
786   information to OS install scripts or to instances.
787   It is also possible to run Ganeti without the daemon, if desired.
788 - Detection of user shutdown of instances has been implemented for Xen
789   as well.
790
791 New dependencies
792 ~~~~~~~~~~~~~~~~
793
794 - The KVM CPU pinning no longer uses the affinity python package, but psutil
795   instead. The package is still optional and needed only if the feature is to
796   be used.
797
798 Incomplete features
799 ~~~~~~~~~~~~~~~~~~~
800
801 The following issues are related to features which are not completely
802 implemented in 2.12:
803
804 - Issue 885: Network hotplugging on KVM sometimes makes an instance
805   unresponsive
806 - Issues 708 and 602: The secret parameters are currently still written
807   to disk in the job queue.
808 - Setting up the metadata network interface under Xen isn't fully
809   implemented yet.
810
811 Known issues
812 ~~~~~~~~~~~~
813
814 - *Wrong UDP checksums in DHCP network packets:*
815   If an instance communicates with the metadata daemon and uses DHCP to
816   obtain its IP address on the provided virtual network interface,
817   it can happen that UDP packets have a wrong checksum, due to
818   a bug in virtio. See for example https://bugs.launchpad.net/bugs/930962
819
820   Ganeti works around this bug by disabling the UDP checksums on the way
821   from a host to instances (only on the special metadata communication
822   network interface) using the ethtool command. Therefore if using
823   the metadata daemon the host nodes should have this tool available.
824 - The metadata daemon is run as root in the split-user mode, to be able
825   to bind to port 80.
826   This should be improved in future versions, see issue #949.
827
828 Since 2.12.0 rc2
829 ~~~~~~~~~~~~~~~~
830
831 The following issues have been fixed:
832
833 - Fixed passing additional parameters to RecreateInstanceDisks over
834   RAPI.
835 - Fixed the permissions of WConfd when running in the split-user mode.
836   As WConfd takes over the previous master daemon to manage the
837   configuration, it currently runs under the masterd user.
838 - Fixed the permissions of the metadata daemon  wn running in the
839   split-user mode (see Known issues).
840 - Watcher now properly adds a reason trail entry when initiating disk
841   checks.
842 - Fixed removing KVM parameters introduced in 2.12 when downgrading a
843   cluster to 2.11: "migration_caps", "disk_aio" and "virtio_net_queues".
844 - Improved retrying of RPC calls that fail due to network errors.
845
846
847 Version 2.12.0 rc2
848 ------------------
849
850 *(Released Mon, 22 Sep 2014)*
851
852 This was the second release candidate of the 2.12 series.
853 All important changes are listed in the latest 2.12 entry.
854
855 Since 2.12.0 rc1
856 ~~~~~~~~~~~~~~~~
857
858 The following issues have been fixed:
859
860 - Watcher now checks if WConfd is running and functional.
861 - Watcher now properly adds reason trail entries.
862 - Fixed NIC options in Xen's config files.
863
864 Inherited from the 2.10 branch:
865
866 - Fixed handling of the --online option
867 - Add warning against hvparam changes with live migrations, which might
868   lead to dangerous situations for instances.
869 - Only the LVs in the configured VG are checked during cluster verify.
870
871
872 Version 2.12.0 rc1
873 ------------------
874
875 *(Released Wed, 20 Aug 2014)*
876
877 This was the first release candidate of the 2.12 series.
878 All important changes are listed in the latest 2.12 entry.
879
880 Since 2.12.0 beta1
881 ~~~~~~~~~~~~~~~~~~
882
883 The following issues have been fixed:
884
885 - Issue 881: Handle communication errors in mcpu
886 - Issue 883: WConfd leaks memory for some long operations
887 - Issue 884: Under heavy load the IAllocator fails with a "missing
888   instance" error
889
890 Inherited from the 2.10 branch:
891
892 - Improve the recognition of Xen domU states
893 - Automatic upgrades:
894   - Create the config backup archive in a safe way
895   - On upgrades, check for upgrades to resume first
896   - Pause watcher during upgrade
897 - Allow instance disks to be added with --no-wait-for-sync
898
899
900 Version 2.12.0 beta1
901 --------------------
902
903 *(Released Mon, 21 Jul 2014)*
904
905 This was the first beta release of the 2.12 series. All important changes
906 are listed in the latest 2.12 entry.
907
908
909 Version 2.11.8
910 --------------
911
912 *(Released Mon, 14 Dec 2015)*
913
914 Important changes and security notes
915 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
916
917 Security release.
918
919 CVE-2015-7944
920
921 Ganeti provides a RESTful control interface called the RAPI. Its HTTPS
922 implementation is vulnerable to DoS attacks via client-initiated SSL
923 parameter renegotiation. While the interface is not meant to be exposed
924 publicly, due to the fact that it binds to all interfaces, we believe
925 some users might be exposing it unintentionally and are vulnerable. A
926 DoS attack can consume resources meant for Ganeti daemons and instances
927 running on the master node, making both perform badly.
928
929 Fixes are not feasible due to the OpenSSL Python library not exposing
930 functionality needed to disable client-side renegotiation. Instead, we
931 offer instructions on how to control RAPI's exposure, along with info
932 on how RAPI can be setup alongside an HTTPS proxy in case users still
933 want or need to expose the RAPI interface. The instructions are
934 outlined in Ganeti's security document: doc/html/security.html
935
936 CVE-2015-7945
937
938 Ganeti leaks the DRBD secret through the RAPI interface. Examining job
939 results after an instance information job reveals the secret. With the
940 DRBD secret, access to the local cluster network, and ARP poisoning,
941 an attacker can impersonate a Ganeti node and clone the disks of a
942 DRBD-based instance. While an attacker with access to the cluster
943 network is already capable of accessing any data written as DRBD
944 traffic is unencrypted, having the secret expedites the process and
945 allows access to the entire disk.
946
947 Fixes contained in this release prevent the secret from being exposed
948 via the RAPI. The DRBD secret can be changed by converting an instance
949 to plain and back to DRBD, generating a new secret, but redundancy will
950 be lost until the process completes.
951 Since attackers with node access are capable of accessing some and
952 potentially all data even without the secret, we do not recommend that
953 the secret be changed for existing instances.
954
955 Minor changes
956 ~~~~~~~~~~~~~
957
958 - Make htools tolerate missing "dtotal" and "dfree" on luxi
959 - Fix default for --default-iallocator-params
960 - At IAlloc backend guess state from admin state
961 - replace-disks: fix --ignore-ipolicy
962 - Fix instance multi allocation for non-DRBD disks
963 - Trigger renew-crypto on downgrade to 2.11
964 - Downgrade log-message for rereading job
965 - Downgrade log-level for successful requests
966 - Check for gnt-cluster before running gnt-cluster upgrade
967
968
969 Version 2.11.7
970 --------------
971
972 *(Released Fri, 17 Apr 2015)*
973
974 - The operation 'gnt-cluster renew-crypto --new-node-certificates' is
975   now more robust against intermitten reachability errors. Nodes that
976   are temporarily not reachable, are contacted with several retries.
977   Nodes which are marked as offline are omitted right away.
978
979
980 Version 2.11.6
981 --------------
982
983 *(Released Mon, 22 Sep 2014)*
984
985 - Ganeti is now distributed under the 2-clause BSD license.
986   See the COPYING file.
987 - Fix userspace access checks.
988 - Various documentation fixes have been added.
989
990 Inherited from the 2.10 branch:
991
992 - The --online option now works as documented.
993 - The watcher is paused during cluster upgrades; also, upgrade
994   checks for upgrades to resume first.
995 - Instance disks can be added with --no-wait-for-sync.
996
997
998 Version 2.11.5
999 --------------
1000
1001 *(Released Thu, 7 Aug 2014)*
1002
1003 Inherited from the 2.10 branch:
1004
1005 Important security release. In 2.10.0, the
1006 'gnt-cluster upgrade' command was introduced. Before
1007 performing an upgrade, the configuration directory of
1008 the cluster is backed up. Unfortunately, the archive was
1009 written with permissions that make it possible for
1010 non-privileged users to read the archive and thus have
1011 access to cluster and RAPI keys. After this release,
1012 the archive will be created with privileged access only.
1013
1014 We strongly advise you to restrict the permissions of
1015 previously created archives. The archives are found in
1016 /var/lib/ganeti*.tar (unless otherwise configured with
1017 --localstatedir or --with-backup-dir).
1018
1019 If you suspect that non-privileged users have accessed
1020 your archives already, we advise you to renew the
1021 cluster's crypto keys using 'gnt-cluster renew-crypto'
1022 and to reset the RAPI credentials by editing
1023 /var/lib/ganeti/rapi_users (respectively under a
1024 different path if configured differently with
1025 --localstatedir).
1026
1027 Other changes included in this release:
1028
1029 - Fix handling of Xen instance states.
1030 - Fix NIC configuration with absent NIC VLAN
1031 - Adapt relative path expansion in PATH to new environment
1032 - Exclude archived jobs from configuration backups
1033 - Fix RAPI for split query setup
1034 - Allow disk hot-remove even with chroot or SM
1035
1036 Inherited from the 2.9 branch:
1037
1038 - Make htools tolerate missing 'spfree' on luxi
1039
1040
1041 Version 2.11.4
1042 --------------
1043
1044 *(Released Thu, 31 Jul 2014)*
1045
1046 - Improved documentation of the instance shutdown behavior.
1047
1048 Inherited from the 2.10 branch:
1049
1050 - KVM: fix NIC configuration with absent NIC VLAN (Issue 893)
1051 - Adapt relative path expansion in PATH to new environment
1052 - Exclude archived jobs from configuration backup
1053 - Expose early_release for ReplaceInstanceDisks
1054 - Add backup directory for configuration backups for upgrades
1055 - Fix BlockdevSnapshot in case of non lvm-based disk
1056 - Improve RAPI error handling for queries in non-existing items
1057 - Allow disk hot-remove even with chroot or SM
1058 - Remove superflous loop in instance queries (Issue 875)
1059
1060 Inherited from the 2.9 branch:
1061
1062 - Make ganeti-cleaner switch to save working directory (Issue 880)
1063
1064
1065 Version 2.11.3
1066 --------------
1067
1068 *(Released Wed, 9 Jul 2014)*
1069
1070 - Readd nodes to their previous node group
1071 - Remove old-style gnt-network connect
1072
1073 Inherited from the 2.10 branch:
1074
1075 - Make network_vlan an optional OpParam
1076 - hspace: support --accept-existing-errors
1077 - Make hspace support --independent-groups
1078 - Add a modifier for a group's allocation policy
1079 - Export VLAN nicparam to NIC configuration scripts
1080 - Fix gnt-network client to accept vlan info
1081 - Support disk hotplug with userspace access
1082
1083 Inherited from the 2.9 branch:
1084
1085 - Make htools tolerate missing "spfree" on luxi
1086 - Move the design for query splitting to the implemented list
1087 - Add tests for DRBD setups with empty first resource
1088
1089 Inherited from the 2.8 branch:
1090
1091 - DRBD parser: consume initial empty resource lines
1092
1093
1094 Version 2.11.2
1095 --------------
1096
1097 *(Released Fri, 13 Jun 2014)*
1098
1099 - Improvements to KVM wrt to the kvmd and instance shutdown behavior.
1100   WARNING: In contrast to our standard policy, this bug fix update
1101   introduces new parameters to the configuration. This means in
1102   particular that after an upgrade from 2.11.0 or 2.11.1, 'cfgupgrade'
1103   needs to be run, either manually or explicitly by running
1104   'gnt-cluster upgrade --to 2.11.2' (which requires that they
1105   had configured the cluster with --enable-versionfull).
1106   This also means, that it is not easily possible to downgrade from
1107   2.11.2 to 2.11.1 or 2.11.0. The only way is to go back to 2.10 and
1108   back.
1109
1110 Inherited from the 2.10 branch:
1111
1112 - Check for SSL encoding inconsistencies
1113 - Check drbd helper only in VM capable nodes
1114 - Improvements in statistics utils
1115
1116 Inherited from the 2.9 branch:
1117
1118 - check-man-warnings: use C.UTF-8 and set LC_ALL
1119
1120
1121 Version 2.11.1
1122 --------------
1123
1124 *(Released Wed, 14 May 2014)*
1125
1126 - Add design-node-security.rst to docinput
1127 - kvm: use a dedicated QMP socket for kvmd
1128
1129 Inherited from the 2.10 branch:
1130
1131 - Set correct Ganeti version on setup commands
1132 - Add a utility to combine shell commands
1133 - Add design doc for performance tests
1134 - Fix failed DRBD disk creation cleanup
1135 - Hooking up verification for shared file storage
1136 - Fix --shared-file-storage-dir option of gnt-cluster modify
1137 - Clarify default setting of 'metavg'
1138 - Fix invocation of GetCommandOutput in QA
1139 - Clean up RunWithLocks
1140 - Add an exception-trapping thread class
1141 - Wait for delay to provide interruption information
1142 - Add an expected block option to RunWithLocks
1143 - Track if a QA test was blocked by locks
1144 - Add a RunWithLocks QA utility function
1145 - Add restricted migration
1146 - Add an example for node evacuation
1147 - Add a test for parsing version strings
1148 - Tests for parallel job execution
1149 - Fail in replace-disks if attaching disks fails
1150 - Fix passing of ispecs in cluster init during QA
1151 - Move QAThreadGroup to qa_job_utils.py
1152 - Extract GetJobStatuses and use an unified version
1153 - Run disk template specific tests only if possible
1154
1155 Inherited from the 2.9 branch:
1156
1157 - If Automake version > 1.11, force serial tests
1158 - KVM: set IFF_ONE_QUEUE on created tap interfaces
1159 - Add configure option to pass GHC flags
1160
1161
1162 Version 2.11.0
1163 --------------
1164
1165 *(Released Fri, 25 Apr 2014)*
1166
1167 Incompatible/important changes
1168 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1169
1170 - ``gnt-node list`` no longer shows disk space information for shared file
1171   disk templates because it is not a node attribute. (For example, if you have
1172   both the file and shared file disk templates enabled, ``gnt-node list`` now
1173   only shows information about the file disk template.)
1174 - The shared file disk template is now in the new 'sharedfile' storage type.
1175   As a result, ``gnt-node list-storage -t file`` now only shows information
1176   about the file disk template and you may use ``gnt-node list-storage -t
1177   sharedfile`` to query storage information for the shared file disk template.
1178 - Over luxi, syntactially incorrect queries are now rejected as a whole;
1179   before, a 'SumbmitManyJobs' request was partially executed, if the outer
1180   structure of the request was syntactically correct. As the luxi protocol
1181   is internal (external applications are expected to use RAPI), the impact
1182   of this incompatible change should be limited.
1183 - Queries for nodes, instances, groups, backups and networks are now
1184   exclusively done via the luxi daemon. Legacy python code was removed,
1185   as well as the --enable-split-queries configuration option.
1186 - Orphan volumes errors are demoted to warnings and no longer affect the exit
1187   code of ``gnt-cluster verify``.
1188 - RPC security got enhanced by using different client SSL certificates
1189   for each node. In this context 'gnt-cluster renew-crypto' got a new
1190   option '--renew-node-certificates', which renews the client
1191   certificates of all nodes. After a cluster upgrade from pre-2.11, run
1192   this to create client certificates and activate this feature.
1193
1194 New features
1195 ~~~~~~~~~~~~
1196
1197 - Instance moves, backups and imports can now use compression to transfer the
1198   instance data.
1199 - Node groups can be configured to use an SSH port different than the
1200   default 22.
1201 - Added experimental support for Gluster distributed file storage as the
1202   ``gluster`` disk template under the new ``sharedfile`` storage type through
1203   automatic management of per-node FUSE mount points. You can configure the
1204   mount point location at ``gnt-cluster init`` time by using the new
1205   ``--gluster-storage-dir`` switch.
1206 - Job scheduling is now handled by luxid, and the maximal number of jobs running
1207   in parallel is a run-time parameter of the cluster.
1208 - A new tool for planning dynamic power management, called ``hsqueeze``, has
1209   been added. It suggests nodes to power up or down and corresponding instance
1210   moves.
1211
1212 New dependencies
1213 ~~~~~~~~~~~~~~~~
1214
1215 The following new dependencies have been added:
1216
1217 For Haskell:
1218
1219 - ``zlib`` library (http://hackage.haskell.org/package/base64-bytestring)
1220
1221 - ``base64-bytestring`` library (http://hackage.haskell.org/package/zlib),
1222   at least version 1.0.0.0
1223
1224 - ``lifted-base`` library (http://hackage.haskell.org/package/lifted-base)
1225
1226 - ``lens`` library (http://hackage.haskell.org/package/lens)
1227
1228 Since 2.11.0 rc1
1229 ~~~~~~~~~~~~~~~~
1230
1231 - Fix Xen instance state
1232
1233 Inherited from the 2.10 branch:
1234
1235 - Fix conflict between virtio + spice or soundhw
1236 - Fix bitarray ops wrt PCI slots
1237 - Allow releases scheduled 5 days in advance
1238 - Make watcher submit queries low priority
1239 - Fix specification of TIDiskParams
1240 - Add unittests for instance modify parameter renaming
1241 - Add renaming of instance custom params
1242 - Add RAPI symmetry tests for groups
1243 - Extend RAPI symmetry tests with RAPI-only aliases
1244 - Add test for group custom parameter renaming
1245 - Add renaming of group custom ndparams, ipolicy, diskparams
1246 - Add the RAPI symmetry test for nodes
1247 - Add aliases for nodes
1248 - Allow choice of HTTP method for modification
1249 - Add cluster RAPI symmetry test
1250 - Fix failing cluster query test
1251 - Add aliases for cluster parameters
1252 - Add support for value aliases to RAPI
1253 - Provide tests for GET/PUT symmetry
1254 - Sort imports
1255 - Also consider filter fields for deciding if using live data
1256 - Document the python-fdsend dependency
1257 - Verify configuration version number before parsing
1258 - KVM: use running HVPs to calc blockdev options
1259 - KVM: reserve a PCI slot for the SCSI controller
1260 - Check for LVM-based verification results only when enabled
1261 - Fix "existing" typos
1262 - Fix output of gnt-instance info after migration
1263 - Warn in UPGRADE about not tar'ing exported insts
1264 - Fix non-running test and remove custom_nicparams rename
1265 - Account for NODE_RES lock in opportunistic locking
1266 - Fix request flooding of noded during disk sync
1267
1268 Inherited from the 2.9 branch:
1269
1270 - Make watcher submit queries low priority
1271 - Fix failing gnt-node list-drbd command
1272 - Update installation guide wrt to DRBD version
1273 - Fix list-drbd QA test
1274 - Add messages about skipped QA disk template tests
1275 - Allow QA asserts to produce more messages
1276 - Set exclusion tags correctly in requested instance
1277 - Export extractExTags and updateExclTags
1278 - Document spindles in the hbal man page
1279 - Sample logrotate conf breaks permissions with split users
1280 - Fix 'gnt-cluster' and 'gnt-node list-storage' outputs
1281
1282 Inherited from the 2.8 branch:
1283
1284 - Add reason parameter to RAPI client functions
1285 - Include qa/patch in Makefile
1286 - Handle empty patches better
1287 - Move message formatting functions to separate file
1288 - Add optional ordering of QA patch files
1289 - Allow multiple QA patches
1290 - Refactor current patching code
1291
1292
1293 Version 2.11.0 rc1
1294 ------------------
1295
1296 *(Released Thu, 20 Mar 2014)*
1297
1298 This was the first RC release of the 2.11 series. Since 2.11.0 beta1:
1299
1300 - Convert int to float when checking config. consistency
1301 - Rename compression option in gnt-backup export
1302
1303 Inherited from the 2.9 branch:
1304
1305 - Fix error introduced during merge
1306 - gnt-cluster copyfile: accept relative paths
1307
1308 Inherited from the 2.8 branch:
1309
1310 - Improve RAPI detection of the watcher
1311 - Add patching QA configuration files on buildbots
1312 - Enable a timeout for instance shutdown
1313 - Allow KVM commands to have a timeout
1314 - Allow xen commands to have a timeout
1315 - Fix wrong docstring
1316
1317
1318 Version 2.11.0 beta1
1319 --------------------
1320
1321 *(Released Wed, 5 Mar 2014)*
1322
1323 This was the first beta release of the 2.11 series. All important changes
1324 are listed in the latest 2.11 entry.
1325
1326
1327 Version 2.10.8
1328 --------------
1329
1330 *(Released Fri, 11 Dec 2015)*
1331
1332 Important changes and security notes
1333 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1334
1335 Security release.
1336
1337 CVE-2015-7944
1338
1339 Ganeti provides a RESTful control interface called the RAPI. Its HTTPS
1340 implementation is vulnerable to DoS attacks via client-initiated SSL
1341 parameter renegotiation. While the interface is not meant to be exposed
1342 publicly, due to the fact that it binds to all interfaces, we believe
1343 some users might be exposing it unintentionally and are vulnerable. A
1344 DoS attack can consume resources meant for Ganeti daemons and instances
1345 running on the master node, making both perform badly.
1346
1347 Fixes are not feasible due to the OpenSSL Python library not exposing
1348 functionality needed to disable client-side renegotiation. Instead, we
1349 offer instructions on how to control RAPI's exposure, along with info
1350 on how RAPI can be setup alongside an HTTPS proxy in case users still
1351 want or need to expose the RAPI interface. The instructions are
1352 outlined in Ganeti's security document: doc/html/security.html
1353
1354 CVE-2015-7945
1355
1356 Ganeti leaks the DRBD secret through the RAPI interface. Examining job
1357 results after an instance information job reveals the secret. With the
1358 DRBD secret, access to the local cluster network, and ARP poisoning,
1359 an attacker can impersonate a Ganeti node and clone the disks of a
1360 DRBD-based instance. While an attacker with access to the cluster
1361 network is already capable of accessing any data written as DRBD
1362 traffic is unencrypted, having the secret expedites the process and
1363 allows access to the entire disk.
1364
1365 Fixes contained in this release prevent the secret from being exposed
1366 via the RAPI. The DRBD secret can be changed by converting an instance
1367 to plain and back to DRBD, generating a new secret, but redundancy will
1368 be lost until the process completes.
1369 Since attackers with node access are capable of accessing some and
1370 potentially all data even without the secret, we do not recommend that
1371 the secret be changed for existing instances.
1372
1373 Minor changes
1374 ~~~~~~~~~~~~~
1375
1376 - Make htools tolerate missing "dtotal" and "dfree" on luxi
1377 - At IAlloc backend guess state from admin state
1378 - replace-disks: fix --ignore-ipolicy
1379 - Fix instance multi allocation for non-DRBD disks
1380 - Check for gnt-cluster before running gnt-cluster upgrade
1381 - Work around a Python os.minor bug
1382 - Add IP-related checks after master-failover
1383 - Pass correct backend params in move-instance
1384 - Allow plain/DRBD conversions regardless of lack of disks
1385 - Fix MonD collector thunk leak
1386 - Stop MonD when removing a node from a cluster
1387 - Finalize backup only if successful
1388 - Fix file descriptor leak in Confd Client
1389 - Auto-upgrade hv_state_static and disk_state_static
1390 - Do not hardcode the Python path in CLI tools
1391 - Use the Python interpreter from ENV
1392 - ganeti.daemon: fix daemon mode with GnuTLS >= 3.3 (Issues 961, 964)
1393 - Ganeti.Daemon: always install SIGHUP handler (Issue 755)
1394 - Fix DRBD version check for non VM capable nodes
1395 - Fix handling of the --online option
1396 - Add warning against hvparam changes with live migrations
1397 - Only verify LVs in configured VG during cluster verify
1398 - Fix network info in case of multi NIC instances
1399 - On upgrades, check for upgrades to resume first
1400 - Pause watcher during upgrade
1401 - Allow instance disks to be added with --no-wait-for-sync
1402
1403
1404 Version 2.10.7
1405 --------------
1406
1407 *(Released Thu, 7 Aug 2014)*
1408
1409 Important security release. In 2.10.0, the
1410 'gnt-cluster upgrade' command was introduced. Before
1411 performing an upgrade, the configuration directory of
1412 the cluster is backed up. Unfortunately, the archive was
1413 written with permissions that make it possible for
1414 non-privileged users to read the archive and thus have
1415 access to cluster and RAPI keys. After this release,
1416 the archive will be created with privileged access only.
1417
1418 We strongly advise you to restrict the permissions of
1419 previously created archives. The archives are found in
1420 /var/lib/ganeti*.tar (unless otherwise configured with
1421 --localstatedir or --with-backup-dir).
1422
1423 If you suspect that non-privileged users have accessed
1424 your archives already, we advise you to renew the
1425 cluster's crypto keys using 'gnt-cluster renew-crypto'
1426 and to reset the RAPI credentials by editing
1427 /var/lib/ganeti/rapi_users (respectively under a
1428 different path if configured differently with
1429 --localstatedir).
1430
1431 Other changes included in this release:
1432
1433 - Fix handling of Xen instance states.
1434 - Fix NIC configuration with absent NIC VLAN
1435 - Adapt relative path expansion in PATH to new environment
1436 - Exclude archived jobs from configuration backups
1437 - Fix RAPI for split query setup
1438 - Allow disk hot-remove even with chroot or SM
1439
1440 Inherited from the 2.9 branch:
1441
1442 - Make htools tolerate missing 'spfree' on luxi
1443
1444
1445 Version 2.10.6
1446 --------------
1447
1448 *(Released Mon, 30 Jun 2014)*
1449
1450 - Make Ganeti tolerant towards differnt openssl library
1451   version on different nodes (issue 853).
1452 - Allow hspace to make useful predictions in multi-group
1453   clusters with one group overfull (isse 861).
1454 - Various gnt-network related fixes.
1455 - Fix disk hotplug with userspace access.
1456 - Various documentation errors fixed.
1457
1458
1459 Version 2.10.5
1460 --------------
1461
1462 *(Released Mon, 2 Jun 2014)*
1463
1464 - Two new options have been added to gnt-group evacuate.
1465   The 'sequential' option forces all the evacuation steps to
1466   be carried out sequentially, thus avoiding congestion on a
1467   slow link between node groups. The 'force-failover' option
1468   disallows migrations and forces failovers to be used instead.
1469   In this way evacuation to a group with vastly differnet
1470   hypervisor is possible.
1471 - In tiered allocation, when looking for ways on how to shrink
1472   an instance, the canoncial path is tried first, i.e., in each
1473   step reduce on the resource most placements are blocked on. Only
1474   if no smaller fitting instance can be found shrinking a single
1475   resource till fit is tried.
1476 - For finding the placement of an instance, the duplicate computations
1477   in the computation of the various cluster scores are computed only
1478   once. This significantly improves the performance of hspace for DRBD
1479   on large clusters; for other clusters, a slight performance decrease
1480   might occur. Moreover, due to the changed order, floating point
1481   number inaccuracies accumulate differently, thus resulting in different
1482   cluster scores. It has been verified that the effect of these different
1483   roundings is less than 1e-12.
1484 - network queries fixed with respect to instances
1485 - relax too strict prerequisite in LUClusterSetParams for DRBD helpers
1486 - VArious improvements to QA and build-time tests
1487
1488
1489 Version 2.10.4
1490 --------------
1491
1492 *(Released Thu, 15 May 2014)*
1493
1494 - Support restricted migration in hbal
1495 - Fix for the --shared-file-storage-dir of gnt-cluster modify (issue 811)
1496 - Fail in replace-disks if attaching disks fails (issue 814)
1497 - Set IFF_ONE_QUEUE on created tap interfaces for KVM
1498 - Small fixes and enhancements in the build system
1499 - Various documentation fixes (e.g. issue 810)
1500
1501
1502 Version 2.10.3
1503 --------------
1504
1505 *(Released Wed, 16 Apr 2014)*
1506
1507 - Fix filtering of pending jobs with -o id (issue 778)
1508 - Make RAPI API calls more symmetric (issue 770)
1509 - Make parsing of old cluster configuration more robust (issue 783)
1510 - Fix wrong output of gnt-instance info after migrations
1511 - Fix reserved PCI slots for KVM hotplugging
1512 - Use runtime hypervisor parameters to calculate bockdevice options for KVM
1513 - Fix high node daemon load during disk sync if the sync is paused manually
1514   (issue 792)
1515 - Improve opportunistic locking during instance creation (issue 791)
1516
1517 Inherited from the 2.9 branch:
1518
1519 - Make watcher submit queries low priority (issue 772)
1520 - Add reason parameter to RAPI client functions (issue 776)
1521 - Fix failing gnt-node list-drbd command (issue 777)
1522 - Properly display fake job locks in gnt-debug.
1523 - small fixes in documentation
1524
1525
1526 Version 2.10.2
1527 --------------
1528
1529 *(Released Mon, 24 Mar 2014)*
1530
1531 - Fix conflict between virtio + spice or soundhw (issue 757)
1532 - accept relative paths in gnt-cluster copyfile (issue 754)
1533 - Introduce shutdown timeout for 'xm shutdown' command
1534 - Improve RAPI detection of the watcher (issue 752)
1535
1536
1537 Version 2.10.1
1538 --------------
1539
1540 *(Released Wed, 5 Mar 2014)*
1541
1542 - Fix incorrect invocation of hooks on offline nodes (issue 742)
1543 - Fix incorrect exit code of gnt-cluster verify in certain circumstances
1544   (issue 744)
1545
1546 Inherited from the 2.9 branch:
1547
1548 - Fix overflow problem in hbal that caused it to break when waiting for
1549   jobs for more than 10 minutes (issue 717)
1550 - Make hbal properly handle non-LVM storage
1551 - Properly export and import NIC parameters, and do so in a backwards
1552   compatible way (issue 716)
1553 - Fix net-common script in case of routed mode (issue 728)
1554 - Improve documentation (issues 724, 730)
1555
1556
1557 Version 2.10.0
1558 --------------
1559
1560 *(Released Thu, 20 Feb 2014)*
1561
1562 Incompatible/important changes
1563 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1564
1565 - Adding disks with 'gnt-instance modify' now waits for the disks to sync per
1566   default. Specify --no-wait-for-sync to override this behavior.
1567 - The Ganeti python code now adheres to a private-module layout. In particular,
1568   the module 'ganeti' is no longer in the python search path.
1569 - On instance allocation, the iallocator now considers non-LVM storage
1570   properly. In particular, actual file storage space information is used
1571   when allocating space for a file/sharedfile instance.
1572 - When disabling disk templates cluster-wide, the cluster now first
1573   checks whether there are instances still using those templates.
1574 - 'gnt-node list-storage' now also reports storage information about
1575   file-based storage types.
1576 - In case of non drbd instances, export \*_SECONDARY environment variables
1577   as empty strings (and not "None") during 'instance-migrate' related hooks.
1578
1579 New features
1580 ~~~~~~~~~~~~
1581
1582 - KVM hypervisors can now access RBD storage directly without having to
1583   go through a block device.
1584 - A new command 'gnt-cluster upgrade' was added that automates the upgrade
1585   procedure between two Ganeti versions that are both 2.10 or higher.
1586 - The move-instance command can now change disk templates when moving
1587   instances, and does not require any node placement options to be
1588   specified if the destination cluster has a default iallocator.
1589 - Users can now change the soundhw and cpuid settings for XEN hypervisors.
1590 - Hail and hbal now have the (optional) capability of accessing average CPU
1591   load information through the monitoring deamon, and to use it to dynamically
1592   adapt the allocation of instances.
1593 - Hotplug support. Introduce new option '--hotplug' to ``gnt-instance modify``
1594   so that disk and NIC modifications take effect without the need of actual
1595   reboot. There are a couple of constrains currently for this feature:
1596
1597    - only KVM hypervisor (versions >= 1.0) supports it,
1598    - one can not (yet) hotplug a disk using userspace access mode for RBD
1599    - in case of a downgrade instances should suffer a reboot in order to
1600      be migratable (due to core change of runtime files)
1601    - ``python-fdsend`` is required for NIC hotplugging.
1602
1603 Misc changes
1604 ~~~~~~~~~~~~
1605
1606 - A new test framework for logical units was introduced and the test
1607   coverage for logical units was improved significantly.
1608 - Opcodes are entirely generated from Haskell using the tool 'hs2py' and
1609   the module 'src/Ganeti/OpCodes.hs'.
1610 - Constants are also generated from Haskell using the tool
1611   'hs2py-constants' and the module 'src/Ganeti/Constants.hs', with the
1612   exception of socket related constants, which require changing the
1613   cluster configuration file, and HVS related constants, because they
1614   are part of a port of instance queries to Haskell.  As a result, these
1615   changes will be part of the next release of Ganeti.
1616
1617 New dependencies
1618 ~~~~~~~~~~~~~~~~
1619
1620 The following new dependencies have been added/updated.
1621
1622 Python
1623
1624 - The version requirements for ``python-mock`` have increased to at least
1625   version 1.0.1. It is still used for testing only.
1626 - ``python-fdsend`` (https://gitorious.org/python-fdsend) is optional
1627   but required for KVM NIC hotplugging to work.
1628
1629 Since 2.10.0 rc3
1630 ~~~~~~~~~~~~~~~~
1631
1632 - Fix integer overflow problem in hbal
1633
1634
1635 Version 2.10.0 rc3
1636 ------------------
1637
1638 *(Released Wed, 12 Feb 2014)*
1639
1640 This was the third RC release of the 2.10 series. Since 2.10.0 rc2:
1641
1642 - Improved hotplug robustness
1643 - Start Ganeti daemons after ensure-dirs during upgrade
1644 - Documentation improvements
1645
1646 Inherited from the 2.9 branch:
1647
1648 - Fix the RAPI instances-multi-alloc call
1649 - assign unique filenames to file-based disks
1650 - gracefully handle degraded non-diskless instances with 0 disks (issue 697)
1651 - noded now runs with its specified group, which is the default group,
1652   defaulting to root (issue 707)
1653 - make using UUIDs to identify nodes in gnt-node consistently possible
1654   (issue 703)
1655
1656
1657 Version 2.10.0 rc2
1658 ------------------
1659
1660 *(Released Fri, 31 Jan 2014)*
1661
1662 This was the second RC release of the 2.10 series. Since 2.10.0 rc1:
1663
1664 - Documentation improvements
1665 - Run drbdsetup syncer only on network attach
1666 - Include target node in hooks nodes for migration
1667 - Fix configure dirs
1668 - Support post-upgrade hooks during cluster upgrades
1669
1670 Inherited from the 2.9 branch:
1671
1672 - Ensure that all the hypervisors exist in the config file (Issue 640)
1673 - Correctly recognise the role as master node (Issue 687)
1674 - configure: allow detection of Sphinx 1.2+ (Issue 502)
1675 - gnt-instance now honors the KVM path correctly (Issue 691)
1676
1677 Inherited from the 2.8 branch:
1678
1679 - Change the list separator for the usb_devices parameter from comma to space.
1680   Commas could not work because they are already the hypervisor option
1681   separator (Issue 649)
1682 - Add support for blktap2 file-driver (Issue 638)
1683 - Add network tag definitions to the haskell codebase (Issue 641)
1684 - Fix RAPI network tag handling
1685 - Add the network tags to the tags searched by gnt-cluster search-tags
1686 - Fix caching bug preventing jobs from being cancelled
1687 - Start-master/stop-master was always failing if ConfD was disabled. (Issue 685)
1688
1689
1690 Version 2.10.0 rc1
1691 ------------------
1692
1693 *(Released Tue, 17 Dec 2013)*
1694
1695 This was the first RC release of the 2.10 series. Since 2.10.0 beta1:
1696
1697 - All known issues in 2.10.0 beta1 have been resolved (see changes from
1698   the 2.8 branch).
1699 - Improve handling of KVM runtime files from earlier Ganeti versions
1700 - Documentation fixes
1701
1702 Inherited from the 2.9 branch:
1703
1704 - use custom KVM path if set for version checking
1705 - SingleNotifyPipeCondition: don't share pollers
1706
1707 Inherited from the 2.8 branch:
1708
1709 - Fixed Luxi daemon socket permissions after master-failover
1710 - Improve IP version detection code directly checking for colons rather than
1711   passing the family from the cluster object
1712 - Fix NODE/NODE_RES locking in LUInstanceCreate by not acquiring NODE_RES locks
1713   opportunistically anymore (Issue 622)
1714 - Allow link local IPv6 gateways (Issue 624)
1715 - Fix error printing (Issue 616)
1716 - Fix a bug in InstanceSetParams concerning names: in case no name is passed in
1717   disk modifications, keep the old one. If name=none then set disk name to
1718   None.
1719 - Update build_chroot script to work with the latest hackage packages
1720 - Add a packet number limit to "fping" in master-ip-setup (Issue 630)
1721 - Fix evacuation out of drained node (Issue 615)
1722 - Add default file_driver if missing (Issue 571)
1723 - Fix job error message after unclean master shutdown (Issue 618)
1724 - Lock group(s) when creating instances (Issue 621)
1725 - SetDiskID() before accepting an instance (Issue 633)
1726 - Allow the ext template disks to receive arbitrary parameters, both at creation
1727   time and while being modified
1728 - Xen handle domain shutdown (future proofing cherry-pick)
1729 - Refactor reading live data in htools (future proofing cherry-pick)
1730
1731
1732 Version 2.10.0 beta1
1733 --------------------
1734
1735 *(Released Wed, 27 Nov 2013)*
1736
1737 This was the first beta release of the 2.10 series. All important changes
1738 are listed in the latest 2.10 entry.
1739
1740 Known issues
1741 ~~~~~~~~~~~~
1742
1743 The following issues are known to be present in the beta and will be fixed
1744 before rc1.
1745
1746 - Issue 477: Wrong permissions for confd LUXI socket
1747 - Issue 621: Instance related opcodes do not aquire network/group locks
1748 - Issue 622: Assertion Error: Node locks differ from node resource locks
1749 - Issue 623: IPv6 Masterd <-> Luxid communication error
1750
1751
1752 Version 2.9.7
1753 -------------
1754
1755 *(Released Fri, 11 Dec 2015)*
1756
1757 Important changes and security notes
1758 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1759
1760 Security release.
1761
1762 CVE-2015-7944
1763
1764 Ganeti provides a RESTful control interface called the RAPI. Its HTTPS
1765 implementation is vulnerable to DoS attacks via client-initiated SSL
1766 parameter renegotiation. While the interface is not meant to be exposed
1767 publicly, due to the fact that it binds to all interfaces, we believe
1768 some users might be exposing it unintentionally and are vulnerable. A
1769 DoS attack can consume resources meant for Ganeti daemons and instances
1770 running on the master node, making both perform badly.
1771
1772 Fixes are not feasible due to the OpenSSL Python library not exposing
1773 functionality needed to disable client-side renegotiation. Instead, we
1774 offer instructions on how to control RAPI's exposure, along with info
1775 on how RAPI can be setup alongside an HTTPS proxy in case users still
1776 want or need to expose the RAPI interface. The instructions are
1777 outlined in Ganeti's security document: doc/html/security.html
1778
1779 CVE-2015-7945
1780
1781 Ganeti leaks the DRBD secret through the RAPI interface. Examining job
1782 results after an instance information job reveals the secret. With the
1783 DRBD secret, access to the local cluster network, and ARP poisoning,
1784 an attacker can impersonate a Ganeti node and clone the disks of a
1785 DRBD-based instance. While an attacker with access to the cluster
1786 network is already capable of accessing any data written as DRBD
1787 traffic is unencrypted, having the secret expedites the process and
1788 allows access to the entire disk.
1789
1790 Fixes contained in this release prevent the secret from being exposed
1791 via the RAPI. The DRBD secret can be changed by converting an instance
1792 to plain and back to DRBD, generating a new secret, but redundancy will
1793 be lost until the process completes.
1794 Since attackers with node access are capable of accessing some and
1795 potentially all data even without the secret, we do not recommend that
1796 the secret be changed for existing instances.
1797
1798 Minor changes
1799 ~~~~~~~~~~~~~
1800
1801 - gnt-instance replace-disks no longer crashes when --ignore-policy is
1802   passed to it
1803 - Stop MonD when removing a node from a cluster
1804 - Fix file descriptor leak in Confd client
1805 - Always install SIGHUP handler for Haskell daemons (Issue 755)
1806 - Make ganeti-cleaner switch to a safe working directory (Issue 880)
1807 - Make htools tolerate missing "spfree" on Luxi
1808 - DRBD parser: consume initial empty resource lines (Issue 869)
1809 - KVM: set IFF_ONE_QUEUE on created tap interfaces
1810 - Set exclusion tags correctly in requested instance
1811
1812
1813 Version 2.9.6
1814 -------------
1815
1816 *(Released Mon, 7 Apr 2014)*
1817
1818 - Improve RAPI detection of the watcher (Issue 752)
1819 - gnt-cluster copyfile: accept relative paths (Issue 754)
1820 - Make watcher submit queries low priority (Issue 772)
1821 - Add reason parameter to RAPI client functions (Issue 776)
1822 - Fix failing gnt-node list-drbd command (Issue 777)
1823 - Properly display fake job locks in gnt-debug.
1824 - Enable timeout for instance shutdown
1825 - small fixes in documentation
1826
1827
1828 Version 2.9.5
1829 -------------
1830
1831 *(Released Tue, 25 Feb 2014)*
1832
1833 - Fix overflow problem in hbal that caused it to break when waiting for
1834   jobs for more than 10 minutes (issue 717)
1835 - Make hbal properly handle non-LVM storage
1836 - Properly export and import NIC parameters, and do so in a backwards
1837   compatible way (issue 716)
1838 - Fix net-common script in case of routed mode (issue 728)
1839 - Improve documentation (issues 724, 730)
1840
1841
1842 Version 2.9.4
1843 -------------
1844
1845 *(Released Mon, 10 Feb 2014)*
1846
1847 - Fix the RAPI instances-multi-alloc call
1848 - assign unique filenames to file-based disks
1849 - gracefully handle degraded non-diskless instances with 0 disks (issue 697)
1850 - noded now runs with its specified group, which is the default group,
1851   defaulting to root (issue 707)
1852 - make using UUIDs to identify nodes in gnt-node consistently possible
1853   (issue 703)
1854
1855
1856 Version 2.9.3
1857 -------------
1858
1859 *(Released Mon, 27 Jan 2014)*
1860
1861 - Ensure that all the hypervisors exist in the config file (Issue 640)
1862 - Correctly recognise the role as master node (Issue 687)
1863 - configure: allow detection of Sphinx 1.2+ (Issue 502)
1864 - gnt-instance now honors the KVM path correctly (Issue 691)
1865
1866 Inherited from the 2.8 branch:
1867
1868 - Change the list separator for the usb_devices parameter from comma to space.
1869   Commas could not work because they are already the hypervisor option
1870   separator (Issue 649)
1871 - Add support for blktap2 file-driver (Issue 638)
1872 - Add network tag definitions to the haskell codebase (Issue 641)
1873 - Fix RAPI network tag handling
1874 - Add the network tags to the tags searched by gnt-cluster search-tags
1875 - Fix caching bug preventing jobs from being cancelled
1876 - Start-master/stop-master was always failing if ConfD was disabled. (Issue 685)
1877
1878
1879 Version 2.9.2
1880 -------------
1881
1882 *(Released Fri, 13 Dec 2013)*
1883
1884 - use custom KVM path if set for version checking
1885 - SingleNotifyPipeCondition: don't share pollers
1886
1887 Inherited from the 2.8 branch:
1888
1889 - Fixed Luxi daemon socket permissions after master-failover
1890 - Improve IP version detection code directly checking for colons rather than
1891   passing the family from the cluster object
1892 - Fix NODE/NODE_RES locking in LUInstanceCreate by not acquiring NODE_RES locks
1893   opportunistically anymore (Issue 622)
1894 - Allow link local IPv6 gateways (Issue 624)
1895 - Fix error printing (Issue 616)
1896 - Fix a bug in InstanceSetParams concerning names: in case no name is passed in
1897   disk modifications, keep the old one. If name=none then set disk name to
1898   None.
1899 - Update build_chroot script to work with the latest hackage packages
1900 - Add a packet number limit to "fping" in master-ip-setup (Issue 630)
1901 - Fix evacuation out of drained node (Issue 615)
1902 - Add default file_driver if missing (Issue 571)
1903 - Fix job error message after unclean master shutdown (Issue 618)
1904 - Lock group(s) when creating instances (Issue 621)
1905 - SetDiskID() before accepting an instance (Issue 633)
1906 - Allow the ext template disks to receive arbitrary parameters, both at creation
1907   time and while being modified
1908 - Xen handle domain shutdown (future proofing cherry-pick)
1909 - Refactor reading live data in htools (future proofing cherry-pick)
1910
1911
1912 Version 2.9.1
1913 -------------
1914
1915 *(Released Wed, 13 Nov 2013)*
1916
1917 - fix bug, that kept nodes offline when readding
1918 - when verifying DRBD versions, ignore unavailable nodes
1919 - fix bug that made the console unavailable on kvm in split-user
1920   setup (issue 608)
1921 - DRBD: ensure peers are UpToDate for dual-primary (inherited 2.8.2)
1922
1923
1924 Version 2.9.0
1925 -------------
1926
1927 *(Released Tue, 5 Nov 2013)*
1928
1929 Incompatible/important changes
1930 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1931
1932 - hroller now also plans for capacity to move non-redundant instances off
1933   any node to be rebooted; the old behavior of completely ignoring any
1934   non-redundant instances can be restored by adding the --ignore-non-redundant
1935   option.
1936 - The cluster option '--no-lvm-storage' was removed in favor of the new option
1937   '--enabled-disk-templates'.
1938 - On instance creation, disk templates no longer need to be specified
1939   with '-t'. The default disk template will be taken from the list of
1940   enabled disk templates.
1941 - The monitoring daemon is now running as root, in order to be able to collect
1942   information only available to root (such as the state of Xen instances).
1943 - The ConfD client is now IPv6 compatible.
1944 - File and shared file storage is no longer dis/enabled at configure time,
1945   but using the option '--enabled-disk-templates' at cluster initialization and
1946   modification.
1947 - The default directories for file and shared file storage are not anymore
1948   specified at configure time, but taken from the cluster's configuration.
1949   They can be set at cluster initialization and modification with
1950   '--file-storage-dir' and '--shared-file-storage-dir'.
1951 - Cluster verification now includes stricter checks regarding the
1952   default file and shared file storage directories. It now checks that
1953   the directories are explicitely allowed in the 'file-storage-paths' file and
1954   that the directories exist on all nodes.
1955 - The list of allowed disk templates in the instance policy and the list
1956   of cluster-wide enabled disk templates is now checked for consistency
1957   on cluster or group modification. On cluster initialization, the ipolicy
1958   disk templates are ensured to be a subset of the cluster-wide enabled
1959   disk templates.
1960
1961 New features
1962 ~~~~~~~~~~~~
1963
1964 - DRBD 8.4 support. Depending on the installed DRBD version, Ganeti now uses
1965   the correct command syntax. It is possible to use different DRBD versions
1966   on different nodes as long as they are compatible to each other. This
1967   enables rolling upgrades of DRBD with no downtime. As permanent operation
1968   of different DRBD versions within a node group is discouraged,
1969   ``gnt-cluster verify`` will emit a warning if it detects such a situation.
1970 - New "inst-status-xen" data collector for the monitoring daemon, providing
1971   information about the state of the xen instances on the nodes.
1972 - New "lv" data collector for the monitoring daemon, collecting data about the
1973   logical volumes on the nodes, and pairing them with the name of the instances
1974   they belong to.
1975 - New "diskstats" data collector, collecting the data from /proc/diskstats and
1976   presenting them over the monitoring daemon interface.
1977 - The ConfD client is now IPv6 compatible.
1978
1979 New dependencies
1980 ~~~~~~~~~~~~~~~~
1981 The following new dependencies have been added.
1982
1983 Python
1984
1985 - ``python-mock`` (http://www.voidspace.org.uk/python/mock/) is now a required
1986   for the unit tests (and only used for testing).
1987
1988 Haskell
1989
1990 - ``hslogger`` (http://software.complete.org/hslogger) is now always
1991   required, even if confd is not enabled.
1992
1993 Since 2.9.0 rc3
1994 ~~~~~~~~~~~~~~~
1995
1996 - Correctly start/stop luxid during gnt-cluster master-failover (inherited
1997   from stable-2.8)
1998 - Improved error messsages (inherited from stable-2.8)
1999
2000
2001 Version 2.9.0 rc3
2002 -----------------
2003
2004 *(Released Tue, 15 Oct 2013)*
2005
2006 The third release candidate in the 2.9 series. Since 2.9.0 rc2:
2007
2008 - in implicit configuration upgrade, match ipolicy with enabled disk templates
2009 - improved harep documentation (inherited from stable-2.8)
2010
2011
2012 Version 2.9.0 rc2
2013 -----------------
2014
2015 *(Released Wed, 9 Oct 2013)*
2016
2017 The second release candidate in the 2.9 series. Since 2.9.0 rc1:
2018
2019 - Fix bug in cfgupgrade that led to failure when upgrading from 2.8 with
2020   at least one DRBD instance.
2021 - Fix bug in cfgupgrade that led to an invalid 2.8 configuration after
2022   downgrading.
2023
2024
2025 Version 2.9.0 rc1
2026 -----------------
2027
2028 *(Released Tue, 1 Oct 2013)*
2029
2030 The first release candidate in the 2.9 series. Since 2.9.0 beta1:
2031
2032 - various bug fixes
2033 - update of the documentation, in particular installation instructions
2034 - merging of LD_* constants into DT_* constants
2035 - python style changes to be compatible with newer versions of pylint
2036
2037
2038 Version 2.9.0 beta1
2039 -------------------
2040
2041 *(Released Thu, 29 Aug 2013)*
2042
2043 This was the first beta release of the 2.9 series. All important changes
2044 are listed in the latest 2.9 entry.
2045
2046
2047 Version 2.8.4
2048 -------------
2049
2050 *(Released Thu, 23 Jan 2014)*
2051
2052 - Change the list separator for the usb_devices parameter from comma to space.
2053   Commas could not work because they are already the hypervisor option
2054   separator (Issue 649)
2055 - Add support for blktap2 file-driver (Issue 638)
2056 - Add network tag definitions to the haskell codebase (Issue 641)
2057 - Fix RAPI network tag handling
2058 - Add the network tags to the tags searched by gnt-cluster search-tags
2059 - Fix caching bug preventing jobs from being cancelled
2060 - Start-master/stop-master was always failing if ConfD was disabled. (Issue 685)
2061
2062
2063 Version 2.8.3
2064 -------------
2065
2066 *(Released Thu, 12 Dec 2013)*
2067
2068 - Fixed Luxi daemon socket permissions after master-failover
2069 - Improve IP version detection code directly checking for colons rather than
2070   passing the family from the cluster object
2071 - Fix NODE/NODE_RES locking in LUInstanceCreate by not acquiring NODE_RES locks
2072   opportunistically anymore (Issue 622)
2073 - Allow link local IPv6 gateways (Issue 624)
2074 - Fix error printing (Issue 616)
2075 - Fix a bug in InstanceSetParams concerning names: in case no name is passed in
2076   disk modifications, keep the old one. If name=none then set disk name to
2077   None.
2078 - Update build_chroot script to work with the latest hackage packages
2079 - Add a packet number limit to "fping" in master-ip-setup (Issue 630)
2080 - Fix evacuation out of drained node (Issue 615)
2081 - Add default file_driver if missing (Issue 571)
2082 - Fix job error message after unclean master shutdown (Issue 618)
2083 - Lock group(s) when creating instances (Issue 621)
2084 - SetDiskID() before accepting an instance (Issue 633)
2085 - Allow the ext template disks to receive arbitrary parameters, both at creation
2086   time and while being modified
2087 - Xen handle domain shutdown (future proofing cherry-pick)
2088 - Refactor reading live data in htools (future proofing cherry-pick)
2089
2090
2091 Version 2.8.2
2092 -------------
2093
2094 *(Released Thu, 07 Nov 2013)*
2095
2096 - DRBD: ensure peers are UpToDate for dual-primary
2097 - Improve error message for replace-disks
2098 - More dependency checks at configure time
2099 - Placate warnings on ganeti.outils_unittest.py
2100
2101
2102 Version 2.8.1
2103 -------------
2104
2105 *(Released Thu, 17 Oct 2013)*
2106
2107 - Correctly start/stop luxid during gnt-cluster master-failover
2108 - Don't attempt IPv6 ssh in case of IPv4 cluster (Issue 595)
2109 - Fix path for the job queue serial file
2110 - Improved harep man page
2111 - Minor documentation improvements
2112
2113
2114 Version 2.8.0
2115 -------------
2116
2117 *(Released Mon, 30 Sep 2013)*
2118
2119 Incompatible/important changes
2120 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2121
2122 - Instance policy can contain multiple instance specs, as described in
2123   the “Constrained instance sizes” section of :doc:`Partitioned Ganeti
2124   <design-partitioned>`. As a consequence, it's not possible to partially change
2125   or override instance specs. Bounding specs (min and max) can be specified as a
2126   whole using the new option ``--ipolicy-bounds-specs``, while standard
2127   specs use the new option ``--ipolicy-std-specs``.
2128 - The output of the info command of gnt-cluster, gnt-group, gnt-node,
2129   gnt-instance is a valid YAML object.
2130 - hail now honors network restrictions when allocating nodes. This led to an
2131   update of the IAllocator protocol. See the IAllocator documentation for
2132   details.
2133 - confd now only answers static configuration request over the network. luxid
2134   was extracted, listens on the local LUXI socket and responds to live queries.
2135   This allows finer grained permissions if using separate users.
2136
2137 New features
2138 ~~~~~~~~~~~~
2139
2140 - The :doc:`Remote API <rapi>` daemon now supports a command line flag
2141   to always require authentication, ``--require-authentication``. It can
2142   be specified in ``$sysconfdir/default/ganeti``.
2143 - A new cluster attribute 'enabled_disk_templates' is introduced. It will
2144   be used to manage the disk templates to be used by instances in the cluster.
2145   Initially, it will be set to a list that includes plain, drbd, if they were
2146   enabled by specifying a volume group name, and file and sharedfile, if those
2147   were enabled at configure time. Additionally, it will include all disk
2148   templates that are currently used by instances. The order of disk templates
2149   will be based on Ganeti's history of supporting them. In the future, the
2150   first entry of the list will be used as a default disk template on instance
2151   creation.
2152 - ``cfgupgrade`` now supports a ``--downgrade`` option to bring the
2153   configuration back to the previous stable version.
2154 - Disk templates in group ipolicy can be restored to the default value.
2155 - Initial support for diskless instances and virtual clusters in QA.
2156 - More QA and unit tests for instance policies.
2157 - Every opcode now contains a reason trail (visible through ``gnt-job info``)
2158   describing why the opcode itself was executed.
2159 - The monitoring daemon is now available. It allows users to query the cluster
2160   for obtaining information about the status of the system. The daemon is only
2161   responsible for providing the information over the network: the actual data
2162   gathering is performed by data collectors (currently, only the DRBD status
2163   collector is available).
2164 - In order to help developers work on Ganeti, a new script
2165   (``devel/build_chroot``) is provided, for building a chroot that contains all
2166   the required development libraries and tools for compiling Ganeti on a Debian
2167   Squeeze system.
2168 - A new tool, ``harep``, for performing self-repair and recreation of instances
2169   in Ganeti has been added.
2170 - Split queries are enabled for tags, network, exports, cluster info, groups,
2171   jobs, nodes.
2172 - New command ``show-ispecs-cmd`` for ``gnt-cluster`` and ``gnt-group``.
2173   It prints the command line to set the current policies, to ease
2174   changing them.
2175 - Add the ``vnet_hdr`` HV parameter for KVM, to control whether the tap
2176   devices for KVM virtio-net interfaces will get created with VNET_HDR
2177   (IFF_VNET_HDR) support. If set to false, it disables offloading on the
2178   virtio-net interfaces, which prevents host kernel tainting and log
2179   flooding, when dealing with broken or malicious virtio-net drivers.
2180   It's set to true by default.
2181 - Instance failover now supports a ``--cleanup`` parameter for fixing previous
2182   failures.
2183 - Support 'viridian' parameter in Xen HVM
2184 - Support DSA SSH keys in bootstrap
2185 - To simplify the work of packaging frameworks that want to add the needed users
2186   and groups in a split-user setup themselves, at build time three files in
2187   ``doc/users`` will be generated. The ``groups`` files contains, one per line,
2188   the groups to be generated, the ``users`` file contains, one per line, the
2189   users to be generated, optionally followed by their primary group, where
2190   important. The ``groupmemberships`` file contains, one per line, additional
2191   user-group membership relations that need to be established. The syntax of
2192   these files will remain stable in all future versions.
2193
2194
2195 New dependencies
2196 ~~~~~~~~~~~~~~~~
2197 The following new dependencies have been added:
2198
2199 For Haskell:
2200 - The ``curl`` library is not optional anymore for compiling the Haskell code.
2201 - ``snap-server`` library (if monitoring is enabled).
2202
2203 For Python:
2204 - The minimum Python version needed to run Ganeti is now 2.6.
2205 - ``yaml`` library (only for running the QA).
2206
2207 Since 2.8.0 rc3
2208 ~~~~~~~~~~~~~~~
2209 - Perform proper cleanup on termination of Haskell daemons
2210 - Fix corner-case in handling of remaining retry time
2211
2212
2213 Version 2.8.0 rc3
2214 -----------------
2215
2216 *(Released Tue, 17 Sep 2013)*
2217
2218 - To simplify the work of packaging frameworks that want to add the needed users
2219   and groups in a split-user setup themselves, at build time three files in
2220   ``doc/users`` will be generated. The ``groups`` files contains, one per line,
2221   the groups to be generated, the ``users`` file contains, one per line, the
2222   users to be generated, optionally followed by their primary group, where
2223   important. The ``groupmemberships`` file contains, one per line, additional
2224   user-group membership relations that need to be established. The syntax of
2225   these files will remain stable in all future versions.
2226 - Add a default to file-driver when unspecified over RAPI (Issue 571)
2227 - Mark the DSA host pubkey as optional, and remove it during config downgrade
2228   (Issue 560)
2229 - Some documentation fixes
2230
2231
2232 Version 2.8.0 rc2
2233 -----------------
2234
2235 *(Released Tue, 27 Aug 2013)*
2236
2237 The second release candidate of the 2.8 series. Since 2.8.0. rc1:
2238
2239 - Support 'viridian' parameter in Xen HVM (Issue 233)
2240 - Include VCS version in ``gnt-cluster version``
2241 - Support DSA SSH keys in bootstrap (Issue 338)
2242 - Fix batch creation of instances
2243 - Use FQDN to check master node status (Issue 551)
2244 - Make the DRBD collector more failure-resilient
2245
2246
2247 Version 2.8.0 rc1
2248 -----------------
2249
2250 *(Released Fri, 2 Aug 2013)*
2251
2252 The first release candidate of the 2.8 series. Since 2.8.0 beta1:
2253
2254 - Fix upgrading/downgrading from 2.7
2255 - Increase maximum RAPI message size
2256 - Documentation updates
2257 - Split ``confd`` between ``luxid`` and ``confd``
2258 - Merge 2.7 series up to the 2.7.1 release
2259 - Allow the ``modify_etc_hosts`` option to be changed
2260 - Add better debugging for ``luxid`` queries
2261 - Expose bulk parameter for GetJobs in RAPI client
2262 - Expose missing ``network`` fields in RAPI
2263 - Add some ``cluster verify`` tests
2264 - Some unittest fixes
2265 - Fix a malfunction in ``hspace``'s tiered allocation
2266 - Fix query compatibility between haskell and python implementations
2267 - Add the ``vnet_hdr`` HV parameter for KVM
2268 - Add ``--cleanup`` to instance failover
2269 - Change the connected groups format in ``gnt-network info`` output; it
2270   was previously displayed as a raw list by mistake. (Merged from 2.7)
2271
2272
2273 Version 2.8.0 beta1
2274 -------------------
2275
2276 *(Released Mon, 24 Jun 2013)*
2277
2278 This was the first beta release of the 2.8 series. All important changes
2279 are listed in the latest 2.8 entry.
2280
2281
2282 Version 2.7.2
2283 -------------
2284
2285 *(Released Thu, 26 Sep 2013)*
2286
2287 - Change the connected groups format in ``gnt-network info`` output; it
2288   was previously displayed as a raw list by mistake
2289 - Check disk template in right dict when copying
2290 - Support multi-instance allocs without iallocator
2291 - Fix some errors in the documentation
2292 - Fix formatting of tuple in an error message
2293
2294
2295 Version 2.7.1
2296 -------------
2297
2298 *(Released Thu, 25 Jul 2013)*
2299
2300 - Add logrotate functionality in daemon-util
2301 - Add logrotate example file
2302 - Add missing fields to network queries over rapi
2303 - Fix network object timestamps
2304 - Add support for querying network timestamps
2305 - Fix a typo in the example crontab
2306 - Fix a documentation typo
2307
2308
2309 Version 2.7.0
2310 -------------
2311
2312 *(Released Thu, 04 Jul 2013)*
2313
2314 Incompatible/important changes
2315 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2316
2317 - Instance policies for disk size were documented to be on a per-disk
2318   basis, but hail applied them to the sum of all disks. This has been
2319   fixed.
2320 - ``hbal`` will now exit with status 0 if, during job execution over
2321   LUXI, early exit has been requested and all jobs are successful;
2322   before, exit status 1 was used, which cannot be differentiated from
2323   "job error" case
2324 - Compatibility with newer versions of rbd has been fixed
2325 - ``gnt-instance batch-create`` has been changed to use the bulk create
2326   opcode from Ganeti. This lead to incompatible changes in the format of
2327   the JSON file. It's now not a custom dict anymore but a dict
2328   compatible with the ``OpInstanceCreate`` opcode.
2329 - Parent directories for file storage need to be listed in
2330   ``$sysconfdir/ganeti/file-storage-paths`` now. ``cfgupgrade`` will
2331   write the file automatically based on old configuration values, but it
2332   can not distribute it across all nodes and the file contents should be
2333   verified. Use ``gnt-cluster copyfile
2334   $sysconfdir/ganeti/file-storage-paths`` once the cluster has been
2335   upgraded. The reason for requiring this list of paths now is that
2336   before it would have been possible to inject new paths via RPC,
2337   allowing files to be created in arbitrary locations. The RPC protocol
2338   is protected using SSL/X.509 certificates, but as a design principle
2339   Ganeti does not permit arbitrary paths to be passed.
2340 - The parsing of the variants file for OSes (see
2341   :manpage:`ganeti-os-interface(7)`) has been slightly changed: now empty
2342   lines and comment lines (starting with ``#``) are ignored for better
2343   readability.
2344 - The ``setup-ssh`` tool added in Ganeti 2.2 has been replaced and is no
2345   longer available. ``gnt-node add`` now invokes a new tool on the
2346   destination node, named ``prepare-node-join``, to configure the SSH
2347   daemon. Paramiko is no longer necessary to configure nodes' SSH
2348   daemons via ``gnt-node add``.
2349 - Draining (``gnt-cluster queue drain``) and un-draining the job queue
2350   (``gnt-cluster queue undrain``) now affects all nodes in a cluster and
2351   the flag is not reset after a master failover.
2352 - Python 2.4 has *not* been tested with this release. Using 2.6 or above
2353   is recommended. 2.6 will be mandatory from the 2.8 series.
2354
2355
2356 New features
2357 ~~~~~~~~~~~~
2358
2359 - New network management functionality to support automatic allocation
2360   of IP addresses and managing of network parameters. See
2361   :manpage:`gnt-network(8)` for more details.
2362 - New external storage backend, to allow managing arbitrary storage
2363   systems external to the cluster. See
2364   :manpage:`ganeti-extstorage-interface(7)`.
2365 - New ``exclusive-storage`` node parameter added, restricted to
2366   nodegroup level. When it's set to true, physical disks are assigned in
2367   an exclusive fashion to instances, as documented in :doc:`Partitioned
2368   Ganeti <design-partitioned>`.  Currently, only instances using the
2369   ``plain`` disk template are supported.
2370 - The KVM hypervisor has been updated with many new hypervisor
2371   parameters, including a generic one for passing arbitrary command line
2372   values. See a complete list in :manpage:`gnt-instance(8)`. It is now
2373   compatible up to qemu 1.4.
2374 - A new tool, called ``mon-collector``, is the stand-alone executor of
2375   the data collectors for a monitoring system. As of this version, it
2376   just includes the DRBD data collector, that can be executed by calling
2377   ``mon-collector`` using the ``drbd`` parameter. See
2378   :manpage:`mon-collector(7)`.
2379 - A new user option, :pyeval:`rapi.RAPI_ACCESS_READ`, has been added
2380   for RAPI users. It allows granting permissions to query for
2381   information to a specific user without giving
2382   :pyeval:`rapi.RAPI_ACCESS_WRITE` permissions.
2383 - A new tool named ``node-cleanup`` has been added. It cleans remains of
2384   a cluster from a machine by stopping all daemons, removing
2385   certificates and ssconf files. Unless the ``--no-backup`` option is
2386   given, copies of the certificates are made.
2387 - Instance creations now support the use of opportunistic locking,
2388   potentially speeding up the (parallel) creation of multiple instances.
2389   This feature is currently only available via the :doc:`RAPI
2390   <rapi>` interface and when an instance allocator is used. If the
2391   ``opportunistic_locking`` parameter is set the opcode will try to
2392   acquire as many locks as possible, but will not wait for any locks
2393   held by other opcodes. If not enough resources can be found to
2394   allocate the instance, the temporary error code
2395   :pyeval:`errors.ECODE_TEMP_NORES` is returned. The operation can be
2396   retried thereafter, with or without opportunistic locking.
2397 - New experimental linux-ha resource scripts.
2398 - Restricted-commands support: ganeti can now be asked (via command line
2399   or rapi) to perform commands on a node. These are passed via ganeti
2400   RPC rather than ssh. This functionality is restricted to commands
2401   specified on the ``$sysconfdir/ganeti/restricted-commands`` for security
2402   reasons. The file is not copied automatically.
2403
2404
2405 Misc changes
2406 ~~~~~~~~~~~~
2407
2408 - Diskless instances are now externally mirrored (Issue 237). This for
2409   now has only been tested in conjunction with explicit target nodes for
2410   migration/failover.
2411 - Queries not needing locks or RPC access to the node can now be
2412   performed by the confd daemon, making them independent from jobs, and
2413   thus faster to execute. This is selectable at configure time.
2414 - The functionality for allocating multiple instances at once has been
2415   overhauled and is now also available through :doc:`RAPI <rapi>`.
2416
2417 There are no significant changes from version 2.7.0~rc3.
2418
2419
2420 Version 2.7.0 rc3
2421 -----------------
2422
2423 *(Released Tue, 25 Jun 2013)*
2424
2425 - Fix permissions on the confd query socket (Issue 477)
2426 - Fix permissions on the job archive dir (Issue 498)
2427 - Fix handling of an internal exception in replace-disks (Issue 472)
2428 - Fix gnt-node info handling of shortened names (Issue 497)
2429 - Fix gnt-instance grow-disk when wiping is enabled
2430 - Documentation improvements, and support for newer pandoc
2431 - Fix hspace honoring ipolicy for disks (Issue 484)
2432 - Improve handling of the ``kvm_extra`` HV parameter
2433
2434
2435 Version 2.7.0 rc2
2436 -----------------
2437
2438 *(Released Fri, 24 May 2013)*
2439
2440 - ``devel/upload`` now works when ``/var/run`` on the target nodes is a
2441   symlink.
2442 - Disks added through ``gnt-instance modify`` or created through
2443   ``gnt-instance recreate-disks`` are wiped, if the
2444   ``prealloc_wipe_disks`` flag is set.
2445 - If wiping newly created disks fails, the disks are removed. Also,
2446   partial failures in creating disks through ``gnt-instance modify``
2447   triggers a cleanup of the partially-created disks.
2448 - Removing the master IP address doesn't fail if the address has been
2449   already removed.
2450 - Fix ownership of the OS log dir
2451 - Workaround missing SO_PEERCRED constant (Issue 191)
2452
2453
2454 Version 2.7.0 rc1
2455 -----------------
2456
2457 *(Released Fri, 3 May 2013)*
2458
2459 This was the first release candidate of the 2.7 series. Since beta3:
2460
2461 - Fix kvm compatibility with qemu 1.4 (Issue 389)
2462 - Documentation updates (admin guide, upgrade notes, install
2463   instructions) (Issue 372)
2464 - Fix gnt-group list nodes and instances count (Issue 436)
2465 - Fix compilation without non-mandatory libraries (Issue 441)
2466 - Fix xen-hvm hypervisor forcing nics to type 'ioemu' (Issue 247)
2467 - Make confd logging more verbose at INFO level (Issue 435)
2468 - Improve "networks" documentation in :manpage:`gnt-instance(8)`
2469 - Fix failure path for instance storage type conversion (Issue 229)
2470 - Update htools text backend documentation
2471 - Improve the renew-crypto section of :manpage:`gnt-cluster(8)`
2472 - Disable inter-cluster instance move for file-based instances, because
2473   it is dependant on instance export, which is not supported for
2474   file-based instances. (Issue 414)
2475 - Fix gnt-job crashes on non-ascii characters (Issue 427)
2476 - Fix volume group checks on non-vm-capable nodes (Issue 432)
2477
2478
2479 Version 2.7.0 beta3
2480 -------------------
2481
2482 *(Released Mon, 22 Apr 2013)*
2483
2484 This was the third beta release of the 2.7 series. Since beta2:
2485
2486 - Fix hail to verify disk instance policies on a per-disk basis (Issue 418).
2487 - Fix data loss on wrong usage of ``gnt-instance move``
2488 - Properly export errors in confd-based job queries
2489 - Add ``users-setup`` tool
2490 - Fix iallocator protocol to report 0 as a disk size for diskless
2491   instances. This avoids hail breaking when a diskless instance is
2492   present.
2493 - Fix job queue directory permission problem that made confd job queries
2494   fail. This requires running an ``ensure-dirs --full-run`` on upgrade
2495   for access to archived jobs (Issue 406).
2496 - Limit the sizes of networks supported by ``gnt-network`` to something
2497   between a ``/16`` and a ``/30`` to prevent memory bloat and crashes.
2498 - Fix bugs in instance disk template conversion
2499 - Fix GHC 7 compatibility
2500 - Fix ``burnin`` install path (Issue 426).
2501 - Allow very small disk grows (Issue 347).
2502 - Fix a ``ganeti-noded`` memory bloat introduced in 2.5, by making sure
2503   that noded doesn't import masterd code (Issue 419).
2504 - Make sure the default metavg at cluster init is the same as the vg, if
2505   unspecified (Issue 358).
2506 - Fix cleanup of partially created disks (part of Issue 416)
2507
2508
2509 Version 2.7.0 beta2
2510 -------------------
2511
2512 *(Released Tue, 2 Apr 2013)*
2513
2514 This was the second beta release of the 2.7 series. Since beta1:
2515
2516 - Networks no longer have a "type" slot, since this information was
2517   unused in Ganeti: instead of it tags should be used.
2518 - The rapi client now has a ``target_node`` option to MigrateInstance.
2519 - Fix early exit return code for hbal (Issue 386).
2520 - Fix ``gnt-instance migrate/failover -n`` (Issue 396).
2521 - Fix ``rbd showmapped`` output parsing (Issue 312).
2522 - Networks are now referenced indexed by UUID, rather than name. This
2523   will require running cfgupgrade, from 2.7.0beta1, if networks are in
2524   use.
2525 - The OS environment now includes network information.
2526 - Deleting of a network is now disallowed if any instance nic is using
2527   it, to prevent dangling references.
2528 - External storage is now documented in man pages.
2529 - The exclusive_storage flag can now only be set at nodegroup level.
2530 - Hbal can now submit an explicit priority with its jobs.
2531 - Many network related locking fixes.
2532 - Bump up the required pylint version to 0.25.1.
2533 - Fix the ``no_remember`` option in RAPI client.
2534 - Many ipolicy related tests, qa, and fixes.
2535 - Many documentation improvements and fixes.
2536 - Fix building with ``--disable-file-storage``.
2537 - Fix ``-q`` option in htools, which was broken if passed more than
2538   once.
2539 - Some haskell/python interaction improvements and fixes.
2540 - Fix iallocator in case of missing LVM storage.
2541 - Fix confd config load in case of ``--no-lvm-storage``.
2542 - The confd/query functionality is now mentioned in the security
2543   documentation.
2544
2545
2546 Version 2.7.0 beta1
2547 -------------------
2548
2549 *(Released Wed, 6 Feb 2013)*
2550
2551 This was the first beta release of the 2.7 series. All important changes
2552 are listed in the latest 2.7 entry.
2553
2554
2555 Version 2.6.2
2556 -------------
2557
2558 *(Released Fri, 21 Dec 2012)*
2559
2560 Important behaviour change: hbal won't rebalance anymore instances which
2561 have the ``auto_balance`` attribute set to false. This was the intention
2562 all along, but until now it only skipped those from the N+1 memory
2563 reservation (DRBD-specific).
2564
2565 A significant number of bug fixes in this release:
2566
2567 - Fixed disk adoption interaction with ipolicy checks.
2568 - Fixed networking issues when instances are started, stopped or
2569   migrated, by forcing the tap device's MAC prefix to "fe" (issue 217).
2570 - Fixed the warning in cluster verify for shared storage instances not
2571   being redundant.
2572 - Fixed removal of storage directory on shared file storage (issue 262).
2573 - Fixed validation of LVM volume group name in OpClusterSetParams
2574   (``gnt-cluster modify``) (issue 285).
2575 - Fixed runtime memory increases (``gnt-instance modify -m``).
2576 - Fixed live migration under Xen's ``xl`` mode.
2577 - Fixed ``gnt-instance console`` with ``xl``.
2578 - Fixed building with newer Haskell compiler/libraries.
2579 - Fixed PID file writing in Haskell daemons (confd); this prevents
2580   restart issues if confd was launched manually (outside of
2581   ``daemon-util``) while another copy of it was running
2582 - Fixed a type error when doing live migrations with KVM (issue 297) and
2583   the error messages for failing migrations have been improved.
2584 - Fixed opcode validation for the out-of-band commands (``gnt-node
2585   power``).
2586 - Fixed a type error when unsetting OS hypervisor parameters (issue
2587   311); now it's possible to unset all OS-specific hypervisor
2588   parameters.
2589 - Fixed the ``dry-run`` mode for many operations: verification of
2590   results was over-zealous but didn't take into account the ``dry-run``
2591   operation, resulting in "wrong" failures.
2592 - Fixed bash completion in ``gnt-job list`` when the job queue has
2593   hundreds of entries; especially with older ``bash`` versions, this
2594   results in significant CPU usage.
2595
2596 And lastly, a few other improvements have been made:
2597
2598 - Added option to force master-failover without voting (issue 282).
2599 - Clarified error message on lock conflict (issue 287).
2600 - Logging of newly submitted jobs has been improved (issue 290).
2601 - Hostname checks have been made uniform between instance rename and
2602   create (issue 291).
2603 - The ``--submit`` option is now supported by ``gnt-debug delay``.
2604 - Shutting down the master daemon by sending SIGTERM now stops it from
2605   processing jobs waiting for locks; instead, those jobs will be started
2606   once again after the master daemon is started the next time (issue
2607   296).
2608 - Support for Xen's ``xl`` program has been improved (besides the fixes
2609   above).
2610 - Reduced logging noise in the Haskell confd daemon (only show one log
2611   entry for each config reload, instead of two).
2612 - Several man page updates and typo fixes.
2613
2614
2615 Version 2.6.1
2616 -------------
2617
2618 *(Released Fri, 12 Oct 2012)*
2619
2620 A small bugfix release. Among the bugs fixed:
2621
2622 - Fixed double use of ``PRIORITY_OPT`` in ``gnt-node migrate``, that
2623   made the command unusable.
2624 - Commands that issue many jobs don't fail anymore just because some jobs
2625   take so long that other jobs are archived.
2626 - Failures during ``gnt-instance reinstall`` are reflected by the exit
2627   status.
2628 - Issue 190 fixed. Check for DRBD in cluster verify is enabled only when
2629   DRBD is enabled.
2630 - When ``always_failover`` is set, ``--allow-failover`` is not required
2631   in migrate commands anymore.
2632 - ``bash_completion`` works even if extglob is disabled.
2633 - Fixed bug with locks that made failover for RDB-based instances fail.
2634 - Fixed bug in non-mirrored instance allocation that made Ganeti choose
2635   a random node instead of one based on the allocator metric.
2636 - Support for newer versions of pylint and pep8.
2637 - Hail doesn't fail anymore when trying to add an instance of type
2638   ``file``, ``sharedfile`` or ``rbd``.
2639 - Added new Makefile target to rebuild the whole distribution, so that
2640   all files are included.
2641
2642
2643 Version 2.6.0
2644 -------------
2645
2646 *(Released Fri, 27 Jul 2012)*
2647
2648
2649 .. attention:: The ``LUXI`` protocol has been made more consistent
2650    regarding its handling of command arguments. This, however, leads to
2651    incompatibility issues with previous versions. Please ensure that you
2652    restart Ganeti daemons soon after the upgrade, otherwise most
2653    ``LUXI`` calls (job submission, setting/resetting the drain flag,
2654    pausing/resuming the watcher, cancelling and archiving jobs, querying
2655    the cluster configuration) will fail.
2656
2657
2658 New features
2659 ~~~~~~~~~~~~
2660
2661 Instance run status
2662 +++++++++++++++++++
2663
2664 The current ``admin_up`` field, which used to denote whether an instance
2665 should be running or not, has been removed. Instead, ``admin_state`` is
2666 introduced, with 3 possible values -- ``up``, ``down`` and ``offline``.
2667
2668 The rational behind this is that an instance being “down” can have
2669 different meanings:
2670
2671 - it could be down during a reboot
2672 - it could be temporarily be down for a reinstall
2673 - or it could be down because it is deprecated and kept just for its
2674   disk
2675
2676 The previous Boolean state was making it difficult to do capacity
2677 calculations: should Ganeti reserve memory for a down instance? Now, the
2678 tri-state field makes it clear:
2679
2680 - in ``up`` and ``down`` state, all resources are reserved for the
2681   instance, and it can be at any time brought up if it is down
2682 - in ``offline`` state, only disk space is reserved for it, but not
2683   memory or CPUs
2684
2685 The field can have an extra use: since the transition between ``up`` and
2686 ``down`` and vice-versus is done via ``gnt-instance start/stop``, but
2687 transition between ``offline`` and ``down`` is done via ``gnt-instance
2688 modify``, it is possible to given different rights to users. For
2689 example, owners of an instance could be allowed to start/stop it, but
2690 not transition it out of the offline state.
2691
2692 Instance policies and specs
2693 +++++++++++++++++++++++++++
2694
2695 In previous Ganeti versions, an instance creation request was not
2696 limited on the minimum size and on the maximum size just by the cluster
2697 resources. As such, any policy could be implemented only in third-party
2698 clients (RAPI clients, or shell wrappers over ``gnt-*``
2699 tools). Furthermore, calculating cluster capacity via ``hspace`` again
2700 required external input with regards to instance sizes.
2701
2702 In order to improve these workflows and to allow for example better
2703 per-node group differentiation, we introduced instance specs, which
2704 allow declaring:
2705
2706 - minimum instance disk size, disk count, memory size, cpu count
2707 - maximum values for the above metrics
2708 - and “standard” values (used in ``hspace`` to calculate the standard
2709   sized instances)
2710
2711 The minimum/maximum values can be also customised at node-group level,
2712 for example allowing more powerful hardware to support bigger instance
2713 memory sizes.
2714
2715 Beside the instance specs, there are a few other settings belonging to
2716 the instance policy framework. It is possible now to customise, per
2717 cluster and node-group:
2718
2719 - the list of allowed disk templates
2720 - the maximum ratio of VCPUs per PCPUs (to control CPU oversubscription)
2721 - the maximum ratio of instance to spindles (see below for more
2722   information) for local storage
2723
2724 All these together should allow all tools that talk to Ganeti to know
2725 what are the ranges of allowed values for instances and the
2726 over-subscription that is allowed.
2727
2728 For the VCPU/PCPU ratio, we already have the VCPU configuration from the
2729 instance configuration, and the physical CPU configuration from the
2730 node. For the spindle ratios however, we didn't track before these
2731 values, so new parameters have been added:
2732
2733 - a new node parameter ``spindle_count``, defaults to 1, customisable at
2734   node group or node level
2735 - at new backend parameter (for instances), ``spindle_use`` defaults to 1
2736
2737 Note that spindles in this context doesn't need to mean actual
2738 mechanical hard-drives; it's just a relative number for both the node
2739 I/O capacity and instance I/O consumption.
2740
2741 Instance migration behaviour
2742 ++++++++++++++++++++++++++++
2743
2744 While live-migration is in general desirable over failover, it is
2745 possible that for some workloads it is actually worse, due to the
2746 variable time of the “suspend” phase during live migration.
2747
2748 To allow the tools to work consistently over such instances (without
2749 having to hard-code instance names), a new backend parameter
2750 ``always_failover`` has been added to control the migration/failover
2751 behaviour. When set to True, all migration requests for an instance will
2752 instead fall-back to failover.
2753
2754 Instance memory ballooning
2755 ++++++++++++++++++++++++++
2756
2757 Initial support for memory ballooning has been added. The memory for an
2758 instance is no longer fixed (backend parameter ``memory``), but instead
2759 can vary between minimum and maximum values (backend parameters
2760 ``minmem`` and ``maxmem``). Currently we only change an instance's
2761 memory when:
2762
2763 - live migrating or failing over and instance and the target node
2764   doesn't have enough memory
2765 - user requests changing the memory via ``gnt-instance modify
2766   --runtime-memory``
2767
2768 Instance CPU pinning
2769 ++++++++++++++++++++
2770
2771 In order to control the use of specific CPUs by instance, support for
2772 controlling CPU pinning has been added for the Xen, HVM and LXC
2773 hypervisors. This is controlled by a new hypervisor parameter
2774 ``cpu_mask``; details about possible values for this are in the
2775 :manpage:`gnt-instance(8)`. Note that use of the most specific (precise
2776 VCPU-to-CPU mapping) form will work well only when all nodes in your
2777 cluster have the same amount of CPUs.
2778
2779 Disk parameters
2780 +++++++++++++++
2781
2782 Another area in which Ganeti was not customisable were the parameters
2783 used for storage configuration, e.g. how many stripes to use for LVM,
2784 DRBD resync configuration, etc.
2785
2786 To improve this area, we've added disks parameters, which are
2787 customisable at cluster and node group level, and which allow to
2788 specify various parameters for disks (DRBD has the most parameters
2789 currently), for example:
2790
2791 - DRBD resync algorithm and parameters (e.g. speed)
2792 - the default VG for meta-data volumes for DRBD
2793 - number of stripes for LVM (plain disk template)
2794 - the RBD pool
2795
2796 These parameters can be modified via ``gnt-cluster modify -D …`` and
2797 ``gnt-group modify -D …``, and are used at either instance creation (in
2798 case of LVM stripes, for example) or at disk “activation” time
2799 (e.g. resync speed).
2800
2801 Rados block device support
2802 ++++++++++++++++++++++++++
2803
2804 A Rados (http://ceph.com/wiki/Rbd) storage backend has been added,
2805 denoted by the ``rbd`` disk template type. This is considered
2806 experimental, feedback is welcome. For details on configuring it, see
2807 the :doc:`install` document and the :manpage:`gnt-cluster(8)` man page.
2808
2809 Master IP setup
2810 +++++++++++++++
2811
2812 The existing master IP functionality works well only in simple setups (a
2813 single network shared by all nodes); however, if nodes belong to
2814 different networks, then the ``/32`` setup and lack of routing
2815 information is not enough.
2816
2817 To allow the master IP to function well in more complex cases, the
2818 system was reworked as follows:
2819
2820 - a master IP netmask setting has been added
2821 - the master IP activation/turn-down code was moved from the node daemon
2822   to a separate script
2823 - whether to run the Ganeti-supplied master IP script or a user-supplied
2824   on is a ``gnt-cluster init`` setting
2825
2826 Details about the location of the standard and custom setup scripts are
2827 in the man page :manpage:`gnt-cluster(8)`; for information about the
2828 setup script protocol, look at the Ganeti-supplied script.
2829
2830 SPICE support
2831 +++++++++++++
2832
2833 The `SPICE <http://www.linux-kvm.org/page/SPICE>`_ support has been
2834 improved.
2835
2836 It is now possible to use TLS-protected connections, and when renewing
2837 or changing the cluster certificates (via ``gnt-cluster renew-crypto``,
2838 it is now possible to specify spice or spice CA certificates. Also, it
2839 is possible to configure a password for SPICE sessions via the
2840 hypervisor parameter ``spice_password_file``.
2841
2842 There are also new parameters to control the compression and streaming
2843 options (e.g. ``spice_image_compression``, ``spice_streaming_video``,
2844 etc.). For details, see the man page :manpage:`gnt-instance(8)` and look
2845 for the spice parameters.
2846
2847 Lastly, it is now possible to see the SPICE connection information via
2848 ``gnt-instance console``.
2849
2850 OVF converter
2851 +++++++++++++
2852
2853 A new tool (``tools/ovfconverter``) has been added that supports
2854 conversion between Ganeti and the `Open Virtualization Format
2855 <http://en.wikipedia.org/wiki/Open_Virtualization_Format>`_ (both to and
2856 from).
2857
2858 This relies on the ``qemu-img`` tool to convert the disk formats, so the
2859 actual compatibility with other virtualization solutions depends on it.
2860
2861 Confd daemon changes
2862 ++++++++++++++++++++
2863
2864 The configuration query daemon (``ganeti-confd``) is now optional, and
2865 has been rewritten in Haskell; whether to use the daemon at all, use the
2866 Python (default) or the Haskell version is selectable at configure time
2867 via the ``--enable-confd`` parameter, which can take one of the
2868 ``haskell``, ``python`` or ``no`` values. If not used, disabling the
2869 daemon will result in a smaller footprint; for larger systems, we
2870 welcome feedback on the Haskell version which might become the default
2871 in future versions.
2872
2873 If you want to use ``gnt-node list-drbd`` you need to have the Haskell
2874 daemon running. The Python version doesn't implement the new call.
2875
2876
2877 User interface changes
2878 ~~~~~~~~~~~~~~~~~~~~~~
2879
2880 We have replaced the ``--disks`` option of ``gnt-instance
2881 replace-disks`` with a more flexible ``--disk`` option, which allows
2882 adding and removing disks at arbitrary indices (Issue 188). Furthermore,
2883 disk size and mode can be changed upon recreation (via ``gnt-instance
2884 recreate-disks``, which accepts the same ``--disk`` option).
2885
2886 As many people are used to a ``show`` command, we have added that as an
2887 alias to ``info`` on all ``gnt-*`` commands.
2888
2889 The ``gnt-instance grow-disk`` command has a new mode in which it can
2890 accept the target size of the disk, instead of the delta; this can be
2891 more safe since two runs in absolute mode will be idempotent, and
2892 sometimes it's also easier to specify the desired size directly.
2893
2894 Also the handling of instances with regard to offline secondaries has
2895 been improved. Instance operations should not fail because one of it's
2896 secondary nodes is offline, even though it's safe to proceed.
2897
2898 A new command ``list-drbd`` has been added to the ``gnt-node`` script to
2899 support debugging of DRBD issues on nodes. It provides a mapping of DRBD
2900 minors to instance name.
2901
2902 API changes
2903 ~~~~~~~~~~~
2904
2905 RAPI coverage has improved, with (for example) new resources for
2906 recreate-disks, node power-cycle, etc.
2907
2908 Compatibility
2909 ~~~~~~~~~~~~~
2910
2911 There is partial support for ``xl`` in the Xen hypervisor; feedback is
2912 welcome.
2913
2914 Python 2.7 is better supported, and after Ganeti 2.6 we will investigate
2915 whether to still support Python 2.4 or move to Python 2.6 as minimum
2916 required version.
2917
2918 Support for Fedora has been slightly improved; the provided example
2919 init.d script should work better on it and the INSTALL file should
2920 document the needed dependencies.
2921
2922 Internal changes
2923 ~~~~~~~~~~~~~~~~
2924
2925 The deprecated ``QueryLocks`` LUXI request has been removed. Use
2926 ``Query(what=QR_LOCK, ...)`` instead.
2927
2928 The LUXI requests :pyeval:`luxi.REQ_QUERY_JOBS`,
2929 :pyeval:`luxi.REQ_QUERY_INSTANCES`, :pyeval:`luxi.REQ_QUERY_NODES`,
2930 :pyeval:`luxi.REQ_QUERY_GROUPS`, :pyeval:`luxi.REQ_QUERY_EXPORTS` and
2931 :pyeval:`luxi.REQ_QUERY_TAGS` are deprecated and will be removed in a
2932 future version. :pyeval:`luxi.REQ_QUERY` should be used instead.
2933
2934 RAPI client: ``CertificateError`` now derives from
2935 ``GanetiApiError``. This should make it more easy to handle Ganeti
2936 errors.
2937
2938 Deprecation warnings due to PyCrypto/paramiko import in
2939 ``tools/setup-ssh`` have been silenced, as usually they are safe; please
2940 make sure to run an up-to-date paramiko version, if you use this tool.
2941
2942 The QA scripts now depend on Python 2.5 or above (the main code base
2943 still works with Python 2.4).
2944
2945 The configuration file (``config.data``) is now written without
2946 indentation for performance reasons; if you want to edit it, it can be
2947 re-formatted via ``tools/fmtjson``.
2948
2949 A number of bugs has been fixed in the cluster merge tool.
2950
2951 ``x509`` certification verification (used in import-export) has been
2952 changed to allow the same clock skew as permitted by the cluster
2953 verification. This will remove some rare but hard to diagnose errors in
2954 import-export.
2955
2956
2957 Version 2.6.0 rc4
2958 -----------------
2959
2960 *(Released Thu, 19 Jul 2012)*
2961
2962 Very few changes from rc4 to the final release, only bugfixes:
2963
2964 - integrated fixes from release 2.5.2 (fix general boot flag for KVM
2965   instance, fix CDROM booting for KVM instances)
2966 - fixed node group modification of node parameters
2967 - fixed issue in LUClusterVerifyGroup with multi-group clusters
2968 - fixed generation of bash completion to ensure a stable ordering
2969 - fixed a few typos
2970
2971
2972 Version 2.6.0 rc3
2973 -----------------
2974
2975 *(Released Fri, 13 Jul 2012)*
2976
2977 Third release candidate for 2.6. The following changes were done from
2978 rc3 to rc4:
2979
2980 - Fixed ``UpgradeConfig`` w.r.t. to disk parameters on disk objects.
2981 - Fixed an inconsistency in the LUXI protocol with the provided
2982   arguments (NOT backwards compatible)
2983 - Fixed a bug with node groups ipolicy where ``min`` was greater than
2984   the cluster ``std`` value
2985 - Implemented a new ``gnt-node list-drbd`` call to list DRBD minors for
2986   easier instance debugging on nodes (requires ``hconfd`` to work)
2987
2988
2989 Version 2.6.0 rc2
2990 -----------------
2991
2992 *(Released Tue, 03 Jul 2012)*
2993
2994 Second release candidate for 2.6. The following changes were done from
2995 rc2 to rc3:
2996
2997 - Fixed ``gnt-cluster verify`` regarding ``master-ip-script`` on non
2998   master candidates
2999 - Fixed a RAPI regression on missing beparams/memory
3000 - Fixed redistribution of files on offline nodes
3001 - Added possibility to run activate-disks even though secondaries are
3002   offline. With this change it relaxes also the strictness on some other
3003   commands which use activate disks internally:
3004   * ``gnt-instance start|reboot|rename|backup|export``
3005 - Made it possible to remove safely an instance if its secondaries are
3006   offline
3007 - Made it possible to reinstall even though secondaries are offline
3008
3009
3010 Version 2.6.0 rc1
3011 -----------------
3012
3013 *(Released Mon, 25 Jun 2012)*
3014
3015 First release candidate for 2.6. The following changes were done from
3016 rc1 to rc2:
3017
3018 - Fixed bugs with disk parameters and ``rbd`` templates as well as
3019   ``instance_os_add``
3020 - Made ``gnt-instance modify`` more consistent regarding new NIC/Disk
3021   behaviour. It supports now the modify operation
3022 - ``hcheck`` implemented to analyze cluster health and possibility of
3023   improving health by rebalance
3024 - ``hbal`` has been improved in dealing with split instances
3025
3026
3027 Version 2.6.0 beta2
3028 -------------------
3029
3030 *(Released Mon, 11 Jun 2012)*
3031
3032 Second beta release of 2.6. The following changes were done from beta2
3033 to rc1:
3034
3035 - Fixed ``daemon-util`` with non-root user models
3036 - Fixed creation of plain instances with ``--no-wait-for-sync``
3037 - Fix wrong iv_names when running ``cfgupgrade``
3038 - Export more information in RAPI group queries
3039 - Fixed bug when changing instance network interfaces
3040 - Extended burnin to do NIC changes
3041 - query: Added ``<``, ``>``, ``<=``, ``>=`` comparison operators
3042 - Changed default for DRBD barriers
3043 - Fixed DRBD error reporting for syncer rate
3044 - Verify the options on disk parameters
3045
3046 And of course various fixes to documentation and improved unittests and
3047 QA.
3048
3049
3050 Version 2.6.0 beta1
3051 -------------------
3052
3053 *(Released Wed, 23 May 2012)*
3054
3055 First beta release of 2.6. The following changes were done from beta1 to
3056 beta2:
3057
3058 - integrated patch for distributions without ``start-stop-daemon``
3059 - adapted example init.d script to work on Fedora
3060 - fixed log handling in Haskell daemons
3061 - adapted checks in the watcher for pycurl linked against libnss
3062 - add partial support for ``xl`` instead of ``xm`` for Xen
3063 - fixed a type issue in cluster verification
3064 - fixed ssconf handling in the Haskell code (was breaking confd in IPv6
3065   clusters)
3066
3067 Plus integrated fixes from the 2.5 branch:
3068
3069 - fixed ``kvm-ifup`` to use ``/bin/bash``
3070 - fixed parallel build failures
3071 - KVM live migration when using a custom keymap
3072
3073
3074 Version 2.5.2
3075 -------------
3076
3077 *(Released Tue, 24 Jul 2012)*
3078
3079 A small bugfix release, with no new features:
3080
3081 - fixed bash-isms in kvm-ifup, for compatibility with systems which use a
3082   different default shell (e.g. Debian, Ubuntu)
3083 - fixed KVM startup and live migration with a custom keymap (fixes Issue
3084   243 and Debian bug #650664)
3085 - fixed compatibility with KVM versions that don't support multiple boot
3086   devices (fixes Issue 230 and Debian bug #624256)
3087
3088 Additionally, a few fixes were done to the build system (fixed parallel
3089 build failures) and to the unittests (fixed race condition in test for
3090 FileID functions, and the default enable/disable mode for QA test is now
3091 customisable).
3092
3093
3094 Version 2.5.1
3095 -------------
3096
3097 *(Released Fri, 11 May 2012)*
3098
3099 A small bugfix release.
3100
3101 The main issues solved are on the topic of compatibility with newer LVM
3102 releases:
3103
3104 - fixed parsing of ``lv_attr`` field
3105 - adapted to new ``vgreduce --removemissing`` behaviour where sometimes
3106   the ``--force`` flag is needed
3107
3108 Also on the topic of compatibility, ``tools/lvmstrap`` has been changed
3109 to accept kernel 3.x too (was hardcoded to 2.6.*).
3110
3111 A regression present in 2.5.0 that broke handling (in the gnt-* scripts)
3112 of hook results and that also made display of other errors suboptimal
3113 was fixed; the code behaves now like 2.4 and earlier.
3114
3115 Another change in 2.5, the cleanup of the OS scripts environment, is too
3116 aggressive: it removed even the ``PATH`` variable, which requires the OS
3117 scripts to *always* need to export it. Since this is a bit too strict,
3118 we now export a minimal PATH, the same that we export for hooks.
3119
3120 The fix for issue 201 (Preserve bridge MTU in KVM ifup script) was
3121 integrated into this release.
3122
3123 Finally, a few other miscellaneous changes were done (no new features,
3124 just small improvements):
3125
3126 - Fix ``gnt-group --help`` display
3127 - Fix hardcoded Xen kernel path
3128 - Fix grow-disk handling of invalid units
3129 - Update synopsis for ``gnt-cluster repair-disk-sizes``
3130 - Accept both PUT and POST in noded (makes future upgrade to 2.6 easier)
3131
3132
3133 Version 2.5.0
3134 -------------
3135
3136 *(Released Thu, 12 Apr 2012)*
3137
3138 Incompatible/important changes and bugfixes
3139 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3140
3141 - The default of the ``/2/instances/[instance_name]/rename`` RAPI
3142   resource's ``ip_check`` parameter changed from ``True`` to ``False``
3143   to match the underlying LUXI interface.
3144 - The ``/2/nodes/[node_name]/evacuate`` RAPI resource was changed to use
3145   body parameters, see :doc:`RAPI documentation <rapi>`. The server does
3146   not maintain backwards-compatibility as the underlying operation
3147   changed in an incompatible way. The RAPI client can talk to old
3148   servers, but it needs to be told so as the return value changed.
3149 - When creating file-based instances via RAPI, the ``file_driver``
3150   parameter no longer defaults to ``loop`` and must be specified.
3151 - The deprecated ``bridge`` NIC parameter is no longer supported. Use
3152   ``link`` instead.
3153 - Support for the undocumented and deprecated RAPI instance creation
3154   request format version 0 has been dropped. Use version 1, supported
3155   since Ganeti 2.1.3 and :doc:`documented <rapi>`, instead.
3156 - Pyparsing 1.4.6 or above is required, see :doc:`installation
3157   documentation <install>`.
3158 - The "cluster-verify" hooks are now executed per group by the
3159   ``OP_CLUSTER_VERIFY_GROUP`` opcode. This maintains the same behavior
3160   if you just run ``gnt-cluster verify``, which generates one opcode per
3161   group.
3162 - The environment as passed to the OS scripts is cleared, and thus no
3163   environment variables defined in the node daemon's environment will be
3164   inherited by the scripts.
3165 - The :doc:`iallocator <iallocator>` mode ``multi-evacuate`` has been
3166   deprecated.
3167 - :doc:`New iallocator modes <design-multi-reloc>` have been added to
3168   support operations involving multiple node groups.
3169 - Offline nodes are ignored when failing over an instance.
3170 - Support for KVM version 1.0, which changed the version reporting format
3171   from 3 to 2 digits.
3172 - TCP/IP ports used by DRBD disks are returned to a pool upon instance
3173   removal.
3174 - ``Makefile`` is now compatible with Automake 1.11.2
3175 - Includes all bugfixes made in the 2.4 series
3176
3177 New features
3178 ~~~~~~~~~~~~
3179
3180 - The ganeti-htools project has been merged into the ganeti-core source
3181   tree and will be built as part of Ganeti (see :doc:`install-quick`).
3182 - Implemented support for :doc:`shared storage <design-shared-storage>`.
3183 - Add support for disks larger than 2 TB in ``lvmstrap`` by supporting
3184   GPT-style partition tables (requires `parted
3185   <http://www.gnu.org/s/parted/>`_).
3186 - Added support for floppy drive and 2nd CD-ROM drive in KVM hypervisor.
3187 - Allowed adding tags on instance creation.
3188 - Export instance tags to hooks (``INSTANCE_TAGS``, see :doc:`hooks`)
3189 - Allow instances to be started in a paused state, enabling the user to
3190   see the complete console output on boot using the console.
3191 - Added new hypervisor flag to control default reboot behaviour
3192   (``reboot_behavior``).
3193 - Added support for KVM keymaps (hypervisor parameter ``keymap``).
3194 - Improved out-of-band management support:
3195
3196   - Added ``gnt-node health`` command reporting the health status of
3197     nodes.
3198   - Added ``gnt-node power`` command to manage power status of nodes.
3199   - Added command for emergency power-off (EPO), ``gnt-cluster epo``.
3200
3201 - Instance migration can fall back to failover if instance is not
3202   running.
3203 - Filters can be used when listing nodes, instances, groups and locks;
3204   see :manpage:`ganeti(7)` manpage.
3205 - Added post-execution status as variables to :doc:`hooks <hooks>`
3206   environment.
3207 - Instance tags are exported/imported together with the instance.
3208 - When given an explicit job ID, ``gnt-job info`` will work for archived
3209   jobs.
3210 - Jobs can define dependencies on other jobs (not yet supported via
3211   RAPI or command line, but used by internal commands and usable via
3212   LUXI).
3213
3214   - Lock monitor (``gnt-debug locks``) shows jobs waiting for
3215     dependencies.
3216
3217 - Instance failover is now available as a RAPI resource
3218   (``/2/instances/[instance_name]/failover``).
3219 - ``gnt-instance info`` defaults to static information if primary node
3220   is offline.
3221 - Opcodes have a new ``comment`` attribute.
3222 - Added basic SPICE support to KVM hypervisor.
3223 - ``tools/ganeti-listrunner`` allows passing of arguments to executable.
3224
3225 Node group improvements
3226 ~~~~~~~~~~~~~~~~~~~~~~~
3227
3228 - ``gnt-cluster verify`` has been modified to check groups separately,
3229   thereby improving performance.
3230 - Node group support has been added to ``gnt-cluster verify-disks``,
3231   which now operates per node group.
3232 - Watcher has been changed to work better with node groups.
3233
3234   - One process and state file per node group.
3235   - Slow watcher in one group doesn't block other group's watcher.
3236
3237 - Added new command, ``gnt-group evacuate``, to move all instances in a
3238   node group to other groups.
3239 - Added ``gnt-instance change-group`` to move an instance to another
3240   node group.
3241 - ``gnt-cluster command`` and ``gnt-cluster copyfile`` now support
3242   per-group operations.
3243 - Node groups can be tagged.
3244 - Some operations switch from an exclusive to a shared lock as soon as
3245   possible.
3246 - Instance's primary and secondary nodes' groups are now available as
3247   query fields (``pnode.group``, ``pnode.group.uuid``, ``snodes.group``
3248   and ``snodes.group.uuid``).
3249
3250 Misc
3251 ~~~~
3252
3253 - Numerous updates to documentation and manpages.
3254
3255   - :doc:`RAPI <rapi>` documentation now has detailed parameter
3256     descriptions.
3257   - Some opcode/job results are now also documented, see :doc:`RAPI
3258     <rapi>`.
3259
3260 - A lockset's internal lock is now also visible in lock monitor.
3261 - Log messages from job queue workers now contain information about the
3262   opcode they're processing.
3263 - ``gnt-instance console`` no longer requires the instance lock.
3264 - A short delay when waiting for job changes reduces the number of LUXI
3265   requests significantly.
3266 - DRBD metadata volumes are overwritten with zeros during disk creation.
3267 - Out-of-band commands no longer acquire the cluster lock in exclusive
3268   mode.
3269 - ``devel/upload`` now uses correct permissions for directories.
3270
3271
3272 Version 2.5.0 rc6
3273 -----------------
3274
3275 *(Released Fri, 23 Mar 2012)*
3276
3277 This was the sixth release candidate of the 2.5 series.
3278
3279
3280 Version 2.5.0 rc5
3281 -----------------
3282
3283 *(Released Mon, 9 Jan 2012)*
3284
3285 This was the fifth release candidate of the 2.5 series.
3286
3287
3288 Version 2.5.0 rc4
3289 -----------------
3290
3291 *(Released Thu, 27 Oct 2011)*
3292
3293 This was the fourth release candidate of the 2.5 series.
3294
3295
3296 Version 2.5.0 rc3
3297 -----------------
3298
3299 *(Released Wed, 26 Oct 2011)*
3300
3301 This was the third release candidate of the 2.5 series.
3302
3303
3304 Version 2.5.0 rc2
3305 -----------------
3306
3307 *(Released Tue, 18 Oct 2011)*
3308
3309 This was the second release candidate of the 2.5 series.
3310
3311
3312 Version 2.5.0 rc1
3313 -----------------
3314
3315 *(Released Tue, 4 Oct 2011)*
3316
3317 This was the first release candidate of the 2.5 series.
3318
3319
3320 Version 2.5.0 beta3
3321 -------------------
3322
3323 *(Released Wed, 31 Aug 2011)*
3324
3325 This was the third beta release of the 2.5 series.
3326
3327
3328 Version 2.5.0 beta2
3329 -------------------
3330
3331 *(Released Mon, 22 Aug 2011)*
3332
3333 This was the second beta release of the 2.5 series.
3334
3335
3336 Version 2.5.0 beta1
3337 -------------------
3338
3339 *(Released Fri, 12 Aug 2011)*
3340
3341 This was the first beta release of the 2.5 series.
3342
3343
3344 Version 2.4.5
3345 -------------
3346
3347 *(Released Thu, 27 Oct 2011)*
3348
3349 - Fixed bug when parsing command line parameter values ending in
3350   backslash
3351 - Fixed assertion error after unclean master shutdown
3352 - Disable HTTP client pool for RPC, significantly reducing memory usage
3353   of master daemon
3354 - Fixed queue archive creation with wrong permissions
3355
3356
3357 Version 2.4.4
3358 -------------
3359
3360 *(Released Tue, 23 Aug 2011)*
3361
3362 Small bug-fixes:
3363
3364 - Fixed documentation for importing with ``--src-dir`` option
3365 - Fixed a bug in ``ensure-dirs`` with queue/archive permissions
3366 - Fixed a parsing issue with DRBD 8.3.11 in the Linux kernel
3367
3368
3369 Version 2.4.3
3370 -------------
3371
3372 *(Released Fri, 5 Aug 2011)*
3373
3374 Many bug-fixes and a few small features:
3375
3376 - Fixed argument order in ``ReserveLV`` and ``ReserveMAC`` which caused
3377   issues when you tried to add an instance with two MAC addresses in one
3378   request
3379 - KVM: fixed per-instance stored UID value
3380 - KVM: configure bridged NICs at migration start
3381 - KVM: Fix a bug where instance will not start with never KVM versions
3382   (>= 0.14)
3383 - Added OS search path to ``gnt-cluster info``
3384 - Fixed an issue with ``file_storage_dir`` where you were forced to
3385   provide an absolute path, but the documentation states it is a
3386   relative path, the documentation was right
3387 - Added a new parameter to instance stop/start called ``--no-remember``
3388   that will make the state change to not be remembered
3389 - Implemented ``no_remember`` at RAPI level
3390 - Improved the documentation
3391 - Node evacuation: don't call IAllocator if node is already empty
3392 - Fixed bug in DRBD8 replace disks on current nodes
3393 - Fixed bug in recreate-disks for DRBD instances
3394 - Moved assertion checking locks in ``gnt-instance replace-disks``
3395   causing it to abort with not owning the right locks for some situation
3396 - Job queue: Fixed potential race condition when cancelling queued jobs
3397 - Fixed off-by-one bug in job serial generation
3398 - ``gnt-node volumes``: Fix instance names
3399 - Fixed aliases in bash completion
3400 - Fixed a bug in reopening log files after being sent a SIGHUP
3401 - Added a flag to burnin to allow specifying VCPU count
3402 - Bugfixes to non-root Ganeti configuration
3403
3404
3405 Version 2.4.2
3406 -------------
3407
3408 *(Released Thu, 12 May 2011)*
3409
3410 Many bug-fixes and a few new small features:
3411
3412 - Fixed a bug related to log opening failures
3413 - Fixed a bug in instance listing with orphan instances
3414 - Fixed a bug which prevented resetting the cluster-level node parameter
3415   ``oob_program`` to the default
3416 - Many fixes related to the ``cluster-merge`` tool
3417 - Fixed a race condition in the lock monitor, which caused failures
3418   during (at least) creation of many instances in parallel
3419 - Improved output for gnt-job info
3420 - Removed the quiet flag on some ssh calls which prevented debugging
3421   failures
3422 - Improved the N+1 failure messages in cluster verify by actually
3423   showing the memory values (needed and available)
3424 - Increased lock attempt timeouts so that when executing long operations
3425   (e.g. DRBD replace-disks) other jobs do not enter 'blocking acquire'
3426   too early and thus prevent the use of the 'fair' mechanism
3427 - Changed instance query data (``gnt-instance info``) to not acquire
3428   locks unless needed, thus allowing its use on locked instance if only
3429   static information is asked for
3430 - Improved behaviour with filesystems that do not support rename on an
3431   opened file
3432 - Fixed the behaviour of ``prealloc_wipe_disks`` cluster parameter which
3433   kept locks on all nodes during the wipe, which is unneeded
3434 - Fixed ``gnt-watcher`` handling of errors during hooks execution
3435 - Fixed bug in ``prealloc_wipe_disks`` with small disk sizes (less than
3436   10GiB) which caused the wipe to fail right at the end in some cases
3437 - Fixed master IP activation when doing master failover with no-voting
3438 - Fixed bug in ``gnt-node add --readd`` which allowed the re-adding of
3439   the master node itself
3440 - Fixed potential data-loss in under disk full conditions, where Ganeti
3441   wouldn't check correctly the return code and would consider
3442   partially-written files 'correct'
3443 - Fixed bug related to multiple VGs and DRBD disk replacing
3444 - Added new disk parameter ``metavg`` that allows placement of the meta
3445   device for DRBD in a different volume group
3446 - Fixed error handling in the node daemon when the system libc doesn't
3447   have major number 6 (i.e. if ``libc.so.6`` is not the actual libc)
3448 - Fixed lock release during replace-disks, which kept cluster-wide locks
3449   when doing disk replaces with an iallocator script
3450 - Added check for missing bridges in cluster verify
3451 - Handle EPIPE errors while writing to the terminal better, so that
3452   piping the output to e.g. ``less`` doesn't cause a backtrace
3453 - Fixed rare case where a ^C during Luxi calls could have been
3454   interpreted as server errors, instead of simply terminating
3455 - Fixed a race condition in LUGroupAssignNodes (``gnt-group
3456   assign-nodes``)
3457 - Added a few more parameters to the KVM hypervisor, allowing a second
3458   CDROM, custom disk type for CDROMs and a floppy image
3459 - Removed redundant message in instance rename when the name is given
3460   already as a FQDN
3461 - Added option to ``gnt-instance recreate-disks`` to allow creating the
3462   disks on new nodes, allowing recreation when the original instance
3463   nodes are completely gone
3464 - Added option when converting disk templates to DRBD to skip waiting
3465   for the resync, in order to make the instance available sooner
3466 - Added two new variables to the OS scripts environment (containing the
3467   instance's nodes)
3468 - Made the root_path and optional parameter for the xen-pvm hypervisor,
3469   to allow use of ``pvgrub`` as bootloader
3470 - Changed the instance memory modifications to only check out-of-memory
3471   conditions on memory increases, and turned the secondary node warnings
3472   into errors (they can still be overridden via ``--force``)
3473 - Fixed the handling of a corner case when the Python installation gets
3474   corrupted (e.g. a bad disk) while ganeti-noded is running and we try
3475   to execute a command that doesn't exist
3476 - Fixed a bug in ``gnt-instance move`` (LUInstanceMove) when the primary
3477   node of the instance returned failures during instance shutdown; this
3478   adds the option ``--ignore-consistency`` to gnt-instance move
3479
3480 And as usual, various improvements to the error messages, documentation
3481 and man pages.
3482
3483
3484 Version 2.4.1
3485 -------------
3486
3487 *(Released Wed, 09 Mar 2011)*
3488
3489 Emergency bug-fix release. ``tools/cfgupgrade`` was broken and overwrote
3490 the RAPI users file if run twice (even with ``--dry-run``).
3491
3492 The release fixes that bug (nothing else changed).
3493
3494
3495 Version 2.4.0
3496 -------------
3497
3498 *(Released Mon, 07 Mar 2011)*
3499
3500 Final 2.4.0 release. Just a few small fixes:
3501
3502 - Fixed RAPI node evacuate
3503 - Fixed the kvm-ifup script
3504 - Fixed internal error handling for special job cases
3505 - Updated man page to specify the escaping feature for options
3506
3507
3508 Version 2.4.0 rc3
3509 -----------------
3510
3511 *(Released Mon, 28 Feb 2011)*
3512
3513 A critical fix for the ``prealloc_wipe_disks`` feature: it is possible
3514 that this feature wiped the disks of the wrong instance, leading to loss
3515 of data.
3516
3517 Other changes:
3518
3519 - Fixed title of query field containing instance name
3520 - Expanded the glossary in the documentation
3521 - Fixed one unittest (internal issue)
3522
3523
3524 Version 2.4.0 rc2
3525 -----------------
3526
3527 *(Released Mon, 21 Feb 2011)*
3528
3529 A number of bug fixes plus just a couple functionality changes.
3530
3531 On the user-visible side, the ``gnt-* list`` command output has changed
3532 with respect to "special" field states. The current rc1 style of display
3533 can be re-enabled by passing a new ``--verbose`` (``-v``) flag, but in
3534 the default output mode special fields states are displayed as follows:
3535
3536 - Offline resource: ``*``
3537 - Unavailable/not applicable: ``-``
3538 - Data missing (RPC failure): ``?``
3539 - Unknown field: ``??``
3540
3541 Another user-visible change is the addition of ``--force-join`` to
3542 ``gnt-node add``.
3543
3544 As for bug fixes:
3545
3546 - ``tools/cluster-merge`` has seen many fixes and is now enabled again
3547 - Fixed regression in RAPI/instance reinstall where all parameters were
3548   required (instead of optional)
3549 - Fixed ``gnt-cluster repair-disk-sizes``, was broken since Ganeti 2.2
3550 - Fixed iallocator usage (offline nodes were not considered offline)
3551 - Fixed ``gnt-node list`` with respect to non-vm_capable nodes
3552 - Fixed hypervisor and OS parameter validation with respect to
3553   non-vm_capable nodes
3554 - Fixed ``gnt-cluster verify`` with respect to offline nodes (mostly
3555   cosmetic)
3556 - Fixed ``tools/listrunner`` with respect to agent-based usage
3557
3558
3559 Version 2.4.0 rc1
3560 -----------------
3561
3562 *(Released Fri,  4 Feb 2011)*
3563
3564 Many changes and fixes since the beta1 release. While there were some
3565 internal changes, the code has been mostly stabilised for the RC
3566 release.
3567
3568 Note: the dumb allocator was removed in this release, as it was not kept
3569 up-to-date with the IAllocator protocol changes. It is recommended to
3570 use the ``hail`` command from the ganeti-htools package.
3571
3572 Note: the 2.4 and up versions of Ganeti are not compatible with the
3573 0.2.x branch of ganeti-htools. You need to upgrade to
3574 ganeti-htools-0.3.0 (or later).
3575
3576 Regressions fixed from 2.3
3577 ~~~~~~~~~~~~~~~~~~~~~~~~~~
3578
3579 - Fixed the ``gnt-cluster verify-disks`` command
3580 - Made ``gnt-cluster verify-disks`` work in parallel (as opposed to
3581   serially on nodes)
3582 - Fixed disk adoption breakage
3583 - Fixed wrong headers in instance listing for field aliases
3584
3585 Other bugs fixed
3586 ~~~~~~~~~~~~~~~~
3587
3588 - Fixed corner case in KVM handling of NICs
3589 - Fixed many cases of wrong handling of non-vm_capable nodes
3590 - Fixed a bug where a missing instance symlink was not possible to
3591   recreate with any ``gnt-*`` command (now ``gnt-instance
3592   activate-disks`` does it)
3593 - Fixed the volume group name as reported by ``gnt-cluster
3594   verify-disks``
3595 - Increased timeouts for the import-export code, hopefully leading to
3596   fewer aborts due network or instance timeouts
3597 - Fixed bug in ``gnt-node list-storage``
3598 - Fixed bug where not all daemons were started on cluster
3599   initialisation, but only at the first watcher run
3600 - Fixed many bugs in the OOB implementation
3601 - Fixed watcher behaviour in presence of instances with offline
3602   secondaries
3603 - Fixed instance list output for instances running on the wrong node
3604 - a few fixes to the cluster-merge tool, but it still cannot merge
3605   multi-node groups (currently it is not recommended to use this tool)
3606
3607
3608 Improvements
3609 ~~~~~~~~~~~~
3610
3611 - Improved network configuration for the KVM hypervisor
3612 - Added e1000 as a supported NIC for Xen-HVM
3613 - Improved the lvmstrap tool to also be able to use partitions, as
3614   opposed to full disks
3615 - Improved speed of disk wiping (the cluster parameter
3616   ``prealloc_wipe_disks``, so that it has a low impact on the total time
3617   of instance creations
3618 - Added documentation for the OS parameters
3619 - Changed ``gnt-instance deactivate-disks`` so that it can work if the
3620   hypervisor is not responding
3621 - Added display of blacklisted and hidden OS information in
3622   ``gnt-cluster info``
3623 - Extended ``gnt-cluster verify`` to also validate hypervisor, backend,
3624   NIC and node parameters, which might create problems with currently
3625   invalid (but undetected) configuration files, but prevents validation
3626   failures when unrelated parameters are modified
3627 - Changed cluster initialisation to wait for the master daemon to become
3628   available
3629 - Expanded the RAPI interface:
3630
3631   - Added config redistribution resource
3632   - Added activation/deactivation of instance disks
3633   - Added export of console information
3634
3635 - Implemented log file reopening on SIGHUP, which allows using
3636   logrotate(8) for the Ganeti log files
3637 - Added a basic OOB helper script as an example
3638
3639
3640 Version 2.4.0 beta1
3641 -------------------
3642
3643 *(Released Fri, 14 Jan 2011)*
3644
3645 User-visible
3646 ~~~~~~~~~~~~
3647
3648 - Fixed timezone issues when formatting timestamps
3649 - Added support for node groups, available via ``gnt-group`` and other
3650   commands
3651 - Added out-of-band framework and management, see :doc:`design
3652   document <design-oob>`
3653 - Removed support for roman numbers from ``gnt-node list`` and
3654   ``gnt-instance list``.
3655 - Allowed modification of master network interface via ``gnt-cluster
3656   modify --master-netdev``
3657 - Accept offline secondaries while shutting down instance disks
3658 - Added ``blockdev_prefix`` parameter to Xen PVM and HVM hypervisors
3659 - Added support for multiple LVM volume groups
3660 - Avoid sorting nodes for ``gnt-node list`` if specific nodes are
3661   requested
3662 - Added commands to list available fields:
3663
3664   - ``gnt-node list-fields``
3665   - ``gnt-group list-fields``
3666   - ``gnt-instance list-fields``
3667
3668 - Updated documentation and man pages
3669
3670 Integration
3671 ~~~~~~~~~~~
3672
3673 - Moved ``rapi_users`` file into separate directory, now named
3674   ``.../ganeti/rapi/users``, ``cfgupgrade`` moves the file and creates a
3675   symlink
3676 - Added new tool for running commands on many machines,
3677   ``tools/ganeti-listrunner``
3678 - Implemented more verbose result in ``OpInstanceConsole`` opcode, also
3679   improving the ``gnt-instance console`` output
3680 - Allowed customisation of disk index separator at ``configure`` time
3681 - Export node group allocation policy to :doc:`iallocator <iallocator>`
3682 - Added support for non-partitioned md disks in ``lvmstrap``
3683 - Added script to gracefully power off KVM instances
3684 - Split ``utils`` module into smaller parts
3685 - Changed query operations to return more detailed information, e.g.
3686   whether an information is unavailable due to an offline node. To use
3687   this new functionality, the LUXI call ``Query`` must be used. Field
3688   information is now stored by the master daemon and can be retrieved
3689   using ``QueryFields``. Instances, nodes and groups can also be queried
3690   using the new opcodes ``OpQuery`` and ``OpQueryFields`` (not yet
3691   exposed via RAPI). The following commands make use of this
3692   infrastructure change:
3693
3694   - ``gnt-group list``
3695   - ``gnt-group list-fields``
3696   - ``gnt-node list``
3697   - ``gnt-node list-fields``
3698   - ``gnt-instance list``
3699   - ``gnt-instance list-fields``
3700   - ``gnt-debug locks``
3701
3702 Remote API
3703 ~~~~~~~~~~
3704
3705 - New RAPI resources (see :doc:`rapi`):
3706
3707   - ``/2/modify``
3708   - ``/2/groups``
3709   - ``/2/groups/[group_name]``
3710   - ``/2/groups/[group_name]/assign-nodes``
3711   - ``/2/groups/[group_name]/modify``
3712   - ``/2/groups/[group_name]/rename``
3713   - ``/2/instances/[instance_name]/disk/[disk_index]/grow``
3714
3715 - RAPI changes:
3716
3717   - Implemented ``no_install`` for instance creation
3718   - Implemented OS parameters for instance reinstallation, allowing
3719     use of special settings on reinstallation (e.g. for preserving data)
3720
3721 Misc
3722 ~~~~
3723
3724 - Added IPv6 support in import/export
3725 - Pause DRBD synchronization while wiping disks on instance creation
3726 - Updated unittests and QA scripts
3727 - Improved network parameters passed to KVM
3728 - Converted man pages from docbook to reStructuredText
3729
3730
3731 Version 2.3.1
3732 -------------
3733
3734 *(Released Mon, 20 Dec 2010)*
3735
3736 Released version 2.3.1~rc1 without any changes.
3737
3738
3739 Version 2.3.1 rc1
3740 -----------------
3741
3742 *(Released Wed, 1 Dec 2010)*
3743
3744 - impexpd: Disable OpenSSL compression in socat if possible (backport
3745   from master, commit e90739d625b, see :doc:`installation guide
3746   <install-quick>` for details)
3747 - Changed unittest coverage report to exclude test scripts
3748 - Added script to check version format
3749
3750
3751 Version 2.3.0
3752 -------------
3753
3754 *(Released Wed, 1 Dec 2010)*
3755
3756 Released version 2.3.0~rc1 without any changes.
3757
3758
3759 Version 2.3.0 rc1
3760 -----------------
3761
3762 *(Released Fri, 19 Nov 2010)*
3763
3764 A number of bugfixes and documentation updates:
3765
3766 - Update ganeti-os-interface documentation
3767 - Fixed a bug related to duplicate MACs or similar items which should be
3768   unique
3769 - Fix breakage in OS state modify
3770 - Reinstall instance: disallow offline secondaries (fixes bug related to
3771   OS changing but reinstall failing)
3772 - plus all the other fixes between 2.2.1 and 2.2.2
3773
3774
3775 Version 2.3.0 rc0
3776 -----------------
3777
3778 *(Released Tue, 2 Nov 2010)*
3779
3780 - Fixed clearing of the default iallocator using ``gnt-cluster modify``
3781 - Fixed master failover race with watcher
3782 - Fixed a bug in ``gnt-node modify`` which could lead to an inconsistent
3783   configuration
3784 - Accept previously stopped instance for export with instance removal
3785 - Simplify and extend the environment variables for instance OS scripts
3786 - Added new node flags, ``master_capable`` and ``vm_capable``
3787 - Added optional instance disk wiping prior during allocation. This is a
3788   cluster-wide option and can be set/modified using
3789   ``gnt-cluster {init,modify} --prealloc-wipe-disks``.
3790 - Added IPv6 support, see :doc:`design document <design-2.3>` and
3791   :doc:`install-quick`
3792 - Added a new watcher option (``--ignore-pause``)
3793 - Added option to ignore offline node on instance start/stop
3794   (``--ignore-offline``)
3795 - Allow overriding OS parameters with ``gnt-instance reinstall``
3796 - Added ability to change node's secondary IP address using ``gnt-node
3797   modify``
3798 - Implemented privilege separation for all daemons except
3799   ``ganeti-noded``, see ``configure`` options
3800 - Complain if an instance's disk is marked faulty in ``gnt-cluster
3801   verify``
3802 - Implemented job priorities (see ``ganeti(7)`` manpage)
3803 - Ignore failures while shutting down instances during failover from
3804   offline node
3805 - Exit daemon's bootstrap process only once daemon is ready
3806 - Export more information via ``LUInstanceQuery``/remote API
3807 - Improved documentation, QA and unittests
3808 - RAPI daemon now watches ``rapi_users`` all the time and doesn't need a
3809   restart if the file was created or changed
3810 - Added LUXI protocol version sent with each request and response,
3811   allowing detection of server/client mismatches
3812 - Moved the Python scripts among gnt-* and ganeti-* into modules
3813 - Moved all code related to setting up SSH to an external script,
3814   ``setup-ssh``
3815 - Infrastructure changes for node group support in future versions
3816
3817
3818 Version 2.2.2
3819 -------------
3820
3821 *(Released Fri, 19 Nov 2010)*
3822
3823 A few small bugs fixed, and some improvements to the build system:
3824
3825 - Fix documentation regarding conversion to drbd
3826 - Fix validation of parameters in cluster modify (``gnt-cluster modify
3827   -B``)
3828 - Fix error handling in node modify with multiple changes
3829 - Allow remote imports without checked names
3830
3831
3832 Version 2.2.1
3833 -------------
3834
3835 *(Released Tue, 19 Oct 2010)*
3836
3837 - Disable SSL session ID cache in RPC client
3838
3839
3840 Version 2.2.1 rc1
3841 -----------------
3842
3843 *(Released Thu, 14 Oct 2010)*
3844
3845 - Fix interaction between Curl/GnuTLS and the Python's HTTP server
3846   (thanks Apollon Oikonomopoulos!), finally allowing the use of Curl
3847   with GnuTLS
3848 - Fix problems with interaction between Curl and Python's HTTP server,
3849   resulting in increased speed in many RPC calls
3850 - Improve our release script to prevent breakage with older aclocal and
3851   Python 2.6
3852
3853
3854 Version 2.2.1 rc0
3855 -----------------
3856
3857 *(Released Thu, 7 Oct 2010)*
3858
3859 - Fixed issue 125, replace hardcoded "xenvg" in ``gnt-cluster`` with
3860   value retrieved from master
3861 - Added support for blacklisted or hidden OS definitions
3862 - Added simple lock monitor (accessible via (``gnt-debug locks``)
3863 - Added support for -mem-path in KVM hypervisor abstraction layer
3864 - Allow overriding instance parameters in tool for inter-cluster
3865   instance moves (``tools/move-instance``)
3866 - Improved opcode summaries (e.g. in ``gnt-job list``)
3867 - Improve consistency of OS listing by sorting it
3868 - Documentation updates
3869
3870
3871 Version 2.2.0.1
3872 ---------------
3873
3874 *(Released Fri, 8 Oct 2010)*
3875
3876 - Rebuild with a newer autotools version, to fix python 2.6 compatibility
3877
3878
3879 Version 2.2.0
3880 -------------
3881
3882 *(Released Mon, 4 Oct 2010)*
3883
3884 - Fixed regression in ``gnt-instance rename``
3885
3886
3887 Version 2.2.0 rc2
3888 -----------------
3889
3890 *(Released Wed, 22 Sep 2010)*
3891
3892 - Fixed OS_VARIANT variable for OS scripts
3893 - Fixed cluster tag operations via RAPI
3894 - Made ``setup-ssh`` exit with non-zero code if an error occurred
3895 - Disabled RAPI CA checks in watcher
3896
3897
3898 Version 2.2.0 rc1
3899 -----------------
3900
3901 *(Released Mon, 23 Aug 2010)*
3902
3903 - Support DRBD versions of the format "a.b.c.d"
3904 - Updated manpages
3905 - Re-introduce support for usage from multiple threads in RAPI client
3906 - Instance renames and modify via RAPI
3907 - Work around race condition between processing and archival in job
3908   queue
3909 - Mark opcodes following failed one as failed, too
3910 - Job field ``lock_status`` was removed due to difficulties making it
3911   work with the changed job queue in Ganeti 2.2; a better way to monitor
3912   locks is expected for a later 2.2.x release
3913 - Fixed dry-run behaviour with many commands
3914 - Support ``ssh-agent`` again when adding nodes
3915 - Many additional bugfixes
3916
3917
3918 Version 2.2.0 rc0
3919 -----------------
3920
3921 *(Released Fri, 30 Jul 2010)*
3922
3923 Important change: the internal RPC mechanism between Ganeti nodes has
3924 changed from using a home-grown http library (based on the Python base
3925 libraries) to use the PycURL library. This requires that PycURL is
3926 installed on nodes. Please note that on Debian/Ubuntu, PycURL is linked
3927 against GnuTLS by default. cURL's support for GnuTLS had known issues
3928 before cURL 7.21.0 and we recommend using the latest cURL release or
3929 linking against OpenSSL. Most other distributions already link PycURL
3930 and cURL against OpenSSL. The command::
3931
3932   python -c 'import pycurl; print pycurl.version'
3933
3934 can be used to determine the libraries PycURL and cURL are linked
3935 against.
3936
3937 Other significant changes:
3938
3939 - Rewrote much of the internals of the job queue, in order to achieve
3940   better parallelism; this decouples job query operations from the job
3941   processing, and it should allow much nicer behaviour of the master
3942   daemon under load, and it also has uncovered some long-standing bugs
3943   related to the job serialisation (now fixed)
3944 - Added a default iallocator setting to the cluster parameters,
3945   eliminating the need to always pass nodes or an iallocator for
3946   operations that require selection of new node(s)
3947 - Added experimental support for the LXC virtualization method
3948 - Added support for OS parameters, which allows the installation of
3949   instances to pass parameter to OS scripts in order to customise the
3950   instance
3951 - Added a hypervisor parameter controlling the migration type (live or
3952   non-live), since hypervisors have various levels of reliability; this
3953   has renamed the 'live' parameter to 'mode'
3954 - Added a cluster parameter ``reserved_lvs`` that denotes reserved
3955   logical volumes, meaning that cluster verify will ignore them and not
3956   flag their presence as errors
3957 - The watcher will now reset the error count for failed instances after
3958   8 hours, thus allowing self-healing if the problem that caused the
3959   instances to be down/fail to start has cleared in the meantime
3960 - Added a cluster parameter ``drbd_usermode_helper`` that makes Ganeti
3961   check for, and warn, if the drbd module parameter ``usermode_helper``
3962   is not consistent with the cluster-wide setting; this is needed to
3963   make diagnose easier of failed drbd creations
3964 - Started adding base IPv6 support, but this is not yet
3965   enabled/available for use
3966 - Rename operations (cluster, instance) will now return the new name,
3967   which is especially useful if a short name was passed in
3968 - Added support for instance migration in RAPI
3969 - Added a tool to pre-configure nodes for the SSH setup, before joining
3970   them to the cluster; this will allow in the future a simplified model
3971   for node joining (but not yet fully enabled in 2.2); this needs the
3972   paramiko python library
3973 - Fixed handling of name-resolving errors
3974 - Fixed consistency of job results on the error path
3975 - Fixed master-failover race condition when executed multiple times in
3976   sequence
3977 - Fixed many bugs related to the job queue (mostly introduced during the
3978   2.2 development cycle, so not all are impacting 2.1)
3979 - Fixed instance migration with missing disk symlinks
3980 - Fixed handling of unknown jobs in ``gnt-job archive``
3981 - And many other small fixes/improvements
3982
3983 Internal changes:
3984
3985 - Enhanced both the unittest and the QA coverage
3986 - Switched the opcode validation to a generic model, and extended the
3987   validation to all opcode parameters
3988 - Changed more parts of the code that write shell scripts to use the
3989   same class for this
3990 - Switched the master daemon to use the asyncore library for the Luxi
3991   server endpoint
3992
3993
3994 Version 2.2.0 beta0
3995 -------------------
3996
3997 *(Released Thu, 17 Jun 2010)*
3998
3999 - Added tool (``move-instance``) and infrastructure to move instances
4000   between separate clusters (see :doc:`separate documentation
4001   <move-instance>` and :doc:`design document <design-2.2>`)
4002 - Added per-request RPC timeout
4003 - RAPI now requires a Content-Type header for requests with a body (e.g.
4004   ``PUT`` or ``POST``) which must be set to ``application/json`` (see
4005   :rfc:`2616` (HTTP/1.1), section 7.2.1)
4006 - ``ganeti-watcher`` attempts to restart ``ganeti-rapi`` if RAPI is not
4007   reachable
4008 - Implemented initial support for running Ganeti daemons as separate
4009   users, see configure-time flags ``--with-user-prefix`` and
4010   ``--with-group-prefix`` (only ``ganeti-rapi`` is supported at this
4011   time)
4012 - Instances can be removed after export (``gnt-backup export