Datacenter, ComputeResource and HostSystem will be used for
simplified handling and caching.
---
src/esx/esx_vi_types.c | 283 ++++++++++++++++++++++++++++++++++++++++++++++++
src/esx/esx_vi_types.h | 96 ++++++++++++++++
2 files changed, 379 insertions(+), 0 deletions(-)
diff --git a/src/esx/esx_vi_types.c b/src/esx/esx_vi_types.c
index 5cf30b1..bb791af 100644
--- a/src/esx/esx_vi_types.c
+++ b/src/esx/esx_vi_types.c
@@ -704,6 +704,15 @@ esxVI_Type_ToString(esxVI_Type type)
case esxVI_Type_ManagedObjectReference:
return "ManagedObjectReference";
+ case esxVI_Type_Datacenter:
+ return "Datacenter";
+
+ case esxVI_Type_ComputeResource:
+ return "ComputeResource";
+
+ case esxVI_Type_HostSystem:
+ return "HostSystem";
+
#include "esx_vi_types.generated.typetostring"
case esxVI_Type_Other:
@@ -734,8 +743,15 @@ esxVI_Type_FromString(const char *type)
return esxVI_Type_Fault;
} else if (STREQ(type, "ManagedObjectReference")) {
return esxVI_Type_ManagedObjectReference;
+ } else if (STREQ(type, "Datacenter")) {
+ return esxVI_Type_Datacenter;
+ } else if (STREQ(type, "ComputeResource")) {
+ return esxVI_Type_ComputeResource;
+ } else if (STREQ(type, "HostSystem")) {
+ return esxVI_Type_HostSystem;
}
+
#include "esx_vi_types.generated.typefromstring"
else {
@@ -1532,6 +1548,273 @@ esxVI_ManagedObjectReference_Deserialize
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * VI Managed Object: Datacenter
+ * extends ManagedEntity
+ */
+
+/* esxVI_Datacenter_Alloc */
+ESX_VI__TEMPLATE__ALLOC(Datacenter)
+
+/* esxVI_Datacenter_Free */
+ESX_VI__TEMPLATE__FREE(Datacenter,
+{
+ esxVI_Datacenter_Free(&item->_next);
+ esxVI_ManagedObjectReference_Free(&item->_reference);
+
+ /* ManagedEntity */
+ VIR_FREE(item->name);
+
+ /* Datacenter */
+ esxVI_ManagedObjectReference_Free(&item->hostFolder);
+ esxVI_ManagedObjectReference_Free(&item->vmFolder);
+})
+
+/* esxVI_Datacenter_Validate */
+ESX_VI__TEMPLATE__VALIDATE(Datacenter,
+{
+ /* ManagedEntity */
+ ESX_VI__TEMPLATE__PROPERTY__REQUIRE(name);
+
+ /* Datacenter */
+ ESX_VI__TEMPLATE__PROPERTY__REQUIRE(hostFolder);
+ ESX_VI__TEMPLATE__PROPERTY__REQUIRE(vmFolder);
+})
+
+int
+esxVI_Datacenter_CastFromObjectContent(esxVI_ObjectContent *objectContent,
+ esxVI_Datacenter **datacenter)
+{
+ esxVI_DynamicProperty *dynamicProperty = NULL;
+
+ if (objectContent == NULL || datacenter == NULL || *datacenter != NULL) {
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid
argument"));
+ return -1;
+ }
+
+ if (esxVI_Datacenter_Alloc(datacenter) < 0) {
+ return -1;
+ }
+
+ if (esxVI_ManagedObjectReference_DeepCopy(&(*datacenter)->_reference,
+ objectContent->obj) < 0) {
+ goto failure;
+ }
+
+ for (dynamicProperty = objectContent->propSet; dynamicProperty != NULL;
+ dynamicProperty = dynamicProperty->_next) {
+ if (STREQ(dynamicProperty->name, "name")) {
+ if (esxVI_AnyType_ExpectType(dynamicProperty->val,
+ esxVI_Type_String) < 0) {
+ goto failure;
+ }
+
+ (*datacenter)->name = strdup(dynamicProperty->val->string);
+
+ if ((*datacenter)->name == NULL) {
+ virReportOOMError();
+ goto failure;
+ }
+ } else if (STREQ(dynamicProperty->name, "hostFolder")) {
+ if (esxVI_ManagedObjectReference_CastFromAnyType
+ (dynamicProperty->val, &(*datacenter)->hostFolder) < 0) {
+ goto failure;
+ }
+ } else if (STREQ(dynamicProperty->name, "vmFolder")) {
+ if (esxVI_ManagedObjectReference_CastFromAnyType
+ (dynamicProperty->val, &(*datacenter)->vmFolder) < 0) {
+ goto failure;
+ }
+ }
+ }
+
+ if (esxVI_Datacenter_Validate(*datacenter) < 0) {
+ goto failure;
+ }
+
+ return 0;
+
+ failure:
+ esxVI_Datacenter_Free(datacenter);
+
+ return -1;
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * VI Managed Object: ComputeResource
+ * extends ManagedEntity
+ */
+
+/* esxVI_ComputeResource_Alloc */
+ESX_VI__TEMPLATE__ALLOC(ComputeResource)
+
+/* esxVI_ComputeResource_Free */
+ESX_VI__TEMPLATE__FREE(ComputeResource,
+{
+ esxVI_ComputeResource_Free(&item->_next);
+ esxVI_ManagedObjectReference_Free(&item->_reference);
+
+ /* ManagedEntity */
+ VIR_FREE(item->name);
+
+ /* ComputeResource */
+ esxVI_ManagedObjectReference_Free(&item->host);
+ esxVI_ManagedObjectReference_Free(&item->resourcePool);
+})
+
+/* esxVI_ComputeResource_Validate */
+ESX_VI__TEMPLATE__VALIDATE(ComputeResource,
+{
+ /* ManagedEntity */
+ ESX_VI__TEMPLATE__PROPERTY__REQUIRE(name);
+
+ /* ComputeResource */
+})
+
+int
+esxVI_ComputeResource_CastFromObjectContent
+ (esxVI_ObjectContent *objectContent, esxVI_ComputeResource **computeResource)
+{
+ esxVI_DynamicProperty *dynamicProperty = NULL;
+
+ if (objectContent == NULL || computeResource == NULL ||
+ *computeResource != NULL) {
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid
argument"));
+ return -1;
+ }
+
+ if (esxVI_ComputeResource_Alloc(computeResource) < 0) {
+ return -1;
+ }
+
+ if (esxVI_ManagedObjectReference_DeepCopy(&(*computeResource)->_reference,
+ objectContent->obj) < 0) {
+ goto failure;
+ }
+
+ for (dynamicProperty = objectContent->propSet; dynamicProperty != NULL;
+ dynamicProperty = dynamicProperty->_next) {
+ if (STREQ(dynamicProperty->name, "name")) {
+ if (esxVI_AnyType_ExpectType(dynamicProperty->val,
+ esxVI_Type_String) < 0) {
+ goto failure;
+ }
+
+ (*computeResource)->name = strdup(dynamicProperty->val->string);
+
+ if ((*computeResource)->name == NULL) {
+ virReportOOMError();
+ goto failure;
+ }
+ } else if (STREQ(dynamicProperty->name, "host")) {
+ if (esxVI_ManagedObjectReference_CastListFromAnyType
+ (dynamicProperty->val, &(*computeResource)->host) < 0) {
+ goto failure;
+ }
+ } else if (STREQ(dynamicProperty->name, "resourcePool")) {
+ if (esxVI_ManagedObjectReference_CastFromAnyType
+ (dynamicProperty->val, &(*computeResource)->resourcePool)
< 0) {
+ goto failure;
+ }
+ }
+ }
+
+ if (esxVI_ComputeResource_Validate(*computeResource) < 0) {
+ goto failure;
+ }
+
+ return 0;
+
+ failure:
+ esxVI_ComputeResource_Free(computeResource);
+
+ return -1;
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * VI Managed Object: HostSystem
+ * extends ManagedEntity
+ */
+
+/* esxVI_HostSystem_Alloc */
+ESX_VI__TEMPLATE__ALLOC(HostSystem)
+
+/* esxVI_HostSystem_Free */
+ESX_VI__TEMPLATE__FREE(HostSystem,
+{
+ esxVI_HostSystem_Free(&item->_next);
+ esxVI_ManagedObjectReference_Free(&item->_reference);
+
+ /* ManagedEntity */
+ VIR_FREE(item->name);
+
+ /* HostSystem */
+})
+
+/* esxVI_HostSystem_Validate */
+ESX_VI__TEMPLATE__VALIDATE(HostSystem,
+{
+ /* ManagedEntity */
+ ESX_VI__TEMPLATE__PROPERTY__REQUIRE(name);
+
+ /* HostSystem */
+})
+
+int
+esxVI_HostSystem_CastFromObjectContent(esxVI_ObjectContent *objectContent,
+ esxVI_HostSystem **hostSystem)
+{
+ esxVI_DynamicProperty *dynamicProperty = NULL;
+
+ if (objectContent == NULL || hostSystem == NULL || *hostSystem != NULL) {
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid
argument"));
+ return -1;
+ }
+
+ if (esxVI_HostSystem_Alloc(hostSystem) < 0) {
+ return -1;
+ }
+
+ if (esxVI_ManagedObjectReference_DeepCopy(&(*hostSystem)->_reference,
+ objectContent->obj) < 0) {
+ goto failure;
+ }
+
+ for (dynamicProperty = objectContent->propSet; dynamicProperty != NULL;
+ dynamicProperty = dynamicProperty->_next) {
+ if (STREQ(dynamicProperty->name, "name")) {
+ if (esxVI_AnyType_ExpectType(dynamicProperty->val,
+ esxVI_Type_String) < 0) {
+ goto failure;
+ }
+
+ (*hostSystem)->name = strdup(dynamicProperty->val->string);
+
+ if ((*hostSystem)->name == NULL) {
+ virReportOOMError();
+ goto failure;
+ }
+ }
+ }
+
+ if (esxVI_HostSystem_Validate(*hostSystem) < 0) {
+ goto failure;
+ }
+
+ return 0;
+
+ failure:
+ esxVI_HostSystem_Free(hostSystem);
+
+ return -1;
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* VI Enum: VirtualMachinePowerState (Additions)
*/
diff --git a/src/esx/esx_vi_types.h b/src/esx/esx_vi_types.h
index 4bedca9..f659361 100644
--- a/src/esx/esx_vi_types.h
+++ b/src/esx/esx_vi_types.h
@@ -26,6 +26,7 @@
typedef enum _esxVI_Type esxVI_Type;
typedef struct _esxVI_Object esxVI_Object;
+typedef struct _esxVI_ManagedObject esxVI_ManagedObject;
@@ -48,6 +49,9 @@ typedef struct _esxVI_DateTime esxVI_DateTime;
typedef struct _esxVI_Fault esxVI_Fault;
typedef struct _esxVI_ManagedObjectReference esxVI_ManagedObjectReference;
+typedef struct _esxVI_Datacenter esxVI_Datacenter;
+typedef struct _esxVI_ComputeResource esxVI_ComputeResource;
+typedef struct _esxVI_HostSystem esxVI_HostSystem;
# include "esx_vi_types.generated.typedef"
@@ -68,6 +72,9 @@ enum _esxVI_Type {
esxVI_Type_DateTime,
esxVI_Type_Fault,
esxVI_Type_ManagedObjectReference,
+ esxVI_Type_Datacenter,
+ esxVI_Type_ComputeResource,
+ esxVI_Type_HostSystem,
# include "esx_vi_types.generated.typeenum"
@@ -91,6 +98,18 @@ struct _esxVI_Object {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * ManagedObject extends Object
+ */
+
+struct _esxVI_ManagedObject {
+ esxVI_ManagedObject *_next; /* optional */
+ esxVI_Type _type; /* required */
+ esxVI_ManagedObjectReference *_reference; /* required */
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* XSD: Boolean
*/
@@ -301,6 +320,83 @@ int esxVI_ManagedObjectReference_Deserialize
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * VI Managed Object: Datacenter
+ * extends ManagedEntity
+ */
+
+struct _esxVI_Datacenter {
+ esxVI_Datacenter *_next; /* optional */
+ esxVI_Type _type; /* required */
+ esxVI_ManagedObjectReference *_reference; /* required */
+
+ /* ManagedEntity */
+ char *name; /* required */
+
+ /* Datacenter */
+ esxVI_ManagedObjectReference *hostFolder; /* required */
+ esxVI_ManagedObjectReference *vmFolder; /* required */
+};
+
+int esxVI_Datacenter_Alloc(esxVI_Datacenter **datacenter);
+void esxVI_Datacenter_Free(esxVI_Datacenter **datacenter);
+int esxVI_Datacenter_Validate(esxVI_Datacenter *datacenter);
+int esxVI_Datacenter_CastFromObjectContent(esxVI_ObjectContent *objectContent,
+ esxVI_Datacenter **datacenter);
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * VI Managed Object: ComputeResource
+ * extends ManagedEntity
+ */
+
+struct _esxVI_ComputeResource {
+ esxVI_ComputeResource *_next; /* optional */
+ esxVI_Type _type; /* required */
+ esxVI_ManagedObjectReference *_reference; /* required */
+
+ /* ManagedEntity */
+ char *name; /* required */
+
+ /* ComputeResource */
+ esxVI_ManagedObjectReference *host; /* optional, list */
+ esxVI_ManagedObjectReference *resourcePool; /* optional */
+};
+
+int esxVI_ComputeResource_Alloc(esxVI_ComputeResource **computeResource);
+void esxVI_ComputeResource_Free(esxVI_ComputeResource **computeResource);
+int esxVI_ComputeResource_Validate(esxVI_ComputeResource *computeResource);
+int esxVI_ComputeResource_CastFromObjectContent
+ (esxVI_ObjectContent *objectContent,
+ esxVI_ComputeResource **computeResource);
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * VI Managed Object: HostSystem
+ * extends ManagedEntity
+ */
+
+struct _esxVI_HostSystem {
+ esxVI_HostSystem *_next; /* optional */
+ esxVI_Type _type; /* required */
+ esxVI_ManagedObjectReference *_reference; /* required */
+
+ /* ManagedEntity */
+ char *name; /* required */
+
+ /* HostSystem */
+};
+
+int esxVI_HostSystem_Alloc(esxVI_HostSystem **hostSystem);
+void esxVI_HostSystem_Free(esxVI_HostSystem **hostSystem);
+int esxVI_HostSystem_Validate(esxVI_HostSystem *hostSystem);
+int esxVI_HostSystem_CastFromObjectContent(esxVI_ObjectContent *objectContent,
+ esxVI_HostSystem **hostSystem);
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* VI Enum: VirtualMachinePowerState (Additions)
*/
--
1.7.0.4