Beispiel #1
0
class ESXVirtualMachineMemorySchemaItem(ComplexSchemaItem):
    '''
    Configurtation Schema Item for ESX Virtual Machine Memory
    '''
    title = 'ESX Virtual Machine Memory Configuration'
    description = 'ESX Virtual Machine memory property'
    required = True

    size = IntegerItem(title='Memory size',
                       description='Size of the memory',
                       required=True)

    unit = StringItem(title='Memory unit',
                      description='Unit of the memory, to VMware a '
                      'GB is the same as GiB = 1024MiB',
                      required=False,
                      default='MB',
                      enum=('MB', 'GB'))
    hotadd = BooleanItem(required=False, default=False)
    reservation_max = BooleanItem(required=False, default=False)
Beispiel #2
0
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")
Beispiel #3
0
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')
Beispiel #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)
Beispiel #5
0
class RosterEntryConfig(Schema):
    '''
    Schema definition of a Salt SSH Roster entry
    '''

    title = 'Roster Entry'
    description = 'Salt SSH roster entry definition'

    host = StringItem(
        title='Host',
        description='The IP address or DNS name of the remote host',
        # Pretty naive pattern matching
        pattern=
        r'^((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|([A-Za-z0-9][A-Za-z0-9\.\-]{1,255}))$',
        min_length=1,
        required=True)
    port = PortItem(title='Port',
                    description='The target system\'s ssh port number',
                    default=22)
    user = StringItem(title='User',
                      description='The user to log in as. Defaults to root',
                      default='root',
                      min_length=1,
                      required=True)
    passwd = SecretItem(title='Password',
                        description='The password to log in with',
                        min_length=1)
    priv = StringItem(
        title='Private Key',
        description='File path to ssh private key, defaults to salt-ssh.rsa',
        min_length=1)
    priv_passwd = SecretItem(title='Private Key passphrase',
                             description='Passphrase for private key file',
                             min_length=1)
    passwd_or_priv_requirement = AnyOfItem(
        items=(RequirementsItem(requirements=['passwd']),
               RequirementsItem(requirements=['priv'])))(flatten=True)
    sudo = BooleanItem(title='Sudo',
                       description='run command via sudo. Defaults to False',
                       default=False)
    timeout = IntegerItem(
        title='Timeout',
        description=('Number of seconds to wait for response '
                     'when establishing an SSH connection'))
    thin_dir = StringItem(
        title='Thin Directory',
        description=('The target system\'s storage directory for Salt '
                     'components. Defaults to /tmp/salt-<hash>.'))
    minion_opts = DictItem(title='Minion Options',
                           description='Dictionary of minion options',
                           properties=MinionConfiguration())
Beispiel #6
0
class ESXVirtualMachineCpuSchemaItem(ComplexSchemaItem):
    '''
    Configurtation Schema Item for ESX Virtual Machine CPU
    '''
    title = 'ESX Virtual Machine Memory Configuration'
    description = 'ESX Virtual Machine memory property'
    required = True

    count = IntegerItem(title='CPU core count',
                        description='CPU core count',
                        required=True)
    cores_per_socket = IntegerItem(title='CPU cores per socket',
                                   description='CPU cores per socket count',
                                   required=False)
    nested = BooleanItem(title='Virtual Machine Nested Property',
                         description='Nested virtualization support',
                         default=False)
    hotadd = BooleanItem(title='Virtual Machine CPU hot add',
                         description='CPU hot add',
                         default=False)
    hotremove = BooleanItem(title='Virtual Machine CPU hot remove',
                            description='CPU hot remove',
                            default=False)
Beispiel #7
0
class ESXVirtualMachineMemorySchemaItem(ComplexSchemaItem):
    """
    Configurtation Schema Item for ESX Virtual Machine Memory
    """

    title = "ESX Virtual Machine Memory Configuration"
    description = "ESX Virtual Machine memory property"
    required = True

    size = IntegerItem(
        title="Memory size", description="Size of the memory", required=True
    )

    unit = StringItem(
        title="Memory unit",
        description="Unit of the memory, to VMware a "
        "GB is the same as GiB = 1024MiB",
        required=False,
        default="MB",
        enum=("MB", "GB"),
    )
    hotadd = BooleanItem(required=False, default=False)
    reservation_max = BooleanItem(required=False, default=False)
Beispiel #8
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)
Beispiel #9
0
class ESXVirtualMachineRemoveSchema(DefinitionsSchema):
    '''
    Remove Schema for ESX Virtual Machines to delete or unregister virtual machines
    '''
    name = StringItem(title='Virtual Machine name',
                      description='Name of the virtual machine',
                      required=True)
    datacenter = StringItem(title='Virtual Machine Datacenter',
                            description='Datacenter of the virtual machine',
                            required=True)
    placement = AnyOfItem(
        required=False,
        items=[ESXVirtualMachinePlacementSchemaItem(),
               NullItem()])
    power_off = BooleanItem(title='Power off vm',
                            description='Power off vm before delete operation',
                            required=False)
Beispiel #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)
    verify_ssl = BooleanItem()
    ca_bundle = StringItem()

    domain = StringItem()
    principal = StringItem(default='host')
    protocol = StringItem(default='https')
    port = IntegerItem(minimum=1)
