On Mon, Feb 25, 2013 at 06:44:31PM +0100, Paolo Bonzini wrote: > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > --- > docs/formatdomain.html.in | 12 ++++----- > docs/schemas/domaincommon.rng | 1 + > src/conf/domain_conf.c | 31 ++++++++++++++++------ > .../qemuxml2argv-disk-drive-network-iscsi-auth.xml | 31 ++++++++++++++++++++++ > tests/qemuxml2xmltest.c | 1 + > 5 files changed, 62 insertions(+), 14 deletions(-) > create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-network-iscsi-auth.xml > > diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in > index c590427..0906fe9 100644 > --- a/docs/formatdomain.html.in > +++ b/docs/formatdomain.html.in > @@ -1760,12 +1760,12 @@ > holds the actual password or other credentials (the domain XML > intentionally does not expose the password, only the reference > to the object that does manage the password). For now, the > - only known secret <code>type</code> is "ceph", for Ceph RBD > - network sources, and requires either an > - attribute <code>uuid</code> with the UUID of the Ceph secret > - object, or an attribute <code>usage</code> with the name > - associated with the Ceph secret > - object. <span class="since">libvirt 0.9.7</span> > + known secret <code>type</code>s are "ceph", for Ceph RBD > + network sources, and "iscsi", for CHAP authentication of iSCSI > + targets. Both require either a <code>uuid</code> attribute > + with the UUID of the secret object, or a <code>usage</code> > + attribute matching the key that was specified in the > + secret object. <span class="since">libvirt 0.9.7</span> > </dd> > <dt><code>geometry</code></dt> > <dd>The optional <code>geometry</code> element provides the > diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng > index b8c4503..6f85e84 100644 > --- a/docs/schemas/domaincommon.rng > +++ b/docs/schemas/domaincommon.rng > @@ -3592,6 +3592,7 @@ > <attribute name='type'> > <choice> > <value>ceph</value> > + <value>iscsi</value> > </choice> > </attribute> > <choice> > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 71da694..e4c3e67 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -3885,6 +3885,8 @@ virDomainDiskDefParseXML(virCapsPtr caps, > char *wwn = NULL; > char *vendor = NULL; > char *product = NULL; > + int expected_secret_usage = -1; > + int auth_secret_usage = -1; > > if (VIR_ALLOC(def) < 0) { > virReportOOMError(); > @@ -3922,7 +3924,6 @@ virDomainDiskDefParseXML(virCapsPtr caps, > if (cur->type == XML_ELEMENT_NODE) { > if (!source && !hosts && > xmlStrEqual(cur->name, BAD_CAST "source")) { > - > sourceNode = cur; > > switch (def->type) { > @@ -3958,6 +3959,9 @@ virDomainDiskDefParseXML(virCapsPtr caps, > _("invalid logical unit number")); > goto error; > } > + expected_secret_usage = VIR_SECRET_USAGE_TYPE_ISCSI; > + } else if (def->protocol == VIR_DOMAIN_DISK_PROTOCOL_RBD) { > + expected_secret_usage = VIR_SECRET_USAGE_TYPE_CEPH; > } > if (!(source = virXMLPropString(cur, "name")) && > def->protocol != VIR_DOMAIN_DISK_PROTOCOL_NBD) { > @@ -4144,8 +4148,9 @@ virDomainDiskDefParseXML(virCapsPtr caps, > _("missing type for secret")); > goto error; > } > - if (virSecretUsageTypeTypeFromString(usageType) != > - VIR_SECRET_USAGE_TYPE_CEPH) { > + auth_secret_usage = > + virSecretUsageTypeTypeFromString(usageType); > + if (auth_secret_usage < 0) { > virReportError(VIR_ERR_XML_ERROR, > _("invalid secret type %s"), > usageType); > @@ -4295,6 +4300,13 @@ virDomainDiskDefParseXML(virCapsPtr caps, > cur = cur->next; > } > > + if (auth_secret_usage != -1 && auth_secret_usage != expected_secret_usage) { > + virReportError(VIR_ERR_INTERNAL_ERROR, Probably should use VIR_ERR_CONFIG_UNSUPPORTED > + _("invalid secret type '%s'"), > + virSecretUsageTypeTypeToString(auth_secret_usage)); And list the expected type here, as well as the incorrect type. ACK if those small changes are made when pushing Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list