[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] ESX error while freeing inherited objects

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   

object VirtualController extends VirtualDevice
    Int                                      busNumber                      r
    Int                                      device                         ol

object VirtualIDEController extends VirtualController
object VirtualDeviceConfigSpec
    VirtualDeviceConfigSpecOperation         operation                      o
    VirtualDeviceConfigSpecFileOperation     fileOperation                  o
    VirtualDevice                            device                         r

object VirtualMachineConfigSpec
   VirtualDeviceConfigSpec                  deviceChange                   ol
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:
 * 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;                                                 \


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]