import * as pulumi from "@pulumi/pulumi"; /** * Creates and manages [Scaleway DHCP Reservations](https://www.scaleway.com/en/docs/network/vpc/concepts/#dhcp). * * These static associations are used to assign IP addresses based on the MAC addresses of the resource. * * Statically assigned IP addresses should fall within the configured subnet, but be outside of the dynamic range. * * For more information, see [the API documentation](https://www.scaleway.com/en/developers/api/public-gateway/#dhcp-c05544). * * [DHCP reservations](https://www.scaleway.com/en/developers/api/public-gateway/#dhcp-entries-e40fb6) hold both dynamic DHCP leases (IP addresses dynamically assigned by the gateway to resources) and static user-created DHCP reservations. * * ## Example Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as scaleway from "@ediri/scaleway"; * * const mainVpcPrivateNetwork = new scaleway.VpcPrivateNetwork("mainVpcPrivateNetwork", {}); * const mainInstanceServer = new scaleway.InstanceServer("mainInstanceServer", { * image: "ubuntu_jammy", * type: "DEV1-S", * zone: "fr-par-1", * privateNetworks: [{ * pnId: mainVpcPrivateNetwork.id, * }], * }); * const mainVpcPublicGatewayIp = new scaleway.VpcPublicGatewayIp("mainVpcPublicGatewayIp", {}); * const mainVpcPublicGatewayDhcp = new scaleway.VpcPublicGatewayDhcp("mainVpcPublicGatewayDhcp", {subnet: "192.168.1.0/24"}); * const mainVpcPublicGateway = new scaleway.VpcPublicGateway("mainVpcPublicGateway", { * type: "VPC-GW-S", * ipId: mainVpcPublicGatewayIp.id, * }); * const mainVpcGatewayNetwork = new scaleway.VpcGatewayNetwork("mainVpcGatewayNetwork", { * gatewayId: mainVpcPublicGateway.id, * privateNetworkId: mainVpcPrivateNetwork.id, * dhcpId: mainVpcPublicGatewayDhcp.id, * cleanupDhcp: true, * enableMasquerade: true, * }, { * dependsOn: [ * mainVpcPublicGatewayIp, * mainVpcPrivateNetwork, * ], * }); * const mainVpcPublicGatewayDhcpReservation = new scaleway.VpcPublicGatewayDhcpReservation("mainVpcPublicGatewayDhcpReservation", { * gatewayNetworkId: mainVpcGatewayNetwork.id, * macAddress: mainInstanceServer.privateNetworks.apply(privateNetworks => privateNetworks?.[0]?.macAddress), * ipAddress: "192.168.1.1", * }); * ``` * * ## Import * * Public Gateway DHCP reservation configurations can be imported using `{zone}/{id}`, e.g. * * bash * * ```sh * $ pulumi import scaleway:index/vpcPublicGatewayDhcpReservation:VpcPublicGatewayDhcpReservation main fr-par-1/11111111-1111-1111-1111-111111111111 * ``` */ export declare class VpcPublicGatewayDhcpReservation extends pulumi.CustomResource { /** * Get an existing VpcPublicGatewayDhcpReservation resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: VpcPublicGatewayDhcpReservationState, opts?: pulumi.CustomResourceOptions): VpcPublicGatewayDhcpReservation; /** * Returns true if the given object is an instance of VpcPublicGatewayDhcpReservation. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is VpcPublicGatewayDhcpReservation; /** * The date and time of the creation of the Public Gateway DHCP configuration. */ readonly createdAt: pulumi.Output; /** * The ID of the owning GatewayNetwork. */ readonly gatewayNetworkId: pulumi.Output; /** * The hostname of the client machine. */ readonly hostname: pulumi.Output; /** * The IP address to give to the machine. */ readonly ipAddress: pulumi.Output; /** * The MAC address for the static entry. */ readonly macAddress: pulumi.Output; /** * The reservation type, either static (DHCP reservation) or dynamic (DHCP lease). Possible values are `reservation` and `lease`. */ readonly type: pulumi.Output; /** * The date and time of the last update of the Public Gateway DHCP configuration. */ readonly updatedAt: pulumi.Output; /** * `zone`) The zone in which the public gateway DHCP config should be created. */ readonly zone: pulumi.Output; /** * Create a VpcPublicGatewayDhcpReservation resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: VpcPublicGatewayDhcpReservationArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering VpcPublicGatewayDhcpReservation resources. */ export interface VpcPublicGatewayDhcpReservationState { /** * The date and time of the creation of the Public Gateway DHCP configuration. */ createdAt?: pulumi.Input; /** * The ID of the owning GatewayNetwork. */ gatewayNetworkId?: pulumi.Input; /** * The hostname of the client machine. */ hostname?: pulumi.Input; /** * The IP address to give to the machine. */ ipAddress?: pulumi.Input; /** * The MAC address for the static entry. */ macAddress?: pulumi.Input; /** * The reservation type, either static (DHCP reservation) or dynamic (DHCP lease). Possible values are `reservation` and `lease`. */ type?: pulumi.Input; /** * The date and time of the last update of the Public Gateway DHCP configuration. */ updatedAt?: pulumi.Input; /** * `zone`) The zone in which the public gateway DHCP config should be created. */ zone?: pulumi.Input; } /** * The set of arguments for constructing a VpcPublicGatewayDhcpReservation resource. */ export interface VpcPublicGatewayDhcpReservationArgs { /** * The ID of the owning GatewayNetwork. */ gatewayNetworkId: pulumi.Input; /** * The IP address to give to the machine. */ ipAddress: pulumi.Input; /** * The MAC address for the static entry. */ macAddress: pulumi.Input; /** * `zone`) The zone in which the public gateway DHCP config should be created. */ zone?: pulumi.Input; }