@stordata/vsphere-soapify
Version:
A NodeJS abstraction layer for the vSphere SOAP API
46 lines (39 loc) • 1.63 kB
JavaScript
;
const DynamicData = require('./DynamicData'),
ComputeResourceEventArgument = require('./ComputeResourceEventArgument'),
DatacenterEventArgument = require('./DatacenterEventArgument'),
DatastoreEventArgument = require('./DatastoreEventArgument'),
DvsEventArgument = require('./DvsEventArgument'),
HostEventArgument = require('./HostEventArgument'),
NetworkEventArgument = require('./NetworkEventArgument'),
VmEventArgument = require('./VmEventArgument');
module.exports = class Event extends DynamicData {
constructor(client, source) {
super(client, source);
/**
* Mimics what's done internally by vSphere. This is _somewhat_ documented, but still cryptic as f***.
* We use this to avoid mapping thousands of intermediate classes to strongly type all possible event subclasses.
*
* @see https://github.com/lamw/vcenter-event-mapping/blob/master/vsphere-6.7u3.md
* @see https://developer.broadcom.com/xapis/vsphere-web-services-api/7.0/vim.event.EventFilterSpec.html
*/
this.eventTypeId ??= this.client.getParser().extractType(source);
}
static mappings() {
return {
chainId: 'xsd:int',
changeTag: 'xsd:string',
computeResource: ComputeResourceEventArgument,
createdTime: 'xsd:dateTime',
datacenter: DatacenterEventArgument,
ds: DatastoreEventArgument,
dvs: DvsEventArgument,
fullFormattedMessage: 'xsd:string',
host: HostEventArgument,
key: 'xsd:int',
net: NetworkEventArgument,
userName: 'xsd:string',
vm: VmEventArgument
};
}
};