# 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: 20251101


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 CreateInfrastructureDetails(object):
    """
    Request to create Database Infrastructure resource.
    """

    #: A constant which can be used with the system_model property of a CreateInfrastructureDetails.
    #: This constant has a value of "X11_HA_768"
    SYSTEM_MODEL_X11_HA_768 = "X11_HA_768"

    #: A constant which can be used with the system_model property of a CreateInfrastructureDetails.
    #: This constant has a value of "X10_HA_512"
    SYSTEM_MODEL_X10_HA_512 = "X10_HA_512"

    #: A constant which can be used with the system_model property of a CreateInfrastructureDetails.
    #: This constant has a value of "X8_HA_384"
    SYSTEM_MODEL_X8_HA_384 = "X8_HA_384"

    #: A constant which can be used with the shape property of a CreateInfrastructureDetails.
    #: This constant has a value of "SIX_SSDS"
    SHAPE_SIX_SSDS = "SIX_SSDS"

    #: A constant which can be used with the shape property of a CreateInfrastructureDetails.
    #: This constant has a value of "TWELVE_SSDS"
    SHAPE_TWELVE_SSDS = "TWELVE_SSDS"

    #: A constant which can be used with the shape property of a CreateInfrastructureDetails.
    #: This constant has a value of "EIGHTEEN_SSDS"
    SHAPE_EIGHTEEN_SSDS = "EIGHTEEN_SSDS"

    #: A constant which can be used with the shape property of a CreateInfrastructureDetails.
    #: This constant has a value of "TWENTY_FOUR_SSDS"
    SHAPE_TWENTY_FOUR_SSDS = "TWENTY_FOUR_SSDS"

    #: A constant which can be used with the client_network_bonding_mode property of a CreateInfrastructureDetails.
    #: This constant has a value of "ACTIVE_BACKUP"
    CLIENT_NETWORK_BONDING_MODE_ACTIVE_BACKUP = "ACTIVE_BACKUP"

    #: A constant which can be used with the client_network_bonding_mode property of a CreateInfrastructureDetails.
    #: This constant has a value of "LACP"
    CLIENT_NETWORK_BONDING_MODE_LACP = "LACP"

    #: A constant which can be used with the backup_network_bonding_mode property of a CreateInfrastructureDetails.
    #: This constant has a value of "ACTIVE_BACKUP"
    BACKUP_NETWORK_BONDING_MODE_ACTIVE_BACKUP = "ACTIVE_BACKUP"

    #: A constant which can be used with the backup_network_bonding_mode property of a CreateInfrastructureDetails.
    #: This constant has a value of "LACP"
    BACKUP_NETWORK_BONDING_MODE_LACP = "LACP"

    #: A constant which can be used with the cps_network_bonding_mode property of a CreateInfrastructureDetails.
    #: This constant has a value of "ACTIVE_BACKUP"
    CPS_NETWORK_BONDING_MODE_ACTIVE_BACKUP = "ACTIVE_BACKUP"

    #: A constant which can be used with the cps_network_bonding_mode property of a CreateInfrastructureDetails.
    #: This constant has a value of "LACP"
    CPS_NETWORK_BONDING_MODE_LACP = "LACP"

    #: A constant which can be used with the client_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND1"
    CLIENT_NETWORK_BONDING_INTERFACE_BTBOND1 = "BTBOND1"

    #: A constant which can be used with the client_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND2"
    CLIENT_NETWORK_BONDING_INTERFACE_BTBOND2 = "BTBOND2"

    #: A constant which can be used with the client_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND3"
    CLIENT_NETWORK_BONDING_INTERFACE_BTBOND3 = "BTBOND3"

    #: A constant which can be used with the client_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND4"
    CLIENT_NETWORK_BONDING_INTERFACE_BTBOND4 = "BTBOND4"

    #: A constant which can be used with the client_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND5"
    CLIENT_NETWORK_BONDING_INTERFACE_BTBOND5 = "BTBOND5"

    #: A constant which can be used with the client_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND6"
    CLIENT_NETWORK_BONDING_INTERFACE_BTBOND6 = "BTBOND6"

    #: A constant which can be used with the backup_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND1"
    BACKUP_NETWORK_BONDING_INTERFACE_BTBOND1 = "BTBOND1"

    #: A constant which can be used with the backup_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND2"
    BACKUP_NETWORK_BONDING_INTERFACE_BTBOND2 = "BTBOND2"

    #: A constant which can be used with the backup_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND3"
    BACKUP_NETWORK_BONDING_INTERFACE_BTBOND3 = "BTBOND3"

    #: A constant which can be used with the backup_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND4"
    BACKUP_NETWORK_BONDING_INTERFACE_BTBOND4 = "BTBOND4"

    #: A constant which can be used with the backup_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND5"
    BACKUP_NETWORK_BONDING_INTERFACE_BTBOND5 = "BTBOND5"

    #: A constant which can be used with the backup_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND6"
    BACKUP_NETWORK_BONDING_INTERFACE_BTBOND6 = "BTBOND6"

    #: A constant which can be used with the cps_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND1"
    CPS_NETWORK_BONDING_INTERFACE_BTBOND1 = "BTBOND1"

    #: A constant which can be used with the cps_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND2"
    CPS_NETWORK_BONDING_INTERFACE_BTBOND2 = "BTBOND2"

    #: A constant which can be used with the cps_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND3"
    CPS_NETWORK_BONDING_INTERFACE_BTBOND3 = "BTBOND3"

    #: A constant which can be used with the cps_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND4"
    CPS_NETWORK_BONDING_INTERFACE_BTBOND4 = "BTBOND4"

    #: A constant which can be used with the cps_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND5"
    CPS_NETWORK_BONDING_INTERFACE_BTBOND5 = "BTBOND5"

    #: A constant which can be used with the cps_network_bonding_interface property of a CreateInfrastructureDetails.
    #: This constant has a value of "BTBOND6"
    CPS_NETWORK_BONDING_INTERFACE_BTBOND6 = "BTBOND6"

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

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

        :param compartment_id:
            The value to assign to the compartment_id property of this CreateInfrastructureDetails.
        :type compartment_id: str

        :param display_name:
            The value to assign to the display_name property of this CreateInfrastructureDetails.
        :type display_name: str

        :param system_model:
            The value to assign to the system_model property of this CreateInfrastructureDetails.
            Allowed values for this property are: "X11_HA_768", "X10_HA_512", "X8_HA_384"
        :type system_model: str

        :param shape:
            The value to assign to the shape property of this CreateInfrastructureDetails.
            Allowed values for this property are: "SIX_SSDS", "TWELVE_SSDS", "EIGHTEEN_SSDS", "TWENTY_FOUR_SSDS"
        :type shape: str

        :param cloud_control_plane_server1:
            The value to assign to the cloud_control_plane_server1 property of this CreateInfrastructureDetails.
        :type cloud_control_plane_server1: str

        :param cloud_control_plane_server2:
            The value to assign to the cloud_control_plane_server2 property of this CreateInfrastructureDetails.
        :type cloud_control_plane_server2: str

        :param netmask:
            The value to assign to the netmask property of this CreateInfrastructureDetails.
        :type netmask: str

        :param gateway:
            The value to assign to the gateway property of this CreateInfrastructureDetails.
        :type gateway: str

        :param admin_networkcidr:
            The value to assign to the admin_networkcidr property of this CreateInfrastructureDetails.
        :type admin_networkcidr: str

        :param data_disk_percentage:
            The value to assign to the data_disk_percentage property of this CreateInfrastructureDetails.
        :type data_disk_percentage: int

        :param contacts:
            The value to assign to the contacts property of this CreateInfrastructureDetails.
        :type contacts: list[oci.datacc.models.InfrastructureContact]

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

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

        :param client_network_bonding_mode:
            The value to assign to the client_network_bonding_mode property of this CreateInfrastructureDetails.
            Allowed values for this property are: "ACTIVE_BACKUP", "LACP"
        :type client_network_bonding_mode: str

        :param backup_network_bonding_mode:
            The value to assign to the backup_network_bonding_mode property of this CreateInfrastructureDetails.
            Allowed values for this property are: "ACTIVE_BACKUP", "LACP"
        :type backup_network_bonding_mode: str

        :param cps_network_bonding_mode:
            The value to assign to the cps_network_bonding_mode property of this CreateInfrastructureDetails.
            Allowed values for this property are: "ACTIVE_BACKUP", "LACP"
        :type cps_network_bonding_mode: str

        :param client_network_bonding_interface:
            The value to assign to the client_network_bonding_interface property of this CreateInfrastructureDetails.
            Allowed values for this property are: "BTBOND1", "BTBOND2", "BTBOND3", "BTBOND4", "BTBOND5", "BTBOND6"
        :type client_network_bonding_interface: str

        :param backup_network_bonding_interface:
            The value to assign to the backup_network_bonding_interface property of this CreateInfrastructureDetails.
            Allowed values for this property are: "BTBOND1", "BTBOND2", "BTBOND3", "BTBOND4", "BTBOND5", "BTBOND6"
        :type backup_network_bonding_interface: str

        :param cps_network_bonding_interface:
            The value to assign to the cps_network_bonding_interface property of this CreateInfrastructureDetails.
            Allowed values for this property are: "BTBOND1", "BTBOND2", "BTBOND3", "BTBOND4", "BTBOND5", "BTBOND6"
        :type cps_network_bonding_interface: str

        :param acfs_file_system_storage_in_gbs:
            The value to assign to the acfs_file_system_storage_in_gbs property of this CreateInfrastructureDetails.
        :type acfs_file_system_storage_in_gbs: float

        :param corporate_proxy:
            The value to assign to the corporate_proxy property of this CreateInfrastructureDetails.
        :type corporate_proxy: str

        :param vlan_id:
            The value to assign to the vlan_id property of this CreateInfrastructureDetails.
        :type vlan_id: str

        :param maintenance_window:
            The value to assign to the maintenance_window property of this CreateInfrastructureDetails.
        :type maintenance_window: oci.datacc.models.MaintenanceWindow

        :param freeform_tags:
            The value to assign to the freeform_tags property of this CreateInfrastructureDetails.
        :type freeform_tags: dict(str, str)

        :param defined_tags:
            The value to assign to the defined_tags property of this CreateInfrastructureDetails.
        :type defined_tags: dict(str, dict(str, object))

        """
        self.swagger_types = {
            'description': 'str',
            'compartment_id': 'str',
            'display_name': 'str',
            'system_model': 'str',
            'shape': 'str',
            'cloud_control_plane_server1': 'str',
            'cloud_control_plane_server2': 'str',
            'netmask': 'str',
            'gateway': 'str',
            'admin_networkcidr': 'str',
            'data_disk_percentage': 'int',
            'contacts': 'list[InfrastructureContact]',
            'dns_servers': 'list[str]',
            'ntp_servers': 'list[str]',
            'client_network_bonding_mode': 'str',
            'backup_network_bonding_mode': 'str',
            'cps_network_bonding_mode': 'str',
            'client_network_bonding_interface': 'str',
            'backup_network_bonding_interface': 'str',
            'cps_network_bonding_interface': 'str',
            'acfs_file_system_storage_in_gbs': 'float',
            'corporate_proxy': 'str',
            'vlan_id': 'str',
            'maintenance_window': 'MaintenanceWindow',
            'freeform_tags': 'dict(str, str)',
            'defined_tags': 'dict(str, dict(str, object))'
        }
        self.attribute_map = {
            'description': 'description',
            'compartment_id': 'compartmentId',
            'display_name': 'displayName',
            'system_model': 'systemModel',
            'shape': 'shape',
            'cloud_control_plane_server1': 'cloudControlPlaneServer1',
            'cloud_control_plane_server2': 'cloudControlPlaneServer2',
            'netmask': 'netmask',
            'gateway': 'gateway',
            'admin_networkcidr': 'adminNetworkcidr',
            'data_disk_percentage': 'dataDiskPercentage',
            'contacts': 'contacts',
            'dns_servers': 'dnsServers',
            'ntp_servers': 'ntpServers',
            'client_network_bonding_mode': 'clientNetworkBondingMode',
            'backup_network_bonding_mode': 'backupNetworkBondingMode',
            'cps_network_bonding_mode': 'cpsNetworkBondingMode',
            'client_network_bonding_interface': 'clientNetworkBondingInterface',
            'backup_network_bonding_interface': 'backupNetworkBondingInterface',
            'cps_network_bonding_interface': 'cpsNetworkBondingInterface',
            'acfs_file_system_storage_in_gbs': 'acfsFileSystemStorageInGbs',
            'corporate_proxy': 'corporateProxy',
            'vlan_id': 'vlanId',
            'maintenance_window': 'maintenanceWindow',
            'freeform_tags': 'freeformTags',
            'defined_tags': 'definedTags'
        }
        self._description = None
        self._compartment_id = None
        self._display_name = None
        self._system_model = None
        self._shape = None
        self._cloud_control_plane_server1 = None
        self._cloud_control_plane_server2 = None
        self._netmask = None
        self._gateway = None
        self._admin_networkcidr = None
        self._data_disk_percentage = None
        self._contacts = None
        self._dns_servers = None
        self._ntp_servers = None
        self._client_network_bonding_mode = None
        self._backup_network_bonding_mode = None
        self._cps_network_bonding_mode = None
        self._client_network_bonding_interface = None
        self._backup_network_bonding_interface = None
        self._cps_network_bonding_interface = None
        self._acfs_file_system_storage_in_gbs = None
        self._corporate_proxy = None
        self._vlan_id = None
        self._maintenance_window = None
        self._freeform_tags = None
        self._defined_tags = None

    @property
    def description(self):
        """
        Gets the description of this CreateInfrastructureDetails.
        Database Infrastructure description.


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

    @description.setter
    def description(self, description):
        """
        Sets the description of this CreateInfrastructureDetails.
        Database Infrastructure description.


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

    @property
    def compartment_id(self):
        """
        **[Required]** Gets the compartment_id of this CreateInfrastructureDetails.
        The `OCID`__ of the compartment.

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


        :return: The compartment_id of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._compartment_id

    @compartment_id.setter
    def compartment_id(self, compartment_id):
        """
        Sets the compartment_id of this CreateInfrastructureDetails.
        The `OCID`__ of the compartment.

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


        :param compartment_id: The compartment_id of this CreateInfrastructureDetails.
        :type: str
        """
        self._compartment_id = compartment_id

    @property
    def display_name(self):
        """
        **[Required]** Gets the display_name of this CreateInfrastructureDetails.
        The user-friendly name for the Database Infrastructure. The name does not need to be unique.


        :return: The display_name of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._display_name

    @display_name.setter
    def display_name(self, display_name):
        """
        Sets the display_name of this CreateInfrastructureDetails.
        The user-friendly name for the Database Infrastructure. The name does not need to be unique.


        :param display_name: The display_name of this CreateInfrastructureDetails.
        :type: str
        """
        self._display_name = display_name

    @property
    def system_model(self):
        """
        **[Required]** Gets the system_model of this CreateInfrastructureDetails.
        Database Infrastructure System Model specification. The system model determines the model of the Database Infrastructure hardware to be used.

        Allowed values for this property are: "X11_HA_768", "X10_HA_512", "X8_HA_384"


        :return: The system_model of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._system_model

    @system_model.setter
    def system_model(self, system_model):
        """
        Sets the system_model of this CreateInfrastructureDetails.
        Database Infrastructure System Model specification. The system model determines the model of the Database Infrastructure hardware to be used.


        :param system_model: The system_model of this CreateInfrastructureDetails.
        :type: str
        """
        allowed_values = ["X11_HA_768", "X10_HA_512", "X8_HA_384"]
        if not value_allowed_none_or_none_sentinel(system_model, allowed_values):
            raise ValueError(
                f"Invalid value for `system_model`, must be None or one of {allowed_values}"
            )
        self._system_model = system_model

    @property
    def shape(self):
        """
        **[Required]** Gets the shape of this CreateInfrastructureDetails.
        The shape of the Database Infrastructure. The shape determines the amount of CPU, storage, and memory resources allocated to the instance.

        Allowed values for this property are: "SIX_SSDS", "TWELVE_SSDS", "EIGHTEEN_SSDS", "TWENTY_FOUR_SSDS"


        :return: The shape of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._shape

    @shape.setter
    def shape(self, shape):
        """
        Sets the shape of this CreateInfrastructureDetails.
        The shape of the Database Infrastructure. The shape determines the amount of CPU, storage, and memory resources allocated to the instance.


        :param shape: The shape of this CreateInfrastructureDetails.
        :type: str
        """
        allowed_values = ["SIX_SSDS", "TWELVE_SSDS", "EIGHTEEN_SSDS", "TWENTY_FOUR_SSDS"]
        if not value_allowed_none_or_none_sentinel(shape, allowed_values):
            raise ValueError(
                f"Invalid value for `shape`, must be None or one of {allowed_values}"
            )
        self._shape = shape

    @property
    def cloud_control_plane_server1(self):
        """
        **[Required]** Gets the cloud_control_plane_server1 of this CreateInfrastructureDetails.
        The IP address for the first control plane server.


        :return: The cloud_control_plane_server1 of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._cloud_control_plane_server1

    @cloud_control_plane_server1.setter
    def cloud_control_plane_server1(self, cloud_control_plane_server1):
        """
        Sets the cloud_control_plane_server1 of this CreateInfrastructureDetails.
        The IP address for the first control plane server.


        :param cloud_control_plane_server1: The cloud_control_plane_server1 of this CreateInfrastructureDetails.
        :type: str
        """
        self._cloud_control_plane_server1 = cloud_control_plane_server1

    @property
    def cloud_control_plane_server2(self):
        """
        **[Required]** Gets the cloud_control_plane_server2 of this CreateInfrastructureDetails.
        The IP address for the second control plane server.


        :return: The cloud_control_plane_server2 of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._cloud_control_plane_server2

    @cloud_control_plane_server2.setter
    def cloud_control_plane_server2(self, cloud_control_plane_server2):
        """
        Sets the cloud_control_plane_server2 of this CreateInfrastructureDetails.
        The IP address for the second control plane server.


        :param cloud_control_plane_server2: The cloud_control_plane_server2 of this CreateInfrastructureDetails.
        :type: str
        """
        self._cloud_control_plane_server2 = cloud_control_plane_server2

    @property
    def netmask(self):
        """
        **[Required]** Gets the netmask of this CreateInfrastructureDetails.
        The netmask for the control plane network.


        :return: The netmask of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._netmask

    @netmask.setter
    def netmask(self, netmask):
        """
        Sets the netmask of this CreateInfrastructureDetails.
        The netmask for the control plane network.


        :param netmask: The netmask of this CreateInfrastructureDetails.
        :type: str
        """
        self._netmask = netmask

    @property
    def gateway(self):
        """
        **[Required]** Gets the gateway of this CreateInfrastructureDetails.
        The gateway for the control plane network.


        :return: The gateway of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._gateway

    @gateway.setter
    def gateway(self, gateway):
        """
        Sets the gateway of this CreateInfrastructureDetails.
        The gateway for the control plane network.


        :param gateway: The gateway of this CreateInfrastructureDetails.
        :type: str
        """
        self._gateway = gateway

    @property
    def admin_networkcidr(self):
        """
        Gets the admin_networkcidr of this CreateInfrastructureDetails.
        The CIDR block for the system network. The system network is a private network in Database Infrastructure and is not connected to your corporate network. The system network is used for storage (ASM) traffic, high-performance interconnect traffic and administration of infrastructure components.


        :return: The admin_networkcidr of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._admin_networkcidr

    @admin_networkcidr.setter
    def admin_networkcidr(self, admin_networkcidr):
        """
        Sets the admin_networkcidr of this CreateInfrastructureDetails.
        The CIDR block for the system network. The system network is a private network in Database Infrastructure and is not connected to your corporate network. The system network is used for storage (ASM) traffic, high-performance interconnect traffic and administration of infrastructure components.


        :param admin_networkcidr: The admin_networkcidr of this CreateInfrastructureDetails.
        :type: str
        """
        self._admin_networkcidr = admin_networkcidr

    @property
    def data_disk_percentage(self):
        """
        Gets the data_disk_percentage of this CreateInfrastructureDetails.
        Percentage of disk space assigned for DATA disk group. Remaining disk space will get assiged to RECO disk group


        :return: The data_disk_percentage of this CreateInfrastructureDetails.
        :rtype: int
        """
        return self._data_disk_percentage

    @data_disk_percentage.setter
    def data_disk_percentage(self, data_disk_percentage):
        """
        Sets the data_disk_percentage of this CreateInfrastructureDetails.
        Percentage of disk space assigned for DATA disk group. Remaining disk space will get assiged to RECO disk group


        :param data_disk_percentage: The data_disk_percentage of this CreateInfrastructureDetails.
        :type: int
        """
        self._data_disk_percentage = data_disk_percentage

    @property
    def contacts(self):
        """
        Gets the contacts of this CreateInfrastructureDetails.
        The list of contacts for the Database Infrastructure.


        :return: The contacts of this CreateInfrastructureDetails.
        :rtype: list[oci.datacc.models.InfrastructureContact]
        """
        return self._contacts

    @contacts.setter
    def contacts(self, contacts):
        """
        Sets the contacts of this CreateInfrastructureDetails.
        The list of contacts for the Database Infrastructure.


        :param contacts: The contacts of this CreateInfrastructureDetails.
        :type: list[oci.datacc.models.InfrastructureContact]
        """
        self._contacts = contacts

    @property
    def dns_servers(self):
        """
        **[Required]** Gets the dns_servers of this CreateInfrastructureDetails.
        The list of DNS server IP addresses. Maximum of 3 allowed.


        :return: The dns_servers of this CreateInfrastructureDetails.
        :rtype: list[str]
        """
        return self._dns_servers

    @dns_servers.setter
    def dns_servers(self, dns_servers):
        """
        Sets the dns_servers of this CreateInfrastructureDetails.
        The list of DNS server IP addresses. Maximum of 3 allowed.


        :param dns_servers: The dns_servers of this CreateInfrastructureDetails.
        :type: list[str]
        """
        self._dns_servers = dns_servers

    @property
    def ntp_servers(self):
        """
        **[Required]** Gets the ntp_servers of this CreateInfrastructureDetails.
        The list of NTP server IP addresses. Maximum of 3 allowed.


        :return: The ntp_servers of this CreateInfrastructureDetails.
        :rtype: list[str]
        """
        return self._ntp_servers

    @ntp_servers.setter
    def ntp_servers(self, ntp_servers):
        """
        Sets the ntp_servers of this CreateInfrastructureDetails.
        The list of NTP server IP addresses. Maximum of 3 allowed.


        :param ntp_servers: The ntp_servers of this CreateInfrastructureDetails.
        :type: list[str]
        """
        self._ntp_servers = ntp_servers

    @property
    def client_network_bonding_mode(self):
        """
        Gets the client_network_bonding_mode of this CreateInfrastructureDetails.
        The network bonding mode for Client networks for the Database Infrastructure.

        Allowed values for this property are: "ACTIVE_BACKUP", "LACP"


        :return: The client_network_bonding_mode of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._client_network_bonding_mode

    @client_network_bonding_mode.setter
    def client_network_bonding_mode(self, client_network_bonding_mode):
        """
        Sets the client_network_bonding_mode of this CreateInfrastructureDetails.
        The network bonding mode for Client networks for the Database Infrastructure.


        :param client_network_bonding_mode: The client_network_bonding_mode of this CreateInfrastructureDetails.
        :type: str
        """
        allowed_values = ["ACTIVE_BACKUP", "LACP"]
        if not value_allowed_none_or_none_sentinel(client_network_bonding_mode, allowed_values):
            raise ValueError(
                f"Invalid value for `client_network_bonding_mode`, must be None or one of {allowed_values}"
            )
        self._client_network_bonding_mode = client_network_bonding_mode

    @property
    def backup_network_bonding_mode(self):
        """
        Gets the backup_network_bonding_mode of this CreateInfrastructureDetails.
        The network bonding mode for Backup networks for the Database Infrastructure.

        Allowed values for this property are: "ACTIVE_BACKUP", "LACP"


        :return: The backup_network_bonding_mode of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._backup_network_bonding_mode

    @backup_network_bonding_mode.setter
    def backup_network_bonding_mode(self, backup_network_bonding_mode):
        """
        Sets the backup_network_bonding_mode of this CreateInfrastructureDetails.
        The network bonding mode for Backup networks for the Database Infrastructure.


        :param backup_network_bonding_mode: The backup_network_bonding_mode of this CreateInfrastructureDetails.
        :type: str
        """
        allowed_values = ["ACTIVE_BACKUP", "LACP"]
        if not value_allowed_none_or_none_sentinel(backup_network_bonding_mode, allowed_values):
            raise ValueError(
                f"Invalid value for `backup_network_bonding_mode`, must be None or one of {allowed_values}"
            )
        self._backup_network_bonding_mode = backup_network_bonding_mode

    @property
    def cps_network_bonding_mode(self):
        """
        Gets the cps_network_bonding_mode of this CreateInfrastructureDetails.
        The network bonding mode for CPS networks for the Database Infrastructure.

        Allowed values for this property are: "ACTIVE_BACKUP", "LACP"


        :return: The cps_network_bonding_mode of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._cps_network_bonding_mode

    @cps_network_bonding_mode.setter
    def cps_network_bonding_mode(self, cps_network_bonding_mode):
        """
        Sets the cps_network_bonding_mode of this CreateInfrastructureDetails.
        The network bonding mode for CPS networks for the Database Infrastructure.


        :param cps_network_bonding_mode: The cps_network_bonding_mode of this CreateInfrastructureDetails.
        :type: str
        """
        allowed_values = ["ACTIVE_BACKUP", "LACP"]
        if not value_allowed_none_or_none_sentinel(cps_network_bonding_mode, allowed_values):
            raise ValueError(
                f"Invalid value for `cps_network_bonding_mode`, must be None or one of {allowed_values}"
            )
        self._cps_network_bonding_mode = cps_network_bonding_mode

    @property
    def client_network_bonding_interface(self):
        """
        Gets the client_network_bonding_interface of this CreateInfrastructureDetails.
        The network bonding interface for client network for the Database Infrastructure.

        Allowed values for this property are: "BTBOND1", "BTBOND2", "BTBOND3", "BTBOND4", "BTBOND5", "BTBOND6"


        :return: The client_network_bonding_interface of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._client_network_bonding_interface

    @client_network_bonding_interface.setter
    def client_network_bonding_interface(self, client_network_bonding_interface):
        """
        Sets the client_network_bonding_interface of this CreateInfrastructureDetails.
        The network bonding interface for client network for the Database Infrastructure.


        :param client_network_bonding_interface: The client_network_bonding_interface of this CreateInfrastructureDetails.
        :type: str
        """
        allowed_values = ["BTBOND1", "BTBOND2", "BTBOND3", "BTBOND4", "BTBOND5", "BTBOND6"]
        if not value_allowed_none_or_none_sentinel(client_network_bonding_interface, allowed_values):
            raise ValueError(
                f"Invalid value for `client_network_bonding_interface`, must be None or one of {allowed_values}"
            )
        self._client_network_bonding_interface = client_network_bonding_interface

    @property
    def backup_network_bonding_interface(self):
        """
        Gets the backup_network_bonding_interface of this CreateInfrastructureDetails.
        The network bonding interface for backup network for the Database Infrastructure.

        Allowed values for this property are: "BTBOND1", "BTBOND2", "BTBOND3", "BTBOND4", "BTBOND5", "BTBOND6"


        :return: The backup_network_bonding_interface of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._backup_network_bonding_interface

    @backup_network_bonding_interface.setter
    def backup_network_bonding_interface(self, backup_network_bonding_interface):
        """
        Sets the backup_network_bonding_interface of this CreateInfrastructureDetails.
        The network bonding interface for backup network for the Database Infrastructure.


        :param backup_network_bonding_interface: The backup_network_bonding_interface of this CreateInfrastructureDetails.
        :type: str
        """
        allowed_values = ["BTBOND1", "BTBOND2", "BTBOND3", "BTBOND4", "BTBOND5", "BTBOND6"]
        if not value_allowed_none_or_none_sentinel(backup_network_bonding_interface, allowed_values):
            raise ValueError(
                f"Invalid value for `backup_network_bonding_interface`, must be None or one of {allowed_values}"
            )
        self._backup_network_bonding_interface = backup_network_bonding_interface

    @property
    def cps_network_bonding_interface(self):
        """
        Gets the cps_network_bonding_interface of this CreateInfrastructureDetails.
        The network bonding interface for CPS network for the Database Infrastructure.

        Allowed values for this property are: "BTBOND1", "BTBOND2", "BTBOND3", "BTBOND4", "BTBOND5", "BTBOND6"


        :return: The cps_network_bonding_interface of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._cps_network_bonding_interface

    @cps_network_bonding_interface.setter
    def cps_network_bonding_interface(self, cps_network_bonding_interface):
        """
        Sets the cps_network_bonding_interface of this CreateInfrastructureDetails.
        The network bonding interface for CPS network for the Database Infrastructure.


        :param cps_network_bonding_interface: The cps_network_bonding_interface of this CreateInfrastructureDetails.
        :type: str
        """
        allowed_values = ["BTBOND1", "BTBOND2", "BTBOND3", "BTBOND4", "BTBOND5", "BTBOND6"]
        if not value_allowed_none_or_none_sentinel(cps_network_bonding_interface, allowed_values):
            raise ValueError(
                f"Invalid value for `cps_network_bonding_interface`, must be None or one of {allowed_values}"
            )
        self._cps_network_bonding_interface = cps_network_bonding_interface

    @property
    def acfs_file_system_storage_in_gbs(self):
        """
        Gets the acfs_file_system_storage_in_gbs of this CreateInfrastructureDetails.
        The amount of storage (in GB) in the DATA disk group that is reserved for creating local storage for VM Clusters and application VMs.


        :return: The acfs_file_system_storage_in_gbs of this CreateInfrastructureDetails.
        :rtype: float
        """
        return self._acfs_file_system_storage_in_gbs

    @acfs_file_system_storage_in_gbs.setter
    def acfs_file_system_storage_in_gbs(self, acfs_file_system_storage_in_gbs):
        """
        Sets the acfs_file_system_storage_in_gbs of this CreateInfrastructureDetails.
        The amount of storage (in GB) in the DATA disk group that is reserved for creating local storage for VM Clusters and application VMs.


        :param acfs_file_system_storage_in_gbs: The acfs_file_system_storage_in_gbs of this CreateInfrastructureDetails.
        :type: float
        """
        self._acfs_file_system_storage_in_gbs = acfs_file_system_storage_in_gbs

    @property
    def corporate_proxy(self):
        """
        Gets the corporate_proxy of this CreateInfrastructureDetails.
        The corporate network proxy for access to the control plane network. Oracle recommends using an HTTPS proxy when possible
        for enhanced security.


        :return: The corporate_proxy of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._corporate_proxy

    @corporate_proxy.setter
    def corporate_proxy(self, corporate_proxy):
        """
        Sets the corporate_proxy of this CreateInfrastructureDetails.
        The corporate network proxy for access to the control plane network. Oracle recommends using an HTTPS proxy when possible
        for enhanced security.


        :param corporate_proxy: The corporate_proxy of this CreateInfrastructureDetails.
        :type: str
        """
        self._corporate_proxy = corporate_proxy

    @property
    def vlan_id(self):
        """
        Gets the vlan_id of this CreateInfrastructureDetails.
        The CPS network VLAN ID.


        :return: The vlan_id of this CreateInfrastructureDetails.
        :rtype: str
        """
        return self._vlan_id

    @vlan_id.setter
    def vlan_id(self, vlan_id):
        """
        Sets the vlan_id of this CreateInfrastructureDetails.
        The CPS network VLAN ID.


        :param vlan_id: The vlan_id of this CreateInfrastructureDetails.
        :type: str
        """
        self._vlan_id = vlan_id

    @property
    def maintenance_window(self):
        """
        Gets the maintenance_window of this CreateInfrastructureDetails.

        :return: The maintenance_window of this CreateInfrastructureDetails.
        :rtype: oci.datacc.models.MaintenanceWindow
        """
        return self._maintenance_window

    @maintenance_window.setter
    def maintenance_window(self, maintenance_window):
        """
        Sets the maintenance_window of this CreateInfrastructureDetails.

        :param maintenance_window: The maintenance_window of this CreateInfrastructureDetails.
        :type: oci.datacc.models.MaintenanceWindow
        """
        self._maintenance_window = maintenance_window

    @property
    def freeform_tags(self):
        """
        Gets the freeform_tags of this CreateInfrastructureDetails.
        Simple key-value pair that is applied without any predefined name, type or scope. This tag option exists for cross-compatibility only.
        Example: `{\"bar-key\": \"value\"}`


        :return: The freeform_tags of this CreateInfrastructureDetails.
        :rtype: dict(str, str)
        """
        return self._freeform_tags

    @freeform_tags.setter
    def freeform_tags(self, freeform_tags):
        """
        Sets the freeform_tags of this CreateInfrastructureDetails.
        Simple key-value pair that is applied without any predefined name, type or scope. This tag option exists for cross-compatibility only.
        Example: `{\"bar-key\": \"value\"}`


        :param freeform_tags: The freeform_tags of this CreateInfrastructureDetails.
        :type: dict(str, str)
        """
        self._freeform_tags = freeform_tags

    @property
    def defined_tags(self):
        """
        Gets the defined_tags of this CreateInfrastructureDetails.
        Defined tags for this resource. Each key is predefined and scoped to a namespace.
        Example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`


        :return: The defined_tags of this CreateInfrastructureDetails.
        :rtype: dict(str, dict(str, object))
        """
        return self._defined_tags

    @defined_tags.setter
    def defined_tags(self, defined_tags):
        """
        Sets the defined_tags of this CreateInfrastructureDetails.
        Defined tags for this resource. Each key is predefined and scoped to a namespace.
        Example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`


        :param defined_tags: The defined_tags of this CreateInfrastructureDetails.
        :type: dict(str, dict(str, object))
        """
        self._defined_tags = defined_tags

    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
