Пример #1
0
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"
        ],
    )
Пример #2
0
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'
                               ])
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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,
    )
Пример #6
0
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)
Пример #7
0
class VCenterProxySchema(Schema):
    '''
    Schema for the configuration for the proxy to connect to a VCenter.
    '''
    title = 'VCenter Proxy Connection Schema'
    description = 'Schema that describes the connection to a VCenter'
    additional_properties = False
    proxytype = StringItem(required=True, enum=['vcenter'])
    vcenter = StringItem(required=True, pattern=r'[^\s]+')
    mechanism = StringItem(required=True, enum=['userpass', 'sspi'])
    username = StringItem()
    passwords = ArrayItem(min_items=1, items=StringItem(), unique_items=True)

    domain = StringItem()
    principal = StringItem(default='host')
    protocol = StringItem(default='https')
    port = IntegerItem(minimum=1)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
class VCenterProxySchema(Schema):
    """
    Schema for the configuration for the proxy to connect to a VCenter.
    """

    title = "VCenter Proxy Connection Schema"
    description = "Schema that describes the connection to a VCenter"
    additional_properties = False
    proxytype = StringItem(required=True, enum=["vcenter"])
    vcenter = StringItem(required=True, pattern=r"[^\s]+")
    mechanism = StringItem(required=True, enum=["userpass", "sspi"])
    username = StringItem()
    passwords = ArrayItem(min_items=1, items=StringItem(), unique_items=True)

    domain = StringItem()
    principal = StringItem(default="host")
    protocol = StringItem(default="https")
    port = IntegerItem(minimum=1)
Пример #11
0
class EsxdatacenterProxySchema(Schema):
    '''
    Schema of the esxdatacenter proxy input
    '''

    title = 'Esxdatacenter Proxy Schema'
    description = 'Esxdatacenter proxy schema'
    additional_properties = False
    proxytype = StringItem(required=True, enum=['esxdatacenter'])
    vcenter = StringItem(required=True, pattern=r'[^\s]+')
    datacenter = 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)
Пример #12
0
class EsxdatacenterProxySchema(Schema):
    """
    Schema of the esxdatacenter proxy input
    """

    title = "Esxdatacenter Proxy Schema"
    description = "Esxdatacenter proxy schema"
    additional_properties = False
    proxytype = StringItem(required=True, enum=["esxdatacenter"])
    vcenter = StringItem(required=True, pattern=r"[^\s]+")
    datacenter = 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)
Пример #13
0
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,
    )
Пример #14
0
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,
    )
Пример #15
0
class ESXVirtualMachineConfigSchema(DefinitionsSchema):
    '''
    Configuration Schema for ESX Virtual Machines
    '''
    title = 'ESX Virtual Machine Configuration Schema'
    description = 'ESX Virtual Machine configuration schema'

    vm_name = StringItem(title='Virtual Machine name',
                         description='Name of the virtual machine',
                         required=True)
    cpu = ESXVirtualMachineCpuSchemaItem()
    memory = ESXVirtualMachineMemorySchemaItem()
    image = StringItem(title='Virtual Machine guest OS',
                       description='Guest OS type',
                       required=True)
    version = StringItem(title='Virtual Machine hardware version',
                         description='Container hardware version property',
                         required=True)
    interfaces = ArrayItem(items=ESXVirtualMachineInterfaceSchemaItem(),
                           min_items=1,
                           required=False,
                           unique_items=True)
    disks = ArrayItem(items=ESXVirtualMachineDiskSchemaItem(),
                      min_items=1,
                      required=False,
                      unique_items=True)
    scsi_devices = ArrayItem(items=ESXVirtualMachineScsiSchemaItem(),
                             min_items=1,
                             required=False,
                             unique_items=True)
    serial_ports = ArrayItem(items=ESXVirtualMachineSerialSchemaItem(),
                             min_items=0,
                             required=False,
                             unique_items=True)
    cd_dvd_drives = ArrayItem(items=ESXVirtualMachineCdDriveSchemaItem(),
                              min_items=0,
                              required=False,
                              unique_items=True)
    sata_controllers = ArrayItem(items=ESXVirtualMachineSataSchemaItem(),
                                 min_items=0,
                                 required=False,
                                 unique_items=True)
    datacenter = StringItem(title='Virtual Machine Datacenter',
                            description='Datacenter of the virtual machine',
                            required=True)
    datastore = StringItem(title='Virtual Machine Datastore',
                           description='Datastore of the virtual machine',
                           required=True)
    placement = ESXVirtualMachinePlacementSchemaItem()
    template = BooleanItem(
        title='Virtual Machine Template',
        description='Template to create the virtual machine from',
        default=False)
    tools = BooleanItem(
        title='Virtual Machine VMware Tools',
        description='Install VMware tools on the guest machine',
        default=False)
    power_on = BooleanItem(
        title='Virtual Machine Power',
        description='Power on virtual machine afret creation',
        default=False)
    deploy = BooleanItem(
        title='Virtual Machine Deploy Salt',
        description='Deploy salt after successful installation',
        default=False)