Beispiel #11
0
class ESXVirtualMachineSerialSchemaItem(ComplexSchemaItem):
    '''
    Configuration Schema Item for ESX Virtual Machine Serial Port
    '''
    title = 'ESX Virtual Machine Serial Port Configuration'
    description = 'ESX virtual machine serial port properties'

    type = StringItem(title='Virtual Machine Serial Port Type',
                      required=True,
                      enum=('network', 'pipe', 'file', 'device'))
    adapter = StringItem(
        title='Virtual Machine Serial Port Name',
        description='Unique adapter name for virtual machine serial port'
        'for creation an arbitrary value should be specified',
        required=True)
    backing = ESXVirtualMachineSerialBackingItem()
    connectable = ESXVirtualMachineDeviceConnectionItem()
    yield_port = BooleanItem(title='Serial Port Yield',
                             description='Serial port yield',
                             default=False)
Beispiel #12
0
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'])
Beispiel #13
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)
    verify_ssl = BooleanItem()
    ca_bundle = StringItem()

    domain = StringItem()
    principal = StringItem(default="host")
    protocol = StringItem(default="https")
    port = IntegerItem(minimum=1)
Beispiel #14
0
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"],
    )
Beispiel #15
0
class ESXVirtualMachineRemoveSchema(DefinitionsSchema):
    """
    Remove Schema for ESX Virtual Machines to delete or unregister virtual machines
    """

    name = StringItem(
        title="Virtual Machine name",
        description="Name of the virtual machine",
        required=True,
    )
    datacenter = StringItem(
        title="Virtual Machine Datacenter",
        description="Datacenter of the virtual machine",
        required=True,
    )
    placement = AnyOfItem(
        required=False, items=[ESXVirtualMachinePlacementSchemaItem(), NullItem()]
    )
    power_off = BooleanItem(
        title="Power off vm",
        description="Power off vm before delete operation",
        required=False,
    )
Beispiel #16
0
class ESXVirtualMachineSerialSchemaItem(ComplexSchemaItem):
    """
    Configuration Schema Item for ESX Virtual Machine Serial Port
    """

    title = "ESX Virtual Machine Serial Port Configuration"
    description = "ESX virtual machine serial port properties"

    type = StringItem(
        title="Virtual Machine Serial Port Type",
        required=True,
        enum=("network", "pipe", "file", "device"),
    )
    adapter = StringItem(
        title="Virtual Machine Serial Port Name",
        description="Unique adapter name for virtual machine serial port"
        "for creation an arbitrary value should be specified",
        required=True,
    )
    backing = ESXVirtualMachineSerialBackingItem()
    connectable = ESXVirtualMachineDeviceConnectionItem()
    yield_port = BooleanItem(
        title="Serial Port Yield", description="Serial port yield", default=False
    )
Beispiel #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)
Beispiel #18
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,
    )
Beispiel #19
0
class RosterEntryConfig(Schema):
    """
    Schema definition of a Salt SSH Roster entry
    """

    title = "Roster Entry"
    description = "Salt SSH roster entry definition"

    host = StringItem(
        title="Host",
        description="The IP address or DNS name of the remote host",
        # Pretty naive pattern matching
        pattern=
        r"^((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|([A-Za-z0-9][A-Za-z0-9\.\-]{1,255}))$",
        min_length=1,
        required=True,
    )
    port = PortItem(title="Port",
                    description="The target system's ssh port number",
                    default=22)
    user = StringItem(
        title="User",
        description="The user to log in as. Defaults to root",
        default="root",
        min_length=1,
        required=True,
    )
    passwd = SecretItem(title="Password",
                        description="The password to log in with",
                        min_length=1)
    priv = StringItem(
        title="Private Key",
        description="File path to ssh private key, defaults to salt-ssh.rsa",
        min_length=1,
    )
    priv_passwd = SecretItem(
        title="Private Key passphrase",
        description="Passphrase for private key file",
        min_length=1,
    )
    passwd_or_priv_requirement = AnyOfItem(items=(
        RequirementsItem(requirements=["passwd"]),
        RequirementsItem(requirements=["priv"]),
    ))(flatten=True)
    sudo = BooleanItem(
        title="Sudo",
        description="run command via sudo. Defaults to False",
        default=False,
    )
    timeout = IntegerItem(
        title="Timeout",
        description=("Number of seconds to wait for response "
                     "when establishing an SSH connection"),
    )
    thin_dir = StringItem(
        title="Thin Directory",
        description=("The target system's storage directory for Salt "
                     "components. Defaults to /tmp/salt-<hash>."),
    )
    minion_opts = DictItem(
        title="Minion Options",
        description="Dictionary of minion options",
        properties=MinionConfiguration(),
    )
Beispiel #20
0
class OptionValueItem(ComplexSchemaItem):
    '''Sechma item of the OptionValue'''

    title = 'OptionValue'
    key = StringItem(title='Key', required=True)
    value = AnyOfItem(items=[StringItem(), BooleanItem(), IntegerItem()])
Beispiel #21
0
class OptionValueItem(ComplexSchemaItem):
    """Sechma item of the OptionValue"""

    title = "OptionValue"
    key = StringItem(title="Key", required=True)
    value = AnyOfItem(items=[StringItem(), BooleanItem(), IntegerItem()])