mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
esx: Generate most SOAP mapping and improve inheritance handling
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.
This commit is contained in:
parent
b4b0949dd7
commit
50723581b0
@ -26,6 +26,8 @@ INCLUDES = \
|
|||||||
|
|
||||||
EXTRA_DIST = $(conf_DATA)
|
EXTRA_DIST = $(conf_DATA)
|
||||||
|
|
||||||
|
BUILT_SOURCES =
|
||||||
|
|
||||||
if WITH_NETWORK
|
if WITH_NETWORK
|
||||||
UUID=$(shell uuidgen 2>/dev/null)
|
UUID=$(shell uuidgen 2>/dev/null)
|
||||||
endif
|
endif
|
||||||
@ -250,6 +252,20 @@ ESX_DRIVER_SOURCES = \
|
|||||||
esx/esx_vi_types.c esx/esx_vi_types.h \
|
esx/esx_vi_types.c esx/esx_vi_types.h \
|
||||||
esx/esx_vmx.c esx/esx_vmx.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_DRIVER_SOURCES = \
|
||||||
network/bridge_driver.h network/bridge_driver.c
|
network/bridge_driver.h network/bridge_driver.c
|
||||||
|
|
||||||
@ -594,7 +610,10 @@ libvirt_driver_one_la_SOURCES = $(ONE_DRIVER_SOURCES)
|
|||||||
endif
|
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_ESX
|
||||||
if WITH_DRIVER_MODULES
|
if WITH_DRIVER_MODULES
|
||||||
@ -610,6 +629,7 @@ if WITH_DRIVER_MODULES
|
|||||||
libvirt_driver_esx_la_LDFLAGS += -module -avoid-version
|
libvirt_driver_esx_la_LDFLAGS += -module -avoid-version
|
||||||
endif
|
endif
|
||||||
libvirt_driver_esx_la_SOURCES = $(ESX_DRIVER_SOURCES)
|
libvirt_driver_esx_la_SOURCES = $(ESX_DRIVER_SOURCES)
|
||||||
|
libvirt_driver_esx_la_DEPENDENCIES = $(ESX_DRIVER_GENERATED)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if WITH_NETWORK
|
if WITH_NETWORK
|
||||||
@ -784,6 +804,7 @@ EXTRA_DIST += \
|
|||||||
$(VBOX_DRIVER_SOURCES) \
|
$(VBOX_DRIVER_SOURCES) \
|
||||||
$(XENAPI_DRIVER_SOURCES) \
|
$(XENAPI_DRIVER_SOURCES) \
|
||||||
$(ESX_DRIVER_SOURCES) \
|
$(ESX_DRIVER_SOURCES) \
|
||||||
|
$(ESX_DRIVER_EXTRA_DIST) \
|
||||||
$(NETWORK_DRIVER_SOURCES) \
|
$(NETWORK_DRIVER_SOURCES) \
|
||||||
$(INTERFACE_DRIVER_SOURCES) \
|
$(INTERFACE_DRIVER_SOURCES) \
|
||||||
$(STORAGE_DRIVER_SOURCES) \
|
$(STORAGE_DRIVER_SOURCES) \
|
||||||
@ -867,7 +888,7 @@ EXTRA_DIST += \
|
|||||||
libvirt_macvtap.syms \
|
libvirt_macvtap.syms \
|
||||||
libvirt_daemon.syms
|
libvirt_daemon.syms
|
||||||
|
|
||||||
BUILT_SOURCES = libvirt.syms
|
BUILT_SOURCES += libvirt.syms
|
||||||
|
|
||||||
libvirt.syms: libvirt_public.syms $(USED_SYM_FILES)
|
libvirt.syms: libvirt_public.syms $(USED_SYM_FILES)
|
||||||
rm -f $@-tmp $@
|
rm -f $@-tmp $@
|
||||||
|
1
src/esx/.gitignore
vendored
Normal file
1
src/esx/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.generated.*
|
@ -1924,8 +1924,14 @@ esxDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
|
|||||||
perfEntityMetric = perfEntityMetric->_next) {
|
perfEntityMetric = perfEntityMetric->_next) {
|
||||||
VIR_DEBUG0("perfEntityMetric ...");
|
VIR_DEBUG0("perfEntityMetric ...");
|
||||||
|
|
||||||
for (perfMetricIntSeries = perfEntityMetric->value;
|
perfMetricIntSeries =
|
||||||
perfMetricIntSeries != NULL;
|
esxVI_PerfMetricIntSeries_DynamicCast(perfEntityMetric->value);
|
||||||
|
|
||||||
|
if (perfMetricIntSeries == NULL) {
|
||||||
|
VIR_ERROR0("QueryPerf returned object with unexpected type");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; perfMetricIntSeries != NULL;
|
||||||
perfMetricIntSeries = perfMetricIntSeries->_next) {
|
perfMetricIntSeries = perfMetricIntSeries->_next) {
|
||||||
VIR_DEBUG0("perfMetricIntSeries ...");
|
VIR_DEBUG0("perfMetricIntSeries ...");
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* esx_vi.c: client for the VMware VI API 2.5 to manage ESX hosts
|
* esx_vi.c: client for the VMware VI API 2.5 to manage ESX hosts
|
||||||
*
|
*
|
||||||
* Copyright (C) 2010 Red Hat, Inc.
|
* Copyright (C) 2010 Red Hat, Inc.
|
||||||
* Copyright (C) 2009 Matthias Bolte <matthias.bolte@googlemail.com>
|
* Copyright (C) 2009-2010 Matthias Bolte <matthias.bolte@googlemail.com>
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* 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) {
|
dynamicProperty = dynamicProperty->_next) {
|
||||||
if (STREQ(dynamicProperty->name, "vmFolder")) {
|
if (STREQ(dynamicProperty->name, "vmFolder")) {
|
||||||
if (esxVI_ManagedObjectReference_CastFromAnyType
|
if (esxVI_ManagedObjectReference_CastFromAnyType
|
||||||
(dynamicProperty->val, &ctx->vmFolder, "Folder")) {
|
(dynamicProperty->val, &ctx->vmFolder)) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
} else if (STREQ(dynamicProperty->name, "hostFolder")) {
|
} else if (STREQ(dynamicProperty->name, "hostFolder")) {
|
||||||
if (esxVI_ManagedObjectReference_CastFromAnyType
|
if (esxVI_ManagedObjectReference_CastFromAnyType
|
||||||
(dynamicProperty->val, &ctx->hostFolder, "Folder")) {
|
(dynamicProperty->val, &ctx->hostFolder)) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -720,6 +720,21 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
|
|||||||
|
|
||||||
switch (occurrence) {
|
switch (occurrence) {
|
||||||
case esxVI_Occurrence_RequiredItem:
|
case esxVI_Occurrence_RequiredItem:
|
||||||
|
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;
|
||||||
|
} 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) {
|
if ((*response)->node == NULL) {
|
||||||
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
|
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
|
||||||
"Call to '%s' returned an empty result, "
|
"Call to '%s' returned an empty result, "
|
||||||
@ -740,7 +755,7 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case esxVI_Occurrence_List:
|
case esxVI_Occurrence_OptionalList:
|
||||||
/* Any amount of items is valid */
|
/* Any amount of items is valid */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -821,10 +836,11 @@ esxVI_Enumeration_CastFromAnyType(const esxVI_Enumeration *enumeration,
|
|||||||
|
|
||||||
*value = 0; /* undefined */
|
*value = 0; /* undefined */
|
||||||
|
|
||||||
if (STRNEQ(anyType->other, enumeration->type)) {
|
if (anyType->type != enumeration->type) {
|
||||||
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
|
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
|
||||||
"Expecting type '%s' but found '%s'", enumeration->type,
|
"Expecting type '%s' but found '%s'",
|
||||||
anyType->other);
|
esxVI_Type_ToString(enumeration->type),
|
||||||
|
esxVI_Type_ToString(anyType->type));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -837,7 +853,7 @@ esxVI_Enumeration_CastFromAnyType(const esxVI_Enumeration *enumeration,
|
|||||||
|
|
||||||
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
|
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
|
||||||
"Unknown value '%s' for %s", anyType->value,
|
"Unknown value '%s' for %s", anyType->value,
|
||||||
enumeration->type);
|
esxVI_Type_ToString(enumeration->type));
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -870,7 +886,8 @@ esxVI_Enumeration_Serialize(const esxVI_Enumeration *enumeration,
|
|||||||
return -1;
|
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);
|
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",
|
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "Unknown value '%s' for %s",
|
||||||
name, enumeration->type);
|
name, esxVI_Type_ToString(enumeration->type));
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(name);
|
VIR_FREE(name);
|
||||||
@ -1009,7 +1026,7 @@ esxVI_List_CastFromAnyType(esxVI_AnyType *anyType, esxVI_List **list,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (childNode = anyType->_node->children; childNode != NULL;
|
for (childNode = anyType->node->children; childNode != NULL;
|
||||||
childNode = childNode->next) {
|
childNode = childNode->next) {
|
||||||
if (childNode->type != XML_ELEMENT_NODE) {
|
if (childNode->type != XML_ELEMENT_NODE) {
|
||||||
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
|
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
|
||||||
@ -1151,7 +1168,7 @@ esxVI_BuildFullTraversalSpecItem(esxVI_SelectionSpec **fullTraversalSpecList,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (esxVI_TraversalSpec_Alloc(&traversalSpec) < 0 ||
|
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->type, type) < 0 ||
|
||||||
esxVI_String_DeepCopyValue(&traversalSpec->path, path) < 0) {
|
esxVI_String_DeepCopyValue(&traversalSpec->path, path) < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
@ -1177,7 +1194,8 @@ esxVI_BuildFullTraversalSpecItem(esxVI_SelectionSpec **fullTraversalSpecList,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (esxVI_SelectionSpec_AppendToList(fullTraversalSpecList,
|
if (esxVI_SelectionSpec_AppendToList(fullTraversalSpecList,
|
||||||
traversalSpec->_base) < 0) {
|
esxVI_SelectionSpec_DynamicCast
|
||||||
|
(traversalSpec)) < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1721,8 +1739,7 @@ esxVI_LookupResourcePoolByHostSystem
|
|||||||
dynamicProperty = dynamicProperty->_next) {
|
dynamicProperty = dynamicProperty->_next) {
|
||||||
if (STREQ(dynamicProperty->name, "parent")) {
|
if (STREQ(dynamicProperty->name, "parent")) {
|
||||||
if (esxVI_ManagedObjectReference_CastFromAnyType
|
if (esxVI_ManagedObjectReference_CastFromAnyType
|
||||||
(dynamicProperty->val, &managedObjectReference,
|
(dynamicProperty->val, &managedObjectReference) < 0) {
|
||||||
"ComputeResource") < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1756,7 +1773,7 @@ esxVI_LookupResourcePoolByHostSystem
|
|||||||
dynamicProperty = dynamicProperty->_next) {
|
dynamicProperty = dynamicProperty->_next) {
|
||||||
if (STREQ(dynamicProperty->name, "resourcePool")) {
|
if (STREQ(dynamicProperty->name, "resourcePool")) {
|
||||||
if (esxVI_ManagedObjectReference_CastFromAnyType
|
if (esxVI_ManagedObjectReference_CastFromAnyType
|
||||||
(dynamicProperty->val, resourcePool, "ResourcePool") < 0) {
|
(dynamicProperty->val, resourcePool) < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2231,7 +2248,7 @@ esxVI_LookupPendingTaskInfoListByVirtualMachine
|
|||||||
dynamicProperty = dynamicProperty->_next) {
|
dynamicProperty = dynamicProperty->_next) {
|
||||||
if (STREQ(dynamicProperty->name, "recentTask")) {
|
if (STREQ(dynamicProperty->name, "recentTask")) {
|
||||||
if (esxVI_ManagedObjectReference_CastListFromAnyType
|
if (esxVI_ManagedObjectReference_CastListFromAnyType
|
||||||
(dynamicProperty->val, &recentTaskList, "Task") < 0) {
|
(dynamicProperty->val, &recentTaskList) < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* esx_vi.h: client for the VMware VI API 2.5 to manage ESX hosts
|
* esx_vi.h: client for the VMware VI API 2.5 to manage ESX hosts
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Matthias Bolte <matthias.bolte@googlemail.com>
|
* Copyright (C) 2009-2010 Matthias Bolte <matthias.bolte@googlemail.com>
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
@ -61,8 +61,9 @@ enum _esxVI_ProductVersion {
|
|||||||
enum _esxVI_Occurrence {
|
enum _esxVI_Occurrence {
|
||||||
esxVI_Occurrence_Undefined = 0,
|
esxVI_Occurrence_Undefined = 0,
|
||||||
esxVI_Occurrence_RequiredItem,
|
esxVI_Occurrence_RequiredItem,
|
||||||
|
esxVI_Occurrence_RequiredList,
|
||||||
esxVI_Occurrence_OptionalItem,
|
esxVI_Occurrence_OptionalItem,
|
||||||
esxVI_Occurrence_List,
|
esxVI_Occurrence_OptionalList,
|
||||||
esxVI_Occurrence_None
|
esxVI_Occurrence_None
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -132,7 +133,7 @@ struct _esxVI_EnumerationValue {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct _esxVI_Enumeration {
|
struct _esxVI_Enumeration {
|
||||||
const char *type;
|
esxVI_Type type;
|
||||||
esxVI_EnumerationValue values[10];
|
esxVI_EnumerationValue values[10];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
426
src/esx/esx_vi_generator.input
Normal file
426
src/esx/esx_vi_generator.input
Normal file
@ -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
|
1025
src/esx/esx_vi_generator.py
Executable file
1025
src/esx/esx_vi_generator.py
Executable file
File diff suppressed because it is too large
Load Diff
@ -304,7 +304,7 @@ ESX_VI__METHOD(RetrieveProperties,
|
|||||||
(esxVI_Context *ctx,
|
(esxVI_Context *ctx,
|
||||||
esxVI_PropertyFilterSpec *specSet, /* list */
|
esxVI_PropertyFilterSpec *specSet, /* list */
|
||||||
esxVI_ObjectContent **objectContentList),
|
esxVI_ObjectContent **objectContentList),
|
||||||
List,
|
OptionalList,
|
||||||
{
|
{
|
||||||
ESX_VI__METHOD__CHECK_SERVICE()
|
ESX_VI__METHOD__CHECK_SERVICE()
|
||||||
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(objectContentList)
|
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(objectContentList)
|
||||||
@ -344,8 +344,7 @@ ESX_VI__METHOD(PowerOnVM_Task,
|
|||||||
virtualMachine)
|
virtualMachine)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
|
if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
|
||||||
"Task") < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -369,8 +368,7 @@ ESX_VI__METHOD(PowerOffVM_Task,
|
|||||||
virtualMachine)
|
virtualMachine)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
|
if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
|
||||||
"Task") < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -394,8 +392,7 @@ ESX_VI__METHOD(SuspendVM_Task,
|
|||||||
virtualMachine)
|
virtualMachine)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
|
if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
|
||||||
"Task") < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -428,8 +425,7 @@ ESX_VI__METHOD(MigrateVM_Task,
|
|||||||
ESX_VI__METHOD__PARAMETER__SERIALIZE(VirtualMachinePowerState, state)
|
ESX_VI__METHOD__PARAMETER__SERIALIZE(VirtualMachinePowerState, state)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
|
if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
|
||||||
"Task") < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -456,8 +452,7 @@ ESX_VI__METHOD(ReconfigVM_Task,
|
|||||||
ESX_VI__METHOD__PARAMETER__SERIALIZE(VirtualMachineConfigSpec, spec)
|
ESX_VI__METHOD__PARAMETER__SERIALIZE(VirtualMachineConfigSpec, spec)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
|
if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
|
||||||
"Task") < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -490,8 +485,7 @@ ESX_VI__METHOD(RegisterVM_Task,
|
|||||||
ESX_VI__METHOD__PARAMETER__SERIALIZE(ManagedObjectReference, host)
|
ESX_VI__METHOD__PARAMETER__SERIALIZE(ManagedObjectReference, host)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
if (esxVI_ManagedObjectReference_Deserialize(response->node, task,
|
if (esxVI_ManagedObjectReference_Deserialize(response->node, task) < 0) {
|
||||||
"Task") < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -583,8 +577,8 @@ ESX_VI__METHOD(CreateFilter,
|
|||||||
ESX_VI__METHOD__PARAMETER__SERIALIZE(Boolean, partialUpdates)
|
ESX_VI__METHOD__PARAMETER__SERIALIZE(Boolean, partialUpdates)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
if (esxVI_ManagedObjectReference_Deserialize(response->node, propertyFilter,
|
if (esxVI_ManagedObjectReference_Deserialize(response->node,
|
||||||
"PropertyFilter") < 0) {
|
propertyFilter) < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -684,7 +678,7 @@ ESX_VI__METHOD(ValidateMigration,
|
|||||||
esxVI_ManagedObjectReference *pool,
|
esxVI_ManagedObjectReference *pool,
|
||||||
esxVI_ManagedObjectReference *host,
|
esxVI_ManagedObjectReference *host,
|
||||||
esxVI_Event **eventList),
|
esxVI_Event **eventList),
|
||||||
List,
|
OptionalList,
|
||||||
{
|
{
|
||||||
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(eventList)
|
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(eventList)
|
||||||
},
|
},
|
||||||
@ -736,10 +730,8 @@ ESX_VI__METHOD(FindByIp,
|
|||||||
ESX_VI__METHOD__PARAMETER__SERIALIZE(Boolean, vmSearch)
|
ESX_VI__METHOD__PARAMETER__SERIALIZE(Boolean, vmSearch)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
if (esxVI_ManagedObjectReference_Deserialize
|
if (esxVI_ManagedObjectReference_Deserialize(response->node,
|
||||||
(response->node, managedObjectReference,
|
managedObjectReference) < 0) {
|
||||||
vmSearch == esxVI_Boolean_True ? "VirtualMachine"
|
|
||||||
: "HostSystem") < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -771,10 +763,8 @@ ESX_VI__METHOD(FindByUuid,
|
|||||||
ESX_VI__METHOD__PARAMETER__SERIALIZE(Boolean, vmSearch)
|
ESX_VI__METHOD__PARAMETER__SERIALIZE(Boolean, vmSearch)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
if (esxVI_ManagedObjectReference_Deserialize
|
if (esxVI_ManagedObjectReference_Deserialize(response->node,
|
||||||
(response->node, managedObjectReference,
|
managedObjectReference) < 0) {
|
||||||
vmSearch == esxVI_Boolean_True ? "VirtualMachine"
|
|
||||||
: "HostSystem") < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -789,7 +779,7 @@ ESX_VI__METHOD(QueryAvailablePerfMetric,
|
|||||||
esxVI_DateTime *endTime,
|
esxVI_DateTime *endTime,
|
||||||
esxVI_Int *intervalId,
|
esxVI_Int *intervalId,
|
||||||
esxVI_PerfMetricId **perfMetricIdList),
|
esxVI_PerfMetricId **perfMetricIdList),
|
||||||
List,
|
OptionalList,
|
||||||
{
|
{
|
||||||
ESX_VI__METHOD__CHECK_SERVICE()
|
ESX_VI__METHOD__CHECK_SERVICE()
|
||||||
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(perfMetricIdList)
|
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(perfMetricIdList)
|
||||||
@ -820,7 +810,7 @@ ESX_VI__METHOD(QueryPerfCounter,
|
|||||||
(esxVI_Context *ctx,
|
(esxVI_Context *ctx,
|
||||||
esxVI_Int *counterId, /* list */
|
esxVI_Int *counterId, /* list */
|
||||||
esxVI_PerfCounterInfo **perfCounterInfoList),
|
esxVI_PerfCounterInfo **perfCounterInfoList),
|
||||||
List,
|
OptionalList,
|
||||||
{
|
{
|
||||||
ESX_VI__METHOD__CHECK_SERVICE()
|
ESX_VI__METHOD__CHECK_SERVICE()
|
||||||
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(perfCounterInfoList)
|
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(perfCounterInfoList)
|
||||||
@ -848,7 +838,7 @@ ESX_VI__METHOD(QueryPerf,
|
|||||||
(esxVI_Context *ctx,
|
(esxVI_Context *ctx,
|
||||||
esxVI_PerfQuerySpec *querySpec, /* list */
|
esxVI_PerfQuerySpec *querySpec, /* list */
|
||||||
esxVI_PerfEntityMetric **perfEntityMetricList),
|
esxVI_PerfEntityMetric **perfEntityMetricList),
|
||||||
List,
|
OptionalList,
|
||||||
{
|
{
|
||||||
ESX_VI__METHOD__CHECK_SERVICE()
|
ESX_VI__METHOD__CHECK_SERVICE()
|
||||||
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(perfEntityMetricList)
|
ESX_VI__METHOD__PARAMETER__CHECK_OUTPUT(perfEntityMetricList)
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user