mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-31 18:15:25 +00:00
util: storage: adapt to changes in JSON format for sheepdog
Since qemu 2.9 the options changed from a monolithic string into fine grained options for the json pseudo-protocol object.
This commit is contained in:
parent
ea2c418ac3
commit
b16133b114
@ -3061,6 +3061,8 @@ virStorageSourceParseBackingJSONSheepdog(virStorageSourcePtr src,
|
|||||||
int opaque ATTRIBUTE_UNUSED)
|
int opaque ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
const char *filename;
|
const char *filename;
|
||||||
|
const char *vdi = virJSONValueObjectGetString(json, "vdi");
|
||||||
|
virJSONValuePtr server = virJSONValueObjectGetObject(json, "server");
|
||||||
|
|
||||||
/* legacy URI based syntax passed via 'filename' option */
|
/* legacy URI based syntax passed via 'filename' option */
|
||||||
if ((filename = virJSONValueObjectGetString(json, "filename"))) {
|
if ((filename = virJSONValueObjectGetString(json, "filename"))) {
|
||||||
@ -3069,15 +3071,33 @@ virStorageSourceParseBackingJSONSheepdog(virStorageSourcePtr src,
|
|||||||
VIR_STORAGE_NET_PROTOCOL_SHEEPDOG);
|
VIR_STORAGE_NET_PROTOCOL_SHEEPDOG);
|
||||||
|
|
||||||
/* libvirt doesn't implement a parser for the legacy non-URI syntax */
|
/* libvirt doesn't implement a parser for the legacy non-URI syntax */
|
||||||
}
|
|
||||||
|
|
||||||
/* Sheepdog currently supports only URI and legacy syntax passed in as filename */
|
|
||||||
virReportError(VIR_ERR_INVALID_ARG, "%s",
|
virReportError(VIR_ERR_INVALID_ARG, "%s",
|
||||||
_("missing sheepdog URI in JSON backing volume definition"));
|
_("missing sheepdog URI in JSON backing volume definition"));
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
src->type = VIR_STORAGE_TYPE_NETWORK;
|
||||||
|
src->protocol = VIR_STORAGE_NET_PROTOCOL_SHEEPDOG;
|
||||||
|
|
||||||
|
if (!vdi) {
|
||||||
|
virReportError(VIR_ERR_INVALID_ARG, "%s", _("missing sheepdog vdi name"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (VIR_STRDUP(src->path, vdi) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (VIR_ALLOC(src->hosts) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
src->nhosts = 1;
|
||||||
|
|
||||||
|
if (virStorageSourceParseBackingJSONSocketAddress(src->hosts, server) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virStorageSourceParseBackingJSONSSH(virStorageSourcePtr src,
|
virStorageSourceParseBackingJSONSSH(virStorageSourcePtr src,
|
||||||
|
@ -1562,6 +1562,17 @@ mymain(void)
|
|||||||
"<source protocol='iscsi' name='iqn.2016-12.com.virttest:emulated-iscsi-noauth.target/6'>\n"
|
"<source protocol='iscsi' name='iqn.2016-12.com.virttest:emulated-iscsi-noauth.target/6'>\n"
|
||||||
" <host name='test.org' port='1234'/>\n"
|
" <host name='test.org' port='1234'/>\n"
|
||||||
"</source>\n");
|
"</source>\n");
|
||||||
|
TEST_BACKING_PARSE("json:{\"file\":{\"driver\":\"sheepdog\","
|
||||||
|
"\"vdi\":\"test\","
|
||||||
|
"\"server\":{ \"type\":\"inet\","
|
||||||
|
"\"host\":\"example.com\","
|
||||||
|
"\"port\":\"321\""
|
||||||
|
"}"
|
||||||
|
"}"
|
||||||
|
"}",
|
||||||
|
"<source protocol='sheepdog' name='test'>\n"
|
||||||
|
" <host name='example.com' port='321'/>\n"
|
||||||
|
"</source>\n");
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
/* Final cleanup */
|
/* Final cleanup */
|
||||||
|
Loading…
Reference in New Issue
Block a user