scaleway.network.getPublicGatewayDhcpReservation
Explore with Pulumi AI
Important: The data source
scaleway.network.PublicGatewayDhcpReservationhas been deprecated and will no longer be supported. In 2023, DHCP functionality was moved from Public Gateways to Private Networks, DHCP resources are now no longer needed. You can use IPAM to manage your IPs. For more information, please refer to the dedicated guide.
Gets information about a DHCP entry. For further information, please see the API documentation.
Example Dynamic
import * as pulumi from "@pulumi/pulumi";
import * as scaleway from "@pulumi/scaleway";
import * as scaleway from "@pulumiverse/scaleway";
const main = new scaleway.network.PrivateNetwork("main", {});
const mainServer = new scaleway.instance.Server("main", {
    image: "ubuntu_jammy",
    type: "DEV1-S",
    zone: "fr-par-1",
});
const mainPrivateNic = new scaleway.instance.PrivateNic("main", {
    serverId: mainServer.id,
    privateNetworkId: main.id,
});
const mainPublicGatewayIp = new scaleway.network.PublicGatewayIp("main", {});
const mainPublicGatewayDhcp = new scaleway.network.PublicGatewayDhcp("main", {subnet: "192.168.1.0/24"});
const mainPublicGateway = new scaleway.network.PublicGateway("main", {
    name: "foobar",
    type: "VPC-GW-S",
    ipId: mainPublicGatewayIp.id,
});
const mainGatewayNetwork = new scaleway.network.GatewayNetwork("main", {
    gatewayId: mainPublicGateway.id,
    privateNetworkId: main.id,
    dhcpId: mainPublicGatewayDhcp.id,
    cleanupDhcp: true,
    enableMasquerade: true,
});
//# Retrieve the dynamic entries generated by mac address & gateway network
const byMacAddressAndGwNetwork = scaleway.network.getPublicGatewayDhcpReservationOutput({
    macAddress: mainPrivateNic.macAddress,
    gatewayNetworkId: mainGatewayNetwork.id,
});
import pulumi
import pulumi_scaleway as scaleway
import pulumiverse_scaleway as scaleway
main = scaleway.network.PrivateNetwork("main")
main_server = scaleway.instance.Server("main",
    image="ubuntu_jammy",
    type="DEV1-S",
    zone="fr-par-1")
main_private_nic = scaleway.instance.PrivateNic("main",
    server_id=main_server.id,
    private_network_id=main.id)
main_public_gateway_ip = scaleway.network.PublicGatewayIp("main")
main_public_gateway_dhcp = scaleway.network.PublicGatewayDhcp("main", subnet="192.168.1.0/24")
main_public_gateway = scaleway.network.PublicGateway("main",
    name="foobar",
    type="VPC-GW-S",
    ip_id=main_public_gateway_ip.id)
main_gateway_network = scaleway.network.GatewayNetwork("main",
    gateway_id=main_public_gateway.id,
    private_network_id=main.id,
    dhcp_id=main_public_gateway_dhcp.id,
    cleanup_dhcp=True,
    enable_masquerade=True)
## Retrieve the dynamic entries generated by mac address & gateway network
by_mac_address_and_gw_network = scaleway.network.get_public_gateway_dhcp_reservation_output(mac_address=main_private_nic.mac_address,
    gateway_network_id=main_gateway_network.id)
