// *** 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! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace Lbrlabs.PulumiPackage.Ovh.Dbaas
{
    public static class GetLogsOutputGraylogStream
    {
        /// <summary>
        /// Use this data source to retrieve information about a DBaas logs output graylog stream.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using System.Linq;
        /// using Pulumi;
        /// using Ovh = Pulumi.Ovh;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var stream = Ovh.Dbaas.GetLogsOutputGraylogStream.Invoke(new()
        ///     {
        ///         ServiceName = "ldp-xx-xxxxx",
        ///         Title = "my stream",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Task<GetLogsOutputGraylogStreamResult> InvokeAsync(GetLogsOutputGraylogStreamArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetLogsOutputGraylogStreamResult>("ovh:Dbaas/getLogsOutputGraylogStream:getLogsOutputGraylogStream", args ?? new GetLogsOutputGraylogStreamArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to retrieve information about a DBaas logs output graylog stream.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using System.Linq;
        /// using Pulumi;
        /// using Ovh = Pulumi.Ovh;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var stream = Ovh.Dbaas.GetLogsOutputGraylogStream.Invoke(new()
        ///     {
        ///         ServiceName = "ldp-xx-xxxxx",
        ///         Title = "my stream",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Output<GetLogsOutputGraylogStreamResult> Invoke(GetLogsOutputGraylogStreamInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetLogsOutputGraylogStreamResult>("ovh:Dbaas/getLogsOutputGraylogStream:getLogsOutputGraylogStream", args ?? new GetLogsOutputGraylogStreamInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetLogsOutputGraylogStreamArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// The service name. It's the ID of your Logs Data Platform instance.
        /// </summary>
        [Input("serviceName", required: true)]
        public string ServiceName { get; set; } = null!;

        /// <summary>
        /// Stream description
        /// </summary>
        [Input("title", required: true)]
        public string Title { get; set; } = null!;

        public GetLogsOutputGraylogStreamArgs()
        {
        }
        public static new GetLogsOutputGraylogStreamArgs Empty => new GetLogsOutputGraylogStreamArgs();
    }

    public sealed class GetLogsOutputGraylogStreamInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// The service name. It's the ID of your Logs Data Platform instance.
        /// </summary>
        [Input("serviceName", required: true)]
        public Input<string> ServiceName { get; set; } = null!;

        /// <summary>
        /// Stream description
        /// </summary>
        [Input("title", required: true)]
        public Input<string> Title { get; set; } = null!;

        public GetLogsOutputGraylogStreamInvokeArgs()
        {
        }
        public static new GetLogsOutputGraylogStreamInvokeArgs Empty => new GetLogsOutputGraylogStreamInvokeArgs();
    }


    [OutputType]
    public sealed class GetLogsOutputGraylogStreamResult
    {
        public readonly bool CanAlert;
        /// <summary>
        /// Cold storage compression method
        /// </summary>
        public readonly string ColdStorageCompression;
        /// <summary>
        /// ColdStorage content
        /// </summary>
        public readonly string ColdStorageContent;
        /// <summary>
        /// Is Cold storage enabled?
        /// </summary>
        public readonly bool ColdStorageEnabled;
        /// <summary>
        /// Notify on new Cold storage archive
        /// </summary>
        public readonly bool ColdStorageNotifyEnabled;
        /// <summary>
        /// Cold storage retention in year
        /// </summary>
        public readonly int ColdStorageRetention;
        /// <summary>
        /// ColdStorage destination
        /// </summary>
        public readonly string ColdStorageTarget;
        /// <summary>
        /// Stream creation
        /// </summary>
        public readonly string CreatedAt;
        /// <summary>
        /// Stream description
        /// </summary>
        public readonly string Description;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Enable ES indexing
        /// </summary>
        public readonly bool IndexingEnabled;
        /// <summary>
        /// Maximum indexing size (in GB)
        /// </summary>
        public readonly int IndexingMaxSize;
        /// <summary>
        /// If set, notify when size is near 80, 90 or 100 % of the maximum configured setting
        /// </summary>
        public readonly bool IndexingNotifyEnabled;
        /// <summary>
        /// Indicates if you are allowed to edit entry
        /// </summary>
        public readonly bool IsEditable;
        /// <summary>
        /// Indicates if you are allowed to share entry
        /// </summary>
        public readonly bool IsShareable;
        /// <summary>
        /// Number of alert condition
        /// </summary>
        public readonly int NbAlertCondition;
        /// <summary>
        /// Number of coldstored archives
        /// </summary>
        public readonly int NbArchive;
        /// <summary>
        /// Parent stream ID
        /// </summary>
        public readonly string ParentStreamId;
        /// <summary>
        /// If set, pause indexing when maximum size is reach
        /// </summary>
        public readonly bool PauseIndexingOnMaxSize;
        /// <summary>
        /// Retention ID
        /// </summary>
        public readonly string RetentionId;
        public readonly string ServiceName;
        /// <summary>
        /// Stream ID
        /// </summary>
        public readonly string StreamId;
        public readonly string Title;
        /// <summary>
        /// Stream last update
        /// </summary>
        public readonly string UpdatedAt;
        /// <summary>
        /// Enable Websocket
        /// </summary>
        public readonly bool WebSocketEnabled;

        [OutputConstructor]
        private GetLogsOutputGraylogStreamResult(
            bool canAlert,

            string coldStorageCompression,

            string coldStorageContent,

            bool coldStorageEnabled,

            bool coldStorageNotifyEnabled,

            int coldStorageRetention,

            string coldStorageTarget,

            string createdAt,

            string description,

            string id,

            bool indexingEnabled,

            int indexingMaxSize,

            bool indexingNotifyEnabled,

            bool isEditable,

            bool isShareable,

            int nbAlertCondition,

            int nbArchive,

            string parentStreamId,

            bool pauseIndexingOnMaxSize,

            string retentionId,

            string serviceName,

            string streamId,

            string title,

            string updatedAt,

            bool webSocketEnabled)
        {
            CanAlert = canAlert;
            ColdStorageCompression = coldStorageCompression;
            ColdStorageContent = coldStorageContent;
            ColdStorageEnabled = coldStorageEnabled;
            ColdStorageNotifyEnabled = coldStorageNotifyEnabled;
            ColdStorageRetention = coldStorageRetention;
            ColdStorageTarget = coldStorageTarget;
            CreatedAt = createdAt;
            Description = description;
            Id = id;
            IndexingEnabled = indexingEnabled;
            IndexingMaxSize = indexingMaxSize;
            IndexingNotifyEnabled = indexingNotifyEnabled;
            IsEditable = isEditable;
            IsShareable = isShareable;
            NbAlertCondition = nbAlertCondition;
            NbArchive = nbArchive;
            ParentStreamId = parentStreamId;
            PauseIndexingOnMaxSize = pauseIndexingOnMaxSize;
            RetentionId = retentionId;
            ServiceName = serviceName;
            StreamId = streamId;
            Title = title;
            UpdatedAt = updatedAt;
            WebSocketEnabled = webSocketEnabled;
        }
    }
}
