mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
util: storage: Parse 'lun' for iSCSI protocol from JSON as string or number
While the QEMU QAPI schema describes 'lun' as a number, the code dealing with JSON strings does not strictly adhere to this schema and thus formats the number back as a string. Use the new helper to retrieve both possibilities. Note that the formatting code is okay and qemu will accept it as an int. Tweak also one of the test strings to verify that both formats work with libvirt. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1540290
This commit is contained in:
parent
d3da8013cc
commit
f46d6e22f2
@ -2976,10 +2976,9 @@ virStorageSourceParseBackingJSONiSCSI(virStorageSourcePtr src,
|
||||
const char *transport = virJSONValueObjectGetString(json, "transport");
|
||||
const char *portal = virJSONValueObjectGetString(json, "portal");
|
||||
const char *target = virJSONValueObjectGetString(json, "target");
|
||||
const char *lun = virJSONValueObjectGetStringOrNumber(json, "lun");
|
||||
const char *uri;
|
||||
char *port;
|
||||
unsigned int lun = 0;
|
||||
char *fulltarget = NULL;
|
||||
int ret = -1;
|
||||
|
||||
/* legacy URI based syntax passed via 'filename' option */
|
||||
@ -2990,6 +2989,9 @@ virStorageSourceParseBackingJSONiSCSI(virStorageSourcePtr src,
|
||||
src->type = VIR_STORAGE_TYPE_NETWORK;
|
||||
src->protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI;
|
||||
|
||||
if (!lun)
|
||||
lun = "0";
|
||||
|
||||
if (VIR_ALLOC(src->hosts) < 0)
|
||||
goto cleanup;
|
||||
|
||||
@ -3026,17 +3028,12 @@ virStorageSourceParseBackingJSONiSCSI(virStorageSourcePtr src,
|
||||
*port = '\0';
|
||||
}
|
||||
|
||||
ignore_value(virJSONValueObjectGetNumberUint(json, "lun", &lun));
|
||||
|
||||
if (virAsprintf(&fulltarget, "%s/%u", target, lun) < 0)
|
||||
if (virAsprintf(&src->path, "%s/%s", target, lun) < 0)
|
||||
goto cleanup;
|
||||
|
||||
VIR_STEAL_PTR(src->path, fulltarget);
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(fulltarget);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1572,7 +1572,7 @@ mymain(void)
|
||||
"\"transport\":\"tcp\","
|
||||
"\"portal\":\"test.org:1234\","
|
||||
"\"target\":\"iqn.2016-12.com.virttest:emulated-iscsi-noauth.target\","
|
||||
"\"lun\":6"
|
||||
"\"lun\":\"6\""
|
||||
"}"
|
||||
"}",
|
||||
"<source protocol='iscsi' name='iqn.2016-12.com.virttest:emulated-iscsi-noauth.target/6'>\n"
|
||||
|
Loading…
Reference in New Issue
Block a user