# 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 OlvmVnicProfileProperties(object):
    """
    OLVM Vnic Profile properties.
    """

    #: A constant which can be used with the pass_through property of a OlvmVnicProfileProperties.
    #: This constant has a value of "DISABLED"
    PASS_THROUGH_DISABLED = "DISABLED"

    #: A constant which can be used with the pass_through property of a OlvmVnicProfileProperties.
    #: This constant has a value of "ENABLED"
    PASS_THROUGH_ENABLED = "ENABLED"

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

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

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

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

        :param is_migratable:
            The value to assign to the is_migratable property of this OlvmVnicProfileProperties.
        :type is_migratable: bool

        :param vnic_profile_name:
            The value to assign to the vnic_profile_name property of this OlvmVnicProfileProperties.
        :type vnic_profile_name: str

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

        :param is_port_mirroring:
            The value to assign to the is_port_mirroring property of this OlvmVnicProfileProperties.
        :type is_port_mirroring: bool

        """
        self.swagger_types = {
            'comment': 'str',
            'custom_properties': 'list[OlvmCustomProperty]',
            'description': 'str',
            'is_migratable': 'bool',
            'vnic_profile_name': 'str',
            'pass_through': 'str',
            'is_port_mirroring': 'bool'
        }
        self.attribute_map = {
            'comment': 'comment',
            'custom_properties': 'customProperties',
            'description': 'description',
            'is_migratable': 'isMigratable',
            'vnic_profile_name': 'vnicProfileName',
            'pass_through': 'passThrough',
            'is_port_mirroring': 'isPortMirroring'
        }
        self._comment = None
        self._custom_properties = None
        self._description = None
        self._is_migratable = None
        self._vnic_profile_name = None
        self._pass_through = None
        self._is_port_mirroring = None

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


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

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


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

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


        :return: The custom_properties of this OlvmVnicProfileProperties.
        :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 OlvmVnicProfileProperties.
        Custom properties applied to the vNIC profile.


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

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


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

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


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

    @property
    def is_migratable(self):
        """
        Gets the is_migratable of this OlvmVnicProfileProperties.
        Indicates whether passThrough NIC is migratable or not.


        :return: The is_migratable of this OlvmVnicProfileProperties.
        :rtype: bool
        """
        return self._is_migratable

    @is_migratable.setter
    def is_migratable(self, is_migratable):
        """
        Sets the is_migratable of this OlvmVnicProfileProperties.
        Indicates whether passThrough NIC is migratable or not.


        :param is_migratable: The is_migratable of this OlvmVnicProfileProperties.
        :type: bool
        """
        self._is_migratable = is_migratable

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


        :return: The vnic_profile_name of this OlvmVnicProfileProperties.
        :rtype: str
        """
        return self._vnic_profile_name

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


        :param vnic_profile_name: The vnic_profile_name of this OlvmVnicProfileProperties.
        :type: str
        """
        self._vnic_profile_name = vnic_profile_name

    @property
    def pass_through(self):
        """
        Gets the pass_through of this OlvmVnicProfileProperties.
        Describes whether the vNIC is to be implemented as a pass-through device or a virtual one.

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


        :return: The pass_through of this OlvmVnicProfileProperties.
        :rtype: str
        """
        return self._pass_through

    @pass_through.setter
    def pass_through(self, pass_through):
        """
        Sets the pass_through of this OlvmVnicProfileProperties.
        Describes whether the vNIC is to be implemented as a pass-through device or a virtual one.


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

    @property
    def is_port_mirroring(self):
        """
        Gets the is_port_mirroring of this OlvmVnicProfileProperties.
        Indicates if port mirroring is enabled.


        :return: The is_port_mirroring of this OlvmVnicProfileProperties.
        :rtype: bool
        """
        return self._is_port_mirroring

    @is_port_mirroring.setter
    def is_port_mirroring(self, is_port_mirroring):
        """
        Sets the is_port_mirroring of this OlvmVnicProfileProperties.
        Indicates if port mirroring is enabled.


        :param is_port_mirroring: The is_port_mirroring of this OlvmVnicProfileProperties.
        :type: bool
        """
        self._is_port_mirroring = is_port_mirroring

    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
