diff --git a/NEWS b/NEWS index 7901c3e20b89ac8a62b74b2eeda4abba29bbb4e0..ef31fda6d7405234addb3de5835e51951a3b5dee 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,35 @@ Version 2.5.0 beta1 "link" instead. +Version 2.4.0 +------------- + +*(Released Mon, 07 Mar 2011)* + +Final 2.4.0 release. Just a few small fixes: + +- Fixed RAPI node evacuate +- Fixed the kvm-ifup script +- Fixed internal error handling for special job cases +- Updated man page to specify the escaping feature for options + + +Version 2.4.0 rc3 +----------------- + +*(Released Mon, 28 Feb 2011)* + +A critical fix for the ``prealloc_wipe_disks`` feature: it is possible +that this feature wiped the disks of the wrong instance, leading to loss +of data. + +Other changes: + +- Fixed title of query field containing instance name +- Expanded the glossary in the documentation +- Fixed one unittest (internal issue) + + Version 2.4.0 rc2 ----------------- @@ -23,14 +52,14 @@ Version 2.4.0 rc2 A number of bug fixes plus just a couple functionality changes. On the user-visible side, the ``gnt-* list`` command output has changed -with respect to βspecialβ field states. The current rc1 style of display -can be re-enabled by passing a new ``-v, --verbose`` flag, but in the -default output mode special fields are displayed as follows: +with respect to "special" field states. The current rc1 style of display +can be re-enabled by passing a new ``--verbose`` (``-v``) flag, but in +the default output mode special fields states are displayed as follows: -- offline field: ``*`` -- unavailable/not applicable: ``-`` -- data missing (RPC failure): ``?`` -- unknown field: ``??`` +- Offline resource: ``*`` +- Unavailable/not applicable: ``-`` +- Data missing (RPC failure): ``?`` +- Unknown field: ``??`` Another user-visible change is the addition of ``--force-join`` to ``gnt-node add``. @@ -38,16 +67,16 @@ Another user-visible change is the addition of ``--force-join`` to As for bug fixes: - ``tools/cluster-merge`` has seen many fixes and is now enabled again -- fixed regression in RAPI/instance reinstall where all parameters were +- Fixed regression in RAPI/instance reinstall where all parameters were required (instead of optional) -- fixed ``gnt-cluster repair-disk-sizes``, was broken since Ganeti 2.2 -- fixed iallocator usage (offline nodes were not considered offline) -- fixed ``gnt-node list`` with respect to non-vm_capable nodes -- fixed hypervisor and OS parameter validation with respect to +- Fixed ``gnt-cluster repair-disk-sizes``, was broken since Ganeti 2.2 +- Fixed iallocator usage (offline nodes were not considered offline) +- Fixed ``gnt-node list`` with respect to non-vm_capable nodes +- Fixed hypervisor and OS parameter validation with respect to non-vm_capable nodes -- fixed ``gnt-cluster verify`` with respect to offline nodes (mostly +- Fixed ``gnt-cluster verify`` with respect to offline nodes (mostly cosmetic) -- fixed ``tools/listrunner`` with respect to agent-based usage +- Fixed ``tools/listrunner`` with respect to agent-based usage Version 2.4.0 rc1 @@ -165,7 +194,7 @@ Integration ~~~~~~~~~~~ - Moved ``rapi_users`` file into separate directory, now named - ``β¦/ganeti/rapi/users``, ``cfgupgrade`` moves the file and creates a + ``.../ganeti/rapi/users``, ``cfgupgrade`` moves the file and creates a symlink - Added new tool for running commands on many machines, ``tools/ganeti-listrunner`` @@ -350,7 +379,7 @@ Version 2.2.1 rc0 *(Released Thu, 7 Oct 2010)* -- Fixed issue 125, replace hardcoded βxenvgβ in ``gnt-cluster`` with +- Fixed issue 125, replace hardcoded "xenvg" in ``gnt-cluster`` with value retrieved from master - Added support for blacklisted or hidden OS definitions - Added simple lock monitor (accessible via (``gnt-debug locks``) @@ -524,7 +553,7 @@ Some more bugfixes. Unless critical bugs occur, this will be the last - Fix case of MAC special-values - Fix mac checker regex -- backend: Fix typo causing βout of rangeβ error +- backend: Fix typo causing "out of range" error - Add missing --units in gnt-instance list man page @@ -821,7 +850,7 @@ Bug fixes directory (e.g. read-only file-system where we can't open the files read-write, etc.) - Fixed the behaviour of gnt-node modify for master candidate demotion; - now it either aborts cleanly or, if given the new βauto_promoteβ + now it either aborts cleanly or, if given the new "auto_promote" parameter, will automatically promote other nodes as needed - Fixed compatibility with (unreleased yet) Python 2.6.5 that would completely prevent Ganeti from working @@ -850,7 +879,7 @@ Bug fixes New features ~~~~~~~~~~~~ -- Added an βearly_releaseβ more for instance replace disks and node +- Added an "early_release" more for instance replace disks and node evacuate, where we release locks earlier and thus allow higher parallelism within the cluster - Added watcher hooks, intended to allow the watcher to restart other diff --git a/configure.ac b/configure.ac index e08864efc3742a759c3968b10e0ae9dede3ea771..6713ea1844b76ed04d4d9d078fd1edc566c521a5 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ m4_define([gnt_version_major], [2]) m4_define([gnt_version_minor], [4]) m4_define([gnt_version_revision], [0]) -m4_define([gnt_version_suffix], [~rc2]) +m4_define([gnt_version_suffix], []) m4_define([gnt_version_full], m4_format([%d.%d.%d%s], gnt_version_major, gnt_version_minor, diff --git a/doc/glossary.rst b/doc/glossary.rst index c771bff8e73e259e5f6c3101de7d43a887d0393d..a7f905dd985a07342c47a90013fc5fc5c13c1988 100644 --- a/doc/glossary.rst +++ b/doc/glossary.rst @@ -6,6 +6,11 @@ Glossary .. glossary:: + BE Parameter + BE stands for Backend. BE parameters are hypervisor-independent + instance parameters such as the amount of RAM/virtual CPUs it has + been allocated. + HVM Hardware virtualization mode, where the virtual machine is oblivious to the fact that's being virtualized and all the @@ -15,6 +20,10 @@ Glossary The code associated with an OpCode, e.g. the code that implements the startup of an instance. + LUXI + Local UniX Interface. The IPC method over unix sockets used between + the cli tools and the master daemon. + OpCode A data structure encapsulating a basic cluster operation; for example, start instance, add instance, etc. diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 60cf6ee666ca664cb250f4f1cd5b069721517d08..29ed69a11cbb289733d2d972d33c18462480a6b5 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -6697,6 +6697,10 @@ def _WipeDisks(lu, instance): """ node = instance.primary_node + + for device in instance.disks: + lu.cfg.SetDiskID(device, node) + logging.info("Pause sync of instance %s disks", instance.name) result = lu.rpc.call_blockdev_pause_resume_sync(node, instance.disks, True) @@ -6708,7 +6712,8 @@ def _WipeDisks(lu, instance): try: for idx, device in enumerate(instance.disks): lu.LogInfo("* Wiping disk %d", idx) - logging.info("Wiping disk %d for instance %s", idx, instance.name) + logging.info("Wiping disk %d for instance %s, node %s", + idx, instance.name, node) # The wipe size is MIN_WIPE_CHUNK_PERCENT % of the instance disk but # MAX_WIPE_CHUNK at max diff --git a/lib/constants.py b/lib/constants.py index 31008f50afb45487f42308f9cd127129429878b2..033de03c4d7beec7d90ddf4915941769103fb21b 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -202,7 +202,7 @@ DEV_CONSOLE = "/dev/console" PROC_MOUNTS = "/proc/mounts" -# luxi related constants +# Local UniX Interface related constants LUXI_EOM = "\3" LUXI_VERSION = CONFIG_VERSION @@ -661,7 +661,7 @@ HVS_PARAMETER_TYPES = { HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys()) -# BE parameter names +# Backend parameter names BE_MEMORY = "memory" BE_VCPUS = "vcpus" BE_AUTO_BALANCE = "auto_balance" @@ -1024,7 +1024,7 @@ QR_GROUP = "group" #: List of resources which can be queried using L{opcodes.OpQuery} QR_OP_QUERY = frozenset([QR_INSTANCE, QR_NODE, QR_GROUP]) -#: List of resources which can be queried using LUXI +#: List of resources which can be queried using Local UniX Interface QR_OP_LUXI = QR_OP_QUERY.union([ QR_LOCK, ]) diff --git a/lib/mcpu.py b/lib/mcpu.py index 7210178d70234cadbfbc57747af38a5249363893..c40c1a2510c781a3d65621061061e6ee78a768f6 100644 --- a/lib/mcpu.py +++ b/lib/mcpu.py @@ -401,8 +401,12 @@ class Processor(object): self.Log(" - INFO: %s" % message) def GetECId(self): + """Returns the current execution context ID. + + """ if not self._ec_id: - errors.ProgrammerError("Tried to use execution context id when not set") + raise errors.ProgrammerError("Tried to use execution context id when" + " not set") return self._ec_id diff --git a/lib/objects.py b/lib/objects.py index 50dfe4d7921977eef986fa06b0b284d1fd2b7cb4..ef993495e187607e258bbfd6cfc44352b2b67b95 100644 --- a/lib/objects.py +++ b/lib/objects.py @@ -1124,7 +1124,7 @@ class Cluster(TaggableObject): if self.modify_ssh_setup is None: self.modify_ssh_setup = True - # default_bridge is no longer used it 2.1. The slot is left there to + # default_bridge is no longer used in 2.1. The slot is left there to # support auto-upgrading. It can be removed once we decide to deprecate # upgrading straight from 2.0. if self.default_bridge is not None: diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index c3afff412bd67e4f43a617b7fc610b9c52e976c9..ac4c3fa5c8980b5cb67d7f32fd559a05b39cba32 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -431,7 +431,7 @@ class R_2_nodes_name_evacuate(baserlib.R_Generic): result = cli.PollJob(job_id, cl, feedback_fn=baserlib.FeedbackFn) jobs = [] - for iname, node in result: + for iname, node in result[0]: if dry_run: jid = None else: diff --git a/man/ganeti.rst b/man/ganeti.rst index a012231406583669a5ee0a7f6014a949811b32ec..52721d491f8d56248c9525f00174e0e50e5a8f3c 100644 --- a/man/ganeti.rst +++ b/man/ganeti.rst @@ -158,8 +158,11 @@ error stopped during the job execution. -Common options --------------- +Common command line features +---------------------------- + +Options +~~~~~~~ Many Ganeti commands provide the following options. The availability for a certain command can be checked by calling the @@ -173,15 +176,8 @@ would succeed. The option ``--priority`` sets the priority for opcodes submitted by the command. - -Common daemon functionality ---------------------------- - -All Ganeti daemons re-open the log file(s) when sent a SIGHUP signal. -**logrotate**(8) can be used to rotate Ganeti's log files. - -Common field formatting ------------------------ +Field formatting +---------------- Multiple ganeti commands use the same framework for tabular listing of resources (e.g. **gnt-instance list**, **gnt-node list**, **gnt-group @@ -214,3 +210,22 @@ verbose mode): are using a field that the running Ganeti master daemon doesn't know. This result is persistent, re-running the command won't change it. + +Key-value parameters +~~~~~~~~~~~~~~~~~~~~ + +Multiple options take parameters that are of the form +``key=value,key=value,...`` or ``category:key=value,...``. Examples +are the hypervisor parameters, backend parameters, etc. For these, +it's possible to use values that contain commas by escaping with via a +backslash (which needs two if not single-quoted, due to shell +behaviour):: + + # gnt-instance modify -H kernel_path=an\\,example instance1 + # gnt-instance modify -H kernel_path='an\,example' instance1 + +Common daemon functionality +--------------------------- + +All Ganeti daemons re-open the log file(s) when sent a SIGHUP signal. +**logrotate**(8) can be used to rotate Ganeti's log files. diff --git a/tools/kvm-ifup.in b/tools/kvm-ifup.in index 364d3e60dbb697b9bfc5343a6bf23a1e6f62dae0..370040c83324949d9c964479b2f913d02a37a96b 100644 --- a/tools/kvm-ifup.in +++ b/tools/kvm-ifup.in @@ -34,7 +34,7 @@ fi ip link set $INTERFACE up -if [ "$MODE" == "bridged" ]; then +if [ "$MODE" = "bridged" ]; then # Connect the interface to the bridge brctl addif $BRIDGE $INTERFACE else