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
}

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

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

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