# 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 OlvmClusterProperties(object):
    """
    OLVM Cluster properties.
    """

    #: A constant which can be used with the fips_mode property of a OlvmClusterProperties.
    #: This constant has a value of "DISABLED"
    FIPS_MODE_DISABLED = "DISABLED"

    #: A constant which can be used with the fips_mode property of a OlvmClusterProperties.
    #: This constant has a value of "ENABLED"
    FIPS_MODE_ENABLED = "ENABLED"

    #: A constant which can be used with the fips_mode property of a OlvmClusterProperties.
    #: This constant has a value of "UNDEFINED"
    FIPS_MODE_UNDEFINED = "UNDEFINED"

    #: A constant which can be used with the firewall_type property of a OlvmClusterProperties.
    #: This constant has a value of "FIREWALLD"
    FIREWALL_TYPE_FIREWALLD = "FIREWALLD"

    #: A constant which can be used with the firewall_type property of a OlvmClusterProperties.
    #: This constant has a value of "IPTABLES"
    FIREWALL_TYPE_IPTABLES = "IPTABLES"

    #: A constant which can be used with the log_max_memory_used_threshold_type property of a OlvmClusterProperties.
    #: This constant has a value of "ABSOLUTE_VALUE_IN_MB"
    LOG_MAX_MEMORY_USED_THRESHOLD_TYPE_ABSOLUTE_VALUE_IN_MB = "ABSOLUTE_VALUE_IN_MB"

    #: A constant which can be used with the log_max_memory_used_threshold_type property of a OlvmClusterProperties.
    #: This constant has a value of "PERCENTAGE"
    LOG_MAX_MEMORY_USED_THRESHOLD_TYPE_PERCENTAGE = "PERCENTAGE"

    #: A constant which can be used with the switch_type property of a OlvmClusterProperties.
    #: This constant has a value of "LEGACY"
    SWITCH_TYPE_LEGACY = "LEGACY"

    #: A constant which can be used with the switch_type property of a OlvmClusterProperties.
    #: This constant has a value of "OVS"
    SWITCH_TYPE_OVS = "OVS"

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

        :param cluster_name:
            The value to assign to the cluster_name property of this OlvmClusterProperties.
        :type cluster_name: str

        :param cluster_description:
            The value to assign to the cluster_description property of this OlvmClusterProperties.
        :type cluster_description: str

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

        :param is_ballooning_enabled:
            The value to assign to the is_ballooning_enabled property of this OlvmClusterProperties.
        :type is_ballooning_enabled: bool

        :param bios_type:
            The value to assign to the bios_type property of this OlvmClusterProperties.
        :type bios_type: oci.cloud_migrations.models.OlvmBiosType

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

        :param custom_scheduling_policy_properties:
            The value to assign to the custom_scheduling_policy_properties property of this OlvmClusterProperties.
        :type custom_scheduling_policy_properties: list[oci.cloud_migrations.models.OlvmProperty]

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

        :param error_handling:
            The value to assign to the error_handling property of this OlvmClusterProperties.
        :type error_handling: oci.cloud_migrations.models.OlvmErrorHandling

        :param fencing_policy:
            The value to assign to the fencing_policy property of this OlvmClusterProperties.
        :type fencing_policy: oci.cloud_migrations.models.OlvmFencingPolicy

        :param fips_mode:
            The value to assign to the fips_mode property of this OlvmClusterProperties.
            Allowed values for this property are: "DISABLED", "ENABLED", "UNDEFINED"
        :type fips_mode: str

        :param firewall_type:
            The value to assign to the firewall_type property of this OlvmClusterProperties.
            Allowed values for this property are: "FIREWALLD", "IPTABLES"
        :type firewall_type: str

        :param is_gluster_service:
            The value to assign to the is_gluster_service property of this OlvmClusterProperties.
        :type is_gluster_service: bool

        :param gluster_tuned_profile:
            The value to assign to the gluster_tuned_profile property of this OlvmClusterProperties.
        :type gluster_tuned_profile: str

        :param is_ha_reservation:
            The value to assign to the is_ha_reservation property of this OlvmClusterProperties.
        :type is_ha_reservation: bool

        :param ksm:
            The value to assign to the ksm property of this OlvmClusterProperties.
        :type ksm: oci.cloud_migrations.models.Ksm

        :param log_max_memory_used_threshold:
            The value to assign to the log_max_memory_used_threshold property of this OlvmClusterProperties.
        :type log_max_memory_used_threshold: int

        :param log_max_memory_used_threshold_type:
            The value to assign to the log_max_memory_used_threshold_type property of this OlvmClusterProperties.
            Allowed values for this property are: "ABSOLUTE_VALUE_IN_MB", "PERCENTAGE"
        :type log_max_memory_used_threshold_type: str

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

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

        :param required_rng_sources:
            The value to assign to the required_rng_sources property of this OlvmClusterProperties.
        :type required_rng_sources: list[oci.cloud_migrations.models.RngSource]

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

        :param supported_versions:
            The value to assign to the supported_versions property of this OlvmClusterProperties.
        :type supported_versions: list[oci.cloud_migrations.models.OlvmVersion]

        :param switch_type:
            The value to assign to the switch_type property of this OlvmClusterProperties.
            Allowed values for this property are: "LEGACY", "OVS"
        :type switch_type: str

        :param is_use_threads_as_cores:
            The value to assign to the is_use_threads_as_cores property of this OlvmClusterProperties.
        :type is_use_threads_as_cores: bool

        :param is_trusted_service:
            The value to assign to the is_trusted_service property of this OlvmClusterProperties.
        :type is_trusted_service: bool

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

        :param upgrade_correlation_id:
            The value to assign to the upgrade_correlation_id property of this OlvmClusterProperties.
        :type upgrade_correlation_id: str

        :param is_update_in_progress:
            The value to assign to the is_update_in_progress property of this OlvmClusterProperties.
        :type is_update_in_progress: bool

        :param upgrade_percent_complete:
            The value to assign to the upgrade_percent_complete property of this OlvmClusterProperties.
        :type upgrade_percent_complete: int

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

        :param is_virt_service:
            The value to assign to the is_virt_service property of this OlvmClusterProperties.
        :type is_virt_service: bool

        :param is_vnc_encryption:
            The value to assign to the is_vnc_encryption property of this OlvmClusterProperties.
        :type is_vnc_encryption: bool

        :param data_centers:
            The value to assign to the data_centers property of this OlvmClusterProperties.
        :type data_centers: list[oci.cloud_migrations.models.OlvmDataCenter]

        """
        self.swagger_types = {
            'cluster_name': 'str',
            'cluster_description': 'str',
            'comment': 'str',
            'is_ballooning_enabled': 'bool',
            'bios_type': 'OlvmBiosType',
            'cpu': 'OlvmCpu',
            'custom_scheduling_policy_properties': 'list[OlvmProperty]',
            'display': 'OlvmDisplay',
            'error_handling': 'OlvmErrorHandling',
            'fencing_policy': 'OlvmFencingPolicy',
            'fips_mode': 'str',
            'firewall_type': 'str',
            'is_gluster_service': 'bool',
            'gluster_tuned_profile': 'str',
            'is_ha_reservation': 'bool',
            'ksm': 'Ksm',
            'log_max_memory_used_threshold': 'int',
            'log_max_memory_used_threshold_type': 'str',
            'memory_policy': 'OlvmMemoryPolicy',
            'migration_policy': 'OlvmMigrationOptions',
            'required_rng_sources': 'list[RngSource]',
            'serial_number': 'OlvmSerialNumber',
            'supported_versions': 'list[OlvmVersion]',
            'switch_type': 'str',
            'is_use_threads_as_cores': 'bool',
            'is_trusted_service': 'bool',
            'is_tunnel_migration': 'bool',
            'upgrade_correlation_id': 'str',
            'is_update_in_progress': 'bool',
            'upgrade_percent_complete': 'int',
            'version': 'OlvmVersion',
            'is_virt_service': 'bool',
            'is_vnc_encryption': 'bool',
            'data_centers': 'list[OlvmDataCenter]'
        }
        self.attribute_map = {
            'cluster_name': 'clusterName',
            'cluster_description': 'clusterDescription',
            'comment': 'comment',
            'is_ballooning_enabled': 'isBallooningEnabled',
            'bios_type': 'biosType',
            'cpu': 'cpu',
            'custom_scheduling_policy_properties': 'customSchedulingPolicyProperties',
            'display': 'display',
            'error_handling': 'errorHandling',
            'fencing_policy': 'fencingPolicy',
            'fips_mode': 'fipsMode',
            'firewall_type': 'firewallType',
            'is_gluster_service': 'isGlusterService',
            'gluster_tuned_profile': 'glusterTunedProfile',
            'is_ha_reservation': 'isHaReservation',
            'ksm': 'ksm',
            'log_max_memory_used_threshold': 'logMaxMemoryUsedThreshold',
            'log_max_memory_used_threshold_type': 'logMaxMemoryUsedThresholdType',
            'memory_policy': 'memoryPolicy',
            'migration_policy': 'migrationPolicy',
            'required_rng_sources': 'requiredRngSources',
            'serial_number': 'serialNumber',
            'supported_versions': 'supportedVersions',
            'switch_type': 'switchType',
            'is_use_threads_as_cores': 'isUseThreadsAsCores',
            'is_trusted_service': 'isTrustedService',
            'is_tunnel_migration': 'isTunnelMigration',
            'upgrade_correlation_id': 'upgradeCorrelationId',
            'is_update_in_progress': 'isUpdateInProgress',
            'upgrade_percent_complete': 'upgradePercentComplete',
            'version': 'version',
            'is_virt_service': 'isVirtService',
            'is_vnc_encryption': 'isVncEncryption',
            'data_centers': 'dataCenters'
        }
        self._cluster_name = None
        self._cluster_description = None
        self._comment = None
        self._is_ballooning_enabled = None
        self._bios_type = None
        self._cpu = None
        self._custom_scheduling_policy_properties = None
        self._display = None
        self._error_handling = None
        self._fencing_policy = None
        self._fips_mode = None
        self._firewall_type = None
        self._is_gluster_service = None
        self._gluster_tuned_profile = None
        self._is_ha_reservation = None
        self._ksm = None
        self._log_max_memory_used_threshold = None
        self._log_max_memory_used_threshold_type = None
        self._memory_policy = None
        self._migration_policy = None
        self._required_rng_sources = None
        self._serial_number = None
        self._supported_versions = None
        self._switch_type = None
        self._is_use_threads_as_cores = None
        self._is_trusted_service = None
        self._is_tunnel_migration = None
        self._upgrade_correlation_id = None
        self._is_update_in_progress = None
        self._upgrade_percent_complete = None
        self._version = None
        self._is_virt_service = None
        self._is_vnc_encryption = None
        self._data_centers = None

    @property
    def cluster_name(self):
        """
        **[Required]** Gets the cluster_name of this OlvmClusterProperties.
        A human-readable name in plain text.


        :return: The cluster_name of this OlvmClusterProperties.
        :rtype: str
        """
        return self._cluster_name

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


        :param cluster_name: The cluster_name of this OlvmClusterProperties.
        :type: str
        """
        self._cluster_name = cluster_name

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


        :return: The cluster_description of this OlvmClusterProperties.
        :rtype: str
        """
        return self._cluster_description

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


        :param cluster_description: The cluster_description of this OlvmClusterProperties.
        :type: str
        """
        self._cluster_description = cluster_description

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


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

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


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

    @property
    def is_ballooning_enabled(self):
        """
        Gets the is_ballooning_enabled of this OlvmClusterProperties.
        Whether ballooning is enabled.


        :return: The is_ballooning_enabled of this OlvmClusterProperties.
        :rtype: bool
        """
        return self._is_ballooning_enabled

    @is_ballooning_enabled.setter
    def is_ballooning_enabled(self, is_ballooning_enabled):
        """
        Sets the is_ballooning_enabled of this OlvmClusterProperties.
        Whether ballooning is enabled.


        :param is_ballooning_enabled: The is_ballooning_enabled of this OlvmClusterProperties.
        :type: bool
        """
        self._is_ballooning_enabled = is_ballooning_enabled

    @property
    def bios_type(self):
        """
        Gets the bios_type of this OlvmClusterProperties.

        :return: The bios_type of this OlvmClusterProperties.
        :rtype: oci.cloud_migrations.models.OlvmBiosType
        """
        return self._bios_type

    @bios_type.setter
    def bios_type(self, bios_type):
        """
        Sets the bios_type of this OlvmClusterProperties.

        :param bios_type: The bios_type of this OlvmClusterProperties.
        :type: oci.cloud_migrations.models.OlvmBiosType
        """
        self._bios_type = bios_type

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

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

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

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

    @property
    def custom_scheduling_policy_properties(self):
        """
        Gets the custom_scheduling_policy_properties of this OlvmClusterProperties.
        Custom scheduling policy properties of the cluster.


        :return: The custom_scheduling_policy_properties of this OlvmClusterProperties.
        :rtype: list[oci.cloud_migrations.models.OlvmProperty]
        """
        return self._custom_scheduling_policy_properties

    @custom_scheduling_policy_properties.setter
    def custom_scheduling_policy_properties(self, custom_scheduling_policy_properties):
        """
        Sets the custom_scheduling_policy_properties of this OlvmClusterProperties.
        Custom scheduling policy properties of the cluster.


        :param custom_scheduling_policy_properties: The custom_scheduling_policy_properties of this OlvmClusterProperties.
        :type: list[oci.cloud_migrations.models.OlvmProperty]
        """
        self._custom_scheduling_policy_properties = custom_scheduling_policy_properties

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

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

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

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

    @property
    def error_handling(self):
        """
        Gets the error_handling of this OlvmClusterProperties.

        :return: The error_handling of this OlvmClusterProperties.
        :rtype: oci.cloud_migrations.models.OlvmErrorHandling
        """
        return self._error_handling

    @error_handling.setter
    def error_handling(self, error_handling):
        """
        Sets the error_handling of this OlvmClusterProperties.

        :param error_handling: The error_handling of this OlvmClusterProperties.
        :type: oci.cloud_migrations.models.OlvmErrorHandling
        """
        self._error_handling = error_handling

    @property
    def fencing_policy(self):
        """
        Gets the fencing_policy of this OlvmClusterProperties.

        :return: The fencing_policy of this OlvmClusterProperties.
        :rtype: oci.cloud_migrations.models.OlvmFencingPolicy
        """
        return self._fencing_policy

    @fencing_policy.setter
    def fencing_policy(self, fencing_policy):
        """
        Sets the fencing_policy of this OlvmClusterProperties.

        :param fencing_policy: The fencing_policy of this OlvmClusterProperties.
        :type: oci.cloud_migrations.models.OlvmFencingPolicy
        """
        self._fencing_policy = fencing_policy

    @property
    def fips_mode(self):
        """
        Gets the fips_mode of this OlvmClusterProperties.
        FIPS mode of the cluster.

        Allowed values for this property are: "DISABLED", "ENABLED", "UNDEFINED"


        :return: The fips_mode of this OlvmClusterProperties.
        :rtype: str
        """
        return self._fips_mode

    @fips_mode.setter
    def fips_mode(self, fips_mode):
        """
        Sets the fips_mode of this OlvmClusterProperties.
        FIPS mode of the cluster.


        :param fips_mode: The fips_mode of this OlvmClusterProperties.
        :type: str
        """
        allowed_values = ["DISABLED", "ENABLED", "UNDEFINED"]
        if not value_allowed_none_or_none_sentinel(fips_mode, allowed_values):
            raise ValueError(
                f"Invalid value for `fips_mode`, must be None or one of {allowed_values}"
            )
        self._fips_mode = fips_mode

    @property
    def firewall_type(self):
        """
        Gets the firewall_type of this OlvmClusterProperties.
        The type of firewall to be used on hosts in this cluster.

        Allowed values for this property are: "FIREWALLD", "IPTABLES"


        :return: The firewall_type of this OlvmClusterProperties.
        :rtype: str
        """
        return self._firewall_type

    @firewall_type.setter
    def firewall_type(self, firewall_type):
        """
        Sets the firewall_type of this OlvmClusterProperties.
        The type of firewall to be used on hosts in this cluster.


        :param firewall_type: The firewall_type of this OlvmClusterProperties.
        :type: str
        """
        allowed_values = ["FIREWALLD", "IPTABLES"]
        if not value_allowed_none_or_none_sentinel(firewall_type, allowed_values):
            raise ValueError(
                f"Invalid value for `firewall_type`, must be None or one of {allowed_values}"
            )
        self._firewall_type = firewall_type

    @property
    def is_gluster_service(self):
        """
        Gets the is_gluster_service of this OlvmClusterProperties.
        Indicates if Gluster service is used.


        :return: The is_gluster_service of this OlvmClusterProperties.
        :rtype: bool
        """
        return self._is_gluster_service

    @is_gluster_service.setter
    def is_gluster_service(self, is_gluster_service):
        """
        Sets the is_gluster_service of this OlvmClusterProperties.
        Indicates if Gluster service is used.


        :param is_gluster_service: The is_gluster_service of this OlvmClusterProperties.
        :type: bool
        """
        self._is_gluster_service = is_gluster_service

    @property
    def gluster_tuned_profile(self):
        """
        Gets the gluster_tuned_profile of this OlvmClusterProperties.
        The name of the tuned profile.


        :return: The gluster_tuned_profile of this OlvmClusterProperties.
        :rtype: str
        """
        return self._gluster_tuned_profile

    @gluster_tuned_profile.setter
    def gluster_tuned_profile(self, gluster_tuned_profile):
        """
        Sets the gluster_tuned_profile of this OlvmClusterProperties.
        The name of the tuned profile.


        :param gluster_tuned_profile: The gluster_tuned_profile of this OlvmClusterProperties.
        :type: str
        """
        self._gluster_tuned_profile = gluster_tuned_profile

    @property
    def is_ha_reservation(self):
        """
        Gets the is_ha_reservation of this OlvmClusterProperties.
        Indicates whether HA reservation is enabled.


        :return: The is_ha_reservation of this OlvmClusterProperties.
        :rtype: bool
        """
        return self._is_ha_reservation

    @is_ha_reservation.setter
    def is_ha_reservation(self, is_ha_reservation):
        """
        Sets the is_ha_reservation of this OlvmClusterProperties.
        Indicates whether HA reservation is enabled.


        :param is_ha_reservation: The is_ha_reservation of this OlvmClusterProperties.
        :type: bool
        """
        self._is_ha_reservation = is_ha_reservation

    @property
    def ksm(self):
        """
        Gets the ksm of this OlvmClusterProperties.

        :return: The ksm of this OlvmClusterProperties.
        :rtype: oci.cloud_migrations.models.Ksm
        """
        return self._ksm

    @ksm.setter
    def ksm(self, ksm):
        """
        Sets the ksm of this OlvmClusterProperties.

        :param ksm: The ksm of this OlvmClusterProperties.
        :type: oci.cloud_migrations.models.Ksm
        """
        self._ksm = ksm

    @property
    def log_max_memory_used_threshold(self):
        """
        Gets the log_max_memory_used_threshold of this OlvmClusterProperties.
        The memory consumption threshold for logging audit log events


        :return: The log_max_memory_used_threshold of this OlvmClusterProperties.
        :rtype: int
        """
        return self._log_max_memory_used_threshold

    @log_max_memory_used_threshold.setter
    def log_max_memory_used_threshold(self, log_max_memory_used_threshold):
        """
        Sets the log_max_memory_used_threshold of this OlvmClusterProperties.
        The memory consumption threshold for logging audit log events


        :param log_max_memory_used_threshold: The log_max_memory_used_threshold of this OlvmClusterProperties.
        :type: int
        """
        self._log_max_memory_used_threshold = log_max_memory_used_threshold

    @property
    def log_max_memory_used_threshold_type(self):
        """
        Gets the log_max_memory_used_threshold_type of this OlvmClusterProperties.
        The memory consumption threshold type for logging audit log events.

        Allowed values for this property are: "ABSOLUTE_VALUE_IN_MB", "PERCENTAGE"


        :return: The log_max_memory_used_threshold_type of this OlvmClusterProperties.
        :rtype: str
        """
        return self._log_max_memory_used_threshold_type

    @log_max_memory_used_threshold_type.setter
    def log_max_memory_used_threshold_type(self, log_max_memory_used_threshold_type):
        """
        Sets the log_max_memory_used_threshold_type of this OlvmClusterProperties.
        The memory consumption threshold type for logging audit log events.


        :param log_max_memory_used_threshold_type: The log_max_memory_used_threshold_type of this OlvmClusterProperties.
        :type: str
        """
        allowed_values = ["ABSOLUTE_VALUE_IN_MB", "PERCENTAGE"]
        if not value_allowed_none_or_none_sentinel(log_max_memory_used_threshold_type, allowed_values):
            raise ValueError(
                f"Invalid value for `log_max_memory_used_threshold_type`, must be None or one of {allowed_values}"
            )
        self._log_max_memory_used_threshold_type = log_max_memory_used_threshold_type

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

        :return: The memory_policy of this OlvmClusterProperties.
        :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 OlvmClusterProperties.

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

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

        :return: The migration_policy of this OlvmClusterProperties.
        :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 OlvmClusterProperties.

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

    @property
    def required_rng_sources(self):
        """
        Gets the required_rng_sources of this OlvmClusterProperties.
        Set of random number generator (RNG) sources required from each host in the cluster.


        :return: The required_rng_sources of this OlvmClusterProperties.
        :rtype: list[oci.cloud_migrations.models.RngSource]
        """
        return self._required_rng_sources

    @required_rng_sources.setter
    def required_rng_sources(self, required_rng_sources):
        """
        Sets the required_rng_sources of this OlvmClusterProperties.
        Set of random number generator (RNG) sources required from each host in the cluster.


        :param required_rng_sources: The required_rng_sources of this OlvmClusterProperties.
        :type: list[oci.cloud_migrations.models.RngSource]
        """
        self._required_rng_sources = required_rng_sources

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

        :return: The serial_number of this OlvmClusterProperties.
        :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 OlvmClusterProperties.

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

    @property
    def supported_versions(self):
        """
        Gets the supported_versions of this OlvmClusterProperties.
        List of supported versions.


        :return: The supported_versions of this OlvmClusterProperties.
        :rtype: list[oci.cloud_migrations.models.OlvmVersion]
        """
        return self._supported_versions

    @supported_versions.setter
    def supported_versions(self, supported_versions):
        """
        Sets the supported_versions of this OlvmClusterProperties.
        List of supported versions.


        :param supported_versions: The supported_versions of this OlvmClusterProperties.
        :type: list[oci.cloud_migrations.models.OlvmVersion]
        """
        self._supported_versions = supported_versions

    @property
    def switch_type(self):
        """
        Gets the switch_type of this OlvmClusterProperties.
        Describes all switch types supported by the Manager

        Allowed values for this property are: "LEGACY", "OVS"


        :return: The switch_type of this OlvmClusterProperties.
        :rtype: str
        """
        return self._switch_type

    @switch_type.setter
    def switch_type(self, switch_type):
        """
        Sets the switch_type of this OlvmClusterProperties.
        Describes all switch types supported by the Manager


        :param switch_type: The switch_type of this OlvmClusterProperties.
        :type: str
        """
        allowed_values = ["LEGACY", "OVS"]
        if not value_allowed_none_or_none_sentinel(switch_type, allowed_values):
            raise ValueError(
                f"Invalid value for `switch_type`, must be None or one of {allowed_values}"
            )
        self._switch_type = switch_type

    @property
    def is_use_threads_as_cores(self):
        """
        Gets the is_use_threads_as_cores of this OlvmClusterProperties.
        Indicates if threads should be used as cores


        :return: The is_use_threads_as_cores of this OlvmClusterProperties.
        :rtype: bool
        """
        return self._is_use_threads_as_cores

    @is_use_threads_as_cores.setter
    def is_use_threads_as_cores(self, is_use_threads_as_cores):
        """
        Sets the is_use_threads_as_cores of this OlvmClusterProperties.
        Indicates if threads should be used as cores


        :param is_use_threads_as_cores: The is_use_threads_as_cores of this OlvmClusterProperties.
        :type: bool
        """
        self._is_use_threads_as_cores = is_use_threads_as_cores

    @property
    def is_trusted_service(self):
        """
        Gets the is_trusted_service of this OlvmClusterProperties.
        Indicates if trusted service is enabled


        :return: The is_trusted_service of this OlvmClusterProperties.
        :rtype: bool
        """
        return self._is_trusted_service

    @is_trusted_service.setter
    def is_trusted_service(self, is_trusted_service):
        """
        Sets the is_trusted_service of this OlvmClusterProperties.
        Indicates if trusted service is enabled


        :param is_trusted_service: The is_trusted_service of this OlvmClusterProperties.
        :type: bool
        """
        self._is_trusted_service = is_trusted_service

    @property
    def is_tunnel_migration(self):
        """
        Gets the is_tunnel_migration of this OlvmClusterProperties.
        Indicates if tunnel migration is enabled


        :return: The is_tunnel_migration of this OlvmClusterProperties.
        :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 OlvmClusterProperties.
        Indicates if tunnel migration is enabled


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

    @property
    def upgrade_correlation_id(self):
        """
        Gets the upgrade_correlation_id of this OlvmClusterProperties.
        The upgrade correlation identifier.


        :return: The upgrade_correlation_id of this OlvmClusterProperties.
        :rtype: str
        """
        return self._upgrade_correlation_id

    @upgrade_correlation_id.setter
    def upgrade_correlation_id(self, upgrade_correlation_id):
        """
        Sets the upgrade_correlation_id of this OlvmClusterProperties.
        The upgrade correlation identifier.


        :param upgrade_correlation_id: The upgrade_correlation_id of this OlvmClusterProperties.
        :type: str
        """
        self._upgrade_correlation_id = upgrade_correlation_id

    @property
    def is_update_in_progress(self):
        """
        Gets the is_update_in_progress of this OlvmClusterProperties.
        Indicates if an upgrade has been started for the cluster.


        :return: The is_update_in_progress of this OlvmClusterProperties.
        :rtype: bool
        """
        return self._is_update_in_progress

    @is_update_in_progress.setter
    def is_update_in_progress(self, is_update_in_progress):
        """
        Sets the is_update_in_progress of this OlvmClusterProperties.
        Indicates if an upgrade has been started for the cluster.


        :param is_update_in_progress: The is_update_in_progress of this OlvmClusterProperties.
        :type: bool
        """
        self._is_update_in_progress = is_update_in_progress

    @property
    def upgrade_percent_complete(self):
        """
        Gets the upgrade_percent_complete of this OlvmClusterProperties.
        If an upgrade is in progress, the upgrade???s reported percent complete.


        :return: The upgrade_percent_complete of this OlvmClusterProperties.
        :rtype: int
        """
        return self._upgrade_percent_complete

    @upgrade_percent_complete.setter
    def upgrade_percent_complete(self, upgrade_percent_complete):
        """
        Sets the upgrade_percent_complete of this OlvmClusterProperties.
        If an upgrade is in progress, the upgrade???s reported percent complete.


        :param upgrade_percent_complete: The upgrade_percent_complete of this OlvmClusterProperties.
        :type: int
        """
        self._upgrade_percent_complete = upgrade_percent_complete

    @property
    def version(self):
        """
        Gets the version of this OlvmClusterProperties.

        :return: The version of this OlvmClusterProperties.
        :rtype: oci.cloud_migrations.models.OlvmVersion
        """
        return self._version

    @version.setter
    def version(self, version):
        """
        Sets the version of this OlvmClusterProperties.

        :param version: The version of this OlvmClusterProperties.
        :type: oci.cloud_migrations.models.OlvmVersion
        """
        self._version = version

    @property
    def is_virt_service(self):
        """
        Gets the is_virt_service of this OlvmClusterProperties.
        Indicates if virt service is enabled.


        :return: The is_virt_service of this OlvmClusterProperties.
        :rtype: bool
        """
        return self._is_virt_service

    @is_virt_service.setter
    def is_virt_service(self, is_virt_service):
        """
        Sets the is_virt_service of this OlvmClusterProperties.
        Indicates if virt service is enabled.


        :param is_virt_service: The is_virt_service of this OlvmClusterProperties.
        :type: bool
        """
        self._is_virt_service = is_virt_service

    @property
    def is_vnc_encryption(self):
        """
        Gets the is_vnc_encryption of this OlvmClusterProperties.
        Indicates if VNC encryption is enabled.


        :return: The is_vnc_encryption of this OlvmClusterProperties.
        :rtype: bool
        """
        return self._is_vnc_encryption

    @is_vnc_encryption.setter
    def is_vnc_encryption(self, is_vnc_encryption):
        """
        Sets the is_vnc_encryption of this OlvmClusterProperties.
        Indicates if VNC encryption is enabled.


        :param is_vnc_encryption: The is_vnc_encryption of this OlvmClusterProperties.
        :type: bool
        """
        self._is_vnc_encryption = is_vnc_encryption

    @property
    def data_centers(self):
        """
        Gets the data_centers of this OlvmClusterProperties.
        List of data centers where storage domain belongs


        :return: The data_centers of this OlvmClusterProperties.
        :rtype: list[oci.cloud_migrations.models.OlvmDataCenter]
        """
        return self._data_centers

    @data_centers.setter
    def data_centers(self, data_centers):
        """
        Sets the data_centers of this OlvmClusterProperties.
        List of data centers where storage domain belongs


        :param data_centers: The data_centers of this OlvmClusterProperties.
        :type: list[oci.cloud_migrations.models.OlvmDataCenter]
        """
        self._data_centers = data_centers

    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
