# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from . import outputs

__all__ = [
    'GetExternalNonContainerDatabaseResult',
    'AwaitableGetExternalNonContainerDatabaseResult',
    'get_external_non_container_database',
]

@pulumi.output_type
class GetExternalNonContainerDatabaseResult:
    """
    A collection of values returned by getExternalNonContainerDatabase.
    """
    def __init__(__self__, character_set=None, compartment_id=None, database_configuration=None, database_edition=None, database_management_config=None, database_version=None, db_id=None, db_packs=None, db_unique_name=None, defined_tags=None, display_name=None, external_non_container_database_id=None, freeform_tags=None, id=None, lifecycle_details=None, ncharacter_set=None, operations_insights_config=None, state=None, time_created=None, time_zone=None):
        if character_set and not isinstance(character_set, str):
            raise TypeError("Expected argument 'character_set' to be a str")
        pulumi.set(__self__, "character_set", character_set)
        if compartment_id and not isinstance(compartment_id, str):
            raise TypeError("Expected argument 'compartment_id' to be a str")
        pulumi.set(__self__, "compartment_id", compartment_id)
        if database_configuration and not isinstance(database_configuration, str):
            raise TypeError("Expected argument 'database_configuration' to be a str")
        pulumi.set(__self__, "database_configuration", database_configuration)
        if database_edition and not isinstance(database_edition, str):
            raise TypeError("Expected argument 'database_edition' to be a str")
        pulumi.set(__self__, "database_edition", database_edition)
        if database_management_config and not isinstance(database_management_config, dict):
            raise TypeError("Expected argument 'database_management_config' to be a dict")
        pulumi.set(__self__, "database_management_config", database_management_config)
        if database_version and not isinstance(database_version, str):
            raise TypeError("Expected argument 'database_version' to be a str")
        pulumi.set(__self__, "database_version", database_version)
        if db_id and not isinstance(db_id, str):
            raise TypeError("Expected argument 'db_id' to be a str")
        pulumi.set(__self__, "db_id", db_id)
        if db_packs and not isinstance(db_packs, str):
            raise TypeError("Expected argument 'db_packs' to be a str")
        pulumi.set(__self__, "db_packs", db_packs)
        if db_unique_name and not isinstance(db_unique_name, str):
            raise TypeError("Expected argument 'db_unique_name' to be a str")
        pulumi.set(__self__, "db_unique_name", db_unique_name)
        if defined_tags and not isinstance(defined_tags, dict):
            raise TypeError("Expected argument 'defined_tags' to be a dict")
        pulumi.set(__self__, "defined_tags", defined_tags)
        if display_name and not isinstance(display_name, str):
            raise TypeError("Expected argument 'display_name' to be a str")
        pulumi.set(__self__, "display_name", display_name)
        if external_non_container_database_id and not isinstance(external_non_container_database_id, str):
            raise TypeError("Expected argument 'external_non_container_database_id' to be a str")
        pulumi.set(__self__, "external_non_container_database_id", external_non_container_database_id)
        if freeform_tags and not isinstance(freeform_tags, dict):
            raise TypeError("Expected argument 'freeform_tags' to be a dict")
        pulumi.set(__self__, "freeform_tags", freeform_tags)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if lifecycle_details and not isinstance(lifecycle_details, str):
            raise TypeError("Expected argument 'lifecycle_details' to be a str")
        pulumi.set(__self__, "lifecycle_details", lifecycle_details)
        if ncharacter_set and not isinstance(ncharacter_set, str):
            raise TypeError("Expected argument 'ncharacter_set' to be a str")
        pulumi.set(__self__, "ncharacter_set", ncharacter_set)
        if operations_insights_config and not isinstance(operations_insights_config, dict):
            raise TypeError("Expected argument 'operations_insights_config' to be a dict")
        pulumi.set(__self__, "operations_insights_config", operations_insights_config)
        if state and not isinstance(state, str):
            raise TypeError("Expected argument 'state' to be a str")
        pulumi.set(__self__, "state", state)
        if time_created and not isinstance(time_created, str):
            raise TypeError("Expected argument 'time_created' to be a str")
        pulumi.set(__self__, "time_created", time_created)
        if time_zone and not isinstance(time_zone, str):
            raise TypeError("Expected argument 'time_zone' to be a str")
        pulumi.set(__self__, "time_zone", time_zone)

    @property
    @pulumi.getter(name="characterSet")
    def character_set(self) -> str:
        """
        The character set of the external database.
        """
        return pulumi.get(self, "character_set")

    @property
    @pulumi.getter(name="compartmentId")
    def compartment_id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment.
        """
        return pulumi.get(self, "compartment_id")

    @property
    @pulumi.getter(name="databaseConfiguration")
    def database_configuration(self) -> str:
        """
        The Oracle Database configuration
        """
        return pulumi.get(self, "database_configuration")

    @property
    @pulumi.getter(name="databaseEdition")
    def database_edition(self) -> str:
        """
        The Oracle Database edition.
        """
        return pulumi.get(self, "database_edition")

    @property
    @pulumi.getter(name="databaseManagementConfig")
    def database_management_config(self) -> 'outputs.GetExternalNonContainerDatabaseDatabaseManagementConfigResult':
        """
        The configuration of the Database Management service.
        """
        return pulumi.get(self, "database_management_config")

    @property
    @pulumi.getter(name="databaseVersion")
    def database_version(self) -> str:
        """
        The Oracle Database version.
        """
        return pulumi.get(self, "database_version")

    @property
    @pulumi.getter(name="dbId")
    def db_id(self) -> str:
        """
        The Oracle Database ID, which identifies an Oracle Database located outside of Oracle Cloud.
        """
        return pulumi.get(self, "db_id")

    @property
    @pulumi.getter(name="dbPacks")
    def db_packs(self) -> str:
        """
        The database packs licensed for the external Oracle Database.
        """
        return pulumi.get(self, "db_packs")

    @property
    @pulumi.getter(name="dbUniqueName")
    def db_unique_name(self) -> str:
        """
        The `DB_UNIQUE_NAME` of the external database.
        """
        return pulumi.get(self, "db_unique_name")

    @property
    @pulumi.getter(name="definedTags")
    def defined_tags(self) -> Mapping[str, Any]:
        """
        Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
        """
        return pulumi.get(self, "defined_tags")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The user-friendly name for the external database. The name does not have to be unique.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="externalNonContainerDatabaseId")
    def external_non_container_database_id(self) -> str:
        return pulumi.get(self, "external_non_container_database_id")

    @property
    @pulumi.getter(name="freeformTags")
    def freeform_tags(self) -> Mapping[str, Any]:
        """
        Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
        """
        return pulumi.get(self, "freeform_tags")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Oracle Cloud Infrastructure external database resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="lifecycleDetails")
    def lifecycle_details(self) -> str:
        """
        Additional information about the current lifecycle state.
        """
        return pulumi.get(self, "lifecycle_details")

    @property
    @pulumi.getter(name="ncharacterSet")
    def ncharacter_set(self) -> str:
        """
        The national character of the external database.
        """
        return pulumi.get(self, "ncharacter_set")

    @property
    @pulumi.getter(name="operationsInsightsConfig")
    def operations_insights_config(self) -> 'outputs.GetExternalNonContainerDatabaseOperationsInsightsConfigResult':
        """
        The configuration of Operations Insights for the external database
        """
        return pulumi.get(self, "operations_insights_config")

    @property
    @pulumi.getter
    def state(self) -> str:
        """
        The current state of the Oracle Cloud Infrastructure external database resource.
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="timeCreated")
    def time_created(self) -> str:
        """
        The date and time the database was created.
        """
        return pulumi.get(self, "time_created")

    @property
    @pulumi.getter(name="timeZone")
    def time_zone(self) -> str:
        """
        The time zone of the external database. It is a time zone offset (a character type in the format '[+|-]TZH:TZM') or a time zone region name, depending on how the time zone value was specified when the database was created / last altered.
        """
        return pulumi.get(self, "time_zone")


