D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
saltstack
/
salt
/
lib
/
python3.10
/
site-packages
/
salt
/
config
/
schemas
/
Filename :
esxi.py
back
Copy
""" :codeauthor: :email:`Alexandru Bleotu (alexandru.bleotu@morganstanley.com)` salt.config.schemas.esxi ~~~~~~~~~~~~~~~~~~~~~~~~ ESXi host configuration schemas """ from salt.utils.schema import ( ArrayItem, BooleanItem, ComplexSchemaItem, DefinitionsSchema, IntegerItem, OneOfItem, Schema, StringItem, ) class VMwareScsiAddressItem(StringItem): pattern = r"vmhba\d+:C\d+:T\d+:L\d+" class DiskGroupDiskScsiAddressItem(ComplexSchemaItem): """ Schema item of a ESXi host disk group containing disk SCSI addresses """ title = "Diskgroup Disk Scsi Address Item" description = "ESXi host diskgroup item containing disk SCSI addresses" cache_scsi_addr = VMwareScsiAddressItem( title="Cache Disk Scsi Address", description="Specifies the SCSI address of the cache disk", required=True, ) capacity_scsi_addrs = ArrayItem( title="Capacity Scsi Addresses", description="Array with the SCSI addresses of the capacity disks", items=VMwareScsiAddressItem(), min_items=1, ) class DiskGroupDiskIdItem(ComplexSchemaItem): """ Schema item of a ESXi host disk group containg disk ids """ title = "Diskgroup Disk Id Item" description = "ESXi host diskgroup item containing disk ids" cache_id = StringItem( title="Cache Disk Id", description="Specifies the id of the cache disk", pattern=r"[^\s]+", ) capacity_ids = ArrayItem( title="Capacity Disk Ids", description="Array with the ids of the capacity disks", items=StringItem(pattern=r"[^\s]+"), min_items=1, ) class DiskGroupsDiskScsiAddressSchema(DefinitionsSchema): """ Schema of ESXi host diskgroups containing disk SCSI addresses """ title = "Diskgroups Disk Scsi Address Schema" description = "ESXi host diskgroup schema containing disk SCSI addresses" diskgroups = ArrayItem( title="Diskgroups", description="List of diskgroups in an ESXi host", min_items=1, items=DiskGroupDiskScsiAddressItem(), required=True, ) erase_disks = BooleanItem(title="Erase Diskgroup Disks", required=True) class DiskGroupsDiskIdSchema(DefinitionsSchema): """ Schema of ESXi host diskgroups containing disk ids """ title = "Diskgroups Disk Id Schema" description = "ESXi host diskgroup schema containing disk ids" diskgroups = ArrayItem( title="DiskGroups", description="List of disk groups in an ESXi host", min_items=1, items=DiskGroupDiskIdItem(), required=True, ) class VmfsDatastoreDiskIdItem(ComplexSchemaItem): """ Schema item of a VMFS datastore referencing a backing disk id """ title = "VMFS Datastore Disk Id Item" description = "VMFS datastore item referencing a backing disk id" name = StringItem( title="Name", description="Specifies the name of the VMFS datastore", required=True, ) backing_disk_id = StringItem( title="Backing Disk Id", description="Specifies the id of the disk backing the VMFS datastore", pattern=r"[^\s]+", required=True, ) vmfs_version = IntegerItem( title="VMFS Version", description="VMFS version", enum=[1, 2, 3, 5] ) class VmfsDatastoreDiskScsiAddressItem(ComplexSchemaItem): """ Schema item of a VMFS datastore referencing a backing disk SCSI address """ title = "VMFS Datastore Disk Scsi Address Item" description = "VMFS datastore item referencing a backing disk SCSI address" name = StringItem( title="Name", description="Specifies the name of the VMFS datastore", required=True, ) backing_disk_scsi_addr = VMwareScsiAddressItem( title="Backing Disk Scsi Address", description="Specifies the SCSI address of the disk backing the VMFS datastore", required=True, ) vmfs_version = IntegerItem( title="VMFS Version", description="VMFS version", enum=[1, 2, 3, 5] ) class VmfsDatastoreSchema(DefinitionsSchema): """ Schema of a VMFS datastore """ title = "VMFS Datastore Schema" description = "Schema of a VMFS datastore" datastore = OneOfItem( items=[VmfsDatastoreDiskScsiAddressItem(), VmfsDatastoreDiskIdItem()], required=True, ) class HostCacheSchema(DefinitionsSchema): """ Schema of ESXi host cache """ title = "Host Cache Schema" description = "Schema of the ESXi host cache" enabled = BooleanItem(title="Enabled", required=True) datastore = VmfsDatastoreDiskScsiAddressItem(required=True) swap_size = StringItem( title="Host cache swap size (in GB or %)", pattern=r"(\d+GiB)|(([0-9]|([1-9][0-9])|100)%)", required=True, ) erase_backing_disk = BooleanItem(title="Erase Backup Disk", required=True) class SimpleHostCacheSchema(Schema): """ Simplified Schema of ESXi host cache """ title = "Simple Host Cache Schema" description = "Simplified schema of the ESXi host cache" enabled = BooleanItem(title="Enabled", required=True) datastore_name = StringItem(title="Datastore Name", required=True) swap_size_MiB = IntegerItem(title="Host cache swap size in MiB", minimum=1) class EsxiProxySchema(Schema): """ Schema of the esxi proxy input """ title = "Esxi Proxy Schema" description = "Esxi proxy schema" additional_properties = False proxytype = StringItem(required=True, enum=["esxi"]) host = StringItem(pattern=r"[^\s]+") # Used when connecting directly vcenter = StringItem(pattern=r"[^\s]+") # Used when connecting via a vCenter esxi_host = StringItem() username = StringItem() passwords = ArrayItem(min_items=1, items=StringItem(), unique_items=True) mechanism = StringItem(enum=["userpass", "sspi"]) # TODO Should be changed when anyOf is supported for schemas domain = StringItem() principal = StringItem() protocol = StringItem() port = IntegerItem(minimum=1)