package main
import (
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
	"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance"
	"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		main, err := network.NewPrivateNetwork(ctx, "main", nil)
		if err != nil {
			return err
		}
		mainServer, err := instance.NewServer(ctx, "main", &instance.ServerArgs{
			Image: pulumi.String("ubuntu_jammy"),
			Type:  pulumi.String("DEV1-S"),
			Zone:  pulumi.String("fr-par-1"),
		})
		if err != nil {
			return err
		}
		mainPrivateNic, err := instance.NewPrivateNic(ctx, "main", &instance.PrivateNicArgs{
			ServerId:         mainServer.ID(),
			PrivateNetworkId: main.ID(),
		})
		if err != nil {
			return err
		}
		mainPublicGatewayIp, err := network.NewPublicGatewayIp(ctx, "main", nil)
		if err != nil {
			return err
		}
		mainPublicGatewayDhcp, err := network.NewPublicGatewayDhcp(ctx, "main", &network.PublicGatewayDhcpArgs{
			Subnet: pulumi.String("192.168.1.0/24"),
		})
		if err != nil {
			return err
		}
		mainPublicGateway, err := network.NewPublicGateway(ctx, "main", &network.PublicGatewayArgs{
			Name: pulumi.String("foobar"),
			Type: pulumi.String("VPC-GW-S"),
			IpId: mainPublicGatewayIp.ID(),
		})
		if err != nil {
			return err
		}
		mainGatewayNetwork, err := network.NewGatewayNetwork(ctx, "main", &network.GatewayNetworkArgs{
			GatewayId:        mainPublicGateway.ID(),
			PrivateNetworkId: main.ID(),
			DhcpId:           mainPublicGatewayDhcp.ID(),
			CleanupDhcp:      pulumi.Bool(true),
			EnableMasquerade: pulumi.Bool(true),
		})
		if err != nil {
			return err
		}
		// # Retrieve the dynamic entries generated by mac address & gateway network
		_ = network.LookupPublicGatewayDhcpReservationOutput(ctx, network.GetPublicGatewayDhcpReservationOutputArgs{
			MacAddress:       mainPrivateNic.MacAddress,
			GatewayNetworkId: mainGatewayNetwork.ID(),
		}, nil)
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Scaleway = Pulumi.Scaleway;
using Scaleway = Pulumiverse.Scaleway;
return await Deployment.RunAsync(() => 
{
    var main = new Scaleway.Network.PrivateNetwork("main");
    var mainServer = new Scaleway.Instance.Server("main", new()
    {
        Image = "ubuntu_jammy",
        Type = "DEV1-S",
        Zone = "fr-par-1",
    });
    var mainPrivateNic = new Scaleway.Instance.PrivateNic("main", new()
    {
        ServerId = mainServer.Id,
        PrivateNetworkId = main.Id,
    });
    var mainPublicGatewayIp = new Scaleway.Network.PublicGatewayIp("main");
    var mainPublicGatewayDhcp = new Scaleway.Network.PublicGatewayDhcp("main", new()
    {
        Subnet = "192.168.1.0/24",
    });
    var mainPublicGateway = new Scaleway.Network.PublicGateway("main", new()
    {
        Name = "foobar",
        Type = "VPC-GW-S",
        IpId = mainPublicGatewayIp.Id,
    });
    var mainGatewayNetwork = new Scaleway.Network.GatewayNetwork("main", new()
    {
        GatewayId = mainPublicGateway.Id,
        PrivateNetworkId = main.Id,
        DhcpId = mainPublicGatewayDhcp.Id,
        CleanupDhcp = true,
        EnableMasquerade = true,
    });
    //# Retrieve the dynamic entries generated by mac address & gateway network
    var byMacAddressAndGwNetwork = Scaleway.Network.GetPublicGatewayDhcpReservation.Invoke(new()
    {
        MacAddress = mainPrivateNic.MacAddress,
        GatewayNetworkId = mainGatewayNetwork.Id,
    });
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.scaleway.network.PrivateNetwork;
import com.pulumi.scaleway.instance.Server;
import com.pulumi.scaleway.instance.ServerArgs;
import com.pulumi.scaleway.instance.PrivateNic;
import com.pulumi.scaleway.instance.PrivateNicArgs;
import com.pulumi.scaleway.network.PublicGatewayIp;
import com.pulumi.scaleway.network.PublicGatewayDhcp;
import com.pulumi.scaleway.network.PublicGatewayDhcpArgs;
import com.pulumi.scaleway.network.PublicGateway;
import com.pulumi.scaleway.network.PublicGatewayArgs;
import com.pulumi.scaleway.network.GatewayNetwork;
import com.pulumi.scaleway.network.GatewayNetworkArgs;
import com.pulumi.scaleway.network.NetworkFunctions;
import com.pulumi.scaleway.network.inputs.GetPublicGatewayDhcpReservationArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        var main = new PrivateNetwork("main");
        var mainServer = new Server("mainServer", ServerArgs.builder()
            .image("ubuntu_jammy")
            .type("DEV1-S")
            .zone("fr-par-1")
            .build());
        var mainPrivateNic = new PrivateNic("mainPrivateNic", PrivateNicArgs.builder()
            .serverId(mainServer.id())
            .privateNetworkId(main.id())
            .build());
        var mainPublicGatewayIp = new PublicGatewayIp("mainPublicGatewayIp");
        var mainPublicGatewayDhcp = new PublicGatewayDhcp("mainPublicGatewayDhcp", PublicGatewayDhcpArgs.builder()
            .subnet("192.168.1.0/24")
            .build());
        var mainPublicGateway = new PublicGateway("mainPublicGateway", PublicGatewayArgs.builder()
            .name("foobar")
            .type("VPC-GW-S")
            .ipId(mainPublicGatewayIp.id())
            .build());
        var mainGatewayNetwork = new GatewayNetwork("mainGatewayNetwork", GatewayNetworkArgs.builder()
            .gatewayId(mainPublicGateway.id())
            .privateNetworkId(main.id())
            .dhcpId(mainPublicGatewayDhcp.id())
            .cleanupDhcp(true)
            .enableMasquerade(true)
            .build());
        //# Retrieve the dynamic entries generated by mac address & gateway network
        final var byMacAddressAndGwNetwork = NetworkFunctions.getPublicGatewayDhcpReservation(GetPublicGatewayDhcpReservationArgs.builder()
            .macAddress(mainPrivateNic.macAddress())
            .gatewayNetworkId(mainGatewayNetwork.id())
            .build());
    }
}
resources:
  main:
    type: scaleway:network:PrivateNetwork
  mainServer:
    type: scaleway:instance:Server
    name: main
    properties:
      image: ubuntu_jammy
      type: DEV1-S
      zone: fr-par-1
  mainPrivateNic:
    type: scaleway:instance:PrivateNic
    name: main
    properties:
      serverId: ${mainServer.id}
      privateNetworkId: ${main.id}
  mainPublicGatewayIp:
    type: scaleway:network:PublicGatewayIp
    name: main
  mainPublicGatewayDhcp:
    type: scaleway:network:PublicGatewayDhcp
    name: main
    properties:
      subnet: 192.168.1.0/24
  mainPublicGateway:
    type: scaleway:network:PublicGateway
    name: main
    properties:
      name: foobar
      type: VPC-GW-S
      ipId: ${mainPublicGatewayIp.id}
  mainGatewayNetwork:
    type: scaleway:network:GatewayNetwork
    name: main
    properties:
      gatewayId: ${mainPublicGateway.id}
      privateNetworkId: ${main.id}
      dhcpId: ${mainPublicGatewayDhcp.id}
      cleanupDhcp: true
      enableMasquerade: true
variables:
  ## Retrieve the dynamic entries generated by mac address & gateway network
  byMacAddressAndGwNetwork:
    fn::invoke:
      function: scaleway:network:getPublicGatewayDhcpReservation
      arguments:
        macAddress: ${mainPrivateNic.macAddress}
        gatewayNetworkId: ${mainGatewayNetwork.id}
Example Static and PAT Rule
import * as pulumi from "@pulumi/pulumi";
import * as scaleway from "@pulumi/scaleway";
import * as scaleway from "@pulumiverse/scaleway";
const main = new scaleway.network.PrivateNetwork("main", {});
const mainSecurityGroup = new scaleway.instance.SecurityGroup("main", {
    inboundDefaultPolicy: "drop",
    outboundDefaultPolicy: "accept",
    inboundRules: [{
        action: "accept",
        port: 22,
    }],
});
const mainServer = new scaleway.instance.Server("main", {
    image: "ubuntu_jammy",
    type: "DEV1-S",
    zone: "fr-par-1",
    securityGroupId: mainSecurityGroup.id,
});
const mainPrivateNic = new scaleway.instance.PrivateNic("main", {
    serverId: mainServer.id,
    privateNetworkId: main.id,
});
const mainPublicGatewayIp = new scaleway.network.PublicGatewayIp("main", {});
const mainPublicGatewayDhcp = new scaleway.network.PublicGatewayDhcp("main", {subnet: "192.168.1.0/24"});
const mainPublicGateway = new scaleway.network.PublicGateway("main", {
    name: "foobar",
    type: "VPC-GW-S",
    ipId: mainPublicGatewayIp.id,
});
const mainGatewayNetwork = new scaleway.network.GatewayNetwork("main", {
    gatewayId: mainPublicGateway.id,
    privateNetworkId: main.id,
    dhcpId: mainPublicGatewayDhcp.id,
    cleanupDhcp: true,
    enableMasquerade: true,
});
const mainPublicGatewayDhcpReservation = new scaleway.network.PublicGatewayDhcpReservation("main", {
    gatewayNetworkId: mainGatewayNetwork.id,
    macAddress: mainPrivateNic.macAddress,
    ipAddress: "192.168.1.4",
});
//## VPC PAT RULE
const mainPublicGatewayPatRule = new scaleway.network.PublicGatewayPatRule("main", {
    gatewayId: mainPublicGateway.id,
    privateIp: mainPublicGatewayDhcpReservation.ipAddress,
    privatePort: 22,
    publicPort: 2222,
    protocol: "tcp",
});
const byId = scaleway.network.getPublicGatewayDhcpReservationOutput({
    reservationId: mainPublicGatewayDhcpReservation.id,
});
import pulumi
import pulumi_scaleway as scaleway
import pulumiverse_scaleway as scaleway
main = scaleway.network.PrivateNetwork("main")
main_security_group = scaleway.instance.SecurityGroup("main",
    inbound_default_policy="drop",
    outbound_default_policy="accept",
    inbound_rules=[{
        "action": "accept",
        "port": 22,
    }])
main_server = scaleway.instance.Server("main",
    image="ubuntu_jammy",
    type="DEV1-S",
    zone="fr-par-1",
    security_group_id=main_security_group.id)
main_private_nic = scaleway.instance.PrivateNic("main",
    server_id=main_server.id,
    private_network_id=main.id)
main_public_gateway_ip = scaleway.network.PublicGatewayIp("main")
main_public_gateway_dhcp = scaleway.network.PublicGatewayDhcp("main", subnet="192.168.1.0/24")
main_public_gateway = scaleway.network.PublicGateway("main",
    name="foobar",
    type="VPC-GW-S",
    ip_id=main_public_gateway_ip.id)
main_gateway_network = scaleway.network.GatewayNetwork("main",
    gateway_id=main_public_gateway.id,
    private_network_id=main.id,
    dhcp_id=main_public_gateway_dhcp.id,
    cleanup_dhcp=True,
    enable_masquerade=True)
main_public_gateway_dhcp_reservation = scaleway.network.PublicGatewayDhcpReservation("main",
    gateway_network_id=main_gateway_network.id,
    mac_address=main_private_nic.mac_address,
    ip_address="192.168.1.4")
### VPC PAT RULE
main_public_gateway_pat_rule = scaleway.network.PublicGatewayPatRule("main",
    gateway_id=main_public_gateway.id,
    private_ip=main_public_gateway_dhcp_reservation.ip_address,
    private_port=22,
    public_port=2222,
    protocol="tcp")
by_id = scaleway.network.get_public_gateway_dhcp_reservation_output(reservation_id=main_public_gateway_dhcp_reservation.id)
package main
import (
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
	"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance"
	"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		main, err := network.NewPrivateNetwork(ctx, "main", nil)
		if err != nil {
			return err
		}
		mainSecurityGroup, err := instance.NewSecurityGroup(ctx, "main", &instance.SecurityGroupArgs{
			InboundDefaultPolicy:  pulumi.String("drop"),
			OutboundDefaultPolicy: pulumi.String("accept"),
			InboundRules: instance.SecurityGroupInboundRuleArray{
				&instance.SecurityGroupInboundRuleArgs{
					Action: pulumi.String("accept"),
					Port:   pulumi.Int(22),
				},
			},
		})
		if err != nil {
			return err
		}
		mainServer, err := instance.NewServer(ctx, "main", &instance.ServerArgs{
			Image:           pulumi.String("ubuntu_jammy"),
			Type:            pulumi.String("DEV1-S"),
			Zone:            pulumi.String("fr-par-1"),
			SecurityGroupId: mainSecurityGroup.ID(),
		})
		if err != nil {
			return err
		}
		mainPrivateNic, err := instance.NewPrivateNic(ctx, "main", &instance.PrivateNicArgs{
			ServerId:         mainServer.ID(),
			PrivateNetworkId: main.ID(),
		})
		if err != nil {
			return err
		}
		mainPublicGatewayIp, err := network.NewPublicGatewayIp(ctx, "main", nil)
		if err != nil {
			return err
		}
		mainPublicGatewayDhcp, err := network.NewPublicGatewayDhcp(ctx, "main", &network.PublicGatewayDhcpArgs{
			Subnet: pulumi.String("192.168.1.0/24"),
		})
		if err != nil {
			return err
		}
		mainPublicGateway, err := network.NewPublicGateway(ctx, "main", &network.PublicGatewayArgs{
			Name: pulumi.String("foobar"),
			Type: pulumi.String("VPC-GW-S"),
			IpId: mainPublicGatewayIp.ID(),
		})
		if err != nil {
			return err
		}
		mainGatewayNetwork, err := network.NewGatewayNetwork(ctx, "main", &network.GatewayNetworkArgs{
			GatewayId:        mainPublicGateway.ID(),
			PrivateNetworkId: main.ID(),
			DhcpId:           mainPublicGatewayDhcp.ID(),
			CleanupDhcp:      pulumi.Bool(true),
			EnableMasquerade: pulumi.Bool(true),
		})
		if err != nil {
			return err
		}
		mainPublicGatewayDhcpReservation, err := network.NewPublicGatewayDhcpReservation(ctx, "main", &network.PublicGatewayDhcpReservationArgs{
			GatewayNetworkId: mainGatewayNetwork.ID(),
			MacAddress:       mainPrivateNic.MacAddress,
			IpAddress:        pulumi.String("192.168.1.4"),
		})
		if err != nil {
			return err
		}
		// ## VPC PAT RULE
		_, err = network.NewPublicGatewayPatRule(ctx, "main", &network.PublicGatewayPatRuleArgs{
			GatewayId:   mainPublicGateway.ID(),
			PrivateIp:   mainPublicGatewayDhcpReservation.IpAddress,
			PrivatePort: pulumi.Int(22),
			PublicPort:  pulumi.Int(2222),
			Protocol:    pulumi.String("tcp"),
		})
		if err != nil {
			return err
		}
		_ = network.LookupPublicGatewayDhcpReservationOutput(ctx, network.GetPublicGatewayDhcpReservationOutputArgs{
			ReservationId: mainPublicGatewayDhcpReservation.ID(),
		}, nil)
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Scaleway = Pulumi.Scaleway;
using Scaleway = Pulumiverse.Scaleway;
return await Deployment.RunAsync(() => 
{
    var main = new Scaleway.Network.PrivateNetwork("main");
    var mainSecurityGroup = new Scaleway.Instance.SecurityGroup("main", new()
    {
        InboundDefaultPolicy = "drop",
        OutboundDefaultPolicy = "accept",
        InboundRules = new[]
        {
            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs
            {
                Action = "accept",
                Port = 22,
            },
        },
    });
    var mainServer = new Scaleway.Instance.Server("main", new()
    {
        Image = "ubuntu_jammy",
        Type = "DEV1-S",
        Zone = "fr-par-1",
        SecurityGroupId = mainSecurityGroup.Id,
    });
    var mainPrivateNic = new Scaleway.Instance.PrivateNic("main", new()
    {
        ServerId = mainServer.Id,
        PrivateNetworkId = main.Id,
    });
    var mainPublicGatewayIp = new Scaleway.Network.PublicGatewayIp("main");
    var mainPublicGatewayDhcp = new Scaleway.Network.PublicGatewayDhcp("main", new()
    {
        Subnet = "192.168.1.0/24",
    });
    var mainPublicGateway = new Scaleway.Network.PublicGateway("main", new()
    {
        Name = "foobar",
        Type = "VPC-GW-S",
        IpId = mainPublicGatewayIp.Id,
    });
    var mainGatewayNetwork = new Scaleway.Network.GatewayNetwork("main", new()
    {
        GatewayId = mainPublicGateway.Id,
        PrivateNetworkId = main.Id,
        DhcpId = mainPublicGatewayDhcp.Id,
        CleanupDhcp = true,
        EnableMasquerade = true,
    });
    var mainPublicGatewayDhcpReservation = new Scaleway.Network.PublicGatewayDhcpReservation("main", new()
    {
        GatewayNetworkId = mainGatewayNetwork.Id,
        MacAddress = mainPrivateNic.MacAddress,
        IpAddress = "192.168.1.4",
    });
    //## VPC PAT RULE
    var mainPublicGatewayPatRule = new Scaleway.Network.PublicGatewayPatRule("main", new()
    {
        GatewayId = mainPublicGateway.Id,
        PrivateIp = mainPublicGatewayDhcpReservation.IpAddress,
        PrivatePort = 22,
        PublicPort = 2222,
        Protocol = "tcp",
    });
    var byId = Scaleway.Network.GetPublicGatewayDhcpReservation.Invoke(new()
    {
        ReservationId = mainPublicGatewayDhcpReservation.Id,
    });
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.scaleway.network.PrivateNetwork;
import com.pulumi.scaleway.instance.SecurityGroup;
import com.pulumi.scaleway.instance.SecurityGroupArgs;
import com.pulumi.scaleway.instance.inputs.SecurityGroupInboundRuleArgs;
import com.pulumi.scaleway.instance.Server;
import com.pulumi.scaleway.instance.ServerArgs;
import com.pulumi.scaleway.instance.PrivateNic;
import com.pulumi.scaleway.instance.PrivateNicArgs;
import com.pulumi.scaleway.network.PublicGatewayIp;
import com.pulumi.scaleway.network.PublicGatewayDhcp;
import com.pulumi.scaleway.network.PublicGatewayDhcpArgs;
import com.pulumi.scaleway.network.PublicGateway;
import com.pulumi.scaleway.network.PublicGatewayArgs;
import com.pulumi.scaleway.network.GatewayNetwork;
import com.pulumi.scaleway.network.GatewayNetworkArgs;
import com.pulumi.scaleway.network.PublicGatewayDhcpReservation;
import com.pulumi.scaleway.network.PublicGatewayDhcpReservationArgs;
import com.pulumi.scaleway.network.PublicGatewayPatRule;
import com.pulumi.scaleway.network.PublicGatewayPatRuleArgs;
import com.pulumi.scaleway.network.NetworkFunctions;
import com.pulumi.scaleway.network.inputs.GetPublicGatewayDhcpReservationArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        var main = new PrivateNetwork("main");
        var mainSecurityGroup = new SecurityGroup("mainSecurityGroup", SecurityGroupArgs.builder()
            .inboundDefaultPolicy("drop")
            .outboundDefaultPolicy("accept")
            .inboundRules(SecurityGroupInboundRuleArgs.builder()
                .action("accept")
                .port("22")
                .build())
            .build());
        var mainServer = new Server("mainServer", ServerArgs.builder()
            .image("ubuntu_jammy")
            .type("DEV1-S")
            .zone("fr-par-1")
            .securityGroupId(mainSecurityGroup.id())
            .build());
        var mainPrivateNic = new PrivateNic("mainPrivateNic", PrivateNicArgs.builder()
            .serverId(mainServer.id())
            .privateNetworkId(main.id())
            .build());
        var mainPublicGatewayIp = new PublicGatewayIp("mainPublicGatewayIp");
        var mainPublicGatewayDhcp = new PublicGatewayDhcp("mainPublicGatewayDhcp", PublicGatewayDhcpArgs.builder()
            .subnet("192.168.1.0/24")
            .build());
        var mainPublicGateway = new PublicGateway("mainPublicGateway", PublicGatewayArgs.builder()
            .name("foobar")
            .type("VPC-GW-S")
            .ipId(mainPublicGatewayIp.id())
            .build());
        var mainGatewayNetwork = new GatewayNetwork("mainGatewayNetwork", GatewayNetworkArgs.builder()
            .gatewayId(mainPublicGateway.id())
            .privateNetworkId(main.id())
            .dhcpId(mainPublicGatewayDhcp.id())
            .cleanupDhcp(true)
            .enableMasquerade(true)
            .build());
        var mainPublicGatewayDhcpReservation = new PublicGatewayDhcpReservation("mainPublicGatewayDhcpReservation", PublicGatewayDhcpReservationArgs.builder()
            .gatewayNetworkId(mainGatewayNetwork.id())
            .macAddress(mainPrivateNic.macAddress())
            .ipAddress("192.168.1.4")
            .build());
        //## VPC PAT RULE
        var mainPublicGatewayPatRule = new PublicGatewayPatRule("mainPublicGatewayPatRule", PublicGatewayPatRuleArgs.builder()
            .gatewayId(mainPublicGateway.id())
            .privateIp(mainPublicGatewayDhcpReservation.ipAddress())
            .privatePort(22)
            .publicPort(2222)
            .protocol("tcp")
            .build());
        final var byId = NetworkFunctions.getPublicGatewayDhcpReservation(GetPublicGatewayDhcpReservationArgs.builder()
            .reservationId(mainPublicGatewayDhcpReservation.id())
            .build());
    }
}
resources:
  main:
    type: scaleway:network:PrivateNetwork
  mainSecurityGroup:
    type: scaleway:instance:SecurityGroup
    name: main
    properties:
      inboundDefaultPolicy: drop
      outboundDefaultPolicy: accept
      inboundRules:
        - action: accept
          port: '22'
  mainServer:
    type: scaleway:instance:Server
    name: main
    properties:
      image: ubuntu_jammy
      type: DEV1-S
      zone: fr-par-1
      securityGroupId: ${mainSecurityGroup.id}
  mainPrivateNic:
    type: scaleway:instance:PrivateNic
    name: main
    properties:
      serverId: ${mainServer.id}
      privateNetworkId: ${main.id}
  mainPublicGatewayIp:
    type: scaleway:network:PublicGatewayIp
    name: main
  mainPublicGatewayDhcp:
    type: scaleway:network:PublicGatewayDhcp
    name: main
    properties:
      subnet: 192.168.1.0/24
  mainPublicGateway:
    type: scaleway:network:PublicGateway
    name: main
    properties:
      name: foobar
      type: VPC-GW-S
      ipId: ${mainPublicGatewayIp.id}
  mainGatewayNetwork:
    type: scaleway:network:GatewayNetwork
    name: main
    properties:
      gatewayId: ${mainPublicGateway.id}
      privateNetworkId: ${main.id}
      dhcpId: ${mainPublicGatewayDhcp.id}
      cleanupDhcp: true
      enableMasquerade: true
  mainPublicGatewayDhcpReservation:
    type: scaleway:network:PublicGatewayDhcpReservation
    name: main
    properties:
      gatewayNetworkId: ${mainGatewayNetwork.id}
      macAddress: ${mainPrivateNic.macAddress}
      ipAddress: 192.168.1.4
  ### VPC PAT RULE
  mainPublicGatewayPatRule:
    type: scaleway:network:PublicGatewayPatRule
    name: main
    properties:
      gatewayId: ${mainPublicGateway.id}
      privateIp: ${mainPublicGatewayDhcpReservation.ipAddress}
      privatePort: 22
      publicPort: 2222
      protocol: tcp
variables:
  byId:
    fn::invoke:
      function: scaleway:network:getPublicGatewayDhcpReservation
      arguments:
        reservationId: ${mainPublicGatewayDhcpReservation.id}
Using getPublicGatewayDhcpReservation
Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.
function getPublicGatewayDhcpReservation(args: GetPublicGatewayDhcpReservationArgs, opts?: InvokeOptions): Promise<GetPublicGatewayDhcpReservationResult>
function getPublicGatewayDhcpReservationOutput(args: GetPublicGatewayDhcpReservationOutputArgs, opts?: InvokeOptions): Output<GetPublicGatewayDhcpReservationResult>def get_public_gateway_dhcp_reservation(gateway_network_id: Optional[str] = None,
                                        mac_address: Optional[str] = None,
                                        reservation_id: Optional[str] = None,
                                        wait_for_dhcp: Optional[bool] = None,
                                        zone: Optional[str] = None,
                                        opts: Optional[InvokeOptions] = None) -> GetPublicGatewayDhcpReservationResult
def get_public_gateway_dhcp_reservation_output(gateway_network_id: Optional[pulumi.Input[str]] = None,
                                        mac_address: Optional[pulumi.Input[str]] = None,
                                        reservation_id: Optional[pulumi.Input[str]] = None,
                                        wait_for_dhcp: Optional[pulumi.Input[bool]] = None,
                                        zone: Optional[pulumi.Input[str]] = None,
                                        opts: Optional[InvokeOptions] = None) -> Output[GetPublicGatewayDhcpReservationResult]func LookupPublicGatewayDhcpReservation(ctx *Context, args *LookupPublicGatewayDhcpReservationArgs, opts ...InvokeOption) (*LookupPublicGatewayDhcpReservationResult, error)
func LookupPublicGatewayDhcpReservationOutput(ctx *Context, args *LookupPublicGatewayDhcpReservationOutputArgs, opts ...InvokeOption) LookupPublicGatewayDhcpReservationResultOutput> Note: This function is named LookupPublicGatewayDhcpReservation in the Go SDK.
public static class GetPublicGatewayDhcpReservation 
{
    public static Task<GetPublicGatewayDhcpReservationResult> InvokeAsync(GetPublicGatewayDhcpReservationArgs args, InvokeOptions? opts = null)
    public static Output<GetPublicGatewayDhcpReservationResult> Invoke(GetPublicGatewayDhcpReservationInvokeArgs args, InvokeOptions? opts = null)
}public static CompletableFuture<GetPublicGatewayDhcpReservationResult> getPublicGatewayDhcpReservation(GetPublicGatewayDhcpReservationArgs args, InvokeOptions options)
public static Output<GetPublicGatewayDhcpReservationResult> getPublicGatewayDhcpReservation(GetPublicGatewayDhcpReservationArgs args, InvokeOptions options)
fn::invoke:
  function: scaleway:network/getPublicGatewayDhcpReservation:getPublicGatewayDhcpReservation
  arguments:
    # arguments dictionaryThe following arguments are supported:
- Gateway
Network stringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- Mac
Address string - The MAC address of the reservation to retrieve.
 - Reservation
Id string - The ID of the reservation (DHCP entry) to retrieve.
 - Wait
For boolDhcp  - Whether to wait for 
mac_addressto exist in DHCP. - Zone string
 zone). The zone in which the reservation exists.
- Gateway
Network stringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- Mac
Address string - The MAC address of the reservation to retrieve.
 - Reservation
Id string - The ID of the reservation (DHCP entry) to retrieve.
 - Wait
For boolDhcp  - Whether to wait for 
mac_addressto exist in DHCP. - Zone string
 zone). The zone in which the reservation exists.
