# 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 copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'GetSoftwareSourceModuleStreamResult',
    'AwaitableGetSoftwareSourceModuleStreamResult',
    'get_software_source_module_stream',
    'get_software_source_module_stream_output',
]

@pulumi.output_type
class GetSoftwareSourceModuleStreamResult:
    """
    A collection of values returned by getSoftwareSourceModuleStream.
    """
    def __init__(__self__, architecture=None, description=None, id=None, is_default=None, module_name=None, packages=None, profiles=None, software_source_id=None, stream_name=None):
        if architecture and not isinstance(architecture, str):
            raise TypeError("Expected argument 'architecture' to be a str")
        pulumi.set(__self__, "architecture", architecture)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if is_default and not isinstance(is_default, bool):
            raise TypeError("Expected argument 'is_default' to be a bool")
        pulumi.set(__self__, "is_default", is_default)
        if module_name and not isinstance(module_name, str):
            raise TypeError("Expected argument 'module_name' to be a str")
        pulumi.set(__self__, "module_name", module_name)
        if packages and not isinstance(packages, list):
            raise TypeError("Expected argument 'packages' to be a list")
        pulumi.set(__self__, "packages", packages)
        if profiles and not isinstance(profiles, list):
            raise TypeError("Expected argument 'profiles' to be a list")
        pulumi.set(__self__, "profiles", profiles)
        if software_source_id and not isinstance(software_source_id, str):
            raise TypeError("Expected argument 'software_source_id' to be a str")
        pulumi.set(__self__, "software_source_id", software_source_id)
        if stream_name and not isinstance(stream_name, str):
            raise TypeError("Expected argument 'stream_name' to be a str")
        pulumi.set(__self__, "stream_name", stream_name)

    @property
    @pulumi.getter
    def architecture(self) -> str:
        """
        The architecture for which the packages in this module stream were built
        """
        return pulumi.get(self, "architecture")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        A description of the contents of the module stream
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The provider-assigned unique ID for this managed resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        Indicates if this stream is the default for its module.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter(name="moduleName")
    def module_name(self) -> str:
        """
        The name of the module that contains the stream
        """
        return pulumi.get(self, "module_name")

    @property
    @pulumi.getter
    def packages(self) -> Sequence[str]:
        """
        A list of packages that are contained by the stream.  Each element in the list is the name of a package.  The name is suitable to use as an argument to other OS Management APIs that interact directly with packages.
        """
        return pulumi.get(self, "packages")

    @property
    @pulumi.getter
    def profiles(self) -> Sequence[str]:
        """
        A list of profiles that are part of the stream.  Each element in the list is the name of a profile.  The name is suitable to use as an argument to other OS Management APIs that interact directly with module stream profiles.  However, it is not URL encoded.
        """
        return pulumi.get(self, "profiles")

    @property
    @pulumi.getter(name="softwareSourceId")
    def software_source_id(self) -> str:
        """
        The OCID of the software source that provides this module stream.
        """
        return pulumi.get(self, "software_source_id")

    @property
    @pulumi.getter(name="streamName")
    def stream_name(self) -> str:
        """
        The name of the stream
        """
        return pulumi.get(self, "stream_name")


class AwaitableGetSoftwareSourceModuleStreamResult(GetSoftwareSourceModuleStreamResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetSoftwareSourceModuleStreamResult(
            architecture=self.architecture,
            description=self.description,
            id=self.id,
            is_default=self.is_default,
            module_name=self.module_name,
            packages=self.packages,
            profiles=self.profiles,
            software_source_id=self.software_source_id,
            stream_name=self.stream_name)


def get_software_source_module_stream(module_name: Optional[str] = None,
                                      software_source_id: Optional[str] = None,
                                      stream_name: Optional[str] = None,
                                      opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSoftwareSourceModuleStreamResult:
    """
    This data source provides details about a specific Software Source Module Stream resource in Oracle Cloud Infrastructure OS Management service.

    Retrieve a detailed description of a module stream from a software source.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_software_source_module_stream = oci.OsManagement.get_software_source_module_stream(module_name=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        software_source_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        stream_name=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param str module_name: The name of the module
    :param str software_source_id: The OCID of the software source.
    :param str stream_name: The name of the stream of the containing module
    """
    __args__ = dict()
    __args__['moduleName'] = module_name
    __args__['softwareSourceId'] = software_source_id
    __args__['streamName'] = stream_name
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('oci:OsManagement/getSoftwareSourceModuleStream:getSoftwareSourceModuleStream', __args__, opts=opts, typ=GetSoftwareSourceModuleStreamResult).value

    return AwaitableGetSoftwareSourceModuleStreamResult(
        architecture=__ret__.architecture,
        description=__ret__.description,
        id=__ret__.id,
        is_default=__ret__.is_default,
        module_name=__ret__.module_name,
        packages=__ret__.packages,
        profiles=__ret__.profiles,
        software_source_id=__ret__.software_source_id,
        stream_name=__ret__.stream_name)


@_utilities.lift_output_func(get_software_source_module_stream)
def get_software_source_module_stream_output(module_name: Optional[pulumi.Input[str]] = None,
                                             software_source_id: Optional[pulumi.Input[str]] = None,
                                             stream_name: Optional[pulumi.Input[str]] = None,
                                             opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSoftwareSourceModuleStreamResult]:
    """
    This data source provides details about a specific Software Source Module Stream resource in Oracle Cloud Infrastructure OS Management service.

    Retrieve a detailed description of a module stream from a software source.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_software_source_module_stream = oci.OsManagement.get_software_source_module_stream(module_name=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        software_source_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        stream_name=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param str module_name: The name of the module
    :param str software_source_id: The OCID of the software source.
    :param str stream_name: The name of the stream of the containing module
    """
    ...
