I believe the bug lies in libguestfs.
Taking out the commands being sent to QEMU and using qemu-img info I can
recreate the error:
# qemu-img info
"rbd:images/CentOS-7-x86_64-GenericCloud-1901:mon_host=[fd00::cefc:1]\:6789:auth_supported=none"
qemu-img: Could not open
'rbd:images/CentOS-7-x86_64-GenericCloud-1901:mon_host=[fd00::cefc:1]\:6789:auth_supported=none':
invalid conf option :cefc:1]:6789:auth_supported: No such file or directory
When escaping the : in the v6 address (just like is done with the port's
: ) the command works as expected.
# qemu-img info
"rbd:images/CentOS-7-x86_64-GenericCloud-1901:mon_host=[fd00\:\:cefc\:1]\:6789:auth_supported=none"
image: json:{"driver": "raw", "file": {"pool": "images", "image":
"CentOS-7-x86_64-GenericCloud-1901", "driver": "rbd", "=keyvalue-pairs":
"[\"mon_host\", \"[fd00::cefc:1]:6789\", \"auth_supported\", \"none\"]"}}
file format: raw
virtual size: 8.0G (8589934592 bytes)
disk size: unavailable
cluster_size: 4194304
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
snap snap 8.0G 1969-12-31 18:00:00 00:00:00.000
I don't really know much about C but I'm going to try to hack together a
basic fix in the code to escape the colons in v6 addresses and if I can
get it clean enough I'll submit a PR otherwise a bug report.
On 4/1/19 9:30 AM, Richard W.M. Jones wrote:
On Mon, Apr 01, 2019 at 08:45:48AM -0500, Jonathan Wright wrote:
Unfortunately I do need to use the address explicitly as opposed to
hostnames because the source of the data fed here is Ceph's monmap
which returns the addresses explicitly.
I've tried all the common ways to escape the : in the v6 address to
no avail. I definitely agree that the problem looks to be it
parsing the colons as if the port comes next and then everything
after that is args.
Should I file a bug report? There doesn't seem to be any way to
prevent the : from getting parsed incorrectly.
Is it a bug in qemu? Anyway yes if it's a bug please file
a bug report about it.
Rich.
On 3/30/19 2:50 AM, Richard W.M. Jones wrote:
On Fri, Mar 29, 2019 at 06:17:17PM -0500, Jonathan Wright wrote:
I have scoured the web and can't find anything on the topic: Is IPv6
supported for remote image targets?
It definitely should work, although I don't know if anyone has tried
using the address explicitly (rather than a hostname which resolves to
an AAAA record).
For example:
guestfish --format=raw --ro -a
rbd://[fd00::cefc:1]:6789/images/CentOS-7-x86_64-GenericCloud-1901
Does not work citing the following:
The important lines are these. Firstly guestfish parses the URL into
an actual libguestfs API call, which looks fine to me:
libguestfs: trace: add_drive
"images/CentOS-7-x86_64-GenericCloud-1901" "readonly:true"
"format:raw" "protocol:rbd" "server:tcp:[fd00::cefc:1]:6789"
This is probably where it goes wrong:
"/tmp/libguestfs3pGMi6/overlay1.qcow2" "qcow2" -1
"backingfile:rbd:images/CentOS-7-x86_64-GenericCloud-1901:mon_host=[fd00::cefc:1]\:6789:auth_supported=none"
"backingformat:raw"
libguestfs: command: run: \ -o
backing_file=rbd:images/CentOS-7-x86_64-GenericCloud-1901:mon_host=[fd00::cefc:1]\:6789:auth_supported=none,backing_fmt=raw
libguestfs: command: run: \ /tmp/libguestfs3pGMi6/overlay1.qcow2
qemu-img: /tmp/libguestfs3pGMi6/overlay1.qcow2: invalid conf option
:cefc:1]:6789:auth_supported: No such file or directory
Could not open backing image to determine size.
The code in libguestfs is supposed to turn the guestfs_add_drive
‘servers’ parameter into a Ceph URL for qemu:
https://github.com/libguestfs/libguestfs/blob/f79129b8dc92470e3a5597daf53c84038bd6859e/lib/qemu.c#L905
and I suppose this is being done wrong somehow (I don't have a Ceph
server to test).
At a guess I would say that it seems as if ':' characters must be
quoted somehow (backslash?) because they are also used to separate the
address and port number.
Rich.
--
Jonathan Wright
KnownHost, LLC
https://www.knownhost.com
--
Jonathan Wright
KnownHost, LLC
https://www.knownhost.com
_______________________________________________
Libguestfs mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libguestfs