- gateway
Network StringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- mac
Address String - The MAC address of the reservation to retrieve.
 - reservation
Id String - The ID of the reservation (DHCP entry) to retrieve.
 - wait
For BooleanDhcp  - Whether to wait for 
mac_addressto exist in DHCP. - zone String
 zone). The zone in which the reservation exists.
- gateway
Network stringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- mac
Address string - The MAC address of the reservation to retrieve.
 - reservation
Id string - The ID of the reservation (DHCP entry) to retrieve.
 - wait
For booleanDhcp  - Whether to wait for 
mac_addressto exist in DHCP. - zone string
 zone). The zone in which the reservation exists.
- gateway_
network_ strid  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- mac_
address str - The MAC address of the reservation to retrieve.
 - reservation_
id str - The ID of the reservation (DHCP entry) to retrieve.
 - wait_
for_ booldhcp  - Whether to wait for 
mac_addressto exist in DHCP. - zone str
 zone). The zone in which the reservation exists.
- gateway
Network StringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- mac
Address String - The MAC address of the reservation to retrieve.
 - reservation
Id String - The ID of the reservation (DHCP entry) to retrieve.
 - wait
For BooleanDhcp  - Whether to wait for 
mac_addressto exist in DHCP. - zone String
 zone). The zone in which the reservation exists.
