<gh_stars>0// *** 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;

namespace Pulumi.Routeros.CapsMan
{
    /// <summary>
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using System.Linq;
    /// using Pulumi;
    /// using Routeros = Pulumi.Routeros;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var testChannel = new Routeros.CapsMan.Channel("testChannel", new()
    ///     {
    ///         Band = "2ghz-b/g/n",
    ///         Comment = "test_channel",
    ///         ControlChannelWidth = "10mhz",
    ///         ExtensionChannel = "eCee",
    ///         Frequency = 2412,
    ///         ReselectInterval = "1h",
    ///         SaveSelected = true,
    ///         SecondaryFrequency = "disabled",
    ///         SkipDfsChannels = true,
    ///         TxPower = 20,
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// Import with the name of the CAPsMAN channel configuration in case of the example use test-channel-config
    /// 
    /// ```sh
    ///  $ pulumi import routeros:CapsMan/channel:Channel test_channel test-channel-config
    /// ```
    /// </summary>
    [RouterosResourceType("routeros:CapsMan/channel:Channel")]
    public partial class Channel : global::Pulumi.CustomResource
    {
        /// <summary>
        /// &lt;em&gt;Resource ID type (.id / name). This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Output("___id_")]
        public Output<int?> ___id_ { get; private set; } = null!;

        /// <summary>
        /// &lt;em&gt;Resource path for CRUD operations. This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Output("___path_")]
        public Output<string?> ___path_ { get; private set; } = null!;

        /// <summary>
        /// Define operational radio frequency band and mode taken from hardware capability of wireless card.
        /// </summary>
        [Output("band")]
        public Output<string?> Band { get; private set; } = null!;

        [Output("comment")]
        public Output<string?> Comment { get; private set; } = null!;

        /// <summary>
        /// Control channel width.
        /// </summary>
        [Output("controlChannelWidth")]
        public Output<string?> ControlChannelWidth { get; private set; } = null!;

        /// <summary>
        /// Extension channel configuration. (E.g. Ce = extension channel is above Control channel, eC = extension channel is below Control channel)
        /// </summary>
        [Output("extensionChannel")]
        public Output<string?> ExtensionChannel { get; private set; } = null!;

        /// <summary>
        /// Channel frequency value in MHz on which AP will operate. If left blank, CAPsMAN will automatically determine the best frequency that is least occupied.
        /// </summary>
        [Output("frequency")]
        public Output<int> Frequency { get; private set; } = null!;

        /// <summary>
        /// Changing the name of this resource will force it to be recreated. &gt; The links of other configuration properties to this
        /// resource may be lost! &gt; Changing the name of the resource outside of a Terraform will result in a loss of control
        /// integrity for that resource!
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// The interval after which the least occupied frequency is chosen, can be defined as a random interval, ex. as '30m..60m'. Works only if channel.frequency is left blank.
        /// </summary>
        [Output("reselectInterval")]
        public Output<string?> ReselectInterval { get; private set; } = null!;

        /// <summary>
        /// If channel frequency is chosen automatically and channel.reselect-interval is used, then saves the last picked frequency.
        /// </summary>
        [Output("saveSelected")]
        public Output<bool?> SaveSelected { get; private set; } = null!;

        /// <summary>
        /// Specifies the second frequency that will be used for 80+80MHz configuration. Set it to Disabled in order to disable 80+80MHz capability.
        /// </summary>
        [Output("secondaryFrequency")]
        public Output<string?> SecondaryFrequency { get; private set; } = null!;

        /// <summary>
        /// If channel.frequency is left blank, the selection will skip DFS channels.
        /// </summary>
        [Output("skipDfsChannels")]
        public Output<bool?> SkipDfsChannels { get; private set; } = null!;

        /// <summary>
        /// TX  Power for CAP interface (for the whole interface not for individual  chains) in dBm. It is not possible to set higher than allowed by country  regulations or interface. By default max allowed by country or  interface is used.
        /// </summary>
        [Output("txPower")]
        public Output<int?> TxPower { get; private set; } = null!;

        /// <summary>
        /// Channel Width in MHz.
        /// </summary>
        [Output("width")]
        public Output<string?> Width { get; private set; } = null!;


        /// <summary>
        /// Create a Channel 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 Channel(string name, ChannelArgs? args = null, CustomResourceOptions? options = null)
            : base("routeros:CapsMan/channel:Channel", name, args ?? new ChannelArgs(), MakeResourceOptions(options, ""))
        {
        }

        private Channel(string name, Input<string> id, ChannelState? state = null, CustomResourceOptions? options = null)
            : base("routeros:CapsMan/channel:Channel", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
            };
            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 Channel 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 Channel Get(string name, Input<string> id, ChannelState? state = null, CustomResourceOptions? options = null)
        {
            return new Channel(name, id, state, options);
        }
    }

    public sealed class ChannelArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// &lt;em&gt;Resource ID type (.id / name). This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___id_")]
        public Input<int>? ___id_ { get; set; }

        /// <summary>
        /// &lt;em&gt;Resource path for CRUD operations. This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___path_")]
        public Input<string>? ___path_ { get; set; }

        /// <summary>
        /// Define operational radio frequency band and mode taken from hardware capability of wireless card.
        /// </summary>
        [Input("band")]
        public Input<string>? Band { get; set; }

