From: zhangshengyu <zhangshengyu@xxxxxxxxxxxxxx> --- docs/schemas/domaincommon.rng | 28 +++++++++++++ src/conf/domain_conf.c | 8 ++++ src/qemu/qemu_block.c | 24 ++++++++++- src/qemu/qemu_command.c | 3 ++ src/qemu/qemu_parse_command.c | 10 ++++- src/storage/storage_backend_gluster.c | 1 + src/util/virstoragefile.c | 3 +- src/util/virstoragefile.h | 1 + .../disk-drive-network-iser-auth.args | 25 ++++++++++++ .../disk-drive-network-iser-auth.xml | 44 ++++++++++++++++++++ .../qemuargv2xmldata/disk-drive-network-iser.args | 25 ++++++++++++ tests/qemuargv2xmldata/disk-drive-network-iser.xml | 41 +++++++++++++++++++ tests/qemuargv2xmltest.c | 2 + ...-drive-network-iser-auth-secrettype-invalid.xml | 33 +++++++++++++++ ...sk-drive-network-iser-auth-wrong-secrettype.xml | 33 +++++++++++++++ .../disk-drive-network-iser-auth.args | 31 ++++++++++++++ .../disk-drive-network-iser-auth.xml | 43 ++++++++++++++++++++ .../disk-drive-network-iser-lun.args | 27 +++++++++++++ .../disk-drive-network-iser-lun.xml | 28 +++++++++++++ .../qemuxml2argvdata/disk-drive-network-iser.args | 29 +++++++++++++ tests/qemuxml2argvdata/disk-drive-network-iser.xml | 37 +++++++++++++++++ tests/qemuxml2argvtest.c | 1 + .../disk-drive-network-iser-auth.xml | 47 ++++++++++++++++++++++ .../qemuxml2xmloutdata/disk-drive-network-iser.xml | 41 +++++++++++++++++++ tests/qemuxml2xmltest.c | 1 + 25 files changed, 562 insertions(+), 4 deletions(-) create mode 100644 tests/qemuargv2xmldata/disk-drive-network-iser-auth.args create mode 100644 tests/qemuargv2xmldata/disk-drive-network-iser-auth.xml create mode 100644 tests/qemuargv2xmldata/disk-drive-network-iser.args create mode 100644 tests/qemuargv2xmldata/disk-drive-network-iser.xml create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser-auth-secrettype-invalid.xml create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser-auth-wrong-secrettype.xml create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser-auth.args create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser-auth.xml create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser-lun.args create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser-lun.xml create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser.args create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser.xml create mode 100644 tests/qemuxml2xmloutdata/disk-drive-network-iser-auth.xml create mode 100644 tests/qemuxml2xmloutdata/disk-drive-network-iser.xml diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index f22c932f6..819a8791d 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -1534,6 +1534,7 @@ <choice> <value>tcp</value> <value>rdma</value> + <value>iser</value> </choice> </attribute> </optional> @@ -1613,6 +1614,15 @@ <optional> <ref name="encryption"/> </optional> + <optional> + <attribute name="transport"> + <choice> + <value>tcp</value> + <value>rdma</value> + <value>iser</value> + </choice> + </attribute> + </optional> </element> </define> @@ -4386,6 +4396,15 @@ <attribute name="name"> <text/> </attribute> + <optional> + <attribute name="transport"> + <choice> + <value>tcp</value> + <value>rdma</value> + <value>iser</value> + </choice> + </attribute> + </optional> <interleave> <oneOrMore> <element name='host'> @@ -4397,6 +4416,15 @@ <ref name="PortNumber"/> </attribute> </optional> + <optional> + <attribute name="transport"> + <choice> + <value>tcp</value> + <value>rdma</value> + <value>iser</value> + </choice> + </attribute> + </optional> <empty/> </element> </oneOrMore> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 9a62bc472..4c71855b4 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7080,6 +7080,7 @@ virDomainStorageNetworkParseHosts(xmlNodePtr node, virStorageNetHostDefPtr *hosts, size_t *nhosts) { + char *transport = NULL; xmlNodePtr child; for (child = node->children; child; child = child->next) { @@ -7091,6 +7092,9 @@ virDomainStorageNetworkParseHosts(xmlNodePtr node, } } + if ((*hosts) && (transport = virXMLPropString(node, "transport"))) + (*hosts)->transport = virStorageNetHostTransportTypeFromString(transport); + return 0; } @@ -8495,6 +8499,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node, if (virDomainStorageNetworkParseHosts(node, &src->hosts, &src->nhosts) < 0) goto cleanup; + virStorageSourceNetworkAssignDefaultPorts(src); ret = 0; @@ -22364,6 +22369,9 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf, VIR_FREE(path); + if (src->hosts && src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_ISER) + virBufferEscapeString(attrBuf, " transport='%s'", "iser"); + if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT && !(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE && src->tlsFromConfig)) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 585f0255e..49837205f 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -433,6 +433,12 @@ qemuBlockStorageSourceGetURI(virStorageSourcePtr src) if (VIR_STRDUP(uri->scheme, virStorageNetProtocolTypeToString(src->protocol)) < 0) goto cleanup; + } else if (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_ISER) { + uri->port = src->hosts->port; + + if (VIR_STRDUP(uri->scheme, + virStorageNetHostTransportTypeToString(src->hosts->transport)) < 0) + goto cleanup; } else { if (virAsprintf(&uri->scheme, "%s+%s", virStorageNetProtocolTypeToString(src->protocol), @@ -506,6 +512,19 @@ qemuBlockStorageSourceBuildJSONSocketAddress(virStorageNetHostDefPtr host, goto cleanup; break; + case VIR_STORAGE_NET_HOST_TRANS_ISER: + transport = "iser"; + if (virAsprintf(&port, "%u", host->port) < 0) + goto cleanup; + + if (virJSONValueObjectCreate(&server, + "s:type", transport, + "s:host", host->name, + "s:port", port, + NULL) < 0) + goto cleanup; + break; + case VIR_STORAGE_NET_HOST_TRANS_UNIX: if (virJSONValueObjectCreate(&server, "s:type", "unix", @@ -590,7 +609,8 @@ qemuBlockStorageSourceBuildJSONInetSocketAddress(virStorageNetHostDefPtr host) virJSONValuePtr ret = NULL; char *port = NULL; - if (host->transport != VIR_STORAGE_NET_HOST_TRANS_TCP) { + if (host->transport != VIR_STORAGE_NET_HOST_TRANS_TCP && + host->transport != VIR_STORAGE_NET_HOST_TRANS_ISER) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("only TCP protocol can be converted to InetSocketAddress")); return NULL; @@ -831,7 +851,7 @@ qemuBlockStorageSourceGetISCSIProps(virStorageSourcePtr src) "s:portal", portal, "s:target", target, "u:lun", lun, - "s:transport", "tcp", + "s:transport", virStorageNetHostTransportTypeToString(src->hosts->transport), "S:user", username, "S:password-secret", objalias, NULL)); diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 4d0c141e5..eb482097f 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -883,6 +883,8 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, if (!((src->hosts->name && strchr(src->hosts->name, ':')) || (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_TCP && !src->hosts->name) || + (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_ISER && + !src->hosts->name) || (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_UNIX && src->hosts->socket && src->hosts->socket[0] != '/'))) { @@ -891,6 +893,7 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, switch (src->hosts->transport) { case VIR_STORAGE_NET_HOST_TRANS_TCP: + case VIR_STORAGE_NET_HOST_TRANS_ISER: virBufferAsprintf(&buf, "%s:%u", src->hosts->name, src->hosts->port); break; diff --git a/src/qemu/qemu_parse_command.c b/src/qemu/qemu_parse_command.c index 5fe3f97d0..d376af208 100644 --- a/src/qemu/qemu_parse_command.c +++ b/src/qemu/qemu_parse_command.c @@ -70,7 +70,9 @@ qemuParseDriveURIString(virDomainDiskDefPtr def, virURIPtr uri, if (transp) *transp++ = 0; - if (STRNEQ(uri->scheme, scheme)) { + if (STREQ(uri->scheme, "iser")) { + transp = (char *)"iser"; + } else if (STRNEQ(uri->scheme, scheme)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Invalid transport/scheme '%s'"), uri->scheme); goto error; @@ -709,6 +711,12 @@ qemuParseCommandLineDisk(virDomainXMLOptionPtr xmlopt, if (qemuParseISCSIString(def) < 0) goto error; + } else if (STRPREFIX(def->src->path, "iser:")) { + def->src->type = VIR_STORAGE_TYPE_NETWORK; + def->src->protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI; + + if (qemuParseISCSIString(def) < 0) + goto error; } else if (STRPREFIX(def->src->path, "sheepdog:")) { char *p = def->src->path; char *port, *vdi; diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_backend_gluster.c index 5eea84f16..1452fa0cd 100644 --- a/src/storage/storage_backend_gluster.c +++ b/src/storage/storage_backend_gluster.c @@ -608,6 +608,7 @@ virStorageFileBackendGlusterInitServer(virStorageFileBackendGlusterPrivPtr priv, hoststr = host->socket; break; + case VIR_STORAGE_NET_HOST_TRANS_ISER: case VIR_STORAGE_NET_HOST_TRANS_LAST: break; } diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 5780180a9..63253a9c4 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -92,7 +92,8 @@ VIR_ENUM_IMPL(virStorageNetProtocol, VIR_STORAGE_NET_PROTOCOL_LAST, VIR_ENUM_IMPL(virStorageNetHostTransport, VIR_STORAGE_NET_HOST_TRANS_LAST, "tcp", "unix", - "rdma") + "rdma", + "iser") VIR_ENUM_IMPL(virStorageSourcePoolMode, VIR_STORAGE_SOURCE_POOL_MODE_LAST, diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index ecd806c93..5a6ec7776 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -147,6 +147,7 @@ typedef enum { VIR_STORAGE_NET_HOST_TRANS_TCP, VIR_STORAGE_NET_HOST_TRANS_UNIX, VIR_STORAGE_NET_HOST_TRANS_RDMA, + VIR_STORAGE_NET_HOST_TRANS_ISER, VIR_STORAGE_NET_HOST_TRANS_LAST } virStorageNetHostTransport; diff --git a/tests/qemuargv2xmldata/disk-drive-network-iser-auth.args b/tests/qemuargv2xmldata/disk-drive-network-iser-auth.args new file mode 100644 index 000000000..aaf10d8c8 --- /dev/null +++ b/tests/qemuargv2xmldata/disk-drive-network-iser-auth.args @@ -0,0 +1,25 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-i686 \ +-name QEMUGuest1 \ +-S \ +-M pc \ +-m 214 \ +-smp 1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-nographic \ +-monitor unix:/tmp/test-monitor,server,nowait \ +-no-acpi \ +-boot c \ +-usb \ +-drive file=iser://myname:AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+HOBlMQ1A@xxxxxxxxxxx:\ +6000/iqn.1992-01.com.example%3Astorage/1,format=raw,if=virtio \ +-drive file=iser://example.org:6000/iqn.1992-01.com.example%3Astorage/2,\ +format=raw,if=virtio \ +-net none \ +-serial none \ +-parallel none diff --git a/tests/qemuargv2xmldata/disk-drive-network-iser-auth.xml b/tests/qemuargv2xmldata/disk-drive-network-iser-auth.xml new file mode 100644 index 000000000..7226443fb --- /dev/null +++ b/tests/qemuargv2xmldata/disk-drive-network-iser-auth.xml @@ -0,0 +1,44 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <auth username='myname'> + <secret type='iscsi' usage='qemuargv2xml_usage'/> + </auth> + <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vda' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </disk> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <source protocol='iscsi' name='iqn.1992-01.com.example:storage/2' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vdb' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> + </disk> + <controller type='usb' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuargv2xmldata/disk-drive-network-iser.args b/tests/qemuargv2xmldata/disk-drive-network-iser.args new file mode 100644 index 000000000..c476e759e --- /dev/null +++ b/tests/qemuargv2xmldata/disk-drive-network-iser.args @@ -0,0 +1,25 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-i686 \ +-name QEMUGuest1 \ +-S \ +-M pc \ +-m 214 \ +-smp 1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-nographic \ +-monitor unix:/tmp/test-monitor,server,nowait \ +-no-acpi \ +-boot c \ +-usb \ +-drive file=iser://example.org:6000/iqn.1992-01.com.example,format=raw,\ +if=virtio \ +-drive file=iser://example.org:6000/iqn.1992-01.com.example/1,format=raw,\ +if=virtio \ +-net none \ +-serial none \ +-parallel none diff --git a/tests/qemuargv2xmldata/disk-drive-network-iser.xml b/tests/qemuargv2xmldata/disk-drive-network-iser.xml new file mode 100644 index 000000000..88f043f66 --- /dev/null +++ b/tests/qemuargv2xmldata/disk-drive-network-iser.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <source protocol='iscsi' name='iqn.1992-01.com.example/0' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vda' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </disk> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <source protocol='iscsi' name='iqn.1992-01.com.example/1' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vdb' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> + </disk> + <controller type='usb' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c index cb010268c..59b26c647 100644 --- a/tests/qemuargv2xmltest.c +++ b/tests/qemuargv2xmltest.c @@ -213,6 +213,8 @@ mymain(void) DO_TEST("disk-drive-network-nbd-unix"); DO_TEST("disk-drive-network-iscsi"); DO_TEST("disk-drive-network-iscsi-auth"); + DO_TEST("disk-drive-network-iser"); + DO_TEST("disk-drive-network-iser-auth"); DO_TEST("disk-drive-network-gluster"); DO_TEST("disk-drive-network-rbd"); DO_TEST("disk-drive-network-rbd-auth"); diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-auth-secrettype-invalid.xml b/tests/qemuxml2argvdata/disk-drive-network-iser-auth-secrettype-invalid.xml new file mode 100644 index 000000000..dbcf484dc --- /dev/null +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-auth-secrettype-invalid.xml @@ -0,0 +1,33 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <auth username='myname'> + <secret usage='mycluster_myname'/> + </auth> + <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vda' bus='virtio'/> + </disk> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-auth-wrong-secrettype.xml b/tests/qemuxml2argvdata/disk-drive-network-iser-auth-wrong-secrettype.xml new file mode 100644 index 000000000..5525e9d86 --- /dev/null +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-auth-wrong-secrettype.xml @@ -0,0 +1,33 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <auth username='myname'> + <secret type='ceph' usage='mycluster_myname'/> + </auth> + <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vda' bus='virtio'/> + </disk> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-auth.args b/tests/qemuxml2argvdata/disk-drive-network-iser-auth.args new file mode 100644 index 000000000..5fa7a04bb --- /dev/null +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-auth.args @@ -0,0 +1,31 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-i686 \ +-name QEMUGuest1 \ +-S \ +-M pc \ +-m 214 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-nographic \ +-nodefaults \ +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ +server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=readline \ +-no-acpi \ +-boot c \ +-usb \ +-drive file=iser://myname:AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+HOBlMQ1A@xxxxxxxxxxx:\ +6000/iqn.1992-01.com.example%3Astorage/1,format=raw,if=none,\ +id=drive-virtio-disk0 \ +-device virtio-blk-pci,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,\ +id=virtio-disk0 \ +-drive file=iser://myname:AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+HOBlMQ1A@xxxxxxxxxxx:\ +6000/iqn.1992-01.com.example%3Astorage/2,format=raw,if=none,\ +id=drive-virtio-disk1 \ +-device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk1,\ +id=virtio-disk1 diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-auth.xml b/tests/qemuxml2argvdata/disk-drive-network-iser-auth.xml new file mode 100644 index 000000000..fbcb6b4f1 --- /dev/null +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-auth.xml @@ -0,0 +1,43 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <auth username='myname'> + <secret type='iscsi' usage='mycluster_myname'/> + </auth> + <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vda' bus='virtio'/> + </disk> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <auth username='myname'> + <secret type='iscsi' usage='mycluster_myname'/> + </auth> + <source protocol='iscsi' name='iqn.1992-01.com.example:storage/2' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vdb' bus='virtio'/> + </disk> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-lun.args b/tests/qemuxml2argvdata/disk-drive-network-iser-lun.args new file mode 100644 index 000000000..d9428533b --- /dev/null +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-lun.args @@ -0,0 +1,27 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-i686 \ +-name QEMUGuest1 \ +-S \ +-M pc \ +-m 214 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-nographic \ +-nodefconfig \ +-nodefaults \ +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ +server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=readline \ +-no-acpi \ +-boot c \ +-device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x3 \ +-usb \ +-drive file=iser://example.org:3260/iqn.1992-01.com.example/0,format=raw,\ +if=none,id=drive-scsi0-0-0-0 \ +-device scsi-block,bus=scsi0.0,channel=0,scsi-id=0,lun=0,\ +drive=drive-scsi0-0-0-0,id=scsi0-0-0-0 diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-lun.xml b/tests/qemuxml2argvdata/disk-drive-network-iser-lun.xml new file mode 100644 index 000000000..25fa76140 --- /dev/null +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-lun.xml @@ -0,0 +1,28 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <disk type='network' device='lun'> + <driver name='qemu' type='raw'/> + <source protocol='iscsi' name='iqn.1992-01.com.example' transport='iser'> + <host name='example.org' port='3260' transport='iser'/> + </source> + <target dev='sda' bus='scsi'/> + </disk> + <controller type='usb' index='0'/> + <controller type='scsi' index='0' model='virtio-scsi'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser.args b/tests/qemuxml2argvdata/disk-drive-network-iser.args new file mode 100644 index 000000000..49ea467ff --- /dev/null +++ b/tests/qemuxml2argvdata/disk-drive-network-iser.args @@ -0,0 +1,29 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-i686 \ +-name QEMUGuest1 \ +-S \ +-M pc \ +-m 214 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-nographic \ +-nodefaults \ +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ +server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=readline \ +-no-acpi \ +-boot c \ +-usb \ +-drive file=iser://example.org:6000/iqn.1992-01.com.example/0,format=raw,\ +if=none,id=drive-virtio-disk0 \ +-device virtio-blk-pci,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,\ +id=virtio-disk0 \ +-drive file=iser://example.org:6000/iqn.1992-01.com.example/1,format=raw,\ +if=none,id=drive-virtio-disk1 \ +-device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk1,\ +id=virtio-disk1 diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser.xml b/tests/qemuxml2argvdata/disk-drive-network-iser.xml new file mode 100644 index 000000000..b1634555c --- /dev/null +++ b/tests/qemuxml2argvdata/disk-drive-network-iser.xml @@ -0,0 +1,37 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <source protocol='iscsi' name='iqn.1992-01.com.example' transport='iser'> + <host name='example.org' port='6000'/> + </source> + <target dev='vda' bus='virtio'/> + </disk> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <source protocol='iscsi' name='iqn.1992-01.com.example/1' transport='iser'> + <host name='example.org' port='6000'/> + </source> + <target dev='vdb' bus='virtio'/> + </disk> + <controller type='usb' index='0'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index ca24e0bbb..accfdaf4b 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -936,6 +936,7 @@ mymain(void) DO_TEST("disk-drive-network-iscsi-lun", QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_BLOCK); + DO_TEST("disk-drive-network-iser", NONE); DO_TEST("disk-drive-network-gluster", QEMU_CAPS_GLUSTER_DEBUG_LEVEL); DO_TEST("disk-drive-network-rbd", NONE); diff --git a/tests/qemuxml2xmloutdata/disk-drive-network-iser-auth.xml b/tests/qemuxml2xmloutdata/disk-drive-network-iser-auth.xml new file mode 100644 index 000000000..1b27fdea2 --- /dev/null +++ b/tests/qemuxml2xmloutdata/disk-drive-network-iser-auth.xml @@ -0,0 +1,47 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <auth username='myname'> + <secret type='iscsi' usage='mycluster_myname'/> + </auth> + <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vda' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </disk> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <auth username='myname'> + <secret type='iscsi' usage='mycluster_myname'/> + </auth> + <source protocol='iscsi' name='iqn.1992-01.com.example:storage/2' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vdb' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> + </disk> + <controller type='usb' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/disk-drive-network-iser.xml b/tests/qemuxml2xmloutdata/disk-drive-network-iser.xml new file mode 100644 index 000000000..88f043f66 --- /dev/null +++ b/tests/qemuxml2xmloutdata/disk-drive-network-iser.xml @@ -0,0 +1,41 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i686</emulator> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <source protocol='iscsi' name='iqn.1992-01.com.example/0' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vda' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> + </disk> + <disk type='network' device='disk'> + <driver name='qemu' type='raw'/> + <source protocol='iscsi' name='iqn.1992-01.com.example/1' transport='iser'> + <host name='example.org' port='6000' transport='iser'/> + </source> + <target dev='vdb' bus='virtio'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> + </disk> + <controller type='usb' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 2be8eb2c1..23f9292c4 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -515,6 +515,7 @@ mymain(void) DO_TEST("disk-drive-network-nbd-unix", NONE); DO_TEST("disk-drive-network-iscsi", NONE); DO_TEST("disk-drive-network-iscsi-auth", NONE); + DO_TEST("disk-drive-network-iser", NONE); DO_TEST("disk-drive-network-gluster", NONE); DO_TEST("disk-drive-network-rbd", NONE); DO_TEST("disk-drive-network-rbd-auth", NONE); -- 2.13.6 (Apple Git-96) -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list