class AwaitableGetExternalNonContainerDatabaseResult(GetExternalNonContainerDatabaseResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetExternalNonContainerDatabaseResult(
            character_set=self.character_set,
            compartment_id=self.compartment_id,
            database_configuration=self.database_configuration,
            database_edition=self.database_edition,
            database_management_config=self.database_management_config,
            database_version=self.database_version,
            db_id=self.db_id,
            db_packs=self.db_packs,
            db_unique_name=self.db_unique_name,
            defined_tags=self.defined_tags,
            display_name=self.display_name,
            external_non_container_database_id=self.external_non_container_database_id,
            freeform_tags=self.freeform_tags,
            id=self.id,
            lifecycle_details=self.lifecycle_details,
            ncharacter_set=self.ncharacter_set,
            operations_insights_config=self.operations_insights_config,
            state=self.state,
            time_created=self.time_created,
            time_zone=self.time_zone)


def get_external_non_container_database(external_non_container_database_id: Optional[str] = None,
                                        opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetExternalNonContainerDatabaseResult:
    """
    This data source provides details about a specific External Non Container Database resource in Oracle Cloud Infrastructure Database service.

    Gets information about a specific external non-container database.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_external_non_container_database = oci.database.get_external_non_container_database(external_non_container_database_id=oci_database_external_non_container_database["test_external_non_container_database"]["id"])
    ```


    :param str external_non_container_database_id: The external non-container database [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
    """
    __args__ = dict()
    __args__['externalNonContainerDatabaseId'] = external_non_container_database_id
    if opts is None:
        opts = pulumi.InvokeOptions()
    if opts.version is None:
        opts.version = _utilities.get_version()
    __ret__ = pulumi.runtime.invoke('oci:database/getExternalNonContainerDatabase:getExternalNonContainerDatabase', __args__, opts=opts, typ=GetExternalNonContainerDatabaseResult).value

    return AwaitableGetExternalNonContainerDatabaseResult(
        character_set=__ret__.character_set,
        compartment_id=__ret__.compartment_id,
        database_configuration=__ret__.database_configuration,
        database_edition=__ret__.database_edition,
        database_management_config=__ret__.database_management_config,
        database_version=__ret__.database_version,
        db_id=__ret__.db_id,
        db_packs=__ret__.db_packs,
        db_unique_name=__ret__.db_unique_name,
        defined_tags=__ret__.defined_tags,
        display_name=__ret__.display_name,
        external_non_container_database_id=__ret__.external_non_container_database_id,
        freeform_tags=__ret__.freeform_tags,
        id=__ret__.id,
        lifecycle_details=__ret__.lifecycle_details,
        ncharacter_set=__ret__.ncharacter_set,
        operations_insights_config=__ret__.operations_insights_config,
        state=__ret__.state,
        time_created=__ret__.time_created,
        time_zone=__ret__.time_zone)

[(86, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (94, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (102, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (110, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (118, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (126, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (134, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (142, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (150, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (158, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (166, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (174, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (179, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (195, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (203, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (211, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (227, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (235, 'pulumi.getter', 'pulumi.getter', False, 'import pulumi\n'), (26, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (29, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (32, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (35, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (38, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (41, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (44, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (47, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (50, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (53, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (56, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (59, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (62, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (65, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (68, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (71, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (74, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (77, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (80, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (83, 'pulumi.set', 'pulumi.set', False, 'import pulumi\n'), (91, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (99, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (107, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (115, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (123, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (131, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (139, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (147, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (155, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (163, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (171, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (176, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (184, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (192, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (200, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (208, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (216, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (224, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (232, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (240, 'pulumi.get', 'pulumi.get', False, 'import pulumi\n'), (293, 'pulumi.InvokeOptions', 'pulumi.InvokeOptions', False, 'import pulumi\n'), (296, 'pulumi.runtime.invoke', 'pulumi.runtime.invoke', False, 'import pulumi\n')]