# Copyright (c) 2006-2025 Broadcom. All Rights Reserved.
# Broadcom Confidential. The term "Broadcom" refers to Broadcom Inc.
# and/or its subsidiaries.

# ******* WARNING - AUTO GENERATED CODE - DO NOT EDIT *******

from typing import NoReturn
from typing import Optional

from pyVmomi.VmomiSupport import ManagedObject

from pyVmomi.vim import ClusterComputeResource
from pyVmomi.vim import ComputeResource
from pyVmomi.vim import Task

from pyVmomi.vim.cluster import VsanClusterHealthGroup
from pyVmomi.vim.cluster import VsanObjectInformation
from pyVmomi.vim.cluster import VsanPerfDiagnoseQuerySpec
from pyVmomi.vim.cluster import VsanPerfDiagnosticException
from pyVmomi.vim.cluster import VsanPerfDiagnosticResult
from pyVmomi.vim.cluster import VsanPerfEntityMetricCSV
from pyVmomi.vim.cluster import VsanPerfEntityType
from pyVmomi.vim.cluster import VsanPerfHotspotEntitiesMetrics
from pyVmomi.vim.cluster import VsanPerfHotspotQuerySpec
from pyVmomi.vim.cluster import VsanPerfNodeInformation
from pyVmomi.vim.cluster import VsanPerfQuerySpec
from pyVmomi.vim.cluster import VsanPerfTimeRange
from pyVmomi.vim.cluster import VsanPerfTimeRangeQuerySpec
from pyVmomi.vim.cluster import VsanPerfTopQuerySpec
from pyVmomi.vim.cluster import VsanRemoteClusterQuerySpec

from pyVmomi.vim.vm import ProfileSpec

class VsanPerformanceManager(ManagedObject):
   def QueryVsanPerfTopEntities(self, cluster: Optional[ClusterComputeResource], querySpec: VsanPerfTopQuerySpec) -> list[VsanPerfEntityMetricCSV]: ...
   def QueryVsanPerfHotspotEntities(self, cluster: Optional[ClusterComputeResource], querySpec: VsanPerfHotspotQuerySpec) -> list[VsanPerfHotspotEntitiesMetrics]: ...
   def VsanPerfDiagnose(self, perfDiagnoseQuery: VsanPerfDiagnoseQuerySpec, cluster: Optional[ComputeResource]) -> list[VsanPerfDiagnosticResult]: ...
   def VsanPerfDiagnoseTask(self, perfDiagnoseQuery: VsanPerfDiagnoseQuerySpec, cluster: Optional[ComputeResource]) -> Task: ...
   def GetVsanPerfDiagnosisResult(self, task: Task, cluster: Optional[ComputeResource]) -> list[VsanPerfDiagnosticResult]: ...
   def QueryVsanPerf(self, querySpecs: list[VsanPerfQuerySpec], cluster: Optional[ComputeResource]) -> list[VsanPerfEntityMetricCSV]: ...
   def QueryNodeInformation(self, cluster: Optional[ComputeResource]) -> list[VsanPerfNodeInformation]: ...
   def CreateStatsObject(self, cluster: Optional[ComputeResource], profile: Optional[ProfileSpec]) -> str: ...
   def CreateStatsObjectTask(self, cluster: Optional[ComputeResource], profile: Optional[ProfileSpec]) -> Task: ...
   def DeleteStatsObject(self, cluster: Optional[ComputeResource]) -> bool: ...
   def DeleteStatsObjectTask(self, cluster: Optional[ComputeResource]) -> Task: ...
   def SetStatsObjectPolicy(self, cluster: Optional[ComputeResource], profile: Optional[ProfileSpec]) -> bool: ...
   def QueryStatsObjectInformation(self, cluster: Optional[ComputeResource]) -> VsanObjectInformation: ...
   def QueryClusterHealth(self, cluster: ClusterComputeResource) -> list[VsanClusterHealthGroup]: ...
   def QueryTimeRanges(self, cluster: Optional[ClusterComputeResource], querySpec: VsanPerfTimeRangeQuerySpec) -> list[VsanPerfTimeRange]: ...
   def SaveTimeRanges(self, cluster: Optional[ClusterComputeResource], timeRanges: list[VsanPerfTimeRange]) -> NoReturn: ...
   def DeleteTimeRange(self, cluster: Optional[ClusterComputeResource], name: str) -> NoReturn: ...
   def ToggleVerboseMode(self, cluster: Optional[ClusterComputeResource], verboseMode: bool) -> NoReturn: ...
   def GetSupportedEntityTypes(self) -> list[VsanPerfEntityType]: ...
   def GetSupportedDiagnosticExceptions(self) -> list[VsanPerfDiagnosticException]: ...
   def GetAggregatedEntityTypes(self) -> list[VsanPerfEntityType]: ...
   def QueryRemoteServerClusters(self, cluster: Optional[ClusterComputeResource], querySpec: Optional[VsanRemoteClusterQuerySpec]) -> list[str]: ...
