<filename>sdk/dotnet/GetSystemCsf.cs// *** 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 Pulumiverse.Fortios
{
    public static class GetSystemCsf
    {
        /// <summary>
        /// Use this data source to get information on fortios system csf
        /// </summary>
        public static Task<GetSystemCsfResult> InvokeAsync(GetSystemCsfArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemCsfResult>("fortios:index/getSystemCsf:getSystemCsf", args ?? new GetSystemCsfArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on fortios system csf
        /// </summary>
        public static Output<GetSystemCsfResult> Invoke(GetSystemCsfInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetSystemCsfResult>("fortios:index/getSystemCsf:getSystemCsf", args ?? new GetSystemCsfInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetSystemCsfArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specifies the vdom to which the data source will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public string? Vdomparam { get; set; }

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

    public sealed class GetSystemCsfInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specifies the vdom to which the data source will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

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


    [OutputType]
    public sealed class GetSystemCsfResult
    {
        /// <summary>
        /// Accept connections with unknown certificates and ask admin for approval.
        /// </summary>
        public readonly string AcceptAuthByCert;
        /// <summary>
        /// Authorization request type.
        /// </summary>
        public readonly string AuthorizationRequestType;
        /// <summary>
        /// Certificate.
        /// </summary>
        public readonly string Certificate;
        /// <summary>
        /// Configuration sync mode.
        /// </summary>
        public readonly string ConfigurationSync;
        /// <summary>
        /// Enable/disable downstream device access to this device's configuration and data.
        /// </summary>
        public readonly string DownstreamAccess;
        /// <summary>
        /// Default access profile for requests from downstream devices.
        /// </summary>
        public readonly string DownstreamAccprofile;
        /// <summary>
        /// Fabric connector configuration. The structure of `fabric_connector` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemCsfFabricConnectorResult> FabricConnectors;
        /// <summary>
        /// Fabric device configuration. The structure of `fabric_device` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemCsfFabricDeviceResult> FabricDevices;
        /// <summary>
        /// Fabric CMDB Object Unification
        /// </summary>
        public readonly string FabricObjectUnification;
        /// <summary>
        /// Number of worker processes for Security Fabric daemon.
        /// </summary>
        public readonly int FabricWorkers;
        /// <summary>
        /// Auto-generated fixed key used when this device is the root. (Will automatically be generated if not set.)
        /// </summary>
        public readonly string FixedKey;
        /// <summary>
        /// Fabric FortiCloud account unification.
        /// </summary>
        public readonly string ForticloudAccountEnforcement;
        /// <summary>
        /// Security Fabric group name. All FortiGates in a Security Fabric must have the same group name.
        /// </summary>
        public readonly string GroupName;
        /// <summary>
        /// Security Fabric group password. All FortiGates in a Security Fabric must have the same group password.
        /// </summary>
        public readonly string GroupPassword;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Enable/disable broadcast of discovery messages for log unification.
        /// </summary>
        public readonly string LogUnification;
        /// <summary>
        /// Management IP address of this FortiGate. Used to log into this FortiGate from another FortiGate in the Security Fabric.
        /// </summary>
        public readonly string ManagementIp;
        /// <summary>
        /// Overriding port for management connection (Overrides admin port).
        /// </summary>
        public readonly int ManagementPort;
        /// <summary>
        /// SAML setting configuration synchronization.
        /// </summary>
        public readonly string SamlConfigurationSync;
        /// <summary>
        /// Enable/disable Security Fabric.
        /// </summary>
        public readonly string Status;
        /// <summary>
        /// Pre-authorized and blocked security fabric nodes. The structure of `trusted_list` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemCsfTrustedListResult> TrustedLists;
        /// <summary>
        /// IP/FQDN of the FortiGate upstream from this FortiGate in the Security Fabric.
        /// </summary>
        public readonly string Upstream;
        /// <summary>
        /// IP address of the FortiGate upstream from this FortiGate in the Security Fabric.
        /// </summary>
        public readonly string UpstreamIp;
        /// <summary>
        /// The port number to use to communicate with the FortiGate upstream from this FortiGate in the Security Fabric (default = 8013).
        /// </summary>
        public readonly int UpstreamPort;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetSystemCsfResult(
            string acceptAuthByCert,

            string authorizationRequestType,

            string certificate,

            string configurationSync,

            string downstreamAccess,

            string downstreamAccprofile,

            ImmutableArray<Outputs.GetSystemCsfFabricConnectorResult> fabricConnectors,

            ImmutableArray<Outputs.GetSystemCsfFabricDeviceResult> fabricDevices,

            string fabricObjectUnification,

            int fabricWorkers,

            string fixedKey,

            string forticloudAccountEnforcement,

            string groupName,

            string groupPassword,

            string id,

            string logUnification,

            string managementIp,

            int managementPort,

            string samlConfigurationSync,

            string status,

            ImmutableArray<Outputs.GetSystemCsfTrustedListResult> trustedLists,

            string upstream,

            string upstreamIp,

            int upstreamPort,

            string? vdomparam)
        {
            AcceptAuthByCert = acceptAuthByCert;
            AuthorizationRequestType = authorizationRequestType;
            Certificate = certificate;
            ConfigurationSync = configurationSync;
            DownstreamAccess = downstreamAccess;
            DownstreamAccprofile = downstreamAccprofile;
            FabricConnectors = fabricConnectors;
            FabricDevices = fabricDevices;
            FabricObjectUnification = fabricObjectUnification;
            FabricWorkers = fabricWorkers;
            FixedKey = fixedKey;
            ForticloudAccountEnforcement = forticloudAccountEnforcement;
            GroupName = groupName;
            GroupPassword = groupPassword;
            Id = id;
            LogUnification = logUnification;
            ManagementIp = managementIp;
            ManagementPort = managementPort;
            SamlConfigurationSync = samlConfigurationSync;
            Status = status;
            TrustedLists = trustedLists;
            Upstream = upstream;
            UpstreamIp = upstreamIp;
            UpstreamPort = upstreamPort;
            Vdomparam = vdomparam;
        }
    }
}
