On Fri, Sep 02, 2011 at 03:18:12AM +0200, Marc-André Lureau wrote:
---
src/conf/domain_conf.c | 26 +++++++++++++++++++++++---
src/conf/domain_conf.h | 18 ++++++++++--------
src/esx/esx_driver.c | 8 ++++----
src/libvirt_private.syms | 4 ++--
src/vmx/vmx.c | 32 ++++++++++++++++----------------
tests/xml2vmxtest.c | 2 +-
6 files changed, 56 insertions(+), 34 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index ce1f3c5..5e91d54 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -195,7 +195,7 @@ VIR_ENUM_IMPL(virDomainController, VIR_DOMAIN_CONTROLLER_TYPE_LAST,
"virtio-serial",
"ccid")
-VIR_ENUM_IMPL(virDomainControllerModel, VIR_DOMAIN_CONTROLLER_MODEL_LAST,
+VIR_ENUM_IMPL(virDomainControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
"auto",
"buslogic",
"lsilogic",
@@ -2455,6 +2455,16 @@ no_memory:
}
+static int
+virDomainControllerModelTypeFromString(const virDomainControllerDefPtr def,
+ const char *model)
+{
+ if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
+ return virDomainControllerModelSCSITypeFromString(model);
+
+ return -1;
+}
+
/* Parse the XML definition for a controller
* @param node XML nodeset to parse for controller definition
*/
@@ -2492,7 +2502,7 @@ virDomainControllerDefParseXML(xmlNodePtr node,
model = virXMLPropString(node, "model");
if (model) {
- if ((def->model = virDomainControllerModelTypeFromString(model)) < 0) {
+ if ((def->model = virDomainControllerModelTypeFromString(def, model)) < 0)
{
virDomainReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown model type '%s'"),
model);
goto error;
@@ -8733,6 +8743,16 @@ virDomainDiskDefFormat(virBufferPtr buf,
return 0;
}
+static const char *
+virDomainControllerModelTypeToString(virDomainControllerDefPtr def,
+ int model)
+{
+ if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
+ return virDomainControllerModelSCSITypeToString(model);
+
+ return NULL;
+}
+
static int
virDomainControllerDefFormat(virBufferPtr buf,
virDomainControllerDefPtr def,
@@ -8748,7 +8768,7 @@ virDomainControllerDefFormat(virBufferPtr buf,
}
if (def->model != -1) {
- model = virDomainControllerModelTypeToString(def->model);
+ model = virDomainControllerModelTypeToString(def, def->model);
if (!model) {
virDomainReportError(VIR_ERR_INTERNAL_ERROR,
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 2cc9b06..8a4cd11 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -257,14 +257,16 @@ enum virDomainControllerType {
};
-enum virDomainControllerModel {
- VIR_DOMAIN_CONTROLLER_MODEL_AUTO,
- VIR_DOMAIN_CONTROLLER_MODEL_BUSLOGIC,
- VIR_DOMAIN_CONTROLLER_MODEL_LSILOGIC,
- VIR_DOMAIN_CONTROLLER_MODEL_LSISAS1068,
- VIR_DOMAIN_CONTROLLER_MODEL_VMPVSCSI,
+enum virDomainControllerModelSCSI {
+ VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO,
+ VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC,
+ VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC,
+ VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068,
+ VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI,
+
+ VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST
+};
- VIR_DOMAIN_CONTROLLER_MODEL_LAST
};
Hum, I had to remove that extra }; there :-)
typedef struct _virDomainVirtioSerialOpts virDomainVirtioSerialOpts;
fine otherwise !
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/