diff --git a/INSTALL b/INSTALL index 23488484e78540c81ed286effead89c889025d04..e739a4eae98c50c746c36fc23d233a7e966f19fc 100644 --- a/INSTALL +++ b/INSTALL @@ -30,6 +30,9 @@ Before installing, please verify that you have the following programs: - `pyparsing Python module <http://pyparsing.wikispaces.com/>`_ - `pyinotify Python module <http://trac.dbzteam.org/pyinotify/>`_ - `PycURL Python module <http://pycurl.sourceforge.net/>`_ +- `ctypes Python module + <http://starship.python.net/crew/theller/ctypes/>`_, if running on + python 2.4 (optional, used for node daemon memory locking) - `socat <http://www.dest-unreach.org/socat/>`_ These programs are supplied as part of most Linux distributions, so diff --git a/NEWS b/NEWS index b6cd1fdb98d422d63bcba20076f246f9ee41ea58..756a8623c0954fc90e7ad201e0af8307ec95d4c8 100644 --- a/NEWS +++ b/NEWS @@ -30,6 +30,24 @@ Version 2.2.0 beta 0 ``EXP_SIZE_FD`` +Version 2.1.5 +------------- + +*(Released Thu, 01 Jul 2010)* + +A small bugfix release: + - Fix disk adoption: broken by strict --disk option checking in 2.1.4 + - Fix batch-create: broken in the whole 2.1 series due to a lookup on + a non-existing option + - Fix instance create: the --force-variant option was ignored + - Improve pylint 0.21 compatibility and warnings with Python 2.6 + - Fix modify node storage with non-FQDN arguments + - Fix RAPI client to authenticate under Python 2.6 when used + for more than 5 requests needing authentication + - Fix gnt-instance modify -t (storage) giving a wrong error message + when converting a non-shutdown drbd instance to plain + + Version 2.1.4 ------------- diff --git a/lib/cli.py b/lib/cli.py index d084c9c32b49e1809beda296c4aa42eee69ab9c6..c737044cdc987722724d75c2a43dbb2fdbb6f772 100644 --- a/lib/cli.py +++ b/lib/cli.py @@ -1810,6 +1810,7 @@ def GenericInstanceCreate(mode, opts, args): if mode == constants.INSTANCE_CREATE: start = opts.start os_type = opts.os + force_variant = opts.force_variant src_node = None src_path = None no_install = opts.no_install @@ -1817,6 +1818,7 @@ def GenericInstanceCreate(mode, opts, args): elif mode == constants.INSTANCE_IMPORT: start = False os_type = None + force_variant = False src_node = opts.src_node src_path = opts.src_dir no_install = None @@ -1842,6 +1844,7 @@ def GenericInstanceCreate(mode, opts, args): mode=mode, start=start, os_type=os_type, + force_variant=force_variant, src_node=src_node, src_path=src_path, no_install=no_install, diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 7f5f3d529754d67df3f51e09ed5a4507edba3d03..4dfe9f99ffc837b63369253dcdd5a5498d32dce5 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -8649,13 +8649,13 @@ class LUSetInstanceParams(LogicalUnit): " %s to %s" % (instance.disk_template, self.op.disk_template), errors.ECODE_INVAL) + _CheckInstanceDown(self, instance, "cannot change disk template") if self.op.disk_template in constants.DTS_NET_MIRROR: _CheckNodeOnline(self, self.op.remote_node) _CheckNodeNotDrained(self, self.op.remote_node) disks = [{"size": d.size} for d in instance.disks] required = _ComputeDiskSize(self.op.disk_template, disks) _CheckNodesFreeDisk(self, [self.op.remote_node], required) - _CheckInstanceDown(self, instance, "cannot change disk template") # hvparams processing if self.op.hvparams: diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index b31f78c5b10300c3779432e0cb8fb53814347522..777423ddb408076d659f467339b4ba5634e0b318 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -355,7 +355,9 @@ def main(): instance = RunTest(func, pnode, snode) RunCommonInstanceTests(instance) if qa_config.TestEnabled('instance-convert-disk'): + RunTest(qa_instance.TestInstanceShutdown, instance) RunTest(qa_instance.TestInstanceConvertDisk, instance, snode) + RunTest(qa_instance.TestInstanceStartup, instance) RunExportImportTests(instance, pnode) RunHardwareFailureTests(instance, pnode, snode) RunTest(qa_instance.TestInstanceRemove, instance) diff --git a/qa/qa-sample.json b/qa/qa-sample.json index 05f36ec184bdcb8e976a9f57506fb022d3040711..a3c20706a73d0a445b965f7b6a9745a3efdb6062 100644 --- a/qa/qa-sample.json +++ b/qa/qa-sample.json @@ -6,9 +6,6 @@ "os": "debian-etch", "mem": "512M", - "rapi-user": "foobar", - "rapi-pass": "barfoo", - "# Lists of disk sizes": null, "disk": ["1G", "512M"], "disk-growth": ["2G", "768M"], diff --git a/qa/qa_instance.py b/qa/qa_instance.py index 1b3b12711a284029a6a253721861846f79a47a6f..6478b9043b8d47d740a6f0bcb3ef0de62714ffc2 100644 --- a/qa/qa_instance.py +++ b/qa/qa_instance.py @@ -215,7 +215,8 @@ def TestInstanceConvertDisk(instance, snode): cmd = ['gnt-instance', 'modify', '-t', 'plain', instance['name']] AssertEqual(StartSSH(master['primary'], utils.ShellQuoteArgs(cmd)).wait(), 0) - cmd = ['gnt-instance', 'modify', '-t', 'drbd', '-n', snode, instance['name']] + cmd = ['gnt-instance', 'modify', '-t', 'drbd', '-n', snode['primary'], + instance['name']] AssertEqual(StartSSH(master['primary'], utils.ShellQuoteArgs(cmd)).wait(), 0) diff --git a/scripts/gnt-instance b/scripts/gnt-instance index 1e3dcf87fab05106b6102b1f230c35cdf24139fa..6e2e84f84834da14f14078ca52021196f377c9b5 100755 --- a/scripts/gnt-instance +++ b/scripts/gnt-instance @@ -387,6 +387,7 @@ def BatchCreate(opts, args): "hypervisor": None, "hvparams": {}, "file_storage_dir": None, + "force_variant": False, "file_driver": 'loop'} def _PopulateWithDefaults(spec): @@ -478,7 +479,7 @@ def BatchCreate(opts, args): disk_template=specs['template'], mode=constants.INSTANCE_CREATE, os_type=specs['os'], - force_variant=opts.force_variant, + force_variant=specs["force_variant"], pnode=specs['primary_node'], snode=specs['secondary_node'], nics=tmp_nics,