The Python script generates the mappings based on the type descriptions
in the esx_vi_generator.input file.
This also improves the inheritance handling and allows to get rid of the
ugly, inflexible, and error prone _base/_super approach. Now every struct
that represents a SOAP type contains a _type member, that allows to
recreate C++-like dynamic dispatch for "method" calls in C.
---
src/Makefile.am | 23 +-
src/esx/.gitignore | 1 +
src/esx/esx_driver.c | 10 +-
src/esx/esx_vi.c | 51 +-
src/esx/esx_vi.h | 7 +-
src/esx/esx_vi_generator.input | 426 ++++++++
src/esx/esx_vi_generator.py | 1025 ++++++++++++++++++
src/esx/esx_vi_methods.c | 44 +-
src/esx/esx_vi_types.c | 2258 +++++-----------------------------------
src/esx/esx_vi_types.h | 1090 +-------------------
10 files changed, 1868 insertions(+), 3067 deletions(-)
create mode 100644 src/esx/.gitignore
create mode 100644 src/esx/esx_vi_generator.input
create mode 100755 src/esx/esx_vi_generator.py
diff --git a/src/Makefile.am b/src/Makefile.am
index c661a5c..54792b4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -26,6 +26,8 @@ INCLUDES = \
EXTRA_DIST = $(conf_DATA)
+BUILT_SOURCES =
+
if WITH_NETWORK
UUID=$(shell uuidgen 2>/dev/null)
endif
@@ -250,6 +252,20 @@ ESX_DRIVER_SOURCES = \
esx/esx_vi_types.c esx/esx_vi_types.h \
esx/esx_vmx.c esx/esx_vmx.h
+ESX_DRIVER_GENERATED = \
+ esx/esx_vi_types.generated.c \
+ esx/esx_vi_types.generated.h \
+ esx/esx_vi_types.generated.typedef \
+ esx/esx_vi_types.generated.typeenum \
+ esx/esx_vi_types.generated.typetostring \
+ esx/esx_vi_types.generated.typefromstring
+
+ESX_DRIVER_EXTRA_DIST = \
+ esx/README \
+ esx/esx_vi_generator.input \
+ esx/esx_vi_generator.py \
+ $(ESX_DRIVER_GENERATED)
+
NETWORK_DRIVER_SOURCES = \
network/bridge_driver.h network/bridge_driver.c
@@ -594,7 +610,10 @@ libvirt_driver_one_la_SOURCES = $(ONE_DRIVER_SOURCES)
endif
+BUILT_SOURCES += $(ESX_DRIVER_GENERATED)
+$(ESX_DRIVER_GENERATED): $(srcdir)/esx/esx_vi_generator.input
$(srcdir)/esx/esx_vi_generator.py
+ -srcdir=$(srcdir) $(srcdir)/esx/esx_vi_generator.py
if WITH_ESX
if WITH_DRIVER_MODULES
@@ -610,6 +629,7 @@ if WITH_DRIVER_MODULES
libvirt_driver_esx_la_LDFLAGS += -module -avoid-version
endif
libvirt_driver_esx_la_SOURCES = $(ESX_DRIVER_SOURCES)
+libvirt_driver_esx_la_DEPENDENCIES = $(ESX_DRIVER_GENERATED)
endif
if WITH_NETWORK
@@ -784,6 +804,7 @@ EXTRA_DIST += \
$(VBOX_DRIVER_SOURCES) \
$(XENAPI_DRIVER_SOURCES) \
$(ESX_DRIVER_SOURCES) \
+ $(ESX_DRIVER_EXTRA_DIST) \
$(NETWORK_DRIVER_SOURCES) \
$(INTERFACE_DRIVER_SOURCES) \
$(STORAGE_DRIVER_SOURCES) \
@@ -867,7 +888,7 @@ EXTRA_DIST += \
libvirt_macvtap.syms \
libvirt_daemon.syms
-BUILT_SOURCES = libvirt.syms
+BUILT_SOURCES += libvirt.syms
libvirt.syms: libvirt_public.syms $(USED_SYM_FILES)
rm -f $@-tmp $@
diff --git a/src/esx/.gitignore b/src/esx/.gitignore
new file mode 100644
index 0000000..29e1d48
--- /dev/null
+++ b/src/esx/.gitignore
@@ -0,0 +1 @@
+*.generated.*
diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
index bbe8a51..663c560 100644
--- a/src/esx/esx_driver.c
+++ b/src/esx/esx_driver.c
@@ -1924,8 +1924,14 @@ esxDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
perfEntityMetric = perfEntityMetric->_next) {
VIR_DEBUG0("perfEntityMetric ...");
- for (perfMetricIntSeries = perfEntityMetric->value;
- perfMetricIntSeries != NULL;
+ perfMetricIntSeries =
+ esxVI_PerfMetricIntSeries_DynamicCast(perfEntityMetric->value);
+
+ if (perfMetricIntSeries == NULL) {
+ VIR_ERROR0("QueryPerf returned object with unexpected type");
+ }
+
+ for (; perfMetricIntSeries != NULL;
perfMetricIntSeries = perfMetricIntSeries->_next) {
VIR_DEBUG0("perfMetricIntSeries ...");
diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c
index 326add7..c1fd4b4 100644
--- a/src/esx/esx_vi.c
+++ b/src/esx/esx_vi.c
@@ -3,7 +3,7 @@
* esx_vi.c: client for the VMware VI API 2.5 to manage ESX hosts
*
* Copyright (C) 2010 Red Hat, Inc.
- * Copyright (C) 2009 Matthias Bolte <matthias.bolte(a)googlemail.com>
+ * Copyright (C) 2009-2010 Matthias Bolte <matthias.bolte(a)googlemail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -480,12 +480,12 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *url,
dynamicProperty = dynamicProperty->_next) {
if (STREQ(dynamicProperty->name, "vmFolder")) {
if (esxVI_ManagedObjectReference_CastFromAnyType
- (dynamicProperty->val, &ctx->vmFolder, "Folder"))
{
+ (dynamicProperty->val, &ctx->vmFolder)) {
goto failure;
}
} else if (STREQ(dynamicProperty->name, "hostFolder")) {
if (esxVI_ManagedObjectReference_CastFromAnyType
- (dynamicProperty->val, &ctx->hostFolder, "Folder"))
{
+ (dynamicProperty->val, &ctx->hostFolder)) {
goto failure;
}
} else {
@@ -725,6 +725,21 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
"Call to '%s' returned an empty result,
"
"expecting a non-empty result", methodName);
goto failure;
+ } else if ((*response)->node->next != NULL) {
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
+ "Call to '%s' returned a list, expecting
"
+ "exactly one item", methodName);
+ goto failure;
+ }
+
+ break;
+
+ case esxVI_Occurrence_RequiredList:
+ if ((*response)->node == NULL) {
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
+ "Call to '%s' returned an empty result,
"
+ "expecting a non-empty result", methodName);
+ goto failure;
}
break;
@@ -740,7 +755,7 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
break;
- case esxVI_Occurrence_List:
+ case esxVI_Occurrence_OptionalList:
/* Any amount of items is valid */
break;
@@ -821,10 +836,11 @@ esxVI_Enumeration_CastFromAnyType(const esxVI_Enumeration
*enumeration,
*value = 0; /* undefined */
- if (STRNEQ(anyType->other, enumeration->type)) {
+ if (anyType->type != enumeration->type) {
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
- "Expecting type '%s' but found '%s'",
enumeration->type,
- anyType->other);
+ "Expecting type '%s' but found '%s'",
+ esxVI_Type_ToString(enumeration->type),
+ esxVI_Type_ToString(anyType->type));
return -1;
}
@@ -837,7 +853,7 @@ esxVI_Enumeration_CastFromAnyType(const esxVI_Enumeration
*enumeration,
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
"Unknown value '%s' for %s", anyType->value,
- enumeration->type);
+ esxVI_Type_ToString(enumeration->type));
return -1;
}
@@ -870,7 +886,8 @@ esxVI_Enumeration_Serialize(const esxVI_Enumeration *enumeration,
return -1;
}
- ESV_VI__XML_TAG__OPEN(output, element, enumeration->type);
+ ESV_VI__XML_TAG__OPEN(output, element,
+ esxVI_Type_ToString(enumeration->type));
virBufferAdd(output, name, -1);
@@ -906,7 +923,7 @@ esxVI_Enumeration_Deserialize(const esxVI_Enumeration *enumeration,
}
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Unknown value '%s' for %s",
- name, enumeration->type);
+ name, esxVI_Type_ToString(enumeration->type));
cleanup:
VIR_FREE(name);
@@ -1009,7 +1026,7 @@ esxVI_List_CastFromAnyType(esxVI_AnyType *anyType, esxVI_List
**list,
return -1;
}
- for (childNode = anyType->_node->children; childNode != NULL;
+ for (childNode = anyType->node->children; childNode != NULL;
childNode = childNode->next) {
if (childNode->type != XML_ELEMENT_NODE) {
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
@@ -1151,7 +1168,7 @@ esxVI_BuildFullTraversalSpecItem(esxVI_SelectionSpec
**fullTraversalSpecList,
}
if (esxVI_TraversalSpec_Alloc(&traversalSpec) < 0 ||
- esxVI_String_DeepCopyValue(&traversalSpec->_base->name, name) < 0
||
+ esxVI_String_DeepCopyValue(&traversalSpec->name, name) < 0 ||
esxVI_String_DeepCopyValue(&traversalSpec->type, type) < 0 ||
esxVI_String_DeepCopyValue(&traversalSpec->path, path) < 0) {
goto failure;
@@ -1177,7 +1194,8 @@ esxVI_BuildFullTraversalSpecItem(esxVI_SelectionSpec
**fullTraversalSpecList,
}
if (esxVI_SelectionSpec_AppendToList(fullTraversalSpecList,
- traversalSpec->_base) < 0) {
+ esxVI_SelectionSpec_DynamicCast
+ (traversalSpec)) < 0) {
goto failure;
}
@@ -1721,8 +1739,7 @@ esxVI_LookupResourcePoolByHostSystem
dynamicProperty = dynamicProperty->_next) {
if (STREQ(dynamicProperty->name, "parent")) {
if (esxVI_ManagedObjectReference_CastFromAnyType
- (dynamicProperty->val, &managedObjectReference,
- "ComputeResource") < 0) {
+ (dynamicProperty->val, &managedObjectReference) < 0) {
goto failure;
}
@@ -1756,7 +1773,7 @@ esxVI_LookupResourcePoolByHostSystem
dynamicProperty = dynamicProperty->_next) {
if (STREQ(dynamicProperty->name, "resourcePool")) {
if (esxVI_ManagedObjectReference_CastFromAnyType
- (dynamicProperty->val, resourcePool, "ResourcePool") <
0) {
+ (dynamicProperty->val, resourcePool) < 0) {
goto failure;
}
@@ -2231,7 +2248,7 @@ esxVI_LookupPendingTaskInfoListByVirtualMachine
dynamicProperty = dynamicProperty->_next) {
if (STREQ(dynamicProperty->name, "recentTask")) {
if (esxVI_ManagedObjectReference_CastListFromAnyType
- (dynamicProperty->val, &recentTaskList, "Task") <
0) {
+ (dynamicProperty->val, &recentTaskList) < 0) {
goto failure;
}
diff --git a/src/esx/esx_vi.h b/src/esx/esx_vi.h
index 1349a1b..555dad5 100644
--- a/src/esx/esx_vi.h
+++ b/src/esx/esx_vi.h
@@ -2,7 +2,7 @@
/*
* esx_vi.h: client for the VMware VI API 2.5 to manage ESX hosts
*
- * Copyright (C) 2009 Matthias Bolte <matthias.bolte(a)googlemail.com>
+ * Copyright (C) 2009-2010 Matthias Bolte <matthias.bolte(a)googlemail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -61,8 +61,9 @@ enum _esxVI_ProductVersion {
enum _esxVI_Occurrence {
esxVI_Occurrence_Undefined = 0,
esxVI_Occurrence_RequiredItem,
+ esxVI_Occurrence_RequiredList,
esxVI_Occurrence_OptionalItem,
- esxVI_Occurrence_List,
+ esxVI_Occurrence_OptionalList,
esxVI_Occurrence_None
};
@@ -132,7 +133,7 @@ struct _esxVI_EnumerationValue {
};
struct _esxVI_Enumeration {
- const char *type;
+ esxVI_Type type;
esxVI_EnumerationValue values[10];
};
diff --git a/src/esx/esx_vi_generator.input b/src/esx/esx_vi_generator.input
new file mode 100644
index 0000000..06dddbf
--- /dev/null
+++ b/src/esx/esx_vi_generator.input
@@ -0,0 +1,426 @@
+#
+# Definitions of vSphere API 2.5 enumeration and objects types used as input
+# for the esx_vi_generator.py script.
+#
+# This format is line-based, so end-of-line is important.
+#
+#
+# Enumeration definition:
+#
+# enum <name>
+# <value>
+# ...
+# end
+#
+#
+# Object definition:
+#
+# object <name> [extends <name>]
+# <type> <name> <occurrence>
+# ...
+# end
+#
+# Possible values for the <occurrence> field are:
+#
+# - r for a required item
+# - rl for a required list
+# - o for an optional item
+# - ol for an optional list
+# - i for an ignored item or list
+#
+# Object member sequence has to match the WSDL sequence
+#
+
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Enumerations
+#
+
+enum ManagedEntityStatus
+ gray
+ green
+ yellow
+ red
+end
+
+
+enum ObjectUpdateKind
+ modify
+ enter
+ leave
+end
+
+
+enum PerfStatsType
+ absolute
+ delta
+ rate
+end
+
+
+enum PerfSummaryType
+ average
+ maximum
+ minimum
+ latest
+ summation
+ none
+end
+
+
+enum PropertyChangeOp
+ add
+ remove
+ assign
+ indirectRemove
+end
+
+
+enum SharesLevel
+ low
+ normal
+ high
+ custom
+end
+
+
+enum TaskInfoState
+ queued
+ running
+ success
+ error
+end
+
+
+enum VirtualMachineMovePriority
+ lowPriority
+ highPriority
+ defaultPriority
+end
+
+
+enum VirtualMachinePowerState
+ poweredOff
+ poweredOn
+ suspended
+end
+
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Objects
+#
+
+object AboutInfo
+ String name r
+ String fullName r
+ String vendor r
+ String version r
+ String build r
+ String localeVersion o
+ String localeBuild o
+ String osType r
+ String productLineId r
+ String apiType r
+ String apiVersion r
+end
+
+
+object ChoiceOption extends OptionType
+ ElementDescription choiceInfo rl
+ Int defaultIndex o
+end
+
+
+object Description
+ String label r
+ String summary r
+end
+
+
+object DynamicProperty
+ String name r
+ AnyType val r
+end
+
+
+object ElementDescription extends Description
+ String key r
+end
+
+
+object Event
+ Int key r
+ Int chainId r
+ DateTime createdTime r
+ String userName r
+ DatacenterEventArgument datacenter i
+ ComputeResourceEventArgument computeResource i
+ HostEventArgument host i
+ VmEventArgument vm i
+ String fullFormattedMessage o
+end
+
+
+object HostCpuIdInfo
+ Int level r
+ String vendor o
+ String eax o
+ String ebx o
+ String ecx o
+ String edx o
+end
+
+
+object ObjectContent
+ ManagedObjectReference obj r
+ DynamicProperty propSet ol
+ MissingProperty missingSet i
+end
+
+
+object ObjectSpec
+ ManagedObjectReference obj r
+ Boolean skip o
+ SelectionSpec selectSet ol
+end
+
+
+object ObjectUpdate
+ ObjectUpdateKind kind r
+ ManagedObjectReference obj r
+ PropertyChange changeSet ol
+ MissingProperty missingSet i
+end
+
+
+object OptionType
+ Boolean valueIsReadonly o
+end
+
+
+object PerfCounterInfo
+ Int key r
+ ElementDescription nameInfo r
+ ElementDescription groupInfo r
+ ElementDescription unitInfo r
+ PerfSummaryType rollupType r
+ PerfStatsType statsType r
+ Int level o
+ Int associatedCounterId ol
+end
+
+
+object PerfEntityMetric extends PerfEntityMetricBase
+ PerfSampleInfo sampleInfo ol
+ PerfMetricSeries value ol
+end
+
+
+object PerfEntityMetricBase
+ ManagedObjectReference entity r
+end
+
+
+object PerfMetricId
+ Int counterId r
+ String instance r
+end
+
+
+object PerfMetricIntSeries extends PerfMetricSeries
+ Long value ol
+end
+
+
+object PerfMetricSeries
+ PerfMetricId id r
+end
+
+
+object PerfQuerySpec
+ ManagedObjectReference entity r
+ DateTime startTime o
+ DateTime endTime o
+ Int maxSample o
+ PerfMetricId metricId ol
+ Int intervalId o
+ String format o
+end
+
+
+object PerfSampleInfo
+ DateTime timestamp r
+ Int interval r
+end
+
+
+object PropertyChange
+ String name r
+ PropertyChangeOp op r
+ AnyType val o
+end
+
+
+object PropertyFilterSpec
+ PropertySpec propSet rl
+ ObjectSpec objectSet rl
+end
+
+
+object PropertyFilterUpdate
+ ManagedObjectReference filter r
+ ObjectUpdate objectSet ol
+ MissingObject missingSet i
+end
+
+
+object PropertySpec
+ String type r
+ Boolean all o
+ String pathSet ol
+end
+
+
+object ResourceAllocationInfo
+ Long reservation o
+ Boolean expandableReservation o
+ Long limit o
+ SharesInfo shares o
+ Long overheadLimit o
+end
+
+
+object ResourcePoolResourceUsage
+ Long reservationUsed r
+ Long reservationUsedForVm r
+ Long unreservedForPool r
+ Long unreservedForVm r
+ Long overallUsage r
+ Long maxUsage r
+end
+
+
+object SelectionSpec
+ String name o
+end
+
+
+object ServiceContent
+ ManagedObjectReference rootFolder r
+ ManagedObjectReference propertyCollector r
+ ManagedObjectReference viewManager o
+ AboutInfo about r
+ ManagedObjectReference setting o
+ ManagedObjectReference userDirectory o
+ ManagedObjectReference sessionManager o
+ ManagedObjectReference authorizationManager o
+ ManagedObjectReference perfManager o
+ ManagedObjectReference scheduledTaskManager o
+ ManagedObjectReference alarmManager o
+ ManagedObjectReference eventManager o
+ ManagedObjectReference taskManager o
+ ManagedObjectReference extensionManager o
+ ManagedObjectReference customizationSpecManager o
+ ManagedObjectReference customFieldsManager o
+ ManagedObjectReference accountManager o
+ ManagedObjectReference diagnosticManager o
+ ManagedObjectReference licenseManager o
+ ManagedObjectReference searchIndex o
+ ManagedObjectReference fileManager o
+ ManagedObjectReference virtualDiskManager o
+ ManagedObjectReference virtualizationManager o
+end
+
+
+object SharesInfo
+ Int shares r
+ SharesLevel level r
+end
+
+
+object TaskInfo
+ String key r
+ ManagedObjectReference task r
+ String name o
+ String descriptionId r
+ ManagedObjectReference entity o
+ String entityName o
+ ManagedObjectReference locked ol
+ TaskInfoState state r
+ Boolean cancelled r
+ Boolean cancelable r
+ LocalizedMethodFault error i
+ AnyType result o
+ Int progress o
+ TaskReason reason i
+ DateTime queueTime r
+ DateTime startTime o
+ DateTime completeTime o
+ Int eventChainId r
+end
+
+
+object TraversalSpec extends SelectionSpec
+ String type r
+ String path r
+ Boolean skip o
+ SelectionSpec selectSet ol
+end
+
+
+object UpdateSet
+ String version r
+ PropertyFilterUpdate filterSet ol
+end
+
+
+object UserSession
+ String key r
+ String userName r
+ String fullName r
+ DateTime loginTime r
+ DateTime lastActiveTime r
+ String locale r
+ String messageLocale r
+end
+
+
+object VirtualMachineConfigSpec
+ String changeVersion o
+ String name o
+ String version o
+ String uuid o
+ Long npivNodeWorldWideName ol
+ Long npivPortWorldWideName ol
+ String npivWorldWideNameType o
+ String npivWorldWideNameOp o
+ String locationId o
+ String guestId o
+ String alternateGuestName o
+ String annotation o
+ VirtualMachineFileInfo files i
+ ToolsConfigInfo tools i
+ VirtualMachineFlagInfo flags i
+ VirtualMachineConsolePreferences consolePreferences i
+ VirtualMachineDefaultPowerOpInfo powerOpInfo i
+ Int numCPUs o
+ Long memoryMB o
+ VirtualDeviceConfigSpec deviceChange i
+ ResourceAllocationInfo cpuAllocation o
+ ResourceAllocationInfo memoryAllocation o
+ VirtualMachineAffinityInfo cpuAffinity i
+ VirtualMachineAffinityInfo memoryAffinity i
+ VirtualMachineNetworkShaperInfo networkShaper i
+ VirtualMachineCpuIdInfoSpec cpuFeatureMask i
+ OptionValue extraConfig i
+ String swapPlacement o
+ VirtualMachineBootOptions bootOptions i
+end
+
+
+object VirtualMachineQuestionInfo
+ String id r
+ String text r
+ ChoiceOption choice r
+ VirtualMachineMessage message i
+end
diff --git a/src/esx/esx_vi_generator.py b/src/esx/esx_vi_generator.py
new file mode 100755
index 0000000..5ca6138
--- /dev/null
+++ b/src/esx/esx_vi_generator.py
@@ -0,0 +1,1025 @@
+#!/usr/bin/python
+
+#
+# esx_vi_generator.py: generates most of the SOAP type mapping code
+#
+# Copyright (C) 2010 Matthias Bolte <matthias.bolte(a)googlemail.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+import sys
+import os
+import os.path
+
+
+
+
+
+
+class Property:
+ OCCURRENCE__REQUIRED_ITEM = "r"
+ OCCURRENCE__REQUIRED_LIST = "rl"
+ OCCURRENCE__OPTIONAL_ITEM = "o"
+ OCCURRENCE__OPTIONAL_LIST = "ol"
+ OCCURRENCE__IGNORED = "i"
+
+ valid_occurrences = [OCCURRENCE__REQUIRED_ITEM,
+ OCCURRENCE__REQUIRED_LIST,
+ OCCURRENCE__OPTIONAL_ITEM,
+ OCCURRENCE__OPTIONAL_LIST,
+ OCCURRENCE__IGNORED]
+
+ def __init__(self, type, name, occurrence):
+ self.type = type
+ self.name = name
+ self.occurrence = occurrence
+
+ def is_enum(self):
+ global predefined_enums
+ global enums_by_name
+
+ return self.type in predefined_enums or self.type in enums_by_name
+
+ def generate_struct_member(self):
+ if self.occurrence == Property.OCCURRENCE__IGNORED:
+ return " /* FIXME: %s is currently ignored */\n" % self.name
+ else:
+ string = " %s%s; " % (self.get_type_string(), self.name)
+
+ while len(string) < 59:
+ string += " "
+
+ return string + "/* %s */\n" % self.get_occurrence_string()
+
+ def generate_free_code(self):
+ if self.type == "String" and \
+ self.occurrence not in [Property.OCCURRENCE__REQUIRED_LIST,
+ Property.OCCURRENCE__OPTIONAL_LIST,
+ Property.OCCURRENCE__IGNORED]:
+ return " VIR_FREE(item->%s);\n" % self.name
+ elif self.is_enum():
+ return ""
+ else:
+ if self.occurrence == Property.OCCURRENCE__IGNORED:
+ return " /* FIXME: %s is currently ignored */\n" %
self.name
+ else:
+ return " esxVI_%s_Free(&item->%s);\n" % (self.type,
self.name)
+
+ def generate_validate_code(self):
+ if self.occurrence in [Property.OCCURRENCE__REQUIRED_ITEM,
+ Property.OCCURRENCE__REQUIRED_LIST]:
+ return " ESX_VI__TEMPLATE__PROPERTY__REQUIRE(%s)\n" % self.name
+ elif self.occurrence == Property.OCCURRENCE__IGNORED:
+ return " /* FIXME: %s is currently ignored */\n" % self.name
+ else:
+ return ""
+
+ def generate_deep_copy_code(self):
+ if self.occurrence == Property.OCCURRENCE__IGNORED:
+ return " /* FIXME: %s is currently ignored */\n" % self.name
+ elif self.occurrence in [Property.OCCURRENCE__REQUIRED_LIST,
+ Property.OCCURRENCE__OPTIONAL_LIST]:
+ return " ESX_VI__TEMPLATE__PROPERTY__DEEP_COPY_LIST(%s, %s)\n" %
(self.type, self.name)
+ elif self.type == "String":
+ return " ESX_VI__TEMPLATE__PROPERTY__DEEP_COPY_VALUE(String,
%s)\n" % self.name
+ else:
+ return " ESX_VI__TEMPLATE__PROPERTY__DEEP_COPY(%s, %s)\n" %
(self.type, self.name)
+
+ def generate_serialize_code(self):
+ if self.occurrence == Property.OCCURRENCE__IGNORED:
+ return " /* FIXME: %s is currently ignored */\n" % self.name
+ elif self.occurrence in [Property.OCCURRENCE__REQUIRED_LIST,
+ Property.OCCURRENCE__OPTIONAL_LIST]:
+ return " ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_LIST(%s, %s)\n" %
(self.type, self.name)
+ elif self.type == "String":
+ return " ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String,
%s)\n" % self.name
+ else:
+ return " ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(%s, %s)\n" %
(self.type, self.name)
+
+ def generate_deserialize_code(self):
+ if self.occurrence == Property.OCCURRENCE__IGNORED:
+ return " ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_IGNORE(%s) /* FIXME
*/\n" % self.name
+ elif self.occurrence in [Property.OCCURRENCE__REQUIRED_LIST,
+ Property.OCCURRENCE__OPTIONAL_LIST]:
+ return " ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(%s, %s)\n"
% (self.type, self.name)
+ elif self.type == "String":
+ return " ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String,
%s)\n" % self.name
+ else:
+ return " ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(%s, %s)\n" %
(self.type, self.name)
+
+ def get_type_string(self):
+ if self.type == "String" and \
+ self.occurrence not in [Property.OCCURRENCE__REQUIRED_LIST,
+ Property.OCCURRENCE__OPTIONAL_LIST]:
+ return "char *"
+ elif self.is_enum():
+ return "esxVI_%s " % self.type
+ else:
+ return "esxVI_%s *" % self.type
+
+ def get_occurrence_string(self):
+ if self.occurrence == Property.OCCURRENCE__REQUIRED_ITEM:
+ return "required"
+ elif self.occurrence == Property.OCCURRENCE__REQUIRED_LIST:
+ return "required, list"
+ elif self.occurrence == Property.OCCURRENCE__OPTIONAL_ITEM:
+ return "optional"
+ elif self.occurrence == Property.OCCURRENCE__OPTIONAL_LIST:
+ return "optional, list"
+
+ raise ValueError("unknown cardinality value '%s'" %
self.cardinality)
+
+
+
+
+
+
+
+
+class Object:
+ FEATURE__DYNAMIC_CAST = (1 << 1)
+ FEATURE__LIST = (1 << 2)
+ FEATURE__DEEP_COPY = (1 << 3)
+ FEATURE__ANY_TYPE = (1 << 4)
+ FEATURE__SERIALIZE = (1 << 5)
+ FEATURE__DESERIALIZE = (1 << 6)
+
+ def __init__(self, name, extends, properties, features = 0, extended_by = None):
+ self.name = name
+ self.extends = extends
+ self.features = features | Object.FEATURE__SERIALIZE |
Object.FEATURE__DESERIALIZE
+ self.properties = properties
+ self.extended_by = extended_by
+
+ self.properties_by_name = {}
+
+ for property in self.properties:
+ self.properties_by_name[property.name] = property
+
+ def generate_struct_members(self, add_banner = False, struct_gap = False):
+ global objects_by_name
+ members = ""
+
+ if self.extends is None:
+ struct_gap = True
+ string = " esxVI_Type _type; "
+
+ while len(string) < 59:
+ string += " "
+
+ members += string + "/* required */\n"
+
+ if struct_gap and self.extends is None:
+ members += "\n"
+
+ if self.extends is not None:
+ members += objects_by_name[self.extends].generate_struct_members(add_banner =
True, struct_gap = False) + "\n"
+
+ if self.extends is not None or add_banner:
+ members += " /* %s */\n" % self.name
+
+ for property in self.properties:
+ members += property.generate_struct_member()
+
+ if len(self.properties) < 1:
+ members += " /* no properties */\n"
+
+ return members
+
+ def generate_free_code(self, add_banner = False):
+ global objects_by_name
+ source = ""
+
+ if self.extends is not None:
+ source += objects_by_name[self.extends].generate_free_code(add_banner = True)
+ "\n"
+
+ if self.extends is not None or add_banner:
+ source += " /* %s */\n" % self.name
+
+ if len(self.properties) < 1:
+ source += " /* no properties */\n"
+ else:
+ string = ""
+
+ for property in self.properties:
+ string += property.generate_free_code()
+
+ if len(string) < 1:
+ source += " /* no properties to be freed */\n"
+ else:
+ source += string
+
+ return source
+
+ def generate_validate_code(self, add_banner = False):
+ global objects_by_name
+ source = ""
+
+ if self.extends is not None:
+ source += objects_by_name[self.extends].generate_validate_code(add_banner =
True) + "\n"
+
+ if self.extends is not None or add_banner:
+ source += " /* %s */\n" % self.name
+
+ if len(self.properties) < 1:
+ source += " /* no properties */\n"
+ else:
+ string = ""
+
+ for property in self.properties:
+ string += property.generate_validate_code()
+
+ if len(string) < 1:
+ source += " /* no required properties */\n"
+ else:
+ source += string
+
+ return source
+
+ def generate_dynamic_cast_code(self):
+ global objects_by_name
+ source = ""
+
+ if self.extended_by is not None:
+ source += " /* %s */\n" % self.name
+
+ for extended_by in self.extended_by:
+ source += " ESX_VI__TEMPLATE__DYNAMIC_CAST__ACCEPT(%s)\n" %
extended_by
+
+ for extended_by in self.extended_by:
+ source += objects_by_name[extended_by].generate_dynamic_cast_code()
+
+ return source
+
+ def generate_deep_copy_code(self, add_banner = False):
+ global objects_by_name
+ source = ""
+
+ if self.extends is not None:
+ source += objects_by_name[self.extends].generate_deep_copy_code(add_banner =
True) + "\n"
+
+ if self.extends is not None or add_banner:
+ source += " /* %s */\n" % self.name
+
+ if len(self.properties) < 1:
+ source += " /* no properties */\n"
+ else:
+ string = ""
+
+ for property in self.properties:
+ string += property.generate_deep_copy_code()
+
+ if len(string) < 1:
+ source += " /* no properties to be deep copied */\n"
+ else:
+ source += string
+
+ return source
+
+ def generate_serialize_code(self, add_banner = False):
+ global objects_by_name
+ source = ""
+
+ if self.extends is not None:
+ source += objects_by_name[self.extends].generate_serialize_code(add_banner =
True) + "\n"
+
+ if self.extends is not None or add_banner:
+ source += " /* %s */\n" % self.name
+
+ if len(self.properties) < 1:
+ source += " /* no properties */\n"
+ else:
+ for property in self.properties:
+ source += property.generate_serialize_code()
+
+ return source
+
+ def generate_deserialize_code(self, add_banner = False):
+ global objects_by_name
+ source = ""
+
+ if self.extends is not None:
+ source += objects_by_name[self.extends].generate_deserialize_code(add_banner
= True) + "\n"
+
+ if self.extends is not None or add_banner:
+ source += " /* %s */\n" % self.name
+
+ if len(self.properties) < 1:
+ source += " /* no properties */\n"
+ else:
+ for property in self.properties:
+ source += property.generate_deserialize_code()
+
+ return source
+
+ def generate_typedef(self):
+ return "typedef struct _esxVI_%s esxVI_%s;\n" % (self.name, self.name)
+
+ def generate_typeenum(self):
+ return " esxVI_Type_%s,\n" % self.name
+
+ def generate_typetostring(self):
+ string = " case esxVI_Type_%s:\n" % self.name
+ string += " return \"%s\";\n\n" % self.name
+
+ return string
+
+ def generate_typefromstring(self):
+ string = " else if (STREQ(type, \"%s\")) {\n" %
self.name
+ string += " return esxVI_Type_%s;\n" % self.name
+ string += " }\n"
+
+ return string
+
+ def generate_header(self):
+ header = "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * *\n"
+ header += " * VI Type: %s\n" % self.name
+
+ if self.extends is not None:
+ header += " * extends %s\n" % self.extends
+
+ first = True
+
+ if self.extended_by is not None:
+ for extended_by in self.extended_by:
+ if first:
+ header += " * extended by %s\n" % extended_by
+ first = False
+ else:
+ header += " * %s\n" % extended_by
+
+ header += " */\n\n"
+
+ # struct
+ header += "struct _esxVI_%s {\n" % self.name
+
+ if self.features & Object.FEATURE__LIST:
+ string = " esxVI_%s *_next; " % self.name
+ else:
+ string = " esxVI_%s *_unused; " % self.name
+
+ while len(string) < 59:
+ string += " "
+
+ header += string + "/* optional */\n"
+
+ header += self.generate_struct_members(struct_gap = True)
+
+ header += "};\n\n"
+
+ # functions
+ header += "int esxVI_%s_Alloc(esxVI_%s **item);\n" % (self.name,
self.name)
+ header += "void esxVI_%s_Free(esxVI_%s **item);\n" % (self.name,
self.name)
+ header += "int esxVI_%s_Validate(esxVI_%s *item);\n" % (self.name,
self.name)
+
+ if self.features & Object.FEATURE__DYNAMIC_CAST:
+ if self.extended_by is not None or self.extends is not None:
+ header += "esxVI_%s *esxVI_%s_DynamicCast(void *item);\n" %
(self.name, self.name)
+ else:
+ report_error("cannot add dynamic cast support for an untyped
object")
+
+ if self.features & Object.FEATURE__LIST:
+ header += "int esxVI_%s_AppendToList(esxVI_%s **list, esxVI_%s
*item);\n" % (self.name, self.name, self.name)
+
+ if self.features & Object.FEATURE__DEEP_COPY:
+ header += "int esxVI_%s_DeepCopy(esxVI_%s **dst, esxVI_%s *src);\n"
% (self.name, self.name, self.name)
+
+ if self.features & Object.FEATURE__LIST:
+ header += "int esxVI_%s_DeepCopyList(esxVI_%s **dstList, esxVI_%s
*srcList);\n" % (self.name, self.name, self.name)
+
+ if self.features & Object.FEATURE__ANY_TYPE:
+ header += "int esxVI_%s_CastFromAnyType(esxVI_AnyType *anyType, esxVI_%s
**item);\n" % (self.name, self.name)
+
+ if self.features & Object.FEATURE__LIST:
+ header += "int esxVI_%s_CastListFromAnyType(esxVI_AnyType *anyType,
esxVI_%s **list);\n" % (self.name, self.name)
+
+ if self.features & Object.FEATURE__SERIALIZE:
+ header += "int esxVI_%s_Serialize(esxVI_%s *item, const char *element,
virBufferPtr output);\n" % (self.name, self.name)
+
+ if self.features & Object.FEATURE__LIST:
+ header += "int esxVI_%s_SerializeList(esxVI_%s *list, const char
*element, virBufferPtr output);\n" % (self.name, self.name)
+
+ if self.features & Object.FEATURE__DESERIALIZE:
+ header += "int esxVI_%s_Deserialize(xmlNodePtr node, esxVI_%s
**item);\n" % (self.name, self.name)
+
+ if self.features & Object.FEATURE__LIST:
+ header += "int esxVI_%s_DeserializeList(xmlNodePtr node, esxVI_%s
**list);\n" % (self.name, self.name)
+
+ header += "\n\n\n"
+
+ return header
+
+ def generate_source(self):
+ source = "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * *\n"
+ source += " * VI Type: %s\n" % self.name
+
+ if self.extends is not None:
+ source += " * extends %s\n" % self.extends
+
+ first = True
+
+ if self.extended_by is not None:
+ for extended_by in self.extended_by:
+ if first:
+ source += " * extended by %s\n" % extended_by
+ first = False
+ else:
+ source += " * %s\n" % extended_by
+
+ source += " */\n\n"
+
+ # functions
+ source += "/* esxVI_%s_Alloc */\n" % self.name
+ source += "ESX_VI__TEMPLATE__ALLOC(%s)\n\n" % self.name
+
+ # free
+ if self.extended_by is None:
+ source += "/* esxVI_%s_Free */\n" % self.name
+ source += "ESX_VI__TEMPLATE__FREE(%s,\n" % self.name
+ source += "{\n"
+
+ if self.features & Object.FEATURE__LIST:
+ source += " esxVI_%s_Free(&item->_next);\n\n" %
self.name
+
+ source += self.generate_free_code()
+
+ source += "})\n\n"
+ else:
+ source += "/* esxVI_%s_Free */\n" % self.name
+ source += "ESX_VI__TEMPLATE__DYNAMIC_FREE(%s,\n" % self.name
+ source += "{\n"
+
+ for extended_by in self.extended_by:
+ source += " ESX_VI__TEMPLATE__DISPATCH__FREE(%s)\n" %
extended_by
+
+ source += "},\n"
+ source += "{\n"
+
+ if self.features & Object.FEATURE__LIST:
+ source += " esxVI_%s_Free(&item->_next);\n\n" %
self.name
+
+ source += self.generate_free_code()
+
+ source += "})\n\n"
+
+ # validate
+ source += "/* esxVI_%s_Validate */\n" % self.name
+ source += "ESX_VI__TEMPLATE__VALIDATE(%s,\n" % self.name
+ source += "{\n"
+
+ source += self.generate_validate_code()
+
+ source += "})\n\n"
+
+ # dynamic cast
+ if self.features & Object.FEATURE__DYNAMIC_CAST:
+ if self.extended_by is not None or self.extends is not None:
+ source += "/* esxVI_%s_DynamicCast */\n" % self.name
+ source += "ESX_VI__TEMPLATE__DYNAMIC_CAST(%s,\n" % self.name
+ source += "{\n"
+
+ source += self.generate_dynamic_cast_code()
+
+ source += "})\n\n"
+ else:
+ report_error("cannot add dynamic cast support for an untyped
object")
+
+ # append to list
+ if self.features & Object.FEATURE__LIST:
+ source += "/* esxVI_%s_AppendToList */\n" % self.name
+ source += "ESX_VI__TEMPLATE__LIST__APPEND(%s)\n\n" % self.name
+
+ # deep copy
+ if self.extended_by is None:
+ if self.features & Object.FEATURE__DEEP_COPY:
+ source += "/* esxVI_%s_DeepCopy */\n" % self.name
+ source += "ESX_VI__TEMPLATE__DEEP_COPY(%s,\n" % self.name
+ source += "{\n"
+
+ source += self.generate_deep_copy_code()
+
+ source += "})\n\n"
+
+ if self.features & Object.FEATURE__LIST:
+ source += "/* esxVI_%s_DeepCopyList */\n" % self.name
+ source += "ESX_VI__TEMPLATE__LIST__DEEP_COPY(%s)\n\n" %
self.name
+ else:
+ if self.features & Object.FEATURE__DEEP_COPY:
+ source += "/* esxVI_%s_DeepCopy */\n" % self.name
+ source += "ESX_VI__TEMPLATE__DYNAMIC_DEEP_COPY(%s)\n" %
self.name
+ source += "{\n"
+
+ for extended_by in self.extended_by:
+ source += " ESX_VI__TEMPLATE__DISPATCH__DEEP_COPY(%s)\n"
% extended_by
+
+ source += "},\n"
+ source += "{\n"
+
+ source += self.generate_deep_copy_code()
+
+ source += "})\n\n"
+
+ if self.features & Object.FEATURE__LIST:
+ source += "/* esxVI_%s_DeepCopyList */\n" % self.name
+ source += "ESX_VI__TEMPLATE__LIST__DEEP_COPY(%s)\n\n" %
self.name
+
+ # cast from any type
+ if self.features & Object.FEATURE__ANY_TYPE:
+ source += "/* esxVI_%s_CastFromAnyType */\n" % self.name
+ source += "ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(%s)\n" % self.name
+
+ if self.features & Object.FEATURE__LIST:
+ source += "/* esxVI_%s_CastListFromAnyType */\n" % self.name
+ source += "ESX_VI__TEMPLATE__LIST__CAST_FROM_ANY_TYPE(%s)\n\n"
% self.name
+
+ # serialize
+ if self.extended_by is None:
+ if self.features & Object.FEATURE__SERIALIZE:
+ source += "/* esxVI_%s_Serialize */\n" % self.name
+ source += "ESX_VI__TEMPLATE__SERIALIZE(%s,\n" % self.name
+ source += "{\n"
+
+ source += self.generate_serialize_code()
+
+ source += "})\n\n"
+
+ if self.features & Object.FEATURE__LIST:
+ source += "/* esxVI_%s_SerializeList */\n" % self.name
+ source += "ESX_VI__TEMPLATE__LIST__SERIALIZE(%s)\n\n" %
self.name
+ else:
+ if self.features & Object.FEATURE__SERIALIZE:
+ source += "/* esxVI_%s_Serialize */\n" % self.name
+ source += "ESX_VI__TEMPLATE__DYNAMIC_SERIALIZE(%s,\n" %
self.name
+ source += "{\n"
+
+ for extended_by in self.extended_by:
+ source += " ESX_VI__TEMPLATE__DISPATCH__SERIALIZE(%s)\n"
% extended_by
+
+ source += "},\n"
+ source += "{\n"
+
+ source += self.generate_serialize_code()
+
+ source += "})\n\n"
+
+ if self.features & Object.FEATURE__LIST:
+ source += "/* esxVI_%s_SerializeList */\n" % self.name
+ source += "ESX_VI__TEMPLATE__LIST__SERIALIZE(%s)\n\n" %
self.name
+
+ # deserilaize
+ if self.features & Object.FEATURE__DESERIALIZE:
+ source += "/* esxVI_%s_Deserialize */\n" % self.name
+ source += "ESX_VI__TEMPLATE__DESERIALIZE(%s,\n" % self.name
+ source += "{\n"
+
+ source += self.generate_deserialize_code()
+
+ source += "})\n\n"
+
+ if self.features & Object.FEATURE__LIST:
+ source += "/* esxVI_%s_DeserializeList */\n" % self.name
+ source += "ESX_VI__TEMPLATE__LIST__DESERIALIZE(%s)\n\n" %
self.name
+
+ source += "\n\n"
+
+ return source
+
+
+
+
+
+
+
+
+class Enum:
+ FEATURE__ANY_TYPE = (1 << 1)
+ FEATURE__SERIALIZE = (1 << 2)
+ FEATURE__DESERIALIZE = (1 << 3)
+
+
+ def __init__(self, name, values, features = 0):
+ self.name = name
+ self.values = values
+ self.features = features | Enum.FEATURE__SERIALIZE | Enum.FEATURE__DESERIALIZE
+
+ def generate_typedef(self):
+ return "typedef enum _esxVI_%s esxVI_%s;\n" % (self.name, self.name)
+
+ def generate_typeenum(self):
+ return " esxVI_Type_%s,\n" % self.name
+
+ def generate_typetostring(self):
+ string = " case esxVI_Type_%s:\n" % self.name
+ string += " return \"%s\";\n\n" % self.name
+
+ return string
+
+ def generate_typefromstring(self):
+ string = " else if (STREQ(type, \"%s\")) {\n" %
self.name
+ string += " return esxVI_Type_%s;\n" % self.name
+ string += " }\n"
+
+ return string
+
+ def generate_header(self):
+ header = "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * *\n"
+ header += " * VI Enum: %s\n" % self.name
+ header += " */\n\n"
+
+ # enum
+ header += "enum _esxVI_%s {\n" % self.name
+ header += " esxVI_%s_Undefined = 0,\n" % self.name
+
+ for value in self.values:
+ header += " esxVI_%s_%s,\n" % (self.name,
capitalize_first(value))
+
+ header += "};\n\n"
+
+ # functions
+ if self.features & Enum.FEATURE__ANY_TYPE:
+ header += "int esxVI_%s_CastFromAnyType(esxVI_AnyType *anyType, esxVI_%s
*item);\n" % (self.name, self.name)
+
+ if self.features & Enum.FEATURE__SERIALIZE:
+ header += "int esxVI_%s_Serialize(esxVI_%s item, const char *element,
virBufferPtr output);\n" % (self.name, self.name)
+
+ if self.features & Enum.FEATURE__DESERIALIZE:
+ header += "int esxVI_%s_Deserialize(xmlNodePtr node, esxVI_%s
*item);\n" % (self.name, self.name)
+
+ header += "\n\n\n"
+
+ return header
+
+ def generate_source(self):
+ source = "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * *\n"
+ source += " * VI Enum: %s\n" % self.name
+ source += " */\n\n"
+
+ source += "static const esxVI_Enumeration _esxVI_%s_Enumeration = {\n"
% self.name
+ source += " esxVI_Type_%s, {\n" % self.name
+
+ for value in self.values:
+ source += " { \"%s\", esxVI_%s_%s },\n" % (value,
self.name, capitalize_first(value))
+
+ source += " { NULL, -1 },\n"
+ source += " },\n"
+ source += "};\n\n"
+
+ # functions
+ if self.features & Enum.FEATURE__ANY_TYPE:
+ source += "/* esxVI_%s_CastFromAnyType */\n" % self.name
+ source +=
"ESX_VI__TEMPLATE__ENUMERATION__CAST_FROM_ANY_TYPE(%s)\n\n" % self.name
+
+ if self.features & Enum.FEATURE__SERIALIZE:
+ source += "/* esxVI_%s_Serialize */\n" % self.name
+ source += "ESX_VI__TEMPLATE__ENUMERATION__SERIALIZE(%s)\n\n" %
self.name
+
+ if self.features & Enum.FEATURE__DESERIALIZE:
+ source += "/* esxVI_%s_Deserialize */\n" % self.name
+ source += "ESX_VI__TEMPLATE__ENUMERATION__DESERIALIZE(%s)\n\n" %
self.name
+
+ source += "\n\n"
+
+ return source
+
+
+
+
+
+def report_error(message):
+ print "error: " + message
+ sys.exit(1)
+
+
+
+def usage():
+ print "%s <input-filename> <output-directory>" % sys.argv[0]
+ sys.exit(0)
+
+
+
+def capitalize_first(string):
+ return string[:1].upper() + string[1:]
+
+
+
+def parse_object(block):
+ # expected format: object <name> [extends <name>]
+ header_items = block[0][1].split()
+
+ if len(header_items) < 2:
+ report_error("line %d: invalid block header" % (number))
+
+ assert header_items[0] == "object"
+
+ name = header_items[1]
+ extends = None
+
+ if len(header_items) > 2:
+ if header_items[2] != "extends":
+ report_error("line %d: invalid block header" % (number))
+ else:
+ extends = header_items[3]
+
+ properties = []
+
+ for line in block[1:]:
+ # expected format: <type> <name> <occurrence>
+ items = line[1].split()
+
+ if len(items) != 3:
+ report_error("line %d: invalid property" % line[0])
+
+ if items[2] not in Property.valid_occurrences:
+ report_error("line %d: invalid occurrence" % line[0])
+
+ properties.append(Property(type = items[0], name = items[1],
+ occurrence = items[2]))
+
+ return Object(name = name, extends = extends, properties = properties)
+
+
+
+def parse_enum(block):
+ # expected format: enum <name>
+ header_items = block[0][1].split()
+
+ if len(header_items) < 2:
+ report_error("line %d: invalid block header" % (number))
+
+ assert header_items[0] == "enum"
+
+ name = header_items[1]
+
+ values = []
+
+ for line in block[1:]:
+ # expected format: <value>
+ values.append(line[1])
+
+ return Enum(name = name, values = values)
+
+
+
+def inherit_features(obj):
+ if obj.extended_by is not None:
+ for extended_by in obj.extended_by:
+ objects_by_name[extended_by].features |= obj.features
+
+ if obj.extends is not None:
+ objects_by_name[obj.extends].features |= obj.features
+
+ if obj.extended_by is not None:
+ for extended_by in obj.extended_by:
+ inherit_features(objects_by_name[extended_by])
+
+
+
+def is_known_type(type):
+ return type in predefined_objects or \
+ type in predefined_enums or \
+ type in objects_by_name or \
+ type in enums_by_name
+
+
+
+def open_and_print(filename):
+ if filename.startswith("./"):
+ print " GEN " + filename[2:]
+ else:
+ print " GEN " + filename
+
+ return open(filename, "wb")
+
+
+
+
+
+
+
+
+
+
+predefined_enums = ["Boolean"]
+
+predefined_objects = ["AnyType",
+ "Int",
+ "Long",
+ "String",
+ "DateTime",
+ "ManagedObjectReference"]
+
+
+additional_enum_features = { "ManagedEntityStatus" :
Enum.FEATURE__ANY_TYPE,
+ "TaskInfoState" :
Enum.FEATURE__ANY_TYPE,
+ "VirtualMachinePowerState" :
Enum.FEATURE__ANY_TYPE }
+
+
+additional_object_features = { "Event" :
Object.FEATURE__LIST,
+ "HostCpuIdInfo" :
Object.FEATURE__ANY_TYPE | Object.FEATURE__LIST,
+ "ManagedObjectReference" :
Object.FEATURE__ANY_TYPE,
+ "ObjectContent" :
Object.FEATURE__DEEP_COPY | Object.FEATURE__LIST,
+ "PerfCounterInfo" :
Object.FEATURE__LIST,
+ "PerfEntityMetric" :
Object.FEATURE__LIST,
+ "PerfQuerySpec" :
Object.FEATURE__LIST,
+ "PerfMetricIntSeries" :
Object.FEATURE__DYNAMIC_CAST,
+ "PropertyFilterSpec" :
Object.FEATURE__LIST,
+ "ResourcePoolResourceUsage" :
Object.FEATURE__ANY_TYPE,
+ "SelectionSpec" :
Object.FEATURE__DYNAMIC_CAST,
+ "SharesInfo" :
Object.FEATURE__ANY_TYPE,
+ "TaskInfo" :
Object.FEATURE__ANY_TYPE | Object.FEATURE__LIST,
+ "UserSession" :
Object.FEATURE__ANY_TYPE,
+ "VirtualMachineQuestionInfo" :
Object.FEATURE__ANY_TYPE }
+
+
+removed_object_features = { "DynamicProperty" :
Object.FEATURE__SERIALIZE,
+ "ObjectContent" :
Object.FEATURE__SERIALIZE,
+ "ObjectUpdate" :
Object.FEATURE__SERIALIZE,
+ "PropertyChange" :
Object.FEATURE__SERIALIZE,
+ "PropertyFilterUpdate" :
Object.FEATURE__SERIALIZE,
+ "TaskInfo" :
Object.FEATURE__SERIALIZE,
+ "UpdateSet" :
Object.FEATURE__SERIALIZE,
+ "VirtualMachineConfigInfo" :
Object.FEATURE__SERIALIZE }
+
+
+
+
+if "srcdir" in os.environ:
+ input_filename = os.path.join(os.environ["srcdir"],
"esx/esx_vi_generator.input")
+ output_dirname = os.path.join(os.environ["srcdir"], "esx")
+else:
+ input_filename = os.path.join(os.getcwd(), "esx_vi_generator.input")
+ output_dirname = os.getcwd()
+
+
+
+typedef = open_and_print(os.path.join(output_dirname,
"esx_vi_types.generated.typedef"))
+typeenum = open_and_print(os.path.join(output_dirname,
"esx_vi_types.generated.typeenum"))
+typetostring = open_and_print(os.path.join(output_dirname,
"esx_vi_types.generated.typetostring"))
+typefromstring = open_and_print(os.path.join(output_dirname,
"esx_vi_types.generated.typefromstring"))
+header = open_and_print(os.path.join(output_dirname,
"esx_vi_types.generated.h"))
+source = open_and_print(os.path.join(output_dirname,
"esx_vi_types.generated.c"))
+
+
+
+number = 0
+objects_by_name = {}
+enums_by_name = {}
+block = None
+
+
+
+for line in file(input_filename, "rb").readlines():
+ number += 1
+
+ if "#" in line:
+ line = line[:line.index("#")]
+
+ line = line.lstrip().rstrip()
+
+ if len(line) < 1:
+ continue
+
+ if line.startswith("object") or line.startswith("enum"):
+ if block is not None:
+ report_error("line %d: nested block found" % (number))
+ else:
+ block = []
+
+ if block is not None:
+ if line == "end":
+ if block[0][1].startswith("object"):
+ obj = parse_object(block)
+ objects_by_name[obj.name] = obj
+ else:
+ enum = parse_enum(block)
+ enums_by_name[enum.name] = enum
+
+ block = None
+ else:
+ block.append((number, line))
+
+
+
+for enum in enums_by_name.values():
+ # apply additional features
+ if enum.name in additional_enum_features:
+ enum.features |= additional_enum_features[enum.name]
+
+
+
+for obj in objects_by_name.values():
+ for property in obj.properties:
+ if property.occurrence != Property.OCCURRENCE__IGNORED and \
+ not is_known_type(property.type):
+ report_error("object '%s' contains unknown property type
'%s'" % (obj.name, property.type))
+
+ if obj.extends is not None:
+ if not is_known_type(obj.extends):
+ report_error("object '%s' extends unknown object
'%s'" % (obj.name, obj.extends))
+
+ # detect list usage
+ for property in obj.properties:
+ if (property.occurrence == Property.OCCURRENCE__REQUIRED_LIST or \
+ property.occurrence == Property.OCCURRENCE__OPTIONAL_LIST) and \
+ property.type not in predefined_objects:
+ objects_by_name[property.type].features |= Object.FEATURE__LIST
+
+ # apply/remove additional features
+ if obj.name in additional_object_features:
+ obj.features |= additional_object_features[obj.name]
+
+ if obj.name in removed_object_features:
+ obj.features &= ~removed_object_features[obj.name]
+
+ # spread deep copy onto properties
+ if obj.features & Object.FEATURE__DEEP_COPY:
+ for property in obj.properties:
+ if property.occurrence != Property.OCCURRENCE__IGNORED and \
+ property.type not in predefined_objects:
+ objects_by_name[property.type].features |= Object.FEATURE__DEEP_COPY
+
+ # detect extended_by relation
+ if obj.extends is not None:
+ extended_obj = objects_by_name[obj.extends]
+
+ if extended_obj.extended_by is None:
+ extended_obj.extended_by = [obj.name]
+ else:
+ extended_obj.extended_by.append(obj.name)
+
+
+
+
+
+for obj in objects_by_name.values():
+ inherit_features(obj)
+
+
+
+
+
+typedef.write("/* Generated by esx_vi_generator.py */\n\n\n\n")
+typeenum.write("/* Generated by esx_vi_generator.py */\n\n")
+typetostring.write("/* Generated by esx_vi_generator.py */\n\n")
+typefromstring.write("/* Generated by esx_vi_generator.py */\n\n")
+header.write("/* Generated by esx_vi_generator.py */\n\n\n\n")
+source.write("/* Generated by esx_vi_generator.py */\n\n\n\n")
+
+
+typedef.write("/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * *\n" +
+ " * VI Enums\n" +
+ " */\n\n")
+
+
+
+names = enums_by_name.keys()
+names.sort()
+
+
+for name in names:
+ typedef.write(enums_by_name[name].generate_typedef())
+ typeenum.write(enums_by_name[name].generate_typeenum())
+ typetostring.write(enums_by_name[name].generate_typetostring())
+ typefromstring.write(enums_by_name[name].generate_typefromstring())
+ header.write(enums_by_name[name].generate_header())
+ source.write(enums_by_name[name].generate_source())
+
+
+
+typedef.write("\n\n\n" +
+ "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * *\n" +
+ " * VI Types\n" +
+ " */\n\n")
+
+typeenum.write("\n")
+
+typetostring.write("\n")
+
+typefromstring.write("\n")
+
+
+
+names = objects_by_name.keys()
+names.sort()
+
+
+for name in names:
+ typedef.write(objects_by_name[name].generate_typedef())
+ typeenum.write(objects_by_name[name].generate_typeenum())
+ typetostring.write(objects_by_name[name].generate_typetostring())
+ typefromstring.write(objects_by_name[name].generate_typefromstring())
+ header.write(objects_by_name[name].generate_header())
+ source.write(objects_by_name[name].generate_source())
diff --git a/src/esx/esx_vi_methods.c b/src/esx/esx_vi_methods.c
index 07cd82a..f1234ae 100644
--- a/src/esx/esx_vi_methods.c
+++ b/src/esx/esx_vi_methods.c
@@ -304,7 +304,7 @@ ESX_VI__METHOD(RetrieveProperties,
(esxVI_Context *ctx,
esxVI_PropertyFilterSpec *specSet, /* list */
esxVI_ObjectContent **objectContentList),
- List,
+ OptionalList,
{
ESX_VI__METHOD__CHECK_SERVICE()
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(objectContentList)
@@ -344,8 +344,7 @@ ESX_VI__METHOD(PowerOnVM_Task,
virtualMachine)
},
{
- if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
- "Task") < 0) {
+ if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
goto failure;
}
})
@@ -369,8 +368,7 @@ ESX_VI__METHOD(PowerOffVM_Task,
virtualMachine)
},
{
- if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
- "Task") < 0) {
+ if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
goto failure;
}
})
@@ -394,8 +392,7 @@ ESX_VI__METHOD(SuspendVM_Task,
virtualMachine)
},
{
- if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
- "Task") < 0) {
+ if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
goto failure;
}
})
@@ -428,8 +425,7 @@ ESX_VI__METHOD(MigrateVM_Task,
ESX_VI__METHOD__PARAMETER__SERIALIZE(VirtualMachinePowerState, state)
},
{
- if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
- "Task") < 0) {
+ if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
goto failure;
}
})
@@ -456,8 +452,7 @@ ESX_VI__METHOD(ReconfigVM_Task,
ESX_VI__METHOD__PARAMETER__SERIALIZE(VirtualMachineConfigSpec, spec)
},
{
- if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
- "Task") < 0) {
+ if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
goto failure;
}
})
@@ -490,8 +485,7 @@ ESX_VI__METHOD(RegisterVM_Task,
ESX_VI__METHOD__PARAMETER__SERIALIZE(ManagedObjectReference, host)
},
{
- if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
- "Task") < 0) {
+ if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
goto failure;
}
})
@@ -583,8 +577,8 @@ ESX_VI__METHOD(CreateFilter,
ESX_VI__METHOD__PARAMETER__SERIALIZE(Boolean, partialUpdates)
},
{
- if (esxVI_ManagedObjectReference_Deserialize(response->node, propertyFilter,
- "PropertyFilter") < 0) {
+ if (esxVI_ManagedObjectReference_Deserialize(response->node,
+ propertyFilter) < 0) {
goto failure;
}
})
@@ -684,7 +678,7 @@ ESX_VI__METHOD(ValidateMigration,
esxVI_ManagedObjectReference *pool,
esxVI_ManagedObjectReference *host,
esxVI_Event **eventList),
- List,
+ OptionalList,
{
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(eventList)
},
@@ -736,10 +730,8 @@ ESX_VI__METHOD(FindByIp,
ESX_VI__METHOD__PARAMETER__SERIALIZE(Boolean, vmSearch)
},
{
- if (esxVI_ManagedObjectReference_Deserialize
- (response->node, managedObjectReference,
- vmSearch == esxVI_Boolean_True ? "VirtualMachine"
- : "HostSystem") < 0) {
+ if (esxVI_ManagedObjectReference_Deserialize(response->node,
+ managedObjectReference) < 0) {
goto failure;
}
})
@@ -771,10 +763,8 @@ ESX_VI__METHOD(FindByUuid,
ESX_VI__METHOD__PARAMETER__SERIALIZE(Boolean, vmSearch)
},
{
- if (esxVI_ManagedObjectReference_Deserialize
- (response->node, managedObjectReference,
- vmSearch == esxVI_Boolean_True ? "VirtualMachine"
- : "HostSystem") < 0) {
+ if (esxVI_ManagedObjectReference_Deserialize(response->node,
+ managedObjectReference) < 0) {
goto failure;
}
})
@@ -789,7 +779,7 @@ ESX_VI__METHOD(QueryAvailablePerfMetric,
esxVI_DateTime *endTime,
esxVI_Int *intervalId,
esxVI_PerfMetricId **perfMetricIdList),
- List,
+ OptionalList,
{
ESX_VI__METHOD__CHECK_SERVICE()
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(perfMetricIdList)
@@ -820,7 +810,7 @@ ESX_VI__METHOD(QueryPerfCounter,
(esxVI_Context *ctx,
esxVI_Int *counterId, /* list */
esxVI_PerfCounterInfo **perfCounterInfoList),
- List,
+ OptionalList,
{
ESX_VI__METHOD__CHECK_SERVICE()
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(perfCounterInfoList)
@@ -848,7 +838,7 @@ ESX_VI__METHOD(QueryPerf,
(esxVI_Context *ctx,
esxVI_PerfQuerySpec *querySpec, /* list */
esxVI_PerfEntityMetric **perfEntityMetricList),
- List,
+ OptionalList,
{
ESX_VI__METHOD__CHECK_SERVICE()
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(perfEntityMetricList)
diff --git a/src/esx/esx_vi_types.c b/src/esx/esx_vi_types.c
index 87a13cb..6f257b2 100644
--- a/src/esx/esx_vi_types.c
+++ b/src/esx/esx_vi_types.c
@@ -64,11 +64,17 @@
-#define ESX_VI__TEMPLATE__ALLOC(_type) \
+#define ESX_VI__TEMPLATE__ALLOC(__type) \
int \
- esxVI_##_type##_Alloc(esxVI_##_type **ptrptr) \
+ esxVI_##__type##_Alloc(esxVI_##__type **ptrptr) \
{ \
- return esxVI_Alloc((void **)ptrptr, sizeof(esxVI_##_type)); \
+ if (esxVI_Alloc((void **)ptrptr, sizeof (esxVI_##__type)) < 0) { \
+ return -1; \
+ } \
+ \
+ (*ptrptr)->_type = esxVI_Type_##__type; \
+ \
+ return 0; \
}
@@ -92,11 +98,18 @@
-#define ESX_VI__TEMPLATE__VALIDATE(_type, _require) \
+#define ESX_VI__TEMPLATE__VALIDATE(__type, _require) \
int \
- esxVI_##_type##_Validate(esxVI_##_type *item) \
+ esxVI_##__type##_Validate(esxVI_##__type *item) \
{ \
- const char *type_name = #_type; \
+ const char *type_name = esxVI_Type_ToString(esxVI_Type_##__type); \
+ \
+ if (item->_type <= esxVI_Type_Undefined || \
+ item->_type >= esxVI_Type_Other) { \
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, \
+ "%s object has invalid dynamic type", type_name);
\
+ return -1; \
+ } \
\
_require \
\
@@ -105,11 +118,31 @@
-#define ESX_VI__TEMPLATE__VALIDATE_NOOP(_type) \
+#define ESX_VI__TEMPLATE__DEEP_COPY(_type, _deep_copy) \
int \
- esxVI_##_type##_Validate(esxVI_##_type *item ATTRIBUTE_UNUSED) \
+ esxVI_##_type##_DeepCopy(esxVI_##_type **dest, esxVI_##_type *src) \
{ \
+ if (dest == NULL || *dest != NULL) { \
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
\
+ return -1; \
+ } \
+ \
+ if (src == NULL) { \
+ return 0; \
+ } \
+ \
+ if (esxVI_##_type##_Alloc(dest) < 0) { \
+ goto failure; \
+ } \
+ \
+ _deep_copy \
+ \
return 0; \
+ \
+ failure: \
+ esxVI_##_type##_Free(dest); \
+ \
+ return -1; \
}
@@ -184,19 +217,20 @@
return -1; \
} \
\
- if (STRNEQ(anyType->other, #_type)) { \
+ if (anyType->type != esxVI_Type_##_type) { \
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, \
"Expecting type '%s' but found '%s'",
\
- #_type, anyType->other); \
+ esxVI_Type_ToString(esxVI_Type_##_type), \
+ anyType->other); \
return -1; \
} \
\
- return esxVI_##_type##_Deserialize(anyType->_node, ptrptr); \
+ return esxVI_##_type##_Deserialize(anyType->node, ptrptr); \
}
-#define ESX_VI__TEMPLATE__SERIALIZE_EXTRA(_type, _type_string, _serialize) \
+#define ESX_VI__TEMPLATE__SERIALIZE_EXTRA(_type, _extra, _serialize) \
int \
esxVI_##_type##_Serialize(esxVI_##_type *item, \
const char *element, virBufferPtr output) \
@@ -210,11 +244,14 @@
return 0; \
} \
\
+ _extra \
+ \
if (esxVI_##_type##_Validate(item) < 0) { \
return -1; \
} \
\
- ESV_VI__XML_TAG__OPEN(output, element, _type_string); \
+ ESV_VI__XML_TAG__OPEN(output, element, \
+ esxVI_Type_ToString(esxVI_Type_##_type)); \
\
_serialize \
\
@@ -226,7 +263,7 @@
#define ESX_VI__TEMPLATE__SERIALIZE(_type, _serialize) \
- ESX_VI__TEMPLATE__SERIALIZE_EXTRA(_type, #_type, _serialize)
+ ESX_VI__TEMPLATE__SERIALIZE_EXTRA(_type, /* nothing */, _serialize)
@@ -328,6 +365,31 @@
+/*
+ * Macros for property handling to be used as part of other macros
+ */
+
+#define ESX_VI__TEMPLATE__PROPERTY__DEEP_COPY(_type, _name) \
+ if (esxVI_##_type##_DeepCopy(&(*dest)->_name, src->_name) < 0) {
\
+ goto failure; \
+ }
+
+
+
+#define ESX_VI__TEMPLATE__PROPERTY__DEEP_COPY_LIST(_type, _name) \
+ if (esxVI_##_type##_DeepCopyList(&(*dest)->_name, src->_name) < 0) {
\
+ goto failure; \
+ }
+
+
+
+#define ESX_VI__TEMPLATE__PROPERTY__DEEP_COPY_VALUE(_type, _name) \
+ if (esxVI_##_type##_DeepCopyValue(&(*dest)->_name, src->_name) < 0) {
\
+ goto failure; \
+ }
+
+
+
#define ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(_type, _name) \
if (esxVI_##_type##_Serialize(item->_name, #_name, output) < 0) { \
return -1; \
@@ -360,23 +422,17 @@
-#define ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(_type, _name) \
+#define ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_IGNORE(_name) \
if (xmlStrEqual(childNode->name, BAD_CAST #_name)) { \
- if (esxVI_##_type##_DeserializeValue(childNode, \
- &(*ptrptr)->_name) < 0) {
\
- goto failure; \
- } \
- \
continue; \
}
-#define ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(_type, _expected, \
- _name) \
+#define ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(_type, _name) \
if (xmlStrEqual(childNode->name, BAD_CAST #_name)) { \
- if (esxVI_##_type##_Deserialize(childNode, &(*ptrptr)->_name, \
- _expected) < 0) { \
+ if (esxVI_##_type##_DeserializeValue(childNode, \
+ &(*ptrptr)->_name) < 0) {
\
goto failure; \
} \
\
@@ -385,13 +441,6 @@
-#define ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(_name) \
- if (xmlStrEqual(childNode->name, BAD_CAST #_name)) { \
- continue; \
- }
-
-
-
#define ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(_type, _name) \
if (xmlStrEqual(childNode->name, BAD_CAST #_name)) { \
esxVI_##_type *_name##Item = NULL; \
@@ -427,6 +476,10 @@
+/*
+ * Macros to implement enumerations
+ */
+
#define ESX_VI__TEMPLATE__ENUMERATION__CAST_FROM_ANY_TYPE(_type) \
int \
esxVI_##_type##_CastFromAnyType(esxVI_AnyType *anyType, \
@@ -459,20 +512,102 @@
+/*
+ * Macros to implement dynamic dispatched functions
+ */
+
+#define ESX_VI__TEMPLATE__DISPATCH(__type, _dispatch, _error_return) \
+ switch (item->_type) { \
+ _dispatch \
+ \
+ case esxVI_Type_##__type: \
+ break; \
+ \
+ default: \
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, \
+ "Call to %s for unexpected type '%s'",
__FUNCTION__, \
+ esxVI_Type_ToString(item->_type)); \
+ return _error_return; \
+ }
+
+
+
+#define ESX_VI__TEMPLATE__DISPATCH__FREE(_type) \
+ case esxVI_Type_##_type: \
+ esxVI_##_type##_Free((esxVI_##_type **)ptrptr); \
+ return;
+
+
+
+#define ESX_VI__TEMPLATE__DISPATCH__DEEP_COPY(_type) \
+ case esxVI_Type_##_type: \
+ return esxVI_##_type##_DeepCopy((esxVI_##_type **)dst, \
+ (esxVI_##_type *)src);
+
+
+
+#define ESX_VI__TEMPLATE__DISPATCH__SERIALIZE(_type) \
+ case esxVI_Type_##_type: \
+ return esxVI_##_type##_Serialize((esxVI_##_type *)item, element, \
+ output);
+
+
+
+#define ESX_VI__TEMPLATE__DYNAMIC_FREE(__type, _dispatch, _body) \
+ ESX_VI__TEMPLATE__FREE(__type, \
+ ESX_VI__TEMPLATE__DISPATCH(__type, _dispatch, /* nothing */) \
+ _body)
+
+
+
+#define ESX_VI__TEMPLATE__DYNAMIC_CAST(__type, _accept) \
+ esxVI_##__type * \
+ esxVI_##__type##_DynamicCast(void *item) \
+ { \
+ if (item == NULL) { \
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
\
+ return NULL; \
+ } \
+ \
+ _accept \
+ \
+ return NULL; \
+ }
+
+
+
+#define ESX_VI__TEMPLATE__DYNAMIC_CAST__ACCEPT(__type) \
+ if (((esxVI_Object *)item)->_type == esxVI_Type_##__type) { \
+ return item; \
+ }
+
+
+
+#define ESX_VI__TEMPLATE__DYNAMIC_SERIALIZE(__type, _dispatch, _serialize) \
+ ESX_VI__TEMPLATE__SERIALIZE_EXTRA(__type, \
+ ESX_VI__TEMPLATE__DISPATCH(__type, _dispatch, -1), \
+ _serialize)
+
+
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* XSI: Type
*/
const char *
-esxVI_Type_Name(esxVI_Type type)
+esxVI_Type_ToString(esxVI_Type type)
{
switch (type) {
+ default:
case esxVI_Type_Undefined:
- return "undefined";
+ return "<undefined>";
case esxVI_Type_Boolean:
return "xsd:boolean";
+ case esxVI_Type_AnyType:
+ return "xsd:anyType";
+
case esxVI_Type_String:
return "xsd:string";
@@ -485,14 +620,53 @@ esxVI_Type_Name(esxVI_Type type)
case esxVI_Type_Long:
return "xsd:long";
- case esxVI_Type_Other:
- return "other";
+ case esxVI_Type_DateTime:
+ return "xsd:dateTime";
- default:
- return "unknown";
+ case esxVI_Type_Fault:
+ return "Fault";
+
+ case esxVI_Type_ManagedObjectReference:
+ return "ManagedObjectReference";
+
+#include "esx_vi_types.generated.typetostring"
+
+ case esxVI_Type_Other:
+ return "<other>";
}
}
+esxVI_Type
+esxVI_Type_FromString(const char *type)
+{
+ if (type == NULL || STREQ(type, "<undefined>")) {
+ return esxVI_Type_Undefined;
+ } else if (STREQ(type, "xsd:boolean")) {
+ return esxVI_Type_Boolean;
+ } else if (STREQ(type, "xsd:anyType")) {
+ return esxVI_Type_AnyType;
+ } else if (STREQ(type, "xsd:string")) {
+ return esxVI_Type_String;
+ } else if (STREQ(type, "xsd:short")) {
+ return esxVI_Type_Short;
+ } else if (STREQ(type, "xsd:int")) {
+ return esxVI_Type_Int;
+ } else if (STREQ(type, "xsd:long")) {
+ return esxVI_Type_Long;
+ } else if (STREQ(type, "xsd:dateTime")) {
+ return esxVI_Type_DateTime;
+ } else if (STREQ(type, "Fault")) {
+ return esxVI_Type_Fault;
+ } else if (STREQ(type, "ManagedObjectReference")) {
+ return esxVI_Type_ManagedObjectReference;
+ }
+
+#include "esx_vi_types.generated.typefromstring"
+
+ else {
+ return esxVI_Type_Other;
+ }
+}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -500,7 +674,7 @@ esxVI_Type_Name(esxVI_Type type)
*/
static const esxVI_Enumeration _esxVI_Boolean_Enumeration = {
- "xsd:boolean", {
+ esxVI_Type_Boolean, {
{ "true", esxVI_Boolean_True },
{ "false", esxVI_Boolean_False },
{ NULL, -1 },
@@ -525,7 +699,7 @@ ESX_VI__TEMPLATE__ALLOC(AnyType);
/* esxVI_AnyType_Free */
ESX_VI__TEMPLATE__FREE(AnyType,
{
- xmlFreeNode(item->_node);
+ xmlFreeNode(item->node);
VIR_FREE(item->other);
VIR_FREE(item->value);
});
@@ -536,9 +710,9 @@ esxVI_AnyType_ExpectType(esxVI_AnyType *anyType, esxVI_Type type)
if (anyType->type != type) {
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
"Expecting type '%s' but found '%s'",
- esxVI_Type_Name(type),
+ esxVI_Type_ToString(type),
anyType->type != esxVI_Type_Other
- ? esxVI_Type_Name(anyType->type)
+ ? esxVI_Type_ToString(anyType->type)
: anyType->other);
return -1;
}
@@ -562,9 +736,10 @@ esxVI_AnyType_DeepCopy(esxVI_AnyType **dest, esxVI_AnyType *src)
goto failure;
}
- (*dest)->_node = xmlCopyNode(src->_node, 1);
+ (*dest)->_type = src->_type;
+ (*dest)->node = xmlCopyNode(src->node, 1);
- if ((*dest)->_node == NULL) {
+ if ((*dest)->node == NULL) {
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Could not copy an XML node");
goto failure;
}
@@ -612,7 +787,7 @@ esxVI_AnyType_DeepCopy(esxVI_AnyType **dest, esxVI_AnyType *src)
int
esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyType **anyType)
{
- long long number;
+ long long int number;
if (anyType == NULL || *anyType != NULL) {
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
@@ -623,9 +798,9 @@ esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyType **anyType)
return -1;
}
- (*anyType)->_node = xmlCopyNode(node, 1);
+ (*anyType)->node = xmlCopyNode(node, 1);
- if ((*anyType)->_node == NULL) {
+ if ((*anyType)->node == NULL) {
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Could not copy an XML node");
goto failure;
}
@@ -641,6 +816,15 @@ esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyType **anyType)
goto failure;
}
+ (*anyType)->type = esxVI_Type_FromString((*anyType)->other);
+
+ if ((*anyType)->type == esxVI_Type_Undefined) {
+ ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
+ "Unknown value '%s' for AnyType 'type'
property",
+ (*anyType)->other);
+ goto failure;
+ }
+
(*anyType)->value =
(char *)xmlNodeListGetString(node->doc, node->children, 1);
@@ -669,13 +853,11 @@ esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyType **anyType)
goto failure; \
} \
\
- (*anyType)->type = esxVI_Type_##_type; \
(*anyType)->_name = number; \
} while (0)
- if (STREQ((*anyType)->other, "xsd:boolean")) {
- (*anyType)->type = esxVI_Type_Boolean;
-
+ switch ((*anyType)->type) {
+ case esxVI_Type_Boolean:
if (STREQ((*anyType)->value, "true")) {
(*anyType)->boolean = esxVI_Boolean_True;
} else if (STREQ((*anyType)->value, "false")) {
@@ -686,15 +868,27 @@ esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyType **anyType)
(*anyType)->value);
goto failure;
}
- } else if (STREQ((*anyType)->other, "xsd:string")) {
- (*anyType)->type = esxVI_Type_String;
+
+ break;
+
+ case esxVI_Type_String:
(*anyType)->string = (*anyType)->value;
- } else if (STREQ((*anyType)->other, "xsd:short")) {
+ break;
+
+ case esxVI_Type_Short:
_DESERIALIZE_NUMBER(Short, "xsd:short", int16, INT16_MIN, INT16_MAX);
- } else if (STREQ((*anyType)->other, "xsd:int")) {
+ break;
+
+ case esxVI_Type_Int:
_DESERIALIZE_NUMBER(Int, "xsd:int", int32, INT32_MIN, INT32_MAX);
- } else if (STREQ((*anyType)->other, "xsd:long")) {
+ break;
+
+ case esxVI_Type_Long:
_DESERIALIZE_NUMBER(Long, "xsd:long", int64, INT64_MIN, INT64_MAX);
+ break;
+
+ default:
+ break;
}
#undef _DESERIALIZE_NUMBER
@@ -724,6 +918,12 @@ ESX_VI__TEMPLATE__FREE(String,
VIR_FREE(item->value);
});
+/* esxVI_String_Validate */
+ESX_VI__TEMPLATE__VALIDATE(String,
+{
+ ESX_VI__TEMPLATE__PROPERTY__REQUIRE(value)
+})
+
/* esxVI_String_AppendToList */
ESX_VI__TEMPLATE__LIST__APPEND(String);
@@ -782,30 +982,11 @@ esxVI_String_AppendValueListToList(esxVI_String **stringList,
return -1;
}
-int
-esxVI_String_DeepCopy(esxVI_String **dest, esxVI_String *src)
+/* esxVI_String_DeepCopy */
+ESX_VI__TEMPLATE__DEEP_COPY(String,
{
- if (dest == NULL || *dest != NULL) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
- return -1;
- }
-
- if (src == NULL) {
- return 0;
- }
-
- if (esxVI_String_Alloc(dest) < 0 ||
- esxVI_String_DeepCopyValue(&(*dest)->value, src->value)) {
- goto failure;
- }
-
- return 0;
-
- failure:
- esxVI_String_Free(dest);
-
- return -1;
-}
+ ESX_VI__TEMPLATE__PROPERTY__DEEP_COPY_VALUE(String, value)
+})
/* esxVI_String_DeepCopyList */
ESX_VI__TEMPLATE__LIST__DEEP_COPY(String);
@@ -865,37 +1046,11 @@ esxVI_String_SerializeValue(const char *value, const char
*element,
return 0;
}
-int
-esxVI_String_Deserialize(xmlNodePtr node, esxVI_String **string)
+/* esxVI_String_Deserialize */
+ESX_VI__TEMPLATE__DESERIALIZE(String,
{
- if (string == NULL || *string != NULL) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
- return -1;
- }
-
- if (esxVI_String_Alloc(string) < 0) {
- return -1;
- }
-
- (*string)->value =
- (char *)xmlNodeListGetString(node->doc, node->children, 1);
-
- if ((*string)->value == NULL) {
- (*string)->value = strdup("");
-
- if ((*string)->value == NULL) {
- virReportOOMError();
- goto failure;
- }
- }
-
- return 0;
-
- failure:
- esxVI_String_Free(string);
-
- return -1;
-}
+ ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, value)
+})
/* esxVI_String_DeserializeList */
ESX_VI__TEMPLATE__LIST__DESERIALIZE(String);
@@ -938,39 +1093,21 @@ ESX_VI__TEMPLATE__FREE(Int,
});
/* esxVI_Int_Validate */
-ESX_VI__TEMPLATE__VALIDATE_NOOP(Int);
+ESX_VI__TEMPLATE__VALIDATE(Int,
+{
+})
/* esxVI_Int_AppendToList */
ESX_VI__TEMPLATE__LIST__APPEND(Int);
-int
-esxVI_Int_DeepCopy(esxVI_Int **dest, esxVI_Int *src)
+/* esxVI_Int_DeepCopy */
+ESX_VI__TEMPLATE__DEEP_COPY(Int,
{
- if (dest == NULL || *dest != NULL) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
- return -1;
- }
-
- if (src == NULL) {
- return 0;
- }
-
- if (esxVI_Int_Alloc(dest) < 0) {
- goto failure;
- }
-
(*dest)->value = src->value;
-
- return 0;
-
- failure:
- esxVI_Int_Free(dest);
-
- return -1;
-}
+})
/* esxVI_Int_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE_EXTRA(Int, "xsd:int",
+ESX_VI__TEMPLATE__SERIALIZE(Int,
{
virBufferVSprintf(output, "%d", (int)item->value);
});
@@ -997,13 +1134,15 @@ ESX_VI__TEMPLATE__FREE(Long,
});
/* esxVI_Long_Validate */
-ESX_VI__TEMPLATE__VALIDATE_NOOP(Long);
+ESX_VI__TEMPLATE__VALIDATE(Long,
+{
+})
/* esxVI_Long_AppendToList */
ESX_VI__TEMPLATE__LIST__APPEND(Long);
/* esxVI_Long_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE_EXTRA(Long, "xsd:long",
+ESX_VI__TEMPLATE__SERIALIZE(Long,
{
virBufferVSprintf(output, "%lld", (long long int)item->value);
});
@@ -1036,7 +1175,7 @@ ESX_VI__TEMPLATE__VALIDATE(DateTime,
});
/* esxVI_DateTime_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE_EXTRA(DateTime, "xsd:dateTime",
+ESX_VI__TEMPLATE__SERIALIZE(DateTime,
{
virBufferAdd(output, item->value, -1);
});
@@ -1074,184 +1213,6 @@ esxVI_DateTime_Deserialize(xmlNodePtr node, esxVI_DateTime
**dateTime)
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: ManagedEntityStatus
- */
-
-static const esxVI_Enumeration _esxVI_ManagedEntityStatus_Enumeration = {
- "ManagedEntityStatus", {
- { "gray", esxVI_ManagedEntityStatus_Gray },
- { "green", esxVI_ManagedEntityStatus_Green },
- { "yellow", esxVI_ManagedEntityStatus_Yellow },
- { "red", esxVI_ManagedEntityStatus_Red },
- { NULL, -1 },
- },
-};
-
-/* esxVI_ManagedEntityStatus_CastFromAnyType */
-ESX_VI__TEMPLATE__ENUMERATION__CAST_FROM_ANY_TYPE(ManagedEntityStatus);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: ObjectUpdateKind
- */
-
-static const esxVI_Enumeration _esxVI_ObjectUpdateKind_Enumeration = {
- "ObjectUpdateKind", {
- { "enter", esxVI_ObjectUpdateKind_Enter },
- { "leave", esxVI_ObjectUpdateKind_Leave },
- { "modify", esxVI_ObjectUpdateKind_Modify },
- { NULL, -1 },
- },
-};
-
-/* esxVI_ObjectUpdateKind_Deserialize */
-ESX_VI__TEMPLATE__ENUMERATION__DESERIALIZE(ObjectUpdateKind);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: PerfSummaryType
- */
-
-static const esxVI_Enumeration _esxVI_PerfSummaryType_Enumeration = {
- "PerfSummaryType", {
- { "average", esxVI_PerfSummaryType_Average },
- { "latest", esxVI_PerfSummaryType_Latest },
- { "maximum", esxVI_PerfSummaryType_Maximum },
- { "minimum", esxVI_PerfSummaryType_Minimum },
- { "none", esxVI_PerfSummaryType_None },
- { "summation", esxVI_PerfSummaryType_Summation },
- { NULL, -1 },
- },
-};
-
-/* esxVI_PerfSummaryType_Deserialize */
-ESX_VI__TEMPLATE__ENUMERATION__DESERIALIZE(PerfSummaryType);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: PerfStatsType
- */
-
-static const esxVI_Enumeration _esxVI_PerfStatsType_Enumeration = {
- "PerfStatsType", {
- { "absolute", esxVI_PerfStatsType_Absolute },
- { "delta", esxVI_PerfStatsType_Delta },
- { "rate", esxVI_PerfStatsType_Rate },
- { NULL, -1 },
- },
-};
-
-/* esxVI_PerfStatsType_Deserialize */
-ESX_VI__TEMPLATE__ENUMERATION__DESERIALIZE(PerfStatsType);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: PropertyChangeOp
- */
-
-static const esxVI_Enumeration _esxVI_PropertyChangeOp_Enumeration = {
- "PropertyChangeOp", {
- { "add", esxVI_PropertyChangeOp_Add },
- { "remove", esxVI_PropertyChangeOp_Remove },
- { "assign", esxVI_PropertyChangeOp_Assign },
- { "indirectRemove", esxVI_PropertyChangeOp_IndirectRemove },
- { NULL, -1 },
- },
-};
-
-/* esxVI_PropertyChangeOp_Deserialize */
-ESX_VI__TEMPLATE__ENUMERATION__DESERIALIZE(PropertyChangeOp);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: SharesLevel
- */
-
-static const esxVI_Enumeration _esxVI_SharesLevel_Enumeration = {
- "SharesLevel", {
- { "custom", esxVI_SharesLevel_Custom },
- { "high", esxVI_SharesLevel_High },
- { "low", esxVI_SharesLevel_Low },
- { "normal", esxVI_SharesLevel_Normal },
- { NULL, -1 },
- },
-};
-
-/* esxVI_SharesLevel_Serialize */
-ESX_VI__TEMPLATE__ENUMERATION__SERIALIZE(SharesLevel);
-
-/* esxVI_SharesLevel_Deserialize */
-ESX_VI__TEMPLATE__ENUMERATION__DESERIALIZE(SharesLevel);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: TaskInfoState
- */
-
-static const esxVI_Enumeration _esxVI_TaskInfoState_Enumeration = {
- "TaskInfoState", {
- { "error", esxVI_TaskInfoState_Error },
- { "queued", esxVI_TaskInfoState_Queued },
- { "running", esxVI_TaskInfoState_Running },
- { "success", esxVI_TaskInfoState_Success },
- { NULL, -1 },
- },
-};
-
-/* esxVI_TaskInfoState_CastFromAnyType */
-ESX_VI__TEMPLATE__ENUMERATION__CAST_FROM_ANY_TYPE(TaskInfoState);
-
-/* esxVI_TaskInfoState_Deserialize */
-ESX_VI__TEMPLATE__ENUMERATION__DESERIALIZE(TaskInfoState);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: VirtualMachineMovePriority
- */
-
-static const esxVI_Enumeration _esxVI_VirtualMachineMovePriority_Enumeration = {
- "VirtualMachineMovePriority", {
- { "lowPriority", esxVI_VirtualMachineMovePriority_LowPriority },
- { "highPriority", esxVI_VirtualMachineMovePriority_HighPriority },
- { "defaultPriority", esxVI_VirtualMachineMovePriority_DefaultPriority
},
- { NULL, -1 },
- },
-};
-
-/* esxVI_VirtualMachineMovePriority_Serialize */
-ESX_VI__TEMPLATE__ENUMERATION__SERIALIZE(VirtualMachineMovePriority);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: VirtualMachinePowerState
- */
-
-static const esxVI_Enumeration _esxVI_VirtualMachinePowerState_Enumeration = {
- "VirtualMachinePowerState", {
- { "poweredOff", esxVI_VirtualMachinePowerState_PoweredOff },
- { "poweredOn", esxVI_VirtualMachinePowerState_PoweredOn },
- { "suspended", esxVI_VirtualMachinePowerState_Suspended },
- { NULL, -1 },
- },
-};
-
-/* esxVI_VirtualMachinePowerState_CastFromAnyType */
-ESX_VI__TEMPLATE__ENUMERATION__CAST_FROM_ANY_TYPE(VirtualMachinePowerState);
-
-/* esxVI_VirtualMachinePowerState_Serialize */
-ESX_VI__TEMPLATE__ENUMERATION__SERIALIZE(VirtualMachinePowerState);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* VI Type: Fault
*/
@@ -1277,7 +1238,7 @@ ESX_VI__TEMPLATE__DESERIALIZE(Fault,
{
ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, faultcode);
ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, faultstring);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(detail); /* FIXME */
+ ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_IGNORE(detail); /* FIXME */
});
@@ -1298,128 +1259,21 @@ ESX_VI__TEMPLATE__FREE(ManagedObjectReference,
VIR_FREE(item->value);
});
-int
-esxVI_ManagedObjectReference_DeepCopy(esxVI_ManagedObjectReference **dest,
- esxVI_ManagedObjectReference *src)
+/* esxVI_ManagedObjectReference_DeepCopy */
+ESX_VI__TEMPLATE__DEEP_COPY(ManagedObjectReference,
{
- if (dest == NULL || *dest != NULL) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
- return -1;
- }
-
- if (src == NULL) {
- return 0;
- }
-
- if (esxVI_ManagedObjectReference_Alloc(dest) < 0 ||
- esxVI_String_DeepCopyValue(&(*dest)->type, src->type) < 0 ||
- esxVI_String_DeepCopyValue(&(*dest)->value, src->value) < 0) {
- goto failure;
- }
-
- return 0;
-
- failure:
- esxVI_ManagedObjectReference_Free(dest);
-
- return -1;
-}
+ ESX_VI__TEMPLATE__PROPERTY__DEEP_COPY_VALUE(String, type)
+ ESX_VI__TEMPLATE__PROPERTY__DEEP_COPY_VALUE(String, value)
+})
/* esxVI_ManagedObjectReference_AppendToList */
ESX_VI__TEMPLATE__LIST__APPEND(ManagedObjectReference);
-int
-esxVI_ManagedObjectReference_CastFromAnyType
- (esxVI_AnyType *anyType,
- esxVI_ManagedObjectReference **managedObjectReference,
- const char *expectedType)
-{
- if (anyType == NULL || managedObjectReference == NULL ||
- *managedObjectReference != NULL) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
- return -1;
- }
-
- if (STRNEQ(anyType->other, "ManagedObjectReference")) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
- "Expecting type 'ManagedObjectReference' but found
'%s'",
- anyType->other);
- return -1;
- }
-
- return esxVI_ManagedObjectReference_Deserialize(anyType->_node,
- managedObjectReference,
- expectedType);
-}
-
-int
-esxVI_ManagedObjectReference_CastListFromAnyType
- (esxVI_AnyType *anyType,
- esxVI_ManagedObjectReference **managedObjectReferenceList,
- const char *expectedType)
-{
- int result = 0;
- xmlNodePtr childNode = NULL;
- esxVI_AnyType *childAnyType = NULL;
- esxVI_ManagedObjectReference *managedObjectReference = NULL;
-
- if (managedObjectReferenceList == NULL ||
- *managedObjectReferenceList != NULL) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
- goto failure;
- }
-
- if (anyType == NULL) {
- return 0;
- }
-
- if (STRNEQ(anyType->other, "ArrayOfManagedObjectReference")) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
- "Expecting type to be 'ArrayOfManagedObjectReference'
"
- "but found '%s'", anyType->other);
- goto failure;
- }
-
- for (childNode = anyType->_node->children; childNode != NULL;
- childNode = childNode->next) {
- if (childNode->type != XML_ELEMENT_NODE) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
- "Wrong XML element type %d", childNode->type);
- goto failure;
- }
-
- esxVI_AnyType_Free(&childAnyType);
-
- if (esxVI_AnyType_Deserialize(childNode, &childAnyType) < 0) {
- goto failure;
- }
-
- managedObjectReference = NULL;
-
- if (esxVI_ManagedObjectReference_CastFromAnyType
- (childAnyType, &managedObjectReference, expectedType) < 0) {
- goto failure;
- }
-
- if (esxVI_ManagedObjectReference_AppendToList
- (managedObjectReferenceList, managedObjectReference) < 0) {
- goto failure;
- }
- }
-
+/* esxVI_ManagedObjectReference_CastFromAnyType */
+ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(ManagedObjectReference)
- cleanup:
- esxVI_AnyType_Free(&childAnyType);
-
- return result;
-
- failure:
- esxVI_ManagedObjectReference_Free(managedObjectReferenceList);
-
- result = -1;
-
- goto cleanup;
-}
+/* esxVI_ManagedObjectReference_CastListFromAnyType */
+ESX_VI__TEMPLATE__LIST__CAST_FROM_ANY_TYPE(ManagedObjectReference)
int
esxVI_ManagedObjectReference_Serialize
@@ -1454,8 +1308,7 @@ ESX_VI__TEMPLATE__LIST__SERIALIZE(ManagedObjectReference);
int
esxVI_ManagedObjectReference_Deserialize
- (xmlNodePtr node, esxVI_ManagedObjectReference **managedObjectReference,
- const char *expectedType)
+ (xmlNodePtr node, esxVI_ManagedObjectReference **managedObjectReference)
{
if (managedObjectReference == NULL || *managedObjectReference != NULL) {
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
@@ -1475,14 +1328,6 @@ esxVI_ManagedObjectReference_Deserialize
goto failure;
}
- if (expectedType != NULL &&
- STRNEQ(expectedType, (*managedObjectReference)->type)) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
- "Expected type '%s' but found '%s'",
expectedType,
- (*managedObjectReference)->type);
- goto failure;
- }
-
if (esxVI_String_DeserializeValue(node,
&(*managedObjectReference)->value) < 0)
{
goto failure;
@@ -1496,1533 +1341,4 @@ esxVI_ManagedObjectReference_Deserialize
return -1;
}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: DynamicProperty
- */
-
-/* esxVI_DynamicProperty_Alloc */
-ESX_VI__TEMPLATE__ALLOC(DynamicProperty);
-
-/* esxVI_DynamicProperty_Free */
-ESX_VI__TEMPLATE__FREE(DynamicProperty,
-{
- esxVI_DynamicProperty_Free(&item->_next);
-
- VIR_FREE(item->name);
- esxVI_AnyType_Free(&item->val);
-});
-
-/* esxVI_DynamicProperty_Validate */
-ESX_VI__TEMPLATE__VALIDATE(DynamicProperty,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(name);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(val);
-});
-
-int
-esxVI_DynamicProperty_DeepCopy(esxVI_DynamicProperty **dest,
- esxVI_DynamicProperty *src)
-{
- if (dest == NULL || *dest != NULL) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
- return -1;
- }
-
- if (src == NULL) {
- return 0;
- }
-
- if (esxVI_DynamicProperty_Alloc(dest) < 0 ||
- esxVI_String_DeepCopyValue(&(*dest)->name, src->name) < 0 ||
- esxVI_AnyType_DeepCopy(&(*dest)->val, src->val) < 0) {
- goto failure;
- }
-
- return 0;
-
- failure:
- esxVI_DynamicProperty_Free(dest);
-
- return -1;
-}
-
-/* esxVI_DynamicProperty_DeepCopyList */
-ESX_VI__TEMPLATE__LIST__DEEP_COPY(DynamicProperty);
-
-/* esxVI_DynamicProperty_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(DynamicProperty);
-
-/* esxVI_DynamicProperty_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(DynamicProperty,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, name);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(AnyType, val);
-});
-
-/* esxVI_DynamicProperty_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(DynamicProperty);
-
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: HostCpuIdInfo
- */
-
-/* esxVI_HostCpuIdInfo_Alloc */
-ESX_VI__TEMPLATE__ALLOC(HostCpuIdInfo);
-
-/* esxVI_HostCpuIdInfo_Free */
-ESX_VI__TEMPLATE__FREE(HostCpuIdInfo,
-{
- esxVI_HostCpuIdInfo_Free(&item->_next);
-
- esxVI_Int_Free(&item->level);
- VIR_FREE(item->vendor);
- VIR_FREE(item->eax);
- VIR_FREE(item->ebx);
- VIR_FREE(item->ecx);
- VIR_FREE(item->edx);
-});
-
-/* esxVI_HostCpuIdInfo_Validate */
-ESX_VI__TEMPLATE__VALIDATE(HostCpuIdInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(level);
-});
-
-/* esxVI_HostCpuIdInfo_CastFromAnyType */
-ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(HostCpuIdInfo);
-
-/* esxVI_HostCpuIdInfo_CastListFromAnyType */
-ESX_VI__TEMPLATE__LIST__CAST_FROM_ANY_TYPE(HostCpuIdInfo);
-
-/* esxVI_HostCpuIdInfo_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(HostCpuIdInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, level);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, vendor);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, eax);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, ebx);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, ecx);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, edx);
-});
-
-/* esxVI_HostCpuIdInfo_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(HostCpuIdInfo);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: SelectionSpec
- */
-
-/* esxVI_SelectionSpec_Alloc */
-ESX_VI__TEMPLATE__ALLOC(SelectionSpec);
-
-void
-esxVI_SelectionSpec_Free(esxVI_SelectionSpec **selectionSpec)
-{
- esxVI_SelectionSpec *local = NULL;
-
- if (selectionSpec == NULL || *selectionSpec == NULL) {
- return;
- }
-
- esxVI_SelectionSpec_Free(&(*selectionSpec)->_next);
-
- if ((*selectionSpec)->_super != NULL) {
- /*
- * Explicitly set this pointer to NULL here, otherwise this is will
- * result in a dangling pointer. The actual memory of this object is
- * freed by a call from the esxVI_TraversalSpec_Free function to the
- * esxVI_SelectionSpec_Free function with the base pointer.
- *
- * Use a local copy of the pointer and set the reference to NULL,
- * otherwise Valgrind complains about invalid writes.
- */
- local = *selectionSpec;
- *selectionSpec = NULL;
-
- esxVI_TraversalSpec_Free(&local->_super);
- } else {
- VIR_FREE((*selectionSpec)->name);
-
- VIR_FREE(*selectionSpec);
- }
-}
-
-/* esxVI_SelectionSpec_Validate */
-ESX_VI__TEMPLATE__VALIDATE(SelectionSpec,
-{
- if (item->_super != NULL) {
- return esxVI_TraversalSpec_Validate(item->_super);
- }
-
- /* All properties are optional */
- (void)type_name;
-});
-
-/* esxVI_SelectionSpec_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(SelectionSpec);
-
-int
-esxVI_SelectionSpec_Serialize(esxVI_SelectionSpec *selectionSpec,
- const char *element, virBufferPtr output)
-{
- if (element == NULL || output == NULL) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
- return -1;
- }
-
- if (selectionSpec == NULL) {
- return 0;
- }
-
- if (selectionSpec->_super != NULL) {
- return esxVI_TraversalSpec_Serialize(selectionSpec->_super, element,
- output);
- }
-
- if (esxVI_SelectionSpec_Validate(selectionSpec) < 0) {
- return -1;
- }
-
- ESV_VI__XML_TAG__OPEN(output, element, "SelectionSpec");
-
- if (esxVI_String_SerializeValue(selectionSpec->name, "name", output)
< 0) {
- return -1;
- }
-
- ESV_VI__XML_TAG__CLOSE(output, element);
-
- return 0;
-}
-
-/* esxVI_SelectionSpec_SerializeList */
-ESX_VI__TEMPLATE__LIST__SERIALIZE(SelectionSpec);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: TraversalSpec extends SelectionSpec
- */
-
-int
-esxVI_TraversalSpec_Alloc(esxVI_TraversalSpec **traversalSpec)
-{
- if (esxVI_Alloc((void **)traversalSpec, sizeof(esxVI_TraversalSpec)) < 0) {
- return -1;
- }
-
- if (esxVI_SelectionSpec_Alloc(&(*traversalSpec)->_base) < 0) {
- esxVI_TraversalSpec_Free(traversalSpec);
- return -1;
- }
-
- (*traversalSpec)->_base->_super = *traversalSpec;
-
- return 0;
-}
-
-void
-esxVI_TraversalSpec_Free(esxVI_TraversalSpec **traversalSpec)
-{
- esxVI_TraversalSpec *local = NULL;
-
- if (traversalSpec == NULL || *traversalSpec == NULL) {
- return;
- }
-
- /*
- * Need to store the traversalSpec pointer in a local variable here,
- * because it is possible that the traversalSpec pointer and the _super
- * pointer represent the same location in memory, e.g. if
- * esxVI_SelectionSpec_Free calls esxVI_TraversalSpec_Free with the _super
- * pointer as argument. Setting the _super pointer to NULL sets the
- * traversalSpec pointer also to NULL, because we're working on a reference
- * to this pointer here.
- *
- * Also use a local copy of the pointer and set the reference to NULL,
- * otherwise Valgrind complains about invalid writes.
- */
- local = *traversalSpec;
- *traversalSpec = NULL;
-
- /*
- * Setting the _super pointer to NULL here is important, otherwise
- * esxVI_SelectionSpec_Free would call esxVI_TraversalSpec_Free again,
- * resulting in both functions calling each other trying to free the
- * _base/_super object until a stackoverflow occurs.
- */
- local->_base->_super = NULL;
-
- esxVI_SelectionSpec_Free(&local->_base);
- VIR_FREE(local->type);
- VIR_FREE(local->path);
- esxVI_SelectionSpec_Free(&local->selectSet);
-
- VIR_FREE(local);
-}
-
-/* esxVI_TraversalSpec_Validate */
-ESX_VI__TEMPLATE__VALIDATE(TraversalSpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(type);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(path);
-});
-
-/* esxVI_TraversalSpec_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE(TraversalSpec,
-{
- if (esxVI_String_SerializeValue(item->_base->name, "name", output)
< 0) {
- return -1;
- }
-
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, type);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, path);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Boolean, skip);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_LIST(SelectionSpec, selectSet);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ObjectSpec
- */
-
-/* esxVI_ObjectSpec_Alloc */
-ESX_VI__TEMPLATE__ALLOC(ObjectSpec);
-
-/* esxVI_ObjectSpec_Free */
-ESX_VI__TEMPLATE__FREE(ObjectSpec,
-{
- esxVI_ObjectSpec_Free(&item->_next);
-
- esxVI_ManagedObjectReference_Free(&item->obj);
- esxVI_SelectionSpec_Free(&item->selectSet);
-});
-
-/* esxVI_ObjectSpec_Validate */
-ESX_VI__TEMPLATE__VALIDATE(ObjectSpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(obj);
-});
-
-/* esxVI_ObjectSpec_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(ObjectSpec);
-
-/* esxVI_ObjectSpec_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE(ObjectSpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(ManagedObjectReference, obj);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Boolean, skip);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_LIST(SelectionSpec, selectSet);
-});
-
-/* esxVI_ObjectSpec_SerializeList */
-ESX_VI__TEMPLATE__LIST__SERIALIZE(ObjectSpec);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PropertyChange
- */
-
-/* esxVI_PropertyChange_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PropertyChange);
-
-/* esxVI_PropertyChange_Free */
-ESX_VI__TEMPLATE__FREE(PropertyChange,
-{
- esxVI_PropertyChange_Free(&item->_next);
-
- VIR_FREE(item->name);
- esxVI_AnyType_Free(&item->val);
-});
-
-/* esxVI_PropertyChange_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PropertyChange,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(name);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(op);
-});
-
-/* esxVI_PropertyChange_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(PropertyChange);
-
-/* esxVI_PropertyChange_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(PropertyChange,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, name);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(PropertyChangeOp, op);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(AnyType, val);
-});
-
-/* esxVI_PropertyChange_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(PropertyChange);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PropertySpec
- */
-
-/* esxVI_PropertySpec_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PropertySpec);
-
-/* esxVI_PropertySpec_Free */
-ESX_VI__TEMPLATE__FREE(PropertySpec,
-{
- esxVI_PropertySpec_Free(&item->_next);
-
- VIR_FREE(item->type);
- esxVI_String_Free(&item->pathSet);
-});
-
-/* esxVI_PropertySpec_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PropertySpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(type);
-});
-
-/* esxVI_PropertySpec_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(PropertySpec);
-
-/* esxVI_PropertySpec_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE(PropertySpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, type);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Boolean, all);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_LIST(String, pathSet);
-});
-
-/* esxVI_PropertySpec_SerializeList */
-ESX_VI__TEMPLATE__LIST__SERIALIZE(PropertySpec);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PropertyFilterSpec
- */
-
-/* esxVI_PropertyFilterSpec_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PropertyFilterSpec);
-
-/* esxVI_PropertyFilterSpec_Free */
-ESX_VI__TEMPLATE__FREE(PropertyFilterSpec,
-{
- esxVI_PropertyFilterSpec_Free(&item->_next);
-
- esxVI_PropertySpec_Free(&item->propSet);
- esxVI_ObjectSpec_Free(&item->objectSet);
-});
-
-/* esxVI_PropertyFilterSpec_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PropertyFilterSpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(propSet);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(objectSet);
-});
-
-/* esxVI_PropertyFilterSpec_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(PropertyFilterSpec);
-
-/* esxVI_PropertyFilterSpec_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE(PropertyFilterSpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_LIST(PropertySpec, propSet);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_LIST(ObjectSpec, objectSet);
-});
-
-/* esxVI_PropertyFilterSpec_SerializeList */
-ESX_VI__TEMPLATE__LIST__SERIALIZE(PropertyFilterSpec);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ObjectContent
- */
-
-/* esxVI_ObjectContent_Alloc */
-ESX_VI__TEMPLATE__ALLOC(ObjectContent);
-
-/* esxVI_ObjectContent_Free */
-ESX_VI__TEMPLATE__FREE(ObjectContent,
-{
- esxVI_ObjectContent_Free(&item->_next);
-
- esxVI_ManagedObjectReference_Free(&item->obj);
- esxVI_DynamicProperty_Free(&item->propSet);
- /*esxVI_MissingProperty_Free(&item->missingSet);*//* FIXME */
-});
-
-/* esxVI_ObjectContent_Validate */
-ESX_VI__TEMPLATE__VALIDATE(ObjectContent,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(obj);
-});
-
-/* esxVI_ObjectContent_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(ObjectContent);
-
-int
-esxVI_ObjectContent_DeepCopy(esxVI_ObjectContent **dest,
- esxVI_ObjectContent *src)
-{
- if (dest == NULL || *dest != NULL) {
- ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Invalid argument");
- return -1;
- }
-
- if (src == NULL) {
- return 0;
- }
-
- if (esxVI_ObjectContent_Alloc(dest) < 0 ||
- esxVI_ManagedObjectReference_DeepCopy(&(*dest)->obj, src->obj) < 0
||
- esxVI_DynamicProperty_DeepCopyList(&(*dest)->propSet,
- src->propSet) < 0) {
- goto failure;
- }
-
-#if 0 /* FIXME */
- if (esxVI_MissingProperty_DeepCopyList(&(*dest)->missingSet,
- src->missingSet) < 0) {
- goto failure;
- }
-#endif
-
- return 0;
-
- failure:
- esxVI_ObjectContent_Free(dest);
-
- return -1;
-}
-
-/* esxVI_ObjectContent_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(ObjectContent,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- NULL, obj);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(DynamicProperty, propSet);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(missingSet); /* FIXME */
-});
-
-/* esxVI_ObjectContent_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(ObjectContent);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ObjectUpdate
- */
-
-/* esxVI_ObjectUpdate_Alloc */
-ESX_VI__TEMPLATE__ALLOC(ObjectUpdate);
-
-/* esxVI_ObjectUpdate_Free */
-ESX_VI__TEMPLATE__FREE(ObjectUpdate,
-{
- esxVI_ObjectUpdate_Free(&item->_next);
-
- esxVI_ManagedObjectReference_Free(&item->obj);
- esxVI_PropertyChange_Free(&item->changeSet);
- /*esxVI_MissingProperty_Free(&item->missingSet);*//* FIXME */
-});
-
-/* esxVI_ObjectUpdate_Validate */
-ESX_VI__TEMPLATE__VALIDATE(ObjectUpdate,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(kind);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(obj);
-});
-
-/* esxVI_ObjectUpdate_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(ObjectUpdate);
-
-/* esxVI_ObjectUpdate_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(ObjectUpdate,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(ObjectUpdateKind, kind);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- NULL, obj);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(PropertyChange, changeSet);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(missingSet); /* FIXME */
-});
-
-/* esxVI_ObjectUpdate_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(ObjectUpdate);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PropertyFilterUpdate
- */
-
-/* esxVI_PropertyFilterUpdate_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PropertyFilterUpdate);
-
-/* esxVI_PropertyFilterUpdate_Free */
-ESX_VI__TEMPLATE__FREE(PropertyFilterUpdate,
-{
- esxVI_PropertyFilterUpdate_Free(&item->_next);
-
- esxVI_ManagedObjectReference_Free(&item->filter);
- esxVI_ObjectUpdate_Free(&item->objectSet);
- /*esxVI_MissingProperty_Free(&item->missingSet);*//* FIXME */
-});
-
-/* esxVI_PropertyFilterUpdate_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PropertyFilterUpdate,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(filter);
-});
-
-/* esxVI_PropertyFilterUpdate_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(PropertyFilterUpdate);
-
-/* esxVI_PropertyFilterUpdate_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(PropertyFilterUpdate,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- NULL, filter);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(ObjectUpdate, objectSet);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(missingSet); /* FIXME */
-});
-
-/* esxVI_PropertyFilterUpdate_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(PropertyFilterUpdate);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: AboutInfo
- */
-
-/* esxVI_AboutInfo_Alloc */
-ESX_VI__TEMPLATE__ALLOC(AboutInfo);
-
-/* esxVI_AboutInfo_Free */
-ESX_VI__TEMPLATE__FREE(AboutInfo,
-{
- VIR_FREE(item->name);
- VIR_FREE(item->fullName);
- VIR_FREE(item->vendor);
- VIR_FREE(item->version);
- VIR_FREE(item->build);
- VIR_FREE(item->localeVersion);
- VIR_FREE(item->localeBuild);
- VIR_FREE(item->osType);
- VIR_FREE(item->productLineId);
- VIR_FREE(item->apiType);
- VIR_FREE(item->apiVersion);
-});
-
-/* esxVI_AboutInfo_Validate */
-ESX_VI__TEMPLATE__VALIDATE(AboutInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(name);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(fullName);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(vendor);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(version);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(build);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(localeVersion);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(localeBuild);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(osType);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(productLineId);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(apiType);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(apiVersion);
-});
-
-/* esxVI_AboutInfo_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(AboutInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, name);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, fullName);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, vendor);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, version);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, build);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, localeVersion);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, localeBuild);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, osType);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, productLineId);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, apiType);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, apiVersion);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ServiceContent
- */
-
-/* esxVI_ServiceContent_Alloc */
-ESX_VI__TEMPLATE__ALLOC(ServiceContent);
-
-/* esxVI_ServiceContent_Free */
-ESX_VI__TEMPLATE__FREE(ServiceContent,
-{
- esxVI_ManagedObjectReference_Free(&item->rootFolder);
- esxVI_ManagedObjectReference_Free(&item->propertyCollector);
- esxVI_ManagedObjectReference_Free(&item->viewManager);
- esxVI_AboutInfo_Free(&item->about);
- esxVI_ManagedObjectReference_Free(&item->setting);
- esxVI_ManagedObjectReference_Free(&item->userDirectory);
- esxVI_ManagedObjectReference_Free(&item->sessionManager);
- esxVI_ManagedObjectReference_Free(&item->authorizationManager);
- esxVI_ManagedObjectReference_Free(&item->perfManager);
- esxVI_ManagedObjectReference_Free(&item->scheduledTaskManager);
- esxVI_ManagedObjectReference_Free(&item->alarmManager);
- esxVI_ManagedObjectReference_Free(&item->eventManager);
- esxVI_ManagedObjectReference_Free(&item->taskManager);
- esxVI_ManagedObjectReference_Free(&item->extensionManager);
- esxVI_ManagedObjectReference_Free(&item->customizationSpecManager);
- esxVI_ManagedObjectReference_Free(&item->customFieldsManager);
- esxVI_ManagedObjectReference_Free(&item->accountManager);
- esxVI_ManagedObjectReference_Free(&item->diagnosticManager);
- esxVI_ManagedObjectReference_Free(&item->licenseManager);
- esxVI_ManagedObjectReference_Free(&item->searchIndex);
- esxVI_ManagedObjectReference_Free(&item->fileManager);
- esxVI_ManagedObjectReference_Free(&item->virtualDiskManager);
- esxVI_ManagedObjectReference_Free(&item->virtualizationManager);
-});
-
-/* esxVI_ServiceContent_Validate */
-ESX_VI__TEMPLATE__VALIDATE(ServiceContent,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(rootFolder);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(propertyCollector);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(about);
-});
-
-/* esxVI_ServiceContent_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(ServiceContent,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "Folder", rootFolder);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "PropertyCollector",
- propertyCollector);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "ViewManager",
- viewManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(AboutInfo, about);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "OptionManager",
setting);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "UserDirectory",
- userDirectory);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "SessionManager",
- sessionManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "AuthorizationManager",
- authorizationManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "PerformanceManager",
- perfManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "ScheduledTaskManager",
- scheduledTaskManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "AlarmManager",
- alarmManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "EventManager",
- eventManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "TaskManager",
- taskManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "ExtensionManager",
- extensionManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
-
"CustomizationSpecManager",
- customizationSpecManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "CustomFieldsManager",
- customFieldsManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
-
"HostLocalAccountManager",
- accountManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "DiagnosticManager",
- diagnosticManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "LicenseManager",
- licenseManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "SearchIndex",
- searchIndex);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "FileManager",
- fileManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "VirtualDiskManager",
- virtualDiskManager);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "VirtualizationManager",
- virtualizationManager);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: UpdateSet
- */
-
-/* esxVI_UpdateSet_Alloc */
-ESX_VI__TEMPLATE__ALLOC(UpdateSet);
-
-/* esxVI_UpdateSet_Free */
-ESX_VI__TEMPLATE__FREE(UpdateSet,
-{
- VIR_FREE(item->version);
- esxVI_PropertyFilterUpdate_Free(&item->filterSet);
-});
-
-/* esxVI_UpdateSet_Validate */
-ESX_VI__TEMPLATE__VALIDATE(UpdateSet,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(version);
-});
-
-/* esxVI_UpdateSet_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(UpdateSet,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, version);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(PropertyFilterUpdate,
- filterSet);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: SharesInfo
- */
-
-/* esxVI_SharesInfo_Alloc */
-ESX_VI__TEMPLATE__ALLOC(SharesInfo);
-
-/* esxVI_SharesInfo_Free */
-ESX_VI__TEMPLATE__FREE(SharesInfo,
-{
- esxVI_Int_Free(&item->shares);
-});
-
-/* esxVI_SharesInfo_Validate */
-ESX_VI__TEMPLATE__VALIDATE(SharesInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(shares);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(level);
-});
-
-/* esxVI_SharesInfo_CastFromAnyType */
-ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(SharesInfo);
-
-/* esxVI_SharesInfo_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(SharesInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, shares);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(SharesLevel, level);
-});
-
-/* esxVI_SharesInfo_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE(SharesInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Int, shares);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(SharesLevel, level);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ResourceAllocationInfo
- */
-
-/* esxVI_ResourceAllocationInfo_Alloc */
-ESX_VI__TEMPLATE__ALLOC(ResourceAllocationInfo);
-
-/* esxVI_ResourceAllocationInfo_Free */
-ESX_VI__TEMPLATE__FREE(ResourceAllocationInfo,
-{
- esxVI_Long_Free(&item->reservation);
- esxVI_Long_Free(&item->limit);
- esxVI_SharesInfo_Free(&item->shares);
- esxVI_Long_Free(&item->overheadLimit);
-});
-
-/* esxVI_ResourceAllocationInfo_Validate */
-ESX_VI__TEMPLATE__VALIDATE_NOOP(ResourceAllocationInfo);
-
-/* esxVI_ResourceAllocationInfo_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE(ResourceAllocationInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Long, reservation);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Boolean, expandableReservation);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Long, limit);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(SharesInfo, shares);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Long, overheadLimit);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ResourcePoolResourceUsage
- */
-
-/* esxVI_ResourcePoolResourceUsage_Alloc */
-ESX_VI__TEMPLATE__ALLOC(ResourcePoolResourceUsage);
-
-/* esxVI_ResourcePoolResourceUsage_Free */
-ESX_VI__TEMPLATE__FREE(ResourcePoolResourceUsage,
-{
- esxVI_Long_Free(&item->reservationUsed);
- esxVI_Long_Free(&item->reservationUsedForVm);
- esxVI_Long_Free(&item->unreservedForPool);
- esxVI_Long_Free(&item->unreservedForVm);
- esxVI_Long_Free(&item->overallUsage);
- esxVI_Long_Free(&item->maxUsage);
-});
-
-/* esxVI_ResourcePoolResourceUsage_Validate */
-ESX_VI__TEMPLATE__VALIDATE(ResourcePoolResourceUsage,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(reservationUsed);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(reservationUsedForVm);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(unreservedForPool);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(unreservedForVm);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(overallUsage);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(maxUsage);
-});
-
-/* esxVI_ResourcePoolResourceUsage_CastFromAnyType */
-ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(ResourcePoolResourceUsage);
-
-/* esxVI_ResourcePoolResourceUsage_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(ResourcePoolResourceUsage,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Long, reservationUsed);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Long, reservationUsedForVm);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Long, unreservedForPool);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Long, unreservedForVm);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Long, overallUsage);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Long, maxUsage);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: VirtualMachineConfigSpec
- */
-
-/* esxVI_VirtualMachineConfigSpec_Alloc */
-ESX_VI__TEMPLATE__ALLOC(VirtualMachineConfigSpec);
-
-/* esxVI_VirtualMachineConfigSpec_Free */
-ESX_VI__TEMPLATE__FREE(VirtualMachineConfigSpec,
-{
- VIR_FREE(item->changeVersion);
- VIR_FREE(item->name);
- VIR_FREE(item->version);
- VIR_FREE(item->uuid);
- esxVI_Long_Free(&item->npivNodeWorldWideName);
- esxVI_Long_Free(&item->npivPortWorldWideName);
- VIR_FREE(item->npivWorldWideNameType);
- VIR_FREE(item->npivWorldWideNameOp);
- VIR_FREE(item->locationId);
- VIR_FREE(item->guestId);
- VIR_FREE(item->alternateGuestName);
- VIR_FREE(item->annotation);
- /* FIXME: implement missing */
- esxVI_Int_Free(&item->numCPUs);
- esxVI_Long_Free(&item->memoryMB);
- /* FIXME: implement missing */
- esxVI_ResourceAllocationInfo_Free(&item->cpuAllocation);
- esxVI_ResourceAllocationInfo_Free(&item->memoryAllocation);
- /* FIXME: implement missing */
- VIR_FREE(item->swapPlacement);
- /* FIXME: implement missing */
-});
-
-/* esxVI_VirtualMachineConfigSpec_Validate */
-ESX_VI__TEMPLATE__VALIDATE_NOOP(VirtualMachineConfigSpec);
-
-/* esxVI_VirtualMachineConfigSpec_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE(VirtualMachineConfigSpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, changeVersion);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, name);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, version);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, uuid);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_LIST(Long, npivNodeWorldWideName);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_LIST(Long, npivPortWorldWideName);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, npivWorldWideNameType);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, npivWorldWideNameOp);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, locationId);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, guestId);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, alternateGuestName);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, annotation);
- /* FIXME: implement missing */
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Int, numCPUs);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Long, memoryMB);
- /* FIXME: implement missing */
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(ResourceAllocationInfo,
- cpuAllocation);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(ResourceAllocationInfo,
- memoryAllocation);
- /* FIXME: implement missing */
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, swapPlacement);
- /* FIXME: implement missing */
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: Event
- */
-
-/* esxVI_Event_Alloc */
-ESX_VI__TEMPLATE__ALLOC(Event);
-
-/* esxVI_Event_Free */
-ESX_VI__TEMPLATE__FREE(Event,
-{
- esxVI_Event_Free(&item->_next);
-
- /* FIXME: implement the rest */
- esxVI_Int_Free(&item->key);
- esxVI_Int_Free(&item->chainId);
- esxVI_DateTime_Free(&item->createdTime);
- VIR_FREE(item->userName);
- VIR_FREE(item->fullFormattedMessage);
-});
-
-/* esxVI_Event_Validate */
-ESX_VI__TEMPLATE__VALIDATE(Event,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(key);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(chainId);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(createdTime);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(userName);
-});
-
-/* esxVI_Event_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(Event,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, key);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, chainId);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(DateTime, createdTime);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, userName);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(datacenter); /* FIXME */
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(computeResource); /* FIXME */
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(host); /* FIXME */
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(vm); /* FIXME */
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, fullFormattedMessage);
-});
-
-/* esxVI_Event_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(Event);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: UserSession
- */
-
-/* esxVI_UserSession_Alloc */
-ESX_VI__TEMPLATE__ALLOC(UserSession);
-
-/* esxVI_UserSession_Free */
-ESX_VI__TEMPLATE__FREE(UserSession,
-{
- VIR_FREE(item->key);
- VIR_FREE(item->userName);
- VIR_FREE(item->fullName);
- esxVI_DateTime_Free(&item->loginTime);
- esxVI_DateTime_Free(&item->lastActiveTime);
- VIR_FREE(item->locale);
- VIR_FREE(item->messageLocale);
-});
-
-/* esxVI_UserSession_Validate */
-ESX_VI__TEMPLATE__VALIDATE(UserSession,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(key);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(userName);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(fullName);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(loginTime);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(lastActiveTime);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(locale);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(messageLocale);
-});
-
-/* esxVI_UserSession_CastFromAnyType */
-ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(UserSession);
-
-/* esxVI_UserSession_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(UserSession,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, key);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, userName);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, fullName);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(DateTime, loginTime);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(DateTime, lastActiveTime);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, locale);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, messageLocale);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: VirtualMachineQuestionInfo
- */
-
-/* esxVI_VirtualMachineQuestionInfo_Alloc */
-ESX_VI__TEMPLATE__ALLOC(VirtualMachineQuestionInfo);
-
-/* esxVI_VirtualMachineQuestionInfo_Free */
-ESX_VI__TEMPLATE__FREE(VirtualMachineQuestionInfo,
-{
- VIR_FREE(item->id);
- VIR_FREE(item->text);
- esxVI_ChoiceOption_Free(&item->choice);
- /*esxVI_VirtualMachineMessage_Free(&item->message);*//* FIXME */
-});
-
-/* esxVI_VirtualMachineQuestionInfo_Validate */
-ESX_VI__TEMPLATE__VALIDATE(VirtualMachineQuestionInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(id);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(text);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(choice);
-});
-
-/* esxVI_VirtualMachineQuestionInfo_CastFromAnyType */
-ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(VirtualMachineQuestionInfo);
-
-/* esxVI_VirtualMachineQuestionInfo_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(VirtualMachineQuestionInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, id);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, text);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(ChoiceOption, choice);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(message); /* FIXME */
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ElementDescription extends Description
- *
- * In contrast to SelectionSpec and TraversalSpec just merge
- * Description into ElementDescription for simplicity, because
- * only ElementDescription is used.
- */
-
-/* esxVI_ElementDescription_Alloc */
-ESX_VI__TEMPLATE__ALLOC(ElementDescription);
-
-/* esxVI_ElementDescription_Free */
-ESX_VI__TEMPLATE__FREE(ElementDescription,
-{
- esxVI_ElementDescription_Free(&item->_next);
-
- VIR_FREE(item->label);
- VIR_FREE(item->summary);
- VIR_FREE(item->key);
-});
-
-/* esxVI_ElementDescription_Validate */
-ESX_VI__TEMPLATE__VALIDATE(ElementDescription,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(label);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(summary);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(key);
-});
-
-/* esxVI_ElementDescription_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(ElementDescription);
-
-/* esxVI_ElementDescription_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(ElementDescription,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, label);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, summary);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, key);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ChoiceOption extends OptionType
- *
- * In contrast to SelectionSpec and TraversalSpec just merge
- * OptionType into ChoiceOption for simplicity, because
- * only ChoiceOption is used.
- */
-
-/* esxVI_ChoiceOption_Alloc */
-ESX_VI__TEMPLATE__ALLOC(ChoiceOption);
-
-/* esxVI_ChoiceOption_Free */
-ESX_VI__TEMPLATE__FREE(ChoiceOption,
-{
- esxVI_ElementDescription_Free(&item->choiceInfo);
- esxVI_Int_Free(&item->defaultIndex);
-});
-
-/* esxVI_ChoiceOption_Validate */
-ESX_VI__TEMPLATE__VALIDATE(ChoiceOption,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(choiceInfo);
-});
-
-/* esxVI_ChoiceOption_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(ChoiceOption,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Boolean, valueIsReadonly);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(ElementDescription, choiceInfo);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, defaultIndex);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfMetricId
- */
-
-/* esxVI_PerfMetricId_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PerfMetricId);
-
-/* esxVI_PerfMetricId_Free */
-ESX_VI__TEMPLATE__FREE(PerfMetricId,
-{
- esxVI_PerfMetricId_Free(&item->_next);
-
- esxVI_Int_Free(&item->counterId);
- VIR_FREE(item->instance);
-});
-
-/* esxVI_PerfMetricId_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PerfMetricId,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(counterId);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(instance);
-});
-
-/* esxVI_PerfMetricId_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE(PerfMetricId,
-{
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Int, counterId);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, instance);
-});
-
-/* esxVI_PerfMetricId_SerializeList */
-ESX_VI__TEMPLATE__LIST__SERIALIZE(PerfMetricId);
-
-/* esxVI_PerfMetricId_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(PerfMetricId,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, counterId);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, instance);
-});
-
-/* esxVI_PerfMetricId_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(PerfMetricId);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfCounterInfo
- */
-
-/* esxVI_PerfCounterInfo_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PerfCounterInfo);
-
-/* esxVI_PerfCounterInfo_Free */
-ESX_VI__TEMPLATE__FREE(PerfCounterInfo,
-{
- esxVI_PerfCounterInfo_Free(&item->_next);
-
- esxVI_Int_Free(&item->key);
- esxVI_ElementDescription_Free(&item->nameInfo);
- esxVI_ElementDescription_Free(&item->groupInfo);
- esxVI_ElementDescription_Free(&item->unitInfo);
- esxVI_Int_Free(&item->level);
- esxVI_Int_Free(&item->associatedCounterId);
-});
-
-/* esxVI_PerfCounterInfo_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PerfCounterInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(key);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(nameInfo);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(groupInfo);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(unitInfo);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(rollupType);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(statsType);
-});
-
-/* esxVI_PerfCounterInfo_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(PerfCounterInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, key);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(ElementDescription, nameInfo);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(ElementDescription, groupInfo);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(ElementDescription, unitInfo);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(PerfSummaryType, rollupType);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(PerfStatsType, statsType);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, level);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(Int, associatedCounterId);
-});
-
-/* esxVI_PerfCounterInfo_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(PerfCounterInfo);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfQuerySpec
- */
-
-/* esxVI_PerfQuerySpec_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PerfQuerySpec);
-
-/* esxVI_PerfQuerySpec_Free */
-ESX_VI__TEMPLATE__FREE(PerfQuerySpec,
-{
- esxVI_PerfQuerySpec_Free(&item->_next);
-
- esxVI_ManagedObjectReference_Free(&item->entity);
- esxVI_DateTime_Free(&item->startTime);
- esxVI_DateTime_Free(&item->endTime);
- esxVI_Int_Free(&item->maxSample);
- esxVI_PerfMetricId_Free(&item->metricId);
- esxVI_Int_Free(&item->intervalId);
- VIR_FREE(item->format);
-});
-
-/* esxVI_PerfQuerySpec_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PerfQuerySpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(entity);
-});
-
-/* esxVI_PerfQuerySpec_Serialize */
-ESX_VI__TEMPLATE__SERIALIZE(PerfQuerySpec,
-{
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(ManagedObjectReference, entity);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(DateTime, startTime);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(DateTime, endTime);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Int, maxSample);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_LIST(PerfMetricId, metricId);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE(Int, intervalId);
- ESX_VI__TEMPLATE__PROPERTY__SERIALIZE_VALUE(String, format);
-});
-
-/* esxVI_PerfQuerySpec_SerializeList */
-ESX_VI__TEMPLATE__LIST__SERIALIZE(PerfQuerySpec);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfSampleInfo
- */
-
-/* esxVI_PerfSampleInfo_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PerfSampleInfo);
-
-/* esxVI_PerfSampleInfo_Free */
-ESX_VI__TEMPLATE__FREE(PerfSampleInfo,
-{
- esxVI_PerfSampleInfo_Free(&item->_next);
-
- esxVI_DateTime_Free(&item->timestamp);
- esxVI_Int_Free(&item->interval);
-});
-
-/* esxVI_PerfSampleInfo_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PerfSampleInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(timestamp);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(interval);
-});
-
-/* esxVI_PerfSampleInfo_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(PerfSampleInfo);
-
-/* esxVI_PerfSampleInfo_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(PerfSampleInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(DateTime, timestamp);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, interval);
-});
-
-/* esxVI_PerfSampleInfo_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(PerfSampleInfo);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfMetricIntSeries extends PerfMetricSeries
- *
- * In contrast to SelectionSpec and TraversalSpec just merge
- * PerfMetricSeries into PerfMetricIntSeries for simplicity, because
- * only PerfMetricIntSeries is used and the other type inheriting
- * PerfMetricSeries (PerfMetricSeriesCSV) is not used.
- */
-
-/* esxVI_PerfMetricIntSeries_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PerfMetricIntSeries);
-
-/* esxVI_PerfMetricIntSeries_Free */
-ESX_VI__TEMPLATE__FREE(PerfMetricIntSeries,
-{
- esxVI_PerfMetricIntSeries_Free(&item->_next);
-
- esxVI_PerfMetricId_Free(&item->id);
- esxVI_Long_Free(&item->value);
-});
-
-/* esxVI_PerfMetricIntSeries_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PerfMetricIntSeries,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(id);
-});
-
-/* esxVI_PerfMetricIntSeries_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(PerfMetricIntSeries);
-
-/* esxVI_PerfMetricIntSeries_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(PerfMetricIntSeries,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(PerfMetricId, id);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(Long, value);
-});
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfEntityMetric extends PerfEntityMetricBase
- *
- * In contrast to SelectionSpec and TraversalSpec just merge
- * PerfEntityMetricBase into PerfEntityMetric for simplicity, because
- * only PerfEntityMetric is used and the other type inheriting
- * PerfEntityMetric (PerfEntityMetricCSV) is not used.
- *
- * Also use PerfMetricIntSeries instead of the correct base type
- * PerfMetricSeries for the value property, because only
- * PerfMetricIntSeries is used.
- */
-
-/* esxVI_PerfEntityMetric_Alloc */
-ESX_VI__TEMPLATE__ALLOC(PerfEntityMetric);
-
-/* esxVI_PerfEntityMetric_Free */
-ESX_VI__TEMPLATE__FREE(PerfEntityMetric,
-{
- esxVI_PerfEntityMetric_Free(&item->_next);
-
- esxVI_ManagedObjectReference_Free(&item->entity);
- esxVI_PerfSampleInfo_Free(&item->sampleInfo);
- esxVI_PerfMetricIntSeries_Free(&item->value);
-});
-
-/* esxVI_PerfEntityMetric_Validate */
-ESX_VI__TEMPLATE__VALIDATE(PerfEntityMetric,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(entity);
-});
-
-/* esxVI_PerfEntityMetric_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(PerfEntityMetric,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- NULL, entity);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(PerfSampleInfo, sampleInfo);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_LIST(PerfMetricIntSeries, value);
-});
-
-/* esxVI_PerfEntityMetric_DeserializeList */
-ESX_VI__TEMPLATE__LIST__DESERIALIZE(PerfEntityMetric);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: TaskInfo
- */
-
-/* esxVI_TaskInfo_Alloc */
-ESX_VI__TEMPLATE__ALLOC(TaskInfo);
-
-/* esxVI_TaskInfo_Free */
-ESX_VI__TEMPLATE__FREE(TaskInfo,
-{
- esxVI_TaskInfo_Free(&item->_next);
-
- VIR_FREE(item->key);
- esxVI_ManagedObjectReference_Free(&item->task);
- VIR_FREE(item->name);
- VIR_FREE(item->descriptionId);
- esxVI_ManagedObjectReference_Free(&item->entity);
- VIR_FREE(item->entityName);
- /*esxVI_ManagedObjectReference_Free(&item->locked);*//* FIXME */
- /*esxVI_MethodFault_Free(&item->error);*//* FIXME */
- esxVI_AnyType_Free(&item->result);
- esxVI_Int_Free(&item->progress);
- /*esxVI_TaskReason_Free(&item->reason);*//* FIXME */
- esxVI_DateTime_Free(&item->queueTime);
- esxVI_DateTime_Free(&item->startTime);
- esxVI_DateTime_Free(&item->completeTime);
- esxVI_Int_Free(&item->eventChainId);
-});
-
-/* esxVI_TaskInfo_Validate */
-ESX_VI__TEMPLATE__VALIDATE(TaskInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(key);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(task);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(descriptionId);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(state);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(cancelled);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(cancelable);
- /*ESX_VI__TEMPLATE__PROPERTY__REQUIRE(reason);*//* FIXME */
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(queueTime);
- ESX_VI__TEMPLATE__PROPERTY__REQUIRE(eventChainId);
-});
-
-/* esxVI_TaskInfo_CastFromAnyType */
-ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(TaskInfo);
-
-/* esxVI_TaskInfo_AppendToList */
-ESX_VI__TEMPLATE__LIST__APPEND(TaskInfo);
-
-/* esxVI_TaskInfo_Deserialize */
-ESX_VI__TEMPLATE__DESERIALIZE(TaskInfo,
-{
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, key);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- "Task", task);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, name);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, descriptionId);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_EXPECTED(ManagedObjectReference,
- NULL, entity);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_VALUE(String, entityName);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(locked); /* FIXME */
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(TaskInfoState, state);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Boolean, cancelled);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Boolean, cancelable);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(error); /* FIXME */
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(AnyType, result);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, progress);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE_NOOP(reason); /* FIXME */
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(DateTime, queueTime);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(DateTime, startTime);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(DateTime, completeTime);
- ESX_VI__TEMPLATE__PROPERTY__DESERIALIZE(Int, eventChainId);
-});
+#include "esx_vi_types.generated.c"
diff --git a/src/esx/esx_vi_types.h b/src/esx/esx_vi_types.h
index e5451e9..a61cdc1 100644
--- a/src/esx/esx_vi_types.h
+++ b/src/esx/esx_vi_types.h
@@ -25,13 +25,8 @@
# include "buf.h"
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * XSI
- */
-
typedef enum _esxVI_Type esxVI_Type;
+typedef struct _esxVI_Object esxVI_Object;
@@ -49,75 +44,50 @@ typedef struct _esxVI_DateTime esxVI_DateTime;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enums
- */
-
-typedef enum _esxVI_ManagedEntityStatus esxVI_ManagedEntityStatus;
-typedef enum _esxVI_ObjectUpdateKind esxVI_ObjectUpdateKind;
-typedef enum _esxVI_PerfSummaryType esxVI_PerfSummaryType;
-typedef enum _esxVI_PerfStatsType esxVI_PerfStatsType;
-typedef enum _esxVI_PropertyChangeOp esxVI_PropertyChangeOp;
-typedef enum _esxVI_SharesLevel esxVI_SharesLevel;
-typedef enum _esxVI_TaskInfoState esxVI_TaskInfoState;
-typedef enum _esxVI_VirtualMachineMovePriority esxVI_VirtualMachineMovePriority;
-typedef enum _esxVI_VirtualMachinePowerState esxVI_VirtualMachinePowerState;
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* VI Types
*/
typedef struct _esxVI_Fault esxVI_Fault;
typedef struct _esxVI_ManagedObjectReference esxVI_ManagedObjectReference;
-typedef struct _esxVI_DynamicProperty esxVI_DynamicProperty;
-typedef struct _esxVI_HostCpuIdInfo esxVI_HostCpuIdInfo;
-typedef struct _esxVI_SelectionSpec esxVI_SelectionSpec;
-typedef struct _esxVI_TraversalSpec esxVI_TraversalSpec;
-typedef struct _esxVI_ObjectSpec esxVI_ObjectSpec;
-typedef struct _esxVI_PropertyChange esxVI_PropertyChange;
-typedef struct _esxVI_PropertySpec esxVI_PropertySpec;
-typedef struct _esxVI_PropertyFilterSpec esxVI_PropertyFilterSpec;
-typedef struct _esxVI_ObjectContent esxVI_ObjectContent;
-typedef struct _esxVI_ObjectUpdate esxVI_ObjectUpdate;
-typedef struct _esxVI_PropertyFilterUpdate esxVI_PropertyFilterUpdate;
-typedef struct _esxVI_AboutInfo esxVI_AboutInfo;
-typedef struct _esxVI_ServiceContent esxVI_ServiceContent;
-typedef struct _esxVI_UpdateSet esxVI_UpdateSet;
-typedef struct _esxVI_SharesInfo esxVI_SharesInfo;
-typedef struct _esxVI_ResourceAllocationInfo esxVI_ResourceAllocationInfo;
-typedef struct _esxVI_ResourcePoolResourceUsage esxVI_ResourcePoolResourceUsage;
-typedef struct _esxVI_VirtualMachineConfigSpec esxVI_VirtualMachineConfigSpec;
-typedef struct _esxVI_Event esxVI_Event;
-typedef struct _esxVI_UserSession esxVI_UserSession;
-typedef struct _esxVI_VirtualMachineQuestionInfo esxVI_VirtualMachineQuestionInfo;
-typedef struct _esxVI_ElementDescription esxVI_ElementDescription;
-typedef struct _esxVI_ChoiceOption esxVI_ChoiceOption;
-typedef struct _esxVI_PerfMetricId esxVI_PerfMetricId;
-typedef struct _esxVI_PerfCounterInfo esxVI_PerfCounterInfo;
-typedef struct _esxVI_PerfQuerySpec esxVI_PerfQuerySpec;
-typedef struct _esxVI_PerfSampleInfo esxVI_PerfSampleInfo;
-typedef struct _esxVI_PerfMetricIntSeries esxVI_PerfMetricIntSeries;
-typedef struct _esxVI_PerfEntityMetric esxVI_PerfEntityMetric;
-typedef struct _esxVI_TaskInfo esxVI_TaskInfo;
+
+#include "esx_vi_types.generated.typedef"
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * XSI: Type
+ * Type
*/
enum _esxVI_Type {
esxVI_Type_Undefined = 0,
esxVI_Type_Boolean,
+ esxVI_Type_AnyType,
esxVI_Type_String,
esxVI_Type_Short,
esxVI_Type_Int,
esxVI_Type_Long,
+ esxVI_Type_DateTime,
+ esxVI_Type_Fault,
+ esxVI_Type_ManagedObjectReference,
+
+#include "esx_vi_types.generated.typeenum"
+
esxVI_Type_Other,
};
-const char *esxVI_Type_Name(esxVI_Type type);
+const char *esxVI_Type_ToString(esxVI_Type type);
+esxVI_Type esxVI_Type_FromString(const char *type);
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Object extends List
+ */
+
+struct _esxVI_Object {
+ esxVI_Object *_next; /* optional */
+ esxVI_Type _type; /* required */
+};
@@ -142,8 +112,10 @@ int esxVI_Boolean_Deserialize(xmlNodePtr node, esxVI_Boolean
*boolean_);
*/
struct _esxVI_AnyType {
- xmlNodePtr _node; /* required */
+ esxVI_AnyType *_unused; /* optional */
+ esxVI_Type _type; /* = esxVI_Type_AnyType */ /* required */
+ xmlNodePtr node; /* required */
esxVI_Type type; /* required */
char *other; /* required */
char *value; /* required */
@@ -170,12 +142,14 @@ int esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyType
**anyType);
struct _esxVI_String {
esxVI_String *_next; /* optional */
+ esxVI_Type _type; /* required */
char *value; /* required */
};
int esxVI_String_Alloc(esxVI_String **string);
void esxVI_String_Free(esxVI_String **stringList);
+int esxVI_String_Validate(esxVI_String *string);
int esxVI_String_AppendToList(esxVI_String **stringList, esxVI_String *string);
int esxVI_String_AppendValueToList(esxVI_String **stringList,
const char *value);
@@ -202,6 +176,7 @@ int esxVI_String_DeserializeValue(xmlNodePtr node, char **value);
struct _esxVI_Int {
esxVI_Int *_next; /* optional */
+ esxVI_Type _type; /* required */
int32_t value; /* required */
};
@@ -225,6 +200,7 @@ int esxVI_Int_Deserialize(xmlNodePtr node, esxVI_Int **number);
struct _esxVI_Long {
esxVI_Long *_next; /* optional */
+ esxVI_Type _type; /* required */
int64_t value; /* required */
};
@@ -246,6 +222,9 @@ int esxVI_Long_Deserialize(xmlNodePtr node, esxVI_Long **number);
*/
struct _esxVI_DateTime {
+ esxVI_DateTime *_unused; /* optional */
+ esxVI_Type _type; /* required */
+
char *value; /* required */
};
@@ -259,170 +238,13 @@ int esxVI_DateTime_Deserialize(xmlNodePtr node, esxVI_DateTime
**dateTime);
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: ManagedEntityStatus
- */
-
-enum _esxVI_ManagedEntityStatus {
- esxVI_ManagedEntityStatus_Undefined = 0,
- esxVI_ManagedEntityStatus_Gray,
- esxVI_ManagedEntityStatus_Green,
- esxVI_ManagedEntityStatus_Yellow,
- esxVI_ManagedEntityStatus_Red,
-};
-
-int esxVI_ManagedEntityStatus_CastFromAnyType
- (esxVI_AnyType *anyType, esxVI_ManagedEntityStatus *managedEntityStatus);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: ObjectUpdateKind
- */
-
-enum _esxVI_ObjectUpdateKind {
- esxVI_ObjectUpdateKind_Undefined = 0,
- esxVI_ObjectUpdateKind_Enter,
- esxVI_ObjectUpdateKind_Leave,
- esxVI_ObjectUpdateKind_Modify,
-};
-
-int esxVI_ObjectUpdateKind_Deserialize
- (xmlNodePtr node, esxVI_ObjectUpdateKind *objectUpdateKind);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: PerfSummaryType
- */
-
-enum _esxVI_PerfSummaryType {
- esxVI_PerfSummaryType_Undefined = 0,
- esxVI_PerfSummaryType_Average,
- esxVI_PerfSummaryType_Latest,
- esxVI_PerfSummaryType_Maximum,
- esxVI_PerfSummaryType_Minimum,
- esxVI_PerfSummaryType_None,
- esxVI_PerfSummaryType_Summation,
-};
-
-int esxVI_PerfSummaryType_Deserialize(xmlNodePtr node,
- esxVI_PerfSummaryType *perfSummaryType);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: PerfStatsType
- */
-
-enum _esxVI_PerfStatsType {
- esxVI_PerfStatsType_Undefined = 0,
- esxVI_PerfStatsType_Absolute,
- esxVI_PerfStatsType_Delta,
- esxVI_PerfStatsType_Rate,
-};
-
-int esxVI_PerfStatsType_Deserialize(xmlNodePtr node,
- esxVI_PerfStatsType *perfStatsType);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: PropertyChangeOp
- */
-
-enum _esxVI_PropertyChangeOp {
- esxVI_PropertyChangeOp_Undefined = 0,
- esxVI_PropertyChangeOp_Add,
- esxVI_PropertyChangeOp_Remove,
- esxVI_PropertyChangeOp_Assign,
- esxVI_PropertyChangeOp_IndirectRemove,
-};
-
-int esxVI_PropertyChangeOp_Deserialize
- (xmlNodePtr node, esxVI_PropertyChangeOp *propertyChangeOp);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: SharesLevel
- */
-
-enum _esxVI_SharesLevel {
- esxVI_SharesLevel_Undefined = 0,
- esxVI_SharesLevel_Custom,
- esxVI_SharesLevel_High,
- esxVI_SharesLevel_Low,
- esxVI_SharesLevel_Normal,
-};
-
-int esxVI_SharesLevel_Serialize(esxVI_SharesLevel sharesLevel,
- const char *element, virBufferPtr output);
-int esxVI_SharesLevel_Deserialize(xmlNodePtr node,
- esxVI_SharesLevel *sharesLevel);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: TaskInfoState
- */
-
-enum _esxVI_TaskInfoState {
- esxVI_TaskInfoState_Undefined = 0,
- esxVI_TaskInfoState_Error,
- esxVI_TaskInfoState_Queued,
- esxVI_TaskInfoState_Running,
- esxVI_TaskInfoState_Success,
-};
-
-int esxVI_TaskInfoState_CastFromAnyType(esxVI_AnyType *anyType,
- esxVI_TaskInfoState *taskInfoState);
-int esxVI_TaskInfoState_Deserialize(xmlNodePtr node,
- esxVI_TaskInfoState *taskInfoState);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: VirtualMachineMovePriority
- */
-
-enum _esxVI_VirtualMachineMovePriority {
- esxVI_VirtualMachineMovePriority_Undefined = 0,
- esxVI_VirtualMachineMovePriority_LowPriority,
- esxVI_VirtualMachineMovePriority_HighPriority,
- esxVI_VirtualMachineMovePriority_DefaultPriority,
-};
-
-int esxVI_VirtualMachineMovePriority_Serialize
- (esxVI_VirtualMachineMovePriority virtualMachineMovePriority,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Enum: VirtualMachinePowerState
- */
-
-enum _esxVI_VirtualMachinePowerState {
- esxVI_VirtualMachinePowerState_Undefined = 0,
- esxVI_VirtualMachinePowerState_PoweredOff,
- esxVI_VirtualMachinePowerState_PoweredOn,
- esxVI_VirtualMachinePowerState_Suspended,
-};
-
-int esxVI_VirtualMachinePowerState_CastFromAnyType
- (esxVI_AnyType *anyType,
- esxVI_VirtualMachinePowerState *virtualMachinePowerState);
-int esxVI_VirtualMachinePowerState_Serialize
- (esxVI_VirtualMachinePowerState virtualMachinePowerState,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* VI Type: Fault
*/
struct _esxVI_Fault {
+ esxVI_Fault *_unused; /* optional */
+ esxVI_Type _type; /* required */
+
char *faultcode; /* required */
char *faultstring; /* required */
};
@@ -440,6 +262,7 @@ int esxVI_Fault_Deserialize(xmlNodePtr node, esxVI_Fault **fault);
struct _esxVI_ManagedObjectReference {
esxVI_ManagedObjectReference *_next; /* optional */
+ esxVI_Type _type; /* required */
char *type; /* required */
char *value; /* required */
@@ -454,14 +277,12 @@ int
esxVI_ManagedObjectReference_DeepCopy(esxVI_ManagedObjectReference **dest,
int esxVI_ManagedObjectReference_AppendToList
(esxVI_ManagedObjectReference **managedObjectReferenceList,
esxVI_ManagedObjectReference *managedObjectReference);
-int esxVI_ManagedObjectReference_CastFromAnyType(esxVI_AnyType *anyType,
- esxVI_ManagedObjectReference
- **managedObjectReference,
- const char *expectedType);
+int esxVI_ManagedObjectReference_CastFromAnyType
+ (esxVI_AnyType *anyType,
+ esxVI_ManagedObjectReference **managedObjectReference);
int esxVI_ManagedObjectReference_CastListFromAnyType
(esxVI_AnyType *anyType,
- esxVI_ManagedObjectReference **managedObjectReferenceList,
- const char *expectedType);
+ esxVI_ManagedObjectReference **managedObjectReferenceList);
int esxVI_ManagedObjectReference_Serialize
(esxVI_ManagedObjectReference *managedObjectReference,
const char *element, virBufferPtr output);
@@ -469,833 +290,10 @@ int esxVI_ManagedObjectReference_SerializeList
(esxVI_ManagedObjectReference *managedObjectReference,
const char *element, virBufferPtr output);
int esxVI_ManagedObjectReference_Deserialize
- (xmlNodePtr node, esxVI_ManagedObjectReference **managedObjectReference,
- const char *expectedType);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: DynamicProperty
- */
-
-struct _esxVI_DynamicProperty {
- esxVI_DynamicProperty *_next; /* optional */
-
- char *name; /* required */
- esxVI_AnyType *val; /* required */
-};
-
-int esxVI_DynamicProperty_Alloc(esxVI_DynamicProperty **dynamicProperty);
-void esxVI_DynamicProperty_Free
- (esxVI_DynamicProperty **dynamicPropertyList);
-int esxVI_DynamicProperty_Validate(esxVI_DynamicProperty *dynamicProperty);
-int esxVI_DynamicProperty_DeepCopy(esxVI_DynamicProperty **dest,
- esxVI_DynamicProperty *src);
-int esxVI_DynamicProperty_DeepCopyList(esxVI_DynamicProperty **destList,
- esxVI_DynamicProperty *srcList);
-int esxVI_DynamicProperty_AppendToList
- (esxVI_DynamicProperty **dynamicPropertyList,
- esxVI_DynamicProperty *dynamicProperty);
-int esxVI_DynamicProperty_Deserialize(xmlNodePtr node,
- esxVI_DynamicProperty **dynamicProperty);
-int esxVI_DynamicProperty_DeserializeList
- (xmlNodePtr node, esxVI_DynamicProperty **dynamicPropertyList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: HostCpuIdInfo
- */
-
-struct _esxVI_HostCpuIdInfo {
- esxVI_HostCpuIdInfo *_next; /* optional */
-
- esxVI_Int *level; /* required */
- char *vendor; /* optional */
- char *eax; /* optional */
- char *ebx; /* optional */
- char *ecx; /* optional */
- char *edx; /* optional */
-};
-
-int esxVI_HostCpuIdInfo_Alloc(esxVI_HostCpuIdInfo **hostCpuIdInfo);
-void esxVI_HostCpuIdInfo_Free(esxVI_HostCpuIdInfo **hostCpuIdInfoList);
-int esxVI_HostCpuIdInfo_Validate(esxVI_HostCpuIdInfo *hostCpuIdInfo);
-int esxVI_HostCpuIdInfo_CastFromAnyType(esxVI_AnyType *anyType,
- esxVI_HostCpuIdInfo **hostCpuIdInfo);
-int esxVI_HostCpuIdInfo_CastListFromAnyType
- (esxVI_AnyType *anyType, esxVI_HostCpuIdInfo **hostCpuIdInfoList);
-int esxVI_HostCpuIdInfo_Deserialize(xmlNodePtr node,
- esxVI_HostCpuIdInfo **hostCpuIdInfo);
-int esxVI_HostCpuIdInfo_DeserializeList
- (xmlNodePtr node, esxVI_HostCpuIdInfo **hostCpuIdInfoList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: SelectionSpec
- */
-
-struct _esxVI_SelectionSpec {
- esxVI_SelectionSpec *_next; /* optional */
- esxVI_TraversalSpec *_super; /* optional */
-
- char *name; /* optional */
-};
-
-int esxVI_SelectionSpec_Alloc(esxVI_SelectionSpec **selectionSpec);
-void esxVI_SelectionSpec_Free(esxVI_SelectionSpec **selectionSpecList);
-int esxVI_SelectionSpec_Validate(esxVI_SelectionSpec *selectionSpec);
-int esxVI_SelectionSpec_AppendToList(esxVI_SelectionSpec **selectionSpecList,
- esxVI_SelectionSpec *selectionSpec);
-int esxVI_SelectionSpec_Serialize(esxVI_SelectionSpec *selectionSpec,
- const char *element, virBufferPtr output);
-int esxVI_SelectionSpec_SerializeList(esxVI_SelectionSpec *selectionSpecList,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: TraversalSpec extends SelectionSpec
- */
-
-struct _esxVI_TraversalSpec {
- esxVI_SelectionSpec *_base; /* required */
-
- char *type; /* required */
- char *path; /* required */
- esxVI_Boolean skip; /* optional */
- esxVI_SelectionSpec *selectSet; /* optional, list */
-};
-
-int esxVI_TraversalSpec_Alloc(esxVI_TraversalSpec **traversalSpec);
-void esxVI_TraversalSpec_Free(esxVI_TraversalSpec **traversalSpec);
-int esxVI_TraversalSpec_Validate(esxVI_TraversalSpec *traversalSpec);
-int esxVI_TraversalSpec_Serialize(esxVI_TraversalSpec *traversalSpec,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ObjectSpec
- */
-
-struct _esxVI_ObjectSpec {
- esxVI_ObjectSpec *_next; /* optional */
-
- esxVI_ManagedObjectReference *obj; /* required */
- esxVI_Boolean skip; /* optional */
- esxVI_SelectionSpec *selectSet; /* optional, list */
-};
-
-int esxVI_ObjectSpec_Alloc(esxVI_ObjectSpec **objectSpec);
-void esxVI_ObjectSpec_Free(esxVI_ObjectSpec **objectSpecList);
-int esxVI_ObjectSpec_Validate(esxVI_ObjectSpec *objectSpec);
-int esxVI_ObjectSpec_AppendToList(esxVI_ObjectSpec **objectSpecList,
- esxVI_ObjectSpec *objectSpec);
-int esxVI_ObjectSpec_Serialize(esxVI_ObjectSpec *objectSpec,
- const char *element, virBufferPtr output);
-int esxVI_ObjectSpec_SerializeList(esxVI_ObjectSpec *objectSpecList,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PropertyChange
- */
-
-struct _esxVI_PropertyChange {
- esxVI_PropertyChange *_next; /* optional */
-
- char *name; /* required */
- esxVI_PropertyChangeOp op; /* required */
- esxVI_AnyType *val; /* optional */
-};
-
-int esxVI_PropertyChange_Alloc(esxVI_PropertyChange **propertyChange);
-void esxVI_PropertyChange_Free(esxVI_PropertyChange **propertyChangeList);
-int esxVI_PropertyChange_Validate(esxVI_PropertyChange *propertyChange);
-int esxVI_PropertyChange_AppendToList
- (esxVI_PropertyChange **propertyChangeList,
- esxVI_PropertyChange *propertyChange);
-int esxVI_PropertyChange_Deserialize(xmlNodePtr node,
- esxVI_PropertyChange **propertyChange);
-int esxVI_PropertyChange_DeserializeList
- (xmlNodePtr node, esxVI_PropertyChange **propertyChangeList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PropertySpec
- */
-
-struct _esxVI_PropertySpec {
- esxVI_PropertySpec *_next; /* optional */
-
- char *type; /* required */
- esxVI_Boolean all; /* optional */
- esxVI_String *pathSet; /* optional, list */
-};
-
-int esxVI_PropertySpec_Alloc(esxVI_PropertySpec **propertySpec);
-void esxVI_PropertySpec_Free(esxVI_PropertySpec **propertySpecList);
-int esxVI_PropertySpec_Validate(esxVI_PropertySpec *propertySpec);
-int esxVI_PropertySpec_AppendToList(esxVI_PropertySpec **propertySpecList,
- esxVI_PropertySpec *propertySpec);
-int esxVI_PropertySpec_Serialize(esxVI_PropertySpec *propertySpec,
- const char *element, virBufferPtr output);
-int esxVI_PropertySpec_SerializeList(esxVI_PropertySpec *propertySpecList,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PropertyFilterSpec
- */
-
-struct _esxVI_PropertyFilterSpec {
- esxVI_PropertyFilterSpec *_next; /* optional */
-
- esxVI_PropertySpec *propSet; /* required, list */
- esxVI_ObjectSpec *objectSet; /* required, list */
-};
-
-int esxVI_PropertyFilterSpec_Alloc
- (esxVI_PropertyFilterSpec **propertyFilterSpec);
-void esxVI_PropertyFilterSpec_Free
- (esxVI_PropertyFilterSpec **propertyFilterSpecList);
-int esxVI_PropertyFilterSpec_Validate
- (esxVI_PropertyFilterSpec *propertyFilterSpec);
-int esxVI_PropertyFilterSpec_AppendToList
- (esxVI_PropertyFilterSpec **propertyFilterSpecList,
- esxVI_PropertyFilterSpec *propertyFilterSpec);
-int esxVI_PropertyFilterSpec_Serialize
- (esxVI_PropertyFilterSpec *propertyFilterSpec, const char *element,
- virBufferPtr output);
-int esxVI_PropertyFilterSpec_SerializeList
- (esxVI_PropertyFilterSpec *propertyFilterSpecList, const char *element,
- virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ObjectContent
- */
-
-struct _esxVI_ObjectContent {
- esxVI_ObjectContent *_next; /* optional */
-
- esxVI_ManagedObjectReference *obj; /* required */
- esxVI_DynamicProperty *propSet; /* optional, list */
- /*esxVI_MissingProperty *missingSet; *//* optional, list *//* FIXME */
-};
-
-int esxVI_ObjectContent_Alloc(esxVI_ObjectContent **objectContent);
-void esxVI_ObjectContent_Free(esxVI_ObjectContent **objectContentList);
-int esxVI_ObjectContent_Validate(esxVI_ObjectContent *objectContent);
-int esxVI_ObjectContent_AppendToList(esxVI_ObjectContent **objectContentList,
- esxVI_ObjectContent *objectContent);
-int esxVI_ObjectContent_DeepCopy(esxVI_ObjectContent **dest,
- esxVI_ObjectContent *src);
-int esxVI_ObjectContent_Deserialize(xmlNodePtr node,
- esxVI_ObjectContent **objectContent);
-int esxVI_ObjectContent_DeserializeList
- (xmlNodePtr node, esxVI_ObjectContent **objectContentList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ObjectUpdate
- */
-
-struct _esxVI_ObjectUpdate {
- esxVI_ObjectUpdate *_next; /* optional */
-
- esxVI_ObjectUpdateKind kind; /* required */
- esxVI_ManagedObjectReference *obj; /* required */
- esxVI_PropertyChange *changeSet; /* optional, list */
- /*esxVI_MissingProperty *missingSet; *//* optional, list *//* FIXME */
-};
-
-int esxVI_ObjectUpdate_Alloc(esxVI_ObjectUpdate **objectUpdate);
-void esxVI_ObjectUpdate_Free(esxVI_ObjectUpdate **objectUpdateList);
-int esxVI_ObjectUpdate_Validate(esxVI_ObjectUpdate *objectUpdate);
-int esxVI_ObjectUpdate_AppendToList(esxVI_ObjectUpdate **objectUpdateList,
- esxVI_ObjectUpdate *objectUpdate);
-int esxVI_ObjectUpdate_Deserialize(xmlNodePtr node,
- esxVI_ObjectUpdate **objectUpdate);
-int esxVI_ObjectUpdate_DeserializeList(xmlNodePtr node,
- esxVI_ObjectUpdate **objectUpdateList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PropertyFilterUpdate
- */
-
-struct _esxVI_PropertyFilterUpdate {
- esxVI_PropertyFilterUpdate *_next; /* optional */
-
- esxVI_ManagedObjectReference *filter; /* required */
- esxVI_ObjectUpdate *objectSet; /* optional, list */
- /*esxVI_MissingProperty *missingSet; *//* optional, list *//* FIXME */
-};
-
-int esxVI_PropertyFilterUpdate_Alloc
- (esxVI_PropertyFilterUpdate **propertyFilterUpdate);
-void esxVI_PropertyFilterUpdate_Free
- (esxVI_PropertyFilterUpdate **propertyFilterUpdateList);
-int esxVI_PropertyFilterUpdate_Validate
- (esxVI_PropertyFilterUpdate *propertyFilterUpdate);
-int esxVI_PropertyFilterUpdate_AppendToList
- (esxVI_PropertyFilterUpdate **propertyFilterUpdateList,
- esxVI_PropertyFilterUpdate *propertyFilterUpdate);
-int esxVI_PropertyFilterUpdate_Deserialize
- (xmlNodePtr node, esxVI_PropertyFilterUpdate **propertyFilterUpdate);
-int esxVI_PropertyFilterUpdate_DeserializeList
- (xmlNodePtr node, esxVI_PropertyFilterUpdate **propertyFilterUpdateList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: AboutInfo
- */
-
-struct _esxVI_AboutInfo {
- char *name; /* required */
- char *fullName; /* required */
- char *vendor; /* required */
- char *version; /* required */
- char *build; /* required */
- char *localeVersion; /* optional */
- char *localeBuild; /* optional */
- char *osType; /* required */
- char *productLineId; /* required */
- char *apiType; /* required */
- char *apiVersion; /* required */
-};
-
-int esxVI_AboutInfo_Alloc(esxVI_AboutInfo **aboutInfo);
-void esxVI_AboutInfo_Free(esxVI_AboutInfo **aboutInfo);
-int esxVI_AboutInfo_Validate(esxVI_AboutInfo *aboutInfo);
-int esxVI_AboutInfo_Deserialize(xmlNodePtr node, esxVI_AboutInfo **aboutInfo);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ServiceContent
- */
-
-struct _esxVI_ServiceContent {
- esxVI_ManagedObjectReference *rootFolder; /* required */
- esxVI_ManagedObjectReference *propertyCollector; /* required */
- esxVI_ManagedObjectReference *viewManager; /* optional */
- esxVI_AboutInfo *about; /* required */
- esxVI_ManagedObjectReference *setting; /* optional */
- esxVI_ManagedObjectReference *userDirectory; /* optional */
- esxVI_ManagedObjectReference *sessionManager; /* optional */
- esxVI_ManagedObjectReference *authorizationManager; /* optional */
- esxVI_ManagedObjectReference *perfManager; /* optional */
- esxVI_ManagedObjectReference *scheduledTaskManager; /* optional */
- esxVI_ManagedObjectReference *alarmManager; /* optional */
- esxVI_ManagedObjectReference *eventManager; /* optional */
- esxVI_ManagedObjectReference *taskManager; /* optional */
- esxVI_ManagedObjectReference *extensionManager; /* optional */
- esxVI_ManagedObjectReference *customizationSpecManager; /* optional */
- esxVI_ManagedObjectReference *customFieldsManager; /* optional */
- esxVI_ManagedObjectReference *accountManager; /* optional */
- esxVI_ManagedObjectReference *diagnosticManager; /* optional */
- esxVI_ManagedObjectReference *licenseManager; /* optional */
- esxVI_ManagedObjectReference *searchIndex; /* optional */
- esxVI_ManagedObjectReference *fileManager; /* optional */
- esxVI_ManagedObjectReference *virtualDiskManager; /* optional */
- esxVI_ManagedObjectReference *virtualizationManager; /* optional */
-};
-
-int esxVI_ServiceContent_Alloc(esxVI_ServiceContent **serviceContent);
-void esxVI_ServiceContent_Free(esxVI_ServiceContent **serviceContent);
-int esxVI_ServiceContent_Validate(esxVI_ServiceContent *serviceContent);
-int esxVI_ServiceContent_Deserialize(xmlNodePtr node,
- esxVI_ServiceContent **serviceContent);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: UpdateSet
- */
-
-struct _esxVI_UpdateSet {
- char *version; /* required */
- esxVI_PropertyFilterUpdate *filterSet; /* optional, list */
-};
-
-int esxVI_UpdateSet_Alloc(esxVI_UpdateSet **updateSet);
-void esxVI_UpdateSet_Free(esxVI_UpdateSet **updateSet);
-int esxVI_UpdateSet_Validate(esxVI_UpdateSet *updateSet);
-int esxVI_UpdateSet_Deserialize(xmlNodePtr node, esxVI_UpdateSet **updateSet);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: SharesInfo
- */
-
-struct _esxVI_SharesInfo {
- esxVI_Int *shares; /* required */
- esxVI_SharesLevel level; /* required */
-};
-
-int esxVI_SharesInfo_Alloc(esxVI_SharesInfo **sharesInfo);
-void esxVI_SharesInfo_Free(esxVI_SharesInfo **sharesInfo);
-int esxVI_SharesInfo_Validate(esxVI_SharesInfo *sharesInfo);
-int esxVI_SharesInfo_CastFromAnyType(esxVI_AnyType *anyType,
- esxVI_SharesInfo **sharesInfo);
-int esxVI_SharesInfo_Deserialize(xmlNodePtr node,
- esxVI_SharesInfo **sharesInfo);
-int esxVI_SharesInfo_Serialize(esxVI_SharesInfo *sharesInfo,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ResourceAllocationInfo
- */
-
-struct _esxVI_ResourceAllocationInfo {
- esxVI_Long *reservation; /* optional */
- esxVI_Boolean expandableReservation; /* optional */
- esxVI_Long *limit; /* optional */
- esxVI_SharesInfo *shares; /* optional */
- esxVI_Long *overheadLimit; /* optional */
-};
-
-int esxVI_ResourceAllocationInfo_Alloc
- (esxVI_ResourceAllocationInfo **resourceAllocationInfo);
-void esxVI_ResourceAllocationInfo_Free
- (esxVI_ResourceAllocationInfo **resourceAllocationInfo);
-int esxVI_ResourceAllocationInfo_Validate
- (esxVI_ResourceAllocationInfo *resourceAllocationInfo);
-int esxVI_ResourceAllocationInfo_Serialize
- (esxVI_ResourceAllocationInfo *resourceAllocationInfo,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ResourcePoolResourceUsage
- */
-
-struct _esxVI_ResourcePoolResourceUsage {
- esxVI_Long *reservationUsed; /* required */
- esxVI_Long *reservationUsedForVm; /* required */
- esxVI_Long *unreservedForPool; /* required */
- esxVI_Long *unreservedForVm; /* required */
- esxVI_Long *overallUsage; /* required */
- esxVI_Long *maxUsage; /* required */
-};
-
-int esxVI_ResourcePoolResourceUsage_Alloc
- (esxVI_ResourcePoolResourceUsage **resourcePoolResourceUsage);
-void esxVI_ResourcePoolResourceUsage_Free
- (esxVI_ResourcePoolResourceUsage **resourcePoolResourceUsage);
-int esxVI_ResourcePoolResourceUsage_Validate
- (esxVI_ResourcePoolResourceUsage *resourcePoolResourceUsage);
-int esxVI_ResourcePoolResourceUsage_CastFromAnyType
- (esxVI_AnyType *anyType,
- esxVI_ResourcePoolResourceUsage **resourcePoolResourceUsage);
-int esxVI_ResourcePoolResourceUsage_Deserialize
- (xmlNodePtr node,
- esxVI_ResourcePoolResourceUsage **resourcePoolResourceUsage);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: VirtualMachineConfigSpec
- */
-
-/* FIXME: implement the rest */
-struct _esxVI_VirtualMachineConfigSpec {
- char *changeVersion; /* optional */
- char *name; /* optional */
- char *version; /* optional */
- char *uuid; /* optional */
- esxVI_Long *npivNodeWorldWideName; /* optional, list */
- esxVI_Long *npivPortWorldWideName; /* optional, list */
- char *npivWorldWideNameType; /* optional */
- char *npivWorldWideNameOp; /* optional */
- char *locationId; /* optional */
- char *guestId; /* optional */
- char *alternateGuestName; /* optional */
- char *annotation; /* optional */
- //esxVI_VirtualMachineFileInfo *files; /* optional */
- //esxVI_ToolsConfigInfo *tools; /* optional */
- //esxVI_VirtualMachineFlagInfo *flags; /* optional */
- //esxVI_VirtualMachineConsolePreferences *consolePreferences; /* optional */
- //esxVI_VirtualMachineDefaultPowerOpInfo *powerOpInfo; /* optional */
- esxVI_Int *numCPUs; /* optional */
- esxVI_Long *memoryMB; /* optional */
- //esxVI_VirtualDeviceConfigSpec *deviceChange; /* optional, list */
- esxVI_ResourceAllocationInfo *cpuAllocation; /* optional */
- esxVI_ResourceAllocationInfo *memoryAllocation; /* optional */
- //esxVI_VirtualMachineAffinityInfo *cpuAffinity; /* optional */
- //esxVI_VirtualMachineAffinityInfo *memoryAffinity; /* optional */
- //esxVI_VirtualMachineNetworkShaperInfo *networkShaper; /* optional */
- //esxVI_VirtualMachineCpuIdInfoSpec *cpuFeatureMask; /* optional, list */
- //esxVI_OptionValue *extraConfig; /* optional, list */
- char *swapPlacement; /* optional */
- //esxVI_VirtualMachineBootOptions *bootOptions; /* optional */
-};
-
-int esxVI_VirtualMachineConfigSpec_Alloc
- (esxVI_VirtualMachineConfigSpec **virtualMachineConfigSpec);
-void esxVI_VirtualMachineConfigSpec_Free
- (esxVI_VirtualMachineConfigSpec **virtualMachineConfigSpec);
-int esxVI_VirtualMachineConfigSpec_Validate
- (esxVI_VirtualMachineConfigSpec *virtualMachineConfigSpec);
-int esxVI_VirtualMachineConfigSpec_Serialize
- (esxVI_VirtualMachineConfigSpec *virtualMachineConfigSpec,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: Event
- */
-
-/* FIXME: implement the rest */
-struct _esxVI_Event {
- esxVI_Event *_next; /* optional */
-
- esxVI_Int *key; /* required */
- esxVI_Int *chainId; /* required */
- esxVI_DateTime *createdTime; /* required */
- char *userName; /* required */
- //??? datacenter; /* optional */
- //??? computeResource; /* optional */
- //??? host; /* optional */
- //??? vm; /* optional */
- char *fullFormattedMessage; /* optional */
-};
-
-int esxVI_Event_Alloc(esxVI_Event **event);
-void esxVI_Event_Free(esxVI_Event **eventList);
-int esxVI_Event_Validate(esxVI_Event *event);
-int esxVI_Event_Deserialize(xmlNodePtr node, esxVI_Event **event);
-int esxVI_Event_DeserializeList(xmlNodePtr node, esxVI_Event **eventList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: UserSession
- */
-
-struct _esxVI_UserSession {
- char *key; /* required */
- char *userName; /* required */
- char *fullName; /* required */
- esxVI_DateTime *loginTime; /* required */
- esxVI_DateTime *lastActiveTime; /* required */
- char *locale; /* required */
- char *messageLocale; /* required */
-};
-
-int esxVI_UserSession_Alloc(esxVI_UserSession **userSession);
-void esxVI_UserSession_Free(esxVI_UserSession **userSession);
-int esxVI_UserSession_Validate(esxVI_UserSession *userSession);
-int esxVI_UserSession_CastFromAnyType(esxVI_AnyType *anyType,
- esxVI_UserSession **userSession);
-int esxVI_UserSession_Deserialize(xmlNodePtr node,
- esxVI_UserSession **userSession);
-
+ (xmlNodePtr node, esxVI_ManagedObjectReference **managedObjectReference);
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: VirtualMachineQuestionInfo
- */
-
-/* FIXME: implement the rest */
-struct _esxVI_VirtualMachineQuestionInfo {
- char *id; /* required */
- char *text; /* required */
- esxVI_ChoiceOption *choice; /* required */
- /*esxVI_VirtualMachineMessage *message;*/ /* optional, list */
-};
-
-int esxVI_VirtualMachineQuestionInfo_Alloc
- (esxVI_VirtualMachineQuestionInfo **virtualMachineQuestionInfo);
-void esxVI_VirtualMachineQuestionInfo_Free
- (esxVI_VirtualMachineQuestionInfo **virtualMachineQuestionInfo);
-int esxVI_VirtualMachineQuestionInfo_Validate
- (esxVI_VirtualMachineQuestionInfo *virtualMachineQuestionInfo);
-int esxVI_VirtualMachineQuestionInfo_CastFromAnyType
- (esxVI_AnyType *anyType,
- esxVI_VirtualMachineQuestionInfo **virtualMachineQuestionInfo);
-int esxVI_VirtualMachineQuestionInfo_Deserialize
- (xmlNodePtr node,
- esxVI_VirtualMachineQuestionInfo **virtualMachineQuestionInfo);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ElementDescription extends Description
- *
- * In contrast to SelectionSpec and TraversalSpec just merge
- * Description into ElementDescription for simplicity, because
- * only ElementDescription is used.
- */
-
-struct _esxVI_ElementDescription {
- esxVI_ElementDescription *_next; /* optional */
-
- /* Description */
- char *label; /* required */
- char *summary; /* required */
-
- /* ElementDescription */
- char *key; /* required */
-};
-
-int esxVI_ElementDescription_Alloc
- (esxVI_ElementDescription **elementDescription);
-void esxVI_ElementDescription_Free
- (esxVI_ElementDescription **elementDescription);
-int esxVI_ElementDescription_Validate
- (esxVI_ElementDescription *elementDescription);
-int esxVI_ElementDescription_AppendToList
- (esxVI_ElementDescription **elementDescriptionList,
- esxVI_ElementDescription *elementDescription);
-int esxVI_ElementDescription_Deserialize
- (xmlNodePtr node, esxVI_ElementDescription **elementDescription);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: ChoiceOption extends OptionType
- *
- * In contrast to SelectionSpec and TraversalSpec just merge
- * OptionType into ChoiceOption for simplicity, because
- * only ChoiceOption is used.
- */
-
-struct _esxVI_ChoiceOption {
- /* OptionType */
- esxVI_Boolean valueIsReadonly; /* optional */
-
- /* ChoiceOption */
- esxVI_ElementDescription *choiceInfo; /* required, list */
- esxVI_Int *defaultIndex; /* optional */
-};
-
-int esxVI_ChoiceOption_Alloc(esxVI_ChoiceOption **choiceOption);
-void esxVI_ChoiceOption_Free(esxVI_ChoiceOption **choiceOption);
-int esxVI_ChoiceOption_Validate(esxVI_ChoiceOption *choiceOption);
-int esxVI_ChoiceOption_Deserialize(xmlNodePtr node,
- esxVI_ChoiceOption **choiceOption);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfMetricId
- */
-
-struct _esxVI_PerfMetricId {
- esxVI_PerfMetricId *_next; /* optional */
-
- esxVI_Int *counterId; /* required */
- char *instance; /* required */
-};
-
-int esxVI_PerfMetricId_Alloc(esxVI_PerfMetricId **perfMetricId);
-void esxVI_PerfMetricId_Free(esxVI_PerfMetricId **perfMetricId);
-int esxVI_PerfMetricId_Validate(esxVI_PerfMetricId *perfMetricId);
-int esxVI_PerfMetricId_Serialize(esxVI_PerfMetricId *perfMetricId,
- const char *element, virBufferPtr output);
-int esxVI_PerfMetricId_SerializeList(esxVI_PerfMetricId *perfMetricIdList,
- const char *element, virBufferPtr output);
-int esxVI_PerfMetricId_Deserialize(xmlNodePtr node,
- esxVI_PerfMetricId **perfMetricId);
-int esxVI_PerfMetricId_DeserializeList(xmlNodePtr node,
- esxVI_PerfMetricId **perfMetricIdList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfCounterInfo
- */
-
-struct _esxVI_PerfCounterInfo {
- esxVI_PerfCounterInfo *_next; /* optional */
-
- esxVI_Int *key; /* required */
- esxVI_ElementDescription *nameInfo; /* required */
- esxVI_ElementDescription *groupInfo; /* required */
- esxVI_ElementDescription *unitInfo; /* required */
- esxVI_PerfSummaryType rollupType; /* required */
- esxVI_PerfStatsType statsType; /* required */
- esxVI_Int *level; /* optional */
- esxVI_Int *associatedCounterId; /* optional, list */
-};
-
-int esxVI_PerfCounterInfo_Alloc(esxVI_PerfCounterInfo **perfCounterInfo);
-void esxVI_PerfCounterInfo_Free(esxVI_PerfCounterInfo **perfCounterInfo);
-int esxVI_PerfCounterInfo_Validate(esxVI_PerfCounterInfo *perfCounterInfo);
-int esxVI_PerfCounterInfo_Deserialize(xmlNodePtr node,
- esxVI_PerfCounterInfo **perfCounterInfo);
-int esxVI_PerfCounterInfo_DeserializeList
- (xmlNodePtr node, esxVI_PerfCounterInfo **perfCounterInfoList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfQuerySpec
- */
-
-struct _esxVI_PerfQuerySpec {
- esxVI_PerfQuerySpec *_next; /* optional */
-
- esxVI_ManagedObjectReference *entity; /* required */
- esxVI_DateTime *startTime; /* optional */
- esxVI_DateTime *endTime; /* optional */
- esxVI_Int *maxSample; /* optional */
- esxVI_PerfMetricId *metricId; /* optional, list */
- esxVI_Int *intervalId; /* optional */
- char *format; /* optional */ // FIXME: see
PerfFormat
-};
-
-int esxVI_PerfQuerySpec_Alloc(esxVI_PerfQuerySpec **perfQuerySpec);
-void esxVI_PerfQuerySpec_Free(esxVI_PerfQuerySpec **perfQuerySpec);
-int esxVI_PerfQuerySpec_Validate(esxVI_PerfQuerySpec *perfQuerySpec);
-int esxVI_PerfQuerySpec_Serialize(esxVI_PerfQuerySpec *perfQuerySpec,
- const char *element, virBufferPtr output);
-int esxVI_PerfQuerySpec_SerializeList(esxVI_PerfQuerySpec *perfQuerySpecList,
- const char *element, virBufferPtr output);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfSampleInfo
- */
-
-struct _esxVI_PerfSampleInfo {
- esxVI_PerfSampleInfo *_next; /* optional */
-
- esxVI_DateTime *timestamp; /* required */
- esxVI_Int *interval; /* required */
-};
-
-int esxVI_PerfSampleInfo_Alloc(esxVI_PerfSampleInfo **perfSampleInfo);
-void esxVI_PerfSampleInfo_Free(esxVI_PerfSampleInfo **perfSampleInfo);
-int esxVI_PerfSampleInfo_Validate(esxVI_PerfSampleInfo *perfSampleInfo);
-int esxVI_PerfSampleInfo_AppendToList(esxVI_PerfSampleInfo **perfSampleInfoList,
- esxVI_PerfSampleInfo *perfSampleInfo);
-int esxVI_PerfSampleInfo_Deserialize(xmlNodePtr node,
- esxVI_PerfSampleInfo **perfSampleInfo);
-int esxVI_PerfSampleInfo_DeserializeList
- (xmlNodePtr node, esxVI_PerfSampleInfo **perfSampleInfoList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfMetricIntSeries extends PerfMetricSeries
- *
- * In contrast to SelectionSpec and TraversalSpec just merge
- * PerfMetricSeries into PerfMetricIntSeries for simplicity, because
- * only PerfMetricIntSeries is used and the other type inheriting
- * PerfMetricSeries (PerfMetricSeriesCSV) is not used.
- */
-
-struct _esxVI_PerfMetricIntSeries {
- esxVI_PerfMetricIntSeries *_next; /* optional */
-
- /* PerfMetricSeries */
- esxVI_PerfMetricId *id; /* required */
-
- /* PerfMetricIntSeries */
- esxVI_Long *value; /* optional, list */
-};
-
-int esxVI_PerfMetricIntSeries_Alloc
- (esxVI_PerfMetricIntSeries **perfMetricIntSeries);
-void esxVI_PerfMetricIntSeries_Free
- (esxVI_PerfMetricIntSeries **perfMetricIntSeries);
-int esxVI_PerfMetricIntSeries_Validate
- (esxVI_PerfMetricIntSeries *perfMetricIntSeries);
-int esxVI_PerfMetricIntSeries_AppendToList
- (esxVI_PerfMetricIntSeries **perfMetricIntSeriesList,
- esxVI_PerfMetricIntSeries *perfMetricIntSeries);
-int esxVI_PerfMetricIntSeries_Deserialize
- (xmlNodePtr node, esxVI_PerfMetricIntSeries **perfMetricIntSeries);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: PerfEntityMetric extends PerfEntityMetricBase
- *
- * In contrast to SelectionSpec and TraversalSpec just merge
- * PerfEntityMetricBase into PerfEntityMetric for simplicity, because
- * only PerfEntityMetric is used and the other type inheriting
- * PerfEntityMetric (PerfEntityMetricCSV) is not used.
- *
- * Also use PerfMetricIntSeries instead of the correct base type
- * PerfMetricSeries for the value property, because only
- * PerfMetricIntSeries is used.
- */
-
-struct _esxVI_PerfEntityMetric {
- esxVI_PerfEntityMetric *_next; /* optional */
-
- /* PerfEntityMetricBase */
- esxVI_ManagedObjectReference *entity; /* required */
-
- /* PerfEntityMetric */
- esxVI_PerfSampleInfo *sampleInfo; /* optional, list */
- esxVI_PerfMetricIntSeries *value; /* optional, list */
-};
-
-int esxVI_PerfEntityMetric_Alloc(esxVI_PerfEntityMetric **perfEntityMetric);
-void esxVI_PerfEntityMetric_Free(esxVI_PerfEntityMetric **perfEntityMetric);
-int esxVI_PerfEntityMetric_Validate(esxVI_PerfEntityMetric *perfEntityMetric);
-int esxVI_PerfEntityMetric_Deserialize
- (xmlNodePtr node, esxVI_PerfEntityMetric **perfEntityMetric);
-int esxVI_PerfEntityMetric_DeserializeList
- (xmlNodePtr node, esxVI_PerfEntityMetric **perfEntityMetricList);
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * VI Type: TaskInfo
- */
-
-struct _esxVI_TaskInfo {
- esxVI_TaskInfo *_next; /* optional */
-
- char *key; /* required */
- esxVI_ManagedObjectReference *task; /* required */
- char *name; /* optional */
- char *descriptionId; /* required */
- esxVI_ManagedObjectReference *entity; /* optional */
- char *entityName; /* optional */
- /*esxVI_ManagedObjectReference *locked;*/ /* optional, list *//*
FIXME */
- esxVI_TaskInfoState state; /* required */
- esxVI_Boolean cancelled; /* required */
- esxVI_Boolean cancelable; /* required */
- /*esxVI_MethodFault *error;*/ /* optional *//* FIXME */
- esxVI_AnyType *result; /* optional */
- esxVI_Int *progress; /* optional */
- /*esxVI_TaskReason *reason;*/ /* required *//* FIXME */
- esxVI_DateTime *queueTime; /* required */
- esxVI_DateTime *startTime; /* optional */
- esxVI_DateTime *completeTime; /* optional */
- esxVI_Int *eventChainId; /* required */
-};
-int esxVI_TaskInfo_Alloc(esxVI_TaskInfo **taskInfo);
-void esxVI_TaskInfo_Free(esxVI_TaskInfo **taskInfoList);
-int esxVI_TaskInfo_Validate(esxVI_TaskInfo *taskInfo);
-int esxVI_TaskInfo_CastFromAnyType(esxVI_AnyType *anyType,
- esxVI_TaskInfo **taskInfo);
-int esxVI_TaskInfo_AppendToList(esxVI_TaskInfo **taskInfoList,
- esxVI_TaskInfo *taskInfo);
-int esxVI_TaskInfo_Deserialize(xmlNodePtr node, esxVI_TaskInfo **taskInfo);
+#include "esx_vi_types.generated.h"
#endif /* __ESX_VI_TYPES_H__ */
--
1.6.3.3