%PDF- %PDF-
Direktori : /proc/self/root/lib/python2.7/site-packages/salt/config/schemas/ |
Current File : //proc/self/root/lib/python2.7/site-packages/salt/config/schemas/esxcluster.py |
# -*- coding: utf-8 -*- ''' :codeauthor: :email:`Alexandru Bleotu (alexandru.bleotu@morganstanley.com)` salt.config.schemas.esxcluster ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ESX Cluster configuration schemas ''' # Import Python libs from __future__ import absolute_import, print_function, unicode_literals # Import Salt libs from salt.utils.schema import (Schema, DefinitionsSchema, ComplexSchemaItem, DictItem, ArrayItem, IntegerItem, BooleanItem, StringItem, AnyOfItem) class OptionValueItem(ComplexSchemaItem): '''Sechma item of the OptionValue''' title = 'OptionValue' key = StringItem(title='Key', required=True) value = AnyOfItem(items=[StringItem(), BooleanItem(), IntegerItem()]) class AdmissionControlPolicyItem(ComplexSchemaItem): ''' Schema item of the HA admission control policy ''' title = 'Admission Control Policy' cpu_failover_percent = IntegerItem( title='CPU Failover Percent', minimum=0, maximum=100) memory_failover_percent = IntegerItem( title='Memory Failover Percent', minimum=0, maximum=100) class DefaultVmSettingsItem(ComplexSchemaItem): ''' Schema item of the HA default vm settings ''' title = 'Default VM Settings' isolation_response = StringItem( title='Isolation Response', enum=['clusterIsolationResponse', 'none', 'powerOff', 'shutdown']) restart_priority = StringItem( title='Restart Priority', enum=['clusterRestartPriority', 'disabled', 'high', 'low', 'medium']) class HAConfigItem(ComplexSchemaItem): ''' Schema item of ESX cluster high availability ''' title = 'HA Configuration' description = 'ESX cluster HA configuration json schema item' enabled = BooleanItem( title='Enabled', description='Specifies if HA should be enabled') admission_control_enabled = BooleanItem( title='Admission Control Enabled') admission_control_policy = AdmissionControlPolicyItem() default_vm_settings = DefaultVmSettingsItem() hb_ds_candidate_policy = StringItem( title='Heartbeat Datastore Candidate Policy', enum=['allFeasibleDs', 'allFeasibleDsWithUserPreference', 'userSelectedDs']) host_monitoring = StringItem(title='Host Monitoring', choices=['enabled', 'disabled']) options = ArrayItem(min_items=1, items=OptionValueItem()) vm_monitoring = StringItem( title='Vm Monitoring', choices=['vmMonitoringDisabled', 'vmAndAppMonitoring', 'vmMonitoringOnly']) class vSANClusterConfigItem(ComplexSchemaItem): ''' Schema item of the ESX cluster vSAN configuration ''' title = 'vSAN Configuration' description = 'ESX cluster vSAN configurationi item' enabled = BooleanItem( title='Enabled', description='Specifies if vSAN should be enabled') auto_claim_storage = BooleanItem( title='Auto Claim Storage', description='Specifies whether the storage of member ESXi hosts should ' 'be automatically claimed for vSAN') dedup_enabled = BooleanItem( title='Enabled', description='Specifies dedup should be enabled') compression_enabled = BooleanItem( title='Enabled', description='Specifies if compression should be enabled') class DRSConfigItem(ComplexSchemaItem): ''' Schema item of the ESX cluster DRS configuration ''' title = 'DRS Configuration' description = 'ESX cluster DRS configuration item' enabled = BooleanItem( title='Enabled', description='Specifies if DRS should be enabled') vmotion_rate = IntegerItem( title='vMotion rate', description='Aggressiveness to do automatic vMotions: ' '1 (least aggressive) - 5 (most aggressive)', minimum=1, maximum=5) default_vm_behavior = StringItem( title='Default VM DRS Behavior', description='Specifies the default VM DRS behavior', enum=['fullyAutomated', 'partiallyAutomated', 'manual']) class ESXClusterConfigSchema(DefinitionsSchema): ''' Schema of the ESX cluster config ''' title = 'ESX Cluster Configuration Schema' description = 'ESX cluster configuration schema' ha = HAConfigItem() vsan = vSANClusterConfigItem() drs = DRSConfigItem() vm_swap_placement = StringItem(title='VM Swap Placement') class ESXClusterEntitySchema(Schema): '''Schema of the ESX cluster entity''' title = 'ESX Cluster Entity Schema' description = 'ESX cluster entity schema' type = StringItem(title='Type', description='Specifies the entity type', required=True, enum=['cluster']) datacenter = StringItem(title='Datacenter', description='Specifies the cluster datacenter', required=True, pattern=r'\w+') cluster = StringItem(title='Cluster', description='Specifies the cluster name', required=True, pattern=r'\w+') class LicenseSchema(Schema): ''' Schema item of the ESX cluster vSAN configuration ''' title = 'Licenses schema' description = 'License configuration schema' licenses = DictItem( title='Licenses', description='Dictionary containing the license name to key mapping', required=True, additional_properties=StringItem( title='License Key', description='Specifies the license key', pattern=r'^(\w{5}-\w{5}-\w{5}-\w{5}-\w{5})$')) class EsxclusterProxySchema(Schema): ''' Schema of the esxcluster proxy input ''' title = 'Esxcluster Proxy Schema' description = 'Esxcluster proxy schema' additional_properties = False proxytype = StringItem(required=True, enum=['esxcluster']) vcenter = StringItem(required=True, pattern=r'[^\s]+') datacenter = StringItem(required=True) cluster = StringItem(required=True) mechanism = StringItem(required=True, enum=['userpass', 'sspi']) username = StringItem() passwords = ArrayItem(min_items=1, items=StringItem(), unique_items=True) # TODO Should be changed when anyOf is supported for schemas domain = StringItem() principal = StringItem() protocol = StringItem() port = IntegerItem(minimum=1)