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