<filename>sdk/dotnet/SwitchcontrollerSnmpcommunity.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
{
    /// <summary>
    /// Configure FortiSwitch SNMP v1/v2c communities globally. Applies to FortiOS Version `&gt;= 6.2.4`.
    /// 
    /// ## Import
    /// 
    /// SwitchController SnmpCommunity can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/switchcontrollerSnmpcommunity:SwitchcontrollerSnmpcommunity labelname {{fosid}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/switchcontrollerSnmpcommunity:SwitchcontrollerSnmpcommunity labelname {{fosid}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/switchcontrollerSnmpcommunity:SwitchcontrollerSnmpcommunity")]
    public partial class SwitchcontrollerSnmpcommunity : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Output("dynamicSortSubtable")]
        public Output<string?> DynamicSortSubtable { get; private set; } = null!;

        /// <summary>
        /// SNMP notifications (traps) to send. Valid values: `cpu-high`, `mem-low`, `log-full`, `intf-ip`, `ent-conf-change`.
        /// </summary>
        [Output("events")]
        public Output<string> Events { get; private set; } = null!;

        /// <summary>
        /// SNMP community ID.
        /// </summary>
        [Output("fosid")]
        public Output<int> Fosid { get; private set; } = null!;

        /// <summary>
        /// Configure IPv4 SNMP managers (hosts). The structure of `hosts` block is documented below.
        /// </summary>
        [Output("hosts")]
        public Output<ImmutableArray<Outputs.SwitchcontrollerSnmpcommunityHost>> Hosts { get; private set; } = null!;

        /// <summary>
        /// SNMP community name.
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// SNMP v1 query port (default = 161).
        /// </summary>
        [Output("queryV1Port")]
        public Output<int> QueryV1Port { get; private set; } = null!;

        /// <summary>
        /// Enable/disable SNMP v1 queries. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("queryV1Status")]
        public Output<string> QueryV1Status { get; private set; } = null!;

        /// <summary>
        /// SNMP v2c query port (default = 161).
        /// </summary>
        [Output("queryV2cPort")]
        public Output<int> QueryV2cPort { get; private set; } = null!;

        /// <summary>
        /// Enable/disable SNMP v2c queries. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("queryV2cStatus")]
        public Output<string> QueryV2cStatus { get; private set; } = null!;

        /// <summary>
        /// Enable/disable this SNMP community. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("status")]
        public Output<string> Status { get; private set; } = null!;

        /// <summary>
        /// SNMP v2c trap local port (default = 162).
        /// </summary>
        [Output("trapV1Lport")]
        public Output<int> TrapV1Lport { get; private set; } = null!;

        /// <summary>
        /// SNMP v2c trap remote port (default = 162).
        /// </summary>
        [Output("trapV1Rport")]
        public Output<int> TrapV1Rport { get; private set; } = null!;

        /// <summary>
        /// Enable/disable SNMP v1 traps. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("trapV1Status")]
        public Output<string> TrapV1Status { get; private set; } = null!;

        /// <summary>
        /// SNMP v2c trap local port (default = 162).
        /// </summary>
        [Output("trapV2cLport")]
        public Output<int> TrapV2cLport { get; private set; } = null!;

        /// <summary>
        /// SNMP v2c trap remote port (default = 162).
        /// </summary>
        [Output("trapV2cRport")]
        public Output<int> TrapV2cRport { get; private set; } = null!;

        /// <summary>
        /// Enable/disable SNMP v2c traps. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("trapV2cStatus")]
        public Output<string> TrapV2cStatus { get; private set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the resource 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>
        [Output("vdomparam")]
        public Output<string?> Vdomparam { get; private set; } = null!;


        /// <summary>
        /// Create a SwitchcontrollerSnmpcommunity resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public SwitchcontrollerSnmpcommunity(string name, SwitchcontrollerSnmpcommunityArgs? args = null, CustomResourceOptions? options = null)
            : base("fortios:index/switchcontrollerSnmpcommunity:SwitchcontrollerSnmpcommunity", name, args ?? new SwitchcontrollerSnmpcommunityArgs(), MakeResourceOptions(options, ""))
        {
        }

        private SwitchcontrollerSnmpcommunity(string name, Input<string> id, SwitchcontrollerSnmpcommunityState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/switchcontrollerSnmpcommunity:SwitchcontrollerSnmpcommunity", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/pulumiverse/pulumi-fortios",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing SwitchcontrollerSnmpcommunity resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static SwitchcontrollerSnmpcommunity Get(string name, Input<string> id, SwitchcontrollerSnmpcommunityState? state = null, CustomResourceOptions? options = null)
        {
            return new SwitchcontrollerSnmpcommunity(name, id, state, options);
        }
    }

    public sealed class SwitchcontrollerSnmpcommunityArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        /// <summary>
        /// SNMP notifications (traps) to send. Valid values: `cpu-high`, `mem-low`, `log-full`, `intf-ip`, `ent-conf-change`.
        /// </summary>
        [Input("events")]
        public Input<string>? Events { get; set; }

        /// <summary>
        /// SNMP community ID.
        /// </summary>
        [Input("fosid")]
        public Input<int>? Fosid { get; set; }

        [Input("hosts")]
        private InputList<Inputs.SwitchcontrollerSnmpcommunityHostArgs>? _hosts;

        /// <summary>
        /// Configure IPv4 SNMP managers (hosts). The structure of `hosts` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerSnmpcommunityHostArgs> Hosts
        {
            get => _hosts ?? (_hosts = new InputList<Inputs.SwitchcontrollerSnmpcommunityHostArgs>());
            set => _hosts = value;
        }

        /// <summary>
        /// SNMP community name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// SNMP v1 query port (default = 161).
        /// </summary>
        [Input("queryV1Port")]
        public Input<int>? QueryV1Port { get; set; }

        /// <summary>
        /// Enable/disable SNMP v1 queries. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("queryV1Status")]
        public Input<string>? QueryV1Status { get; set; }

        /// <summary>
        /// SNMP v2c query port (default = 161).
        /// </summary>
        [Input("queryV2cPort")]
        public Input<int>? QueryV2cPort { get; set; }

        /// <summary>
        /// Enable/disable SNMP v2c queries. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("queryV2cStatus")]
        public Input<string>? QueryV2cStatus { get; set; }

        /// <summary>
        /// Enable/disable this SNMP community. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// SNMP v2c trap local port (default = 162).
        /// </summary>
        [Input("trapV1Lport")]
        public Input<int>? TrapV1Lport { get; set; }

        /// <summary>
        /// SNMP v2c trap remote port (default = 162).
        /// </summary>
        [Input("trapV1Rport")]
        public Input<int>? TrapV1Rport { get; set; }

        /// <summary>
        /// Enable/disable SNMP v1 traps. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("trapV1Status")]
        public Input<string>? TrapV1Status { get; set; }

        /// <summary>
        /// SNMP v2c trap local port (default = 162).
        /// </summary>
        [Input("trapV2cLport")]
        public Input<int>? TrapV2cLport { get; set; }

        /// <summary>
        /// SNMP v2c trap remote port (default = 162).
        /// </summary>
        [Input("trapV2cRport")]
        public Input<int>? TrapV2cRport { get; set; }

        /// <summary>
        /// Enable/disable SNMP v2c traps. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("trapV2cStatus")]
        public Input<string>? TrapV2cStatus { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource 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 SwitchcontrollerSnmpcommunityArgs()
        {
        }
        public static new SwitchcontrollerSnmpcommunityArgs Empty => new SwitchcontrollerSnmpcommunityArgs();
    }

    public sealed class SwitchcontrollerSnmpcommunityState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        /// <summary>
        /// SNMP notifications (traps) to send. Valid values: `cpu-high`, `mem-low`, `log-full`, `intf-ip`, `ent-conf-change`.
        /// </summary>
        [Input("events")]
        public Input<string>? Events { get; set; }

        /// <summary>
        /// SNMP community ID.
        /// </summary>
        [Input("fosid")]
        public Input<int>? Fosid { get; set; }

        [Input("hosts")]
        private InputList<Inputs.SwitchcontrollerSnmpcommunityHostGetArgs>? _hosts;

        /// <summary>
        /// Configure IPv4 SNMP managers (hosts). The structure of `hosts` block is documented below.
        /// </summary>
        public InputList<Inputs.SwitchcontrollerSnmpcommunityHostGetArgs> Hosts
        {
            get => _hosts ?? (_hosts = new InputList<Inputs.SwitchcontrollerSnmpcommunityHostGetArgs>());
            set => _hosts = value;
        }

        /// <summary>
        /// SNMP community name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// SNMP v1 query port (default = 161).
        /// </summary>
        [Input("queryV1Port")]
        public Input<int>? QueryV1Port { get; set; }

        /// <summary>
        /// Enable/disable SNMP v1 queries. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("queryV1Status")]
        public Input<string>? QueryV1Status { get; set; }

        /// <summary>
        /// SNMP v2c query port (default = 161).
        /// </summary>
        [Input("queryV2cPort")]
        public Input<int>? QueryV2cPort { get; set; }

        /// <summary>
        /// Enable/disable SNMP v2c queries. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("queryV2cStatus")]
        public Input<string>? QueryV2cStatus { get; set; }

        /// <summary>
        /// Enable/disable this SNMP community. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// SNMP v2c trap local port (default = 162).
        /// </summary>
        [Input("trapV1Lport")]
        public Input<int>? TrapV1Lport { get; set; }

        /// <summary>
        /// SNMP v2c trap remote port (default = 162).
        /// </summary>
        [Input("trapV1Rport")]
        public Input<int>? TrapV1Rport { get; set; }

        /// <summary>
        /// Enable/disable SNMP v1 traps. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("trapV1Status")]
        public Input<string>? TrapV1Status { get; set; }

        /// <summary>
        /// SNMP v2c trap local port (default = 162).
        /// </summary>
        [Input("trapV2cLport")]
        public Input<int>? TrapV2cLport { get; set; }

        /// <summary>
        /// SNMP v2c trap remote port (default = 162).
        /// </summary>
        [Input("trapV2cRport")]
        public Input<int>? TrapV2cRport { get; set; }

        /// <summary>
        /// Enable/disable SNMP v2c traps. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("trapV2cStatus")]
        public Input<string>? TrapV2cStatus { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource 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 SwitchcontrollerSnmpcommunityState()
        {
        }
        public static new SwitchcontrollerSnmpcommunityState Empty => new SwitchcontrollerSnmpcommunityState();
    }
}
