Hi All, Freeing of an object having inheritance depth >=2 throws an error such
as:" internal error Call to esxVI_<grand_parent>_Free for unexpected type
'Child'. " For instance: Below code snippet is from esx_vi_generator.input
(modified) object VirtualDevice
Int key r
Description deviceInfo o
VirtualDeviceBackingInfo backing o
VirtualDeviceConnectInfo connectable o
Int controllerKey o
Int unitNumber o
end
object VirtualController extends VirtualDevice
Int busNumber r
Int device ol
end
object VirtualIDEController extends VirtualController
end object VirtualDeviceConfigSpec
VirtualDeviceConfigSpecOperation operation o
VirtualDeviceConfigSpecFileOperation fileOperation o
VirtualDevice device r
end
object VirtualMachineConfigSpec...
VirtualDeviceConfigSpec deviceChange ol..end On free
of "VirtualMachineConfigSpec", I hit below error:"libvir: ESX Driver error
: internal error Call to esxVI_VirtualDevice_Free for unexpected type
'VirtualIDEController'" But if I remove VirtualController and include its
fields directly to VirtualIDEController, error is resolved. Please let me know if I'm
missing anything, else, it seems like a bug with generated code. While debugging the
error seems to come from: esx_vi_types.c: /*
* Macros to implement dynamic dispatched functions
*/#define ESX_VI__TEMPLATE__DISPATCH(_actual_type, _actual_type_name, __type, \
_dispatch, _error_return) \
switch (_actual_type) { \
_dispatch \
\
case esxVI_Type_##__type: \
break; \
\
default: \
virReportError(VIR_ERR_INTERNAL_ERROR, \
_("Call to %s for unexpected type '%s'"),
\
__FUNCTION__, _actual_type_name); \
return _error_return; \
}
Thanks!Ata