<reponame>mrhamburg/pulumi-provider-routeros// *** 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.Ip
{
    /// <summary>
    /// ## # routeros.Ip.DhcpClient (Resource)
    /// 
    /// ***
    /// 
    /// #### This is an alias for backwards compatibility between plugin versions.
    /// Please see documentation for routeros.Ip.DhcpIpClient
    /// </summary>
    [RouterosResourceType("routeros:Ip/dhcpClient:DhcpClient")]
    public partial class DhcpClient : 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>
        /// Whether to install default route in routing table received from DHCP server.
        /// </summary>
        [Output("addDefaultRoute")]
        public Output<string> AddDefaultRoute { get; private set; } = null!;

        /// <summary>
        /// IP address and netmask, which is assigned to DHCP Client from the Server.
        /// </summary>
        [Output("address")]
        public Output<string> Address { get; private set; } = null!;

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

        /// <summary>
        /// Distance of default route. Applicable if add-default-route is set to yes.
        /// </summary>
        [Output("defaultRouteDistance")]
        public Output<int?> DefaultRouteDistance { get; private set; } = null!;

        /// <summary>
        /// Options that are sent to the DHCP server.
        /// </summary>
        [Output("dhcpOptions")]
        public Output<string?> DhcpOptions { get; private set; } = null!;

        /// <summary>
        /// The IP address of the DHCP server.
        /// </summary>
        [Output("dhcpServer")]
        public Output<string> DhcpServer { get; private set; } = null!;

        [Output("disabled")]
        public Output<bool?> Disabled { get; private set; } = null!;

        /// <summary>
        /// Configuration item created by software, not by management interface. It is not exported, and cannot be directly
        /// modified.
        /// </summary>
        [Output("dynamic")]
        public Output<bool> Dynamic { get; private set; } = null!;

        /// <summary>
        /// A time when the lease expires (specified by the DHCP server).
        /// </summary>
        [Output("expiresAfter")]
        public Output<string> ExpiresAfter { get; private set; } = null!;

        /// <summary>
        /// The IP address of the gateway which is assigned by DHCP server.
        /// </summary>
        [Output("gateway")]
        public Output<string> Gateway { get; private set; } = null!;

        /// <summary>
        /// Name of the interface.
        /// </summary>
        [Output("interface")]
        public Output<string> Interface { get; private set; } = null!;

        [Output("invalid")]
        public Output<bool> Invalid { get; private set; } = null!;

        /// <summary>
        /// The IP address of the first DNS resolver, that was assigned by the DHCP server.
        /// </summary>
        [Output("primaryDns")]
        public Output<string> PrimaryDns { get; private set; } = null!;

        /// <summary>
        /// The IP address of the primary NTP server, assigned by the DHCP server.
        /// </summary>
        [Output("primaryNtp")]
        public Output<string> PrimaryNtp { get; private set; } = null!;

        /// <summary>
        /// The IP address of the second DNS resolver, assigned by the DHCP server.
        /// </summary>
        [Output("secondaryDns")]
        public Output<string> SecondaryDns { get; private set; } = null!;

        /// <summary>
        /// The IP address of the secondary NTP server, assigned by the DHCP server.
        /// </summary>
        [Output("secondaryNtp")]
        public Output<string> SecondaryNtp { get; private set; } = null!;

        [Output("status")]
        public Output<string> Status { get; private set; } = null!;

        /// <summary>
        /// Whether to accept the DNS settings advertised by DHCP Server (will override the settings put in the /ip dns submenu).
        /// </summary>
        [Output("usePeerDns")]
        public Output<bool?> UsePeerDns { get; private set; } = null!;

        /// <summary>
        /// Whether to accept the NTP settings advertised by DHCP Server (will override the settings put in the /system ntp client
        /// submenu).
        /// </summary>
        [Output("usePeerNtp")]
        public Output<bool?> UsePeerNtp { get; private set; } = null!;


        /// <summary>
        /// Create a DhcpClient 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 DhcpClient(string name, DhcpClientArgs args, CustomResourceOptions? options = null)
            : base("routeros:Ip/dhcpClient:DhcpClient", name, args ?? new DhcpClientArgs(), MakeResourceOptions(options, ""))
        {
        }

        private DhcpClient(string name, Input<string> id, DhcpClientState? state = null, CustomResourceOptions? options = null)
            : base("routeros:Ip/dhcpClient:DhcpClient", 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 DhcpClient 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 DhcpClient Get(string name, Input<string> id, DhcpClientState? state = null, CustomResourceOptions? options = null)
        {
            return new DhcpClient(name, id, state, options);
        }
    }

    public sealed class DhcpClientArgs : 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>
        /// Whether to install default route in routing table received from DHCP server.
        /// </summary>
        [Input("addDefaultRoute")]
        public Input<string>? AddDefaultRoute { get; set; }

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

        /// <summary>
        /// Distance of default route. Applicable if add-default-route is set to yes.
        /// </summary>
        [Input("defaultRouteDistance")]
        public Input<int>? DefaultRouteDistance { get; set; }

        /// <summary>
        /// Options that are sent to the DHCP server.
        /// </summary>
        [Input("dhcpOptions")]
        public Input<string>? DhcpOptions { get; set; }

        [Input("disabled")]
        public Input<bool>? Disabled { get; set; }

        /// <summary>
        /// Name of the interface.
        /// </summary>
        [Input("interface", required: true)]
        public Input<string> Interface { get; set; } = null!;

        /// <summary>
        /// Whether to accept the DNS settings advertised by DHCP Server (will override the settings put in the /ip dns submenu).
        /// </summary>
        [Input("usePeerDns")]
        public Input<bool>? UsePeerDns { get; set; }

        /// <summary>
        /// Whether to accept the NTP settings advertised by DHCP Server (will override the settings put in the /system ntp client
        /// submenu).
        /// </summary>
        [Input("usePeerNtp")]
        public Input<bool>? UsePeerNtp { get; set; }

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

    public sealed class DhcpClientState : 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>
        /// Whether to install default route in routing table received from DHCP server.
        /// </summary>
        [Input("addDefaultRoute")]
        public Input<string>? AddDefaultRoute { get; set; }

        /// <summary>
        /// IP address and netmask, which is assigned to DHCP Client from the Server.
        /// </summary>
        [Input("address")]
        public Input<string>? Address { get; set; }

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

        /// <summary>
        /// Distance of default route. Applicable if add-default-route is set to yes.
        /// </summary>
        [Input("defaultRouteDistance")]
        public Input<int>? DefaultRouteDistance { get; set; }

        /// <summary>
        /// Options that are sent to the DHCP server.
        /// </summary>
        [Input("dhcpOptions")]
        public Input<string>? DhcpOptions { get; set; }

        /// <summary>
        /// The IP address of the DHCP server.
        /// </summary>
        [Input("dhcpServer")]
        public Input<string>? DhcpServer { get; set; }

        [Input("disabled")]
        public Input<bool>? Disabled { get; set; }

        /// <summary>
        /// Configuration item created by software, not by management interface. It is not exported, and cannot be directly
        /// modified.
        /// </summary>
        [Input("dynamic")]
        public Input<bool>? Dynamic { get; set; }

        /// <summary>
        /// A time when the lease expires (specified by the DHCP server).
        /// </summary>
        [Input("expiresAfter")]
        public Input<string>? ExpiresAfter { get; set; }

        /// <summary>
        /// The IP address of the gateway which is assigned by DHCP server.
        /// </summary>
        [Input("gateway")]
        public Input<string>? Gateway { get; set; }

        /// <summary>
        /// Name of the interface.
        /// </summary>
        [Input("interface")]
        public Input<string>? Interface { get; set; }

        [Input("invalid")]
        public Input<bool>? Invalid { get; set; }

        /// <summary>
        /// The IP address of the first DNS resolver, that was assigned by the DHCP server.
        /// </summary>
        [Input("primaryDns")]
        public Input<string>? PrimaryDns { get; set; }

        /// <summary>
        /// The IP address of the primary NTP server, assigned by the DHCP server.
        /// </summary>
        [Input("primaryNtp")]
        public Input<string>? PrimaryNtp { get; set; }

        /// <summary>
        /// The IP address of the second DNS resolver, assigned by the DHCP server.
        /// </summary>
        [Input("secondaryDns")]
        public Input<string>? SecondaryDns { get; set; }

        /// <summary>
        /// The IP address of the secondary NTP server, assigned by the DHCP server.
        /// </summary>
        [Input("secondaryNtp")]
        public Input<string>? SecondaryNtp { get; set; }

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

        /// <summary>
        /// Whether to accept the DNS settings advertised by DHCP Server (will override the settings put in the /ip dns submenu).
        /// </summary>
        [Input("usePeerDns")]
        public Input<bool>? UsePeerDns { get; set; }

        /// <summary>
        /// Whether to accept the NTP settings advertised by DHCP Server (will override the settings put in the /system ntp client
        /// submenu).
        /// </summary>
        [Input("usePeerNtp")]
        public Input<bool>? UsePeerNtp { get; set; }

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