# coding: utf-8
# Copyright (c) 2016, 2026, Oracle and/or its affiliates.  All rights reserved.
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.

# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220919


from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel  # noqa: F401
from oci.decorators import init_model_state_from_kwargs


@init_model_state_from_kwargs
class OlvmVirtualMachine(object):
    """
    Represents a virtual machine.
    """

    #: A constant which can be used with the auto_pinning_policy property of a OlvmVirtualMachine.
    #: This constant has a value of "ADJUST"
    AUTO_PINNING_POLICY_ADJUST = "ADJUST"

    #: A constant which can be used with the auto_pinning_policy property of a OlvmVirtualMachine.
    #: This constant has a value of "DISABLED"
    AUTO_PINNING_POLICY_DISABLED = "DISABLED"

    #: A constant which can be used with the auto_pinning_policy property of a OlvmVirtualMachine.
    #: This constant has a value of "EXISTING"
    AUTO_PINNING_POLICY_EXISTING = "EXISTING"

    #: A constant which can be used with the cpu_pinning_policy property of a OlvmVirtualMachine.
    #: This constant has a value of "DEDICATED"
    CPU_PINNING_POLICY_DEDICATED = "DEDICATED"

    #: A constant which can be used with the cpu_pinning_policy property of a OlvmVirtualMachine.
    #: This constant has a value of "ISOLATED_THREADS"
    CPU_PINNING_POLICY_ISOLATED_THREADS = "ISOLATED_THREADS"

    #: A constant which can be used with the cpu_pinning_policy property of a OlvmVirtualMachine.
    #: This constant has a value of "MANUAL"
    CPU_PINNING_POLICY_MANUAL = "MANUAL"

    #: A constant which can be used with the cpu_pinning_policy property of a OlvmVirtualMachine.
    #: This constant has a value of "NONE"
    CPU_PINNING_POLICY_NONE = "NONE"

    #: A constant which can be used with the cpu_pinning_policy property of a OlvmVirtualMachine.
    #: This constant has a value of "RESIZE_AND_PIN_NUMA"
    CPU_PINNING_POLICY_RESIZE_AND_PIN_NUMA = "RESIZE_AND_PIN_NUMA"

    #: A constant which can be used with the numa_tune_mode property of a OlvmVirtualMachine.
    #: This constant has a value of "INTERLEAVE"
    NUMA_TUNE_MODE_INTERLEAVE = "INTERLEAVE"

    #: A constant which can be used with the numa_tune_mode property of a OlvmVirtualMachine.
    #: This constant has a value of "PREFERRED"
    NUMA_TUNE_MODE_PREFERRED = "PREFERRED"

    #: A constant which can be used with the numa_tune_mode property of a OlvmVirtualMachine.
    #: This constant has a value of "STRICT"
    NUMA_TUNE_MODE_STRICT = "STRICT"

    #: A constant which can be used with the storage_error_resume_behavior property of a OlvmVirtualMachine.
    #: This constant has a value of "AUTO_RESUME"
    STORAGE_ERROR_RESUME_BEHAVIOR_AUTO_RESUME = "AUTO_RESUME"

    #: A constant which can be used with the storage_error_resume_behavior property of a OlvmVirtualMachine.
    #: This constant has a value of "KILL"
    STORAGE_ERROR_RESUME_BEHAVIOR_KILL = "KILL"

    #: A constant which can be used with the storage_error_resume_behavior property of a OlvmVirtualMachine.
    #: This constant has a value of "LEAVE_PAUSED"
    STORAGE_ERROR_RESUME_BEHAVIOR_LEAVE_PAUSED = "LEAVE_PAUSED"

    def __init__(self, **kwargs):
        """
        Initializes a new OlvmVirtualMachine object with values from keyword arguments.
        The following keyword arguments are supported (corresponding to the getters/setters of this class):

        :param auto_pinning_policy:
            The value to assign to the auto_pinning_policy property of this OlvmVirtualMachine.
            Allowed values for this property are: "ADJUST", "DISABLED", "EXISTING"
        :type auto_pinning_policy: str

        :param bios:
            The value to assign to the bios property of this OlvmVirtualMachine.
        :type bios: oci.cloud_migrations.models.OlvmBios

        :param comment:
            The value to assign to the comment property of this OlvmVirtualMachine.
        :type comment: str

        :param console:
            The value to assign to the console property of this OlvmVirtualMachine.
        :type console: oci.cloud_migrations.models.OlvmConsole

        :param cpu:
            The value to assign to the cpu property of this OlvmVirtualMachine.
        :type cpu: oci.cloud_migrations.models.OlvmCpu

        :param cpu_pinning_policy:
            The value to assign to the cpu_pinning_policy property of this OlvmVirtualMachine.
            Allowed values for this property are: "DEDICATED", "ISOLATED_THREADS", "MANUAL", "NONE", "RESIZE_AND_PIN_NUMA"
        :type cpu_pinning_policy: str

        :param cpu_shares:
            The value to assign to the cpu_shares property of this OlvmVirtualMachine.
        :type cpu_shares: int

        :param time_created:
            The value to assign to the time_created property of this OlvmVirtualMachine.
        :type time_created: datetime

        :param custom_compatibility_version:
            The value to assign to the custom_compatibility_version property of this OlvmVirtualMachine.
        :type custom_compatibility_version: oci.cloud_migrations.models.OlvmVersion

        :param custom_cpu_model:
            The value to assign to the custom_cpu_model property of this OlvmVirtualMachine.
        :type custom_cpu_model: str

        :param custom_emulated_machine:
            The value to assign to the custom_emulated_machine property of this OlvmVirtualMachine.
        :type custom_emulated_machine: str

        :param custom_properties:
            The value to assign to the custom_properties property of this OlvmVirtualMachine.
        :type custom_properties: list[oci.cloud_migrations.models.OlvmCustomProperty]

        :param is_delete_protected:
            The value to assign to the is_delete_protected property of this OlvmVirtualMachine.
        :type is_delete_protected: bool

        :param description:
            The value to assign to the description property of this OlvmVirtualMachine.
        :type description: str

        :param display:
            The value to assign to the display property of this OlvmVirtualMachine.
        :type display: oci.cloud_migrations.models.OlvmDisplay

        :param domain:
            The value to assign to the domain property of this OlvmVirtualMachine.
        :type domain: oci.cloud_migrations.models.OlvmDomain

        :param fqdn:
            The value to assign to the fqdn property of this OlvmVirtualMachine.
        :type fqdn: str

        :param guest_operating_system:
            The value to assign to the guest_operating_system property of this OlvmVirtualMachine.
        :type guest_operating_system: oci.cloud_migrations.models.OlvmGuestOperatingSystem

        :param guest_time_zone:
            The value to assign to the guest_time_zone property of this OlvmVirtualMachine.
        :type guest_time_zone: str

        :param is_contain_illegal_images:
            The value to assign to the is_contain_illegal_images property of this OlvmVirtualMachine.
        :type is_contain_illegal_images: bool

        :param high_availability:
            The value to assign to the high_availability property of this OlvmVirtualMachine.
        :type high_availability: oci.cloud_migrations.models.OlvmHighAvailability

        :param initialization:
            The value to assign to the initialization property of this OlvmVirtualMachine.
        :type initialization: oci.cloud_migrations.models.OlvmInitialization

        :param io_threads:
            The value to assign to the io_threads property of this OlvmVirtualMachine.
        :type io_threads: int

        :param large_icon:
            The value to assign to the large_icon property of this OlvmVirtualMachine.
        :type large_icon: oci.cloud_migrations.models.OlvmIcon

        :param storage_domain_lease:
            The value to assign to the storage_domain_lease property of this OlvmVirtualMachine.
        :type storage_domain_lease: oci.cloud_migrations.models.OlvmStorageDomainProperties

        :param memory_in_bytes:
            The value to assign to the memory_in_bytes property of this OlvmVirtualMachine.
        :type memory_in_bytes: int

        :param memory_policy:
            The value to assign to the memory_policy property of this OlvmVirtualMachine.
        :type memory_policy: oci.cloud_migrations.models.OlvmMemoryPolicy

        :param migration_policy:
            The value to assign to the migration_policy property of this OlvmVirtualMachine.
        :type migration_policy: oci.cloud_migrations.models.OlvmMigrationOptions

        :param migration_downtime_in_ms:
            The value to assign to the migration_downtime_in_ms property of this OlvmVirtualMachine.
        :type migration_downtime_in_ms: int

        :param is_multi_queues_enabled:
            The value to assign to the is_multi_queues_enabled property of this OlvmVirtualMachine.
        :type is_multi_queues_enabled: bool

        :param virtual_machine_name:
            The value to assign to the virtual_machine_name property of this OlvmVirtualMachine.
        :type virtual_machine_name: str

        :param is_next_run_configuration_exists:
            The value to assign to the is_next_run_configuration_exists property of this OlvmVirtualMachine.
        :type is_next_run_configuration_exists: bool

        :param numa_tune_mode:
            The value to assign to the numa_tune_mode property of this OlvmVirtualMachine.
            Allowed values for this property are: "INTERLEAVE", "PREFERRED", "STRICT"
        :type numa_tune_mode: str

        :param origin:
            The value to assign to the origin property of this OlvmVirtualMachine.
        :type origin: str

        :param os:
            The value to assign to the os property of this OlvmVirtualMachine.
        :type os: oci.cloud_migrations.models.OlvmOperatingSystem

        :param placement_policy:
            The value to assign to the placement_policy property of this OlvmVirtualMachine.
        :type placement_policy: oci.cloud_migrations.models.OlvmVmPlacementPolicy

        :param is_run_once:
            The value to assign to the is_run_once property of this OlvmVirtualMachine.
        :type is_run_once: bool

        :param serial_number:
            The value to assign to the serial_number property of this OlvmVirtualMachine.
        :type serial_number: oci.cloud_migrations.models.OlvmSerialNumber

        :param small_icon:
            The value to assign to the small_icon property of this OlvmVirtualMachine.
        :type small_icon: oci.cloud_migrations.models.OlvmIcon

        :param is_soundcard_enabled:
            The value to assign to the is_soundcard_enabled property of this OlvmVirtualMachine.
        :type is_soundcard_enabled: bool

        :param is_start_paused:
            The value to assign to the is_start_paused property of this OlvmVirtualMachine.
        :type is_start_paused: bool

        :param time_start:
            The value to assign to the time_start property of this OlvmVirtualMachine.
        :type time_start: datetime

        :param is_stateless:
            The value to assign to the is_stateless property of this OlvmVirtualMachine.
        :type is_stateless: bool

        :param status:
            The value to assign to the status property of this OlvmVirtualMachine.
        :type status: oci.cloud_migrations.models.OlvmVmStatus

        :param status_detail:
            The value to assign to the status_detail property of this OlvmVirtualMachine.
        :type status_detail: str

        :param stop_reason:
            The value to assign to the stop_reason property of this OlvmVirtualMachine.
        :type stop_reason: str

        :param time_stop:
            The value to assign to the time_stop property of this OlvmVirtualMachine.
        :type time_stop: datetime

        :param storage_error_resume_behavior:
            The value to assign to the storage_error_resume_behavior property of this OlvmVirtualMachine.
            Allowed values for this property are: "AUTO_RESUME", "KILL", "LEAVE_PAUSED"
        :type storage_error_resume_behavior: str

        :param timezone:
            The value to assign to the timezone property of this OlvmVirtualMachine.
        :type timezone: str

        :param is_tpm_enabled:
            The value to assign to the is_tpm_enabled property of this OlvmVirtualMachine.
        :type is_tpm_enabled: bool

        :param is_tunnel_migration:
            The value to assign to the is_tunnel_migration property of this OlvmVirtualMachine.
        :type is_tunnel_migration: bool

        :param type:
            The value to assign to the type property of this OlvmVirtualMachine.
        :type type: oci.cloud_migrations.models.OlvmVmType

        :param usb:
            The value to assign to the usb property of this OlvmVirtualMachine.
        :type usb: oci.cloud_migrations.models.OlvmUsb

        :param is_use_latest_template_version:
            The value to assign to the is_use_latest_template_version property of this OlvmVirtualMachine.
        :type is_use_latest_template_version: bool

        :param is_virtio_scsi_enabled:
            The value to assign to the is_virtio_scsi_enabled property of this OlvmVirtualMachine.
        :type is_virtio_scsi_enabled: bool

        :param virtio_scsi_multi_queues:
            The value to assign to the virtio_scsi_multi_queues property of this OlvmVirtualMachine.
        :type virtio_scsi_multi_queues: int

        :param is_virtio_scsi_multi_queues_enabled:
            The value to assign to the is_virtio_scsi_multi_queues_enabled property of this OlvmVirtualMachine.
        :type is_virtio_scsi_multi_queues_enabled: bool

        """
        self.swagger_types = {
            'auto_pinning_policy': 'str',
            'bios': 'OlvmBios',
            'comment': 'str',
            'console': 'OlvmConsole',
            'cpu': 'OlvmCpu',
            'cpu_pinning_policy': 'str',
            'cpu_shares': 'int',
            'time_created': 'datetime',
            'custom_compatibility_version': 'OlvmVersion',
            'custom_cpu_model': 'str',
            'custom_emulated_machine': 'str',
            'custom_properties': 'list[OlvmCustomProperty]',
            'is_delete_protected': 'bool',
            'description': 'str',
            'display': 'OlvmDisplay',
            'domain': 'OlvmDomain',
            'fqdn': 'str',
            'guest_operating_system': 'OlvmGuestOperatingSystem',
            'guest_time_zone': 'str',
            'is_contain_illegal_images': 'bool',
            'high_availability': 'OlvmHighAvailability',
            'initialization': 'OlvmInitialization',
            'io_threads': 'int',
            'large_icon': 'OlvmIcon',
            'storage_domain_lease': 'OlvmStorageDomainProperties',
            'memory_in_bytes': 'int',
            'memory_policy': 'OlvmMemoryPolicy',
            'migration_policy': 'OlvmMigrationOptions',
            'migration_downtime_in_ms': 'int',
            'is_multi_queues_enabled': 'bool',
            'virtual_machine_name': 'str',
            'is_next_run_configuration_exists': 'bool',
            'numa_tune_mode': 'str',
            'origin': 'str',
            'os': 'OlvmOperatingSystem',
            'placement_policy': 'OlvmVmPlacementPolicy',
            'is_run_once': 'bool',
            'serial_number': 'OlvmSerialNumber',
            'small_icon': 'OlvmIcon',
            'is_soundcard_enabled': 'bool',
            'is_start_paused': 'bool',
            'time_start': 'datetime',
            'is_stateless': 'bool',
            'status': 'OlvmVmStatus',
            'status_detail': 'str',
            'stop_reason': 'str',
            'time_stop': 'datetime',
            'storage_error_resume_behavior': 'str',
            'timezone': 'str',
            'is_tpm_enabled': 'bool',
            'is_tunnel_migration': 'bool',
            'type': 'OlvmVmType',
            'usb': 'OlvmUsb',
            'is_use_latest_template_version': 'bool',
            'is_virtio_scsi_enabled': 'bool',
            'virtio_scsi_multi_queues': 'int',
            'is_virtio_scsi_multi_queues_enabled': 'bool'
        }
        self.attribute_map = {
            'auto_pinning_policy': 'autoPinningPolicy',
            'bios': 'bios',
            'comment': 'comment',
            'console': 'console',
            'cpu': 'cpu',
            'cpu_pinning_policy': 'cpuPinningPolicy',
            'cpu_shares': 'cpuShares',
            'time_created': 'timeCreated',
            'custom_compatibility_version': 'customCompatibilityVersion',
            'custom_cpu_model': 'customCpuModel',
            'custom_emulated_machine': 'customEmulatedMachine',
            'custom_properties': 'customProperties',
            'is_delete_protected': 'isDeleteProtected',
            'description': 'description',
            'display': 'display',
            'domain': 'domain',
            'fqdn': 'fqdn',
            'guest_operating_system': 'guestOperatingSystem',
            'guest_time_zone': 'guestTimeZone',
            'is_contain_illegal_images': 'isContainIllegalImages',
            'high_availability': 'highAvailability',
            'initialization': 'initialization',
            'io_threads': 'ioThreads',
            'large_icon': 'largeIcon',
            'storage_domain_lease': 'storageDomainLease',
            'memory_in_bytes': 'memoryInBytes',
            'memory_policy': 'memoryPolicy',
            'migration_policy': 'migrationPolicy',
            'migration_downtime_in_ms': 'migrationDowntimeInMs',
            'is_multi_queues_enabled': 'isMultiQueuesEnabled',
            'virtual_machine_name': 'virtualMachineName',
            'is_next_run_configuration_exists': 'isNextRunConfigurationExists',
            'numa_tune_mode': 'numaTuneMode',
            'origin': 'origin',
            'os': 'os',
            'placement_policy': 'placementPolicy',
            'is_run_once': 'isRunOnce',
            'serial_number': 'serialNumber',
            'small_icon': 'smallIcon',
            'is_soundcard_enabled': 'isSoundcardEnabled',
            'is_start_paused': 'isStartPaused',
            'time_start': 'timeStart',
            'is_stateless': 'isStateless',
            'status': 'status',
            'status_detail': 'statusDetail',
            'stop_reason': 'stopReason',
            'time_stop': 'timeStop',
            'storage_error_resume_behavior': 'storageErrorResumeBehavior',
            'timezone': 'timezone',
            'is_tpm_enabled': 'isTpmEnabled',
            'is_tunnel_migration': 'isTunnelMigration',
            'type': 'type',
            'usb': 'usb',
            'is_use_latest_template_version': 'isUseLatestTemplateVersion',
            'is_virtio_scsi_enabled': 'isVirtioScsiEnabled',
            'virtio_scsi_multi_queues': 'virtioScsiMultiQueues',
            'is_virtio_scsi_multi_queues_enabled': 'isVirtioScsiMultiQueuesEnabled'
        }
        self._auto_pinning_policy = None
        self._bios = None
        self._comment = None
        self._console = None
        self._cpu = None
        self._cpu_pinning_policy = None
        self._cpu_shares = None
        self._time_created = None
        self._custom_compatibility_version = None
        self._custom_cpu_model = None
        self._custom_emulated_machine = None
        self._custom_properties = None
        self._is_delete_protected = None
        self._description = None
        self._display = None
        self._domain = None
        self._fqdn = None
        self._guest_operating_system = None
        self._guest_time_zone = None
        self._is_contain_illegal_images = None
        self._high_availability = None
        self._initialization = None
        self._io_threads = None
        self._large_icon = None
        self._storage_domain_lease = None
        self._memory_in_bytes = None
        self._memory_policy = None
        self._migration_policy = None
        self._migration_downtime_in_ms = None
        self._is_multi_queues_enabled = None
        self._virtual_machine_name = None
        self._is_next_run_configuration_exists = None
        self._numa_tune_mode = None
        self._origin = None
        self._os = None
        self._placement_policy = None
        self._is_run_once = None
        self._serial_number = None
        self._small_icon = None
        self._is_soundcard_enabled = None
        self._is_start_paused = None
        self._time_start = None
        self._is_stateless = None
        self._status = None
        self._status_detail = None
        self._stop_reason = None
        self._time_stop = None
        self._storage_error_resume_behavior = None
        self._timezone = None
        self._is_tpm_enabled = None
        self._is_tunnel_migration = None
        self._type = None
        self._usb = None
        self._is_use_latest_template_version = None
        self._is_virtio_scsi_enabled = None
        self._virtio_scsi_multi_queues = None
        self._is_virtio_scsi_multi_queues_enabled = None

    @property
    def auto_pinning_policy(self):
        """
        Gets the auto_pinning_policy of this OlvmVirtualMachine.
        Specifies if and how the auto CPU and NUMA configuration is applied.

        Allowed values for this property are: "ADJUST", "DISABLED", "EXISTING"


        :return: The auto_pinning_policy of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._auto_pinning_policy

    @auto_pinning_policy.setter
    def auto_pinning_policy(self, auto_pinning_policy):
        """
        Sets the auto_pinning_policy of this OlvmVirtualMachine.
        Specifies if and how the auto CPU and NUMA configuration is applied.


        :param auto_pinning_policy: The auto_pinning_policy of this OlvmVirtualMachine.
        :type: str
        """
        allowed_values = ["ADJUST", "DISABLED", "EXISTING"]
        if not value_allowed_none_or_none_sentinel(auto_pinning_policy, allowed_values):
            raise ValueError(
                f"Invalid value for `auto_pinning_policy`, must be None or one of {allowed_values}"
            )
        self._auto_pinning_policy = auto_pinning_policy

    @property
    def bios(self):
        """
        Gets the bios of this OlvmVirtualMachine.

        :return: The bios of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmBios
        """
        return self._bios

    @bios.setter
    def bios(self, bios):
        """
        Sets the bios of this OlvmVirtualMachine.

        :param bios: The bios of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmBios
        """
        self._bios = bios

    @property
    def comment(self):
        """
        Gets the comment of this OlvmVirtualMachine.
        Free text containing comments about this object.


        :return: The comment of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._comment

    @comment.setter
    def comment(self, comment):
        """
        Sets the comment of this OlvmVirtualMachine.
        Free text containing comments about this object.


        :param comment: The comment of this OlvmVirtualMachine.
        :type: str
        """
        self._comment = comment

    @property
    def console(self):
        """
        Gets the console of this OlvmVirtualMachine.

        :return: The console of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmConsole
        """
        return self._console

    @console.setter
    def console(self, console):
        """
        Sets the console of this OlvmVirtualMachine.

        :param console: The console of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmConsole
        """
        self._console = console

    @property
    def cpu(self):
        """
        Gets the cpu of this OlvmVirtualMachine.

        :return: The cpu of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmCpu
        """
        return self._cpu

    @cpu.setter
    def cpu(self, cpu):
        """
        Sets the cpu of this OlvmVirtualMachine.

        :param cpu: The cpu of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmCpu
        """
        self._cpu = cpu

    @property
    def cpu_pinning_policy(self):
        """
        Gets the cpu_pinning_policy of this OlvmVirtualMachine.
        Type representing the CPU and NUMA pinning policy.

        Allowed values for this property are: "DEDICATED", "ISOLATED_THREADS", "MANUAL", "NONE", "RESIZE_AND_PIN_NUMA"


        :return: The cpu_pinning_policy of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._cpu_pinning_policy

    @cpu_pinning_policy.setter
    def cpu_pinning_policy(self, cpu_pinning_policy):
        """
        Sets the cpu_pinning_policy of this OlvmVirtualMachine.
        Type representing the CPU and NUMA pinning policy.


        :param cpu_pinning_policy: The cpu_pinning_policy of this OlvmVirtualMachine.
        :type: str
        """
        allowed_values = ["DEDICATED", "ISOLATED_THREADS", "MANUAL", "NONE", "RESIZE_AND_PIN_NUMA"]
        if not value_allowed_none_or_none_sentinel(cpu_pinning_policy, allowed_values):
            raise ValueError(
                f"Invalid value for `cpu_pinning_policy`, must be None or one of {allowed_values}"
            )
        self._cpu_pinning_policy = cpu_pinning_policy

    @property
    def cpu_shares(self):
        """
        Gets the cpu_shares of this OlvmVirtualMachine.
        Number of CPU Shares


        :return: The cpu_shares of this OlvmVirtualMachine.
        :rtype: int
        """
        return self._cpu_shares

    @cpu_shares.setter
    def cpu_shares(self, cpu_shares):
        """
        Sets the cpu_shares of this OlvmVirtualMachine.
        Number of CPU Shares


        :param cpu_shares: The cpu_shares of this OlvmVirtualMachine.
        :type: int
        """
        self._cpu_shares = cpu_shares

    @property
    def time_created(self):
        """
        Gets the time_created of this OlvmVirtualMachine.
        Creation time.


        :return: The time_created of this OlvmVirtualMachine.
        :rtype: datetime
        """
        return self._time_created

    @time_created.setter
    def time_created(self, time_created):
        """
        Sets the time_created of this OlvmVirtualMachine.
        Creation time.


        :param time_created: The time_created of this OlvmVirtualMachine.
        :type: datetime
        """
        self._time_created = time_created

    @property
    def custom_compatibility_version(self):
        """
        Gets the custom_compatibility_version of this OlvmVirtualMachine.

        :return: The custom_compatibility_version of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmVersion
        """
        return self._custom_compatibility_version

    @custom_compatibility_version.setter
    def custom_compatibility_version(self, custom_compatibility_version):
        """
        Sets the custom_compatibility_version of this OlvmVirtualMachine.

        :param custom_compatibility_version: The custom_compatibility_version of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmVersion
        """
        self._custom_compatibility_version = custom_compatibility_version

    @property
    def custom_cpu_model(self):
        """
        Gets the custom_cpu_model of this OlvmVirtualMachine.
        Custom CPU model


        :return: The custom_cpu_model of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._custom_cpu_model

    @custom_cpu_model.setter
    def custom_cpu_model(self, custom_cpu_model):
        """
        Sets the custom_cpu_model of this OlvmVirtualMachine.
        Custom CPU model


        :param custom_cpu_model: The custom_cpu_model of this OlvmVirtualMachine.
        :type: str
        """
        self._custom_cpu_model = custom_cpu_model

    @property
    def custom_emulated_machine(self):
        """
        Gets the custom_emulated_machine of this OlvmVirtualMachine.
        Custom Emulated machine


        :return: The custom_emulated_machine of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._custom_emulated_machine

    @custom_emulated_machine.setter
    def custom_emulated_machine(self, custom_emulated_machine):
        """
        Sets the custom_emulated_machine of this OlvmVirtualMachine.
        Custom Emulated machine


        :param custom_emulated_machine: The custom_emulated_machine of this OlvmVirtualMachine.
        :type: str
        """
        self._custom_emulated_machine = custom_emulated_machine

    @property
    def custom_properties(self):
        """
        Gets the custom_properties of this OlvmVirtualMachine.
        Custom properties applied to the vNIC profile.


        :return: The custom_properties of this OlvmVirtualMachine.
        :rtype: list[oci.cloud_migrations.models.OlvmCustomProperty]
        """
        return self._custom_properties

    @custom_properties.setter
    def custom_properties(self, custom_properties):
        """
        Sets the custom_properties of this OlvmVirtualMachine.
        Custom properties applied to the vNIC profile.


        :param custom_properties: The custom_properties of this OlvmVirtualMachine.
        :type: list[oci.cloud_migrations.models.OlvmCustomProperty]
        """
        self._custom_properties = custom_properties

    @property
    def is_delete_protected(self):
        """
        Gets the is_delete_protected of this OlvmVirtualMachine.
        If true, the virtual machine cannot be deleted.


        :return: The is_delete_protected of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_delete_protected

    @is_delete_protected.setter
    def is_delete_protected(self, is_delete_protected):
        """
        Sets the is_delete_protected of this OlvmVirtualMachine.
        If true, the virtual machine cannot be deleted.


        :param is_delete_protected: The is_delete_protected of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_delete_protected = is_delete_protected

    @property
    def description(self):
        """
        Gets the description of this OlvmVirtualMachine.
        A human-readable description in plain text.


        :return: The description of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """
        Sets the description of this OlvmVirtualMachine.
        A human-readable description in plain text.


        :param description: The description of this OlvmVirtualMachine.
        :type: str
        """
        self._description = description

    @property
    def display(self):
        """
        Gets the display of this OlvmVirtualMachine.

        :return: The display of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmDisplay
        """
        return self._display

    @display.setter
    def display(self, display):
        """
        Sets the display of this OlvmVirtualMachine.

        :param display: The display of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmDisplay
        """
        self._display = display

    @property
    def domain(self):
        """
        Gets the domain of this OlvmVirtualMachine.

        :return: The domain of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmDomain
        """
        return self._domain

    @domain.setter
    def domain(self, domain):
        """
        Sets the domain of this OlvmVirtualMachine.

        :param domain: The domain of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmDomain
        """
        self._domain = domain

    @property
    def fqdn(self):
        """
        Gets the fqdn of this OlvmVirtualMachine.
        Fully qualified domain name of the virtual machine.


        :return: The fqdn of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._fqdn

    @fqdn.setter
    def fqdn(self, fqdn):
        """
        Sets the fqdn of this OlvmVirtualMachine.
        Fully qualified domain name of the virtual machine.


        :param fqdn: The fqdn of this OlvmVirtualMachine.
        :type: str
        """
        self._fqdn = fqdn

    @property
    def guest_operating_system(self):
        """
        Gets the guest_operating_system of this OlvmVirtualMachine.

        :return: The guest_operating_system of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmGuestOperatingSystem
        """
        return self._guest_operating_system

    @guest_operating_system.setter
    def guest_operating_system(self, guest_operating_system):
        """
        Sets the guest_operating_system of this OlvmVirtualMachine.

        :param guest_operating_system: The guest_operating_system of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmGuestOperatingSystem
        """
        self._guest_operating_system = guest_operating_system

    @property
    def guest_time_zone(self):
        """
        Gets the guest_time_zone of this OlvmVirtualMachine.
        What time zone is used by the virtual machine (as returned by guest agent).


        :return: The guest_time_zone of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._guest_time_zone

    @guest_time_zone.setter
    def guest_time_zone(self, guest_time_zone):
        """
        Sets the guest_time_zone of this OlvmVirtualMachine.
        What time zone is used by the virtual machine (as returned by guest agent).


        :param guest_time_zone: The guest_time_zone of this OlvmVirtualMachine.
        :type: str
        """
        self._guest_time_zone = guest_time_zone

    @property
    def is_contain_illegal_images(self):
        """
        Gets the is_contain_illegal_images of this OlvmVirtualMachine.
        Indicates whether the virtual machine has snapshots with disks in ILLEGAL state.


        :return: The is_contain_illegal_images of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_contain_illegal_images

    @is_contain_illegal_images.setter
    def is_contain_illegal_images(self, is_contain_illegal_images):
        """
        Sets the is_contain_illegal_images of this OlvmVirtualMachine.
        Indicates whether the virtual machine has snapshots with disks in ILLEGAL state.


        :param is_contain_illegal_images: The is_contain_illegal_images of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_contain_illegal_images = is_contain_illegal_images

    @property
    def high_availability(self):
        """
        Gets the high_availability of this OlvmVirtualMachine.

        :return: The high_availability of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmHighAvailability
        """
        return self._high_availability

    @high_availability.setter
    def high_availability(self, high_availability):
        """
        Sets the high_availability of this OlvmVirtualMachine.

        :param high_availability: The high_availability of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmHighAvailability
        """
        self._high_availability = high_availability

    @property
    def initialization(self):
        """
        Gets the initialization of this OlvmVirtualMachine.

        :return: The initialization of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmInitialization
        """
        return self._initialization

    @initialization.setter
    def initialization(self, initialization):
        """
        Sets the initialization of this OlvmVirtualMachine.

        :param initialization: The initialization of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmInitialization
        """
        self._initialization = initialization

    @property
    def io_threads(self):
        """
        Gets the io_threads of this OlvmVirtualMachine.
        For performance tuning of IO threading.


        :return: The io_threads of this OlvmVirtualMachine.
        :rtype: int
        """
        return self._io_threads

    @io_threads.setter
    def io_threads(self, io_threads):
        """
        Sets the io_threads of this OlvmVirtualMachine.
        For performance tuning of IO threading.


        :param io_threads: The io_threads of this OlvmVirtualMachine.
        :type: int
        """
        self._io_threads = io_threads

    @property
    def large_icon(self):
        """
        Gets the large_icon of this OlvmVirtualMachine.

        :return: The large_icon of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmIcon
        """
        return self._large_icon

    @large_icon.setter
    def large_icon(self, large_icon):
        """
        Sets the large_icon of this OlvmVirtualMachine.

        :param large_icon: The large_icon of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmIcon
        """
        self._large_icon = large_icon

    @property
    def storage_domain_lease(self):
        """
        Gets the storage_domain_lease of this OlvmVirtualMachine.

        :return: The storage_domain_lease of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmStorageDomainProperties
        """
        return self._storage_domain_lease

    @storage_domain_lease.setter
    def storage_domain_lease(self, storage_domain_lease):
        """
        Sets the storage_domain_lease of this OlvmVirtualMachine.

        :param storage_domain_lease: The storage_domain_lease of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmStorageDomainProperties
        """
        self._storage_domain_lease = storage_domain_lease

    @property
    def memory_in_bytes(self):
        """
        Gets the memory_in_bytes of this OlvmVirtualMachine.
        The virtual machine???s memory, in bytes.


        :return: The memory_in_bytes of this OlvmVirtualMachine.
        :rtype: int
        """
        return self._memory_in_bytes

    @memory_in_bytes.setter
    def memory_in_bytes(self, memory_in_bytes):
        """
        Sets the memory_in_bytes of this OlvmVirtualMachine.
        The virtual machine???s memory, in bytes.


        :param memory_in_bytes: The memory_in_bytes of this OlvmVirtualMachine.
        :type: int
        """
        self._memory_in_bytes = memory_in_bytes

    @property
    def memory_policy(self):
        """
        Gets the memory_policy of this OlvmVirtualMachine.

        :return: The memory_policy of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmMemoryPolicy
        """
        return self._memory_policy

    @memory_policy.setter
    def memory_policy(self, memory_policy):
        """
        Sets the memory_policy of this OlvmVirtualMachine.

        :param memory_policy: The memory_policy of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmMemoryPolicy
        """
        self._memory_policy = memory_policy

    @property
    def migration_policy(self):
        """
        Gets the migration_policy of this OlvmVirtualMachine.

        :return: The migration_policy of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmMigrationOptions
        """
        return self._migration_policy

    @migration_policy.setter
    def migration_policy(self, migration_policy):
        """
        Sets the migration_policy of this OlvmVirtualMachine.

        :param migration_policy: The migration_policy of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmMigrationOptions
        """
        self._migration_policy = migration_policy

    @property
    def migration_downtime_in_ms(self):
        """
        Gets the migration_downtime_in_ms of this OlvmVirtualMachine.
        Maximum time the virtual machine can be non responsive during its live migration to another host in ms.


        :return: The migration_downtime_in_ms of this OlvmVirtualMachine.
        :rtype: int
        """
        return self._migration_downtime_in_ms

    @migration_downtime_in_ms.setter
    def migration_downtime_in_ms(self, migration_downtime_in_ms):
        """
        Sets the migration_downtime_in_ms of this OlvmVirtualMachine.
        Maximum time the virtual machine can be non responsive during its live migration to another host in ms.


        :param migration_downtime_in_ms: The migration_downtime_in_ms of this OlvmVirtualMachine.
        :type: int
        """
        self._migration_downtime_in_ms = migration_downtime_in_ms

    @property
    def is_multi_queues_enabled(self):
        """
        Gets the is_multi_queues_enabled of this OlvmVirtualMachine.
        If true, each virtual interface will get the optimal number of queues, depending on the available virtual Cpus.


        :return: The is_multi_queues_enabled of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_multi_queues_enabled

    @is_multi_queues_enabled.setter
    def is_multi_queues_enabled(self, is_multi_queues_enabled):
        """
        Sets the is_multi_queues_enabled of this OlvmVirtualMachine.
        If true, each virtual interface will get the optimal number of queues, depending on the available virtual Cpus.


        :param is_multi_queues_enabled: The is_multi_queues_enabled of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_multi_queues_enabled = is_multi_queues_enabled

    @property
    def virtual_machine_name(self):
        """
        Gets the virtual_machine_name of this OlvmVirtualMachine.
        Name of the property.


        :return: The virtual_machine_name of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._virtual_machine_name

    @virtual_machine_name.setter
    def virtual_machine_name(self, virtual_machine_name):
        """
        Sets the virtual_machine_name of this OlvmVirtualMachine.
        Name of the property.


        :param virtual_machine_name: The virtual_machine_name of this OlvmVirtualMachine.
        :type: str
        """
        self._virtual_machine_name = virtual_machine_name

    @property
    def is_next_run_configuration_exists(self):
        """
        Gets the is_next_run_configuration_exists of this OlvmVirtualMachine.
        Indicates if virtual machine configuration has been changed and requires restart of the virtual machine.


        :return: The is_next_run_configuration_exists of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_next_run_configuration_exists

    @is_next_run_configuration_exists.setter
    def is_next_run_configuration_exists(self, is_next_run_configuration_exists):
        """
        Sets the is_next_run_configuration_exists of this OlvmVirtualMachine.
        Indicates if virtual machine configuration has been changed and requires restart of the virtual machine.


        :param is_next_run_configuration_exists: The is_next_run_configuration_exists of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_next_run_configuration_exists = is_next_run_configuration_exists

    @property
    def numa_tune_mode(self):
        """
        Gets the numa_tune_mode of this OlvmVirtualMachine.
        How the NUMA topology is applied.

        Allowed values for this property are: "INTERLEAVE", "PREFERRED", "STRICT"


        :return: The numa_tune_mode of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._numa_tune_mode

    @numa_tune_mode.setter
    def numa_tune_mode(self, numa_tune_mode):
        """
        Sets the numa_tune_mode of this OlvmVirtualMachine.
        How the NUMA topology is applied.


        :param numa_tune_mode: The numa_tune_mode of this OlvmVirtualMachine.
        :type: str
        """
        allowed_values = ["INTERLEAVE", "PREFERRED", "STRICT"]
        if not value_allowed_none_or_none_sentinel(numa_tune_mode, allowed_values):
            raise ValueError(
                f"Invalid value for `numa_tune_mode`, must be None or one of {allowed_values}"
            )
        self._numa_tune_mode = numa_tune_mode

    @property
    def origin(self):
        """
        Gets the origin of this OlvmVirtualMachine.
        The origin of this virtual machine.


        :return: The origin of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._origin

    @origin.setter
    def origin(self, origin):
        """
        Sets the origin of this OlvmVirtualMachine.
        The origin of this virtual machine.


        :param origin: The origin of this OlvmVirtualMachine.
        :type: str
        """
        self._origin = origin

    @property
    def os(self):
        """
        Gets the os of this OlvmVirtualMachine.

        :return: The os of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmOperatingSystem
        """
        return self._os

    @os.setter
    def os(self, os):
        """
        Sets the os of this OlvmVirtualMachine.

        :param os: The os of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmOperatingSystem
        """
        self._os = os

    @property
    def placement_policy(self):
        """
        Gets the placement_policy of this OlvmVirtualMachine.

        :return: The placement_policy of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmVmPlacementPolicy
        """
        return self._placement_policy

    @placement_policy.setter
    def placement_policy(self, placement_policy):
        """
        Sets the placement_policy of this OlvmVirtualMachine.

        :param placement_policy: The placement_policy of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmVmPlacementPolicy
        """
        self._placement_policy = placement_policy

    @property
    def is_run_once(self):
        """
        Gets the is_run_once of this OlvmVirtualMachine.
        If true, the virtual machine has been started using the run once command, meaning it???s configuration might differ from the stored one for the purpose of this single run.


        :return: The is_run_once of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_run_once

    @is_run_once.setter
    def is_run_once(self, is_run_once):
        """
        Sets the is_run_once of this OlvmVirtualMachine.
        If true, the virtual machine has been started using the run once command, meaning it???s configuration might differ from the stored one for the purpose of this single run.


        :param is_run_once: The is_run_once of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_run_once = is_run_once

    @property
    def serial_number(self):
        """
        Gets the serial_number of this OlvmVirtualMachine.

        :return: The serial_number of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmSerialNumber
        """
        return self._serial_number

    @serial_number.setter
    def serial_number(self, serial_number):
        """
        Sets the serial_number of this OlvmVirtualMachine.

        :param serial_number: The serial_number of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmSerialNumber
        """
        self._serial_number = serial_number

    @property
    def small_icon(self):
        """
        Gets the small_icon of this OlvmVirtualMachine.

        :return: The small_icon of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmIcon
        """
        return self._small_icon

    @small_icon.setter
    def small_icon(self, small_icon):
        """
        Sets the small_icon of this OlvmVirtualMachine.

        :param small_icon: The small_icon of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmIcon
        """
        self._small_icon = small_icon

    @property
    def is_soundcard_enabled(self):
        """
        Gets the is_soundcard_enabled of this OlvmVirtualMachine.
        If true, the sound card is added to the virtual machine.


        :return: The is_soundcard_enabled of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_soundcard_enabled

    @is_soundcard_enabled.setter
    def is_soundcard_enabled(self, is_soundcard_enabled):
        """
        Sets the is_soundcard_enabled of this OlvmVirtualMachine.
        If true, the sound card is added to the virtual machine.


        :param is_soundcard_enabled: The is_soundcard_enabled of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_soundcard_enabled = is_soundcard_enabled

    @property
    def is_start_paused(self):
        """
        Gets the is_start_paused of this OlvmVirtualMachine.
        If true, the virtual machine will be initially in 'paused' state after start.


        :return: The is_start_paused of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_start_paused

    @is_start_paused.setter
    def is_start_paused(self, is_start_paused):
        """
        Sets the is_start_paused of this OlvmVirtualMachine.
        If true, the virtual machine will be initially in 'paused' state after start.


        :param is_start_paused: The is_start_paused of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_start_paused = is_start_paused

    @property
    def time_start(self):
        """
        Gets the time_start of this OlvmVirtualMachine.
        The date in which the virtual machine was started.


        :return: The time_start of this OlvmVirtualMachine.
        :rtype: datetime
        """
        return self._time_start

    @time_start.setter
    def time_start(self, time_start):
        """
        Sets the time_start of this OlvmVirtualMachine.
        The date in which the virtual machine was started.


        :param time_start: The time_start of this OlvmVirtualMachine.
        :type: datetime
        """
        self._time_start = time_start

    @property
    def is_stateless(self):
        """
        Gets the is_stateless of this OlvmVirtualMachine.
        If true, the virtual machine is stateless - it???s state (disks) are rolled-back after shutdown.


        :return: The is_stateless of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_stateless

    @is_stateless.setter
    def is_stateless(self, is_stateless):
        """
        Sets the is_stateless of this OlvmVirtualMachine.
        If true, the virtual machine is stateless - it???s state (disks) are rolled-back after shutdown.


        :param is_stateless: The is_stateless of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_stateless = is_stateless

    @property
    def status(self):
        """
        Gets the status of this OlvmVirtualMachine.

        :return: The status of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmVmStatus
        """
        return self._status

    @status.setter
    def status(self, status):
        """
        Sets the status of this OlvmVirtualMachine.

        :param status: The status of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmVmStatus
        """
        self._status = status

    @property
    def status_detail(self):
        """
        Gets the status_detail of this OlvmVirtualMachine.
        Human readable detail of current status.


        :return: The status_detail of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._status_detail

    @status_detail.setter
    def status_detail(self, status_detail):
        """
        Sets the status_detail of this OlvmVirtualMachine.
        Human readable detail of current status.


        :param status_detail: The status_detail of this OlvmVirtualMachine.
        :type: str
        """
        self._status_detail = status_detail

    @property
    def stop_reason(self):
        """
        Gets the stop_reason of this OlvmVirtualMachine.
        The reason the virtual machine was stopped.


        :return: The stop_reason of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._stop_reason

    @stop_reason.setter
    def stop_reason(self, stop_reason):
        """
        Sets the stop_reason of this OlvmVirtualMachine.
        The reason the virtual machine was stopped.


        :param stop_reason: The stop_reason of this OlvmVirtualMachine.
        :type: str
        """
        self._stop_reason = stop_reason

    @property
    def time_stop(self):
        """
        Gets the time_stop of this OlvmVirtualMachine.
        The date in which the virtual machine was stopped.


        :return: The time_stop of this OlvmVirtualMachine.
        :rtype: datetime
        """
        return self._time_stop

    @time_stop.setter
    def time_stop(self, time_stop):
        """
        Sets the time_stop of this OlvmVirtualMachine.
        The date in which the virtual machine was stopped.


        :param time_stop: The time_stop of this OlvmVirtualMachine.
        :type: datetime
        """
        self._time_stop = time_stop

    @property
    def storage_error_resume_behavior(self):
        """
        Gets the storage_error_resume_behavior of this OlvmVirtualMachine.
        Determines how the virtual machine will be resumed after storage error.

        Allowed values for this property are: "AUTO_RESUME", "KILL", "LEAVE_PAUSED"


        :return: The storage_error_resume_behavior of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._storage_error_resume_behavior

    @storage_error_resume_behavior.setter
    def storage_error_resume_behavior(self, storage_error_resume_behavior):
        """
        Sets the storage_error_resume_behavior of this OlvmVirtualMachine.
        Determines how the virtual machine will be resumed after storage error.


        :param storage_error_resume_behavior: The storage_error_resume_behavior of this OlvmVirtualMachine.
        :type: str
        """
        allowed_values = ["AUTO_RESUME", "KILL", "LEAVE_PAUSED"]
        if not value_allowed_none_or_none_sentinel(storage_error_resume_behavior, allowed_values):
            raise ValueError(
                f"Invalid value for `storage_error_resume_behavior`, must be None or one of {allowed_values}"
            )
        self._storage_error_resume_behavior = storage_error_resume_behavior

    @property
    def timezone(self):
        """
        Gets the timezone of this OlvmVirtualMachine.
        Name of time zone.


        :return: The timezone of this OlvmVirtualMachine.
        :rtype: str
        """
        return self._timezone

    @timezone.setter
    def timezone(self, timezone):
        """
        Sets the timezone of this OlvmVirtualMachine.
        Name of time zone.


        :param timezone: The timezone of this OlvmVirtualMachine.
        :type: str
        """
        self._timezone = timezone

    @property
    def is_tpm_enabled(self):
        """
        Gets the is_tpm_enabled of this OlvmVirtualMachine.
        If true, a TPM device is added to the virtual machine.


        :return: The is_tpm_enabled of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_tpm_enabled

    @is_tpm_enabled.setter
    def is_tpm_enabled(self, is_tpm_enabled):
        """
        Sets the is_tpm_enabled of this OlvmVirtualMachine.
        If true, a TPM device is added to the virtual machine.


        :param is_tpm_enabled: The is_tpm_enabled of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_tpm_enabled = is_tpm_enabled

    @property
    def is_tunnel_migration(self):
        """
        Gets the is_tunnel_migration of this OlvmVirtualMachine.
        If true, the network data transfer will be encrypted during virtual machine live migration.


        :return: The is_tunnel_migration of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_tunnel_migration

    @is_tunnel_migration.setter
    def is_tunnel_migration(self, is_tunnel_migration):
        """
        Sets the is_tunnel_migration of this OlvmVirtualMachine.
        If true, the network data transfer will be encrypted during virtual machine live migration.


        :param is_tunnel_migration: The is_tunnel_migration of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_tunnel_migration = is_tunnel_migration

    @property
    def type(self):
        """
        Gets the type of this OlvmVirtualMachine.

        :return: The type of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmVmType
        """
        return self._type

    @type.setter
    def type(self, type):
        """
        Sets the type of this OlvmVirtualMachine.

        :param type: The type of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmVmType
        """
        self._type = type

    @property
    def usb(self):
        """
        Gets the usb of this OlvmVirtualMachine.

        :return: The usb of this OlvmVirtualMachine.
        :rtype: oci.cloud_migrations.models.OlvmUsb
        """
        return self._usb

    @usb.setter
    def usb(self, usb):
        """
        Sets the usb of this OlvmVirtualMachine.

        :param usb: The usb of this OlvmVirtualMachine.
        :type: oci.cloud_migrations.models.OlvmUsb
        """
        self._usb = usb

    @property
    def is_use_latest_template_version(self):
        """
        Gets the is_use_latest_template_version of this OlvmVirtualMachine.
        If true, the virtual machine is reconfigured to the latest version of it???s template when it is started.


        :return: The is_use_latest_template_version of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_use_latest_template_version

    @is_use_latest_template_version.setter
    def is_use_latest_template_version(self, is_use_latest_template_version):
        """
        Sets the is_use_latest_template_version of this OlvmVirtualMachine.
        If true, the virtual machine is reconfigured to the latest version of it???s template when it is started.


        :param is_use_latest_template_version: The is_use_latest_template_version of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_use_latest_template_version = is_use_latest_template_version

    @property
    def is_virtio_scsi_enabled(self):
        """
        Gets the is_virtio_scsi_enabled of this OlvmVirtualMachine.
        Indicates if Virtio SCSI Support is enabled.


        :return: The is_virtio_scsi_enabled of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_virtio_scsi_enabled

    @is_virtio_scsi_enabled.setter
    def is_virtio_scsi_enabled(self, is_virtio_scsi_enabled):
        """
        Sets the is_virtio_scsi_enabled of this OlvmVirtualMachine.
        Indicates if Virtio SCSI Support is enabled.


        :param is_virtio_scsi_enabled: The is_virtio_scsi_enabled of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_virtio_scsi_enabled = is_virtio_scsi_enabled

    @property
    def virtio_scsi_multi_queues(self):
        """
        Gets the virtio_scsi_multi_queues of this OlvmVirtualMachine.
        Number of queues for a Virtio-SCSI contoller this field requires virtioScsiMultiQueuesEnabled to be true see virtioScsiMultiQueuesEnabled for more info


        :return: The virtio_scsi_multi_queues of this OlvmVirtualMachine.
        :rtype: int
        """
        return self._virtio_scsi_multi_queues

    @virtio_scsi_multi_queues.setter
    def virtio_scsi_multi_queues(self, virtio_scsi_multi_queues):
        """
        Sets the virtio_scsi_multi_queues of this OlvmVirtualMachine.
        Number of queues for a Virtio-SCSI contoller this field requires virtioScsiMultiQueuesEnabled to be true see virtioScsiMultiQueuesEnabled for more info


        :param virtio_scsi_multi_queues: The virtio_scsi_multi_queues of this OlvmVirtualMachine.
        :type: int
        """
        self._virtio_scsi_multi_queues = virtio_scsi_multi_queues

    @property
    def is_virtio_scsi_multi_queues_enabled(self):
        """
        Gets the is_virtio_scsi_multi_queues_enabled of this OlvmVirtualMachine.
        If true, the Virtio-SCSI devices will obtain a number of multiple queues depending on the available virtual Cpus and disks, or according to the specified virtioScsiMultiQueues


        :return: The is_virtio_scsi_multi_queues_enabled of this OlvmVirtualMachine.
        :rtype: bool
        """
        return self._is_virtio_scsi_multi_queues_enabled

    @is_virtio_scsi_multi_queues_enabled.setter
    def is_virtio_scsi_multi_queues_enabled(self, is_virtio_scsi_multi_queues_enabled):
        """
        Sets the is_virtio_scsi_multi_queues_enabled of this OlvmVirtualMachine.
        If true, the Virtio-SCSI devices will obtain a number of multiple queues depending on the available virtual Cpus and disks, or according to the specified virtioScsiMultiQueues


        :param is_virtio_scsi_multi_queues_enabled: The is_virtio_scsi_multi_queues_enabled of this OlvmVirtualMachine.
        :type: bool
        """
        self._is_virtio_scsi_multi_queues_enabled = is_virtio_scsi_multi_queues_enabled

    def __repr__(self):
        return formatted_flat_dict(self)

    def __eq__(self, other):
        if other is None:
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not self == other
