Classes/HypervisorPayload.ps1

class NutanixHypervisorHostInfo {
    [string]$name
    [string]$cluster
    [Nullable[int]]$number_of_vms
    [Nullable[int]]$power_policy  # No Nutanix AHV equivalent - always null (see field mapping notes in Nutanix.ps1)
    [bool]$hyperthreading
}

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

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

class NutanixHypervisorMemoryMetrics {
    [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 NutanixHypervisorEvent {
    [string]$start_time
    [int]$duration
    [NutanixHypervisorCpuMetrics]$cpu
    [NutanixHypervisorDiskMetrics]$disk
    [NutanixHypervisorMemoryMetrics]$memory
}

class NutanixHypervisorVMInfo {
    [string]$name
    [string]$guest_tools_version
    [string]$resource_pool          # No Nutanix v4 equivalent - always null
    [Nullable[long]]$cpu_limit      # No Nutanix v4 equivalent - always null
    [string]$cpu_shares             # No Nutanix v4 equivalent - always null
    [Nullable[long]]$disk_io_limit
}

class NutanixHypervisorDataItem {
    [NutanixHypervisorHostInfo]$host
    [NutanixHypervisorEvent[]]$events
    [NutanixHypervisorVMInfo[]]$virtual_machines
}

class NutanixHypervisorPayload {
    [string]$schema_version
    [string]$source
    [string]$customer_environment
    [string]$version
    [NutanixHypervisorDataItem[]]$data
}