[Pkg-ganeti-devel] Bug#742699: ganeti: ExtStorage Interface broken in 2.10

Joerg Jaspert joerg at debian.org
Wed Mar 26 13:47:00 UTC 2014


Package: ganeti
Version: 2.10.1-1
Severity: important

Dear Maintainer,

   * What led up to the situation?

Upgrade to 2.10.1-1

   * What was the outcome of this action?

Ganeti stops working (with extstorage).

   * What outcome did you expect instead?

It works.

And in a few more words: Ganeti 2.10 has broken extstorage support, it
does no longer accept any parameters for it. Manpage says it should,
extstorage provider do need it, but the validation code says "no way
with me".

Log to show how I got that opinion:

-> Start an instance, add one disk with an external provider and one or
   more parameters. Without any parameters ganeti 2.10 lets it fly by,
   but the extstorage does need params and the interface specification
   (and all manpages) allow it.

$ gnt-instance add --disk-template ext --disk=0:size=15G,provider=3par,param1="full" --os-type debootstrap+default --hypervisor-parameters kvm:initrd_path=,kernel_path= --net 0:link=cmstest lintest42

2014-03-26 14:28:58,937: ganeti-masterd pid=4354/Jq8/Job41095 INFO Op 1/1: opcode INSTANCE_CREATE(lintest42) waiting for locks
2014-03-26 14:28:58,939: ganeti-masterd pid=4354/Jq8/Job41095/I_CREATE ERROR OpCode OP_INSTANCE_CREATE, parameter disks, has invalid type <type 'list'>/value '[{'size': 15360, 'param1': 'full', 'provider': '3par'}]' expecting type List of (Dictionary with keys of (OneOf name, vg, adopt, spindles, mode, provider, metavg, size) and values of (NonEmptyString or Integer) [Disk parameters])
2014-03-26 14:28:58,939: ganeti-masterd pid=4354/ClientReq2 INFO Received job poll request for 41095
2014-03-26 14:28:58,939: ganeti-masterd pid=4354/Jq8/Job41095 ERROR Op 1/1: Caught exception in INSTANCE_CREATE(lintest42)
Traceback (most recent call last):
  File "/usr/share/ganeti/2.10/ganeti/jqueue.py", line 1121, in _ExecOpCodeUnlocked
    timeout=timeout)
  File "/usr/share/ganeti/2.10/ganeti/jqueue.py", line 1432, in _WrapExecOpCode
    return execop_fn(op, *args, **kwargs)
  File "/usr/share/ganeti/2.10/ganeti/mcpu.py", line 528, in ExecOpCode
    lu = lu_class(self, op, self.context, self.rpc)
  File "/usr/share/ganeti/2.10/ganeti/cmdlib/base.py", line 122, in __init__
    self.op.Validate(True)
  File "/usr/share/ganeti/2.10/ganeti/opcodes_base.py", line 247, in Validate
    errors.ECODE_INVAL)
OpPrereqError: ("Parameter 'OP_INSTANCE_CREATE.disks' fails validation", 'wrong_input')
2014-03-26 14:28:58,949: ganeti-masterd pid=4354/Jq8/Job41095 INFO Finished job 41095, status = error

-> One can see it breaks on the params.

Now, Downgrade to ganeti 2.9.5-1:

-> Run the same again:

# gnt-instance add --disk-template ext --disk=0:size=15G,provider=3par,param1="full" --os-type debootstrap+default --hypervisor-parameters kvm:initrd_path=,kernel_path= --net 0:link=cmstest lintest42

-> And yay, ganeti does what we want.

Wed Mar 26 14:39:46 2014  - INFO: Resolved given name 'lintest42' to 'lintest42.domain'
Wed Mar 26 14:39:49 2014  - INFO: Selected nodes for instance lintest42.domain via iallocator hail: bl31c02.domain
Wed Mar 26 14:39:50 2014 * disk 0, size 15.0G
Wed Mar 26 14:39:50 2014 * creating instance disks...
[...]

-- 
bye Joerg



More information about the Pkg-ganeti-devel mailing list