getPublicGatewayDhcpReservation Result
The following output properties are available:
- Created
At string - Hostname string
 - Id string
 - The provider-assigned unique ID for this managed resource.
 - Ip
Address string - Type string
 - Updated
At string - Gateway
Network stringId  - Mac
Address string - Reservation
Id string - Wait
For boolDhcp  - Zone string
 
- Created
At string - Hostname string
 - Id string
 - The provider-assigned unique ID for this managed resource.
 - Ip
Address string - Type string
 - Updated
At string - Gateway
Network stringId  - Mac
Address string - Reservation
Id string - Wait
For boolDhcp  - Zone string
 
- created
At String - hostname String
 - id String
 - The provider-assigned unique ID for this managed resource.
 - ip
Address String - type String
 - updated
At String - gateway
Network StringId  - mac
Address String - reservation
Id String - wait
For BooleanDhcp  - zone String
 
- created
At string - hostname string
 - id string
 - The provider-assigned unique ID for this managed resource.
 - ip
Address string - type string
 - updated
At string - gateway
Network stringId  - mac
Address string - reservation
Id string - wait
For booleanDhcp  - zone string
 
- created_
at str - hostname str
 - id str
 - The provider-assigned unique ID for this managed resource.
 - ip_
address str - type str
 - updated_
at str - gateway_
network_ strid  - mac_
address str - reservation_
id str - wait_
for_ booldhcp  - zone str
 
- created
At String - hostname String
 - id String
 - The provider-assigned unique ID for this managed resource.
 - ip
Address String - type String
 - updated
At String - gateway
Network StringId  - mac
Address String - reservation
Id String - wait
For BooleanDhcp  - zone String
 
Package Details
- Repository
 - scaleway pulumiverse/pulumi-scaleway
 - License
 - Apache-2.0
 - Notes
 - This Pulumi package is based on the 
scalewayTerraform Provider.