# coding: utf-8
# Copyright (c) 2016, 2025, 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: 20220915


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 NetworkDetails(object):
    """
    Network details for the database system.
    """

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

        :param subnet_id:
            The value to assign to the subnet_id property of this NetworkDetails.
        :type subnet_id: str

        :param primary_db_endpoint_private_ip:
            The value to assign to the primary_db_endpoint_private_ip property of this NetworkDetails.
        :type primary_db_endpoint_private_ip: str

        :param nsg_ids:
            The value to assign to the nsg_ids property of this NetworkDetails.
        :type nsg_ids: list[str]

        :param is_reader_endpoint_enabled:
            The value to assign to the is_reader_endpoint_enabled property of this NetworkDetails.
        :type is_reader_endpoint_enabled: bool

        """
        self.swagger_types = {
            'subnet_id': 'str',
            'primary_db_endpoint_private_ip': 'str',
            'nsg_ids': 'list[str]',
            'is_reader_endpoint_enabled': 'bool'
        }
        self.attribute_map = {
            'subnet_id': 'subnetId',
            'primary_db_endpoint_private_ip': 'primaryDbEndpointPrivateIp',
            'nsg_ids': 'nsgIds',
            'is_reader_endpoint_enabled': 'isReaderEndpointEnabled'
        }
        self._subnet_id = None
        self._primary_db_endpoint_private_ip = None
        self._nsg_ids = None
        self._is_reader_endpoint_enabled = None

    @property
    def subnet_id(self):
        """
        **[Required]** Gets the subnet_id of this NetworkDetails.
        The `OCID`__ of the customer subnet associated with the database system.

        __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm


        :return: The subnet_id of this NetworkDetails.
        :rtype: str
        """
        return self._subnet_id

    @subnet_id.setter
    def subnet_id(self, subnet_id):
        """
        Sets the subnet_id of this NetworkDetails.
        The `OCID`__ of the customer subnet associated with the database system.

        __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm


        :param subnet_id: The subnet_id of this NetworkDetails.
        :type: str
        """
        self._subnet_id = subnet_id

    @property
    def primary_db_endpoint_private_ip(self):
        """
        Gets the primary_db_endpoint_private_ip of this NetworkDetails.
        Private IP in customer subnet. The value is optional.
        If the IP is not provided, the IP will be chosen from the available IP addresses from the specified subnet.


        :return: The primary_db_endpoint_private_ip of this NetworkDetails.
        :rtype: str
        """
        return self._primary_db_endpoint_private_ip

    @primary_db_endpoint_private_ip.setter
    def primary_db_endpoint_private_ip(self, primary_db_endpoint_private_ip):
        """
        Sets the primary_db_endpoint_private_ip of this NetworkDetails.
        Private IP in customer subnet. The value is optional.
        If the IP is not provided, the IP will be chosen from the available IP addresses from the specified subnet.


        :param primary_db_endpoint_private_ip: The primary_db_endpoint_private_ip of this NetworkDetails.
        :type: str
        """
        self._primary_db_endpoint_private_ip = primary_db_endpoint_private_ip

    @property
    def nsg_ids(self):
        """
        Gets the nsg_ids of this NetworkDetails.
        List of customer Network Security Group `OCIDs`__ associated with the database system.

        __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm


        :return: The nsg_ids of this NetworkDetails.
        :rtype: list[str]
        """
        return self._nsg_ids

    @nsg_ids.setter
    def nsg_ids(self, nsg_ids):
        """
        Sets the nsg_ids of this NetworkDetails.
        List of customer Network Security Group `OCIDs`__ associated with the database system.

        __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm


        :param nsg_ids: The nsg_ids of this NetworkDetails.
        :type: list[str]
        """
        self._nsg_ids = nsg_ids

    @property
    def is_reader_endpoint_enabled(self):
        """
        Gets the is_reader_endpoint_enabled of this NetworkDetails.
        Specifies if the reader endpoint is enabled on the dbSystem.


        :return: The is_reader_endpoint_enabled of this NetworkDetails.
        :rtype: bool
        """
        return self._is_reader_endpoint_enabled

    @is_reader_endpoint_enabled.setter
    def is_reader_endpoint_enabled(self, is_reader_endpoint_enabled):
        """
        Sets the is_reader_endpoint_enabled of this NetworkDetails.
        Specifies if the reader endpoint is enabled on the dbSystem.


        :param is_reader_endpoint_enabled: The is_reader_endpoint_enabled of this NetworkDetails.
        :type: bool
        """
        self._is_reader_endpoint_enabled = is_reader_endpoint_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
