# 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 Optional

from pyVmomi.VmomiSupport import ManagedObject

from pyVmomi.vim import Task

from pyVmomi.vim.host import MaintenanceSpec
from pyVmomi.vim.host import ScsiDisk

from pyVmomi.vim.vsan.host import ClusterStatus
from pyVmomi.vim.vsan.host import ConfigInfo
from pyVmomi.vim.vsan.host import DiskMapping
from pyVmomi.vim.vsan.host import DiskResult

class VsanSystem(ManagedObject):
   @property
   def config(self) -> ConfigInfo: ...

   def QueryDisksForVsan(self, canonicalName: list[str]) -> list[DiskResult]: ...
   def AddDisks(self, disk: list[ScsiDisk]) -> Task: ...
   def InitializeDisks(self, mapping: list[DiskMapping]) -> Task: ...
   def RemoveDisk(self, disk: list[ScsiDisk], maintenanceSpec: Optional[MaintenanceSpec], timeout: Optional[int]) -> Task: ...
   def RemoveDiskMapping(self, mapping: list[DiskMapping], maintenanceSpec: Optional[MaintenanceSpec], timeout: Optional[int]) -> Task: ...
   def UnmountDiskMapping(self, mapping: list[DiskMapping]) -> Task: ...
   def Update(self, config: ConfigInfo) -> Task: ...
   def QueryHostStatus(self) -> ClusterStatus: ...
   def EvacuateNode(self, maintenanceSpec: MaintenanceSpec, timeout: int) -> Task: ...
   def RecommissionNode(self) -> Task: ...
