On 02/27/2012 05:11 AM, Osier Yang wrote:
vshFindDisk is to find the disk node in xml doc with given source
path or target of disk device, and type (indicates disk type,
normal disk or changeable disk).
vshPrepareDiskXML is to make changes on the disk node (e.g. create
and insert the new <source> node for inserting media of CDROM drive).
They are marked as unused temporarily.
---
tools/virsh.c | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 215 insertions(+), 0 deletions(-)
+ if (STREQ_NULLABLE(device_type, "cdrom") ||
+ STREQ_NULLABLE(device_type, "floppy")) {
+ bool has_source = false;
+ disk_type = virXMLPropString(disk_node, "type");
+
+ cur = disk_node->children;
+ while (cur != NULL) {
+ if (cur->type == XML_ELEMENT_NODE &&
+ xmlStrEqual(cur->name, BAD_CAST "source")) {
+ has_source = true;
+ break;
+ }
+ cur = cur->next;
+ }
+
+ if (!has_source) {
+ if (type == VSH_PREPARE_DISK_XML_EJECT) {
+ vshError(NULL, _("The disk device whose source path or target
"
+ "is '%s' doesn't have media"),
path);
If there is no source, then the disk device was found via target, not
source path :) Avoid the problem, as well as making things shorter, by
changing the error message to:
"The disk device '%s' doesn't have media"
+
+ if (has_source) {
+ if (type == VSH_PREPARE_DISK_XML_INSERT) {
+ vshError(NULL, _("The disk device whose source path or target
"
+ "is '%s' already has media"), path);
Along those lines, a consistent error message would be:
"The disk device '%s' already has media"
ACK with those nits fixed.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org