        [Input("comment")]
        public Input<string>? Comment { get; set; }

        /// <summary>
        /// Control channel width.
        /// </summary>
        [Input("controlChannelWidth")]
        public Input<string>? ControlChannelWidth { get; set; }

        /// <summary>
        /// Extension channel configuration. (E.g. Ce = extension channel is above Control channel, eC = extension channel is below Control channel)
        /// </summary>
        [Input("extensionChannel")]
        public Input<string>? ExtensionChannel { get; set; }

        /// <summary>
        /// Channel frequency value in MHz on which AP will operate. If left blank, CAPsMAN will automatically determine the best frequency that is least occupied.
        /// </summary>
        [Input("frequency")]
        public Input<int>? Frequency { get; set; }

        /// <summary>
        /// Changing the name of this resource will force it to be recreated. &gt; The links of other configuration properties to this
        /// resource may be lost! &gt; Changing the name of the resource outside of a Terraform will result in a loss of control
        /// integrity for that resource!
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// The interval after which the least occupied frequency is chosen, can be defined as a random interval, ex. as '30m..60m'. Works only if channel.frequency is left blank.
        /// </summary>
        [Input("reselectInterval")]
        public Input<string>? ReselectInterval { get; set; }

        /// <summary>
        /// If channel frequency is chosen automatically and channel.reselect-interval is used, then saves the last picked frequency.
        /// </summary>
        [Input("saveSelected")]
        public Input<bool>? SaveSelected { get; set; }

        /// <summary>
        /// Specifies the second frequency that will be used for 80+80MHz configuration. Set it to Disabled in order to disable 80+80MHz capability.
        /// </summary>
        [Input("secondaryFrequency")]
        public Input<string>? SecondaryFrequency { get; set; }

        /// <summary>
        /// If channel.frequency is left blank, the selection will skip DFS channels.
        /// </summary>
        [Input("skipDfsChannels")]
        public Input<bool>? SkipDfsChannels { get; set; }

        /// <summary>
        /// TX  Power for CAP interface (for the whole interface not for individual  chains) in dBm. It is not possible to set higher than allowed by country  regulations or interface. By default max allowed by country or  interface is used.
        /// </summary>
        [Input("txPower")]
        public Input<int>? TxPower { get; set; }

        /// <summary>
        /// Channel Width in MHz.
        /// </summary>
        [Input("width")]
        public Input<string>? Width { get; set; }

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

    public sealed class ChannelState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// &lt;em&gt;Resource ID type (.id / name). This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___id_")]
        public Input<int>? ___id_ { get; set; }

        /// <summary>
        /// &lt;em&gt;Resource path for CRUD operations. This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___path_")]
        public Input<string>? ___path_ { get; set; }

        /// <summary>
        /// Define operational radio frequency band and mode taken from hardware capability of wireless card.
        /// </summary>
        [Input("band")]
        public Input<string>? Band { get; set; }

        [Input("comment")]
        public Input<string>? Comment { get; set; }

        /// <summary>
        /// Control channel width.
        /// </summary>
        [Input("controlChannelWidth")]
        public Input<string>? ControlChannelWidth { get; set; }

        /// <summary>
        /// Extension channel configuration. (E.g. Ce = extension channel is above Control channel, eC = extension channel is below Control channel)
        /// </summary>
        [Input("extensionChannel")]
        public Input<string>? ExtensionChannel { get; set; }

        /// <summary>
        /// Channel frequency value in MHz on which AP will operate. If left blank, CAPsMAN will automatically determine the best frequency that is least occupied.
        /// </summary>
        [Input("frequency")]
        public Input<int>? Frequency { get; set; }

        /// <summary>
        /// Changing the name of this resource will force it to be recreated. &gt; The links of other configuration properties to this
        /// resource may be lost! &gt; Changing the name of the resource outside of a Terraform will result in a loss of control
        /// integrity for that resource!
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// The interval after which the least occupied frequency is chosen, can be defined as a random interval, ex. as '30m..60m'. Works only if channel.frequency is left blank.
        /// </summary>
        [Input("reselectInterval")]
        public Input<string>? ReselectInterval { get; set; }

        /// <summary>
        /// If channel frequency is chosen automatically and channel.reselect-interval is used, then saves the last picked frequency.
        /// </summary>
        [Input("saveSelected")]
        public Input<bool>? SaveSelected { get; set; }

        /// <summary>
        /// Specifies the second frequency that will be used for 80+80MHz configuration. Set it to Disabled in order to disable 80+80MHz capability.
        /// </summary>
        [Input("secondaryFrequency")]
        public Input<string>? SecondaryFrequency { get; set; }

        /// <summary>
        /// If channel.frequency is left blank, the selection will skip DFS channels.
        /// </summary>
        [Input("skipDfsChannels")]
        public Input<bool>? SkipDfsChannels { get; set; }

        /// <summary>
        /// TX  Power for CAP interface (for the whole interface not for individual  chains) in dBm. It is not possible to set higher than allowed by country  regulations or interface. By default max allowed by country or  interface is used.
        /// </summary>
        [Input("txPower")]
        public Input<int>? TxPower { get; set; }

        /// <summary>
        /// Channel Width in MHz.
        /// </summary>
        [Input("width")]
        public Input<string>? Width { get; set; }

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