Classes/HypervisorPayload.ps1

class VSphereHypervisorHostInfo {
    [string]$name
    [string]$cluster
    [int]$number_of_vms
    [Nullable[int]]$power_policy  # 1=High Performance, 2=Balanced, 3=Low Power, 4=Custom
    [bool]$hyperthreading
}

class VSphereHypervisorCpuMetrics {
    [int]$number_of_threads
    [int]$number_of_packages
    [int]$number_of_vcpus
    [string]$ready_summation
    [string]$usage_average
    [string]$used_summation
}

class VSphereHypervisorDiskMetrics {
    [string]$read_average
    [string]$write_average
    [string]$max_total_latency_latest
}

class VSphereHypervisorMemoryMetrics {
    [string]$swap_in_rate_average
    [string]$swap_out_rate_average
    [string]$swap_used_average
    [string]$state_latest
    [string]$vm_mem_ctl_average
    [string]$usage_average
    [string]$installed
    [string]$committed
}

class VSphereHypervisorEvent {
    [string]$start_time
    [int]$duration
    [VSphereHypervisorCpuMetrics]$cpu
    [VSphereHypervisorDiskMetrics]$disk
    [VSphereHypervisorMemoryMetrics]$memory
}

class VSphereHypervisorVMInfo {
    [string]$name
    [string]$guest_tools_version
    [string]$resource_pool
    [Nullable[long]]$cpu_limit        # -1 = unlimited
    [string]$cpu_shares               # low / normal / high / custom
    [Nullable[long]]$disk_io_limit
}

class VSphereHypervisorDataItem {
    [VSphereHypervisorHostInfo]$host
    [VSphereHypervisorEvent[]]$events
    [VSphereHypervisorVMInfo[]]$virtual_machines
}

class VSphereHypervisorPayload {
    [string]$schema_version
    [string]$source
    [string]$customer_environment
    [string]$version
    [VSphereHypervisorDataItem[]]$data
}