Пример #16
0
class IncludeConfig(Schema):
    title = 'Include Configuration File(s)'
    description = 'Include one or more specific configuration files'

    string_or_array = OneOfItem(
        items=(StringItem(), ArrayItem(items=StringItem())))(flatten=True)
Пример #17
0
class ESXVirtualMachineConfigSchema(DefinitionsSchema):
    """
    Configuration Schema for ESX Virtual Machines
    """

    title = "ESX Virtual Machine Configuration Schema"
    description = "ESX Virtual Machine configuration schema"

    vm_name = StringItem(
        title="Virtual Machine name",
        description="Name of the virtual machine",
        required=True,
    )
    cpu = ESXVirtualMachineCpuSchemaItem()
    memory = ESXVirtualMachineMemorySchemaItem()
    image = StringItem(
        title="Virtual Machine guest OS", description="Guest OS type", required=True
    )
    version = StringItem(
        title="Virtual Machine hardware version",
        description="Container hardware version property",
        required=True,
    )
    interfaces = ArrayItem(
        items=ESXVirtualMachineInterfaceSchemaItem(),
        min_items=1,
        required=False,
        unique_items=True,
    )
    disks = ArrayItem(
        items=ESXVirtualMachineDiskSchemaItem(),
        min_items=1,
        required=False,
        unique_items=True,
    )
    scsi_devices = ArrayItem(
        items=ESXVirtualMachineScsiSchemaItem(),
        min_items=1,
        required=False,
        unique_items=True,
    )
    serial_ports = ArrayItem(
        items=ESXVirtualMachineSerialSchemaItem(),
        min_items=0,
        required=False,
        unique_items=True,
    )
    cd_dvd_drives = ArrayItem(
        items=ESXVirtualMachineCdDriveSchemaItem(),
        min_items=0,
        required=False,
        unique_items=True,
    )
    sata_controllers = ArrayItem(
        items=ESXVirtualMachineSataSchemaItem(),
        min_items=0,
        required=False,
        unique_items=True,
    )
    datacenter = StringItem(
        title="Virtual Machine Datacenter",
        description="Datacenter of the virtual machine",
        required=True,
    )
    datastore = StringItem(
        title="Virtual Machine Datastore",
        description="Datastore of the virtual machine",
        required=True,
    )
    placement = ESXVirtualMachinePlacementSchemaItem()
    template = BooleanItem(
        title="Virtual Machine Template",
        description="Template to create the virtual machine from",
        default=False,
    )
    tools = BooleanItem(
        title="Virtual Machine VMware Tools",
        description="Install VMware tools on the guest machine",
        default=False,
    )
    power_on = BooleanItem(
        title="Virtual Machine Power",
        description="Power on virtual machine afret creation",
        default=False,
    )
    deploy = BooleanItem(
        title="Virtual Machine Deploy Salt",
        description="Deploy salt after successful installation",
        default=False,
    )