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