1. Packages
  2. Equinix
  3. API Docs
  4. networkedge
  5. Device
Equinix v0.19.0 published on Thursday, Oct 24, 2024 by Equinix

equinix.networkedge.Device

Explore with Pulumi AI

equinix logo
Equinix v0.19.0 published on Thursday, Oct 24, 2024 by Equinix

    Resource equinix.networkedge.Device allows creation and management of Equinix Network Edge virtual network devices.

    Network Edge virtual network devices can be created in two modes:

    • managed - (default) Where Equinix manages connectivity and services in the device and customer gets limited access to the device.
    • self-configured - Where customer provisions and manages own services in the device with less restricted access. Some device types are offered only in this mode.

    In addition to management modes, there are two software license modes available:

    • subscription - Where Equinix provides software license, including end-to-end support, and bills for the service respectively.
    • BYOL - [bring your own license] Where customer brings his own, already procured device software license. There are no charges associated with such license. It is the only licensing mode for self-configured devices.

    Example Usage

    example 1

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    
    return await Deployment.RunAsync(() => 
    {
        var dc = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            MetroCode = "DC",
        });
    
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            MetroCode = "SV",
        });
    
        var csr1000VHa = new Equinix.NetworkEdge.Device("csr1000vHa", new()
        {
            Name = "tf-csr1000v-p",
            Throughput = 500,
            ThroughputUnit = Equinix.NetworkEdge.ThroughputUnit.Mbps,
            MetroCode = dc.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "CSR1000V",
            SelfManaged = false,
            Connectivity = "INTERNET-ACCESS",
            Byol = false,
            PackageCode = "SEC",
            Notifications = new[]
            {
                "john@equinix.com",
                "marry@equinix.com",
                "fred@equinix.com",
            },
            Hostname = "csr1000v-p",
            TermLength = 12,
            AccountNumber = dc.Apply(getAccountResult => getAccountResult.Number),
            Version = "16.09.05",
            CoreCount = 2,
            SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs
            {
                Name = "tf-csr1000v-s",
                MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
                Hostname = "csr1000v-s",
                Notifications = new[]
                {
                    "john@equinix.com",
                    "marry@equinix.com",
                },
                AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		dc, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			MetroCode: "DC",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "csr1000vHa", &networkedge.DeviceArgs{
    			Name:           pulumi.String("tf-csr1000v-p"),
    			Throughput:     pulumi.Int(500),
    			ThroughputUnit: pulumi.String(networkedge.ThroughputUnitMbps),
    			MetroCode:      pulumi.String(dc.MetroCode),
    			TypeCode:       pulumi.String("CSR1000V"),
    			SelfManaged:    pulumi.Bool(false),
    			Connectivity:   pulumi.String("INTERNET-ACCESS"),
    			Byol:           pulumi.Bool(false),
    			PackageCode:    pulumi.String("SEC"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("john@equinix.com"),
    				pulumi.String("marry@equinix.com"),
    				pulumi.String("fred@equinix.com"),
    			},
    			Hostname:      pulumi.String("csr1000v-p"),
    			TermLength:    pulumi.Int(12),
    			AccountNumber: pulumi.String(dc.Number),
    			Version:       pulumi.String("16.09.05"),
    			CoreCount:     pulumi.Int(2),
    			SecondaryDevice: &networkedge.DeviceSecondaryDeviceArgs{
    				Name:      pulumi.String("tf-csr1000v-s"),
    				MetroCode: pulumi.String(sv.MetroCode),
    				Hostname:  pulumi.String("csr1000v-s"),
    				Notifications: pulumi.StringArray{
    					pulumi.String("john@equinix.com"),
    					pulumi.String("marry@equinix.com"),
    				},
    				AccountNumber: pulumi.String(sv.Number),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;
    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) {
            final var dc = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .metroCode("DC")
                .build());
    
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .metroCode("SV")
                .build());
    
            var csr1000VHa = new Device("csr1000VHa", DeviceArgs.builder()
                .name("tf-csr1000v-p")
                .throughput(500)
                .throughputUnit("Mbps")
                .metroCode(dc.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("CSR1000V")
                .selfManaged(false)
                .connectivity("INTERNET-ACCESS")
                .byol(false)
                .packageCode("SEC")
                .notifications(            
                    "john@equinix.com",
                    "marry@equinix.com",
                    "fred@equinix.com")
                .hostname("csr1000v-p")
                .termLength(12)
                .accountNumber(dc.applyValue(getAccountResult -> getAccountResult.number()))
                .version("16.09.05")
                .coreCount(2)
                .secondaryDevice(DeviceSecondaryDeviceArgs.builder()
                    .name("tf-csr1000v-s")
                    .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                    .hostname("csr1000v-s")
                    .notifications(                
                        "john@equinix.com",
                        "marry@equinix.com")
                    .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                    .build())
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    
    dc = equinix.networkedge.get_account_output(metro_code="DC")
    sv = equinix.networkedge.get_account_output(metro_code="SV")
    csr1000_v_ha = equinix.networkedge.Device("csr1000vHa",
        name="tf-csr1000v-p",
        throughput=500,
        throughput_unit=equinix.networkedge.ThroughputUnit.MBPS,
        metro_code=dc.metro_code,
        type_code="CSR1000V",
        self_managed=False,
        connectivity="INTERNET-ACCESS",
        byol=False,
        package_code="SEC",
        notifications=[
            "john@equinix.com",
            "marry@equinix.com",
            "fred@equinix.com",
        ],
        hostname="csr1000v-p",
        term_length=12,
        account_number=dc.number,
        version="16.09.05",
        core_count=2,
        secondary_device={
            "name": "tf-csr1000v-s",
            "metro_code": sv.metro_code,
            "hostname": "csr1000v-s",
            "notifications": [
                "john@equinix.com",
                "marry@equinix.com",
            ],
            "account_number": sv.number,
        })
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    
    const dc = equinix.networkedge.getAccountOutput({
        metroCode: "DC",
    });
    const sv = equinix.networkedge.getAccountOutput({
        metroCode: "SV",
    });
    const csr1000VHa = new equinix.networkedge.Device("csr1000vHa", {
        name: "tf-csr1000v-p",
        throughput: 500,
        throughputUnit: equinix.networkedge.ThroughputUnit.Mbps,
        metroCode: dc.apply(dc => dc.metroCode),
        typeCode: "CSR1000V",
        selfManaged: false,
        connectivity: "INTERNET-ACCESS",
        byol: false,
        packageCode: "SEC",
        notifications: [
            "john@equinix.com",
            "marry@equinix.com",
            "fred@equinix.com",
        ],
        hostname: "csr1000v-p",
        termLength: 12,
        accountNumber: dc.apply(dc => dc.number),
        version: "16.09.05",
        coreCount: 2,
        secondaryDevice: {
            name: "tf-csr1000v-s",
            metroCode: sv.apply(sv => sv.metroCode),
            hostname: "csr1000v-s",
            notifications: [
                "john@equinix.com",
                "marry@equinix.com",
            ],
            accountNumber: sv.apply(sv => sv.number),
        },
    });
    
    resources:
      csr1000vHa:
        type: equinix:networkedge:Device
        name: csr1000v_ha
        properties:
          name: tf-csr1000v-p
          throughput: 500
          throughputUnit: Mbps
          metroCode: ${dc.metroCode}
          typeCode: CSR1000V
          selfManaged: false
          connectivity: INTERNET-ACCESS
          byol: false
          packageCode: SEC
          notifications:
            - john@equinix.com
            - marry@equinix.com
            - fred@equinix.com
          hostname: csr1000v-p
          termLength: 12
          accountNumber: ${dc.number}
          version: 16.09.05
          coreCount: 2
          secondaryDevice:
            name: tf-csr1000v-s
            metroCode: ${sv.metroCode}
            hostname: csr1000v-s
            notifications:
              - john@equinix.com
              - marry@equinix.com
            accountNumber: ${sv.number}
    variables:
      # Create pair of redundant, managed CSR1000V routers with license subscription
      # in two different metro locations
      dc:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            metroCode: DC
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            metroCode: SV
    

    example 2

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    
    return await Deployment.RunAsync(() => 
    {
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            MetroCode = "SV",
        });
    
        var panwCluster = new Equinix.NetworkEdge.Device("panwCluster", new()
        {
            Name = "tf-panw",
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "PA-VM",
            SelfManaged = true,
            Byol = true,
            PackageCode = "VM100",
            Notifications = new[]
            {
                "john@equinix.com",
                "marry@equinix.com",
                "fred@equinix.com",
            },
            TermLength = 12,
            AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            Version = "10.1.3",
            InterfaceCount = 10,
            CoreCount = 2,
            SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs
            {
                Username = "test",
                KeyName = "test-key",
            },
            AclTemplateId = "0bff6e05-f0e7-44cd-804a-25b92b835f8b",
            ClusterDetails = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsArgs
            {
                ClusterName = "tf-panw-cluster",
                Node0 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0Args
                {
                    VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0VendorConfigurationArgs
                    {
                        Hostname = "panw-node0",
                    },
                    LicenseToken = "licenseToken",
                },
                Node1 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1Args
                {
                    VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1VendorConfigurationArgs
                    {
                        Hostname = "panw-node1",
                    },
                    LicenseToken = "licenseToken",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "panwCluster", &networkedge.DeviceArgs{
    			Name:        pulumi.String("tf-panw"),
    			MetroCode:   pulumi.String(sv.MetroCode),
    			TypeCode:    pulumi.String("PA-VM"),
    			SelfManaged: pulumi.Bool(true),
    			Byol:        pulumi.Bool(true),
    			PackageCode: pulumi.String("VM100"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("john@equinix.com"),
    				pulumi.String("marry@equinix.com"),
    				pulumi.String("fred@equinix.com"),
    			},
    			TermLength:     pulumi.Int(12),
    			AccountNumber:  pulumi.String(sv.Number),
    			Version:        pulumi.String("10.1.3"),
    			InterfaceCount: pulumi.Int(10),
    			CoreCount:      pulumi.Int(2),
    			SshKey: &networkedge.DeviceSshKeyArgs{
    				Username: pulumi.String("test"),
    				KeyName:  pulumi.String("test-key"),
    			},
    			AclTemplateId: pulumi.String("0bff6e05-f0e7-44cd-804a-25b92b835f8b"),
    			ClusterDetails: &networkedge.DeviceClusterDetailsArgs{
    				ClusterName: pulumi.String("tf-panw-cluster"),
    				Node0: &networkedge.DeviceClusterDetailsNode0Args{
    					VendorConfiguration: &networkedge.DeviceClusterDetailsNode0VendorConfigurationArgs{
    						Hostname: pulumi.String("panw-node0"),
    					},
    					LicenseToken: pulumi.String("licenseToken"),
    				},
    				Node1: &networkedge.DeviceClusterDetailsNode1Args{
    					VendorConfiguration: &networkedge.DeviceClusterDetailsNode1VendorConfigurationArgs{
    						Hostname: pulumi.String("panw-node1"),
    					},
    					LicenseToken: pulumi.String("licenseToken"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0Args;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0VendorConfigurationArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1Args;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1VendorConfigurationArgs;
    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) {
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .metroCode("SV")
                .build());
    
            var panwCluster = new Device("panwCluster", DeviceArgs.builder()
                .name("tf-panw")
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("PA-VM")
                .selfManaged(true)
                .byol(true)
                .packageCode("VM100")
                .notifications(            
                    "john@equinix.com",
                    "marry@equinix.com",
                    "fred@equinix.com")
                .termLength(12)
                .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                .version("10.1.3")
                .interfaceCount(10)
                .coreCount(2)
                .sshKey(DeviceSshKeyArgs.builder()
                    .username("test")
                    .keyName("test-key")
                    .build())
                .aclTemplateId("0bff6e05-f0e7-44cd-804a-25b92b835f8b")
                .clusterDetails(DeviceClusterDetailsArgs.builder()
                    .clusterName("tf-panw-cluster")
                    .node0(DeviceClusterDetailsNode0Args.builder()
                        .vendorConfiguration(DeviceClusterDetailsNode0VendorConfigurationArgs.builder()
                            .hostname("panw-node0")
                            .build())
                        .licenseToken("licenseToken")
                        .build())
                    .node1(DeviceClusterDetailsNode1Args.builder()
                        .vendorConfiguration(DeviceClusterDetailsNode1VendorConfigurationArgs.builder()
                            .hostname("panw-node1")
                            .build())
                        .licenseToken("licenseToken")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    
    sv = equinix.networkedge.get_account_output(metro_code="SV")
    panw_cluster = equinix.networkedge.Device("panwCluster",
        name="tf-panw",
        metro_code=sv.metro_code,
        type_code="PA-VM",
        self_managed=True,
        byol=True,
        package_code="VM100",
        notifications=[
            "john@equinix.com",
            "marry@equinix.com",
            "fred@equinix.com",
        ],
        term_length=12,
        account_number=sv.number,
        version="10.1.3",
        interface_count=10,
        core_count=2,
        ssh_key={
            "username": "test",
            "key_name": "test-key",
        },
        acl_template_id="0bff6e05-f0e7-44cd-804a-25b92b835f8b",
        cluster_details={
            "cluster_name": "tf-panw-cluster",
            "node0": {
                "vendor_configuration": {
                    "hostname": "panw-node0",
                },
                "license_token": "licenseToken",
            },
            "node1": {
                "vendor_configuration": {
                    "hostname": "panw-node1",
                },
                "license_token": "licenseToken",
            },
        })
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    
    const sv = equinix.networkedge.getAccountOutput({
        metroCode: "SV",
    });
    const panwCluster = new equinix.networkedge.Device("panwCluster", {
        name: "tf-panw",
        metroCode: sv.apply(sv => sv.metroCode),
        typeCode: "PA-VM",
        selfManaged: true,
        byol: true,
        packageCode: "VM100",
        notifications: [
            "john@equinix.com",
            "marry@equinix.com",
            "fred@equinix.com",
        ],
        termLength: 12,
        accountNumber: sv.apply(sv => sv.number),
        version: "10.1.3",
        interfaceCount: 10,
        coreCount: 2,
        sshKey: {
            username: "test",
            keyName: "test-key",
        },
        aclTemplateId: "0bff6e05-f0e7-44cd-804a-25b92b835f8b",
        clusterDetails: {
            clusterName: "tf-panw-cluster",
            node0: {
                vendorConfiguration: {
                    hostname: "panw-node0",
                },
                licenseToken: "licenseToken",
            },
            node1: {
                vendorConfiguration: {
                    hostname: "panw-node1",
                },
                licenseToken: "licenseToken",
            },
        },
    });
    
    resources:
      panwCluster:
        type: equinix:networkedge:Device
        name: panw_cluster
        properties:
          name: tf-panw
          metroCode: ${sv.metroCode}
          typeCode: PA-VM
          selfManaged: true
          byol: true
          packageCode: VM100
          notifications:
            - john@equinix.com
            - marry@equinix.com
            - fred@equinix.com
          termLength: 12
          accountNumber: ${sv.number}
          version: 10.1.3
          interfaceCount: 10
          coreCount: 2
          sshKey:
            username: test
            keyName: test-key
          aclTemplateId: 0bff6e05-f0e7-44cd-804a-25b92b835f8b
          clusterDetails:
            clusterName: tf-panw-cluster
            node0:
              vendorConfiguration:
                hostname: panw-node0
              licenseToken: licenseToken
            node1:
              vendorConfiguration:
                hostname: panw-node1
              licenseToken: licenseToken
    variables:
      # Create self configured PANW cluster with BYOL license
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            metroCode: SV
    

    example 3

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    using Std = Pulumi.Std;
    
    return await Deployment.RunAsync(() => 
    {
        var config = new Config();
        var filepath = config.Get("filepath") ?? "cloudInitFileFolder/TF-AVX-cloud-init-file.txt";
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            MetroCode = "SV",
        });
    
        var aviatrixCloudinitFile = new Equinix.NetworkEdge.NetworkFile("aviatrixCloudinitFile", new()
        {
            FileName = "TF-AVX-cloud-init-file.txt",
            Content = Std.File.Invoke(new()
            {
                Input = filepath,
            }).Apply(invoke => invoke.Result),
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode).Apply(System.Enum.Parse<Equinix.Metro>),
            DeviceTypeCode = "AVIATRIX_EDGE",
            ProcessType = Equinix.NetworkEdge.FileType.CloudInit,
            SelfManaged = true,
            Byol = true,
        });
    
        var aviatrixSingle = new Equinix.NetworkEdge.Device("aviatrixSingle", new()
        {
            Name = "tf-aviatrix",
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "AVIATRIX_EDGE",
            SelfManaged = true,
            Byol = true,
            PackageCode = "STD",
            Notifications = new[]
            {
                "john@equinix.com",
            },
            TermLength = 12,
            AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            Version = "6.9",
            CoreCount = 2,
            CloudInitFileId = aviatrixCloudinitFile.Uuid,
            AclTemplateId = "c06150ea-b604-4ad1-832a-d63936e9b938",
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix"
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi-std/sdk/go/std"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		cfg := config.New(ctx, "")
    		filepath := "cloudInitFileFolder/TF-AVX-cloud-init-file.txt"
    		if param := cfg.Get("filepath"); param != "" {
    			filepath = param
    		}
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		invokeFile, err := std.File(ctx, &std.FileArgs{
    			Input: filepath,
    		}, nil)
    		if err != nil {
    			return err
    		}
    		aviatrixCloudinitFile, err := networkedge.NewNetworkFile(ctx, "aviatrixCloudinitFile", &networkedge.NetworkFileArgs{
    			FileName:       pulumi.String("TF-AVX-cloud-init-file.txt"),
    			Content:        pulumi.String(invokeFile.Result),
    			MetroCode:      sv.MetroCode.ApplyT(func(x *string) equinix.Metro { return equinix.Metro(*x) }).(equinix.MetroOutput),
    			DeviceTypeCode: pulumi.String("AVIATRIX_EDGE"),
    			ProcessType:    pulumi.String(networkedge.FileTypeCloudInit),
    			SelfManaged:    pulumi.Bool(true),
    			Byol:           pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "aviatrixSingle", &networkedge.DeviceArgs{
    			Name:        pulumi.String("tf-aviatrix"),
    			MetroCode:   pulumi.String(sv.MetroCode),
    			TypeCode:    pulumi.String("AVIATRIX_EDGE"),
    			SelfManaged: pulumi.Bool(true),
    			Byol:        pulumi.Bool(true),
    			PackageCode: pulumi.String("STD"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("john@equinix.com"),
    			},
    			TermLength:      pulumi.Int(12),
    			AccountNumber:   pulumi.String(sv.Number),
    			Version:         pulumi.String("6.9"),
    			CoreCount:       pulumi.Int(2),
    			CloudInitFileId: aviatrixCloudinitFile.Uuid,
    			AclTemplateId:   pulumi.String("c06150ea-b604-4ad1-832a-d63936e9b938"),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.NetworkFile;
    import com.pulumi.equinix.networkedge.NetworkFileArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    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) {
            final var config = ctx.config();
            final var filepath = config.get("filepath").orElse("cloudInitFileFolder/TF-AVX-cloud-init-file.txt");
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .metroCode("SV")
                .build());
    
            var aviatrixCloudinitFile = new NetworkFile("aviatrixCloudinitFile", NetworkFileArgs.builder()
                .fileName("TF-AVX-cloud-init-file.txt")
                .content(StdFunctions.file(FileArgs.builder()
                    .input(filepath)
                    .build()).result())
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .deviceTypeCode("AVIATRIX_EDGE")
                .processType("CLOUD_INIT")
                .selfManaged(true)
                .byol(true)
                .build());
    
            var aviatrixSingle = new Device("aviatrixSingle", DeviceArgs.builder()
                .name("tf-aviatrix")
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("AVIATRIX_EDGE")
                .selfManaged(true)
                .byol(true)
                .packageCode("STD")
                .notifications("john@equinix.com")
                .termLength(12)
                .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                .version("6.9")
                .coreCount(2)
                .cloudInitFileId(aviatrixCloudinitFile.uuid())
                .aclTemplateId("c06150ea-b604-4ad1-832a-d63936e9b938")
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    import pulumi_std as std
    
    config = pulumi.Config()
    filepath = config.get("filepath")
    if filepath is None:
        filepath = "cloudInitFileFolder/TF-AVX-cloud-init-file.txt"
    sv = equinix.networkedge.get_account_output(metro_code="SV")
    aviatrix_cloudinit_file = equinix.networkedge.NetworkFile("aviatrixCloudinitFile",
        file_name="TF-AVX-cloud-init-file.txt",
        content=std.file_output(input=filepath).apply(lambda invoke: invoke.result),
        metro_code=sv.metro_code.apply(lambda x: equinix.Metro(x)),
        device_type_code="AVIATRIX_EDGE",
        process_type=equinix.networkedge.FileType.CLOUD_INIT,
        self_managed=True,
        byol=True)
    aviatrix_single = equinix.networkedge.Device("aviatrixSingle",
        name="tf-aviatrix",
        metro_code=sv.metro_code,
        type_code="AVIATRIX_EDGE",
        self_managed=True,
        byol=True,
        package_code="STD",
        notifications=["john@equinix.com"],
        term_length=12,
        account_number=sv.number,
        version="6.9",
        core_count=2,
        cloud_init_file_id=aviatrix_cloudinit_file.uuid,
        acl_template_id="c06150ea-b604-4ad1-832a-d63936e9b938")
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    import * as std from "@pulumi/std";
    
    const config = new pulumi.Config();
    const filepath = config.get("filepath") || "cloudInitFileFolder/TF-AVX-cloud-init-file.txt";
    const sv = equinix.networkedge.getAccountOutput({
        metroCode: "SV",
    });
    const aviatrixCloudinitFile = new equinix.networkedge.NetworkFile("aviatrixCloudinitFile", {
        fileName: "TF-AVX-cloud-init-file.txt",
        content: std.fileOutput({
            input: filepath,
        }).apply(invoke => invoke.result),
        metroCode: sv.apply(sv => sv.metroCode).apply((x) => equinix.index.Metro[x]),
        deviceTypeCode: "AVIATRIX_EDGE",
        processType: equinix.networkedge.FileType.CloudInit,
        selfManaged: true,
        byol: true,
    });
    const aviatrixSingle = new equinix.networkedge.Device("aviatrixSingle", {
        name: "tf-aviatrix",
        metroCode: sv.apply(sv => sv.metroCode),
        typeCode: "AVIATRIX_EDGE",
        selfManaged: true,
        byol: true,
        packageCode: "STD",
        notifications: ["john@equinix.com"],
        termLength: 12,
        accountNumber: sv.apply(sv => sv.number),
        version: "6.9",
        coreCount: 2,
        cloudInitFileId: aviatrixCloudinitFile.uuid,
        aclTemplateId: "c06150ea-b604-4ad1-832a-d63936e9b938",
    });
    
    configuration:
      filepath:
        type: string
        default: cloudInitFileFolder/TF-AVX-cloud-init-file.txt
    resources:
      aviatrixCloudinitFile:
        type: equinix:networkedge:NetworkFile
        name: aviatrix_cloudinit_file
        properties:
          fileName: TF-AVX-cloud-init-file.txt
          content:
            fn::invoke:
              Function: std:file
              Arguments:
                input: ${filepath}
              Return: result
          metroCode: ${sv.metroCode}
          deviceTypeCode: AVIATRIX_EDGE
          processType: CLOUD_INIT
          selfManaged: true
          byol: true
      aviatrixSingle:
        type: equinix:networkedge:Device
        name: aviatrix_single
        properties:
          name: tf-aviatrix
          metroCode: ${sv.metroCode}
          typeCode: AVIATRIX_EDGE
          selfManaged: true
          byol: true
          packageCode: STD
          notifications:
            - john@equinix.com
          termLength: 12
          accountNumber: ${sv.number}
          version: '6.9'
          coreCount: 2
          cloudInitFileId: ${aviatrixCloudinitFile.uuid}
          aclTemplateId: c06150ea-b604-4ad1-832a-d63936e9b938
    variables:
      # Create self configured single Aviatrix device with cloud init file
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            metroCode: SV
    

    example 4

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    
    return await Deployment.RunAsync(() => 
    {
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            Name = "account-name",
            MetroCode = "SV",
        });
    
        var c8KvSingle = new Equinix.NetworkEdge.Device("c8kvSingle", new()
        {
            Name = "tf-c8kv",
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "C8000V",
            SelfManaged = true,
            Byol = true,
            PackageCode = "network-essentials",
            Notifications = new[]
            {
                "test@equinix.com",
            },
            Hostname = "C8KV",
            AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            Version = "17.06.01a",
            CoreCount = 2,
            TermLength = 12,
            LicenseToken = "valid-license-token",
            AdditionalBandwidth = 5,
            SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs
            {
                Username = "test-username",
                KeyName = "valid-key-name",
            },
            AclTemplateId = "3e548c02-9164-4197-aa23-05b1f644883c",
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			Name:      pulumi.StringRef("account-name"),
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "c8kvSingle", &networkedge.DeviceArgs{
    			Name:        pulumi.String("tf-c8kv"),
    			MetroCode:   pulumi.String(sv.MetroCode),
    			TypeCode:    pulumi.String("C8000V"),
    			SelfManaged: pulumi.Bool(true),
    			Byol:        pulumi.Bool(true),
    			PackageCode: pulumi.String("network-essentials"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("test@equinix.com"),
    			},
    			Hostname:            pulumi.String("C8KV"),
    			AccountNumber:       pulumi.String(sv.Number),
    			Version:             pulumi.String("17.06.01a"),
    			CoreCount:           pulumi.Int(2),
    			TermLength:          pulumi.Int(12),
    			LicenseToken:        pulumi.String("valid-license-token"),
    			AdditionalBandwidth: pulumi.Int(5),
    			SshKey: &networkedge.DeviceSshKeyArgs{
    				Username: pulumi.String("test-username"),
    				KeyName:  pulumi.String("valid-key-name"),
    			},
    			AclTemplateId: pulumi.String("3e548c02-9164-4197-aa23-05b1f644883c"),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;
    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) {
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .name("account-name")
                .metroCode("SV")
                .build());
    
            var c8KvSingle = new Device("c8KvSingle", DeviceArgs.builder()
                .name("tf-c8kv")
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("C8000V")
                .selfManaged(true)
                .byol(true)
                .packageCode("network-essentials")
                .notifications("test@equinix.com")
                .hostname("C8KV")
                .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                .version("17.06.01a")
                .coreCount(2)
                .termLength(12)
                .licenseToken("valid-license-token")
                .additionalBandwidth(5)
                .sshKey(DeviceSshKeyArgs.builder()
                    .username("test-username")
                    .keyName("valid-key-name")
                    .build())
                .aclTemplateId("3e548c02-9164-4197-aa23-05b1f644883c")
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    
    sv = equinix.networkedge.get_account_output(name="account-name",
        metro_code="SV")
    c8_kv_single = equinix.networkedge.Device("c8kvSingle",
        name="tf-c8kv",
        metro_code=sv.metro_code,
        type_code="C8000V",
        self_managed=True,
        byol=True,
        package_code="network-essentials",
        notifications=["test@equinix.com"],
        hostname="C8KV",
        account_number=sv.number,
        version="17.06.01a",
        core_count=2,
        term_length=12,
        license_token="valid-license-token",
        additional_bandwidth=5,
        ssh_key={
            "username": "test-username",
            "key_name": "valid-key-name",
        },
        acl_template_id="3e548c02-9164-4197-aa23-05b1f644883c")
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    
    const sv = equinix.networkedge.getAccountOutput({
        name: "account-name",
        metroCode: "SV",
    });
    const c8KvSingle = new equinix.networkedge.Device("c8kvSingle", {
        name: "tf-c8kv",
        metroCode: sv.apply(sv => sv.metroCode),
        typeCode: "C8000V",
        selfManaged: true,
        byol: true,
        packageCode: "network-essentials",
        notifications: ["test@equinix.com"],
        hostname: "C8KV",
        accountNumber: sv.apply(sv => sv.number),
        version: "17.06.01a",
        coreCount: 2,
        termLength: 12,
        licenseToken: "valid-license-token",
        additionalBandwidth: 5,
        sshKey: {
            username: "test-username",
            keyName: "valid-key-name",
        },
        aclTemplateId: "3e548c02-9164-4197-aa23-05b1f644883c",
    });
    
    resources:
      c8kvSingle:
        type: equinix:networkedge:Device
        name: c8kv_single
        properties:
          name: tf-c8kv
          metroCode: ${sv.metroCode}
          typeCode: C8000V
          selfManaged: true
          byol: true
          packageCode: network-essentials
          notifications:
            - test@equinix.com
          hostname: C8KV
          accountNumber: ${sv.number}
          version: 17.06.01a
          coreCount: 2
          termLength: 12
          licenseToken: valid-license-token
          additionalBandwidth: 5
          sshKey:
            username: test-username
            keyName: valid-key-name
          aclTemplateId: 3e548c02-9164-4197-aa23-05b1f644883c
    variables:
      # Create self configured single Catalyst 8000V (Autonomous Mode) router with license token
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            name: account-name
            metroCode: SV
    

    example 5

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    
    return await Deployment.RunAsync(() => 
    {
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            Name = "account-name",
            MetroCode = "SV",
        });
    
        var vsrxSingle = new Equinix.NetworkEdge.Device("vsrxSingle", new()
        {
            Name = "tf-c8kv-sdwan",
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "VSRX",
            SelfManaged = true,
            Byol = true,
            PackageCode = "STD",
            Notifications = new[]
            {
                "test@equinix.com",
            },
            Hostname = "VSRX",
            AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            Version = "23.2R1.13",
            CoreCount = 2,
            TermLength = 12,
            AdditionalBandwidth = 5,
            ProjectId = "a86d7112-d740-4758-9c9c-31e66373746b",
            DiverseDeviceId = "ed7891bd-15b4-4f72-ac56-d96cfdacddcc",
            SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs
            {
                Username = "test-username",
                KeyName = "valid-key-name",
            },
            AclTemplateId = "3e548c02-9164-4197-aa23-05b1f644883c",
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			Name:      pulumi.StringRef("account-name"),
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "vsrxSingle", &networkedge.DeviceArgs{
    			Name:        pulumi.String("tf-c8kv-sdwan"),
    			MetroCode:   pulumi.String(sv.MetroCode),
    			TypeCode:    pulumi.String("VSRX"),
    			SelfManaged: pulumi.Bool(true),
    			Byol:        pulumi.Bool(true),
    			PackageCode: pulumi.String("STD"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("test@equinix.com"),
    			},
    			Hostname:            pulumi.String("VSRX"),
    			AccountNumber:       pulumi.String(sv.Number),
    			Version:             pulumi.String("23.2R1.13"),
    			CoreCount:           pulumi.Int(2),
    			TermLength:          pulumi.Int(12),
    			AdditionalBandwidth: pulumi.Int(5),
    			ProjectId:           pulumi.String("a86d7112-d740-4758-9c9c-31e66373746b"),
    			DiverseDeviceId:     pulumi.String("ed7891bd-15b4-4f72-ac56-d96cfdacddcc"),
    			SshKey: &networkedge.DeviceSshKeyArgs{
    				Username: pulumi.String("test-username"),
    				KeyName:  pulumi.String("valid-key-name"),
    			},
    			AclTemplateId: pulumi.String("3e548c02-9164-4197-aa23-05b1f644883c"),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;
    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) {
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .name("account-name")
                .metroCode("SV")
                .build());
    
            var vsrxSingle = new Device("vsrxSingle", DeviceArgs.builder()
                .name("tf-c8kv-sdwan")
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("VSRX")
                .selfManaged(true)
                .byol(true)
                .packageCode("STD")
                .notifications("test@equinix.com")
                .hostname("VSRX")
                .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                .version("23.2R1.13")
                .coreCount(2)
                .termLength(12)
                .additionalBandwidth(5)
                .projectId("a86d7112-d740-4758-9c9c-31e66373746b")
                .diverseDeviceId("ed7891bd-15b4-4f72-ac56-d96cfdacddcc")
                .sshKey(DeviceSshKeyArgs.builder()
                    .username("test-username")
                    .keyName("valid-key-name")
                    .build())
                .aclTemplateId("3e548c02-9164-4197-aa23-05b1f644883c")
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    
    sv = equinix.networkedge.get_account_output(name="account-name",
        metro_code="SV")
    vsrx_single = equinix.networkedge.Device("vsrxSingle",
        name="tf-c8kv-sdwan",
        metro_code=sv.metro_code,
        type_code="VSRX",
        self_managed=True,
        byol=True,
        package_code="STD",
        notifications=["test@equinix.com"],
        hostname="VSRX",
        account_number=sv.number,
        version="23.2R1.13",
        core_count=2,
        term_length=12,
        additional_bandwidth=5,
        project_id="a86d7112-d740-4758-9c9c-31e66373746b",
        diverse_device_id="ed7891bd-15b4-4f72-ac56-d96cfdacddcc",
        ssh_key={
            "username": "test-username",
            "key_name": "valid-key-name",
        },
        acl_template_id="3e548c02-9164-4197-aa23-05b1f644883c")
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    
    const sv = equinix.networkedge.getAccountOutput({
        name: "account-name",
        metroCode: "SV",
    });
    const vsrxSingle = new equinix.networkedge.Device("vsrxSingle", {
        name: "tf-c8kv-sdwan",
        metroCode: sv.apply(sv => sv.metroCode),
        typeCode: "VSRX",
        selfManaged: true,
        byol: true,
        packageCode: "STD",
        notifications: ["test@equinix.com"],
        hostname: "VSRX",
        accountNumber: sv.apply(sv => sv.number),
        version: "23.2R1.13",
        coreCount: 2,
        termLength: 12,
        additionalBandwidth: 5,
        projectId: "a86d7112-d740-4758-9c9c-31e66373746b",
        diverseDeviceId: "ed7891bd-15b4-4f72-ac56-d96cfdacddcc",
        sshKey: {
            username: "test-username",
            keyName: "valid-key-name",
        },
        aclTemplateId: "3e548c02-9164-4197-aa23-05b1f644883c",
    });
    
    resources:
      vsrxSingle:
        type: equinix:networkedge:Device
        name: vsrx_single
        properties:
          name: tf-c8kv-sdwan
          metroCode: ${sv.metroCode}
          typeCode: VSRX
          selfManaged: true
          byol: true
          packageCode: STD
          notifications:
            - test@equinix.com
          hostname: VSRX
          accountNumber: ${sv.number}
          version: 23.2R1.13
          coreCount: 2
          termLength: 12
          additionalBandwidth: 5
          projectId: a86d7112-d740-4758-9c9c-31e66373746b
          diverseDeviceId: ed7891bd-15b4-4f72-ac56-d96cfdacddcc
          sshKey:
            username: test-username
            keyName: valid-key-name
          aclTemplateId: 3e548c02-9164-4197-aa23-05b1f644883c
    variables:
      # Create self configured single VSRX device with BYOL License
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            name: account-name
            metroCode: SV
    

    example 6

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    
    return await Deployment.RunAsync(() => 
    {
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            Name = "account-name",
            MetroCode = "SV",
        });
    
        var testPublicKey = new Equinix.NetworkEdge.SshKey("testPublicKey", new()
        {
            Name = "key-name",
            PublicKey = "ssh-dss key-value",
            Type = "DSA",
        });
    
        var aristaHa = new Equinix.NetworkEdge.Device("aristaHa", new()
        {
            Name = "tf-arista-p",
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "ARISTA-ROUTER",
            SelfManaged = true,
            Connectivity = "PRIVATE",
            Byol = true,
            PackageCode = "CloudEOS",
            Notifications = new[]
            {
                "test@equinix.com",
            },
            Hostname = "arista-p",
            AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            Version = "4.29.0",
            CoreCount = 4,
            TermLength = 12,
            AdditionalBandwidth = 5,
            SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs
            {
                Username = "test-username",
                KeyName = testPublicKey.Name,
            },
            AclTemplateId = "c637a17b-7a6a-4486-924b-30e6c36904b0",
            SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs
            {
                Name = "tf-arista-s",
                MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
                Hostname = "arista-s",
                Notifications = new[]
                {
                    "test@eq.com",
                },
                AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
                AclTemplateId = "fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138",
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			Name:      pulumi.StringRef("account-name"),
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		testPublicKey, err := networkedge.NewSshKey(ctx, "testPublicKey", &networkedge.SshKeyArgs{
    			Name:      pulumi.String("key-name"),
    			PublicKey: pulumi.String("ssh-dss key-value"),
    			Type:      pulumi.String("DSA"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "aristaHa", &networkedge.DeviceArgs{
    			Name:         pulumi.String("tf-arista-p"),
    			MetroCode:    pulumi.String(sv.MetroCode),
    			TypeCode:     pulumi.String("ARISTA-ROUTER"),
    			SelfManaged:  pulumi.Bool(true),
    			Connectivity: pulumi.String("PRIVATE"),
    			Byol:         pulumi.Bool(true),
    			PackageCode:  pulumi.String("CloudEOS"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("test@equinix.com"),
    			},
    			Hostname:            pulumi.String("arista-p"),
    			AccountNumber:       pulumi.String(sv.Number),
    			Version:             pulumi.String("4.29.0"),
    			CoreCount:           pulumi.Int(4),
    			TermLength:          pulumi.Int(12),
    			AdditionalBandwidth: pulumi.Int(5),
    			SshKey: &networkedge.DeviceSshKeyArgs{
    				Username: pulumi.String("test-username"),
    				KeyName:  testPublicKey.Name,
    			},
    			AclTemplateId: pulumi.String("c637a17b-7a6a-4486-924b-30e6c36904b0"),
    			SecondaryDevice: &networkedge.DeviceSecondaryDeviceArgs{
    				Name:      pulumi.String("tf-arista-s"),
    				MetroCode: pulumi.String(sv.MetroCode),
    				Hostname:  pulumi.String("arista-s"),
    				Notifications: pulumi.StringArray{
    					pulumi.String("test@eq.com"),
    				},
    				AccountNumber: pulumi.String(sv.Number),
    				AclTemplateId: pulumi.String("fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.SshKey;
    import com.pulumi.equinix.networkedge.SshKeyArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;
    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) {
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .name("account-name")
                .metroCode("SV")
                .build());
    
            var testPublicKey = new SshKey("testPublicKey", SshKeyArgs.builder()
                .name("key-name")
                .publicKey("ssh-dss key-value")
                .type("DSA")
                .build());
    
            var aristaHa = new Device("aristaHa", DeviceArgs.builder()
                .name("tf-arista-p")
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("ARISTA-ROUTER")
                .selfManaged(true)
                .connectivity("PRIVATE")
                .byol(true)
                .packageCode("CloudEOS")
                .notifications("test@equinix.com")
                .hostname("arista-p")
                .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                .version("4.29.0")
                .coreCount(4)
                .termLength(12)
                .additionalBandwidth(5)
                .sshKey(DeviceSshKeyArgs.builder()
                    .username("test-username")
                    .keyName(testPublicKey.name())
                    .build())
                .aclTemplateId("c637a17b-7a6a-4486-924b-30e6c36904b0")
                .secondaryDevice(DeviceSecondaryDeviceArgs.builder()
                    .name("tf-arista-s")
                    .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                    .hostname("arista-s")
                    .notifications("test@eq.com")
                    .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                    .aclTemplateId("fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138")
                    .build())
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    
    sv = equinix.networkedge.get_account_output(name="account-name",
        metro_code="SV")
    test_public_key = equinix.networkedge.SshKey("testPublicKey",
        name="key-name",
        public_key="ssh-dss key-value",
        type="DSA")
    arista_ha = equinix.networkedge.Device("aristaHa",
        name="tf-arista-p",
        metro_code=sv.metro_code,
        type_code="ARISTA-ROUTER",
        self_managed=True,
        connectivity="PRIVATE",
        byol=True,
        package_code="CloudEOS",
        notifications=["test@equinix.com"],
        hostname="arista-p",
        account_number=sv.number,
        version="4.29.0",
        core_count=4,
        term_length=12,
        additional_bandwidth=5,
        ssh_key={
            "username": "test-username",
            "key_name": test_public_key.name,
        },
        acl_template_id="c637a17b-7a6a-4486-924b-30e6c36904b0",
        secondary_device={
            "name": "tf-arista-s",
            "metro_code": sv.metro_code,
            "hostname": "arista-s",
            "notifications": ["test@eq.com"],
            "account_number": sv.number,
            "acl_template_id": "fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138",
        })
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    
    const sv = equinix.networkedge.getAccountOutput({
        name: "account-name",
        metroCode: "SV",
    });
    const testPublicKey = new equinix.networkedge.SshKey("testPublicKey", {
        name: "key-name",
        publicKey: "ssh-dss key-value",
        type: "DSA",
    });
    const aristaHa = new equinix.networkedge.Device("aristaHa", {
        name: "tf-arista-p",
        metroCode: sv.apply(sv => sv.metroCode),
        typeCode: "ARISTA-ROUTER",
        selfManaged: true,
        connectivity: "PRIVATE",
        byol: true,
        packageCode: "CloudEOS",
        notifications: ["test@equinix.com"],
        hostname: "arista-p",
        accountNumber: sv.apply(sv => sv.number),
        version: "4.29.0",
        coreCount: 4,
        termLength: 12,
        additionalBandwidth: 5,
        sshKey: {
            username: "test-username",
            keyName: testPublicKey.name,
        },
        aclTemplateId: "c637a17b-7a6a-4486-924b-30e6c36904b0",
        secondaryDevice: {
            name: "tf-arista-s",
            metroCode: sv.apply(sv => sv.metroCode),
            hostname: "arista-s",
            notifications: ["test@eq.com"],
            accountNumber: sv.apply(sv => sv.number),
            aclTemplateId: "fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138",
        },
    });
    
    resources:
      testPublicKey:
        type: equinix:networkedge:SshKey
        name: test_public_key
        properties:
          name: key-name
          publicKey: ssh-dss key-value
          type: DSA
      aristaHa:
        type: equinix:networkedge:Device
        name: arista_ha
        properties:
          name: tf-arista-p
          metroCode: ${sv.metroCode}
          typeCode: ARISTA-ROUTER
          selfManaged: true
          connectivity: PRIVATE
          byol: true
          packageCode: CloudEOS
          notifications:
            - test@equinix.com
          hostname: arista-p
          accountNumber: ${sv.number}
          version: 4.29.0
          coreCount: 4
          termLength: 12
          additionalBandwidth: 5
          sshKey:
            username: test-username
            keyName: ${testPublicKey.name}
          aclTemplateId: c637a17b-7a6a-4486-924b-30e6c36904b0
          secondaryDevice:
            name: tf-arista-s
            metroCode: ${sv.metroCode}
            hostname: arista-s
            notifications:
              - test@eq.com
            accountNumber: ${sv.number}
            aclTemplateId: fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138
    variables:
      # Create self configured redundant Arista router with DSA key
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            name: account-name
            metroCode: SV
    

    example 7

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    
    return await Deployment.RunAsync(() => 
    {
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            Name = "account-name",
            MetroCode = "SV",
        });
    
        var testPublicKey = new Equinix.NetworkEdge.SshKey("testPublicKey", new()
        {
            Name = "key-name",
            PublicKey = "ssh-dss key-value",
            Type = "DSA",
        });
    
        var bluecatBddsHa = new Equinix.NetworkEdge.Device("bluecatBddsHa", new()
        {
            Name = "tf-bluecat-bdds-p",
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "BLUECAT",
            SelfManaged = true,
            Connectivity = "PRIVATE",
            Byol = true,
            PackageCode = "STD",
            Notifications = new[]
            {
                "test@equinix.com",
            },
            AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            Version = "9.6.0",
            CoreCount = 2,
            TermLength = 12,
            VendorConfiguration = 
            {
                { "hostname", "test" },
                { "privateAddress", "x.x.x.x" },
                { "privateCidrMask", "24" },
                { "privateGateway", "x.x.x.x" },
                { "licenseKey", "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx" },
                { "licenseId", "xxxxxxxxxxxxxxx" },
            },
            SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs
            {
                Username = "test-username",
                KeyName = testPublicKey.Name,
            },
            SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs
            {
                Name = "tf-bluecat-bdds-s",
                MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
                Notifications = new[]
                {
                    "test@eq.com",
                },
                AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
                VendorConfiguration = 
                {
                    { "hostname", "test" },
                    { "privateAddress", "x.x.x.x" },
                    { "privateCidrMask", "24" },
                    { "privateGateway", "x.x.x.x" },
                    { "licenseKey", "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx" },
                    { "licenseId", "xxxxxxxxxxxxxxx" },
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			Name:      pulumi.StringRef("account-name"),
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		testPublicKey, err := networkedge.NewSshKey(ctx, "testPublicKey", &networkedge.SshKeyArgs{
    			Name:      pulumi.String("key-name"),
    			PublicKey: pulumi.String("ssh-dss key-value"),
    			Type:      pulumi.String("DSA"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "bluecatBddsHa", &networkedge.DeviceArgs{
    			Name:         pulumi.String("tf-bluecat-bdds-p"),
    			MetroCode:    pulumi.String(sv.MetroCode),
    			TypeCode:     pulumi.String("BLUECAT"),
    			SelfManaged:  pulumi.Bool(true),
    			Connectivity: pulumi.String("PRIVATE"),
    			Byol:         pulumi.Bool(true),
    			PackageCode:  pulumi.String("STD"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("test@equinix.com"),
    			},
    			AccountNumber: pulumi.String(sv.Number),
    			Version:       pulumi.String("9.6.0"),
    			CoreCount:     pulumi.Int(2),
    			TermLength:    pulumi.Int(12),
    			VendorConfiguration: pulumi.StringMap{
    				"hostname":        pulumi.String("test"),
    				"privateAddress":  pulumi.String("x.x.x.x"),
    				"privateCidrMask": pulumi.String("24"),
    				"privateGateway":  pulumi.String("x.x.x.x"),
    				"licenseKey":      pulumi.String("xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"),
    				"licenseId":       pulumi.String("xxxxxxxxxxxxxxx"),
    			},
    			SshKey: &networkedge.DeviceSshKeyArgs{
    				Username: pulumi.String("test-username"),
    				KeyName:  testPublicKey.Name,
    			},
    			SecondaryDevice: &networkedge.DeviceSecondaryDeviceArgs{
    				Name:      pulumi.String("tf-bluecat-bdds-s"),
    				MetroCode: pulumi.String(sv.MetroCode),
    				Notifications: pulumi.StringArray{
    					pulumi.String("test@eq.com"),
    				},
    				AccountNumber: pulumi.String(sv.Number),
    				VendorConfiguration: pulumi.StringMap{
    					"hostname":        pulumi.String("test"),
    					"privateAddress":  pulumi.String("x.x.x.x"),
    					"privateCidrMask": pulumi.String("24"),
    					"privateGateway":  pulumi.String("x.x.x.x"),
    					"licenseKey":      pulumi.String("xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"),
    					"licenseId":       pulumi.String("xxxxxxxxxxxxxxx"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.SshKey;
    import com.pulumi.equinix.networkedge.SshKeyArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;
    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) {
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .name("account-name")
                .metroCode("SV")
                .build());
    
            var testPublicKey = new SshKey("testPublicKey", SshKeyArgs.builder()
                .name("key-name")
                .publicKey("ssh-dss key-value")
                .type("DSA")
                .build());
    
            var bluecatBddsHa = new Device("bluecatBddsHa", DeviceArgs.builder()
                .name("tf-bluecat-bdds-p")
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("BLUECAT")
                .selfManaged(true)
                .connectivity("PRIVATE")
                .byol(true)
                .packageCode("STD")
                .notifications("test@equinix.com")
                .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                .version("9.6.0")
                .coreCount(2)
                .termLength(12)
                .vendorConfiguration(Map.ofEntries(
                    Map.entry("hostname", "test"),
                    Map.entry("privateAddress", "x.x.x.x"),
                    Map.entry("privateCidrMask", "24"),
                    Map.entry("privateGateway", "x.x.x.x"),
                    Map.entry("licenseKey", "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"),
                    Map.entry("licenseId", "xxxxxxxxxxxxxxx")
                ))
                .sshKey(DeviceSshKeyArgs.builder()
                    .username("test-username")
                    .keyName(testPublicKey.name())
                    .build())
                .secondaryDevice(DeviceSecondaryDeviceArgs.builder()
                    .name("tf-bluecat-bdds-s")
                    .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                    .notifications("test@eq.com")
                    .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                    .vendorConfiguration(Map.ofEntries(
                        Map.entry("hostname", "test"),
                        Map.entry("privateAddress", "x.x.x.x"),
                        Map.entry("privateCidrMask", "24"),
                        Map.entry("privateGateway", "x.x.x.x"),
                        Map.entry("licenseKey", "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"),
                        Map.entry("licenseId", "xxxxxxxxxxxxxxx")
                    ))
                    .build())
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    
    sv = equinix.networkedge.get_account_output(name="account-name",
        metro_code="SV")
    test_public_key = equinix.networkedge.SshKey("testPublicKey",
        name="key-name",
        public_key="ssh-dss key-value",
        type="DSA")
    bluecat_bdds_ha = equinix.networkedge.Device("bluecatBddsHa",
        name="tf-bluecat-bdds-p",
        metro_code=sv.metro_code,
        type_code="BLUECAT",
        self_managed=True,
        connectivity="PRIVATE",
        byol=True,
        package_code="STD",
        notifications=["test@equinix.com"],
        account_number=sv.number,
        version="9.6.0",
        core_count=2,
        term_length=12,
        vendor_configuration={
            "hostname": "test",
            "privateAddress": "x.x.x.x",
            "privateCidrMask": "24",
            "privateGateway": "x.x.x.x",
            "licenseKey": "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx",
            "licenseId": "xxxxxxxxxxxxxxx",
        },
        ssh_key={
            "username": "test-username",
            "key_name": test_public_key.name,
        },
        secondary_device={
            "name": "tf-bluecat-bdds-s",
            "metro_code": sv.metro_code,
            "notifications": ["test@eq.com"],
            "account_number": sv.number,
            "vendor_configuration": {
                "hostname": "test",
                "private_address": "x.x.x.x",
                "private_cidr_mask": "24",
                "private_gateway": "x.x.x.x",
                "license_key": "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx",
                "license_id": "xxxxxxxxxxxxxxx",
            },
        })
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    
    const sv = equinix.networkedge.getAccountOutput({
        name: "account-name",
        metroCode: "SV",
    });
    const testPublicKey = new equinix.networkedge.SshKey("testPublicKey", {
        name: "key-name",
        publicKey: "ssh-dss key-value",
        type: "DSA",
    });
    const bluecatBddsHa = new equinix.networkedge.Device("bluecatBddsHa", {
        name: "tf-bluecat-bdds-p",
        metroCode: sv.apply(sv => sv.metroCode),
        typeCode: "BLUECAT",
        selfManaged: true,
        connectivity: "PRIVATE",
        byol: true,
        packageCode: "STD",
        notifications: ["test@equinix.com"],
        accountNumber: sv.apply(sv => sv.number),
        version: "9.6.0",
        coreCount: 2,
        termLength: 12,
        vendorConfiguration: {
            hostname: "test",
            privateAddress: "x.x.x.x",
            privateCidrMask: "24",
            privateGateway: "x.x.x.x",
            licenseKey: "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx",
            licenseId: "xxxxxxxxxxxxxxx",
        },
        sshKey: {
            username: "test-username",
            keyName: testPublicKey.name,
        },
        secondaryDevice: {
            name: "tf-bluecat-bdds-s",
            metroCode: sv.apply(sv => sv.metroCode),
            notifications: ["test@eq.com"],
            accountNumber: sv.apply(sv => sv.number),
            vendorConfiguration: {
                hostname: "test",
                privateAddress: "x.x.x.x",
                privateCidrMask: "24",
                privateGateway: "x.x.x.x",
                licenseKey: "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx",
                licenseId: "xxxxxxxxxxxxxxx",
            },
        },
    });
    
    resources:
      testPublicKey:
        type: equinix:networkedge:SshKey
        name: test_public_key
        properties:
          name: key-name
          publicKey: ssh-dss key-value
          type: DSA
      bluecatBddsHa:
        type: equinix:networkedge:Device
        name: bluecat_bdds_ha
        properties:
          name: tf-bluecat-bdds-p
          metroCode: ${sv.metroCode}
          typeCode: BLUECAT
          selfManaged: true
          connectivity: PRIVATE
          byol: true
          packageCode: STD
          notifications:
            - test@equinix.com
          accountNumber: ${sv.number}
          version: 9.6.0
          coreCount: 2
          termLength: 12
          vendorConfiguration:
            hostname: test
            privateAddress: x.x.x.x
            privateCidrMask: '24'
            privateGateway: x.x.x.x
            licenseKey: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
            licenseId: xxxxxxxxxxxxxxx
          sshKey:
            username: test-username
            keyName: ${testPublicKey.name}
          secondaryDevice:
            name: tf-bluecat-bdds-s
            metroCode: ${sv.metroCode}
            notifications:
              - test@eq.com
            accountNumber: ${sv.number}
            vendorConfiguration:
              hostname: test
              privateAddress: x.x.x.x
              privateCidrMask: '24'
              privateGateway: x.x.x.x
              licenseKey: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
              licenseId: xxxxxxxxxxxxxxx
    variables:
      # Create self configured redundant BlueCat DNS and DHCP Server
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            name: account-name
            metroCode: SV
    

    example 8

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    using Std = Pulumi.Std;
    
    return await Deployment.RunAsync(() => 
    {
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            Name = "account-name",
            MetroCode = "SV",
        });
    
        var bluecatEdgeServicePointCloudinitPrimaryFile = new Equinix.NetworkEdge.NetworkFile("bluecatEdgeServicePointCloudinitPrimaryFile", new()
        {
            FileName = "TF-BLUECAT-ESP-cloud-init-file.txt",
            Content = Std.File.Invoke(new()
            {
                Input = filepath,
            }).Apply(invoke => invoke.Result),
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode).Apply(System.Enum.Parse<Equinix.Metro>),
            DeviceTypeCode = "BLUECAT-EDGE-SERVICE-POINT",
            ProcessType = Equinix.NetworkEdge.FileType.CloudInit,
            SelfManaged = true,
            Byol = true,
        });
    
        var bluecatEdgeServicePointCloudinitSecondaryFile = new Equinix.NetworkEdge.NetworkFile("bluecatEdgeServicePointCloudinitSecondaryFile", new()
        {
            FileName = "TF-BLUECAT-ESP-cloud-init-file.txt",
            Content = Std.File.Invoke(new()
            {
                Input = filepath,
            }).Apply(invoke => invoke.Result),
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode).Apply(System.Enum.Parse<Equinix.Metro>),
            DeviceTypeCode = "BLUECAT-EDGE-SERVICE-POINT",
            ProcessType = Equinix.NetworkEdge.FileType.CloudInit,
            SelfManaged = true,
            Byol = true,
        });
    
        var bluecatEdgeServicePointHa = new Equinix.NetworkEdge.Device("bluecatEdgeServicePointHa", new()
        {
            Name = "tf-bluecat-edge-service-point-p",
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "BLUECAT-EDGE-SERVICE-POINT",
            SelfManaged = true,
            Connectivity = "PRIVATE",
            Byol = true,
            PackageCode = "STD",
            Notifications = new[]
            {
                "test@equinix.com",
            },
            AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            CloudInitFileId = bluecatEdgeServicePointCloudinitPrimaryFile.Uuid,
            Version = "4.6.3",
            CoreCount = 4,
            TermLength = 12,
            SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs
            {
                Name = "tf-bluecat-edge-service-point-s",
                MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
                Notifications = new[]
                {
                    "test@eq.com",
                },
                AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
                CloudInitFileId = bluecatEdgeServicePointCloudinitSecondaryFile.Uuid,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix"
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi-std/sdk/go/std"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			Name:      pulumi.StringRef("account-name"),
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		invokeFile, err := std.File(ctx, &std.FileArgs{
    			Input: filepath,
    		}, nil)
    		if err != nil {
    			return err
    		}
    		bluecatEdgeServicePointCloudinitPrimaryFile, err := networkedge.NewNetworkFile(ctx, "bluecatEdgeServicePointCloudinitPrimaryFile", &networkedge.NetworkFileArgs{
    			FileName:       pulumi.String("TF-BLUECAT-ESP-cloud-init-file.txt"),
    			Content:        pulumi.String(invokeFile.Result),
    			MetroCode:      sv.MetroCode.ApplyT(func(x *string) equinix.Metro { return equinix.Metro(*x) }).(equinix.MetroOutput),
    			DeviceTypeCode: pulumi.String("BLUECAT-EDGE-SERVICE-POINT"),
    			ProcessType:    pulumi.String(networkedge.FileTypeCloudInit),
    			SelfManaged:    pulumi.Bool(true),
    			Byol:           pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		invokeFile1, err := std.File(ctx, &std.FileArgs{
    			Input: filepath,
    		}, nil)
    		if err != nil {
    			return err
    		}
    		bluecatEdgeServicePointCloudinitSecondaryFile, err := networkedge.NewNetworkFile(ctx, "bluecatEdgeServicePointCloudinitSecondaryFile", &networkedge.NetworkFileArgs{
    			FileName:       pulumi.String("TF-BLUECAT-ESP-cloud-init-file.txt"),
    			Content:        pulumi.String(invokeFile1.Result),
    			MetroCode:      sv.MetroCode.ApplyT(func(x *string) equinix.Metro { return equinix.Metro(*x) }).(equinix.MetroOutput),
    			DeviceTypeCode: pulumi.String("BLUECAT-EDGE-SERVICE-POINT"),
    			ProcessType:    pulumi.String(networkedge.FileTypeCloudInit),
    			SelfManaged:    pulumi.Bool(true),
    			Byol:           pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "bluecatEdgeServicePointHa", &networkedge.DeviceArgs{
    			Name:         pulumi.String("tf-bluecat-edge-service-point-p"),
    			MetroCode:    pulumi.String(sv.MetroCode),
    			TypeCode:     pulumi.String("BLUECAT-EDGE-SERVICE-POINT"),
    			SelfManaged:  pulumi.Bool(true),
    			Connectivity: pulumi.String("PRIVATE"),
    			Byol:         pulumi.Bool(true),
    			PackageCode:  pulumi.String("STD"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("test@equinix.com"),
    			},
    			AccountNumber:   pulumi.String(sv.Number),
    			CloudInitFileId: bluecatEdgeServicePointCloudinitPrimaryFile.Uuid,
    			Version:         pulumi.String("4.6.3"),
    			CoreCount:       pulumi.Int(4),
    			TermLength:      pulumi.Int(12),
    			SecondaryDevice: &networkedge.DeviceSecondaryDeviceArgs{
    				Name:      pulumi.String("tf-bluecat-edge-service-point-s"),
    				MetroCode: pulumi.String(sv.MetroCode),
    				Notifications: pulumi.StringArray{
    					pulumi.String("test@eq.com"),
    				},
    				AccountNumber:   pulumi.String(sv.Number),
    				CloudInitFileId: bluecatEdgeServicePointCloudinitSecondaryFile.Uuid,
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.NetworkFile;
    import com.pulumi.equinix.networkedge.NetworkFileArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSecondaryDeviceArgs;
    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) {
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .name("account-name")
                .metroCode("SV")
                .build());
    
            var bluecatEdgeServicePointCloudinitPrimaryFile = new NetworkFile("bluecatEdgeServicePointCloudinitPrimaryFile", NetworkFileArgs.builder()
                .fileName("TF-BLUECAT-ESP-cloud-init-file.txt")
                .content(StdFunctions.file(FileArgs.builder()
                    .input(filepath)
                    .build()).result())
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .deviceTypeCode("BLUECAT-EDGE-SERVICE-POINT")
                .processType("CLOUD_INIT")
                .selfManaged(true)
                .byol(true)
                .build());
    
            var bluecatEdgeServicePointCloudinitSecondaryFile = new NetworkFile("bluecatEdgeServicePointCloudinitSecondaryFile", NetworkFileArgs.builder()
                .fileName("TF-BLUECAT-ESP-cloud-init-file.txt")
                .content(StdFunctions.file(FileArgs.builder()
                    .input(filepath)
                    .build()).result())
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .deviceTypeCode("BLUECAT-EDGE-SERVICE-POINT")
                .processType("CLOUD_INIT")
                .selfManaged(true)
                .byol(true)
                .build());
    
            var bluecatEdgeServicePointHa = new Device("bluecatEdgeServicePointHa", DeviceArgs.builder()
                .name("tf-bluecat-edge-service-point-p")
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("BLUECAT-EDGE-SERVICE-POINT")
                .selfManaged(true)
                .connectivity("PRIVATE")
                .byol(true)
                .packageCode("STD")
                .notifications("test@equinix.com")
                .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                .cloudInitFileId(bluecatEdgeServicePointCloudinitPrimaryFile.uuid())
                .version("4.6.3")
                .coreCount(4)
                .termLength(12)
                .secondaryDevice(DeviceSecondaryDeviceArgs.builder()
                    .name("tf-bluecat-edge-service-point-s")
                    .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                    .notifications("test@eq.com")
                    .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                    .cloudInitFileId(bluecatEdgeServicePointCloudinitSecondaryFile.uuid())
                    .build())
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    import pulumi_std as std
    
    sv = equinix.networkedge.get_account_output(name="account-name",
        metro_code="SV")
    bluecat_edge_service_point_cloudinit_primary_file = equinix.networkedge.NetworkFile("bluecatEdgeServicePointCloudinitPrimaryFile",
        file_name="TF-BLUECAT-ESP-cloud-init-file.txt",
        content=std.file_output(input=filepath).apply(lambda invoke: invoke.result),
        metro_code=sv.metro_code.apply(lambda x: equinix.Metro(x)),
        device_type_code="BLUECAT-EDGE-SERVICE-POINT",
        process_type=equinix.networkedge.FileType.CLOUD_INIT,
        self_managed=True,
        byol=True)
    bluecat_edge_service_point_cloudinit_secondary_file = equinix.networkedge.NetworkFile("bluecatEdgeServicePointCloudinitSecondaryFile",
        file_name="TF-BLUECAT-ESP-cloud-init-file.txt",
        content=std.file_output(input=filepath).apply(lambda invoke: invoke.result),
        metro_code=sv.metro_code.apply(lambda x: equinix.Metro(x)),
        device_type_code="BLUECAT-EDGE-SERVICE-POINT",
        process_type=equinix.networkedge.FileType.CLOUD_INIT,
        self_managed=True,
        byol=True)
    bluecat_edge_service_point_ha = equinix.networkedge.Device("bluecatEdgeServicePointHa",
        name="tf-bluecat-edge-service-point-p",
        metro_code=sv.metro_code,
        type_code="BLUECAT-EDGE-SERVICE-POINT",
        self_managed=True,
        connectivity="PRIVATE",
        byol=True,
        package_code="STD",
        notifications=["test@equinix.com"],
        account_number=sv.number,
        cloud_init_file_id=bluecat_edge_service_point_cloudinit_primary_file.uuid,
        version="4.6.3",
        core_count=4,
        term_length=12,
        secondary_device={
            "name": "tf-bluecat-edge-service-point-s",
            "metro_code": sv.metro_code,
            "notifications": ["test@eq.com"],
            "account_number": sv.number,
            "cloud_init_file_id": bluecat_edge_service_point_cloudinit_secondary_file.uuid,
        })
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    import * as std from "@pulumi/std";
    
    const sv = equinix.networkedge.getAccountOutput({
        name: "account-name",
        metroCode: "SV",
    });
    const bluecatEdgeServicePointCloudinitPrimaryFile = new equinix.networkedge.NetworkFile("bluecatEdgeServicePointCloudinitPrimaryFile", {
        fileName: "TF-BLUECAT-ESP-cloud-init-file.txt",
        content: std.fileOutput({
            input: filepath,
        }).apply(invoke => invoke.result),
        metroCode: sv.apply(sv => sv.metroCode).apply((x) => equinix.index.Metro[x]),
        deviceTypeCode: "BLUECAT-EDGE-SERVICE-POINT",
        processType: equinix.networkedge.FileType.CloudInit,
        selfManaged: true,
        byol: true,
    });
    const bluecatEdgeServicePointCloudinitSecondaryFile = new equinix.networkedge.NetworkFile("bluecatEdgeServicePointCloudinitSecondaryFile", {
        fileName: "TF-BLUECAT-ESP-cloud-init-file.txt",
        content: std.fileOutput({
            input: filepath,
        }).apply(invoke => invoke.result),
        metroCode: sv.apply(sv => sv.metroCode).apply((x) => equinix.index.Metro[x]),
        deviceTypeCode: "BLUECAT-EDGE-SERVICE-POINT",
        processType: equinix.networkedge.FileType.CloudInit,
        selfManaged: true,
        byol: true,
    });
    const bluecatEdgeServicePointHa = new equinix.networkedge.Device("bluecatEdgeServicePointHa", {
        name: "tf-bluecat-edge-service-point-p",
        metroCode: sv.apply(sv => sv.metroCode),
        typeCode: "BLUECAT-EDGE-SERVICE-POINT",
        selfManaged: true,
        connectivity: "PRIVATE",
        byol: true,
        packageCode: "STD",
        notifications: ["test@equinix.com"],
        accountNumber: sv.apply(sv => sv.number),
        cloudInitFileId: bluecatEdgeServicePointCloudinitPrimaryFile.uuid,
        version: "4.6.3",
        coreCount: 4,
        termLength: 12,
        secondaryDevice: {
            name: "tf-bluecat-edge-service-point-s",
            metroCode: sv.apply(sv => sv.metroCode),
            notifications: ["test@eq.com"],
            accountNumber: sv.apply(sv => sv.number),
            cloudInitFileId: bluecatEdgeServicePointCloudinitSecondaryFile.uuid,
        },
    });
    
    resources:
      bluecatEdgeServicePointCloudinitPrimaryFile:
        type: equinix:networkedge:NetworkFile
        name: bluecat_edge_service_point_cloudinit_primary_file
        properties:
          fileName: TF-BLUECAT-ESP-cloud-init-file.txt
          content:
            fn::invoke:
              Function: std:file
              Arguments:
                input: ${filepath}
              Return: result
          metroCode: ${sv.metroCode}
          deviceTypeCode: BLUECAT-EDGE-SERVICE-POINT
          processType: CLOUD_INIT
          selfManaged: true
          byol: true
      bluecatEdgeServicePointCloudinitSecondaryFile:
        type: equinix:networkedge:NetworkFile
        name: bluecat_edge_service_point_cloudinit_secondary_file
        properties:
          fileName: TF-BLUECAT-ESP-cloud-init-file.txt
          content:
            fn::invoke:
              Function: std:file
              Arguments:
                input: ${filepath}
              Return: result
          metroCode: ${sv.metroCode}
          deviceTypeCode: BLUECAT-EDGE-SERVICE-POINT
          processType: CLOUD_INIT
          selfManaged: true
          byol: true
      bluecatEdgeServicePointHa:
        type: equinix:networkedge:Device
        name: bluecat_edge_service_point_ha
        properties:
          name: tf-bluecat-edge-service-point-p
          metroCode: ${sv.metroCode}
          typeCode: BLUECAT-EDGE-SERVICE-POINT
          selfManaged: true
          connectivity: PRIVATE
          byol: true
          packageCode: STD
          notifications:
            - test@equinix.com
          accountNumber: ${sv.number}
          cloudInitFileId: ${bluecatEdgeServicePointCloudinitPrimaryFile.uuid}
          version: 4.6.3
          coreCount: 4
          termLength: 12
          secondaryDevice:
            name: tf-bluecat-edge-service-point-s
            metroCode: ${sv.metroCode}
            notifications:
              - test@eq.com
            accountNumber: ${sv.number}
            cloudInitFileId: ${bluecatEdgeServicePointCloudinitSecondaryFile.uuid}
    variables:
      # Create self configured redundant BlueCat Edge Service Point
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            name: account-name
            metroCode: SV
    

    example 9

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    
    return await Deployment.RunAsync(() => 
    {
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            MetroCode = "SV",
        });
    
        var panwCluster = new Equinix.NetworkEdge.Device("panwCluster", new()
        {
            Name = "tf-panw",
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "PA-VM",
            SelfManaged = true,
            Byol = true,
            PackageCode = "VM100",
            Notifications = new[]
            {
                "john@equinix.com",
                "marry@equinix.com",
                "fred@equinix.com",
            },
            TermLength = 12,
            AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            Version = "11.1.3",
            InterfaceCount = 10,
            CoreCount = 2,
            SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs
            {
                Username = "test",
                KeyName = "test-key",
            },
            AclTemplateId = "0bff6e05-f0e7-44cd-804a-25b92b835f8b",
            ClusterDetails = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsArgs
            {
                ClusterName = "tf-panw-cluster",
                Node0 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0Args
                {
                    VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0VendorConfigurationArgs
                    {
                        Hostname = "panw-node0",
                        PanoramaIpAddress = "x.x.x.x",
                        PanoramaAuthKey = "xxxxxxxxxxx",
                    },
                    LicenseToken = "licenseToken",
                },
                Node1 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1Args
                {
                    VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1VendorConfigurationArgs
                    {
                        Hostname = "panw-node1",
                        PanoramaIpAddress = "x.x.x.x",
                        PanoramaAuthKey = "xxxxxxxxxxx",
                    },
                    LicenseToken = "licenseToken",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "panwCluster", &networkedge.DeviceArgs{
    			Name:        pulumi.String("tf-panw"),
    			MetroCode:   pulumi.String(sv.MetroCode),
    			TypeCode:    pulumi.String("PA-VM"),
    			SelfManaged: pulumi.Bool(true),
    			Byol:        pulumi.Bool(true),
    			PackageCode: pulumi.String("VM100"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("john@equinix.com"),
    				pulumi.String("marry@equinix.com"),
    				pulumi.String("fred@equinix.com"),
    			},
    			TermLength:     pulumi.Int(12),
    			AccountNumber:  pulumi.String(sv.Number),
    			Version:        pulumi.String("11.1.3"),
    			InterfaceCount: pulumi.Int(10),
    			CoreCount:      pulumi.Int(2),
    			SshKey: &networkedge.DeviceSshKeyArgs{
    				Username: pulumi.String("test"),
    				KeyName:  pulumi.String("test-key"),
    			},
    			AclTemplateId: pulumi.String("0bff6e05-f0e7-44cd-804a-25b92b835f8b"),
    			ClusterDetails: &networkedge.DeviceClusterDetailsArgs{
    				ClusterName: pulumi.String("tf-panw-cluster"),
    				Node0: &networkedge.DeviceClusterDetailsNode0Args{
    					VendorConfiguration: &networkedge.DeviceClusterDetailsNode0VendorConfigurationArgs{
    						Hostname:          pulumi.String("panw-node0"),
    						PanoramaIpAddress: pulumi.String("x.x.x.x"),
    						PanoramaAuthKey:   pulumi.String("xxxxxxxxxxx"),
    					},
    					LicenseToken: pulumi.String("licenseToken"),
    				},
    				Node1: &networkedge.DeviceClusterDetailsNode1Args{
    					VendorConfiguration: &networkedge.DeviceClusterDetailsNode1VendorConfigurationArgs{
    						Hostname:          pulumi.String("panw-node1"),
    						PanoramaIpAddress: pulumi.String("x.x.x.x"),
    						PanoramaAuthKey:   pulumi.String("xxxxxxxxxxx"),
    					},
    					LicenseToken: pulumi.String("licenseToken"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceSshKeyArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0Args;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode0VendorConfigurationArgs;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1Args;
    import com.pulumi.equinix.networkedge.inputs.DeviceClusterDetailsNode1VendorConfigurationArgs;
    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) {
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .metroCode("SV")
                .build());
    
            var panwCluster = new Device("panwCluster", DeviceArgs.builder()
                .name("tf-panw")
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("PA-VM")
                .selfManaged(true)
                .byol(true)
                .packageCode("VM100")
                .notifications(            
                    "john@equinix.com",
                    "marry@equinix.com",
                    "fred@equinix.com")
                .termLength(12)
                .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                .version("11.1.3")
                .interfaceCount(10)
                .coreCount(2)
                .sshKey(DeviceSshKeyArgs.builder()
                    .username("test")
                    .keyName("test-key")
                    .build())
                .aclTemplateId("0bff6e05-f0e7-44cd-804a-25b92b835f8b")
                .clusterDetails(DeviceClusterDetailsArgs.builder()
                    .clusterName("tf-panw-cluster")
                    .node0(DeviceClusterDetailsNode0Args.builder()
                        .vendorConfiguration(DeviceClusterDetailsNode0VendorConfigurationArgs.builder()
                            .hostname("panw-node0")
                            .panoramaIpAddress("x.x.x.x")
                            .panoramaAuthKey("xxxxxxxxxxx")
                            .build())
                        .licenseToken("licenseToken")
                        .build())
                    .node1(DeviceClusterDetailsNode1Args.builder()
                        .vendorConfiguration(DeviceClusterDetailsNode1VendorConfigurationArgs.builder()
                            .hostname("panw-node1")
                            .panoramaIpAddress("x.x.x.x")
                            .panoramaAuthKey("xxxxxxxxxxx")
                            .build())
                        .licenseToken("licenseToken")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    
    sv = equinix.networkedge.get_account_output(metro_code="SV")
    panw_cluster = equinix.networkedge.Device("panwCluster",
        name="tf-panw",
        metro_code=sv.metro_code,
        type_code="PA-VM",
        self_managed=True,
        byol=True,
        package_code="VM100",
        notifications=[
            "john@equinix.com",
            "marry@equinix.com",
            "fred@equinix.com",
        ],
        term_length=12,
        account_number=sv.number,
        version="11.1.3",
        interface_count=10,
        core_count=2,
        ssh_key={
            "username": "test",
            "key_name": "test-key",
        },
        acl_template_id="0bff6e05-f0e7-44cd-804a-25b92b835f8b",
        cluster_details={
            "cluster_name": "tf-panw-cluster",
            "node0": {
                "vendor_configuration": {
                    "hostname": "panw-node0",
                    "panorama_ip_address": "x.x.x.x",
                    "panorama_auth_key": "xxxxxxxxxxx",
                },
                "license_token": "licenseToken",
            },
            "node1": {
                "vendor_configuration": {
                    "hostname": "panw-node1",
                    "panorama_ip_address": "x.x.x.x",
                    "panorama_auth_key": "xxxxxxxxxxx",
                },
                "license_token": "licenseToken",
            },
        })
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    
    const sv = equinix.networkedge.getAccountOutput({
        metroCode: "SV",
    });
    const panwCluster = new equinix.networkedge.Device("panwCluster", {
        name: "tf-panw",
        metroCode: sv.apply(sv => sv.metroCode),
        typeCode: "PA-VM",
        selfManaged: true,
        byol: true,
        packageCode: "VM100",
        notifications: [
            "john@equinix.com",
            "marry@equinix.com",
            "fred@equinix.com",
        ],
        termLength: 12,
        accountNumber: sv.apply(sv => sv.number),
        version: "11.1.3",
        interfaceCount: 10,
        coreCount: 2,
        sshKey: {
            username: "test",
            keyName: "test-key",
        },
        aclTemplateId: "0bff6e05-f0e7-44cd-804a-25b92b835f8b",
        clusterDetails: {
            clusterName: "tf-panw-cluster",
            node0: {
                vendorConfiguration: {
                    hostname: "panw-node0",
                    panoramaIpAddress: "x.x.x.x",
                    panoramaAuthKey: "xxxxxxxxxxx",
                },
                licenseToken: "licenseToken",
            },
            node1: {
                vendorConfiguration: {
                    hostname: "panw-node1",
                    panoramaIpAddress: "x.x.x.x",
                    panoramaAuthKey: "xxxxxxxxxxx",
                },
                licenseToken: "licenseToken",
            },
        },
    });
    
    resources:
      panwCluster:
        type: equinix:networkedge:Device
        name: panw_cluster
        properties:
          name: tf-panw
          metroCode: ${sv.metroCode}
          typeCode: PA-VM
          selfManaged: true
          byol: true
          packageCode: VM100
          notifications:
            - john@equinix.com
            - marry@equinix.com
            - fred@equinix.com
          termLength: 12
          accountNumber: ${sv.number}
          version: 11.1.3
          interfaceCount: 10
          coreCount: 2
          sshKey:
            username: test
            keyName: test-key
          aclTemplateId: 0bff6e05-f0e7-44cd-804a-25b92b835f8b
          clusterDetails:
            clusterName: tf-panw-cluster
            node0:
              vendorConfiguration:
                hostname: panw-node0
                panoramaIpAddress: x.x.x.x
                panoramaAuthKey: xxxxxxxxxxx
              licenseToken: licenseToken
            node1:
              vendorConfiguration:
                hostname: panw-node1
                panoramaIpAddress: x.x.x.x
                panoramaAuthKey: xxxxxxxxxxx
              licenseToken: licenseToken
    variables:
      # Create PA-VM firewall cluster with Panorama Server Integration
      # with Panorama Server IP and Panorama Auth Key in vendor Configuration
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            metroCode: SV
    

    example Aviatrix Transit Edge

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Equinix = Pulumi.Equinix;
    using Std = Pulumi.Std;
    
    return await Deployment.RunAsync(() => 
    {
        var config = new Config();
        var filepath = config.Get("filepath") ?? "cloudInitFileFolder/TF-AVX-cloud-init-file.txt";
        var sv = Equinix.NetworkEdge.GetAccount.Invoke(new()
        {
            MetroCode = "SV",
        });
    
        var aviatrixCloudinitFile = new Equinix.NetworkEdge.NetworkFile("aviatrixCloudinitFile", new()
        {
            FileName = "TF-AVX-cloud-init-file.txt",
            Content = Std.File.Invoke(new()
            {
                Input = filepath,
            }).Apply(invoke => invoke.Result),
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode).Apply(System.Enum.Parse<Equinix.Metro>),
            DeviceTypeCode = "AVIATRIX_TRANSIT_EDGE",
            ProcessType = Equinix.NetworkEdge.FileType.CloudInit,
            SelfManaged = true,
            Byol = true,
        });
    
        var aviatrixTransitEdgeSingle = new Equinix.NetworkEdge.Device("aviatrix-transit-edge-single", new()
        {
            Name = "tf-aviatrix",
            MetroCode = sv.Apply(getAccountResult => getAccountResult.MetroCode),
            TypeCode = "AVIATRIX_TRANSIT_EDGE",
            SelfManaged = true,
            Byol = true,
            PackageCode = "STD",
            Notifications = new[]
            {
                "john@equinix.com",
            },
            TermLength = 12,
            AccountNumber = sv.Apply(getAccountResult => getAccountResult.Number),
            Version = "7.2.a",
            CoreCount = 2,
            CloudInitFileId = aviatrixCloudinitFile.Uuid,
            AclTemplateId = "c06150ea-b604-4ad1-832a-d63936e9b938",
        });
    
    });
    
    package main
    
    import (
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix"
    	"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge"
    	"github.com/pulumi/pulumi-std/sdk/go/std"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		cfg := config.New(ctx, "")
    		filepath := "cloudInitFileFolder/TF-AVX-cloud-init-file.txt"
    		if param := cfg.Get("filepath"); param != "" {
    			filepath = param
    		}
    		sv, err := networkedge.GetAccount(ctx, &networkedge.GetAccountArgs{
    			MetroCode: "SV",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		invokeFile, err := std.File(ctx, &std.FileArgs{
    			Input: filepath,
    		}, nil)
    		if err != nil {
    			return err
    		}
    		aviatrixCloudinitFile, err := networkedge.NewNetworkFile(ctx, "aviatrixCloudinitFile", &networkedge.NetworkFileArgs{
    			FileName:       pulumi.String("TF-AVX-cloud-init-file.txt"),
    			Content:        pulumi.String(invokeFile.Result),
    			MetroCode:      sv.MetroCode.ApplyT(func(x *string) equinix.Metro { return equinix.Metro(*x) }).(equinix.MetroOutput),
    			DeviceTypeCode: pulumi.String("AVIATRIX_TRANSIT_EDGE"),
    			ProcessType:    pulumi.String(networkedge.FileTypeCloudInit),
    			SelfManaged:    pulumi.Bool(true),
    			Byol:           pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = networkedge.NewDevice(ctx, "aviatrix-transit-edge-single", &networkedge.DeviceArgs{
    			Name:        pulumi.String("tf-aviatrix"),
    			MetroCode:   pulumi.String(sv.MetroCode),
    			TypeCode:    pulumi.String("AVIATRIX_TRANSIT_EDGE"),
    			SelfManaged: pulumi.Bool(true),
    			Byol:        pulumi.Bool(true),
    			PackageCode: pulumi.String("STD"),
    			Notifications: pulumi.StringArray{
    				pulumi.String("john@equinix.com"),
    			},
    			TermLength:      pulumi.Int(12),
    			AccountNumber:   pulumi.String(sv.Number),
    			Version:         pulumi.String("7.2.a"),
    			CoreCount:       pulumi.Int(2),
    			CloudInitFileId: aviatrixCloudinitFile.Uuid,
    			AclTemplateId:   pulumi.String("c06150ea-b604-4ad1-832a-d63936e9b938"),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.equinix.networkedge.NetworkedgeFunctions;
    import com.pulumi.equinix.networkedge.inputs.GetAccountArgs;
    import com.pulumi.equinix.networkedge.NetworkFile;
    import com.pulumi.equinix.networkedge.NetworkFileArgs;
    import com.pulumi.equinix.networkedge.Device;
    import com.pulumi.equinix.networkedge.DeviceArgs;
    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) {
            final var config = ctx.config();
            final var filepath = config.get("filepath").orElse("cloudInitFileFolder/TF-AVX-cloud-init-file.txt");
            final var sv = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()
                .metroCode("SV")
                .build());
    
            var aviatrixCloudinitFile = new NetworkFile("aviatrixCloudinitFile", NetworkFileArgs.builder()
                .fileName("TF-AVX-cloud-init-file.txt")
                .content(StdFunctions.file(FileArgs.builder()
                    .input(filepath)
                    .build()).result())
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .deviceTypeCode("AVIATRIX_TRANSIT_EDGE")
                .processType("CLOUD_INIT")
                .selfManaged(true)
                .byol(true)
                .build());
    
            var aviatrixTransitEdgeSingle = new Device("aviatrixTransitEdgeSingle", DeviceArgs.builder()
                .name("tf-aviatrix")
                .metroCode(sv.applyValue(getAccountResult -> getAccountResult.metroCode()))
                .typeCode("AVIATRIX_TRANSIT_EDGE")
                .selfManaged(true)
                .byol(true)
                .packageCode("STD")
                .notifications("john@equinix.com")
                .termLength(12)
                .accountNumber(sv.applyValue(getAccountResult -> getAccountResult.number()))
                .version("7.2.a")
                .coreCount(2)
                .cloudInitFileId(aviatrixCloudinitFile.uuid())
                .aclTemplateId("c06150ea-b604-4ad1-832a-d63936e9b938")
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_equinix as equinix
    import pulumi_std as std
    
    config = pulumi.Config()
    filepath = config.get("filepath")
    if filepath is None:
        filepath = "cloudInitFileFolder/TF-AVX-cloud-init-file.txt"
    sv = equinix.networkedge.get_account_output(metro_code="SV")
    aviatrix_cloudinit_file = equinix.networkedge.NetworkFile("aviatrixCloudinitFile",
        file_name="TF-AVX-cloud-init-file.txt",
        content=std.file_output(input=filepath).apply(lambda invoke: invoke.result),
        metro_code=sv.metro_code.apply(lambda x: equinix.Metro(x)),
        device_type_code="AVIATRIX_TRANSIT_EDGE",
        process_type=equinix.networkedge.FileType.CLOUD_INIT,
        self_managed=True,
        byol=True)
    aviatrix_transit_edge_single = equinix.networkedge.Device("aviatrix-transit-edge-single",
        name="tf-aviatrix",
        metro_code=sv.metro_code,
        type_code="AVIATRIX_TRANSIT_EDGE",
        self_managed=True,
        byol=True,
        package_code="STD",
        notifications=["john@equinix.com"],
        term_length=12,
        account_number=sv.number,
        version="7.2.a",
        core_count=2,
        cloud_init_file_id=aviatrix_cloudinit_file.uuid,
        acl_template_id="c06150ea-b604-4ad1-832a-d63936e9b938")
    
    import * as pulumi from "@pulumi/pulumi";
    import * as equinix from "@equinix-labs/pulumi-equinix";
    import * as equinix from "@pulumi/equinix";
    import * as std from "@pulumi/std";
    
    const config = new pulumi.Config();
    const filepath = config.get("filepath") || "cloudInitFileFolder/TF-AVX-cloud-init-file.txt";
    const sv = equinix.networkedge.getAccountOutput({
        metroCode: "SV",
    });
    const aviatrixCloudinitFile = new equinix.networkedge.NetworkFile("aviatrixCloudinitFile", {
        fileName: "TF-AVX-cloud-init-file.txt",
        content: std.fileOutput({
            input: filepath,
        }).apply(invoke => invoke.result),
        metroCode: sv.apply(sv => sv.metroCode).apply((x) => equinix.index.Metro[x]),
        deviceTypeCode: "AVIATRIX_TRANSIT_EDGE",
        processType: equinix.networkedge.FileType.CloudInit,
        selfManaged: true,
        byol: true,
    });
    const aviatrixTransitEdgeSingle = new equinix.networkedge.Device("aviatrix-transit-edge-single", {
        name: "tf-aviatrix",
        metroCode: sv.apply(sv => sv.metroCode),
        typeCode: "AVIATRIX_TRANSIT_EDGE",
        selfManaged: true,
        byol: true,
        packageCode: "STD",
        notifications: ["john@equinix.com"],
        termLength: 12,
        accountNumber: sv.apply(sv => sv.number),
        version: "7.2.a",
        coreCount: 2,
        cloudInitFileId: aviatrixCloudinitFile.uuid,
        aclTemplateId: "c06150ea-b604-4ad1-832a-d63936e9b938",
    });
    
    configuration:
      filepath:
        type: string
        default: cloudInitFileFolder/TF-AVX-cloud-init-file.txt
    resources:
      aviatrixCloudinitFile:
        type: equinix:networkedge:NetworkFile
        name: aviatrix_cloudinit_file
        properties:
          fileName: TF-AVX-cloud-init-file.txt
          content:
            fn::invoke:
              Function: std:file
              Arguments:
                input: ${filepath}
              Return: result
          metroCode: ${sv.metroCode}
          deviceTypeCode: AVIATRIX_TRANSIT_EDGE
          processType: CLOUD_INIT
          selfManaged: true
          byol: true
      aviatrix-transit-edge-single:
        type: equinix:networkedge:Device
        properties:
          name: tf-aviatrix
          metroCode: ${sv.metroCode}
          typeCode: AVIATRIX_TRANSIT_EDGE
          selfManaged: true
          byol: true
          packageCode: STD
          notifications:
            - john@equinix.com
          termLength: 12
          accountNumber: ${sv.number}
          version: 7.2.a
          coreCount: 2
          cloudInitFileId: ${aviatrixCloudinitFile.uuid}
          aclTemplateId: c06150ea-b604-4ad1-832a-d63936e9b938
    variables:
      # Create self configured single Aviatrix Transit Edge device with cloud init file
      sv:
        fn::invoke:
          Function: equinix:networkedge:getAccount
          Arguments:
            metroCode: SV
    

    Create Device Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Device(name: string, args: DeviceArgs, opts?: CustomResourceOptions);
    @overload
    def Device(resource_name: str,
               args: DeviceArgs,
               opts: Optional[ResourceOptions] = None)
    
    @overload
    def Device(resource_name: str,
               opts: Optional[ResourceOptions] = None,
               metro_code: Optional[str] = None,
               version: Optional[str] = None,
               type_code: Optional[str] = None,
               term_length: Optional[int] = None,
               package_code: Optional[str] = None,
               notifications: Optional[Sequence[str]] = None,
               account_number: Optional[str] = None,
               core_count: Optional[int] = None,
               name: Optional[str] = None,
               cloud_init_file_id: Optional[str] = None,
               interface_count: Optional[int] = None,
               license_file: Optional[str] = None,
               license_file_id: Optional[str] = None,
               license_token: Optional[str] = None,
               diverse_device_id: Optional[str] = None,
               mgmt_acl_template_uuid: Optional[str] = None,
               connectivity: Optional[str] = None,
               cluster_details: Optional[DeviceClusterDetailsArgs] = None,
               order_reference: Optional[str] = None,
               hostname: Optional[str] = None,
               project_id: Optional[str] = None,
               purchase_order_number: Optional[str] = None,
               secondary_device: Optional[DeviceSecondaryDeviceArgs] = None,
               self_managed: Optional[bool] = None,
               ssh_key: Optional[DeviceSshKeyArgs] = None,
               byol: Optional[bool] = None,
               throughput: Optional[int] = None,
               throughput_unit: Optional[Union[str, ThroughputUnit]] = None,
               additional_bandwidth: Optional[int] = None,
               vendor_configuration: Optional[Mapping[str, str]] = None,
               acl_template_id: Optional[str] = None,
               wan_interface_id: Optional[str] = None)
    func NewDevice(ctx *Context, name string, args DeviceArgs, opts ...ResourceOption) (*Device, error)
    public Device(string name, DeviceArgs args, CustomResourceOptions? opts = null)
    public Device(String name, DeviceArgs args)
    public Device(String name, DeviceArgs args, CustomResourceOptions options)
    
    type: equinix:networkedge:Device
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args DeviceArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args DeviceArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args DeviceArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args DeviceArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args DeviceArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var equinixDeviceResource = new Equinix.NetworkEdge.Device("equinixDeviceResource", new()
    {
        MetroCode = "string",
        Version = "string",
        TypeCode = "string",
        TermLength = 0,
        PackageCode = "string",
        Notifications = new[]
        {
            "string",
        },
        AccountNumber = "string",
        CoreCount = 0,
        Name = "string",
        CloudInitFileId = "string",
        InterfaceCount = 0,
        LicenseFile = "string",
        LicenseFileId = "string",
        LicenseToken = "string",
        DiverseDeviceId = "string",
        MgmtAclTemplateUuid = "string",
        Connectivity = "string",
        ClusterDetails = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsArgs
        {
            ClusterName = "string",
            Node0 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0Args
            {
                LicenseFileId = "string",
                LicenseToken = "string",
                Name = "string",
                Uuid = "string",
                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode0VendorConfigurationArgs
                {
                    ActivationKey = "string",
                    AdminPassword = "string",
                    Controller1 = "string",
                    ControllerFqdn = "string",
                    Hostname = "string",
                    LicenseId = "string",
                    LicenseKey = "string",
                    PanoramaAuthKey = "string",
                    PanoramaIpAddress = "string",
                    PrivateAddress = "string",
                    PrivateCidrMask = "string",
                    PrivateGateway = "string",
                    RootPassword = "string",
                },
            },
            Node1 = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1Args
            {
                LicenseFileId = "string",
                LicenseToken = "string",
                Name = "string",
                Uuid = "string",
                VendorConfiguration = new Equinix.NetworkEdge.Inputs.DeviceClusterDetailsNode1VendorConfigurationArgs
                {
                    ActivationKey = "string",
                    AdminPassword = "string",
                    Controller1 = "string",
                    ControllerFqdn = "string",
                    Hostname = "string",
                    LicenseId = "string",
                    LicenseKey = "string",
                    PanoramaAuthKey = "string",
                    PanoramaIpAddress = "string",
                    PrivateAddress = "string",
                    PrivateCidrMask = "string",
                    PrivateGateway = "string",
                    RootPassword = "string",
                },
            },
            ClusterId = "string",
            NumOfNodes = 0,
        },
        OrderReference = "string",
        Hostname = "string",
        ProjectId = "string",
        PurchaseOrderNumber = "string",
        SecondaryDevice = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceArgs
        {
            AccountNumber = "string",
            Notifications = new[]
            {
                "string",
            },
            Name = "string",
            MetroCode = "string",
            Interfaces = new[]
            {
                new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceInterfaceArgs
                {
                    AssignedType = "string",
                    Id = 0,
                    IpAddress = "string",
                    MacAddress = "string",
                    Name = "string",
                    OperationalStatus = "string",
                    Status = "string",
                    Type = "string",
                },
            },
            AclTemplateId = "string",
            Ibx = "string",
            CloudInitFileId = "string",
            LicenseFile = "string",
            LicenseFileId = "string",
            LicenseStatus = "string",
            LicenseToken = "string",
            Asn = 0,
            MgmtAclTemplateUuid = "string",
            AdditionalBandwidth = 0,
            Hostname = "string",
            ProjectId = "string",
            RedundancyType = "string",
            RedundantId = "string",
            Region = "string",
            SshIpAddress = "string",
            SshIpFqdn = "string",
            SshKey = new Equinix.NetworkEdge.Inputs.DeviceSecondaryDeviceSshKeyArgs
            {
                Username = "string",
                KeyName = "string",
            },
            Status = "string",
            Uuid = "string",
            VendorConfiguration = 
            {
                { "string", "string" },
            },
            WanInterfaceId = "string",
            ZoneCode = "string",
        },
        SelfManaged = false,
        SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs
        {
            Username = "string",
            KeyName = "string",
        },
        Byol = false,
        Throughput = 0,
        ThroughputUnit = "string",
        AdditionalBandwidth = 0,
        VendorConfiguration = 
        {
            { "string", "string" },
        },
        AclTemplateId = "string",
        WanInterfaceId = "string",
    });
    
    example, err := networkedge.NewDevice(ctx, "equinixDeviceResource", &networkedge.DeviceArgs{
    	MetroCode:   pulumi.String("string"),
    	Version:     pulumi.String("string"),
    	TypeCode:    pulumi.String("string"),
    	TermLength:  pulumi.Int(0),
    	PackageCode: pulumi.String("string"),
    	Notifications: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	AccountNumber:       pulumi.String("string"),
    	CoreCount:           pulumi.Int(0),
    	Name:                pulumi.String("string"),
    	CloudInitFileId:     pulumi.String("string"),
    	InterfaceCount:      pulumi.Int(0),
    	LicenseFile:         pulumi.String("string"),
    	LicenseFileId:       pulumi.String("string"),
    	LicenseToken:        pulumi.String("string"),
    	DiverseDeviceId:     pulumi.String("string"),
    	MgmtAclTemplateUuid: pulumi.String("string"),
    	Connectivity:        pulumi.String("string"),
    	ClusterDetails: &networkedge.DeviceClusterDetailsArgs{
    		ClusterName: pulumi.String("string"),
    		Node0: &networkedge.DeviceClusterDetailsNode0Args{
    			LicenseFileId: pulumi.String("string"),
    			LicenseToken:  pulumi.String("string"),
    			Name:          pulumi.String("string"),
    			Uuid:          pulumi.String("string"),
    			VendorConfiguration: &networkedge.DeviceClusterDetailsNode0VendorConfigurationArgs{
    				ActivationKey:     pulumi.String("string"),
    				AdminPassword:     pulumi.String("string"),
    				Controller1:       pulumi.String("string"),
    				ControllerFqdn:    pulumi.String("string"),
    				Hostname:          pulumi.String("string"),
    				LicenseId:         pulumi.String("string"),
    				LicenseKey:        pulumi.String("string"),
    				PanoramaAuthKey:   pulumi.String("string"),
    				PanoramaIpAddress: pulumi.String("string"),
    				PrivateAddress:    pulumi.String("string"),
    				PrivateCidrMask:   pulumi.String("string"),
    				PrivateGateway:    pulumi.String("string"),
    				RootPassword:      pulumi.String("string"),
    			},
    		},
    		Node1: &networkedge.DeviceClusterDetailsNode1Args{
    			LicenseFileId: pulumi.String("string"),
    			LicenseToken:  pulumi.String("string"),
    			Name:          pulumi.String("string"),
    			Uuid:          pulumi.String("string"),
    			VendorConfiguration: &networkedge.DeviceClusterDetailsNode1VendorConfigurationArgs{
    				ActivationKey:     pulumi.String("string"),
    				AdminPassword:     pulumi.String("string"),
    				Controller1:       pulumi.String("string"),
    				ControllerFqdn:    pulumi.String("string"),
    				Hostname:          pulumi.String("string"),
    				LicenseId:         pulumi.String("string"),
    				LicenseKey:        pulumi.String("string"),
    				PanoramaAuthKey:   pulumi.String("string"),
    				PanoramaIpAddress: pulumi.String("string"),
    				PrivateAddress:    pulumi.String("string"),
    				PrivateCidrMask:   pulumi.String("string"),
    				PrivateGateway:    pulumi.String("string"),
    				RootPassword:      pulumi.String("string"),
    			},
    		},
    		ClusterId:  pulumi.String("string"),
    		NumOfNodes: pulumi.Int(0),
    	},
    	OrderReference:      pulumi.String("string"),
    	Hostname:            pulumi.String("string"),
    	ProjectId:           pulumi.String("string"),
    	PurchaseOrderNumber: pulumi.String("string"),
    	SecondaryDevice: &networkedge.DeviceSecondaryDeviceArgs{
    		AccountNumber: pulumi.String("string"),
    		Notifications: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    		Name:      pulumi.String("string"),
    		MetroCode: pulumi.String("string"),
    		Interfaces: networkedge.DeviceSecondaryDeviceInterfaceArray{
    			&networkedge.DeviceSecondaryDeviceInterfaceArgs{
    				AssignedType:      pulumi.String("string"),
    				Id:                pulumi.Int(0),
    				IpAddress:         pulumi.String("string"),
    				MacAddress:        pulumi.String("string"),
    				Name:              pulumi.String("string"),
    				OperationalStatus: pulumi.String("string"),
    				Status:            pulumi.String("string"),
    				Type:              pulumi.String("string"),
    			},
    		},
    		AclTemplateId:       pulumi.String("string"),
    		Ibx:                 pulumi.String("string"),
    		CloudInitFileId:     pulumi.String("string"),
    		LicenseFile:         pulumi.String("string"),
    		LicenseFileId:       pulumi.String("string"),
    		LicenseStatus:       pulumi.String("string"),
    		LicenseToken:        pulumi.String("string"),
    		Asn:                 pulumi.Int(0),
    		MgmtAclTemplateUuid: pulumi.String("string"),
    		AdditionalBandwidth: pulumi.Int(0),
    		Hostname:            pulumi.String("string"),
    		ProjectId:           pulumi.String("string"),
    		RedundancyType:      pulumi.String("string"),
    		RedundantId:         pulumi.String("string"),
    		Region:              pulumi.String("string"),
    		SshIpAddress:        pulumi.String("string"),
    		SshIpFqdn:           pulumi.String("string"),
    		SshKey: &networkedge.DeviceSecondaryDeviceSshKeyArgs{
    			Username: pulumi.String("string"),
    			KeyName:  pulumi.String("string"),
    		},
    		Status: pulumi.String("string"),
    		Uuid:   pulumi.String("string"),
    		VendorConfiguration: pulumi.StringMap{
    			"string": pulumi.String("string"),
    		},
    		WanInterfaceId: pulumi.String("string"),
    		ZoneCode:       pulumi.String("string"),
    	},
    	SelfManaged: pulumi.Bool(false),
    	SshKey: &networkedge.DeviceSshKeyArgs{
    		Username: pulumi.String("string"),
    		KeyName:  pulumi.String("string"),
    	},
    	Byol:                pulumi.Bool(false),
    	Throughput:          pulumi.Int(0),
    	ThroughputUnit:      pulumi.String("string"),
    	AdditionalBandwidth: pulumi.Int(0),
    	VendorConfiguration: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	AclTemplateId:  pulumi.String("string"),
    	WanInterfaceId: pulumi.String("string"),
    })
    
    var equinixDeviceResource = new Device("equinixDeviceResource", DeviceArgs.builder()
        .metroCode("string")
        .version("string")
        .typeCode("string")
        .termLength(0)
        .packageCode("string")
        .notifications("string")
        .accountNumber("string")
        .coreCount(0)
        .name("string")
        .cloudInitFileId("string")
        .interfaceCount(0)
        .licenseFile("string")
        .licenseFileId("string")
        .licenseToken("string")
        .diverseDeviceId("string")
        .mgmtAclTemplateUuid("string")
        .connectivity("string")
        .clusterDetails(DeviceClusterDetailsArgs.builder()
            .clusterName("string")
            .node0(DeviceClusterDetailsNode0Args.builder()
                .licenseFileId("string")
                .licenseToken("string")
                .name("string")
                .uuid("string")
                .vendorConfiguration(DeviceClusterDetailsNode0VendorConfigurationArgs.builder()
                    .activationKey("string")
                    .adminPassword("string")
                    .controller1("string")
                    .controllerFqdn("string")
                    .hostname("string")
                    .licenseId("string")
                    .licenseKey("string")
                    .panoramaAuthKey("string")
                    .panoramaIpAddress("string")
                    .privateAddress("string")
                    .privateCidrMask("string")
                    .privateGateway("string")
                    .rootPassword("string")
                    .build())
                .build())
            .node1(DeviceClusterDetailsNode1Args.builder()
                .licenseFileId("string")
                .licenseToken("string")
                .name("string")
                .uuid("string")
                .vendorConfiguration(DeviceClusterDetailsNode1VendorConfigurationArgs.builder()
                    .activationKey("string")
                    .adminPassword("string")
                    .controller1("string")
                    .controllerFqdn("string")
                    .hostname("string")
                    .licenseId("string")
                    .licenseKey("string")
                    .panoramaAuthKey("string")
                    .panoramaIpAddress("string")
                    .privateAddress("string")
                    .privateCidrMask("string")
                    .privateGateway("string")
                    .rootPassword("string")
                    .build())
                .build())
            .clusterId("string")
            .numOfNodes(0)
            .build())
        .orderReference("string")
        .hostname("string")
        .projectId("string")
        .purchaseOrderNumber("string")
        .secondaryDevice(DeviceSecondaryDeviceArgs.builder()
            .accountNumber("string")
            .notifications("string")
            .name("string")
            .metroCode("string")
            .interfaces(DeviceSecondaryDeviceInterfaceArgs.builder()
                .assignedType("string")
                .id(0)
                .ipAddress("string")
                .macAddress("string")
                .name("string")
                .operationalStatus("string")
                .status("string")
                .type("string")
                .build())
            .aclTemplateId("string")
            .ibx("string")
            .cloudInitFileId("string")
            .licenseFile("string")
            .licenseFileId("string")
            .licenseStatus("string")
            .licenseToken("string")
            .asn(0)
            .mgmtAclTemplateUuid("string")
            .additionalBandwidth(0)
            .hostname("string")
            .projectId("string")
            .redundancyType("string")
            .redundantId("string")
            .region("string")
            .sshIpAddress("string")
            .sshIpFqdn("string")
            .sshKey(DeviceSecondaryDeviceSshKeyArgs.builder()
                .username("string")
                .keyName("string")
                .build())
            .status("string")
            .uuid("string")
            .vendorConfiguration(Map.of("string", "string"))
            .wanInterfaceId("string")
            .zoneCode("string")
            .build())
        .selfManaged(false)
        .sshKey(DeviceSshKeyArgs.builder()
            .username("string")
            .keyName("string")
            .build())
        .byol(false)
        .throughput(0)
        .throughputUnit("string")
        .additionalBandwidth(0)
        .vendorConfiguration(Map.of("string", "string"))
        .aclTemplateId("string")
        .wanInterfaceId("string")
        .build());
    
    equinix_device_resource = equinix.networkedge.Device("equinixDeviceResource",
        metro_code="string",
        version="string",
        type_code="string",
        term_length=0,
        package_code="string",
        notifications=["string"],
        account_number="string",
        core_count=0,
        name="string",
        cloud_init_file_id="string",
        interface_count=0,
        license_file="string",
        license_file_id="string",
        license_token="string",
        diverse_device_id="string",
        mgmt_acl_template_uuid="string",
        connectivity="string",
        cluster_details={
            "cluster_name": "string",
            "node0": {
                "license_file_id": "string",
                "license_token": "string",
                "name": "string",
                "uuid": "string",
                "vendor_configuration": {
                    "activation_key": "string",
                    "admin_password": "string",
                    "controller1": "string",
                    "controller_fqdn": "string",
                    "hostname": "string",
                    "license_id": "string",
                    "license_key": "string",
                    "panorama_auth_key": "string",
                    "panorama_ip_address": "string",
                    "private_address": "string",
                    "private_cidr_mask": "string",
                    "private_gateway": "string",
                    "root_password": "string",
                },
            },
            "node1": {
                "license_file_id": "string",
                "license_token": "string",
                "name": "string",
                "uuid": "string",
                "vendor_configuration": {
                    "activation_key": "string",
                    "admin_password": "string",
                    "controller1": "string",
                    "controller_fqdn": "string",
                    "hostname": "string",
                    "license_id": "string",
                    "license_key": "string",
                    "panorama_auth_key": "string",
                    "panorama_ip_address": "string",
                    "private_address": "string",
                    "private_cidr_mask": "string",
                    "private_gateway": "string",
                    "root_password": "string",
                },
            },
            "cluster_id": "string",
            "num_of_nodes": 0,
        },
        order_reference="string",
        hostname="string",
        project_id="string",
        purchase_order_number="string",
        secondary_device={
            "account_number": "string",
            "notifications": ["string"],
            "name": "string",
            "metro_code": "string",
            "interfaces": [{
                "assigned_type": "string",
                "id": 0,
                "ip_address": "string",
                "mac_address": "string",
                "name": "string",
                "operational_status": "string",
                "status": "string",
                "type": "string",
            }],
            "acl_template_id": "string",
            "ibx": "string",
            "cloud_init_file_id": "string",
            "license_file": "string",
            "license_file_id": "string",
            "license_status": "string",
            "license_token": "string",
            "asn": 0,
            "mgmt_acl_template_uuid": "string",
            "additional_bandwidth": 0,
            "hostname": "string",
            "project_id": "string",
            "redundancy_type": "string",
            "redundant_id": "string",
            "region": "string",
            "ssh_ip_address": "string",
            "ssh_ip_fqdn": "string",
            "ssh_key": {
                "username": "string",
                "key_name": "string",
            },
            "status": "string",
            "uuid": "string",
            "vendor_configuration": {
                "string": "string",
            },
            "wan_interface_id": "string",
            "zone_code": "string",
        },
        self_managed=False,
        ssh_key={
            "username": "string",
            "key_name": "string",
        },
        byol=False,
        throughput=0,
        throughput_unit="string",
        additional_bandwidth=0,
        vendor_configuration={
            "string": "string",
        },
        acl_template_id="string",
        wan_interface_id="string")
    
    const equinixDeviceResource = new equinix.networkedge.Device("equinixDeviceResource", {
        metroCode: "string",
        version: "string",
        typeCode: "string",
        termLength: 0,
        packageCode: "string",
        notifications: ["string"],
        accountNumber: "string",
        coreCount: 0,
        name: "string",
        cloudInitFileId: "string",
        interfaceCount: 0,
        licenseFile: "string",
        licenseFileId: "string",
        licenseToken: "string",
        diverseDeviceId: "string",
        mgmtAclTemplateUuid: "string",
        connectivity: "string",
        clusterDetails: {
            clusterName: "string",
            node0: {
                licenseFileId: "string",
                licenseToken: "string",
                name: "string",
                uuid: "string",
                vendorConfiguration: {
                    activationKey: "string",
                    adminPassword: "string",
                    controller1: "string",
                    controllerFqdn: "string",
                    hostname: "string",
                    licenseId: "string",
                    licenseKey: "string",
                    panoramaAuthKey: "string",
                    panoramaIpAddress: "string",
                    privateAddress: "string",
                    privateCidrMask: "string",
                    privateGateway: "string",
                    rootPassword: "string",
                },
            },
            node1: {
                licenseFileId: "string",
                licenseToken: "string",
                name: "string",
                uuid: "string",
                vendorConfiguration: {
                    activationKey: "string",
                    adminPassword: "string",
                    controller1: "string",
                    controllerFqdn: "string",
                    hostname: "string",
                    licenseId: "string",
                    licenseKey: "string",
                    panoramaAuthKey: "string",
                    panoramaIpAddress: "string",
                    privateAddress: "string",
                    privateCidrMask: "string",
                    privateGateway: "string",
                    rootPassword: "string",
                },
            },
            clusterId: "string",
            numOfNodes: 0,
        },
        orderReference: "string",
        hostname: "string",
        projectId: "string",
        purchaseOrderNumber: "string",
        secondaryDevice: {
            accountNumber: "string",
            notifications: ["string"],
            name: "string",
            metroCode: "string",
            interfaces: [{
                assignedType: "string",
                id: 0,
                ipAddress: "string",
                macAddress: "string",
                name: "string",
                operationalStatus: "string",
                status: "string",
                type: "string",
            }],
            aclTemplateId: "string",
            ibx: "string",
            cloudInitFileId: "string",
            licenseFile: "string",
            licenseFileId: "string",
            licenseStatus: "string",
            licenseToken: "string",
            asn: 0,
            mgmtAclTemplateUuid: "string",
            additionalBandwidth: 0,
            hostname: "string",
            projectId: "string",
            redundancyType: "string",
            redundantId: "string",
            region: "string",
            sshIpAddress: "string",
            sshIpFqdn: "string",
            sshKey: {
                username: "string",
                keyName: "string",
            },
            status: "string",
            uuid: "string",
            vendorConfiguration: {
                string: "string",
            },
            wanInterfaceId: "string",
            zoneCode: "string",
        },
        selfManaged: false,
        sshKey: {
            username: "string",
            keyName: "string",
        },
        byol: false,
        throughput: 0,
        throughputUnit: "string",
        additionalBandwidth: 0,
        vendorConfiguration: {
            string: "string",
        },
        aclTemplateId: "string",
        wanInterfaceId: "string",
    });
    
    type: equinix:networkedge:Device
    properties:
        accountNumber: string
        aclTemplateId: string
        additionalBandwidth: 0
        byol: false
        cloudInitFileId: string
        clusterDetails:
            clusterId: string
            clusterName: string
            node0:
                licenseFileId: string
                licenseToken: string
                name: string
                uuid: string
                vendorConfiguration:
                    activationKey: string
                    adminPassword: string
                    controller1: string
                    controllerFqdn: string
                    hostname: string
                    licenseId: string
                    licenseKey: string
                    panoramaAuthKey: string
                    panoramaIpAddress: string
                    privateAddress: string
                    privateCidrMask: string
                    privateGateway: string
                    rootPassword: string
            node1:
                licenseFileId: string
                licenseToken: string
                name: string
                uuid: string
                vendorConfiguration:
                    activationKey: string
                    adminPassword: string
                    controller1: string
                    controllerFqdn: string
                    hostname: string
                    licenseId: string
                    licenseKey: string
                    panoramaAuthKey: string
                    panoramaIpAddress: string
                    privateAddress: string
                    privateCidrMask: string
                    privateGateway: string
                    rootPassword: string
            numOfNodes: 0
        connectivity: string
        coreCount: 0
        diverseDeviceId: string
        hostname: string
        interfaceCount: 0
        licenseFile: string
        licenseFileId: string
        licenseToken: string
        metroCode: string
        mgmtAclTemplateUuid: string
        name: string
        notifications:
            - string
        orderReference: string
        packageCode: string
        projectId: string
        purchaseOrderNumber: string
        secondaryDevice:
            accountNumber: string
            aclTemplateId: string
            additionalBandwidth: 0
            asn: 0
            cloudInitFileId: string
            hostname: string
            ibx: string
            interfaces:
                - assignedType: string
                  id: 0
                  ipAddress: string
                  macAddress: string
                  name: string
                  operationalStatus: string
                  status: string
                  type: string
            licenseFile: string
            licenseFileId: string
            licenseStatus: string
            licenseToken: string
            metroCode: string
            mgmtAclTemplateUuid: string
            name: string
            notifications:
                - string
            projectId: string
            redundancyType: string
            redundantId: string
            region: string
            sshIpAddress: string
            sshIpFqdn: string
            sshKey:
                keyName: string
                username: string
            status: string
            uuid: string
            vendorConfiguration:
                string: string
            wanInterfaceId: string
            zoneCode: string
        selfManaged: false
        sshKey:
            keyName: string
            username: string
        termLength: 0
        throughput: 0
        throughputUnit: string
        typeCode: string
        vendorConfiguration:
            string: string
        version: string
        wanInterfaceId: string
    

    Device Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The Device resource accepts the following input properties:

    AccountNumber string
    Billing account number for a device.
    CoreCount int
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    MetroCode string
    Device location metro code.
    Notifications List<string>
    List of email addresses that will receive device status notifications.
    PackageCode string
    Device software package code.
    TermLength int
    Device term length.
    TypeCode string
    Device type code.
    Version string
    Device software software version.
    AclTemplateId string
    Identifier of a WAN interface ACL template that will be applied on the device.
    AdditionalBandwidth int
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    Byol bool
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    CloudInitFileId string
    Identifier of a cloud init file that will be applied on the device.
    ClusterDetails DeviceClusterDetails
    An object that has the cluster details. See Cluster Details below for more details.
    Connectivity string
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    DiverseDeviceId string
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    Hostname string
    Device hostname prefix.
    InterfaceCount int
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    LicenseFile string
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    LicenseFileId string
    Identifier of a license file that will be applied on the device.
    LicenseToken string
    License Token applicable for some device types in BYOL licensing mode.
    MgmtAclTemplateUuid string
    Identifier of an MGMT interface ACL template that will be applied on the device.
    Name string
    Device name.
    OrderReference string
    Name/number used to identify device order on the invoice.
    ProjectId string
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    PurchaseOrderNumber string
    Purchase order number associated with a device order.
    SecondaryDevice DeviceSecondaryDevice
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    SelfManaged bool
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    SshKey DeviceSshKey
    Definition of SSH key that will be provisioned on a device
    Throughput int
    Device license throughput.
    ThroughputUnit string | Pulumi.Equinix.NetworkEdge.ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    VendorConfiguration Dictionary<string, string>
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    WanInterfaceId string
    device interface id picked for WAN
    AccountNumber string
    Billing account number for a device.
    CoreCount int
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    MetroCode string
    Device location metro code.
    Notifications []string
    List of email addresses that will receive device status notifications.
    PackageCode string
    Device software package code.
    TermLength int
    Device term length.
    TypeCode string
    Device type code.
    Version string
    Device software software version.
    AclTemplateId string
    Identifier of a WAN interface ACL template that will be applied on the device.
    AdditionalBandwidth int
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    Byol bool
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    CloudInitFileId string
    Identifier of a cloud init file that will be applied on the device.
    ClusterDetails DeviceClusterDetailsArgs
    An object that has the cluster details. See Cluster Details below for more details.
    Connectivity string
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    DiverseDeviceId string
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    Hostname string
    Device hostname prefix.
    InterfaceCount int
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    LicenseFile string
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    LicenseFileId string
    Identifier of a license file that will be applied on the device.
    LicenseToken string
    License Token applicable for some device types in BYOL licensing mode.
    MgmtAclTemplateUuid string
    Identifier of an MGMT interface ACL template that will be applied on the device.
    Name string
    Device name.
    OrderReference string
    Name/number used to identify device order on the invoice.
    ProjectId string
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    PurchaseOrderNumber string
    Purchase order number associated with a device order.
    SecondaryDevice DeviceSecondaryDeviceArgs
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    SelfManaged bool
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    SshKey DeviceSshKeyArgs
    Definition of SSH key that will be provisioned on a device
    Throughput int
    Device license throughput.
    ThroughputUnit string | ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    VendorConfiguration map[string]string
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    WanInterfaceId string
    device interface id picked for WAN
    accountNumber String
    Billing account number for a device.
    coreCount Integer
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    metroCode String
    Device location metro code.
    notifications List<String>
    List of email addresses that will receive device status notifications.
    packageCode String
    Device software package code.
    termLength Integer
    Device term length.
    typeCode String
    Device type code.
    version String
    Device software software version.
    aclTemplateId String
    Identifier of a WAN interface ACL template that will be applied on the device.
    additionalBandwidth Integer
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    byol Boolean
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    cloudInitFileId String
    Identifier of a cloud init file that will be applied on the device.
    clusterDetails DeviceClusterDetails
    An object that has the cluster details. See Cluster Details below for more details.
    connectivity String
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    diverseDeviceId String
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    hostname String
    Device hostname prefix.
    interfaceCount Integer
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    licenseFile String
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    licenseFileId String
    Identifier of a license file that will be applied on the device.
    licenseToken String
    License Token applicable for some device types in BYOL licensing mode.
    mgmtAclTemplateUuid String
    Identifier of an MGMT interface ACL template that will be applied on the device.
    name String
    Device name.
    orderReference String
    Name/number used to identify device order on the invoice.
    projectId String
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    purchaseOrderNumber String
    Purchase order number associated with a device order.
    secondaryDevice DeviceSecondaryDevice
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    selfManaged Boolean
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    sshKey DeviceSshKey
    Definition of SSH key that will be provisioned on a device
    throughput Integer
    Device license throughput.
    throughputUnit String | ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    vendorConfiguration Map<String,String>
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    wanInterfaceId String
    device interface id picked for WAN
    accountNumber string
    Billing account number for a device.
    coreCount number
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    metroCode string
    Device location metro code.
    notifications string[]
    List of email addresses that will receive device status notifications.
    packageCode string
    Device software package code.
    termLength number
    Device term length.
    typeCode string
    Device type code.
    version string
    Device software software version.
    aclTemplateId string
    Identifier of a WAN interface ACL template that will be applied on the device.
    additionalBandwidth number
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    byol boolean
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    cloudInitFileId string
    Identifier of a cloud init file that will be applied on the device.
    clusterDetails DeviceClusterDetails
    An object that has the cluster details. See Cluster Details below for more details.
    connectivity string
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    diverseDeviceId string
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    hostname string
    Device hostname prefix.
    interfaceCount number
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    licenseFile string
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    licenseFileId string
    Identifier of a license file that will be applied on the device.
    licenseToken string
    License Token applicable for some device types in BYOL licensing mode.
    mgmtAclTemplateUuid string
    Identifier of an MGMT interface ACL template that will be applied on the device.
    name string
    Device name.
    orderReference string
    Name/number used to identify device order on the invoice.
    projectId string
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    purchaseOrderNumber string
    Purchase order number associated with a device order.
    secondaryDevice DeviceSecondaryDevice
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    selfManaged boolean
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    sshKey DeviceSshKey
    Definition of SSH key that will be provisioned on a device
    throughput number
    Device license throughput.
    throughputUnit string | ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    vendorConfiguration {[key: string]: string}
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    wanInterfaceId string
    device interface id picked for WAN
    account_number str
    Billing account number for a device.
    core_count int
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    metro_code str
    Device location metro code.
    notifications Sequence[str]
    List of email addresses that will receive device status notifications.
    package_code str
    Device software package code.
    term_length int
    Device term length.
    type_code str
    Device type code.
    version str
    Device software software version.
    acl_template_id str
    Identifier of a WAN interface ACL template that will be applied on the device.
    additional_bandwidth int
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    byol bool
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    cloud_init_file_id str
    Identifier of a cloud init file that will be applied on the device.
    cluster_details DeviceClusterDetailsArgs
    An object that has the cluster details. See Cluster Details below for more details.
    connectivity str
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    diverse_device_id str
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    hostname str
    Device hostname prefix.
    interface_count int
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    license_file str
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    license_file_id str
    Identifier of a license file that will be applied on the device.
    license_token str
    License Token applicable for some device types in BYOL licensing mode.
    mgmt_acl_template_uuid str
    Identifier of an MGMT interface ACL template that will be applied on the device.
    name str
    Device name.
    order_reference str
    Name/number used to identify device order on the invoice.
    project_id str
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    purchase_order_number str
    Purchase order number associated with a device order.
    secondary_device DeviceSecondaryDeviceArgs
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    self_managed bool
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    ssh_key DeviceSshKeyArgs
    Definition of SSH key that will be provisioned on a device
    throughput int
    Device license throughput.
    throughput_unit str | ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    vendor_configuration Mapping[str, str]
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    wan_interface_id str
    device interface id picked for WAN
    accountNumber String
    Billing account number for a device.
    coreCount Number
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    metroCode String
    Device location metro code.
    notifications List<String>
    List of email addresses that will receive device status notifications.
    packageCode String
    Device software package code.
    termLength Number
    Device term length.
    typeCode String
    Device type code.
    version String
    Device software software version.
    aclTemplateId String
    Identifier of a WAN interface ACL template that will be applied on the device.
    additionalBandwidth Number
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    byol Boolean
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    cloudInitFileId String
    Identifier of a cloud init file that will be applied on the device.
    clusterDetails Property Map
    An object that has the cluster details. See Cluster Details below for more details.
    connectivity String
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    diverseDeviceId String
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    hostname String
    Device hostname prefix.
    interfaceCount Number
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    licenseFile String
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    licenseFileId String
    Identifier of a license file that will be applied on the device.
    licenseToken String
    License Token applicable for some device types in BYOL licensing mode.
    mgmtAclTemplateUuid String
    Identifier of an MGMT interface ACL template that will be applied on the device.
    name String
    Device name.
    orderReference String
    Name/number used to identify device order on the invoice.
    projectId String
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    purchaseOrderNumber String
    Purchase order number associated with a device order.
    secondaryDevice Property Map
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    selfManaged Boolean
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    sshKey Property Map
    Definition of SSH key that will be provisioned on a device
    throughput Number
    Device license throughput.
    throughputUnit String | "Mbps" | "Gbps"
    License throughput unit. One of Mbps or Gbps.
    vendorConfiguration Map<String>
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    wanInterfaceId String
    device interface id picked for WAN

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Device resource produces the following output properties:

    Asn int
    (Autonomous System Number) Unique identifier for a network on the internet.
    DiverseDeviceName string
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    Ibx string
    Device location Equinix Business Exchange name.
    Id string
    The provider-assigned unique ID for this managed resource.
    Interfaces List<DeviceInterface>
    List of device interfaces. See Interface Attribute below for more details.
    LicenseStatus string
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    RedundancyType string
    Device redundancy type applicable for HA devices, either primary or secondary.
    RedundantId string
    Unique identifier for a redundant device applicable for HA devices.
    Region string
    Device location region.
    SshIpAddress string
    IP address of SSH enabled interface on the device.
    SshIpFqdn string
    FQDN of SSH enabled interface on the device.
    Status string
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    Uuid string
    Device unique identifier.
    ZoneCode string
    Device location zone code.
    Asn int
    (Autonomous System Number) Unique identifier for a network on the internet.
    DiverseDeviceName string
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    Ibx string
    Device location Equinix Business Exchange name.
    Id string
    The provider-assigned unique ID for this managed resource.
    Interfaces []DeviceInterface
    List of device interfaces. See Interface Attribute below for more details.
    LicenseStatus string
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    RedundancyType string
    Device redundancy type applicable for HA devices, either primary or secondary.
    RedundantId string
    Unique identifier for a redundant device applicable for HA devices.
    Region string
    Device location region.
    SshIpAddress string
    IP address of SSH enabled interface on the device.
    SshIpFqdn string
    FQDN of SSH enabled interface on the device.
    Status string
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    Uuid string
    Device unique identifier.
    ZoneCode string
    Device location zone code.
    asn Integer
    (Autonomous System Number) Unique identifier for a network on the internet.
    diverseDeviceName String
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    ibx String
    Device location Equinix Business Exchange name.
    id String
    The provider-assigned unique ID for this managed resource.
    interfaces List<DeviceInterface>
    List of device interfaces. See Interface Attribute below for more details.
    licenseStatus String
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    redundancyType String
    Device redundancy type applicable for HA devices, either primary or secondary.
    redundantId String
    Unique identifier for a redundant device applicable for HA devices.
    region String
    Device location region.
    sshIpAddress String
    IP address of SSH enabled interface on the device.
    sshIpFqdn String
    FQDN of SSH enabled interface on the device.
    status String
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    uuid String
    Device unique identifier.
    zoneCode String
    Device location zone code.
    asn number
    (Autonomous System Number) Unique identifier for a network on the internet.
    diverseDeviceName string
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    ibx string
    Device location Equinix Business Exchange name.
    id string
    The provider-assigned unique ID for this managed resource.
    interfaces DeviceInterface[]
    List of device interfaces. See Interface Attribute below for more details.
    licenseStatus string
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    redundancyType string
    Device redundancy type applicable for HA devices, either primary or secondary.
    redundantId string
    Unique identifier for a redundant device applicable for HA devices.
    region string
    Device location region.
    sshIpAddress string
    IP address of SSH enabled interface on the device.
    sshIpFqdn string
    FQDN of SSH enabled interface on the device.
    status string
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    uuid string
    Device unique identifier.
    zoneCode string
    Device location zone code.
    asn int
    (Autonomous System Number) Unique identifier for a network on the internet.
    diverse_device_name str
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    ibx str
    Device location Equinix Business Exchange name.
    id str
    The provider-assigned unique ID for this managed resource.
    interfaces Sequence[DeviceInterface]
    List of device interfaces. See Interface Attribute below for more details.
    license_status str
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    redundancy_type str
    Device redundancy type applicable for HA devices, either primary or secondary.
    redundant_id str
    Unique identifier for a redundant device applicable for HA devices.
    region str
    Device location region.
    ssh_ip_address str
    IP address of SSH enabled interface on the device.
    ssh_ip_fqdn str
    FQDN of SSH enabled interface on the device.
    status str
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    uuid str
    Device unique identifier.
    zone_code str
    Device location zone code.
    asn Number
    (Autonomous System Number) Unique identifier for a network on the internet.
    diverseDeviceName String
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    ibx String
    Device location Equinix Business Exchange name.
    id String
    The provider-assigned unique ID for this managed resource.
    interfaces List<Property Map>
    List of device interfaces. See Interface Attribute below for more details.
    licenseStatus String
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    redundancyType String
    Device redundancy type applicable for HA devices, either primary or secondary.
    redundantId String
    Unique identifier for a redundant device applicable for HA devices.
    region String
    Device location region.
    sshIpAddress String
    IP address of SSH enabled interface on the device.
    sshIpFqdn String
    FQDN of SSH enabled interface on the device.
    status String
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    uuid String
    Device unique identifier.
    zoneCode String
    Device location zone code.

    Look up Existing Device Resource

    Get an existing Device resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: DeviceState, opts?: CustomResourceOptions): Device
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            account_number: Optional[str] = None,
            acl_template_id: Optional[str] = None,
            additional_bandwidth: Optional[int] = None,
            asn: Optional[int] = None,
            byol: Optional[bool] = None,
            cloud_init_file_id: Optional[str] = None,
            cluster_details: Optional[DeviceClusterDetailsArgs] = None,
            connectivity: Optional[str] = None,
            core_count: Optional[int] = None,
            diverse_device_id: Optional[str] = None,
            diverse_device_name: Optional[str] = None,
            hostname: Optional[str] = None,
            ibx: Optional[str] = None,
            interface_count: Optional[int] = None,
            interfaces: Optional[Sequence[DeviceInterfaceArgs]] = None,
            license_file: Optional[str] = None,
            license_file_id: Optional[str] = None,
            license_status: Optional[str] = None,
            license_token: Optional[str] = None,
            metro_code: Optional[str] = None,
            mgmt_acl_template_uuid: Optional[str] = None,
            name: Optional[str] = None,
            notifications: Optional[Sequence[str]] = None,
            order_reference: Optional[str] = None,
            package_code: Optional[str] = None,
            project_id: Optional[str] = None,
            purchase_order_number: Optional[str] = None,
            redundancy_type: Optional[str] = None,
            redundant_id: Optional[str] = None,
            region: Optional[str] = None,
            secondary_device: Optional[DeviceSecondaryDeviceArgs] = None,
            self_managed: Optional[bool] = None,
            ssh_ip_address: Optional[str] = None,
            ssh_ip_fqdn: Optional[str] = None,
            ssh_key: Optional[DeviceSshKeyArgs] = None,
            status: Optional[str] = None,
            term_length: Optional[int] = None,
            throughput: Optional[int] = None,
            throughput_unit: Optional[Union[str, ThroughputUnit]] = None,
            type_code: Optional[str] = None,
            uuid: Optional[str] = None,
            vendor_configuration: Optional[Mapping[str, str]] = None,
            version: Optional[str] = None,
            wan_interface_id: Optional[str] = None,
            zone_code: Optional[str] = None) -> Device
    func GetDevice(ctx *Context, name string, id IDInput, state *DeviceState, opts ...ResourceOption) (*Device, error)
    public static Device Get(string name, Input<string> id, DeviceState? state, CustomResourceOptions? opts = null)
    public static Device get(String name, Output<String> id, DeviceState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AccountNumber string
    Billing account number for a device.
    AclTemplateId string
    Identifier of a WAN interface ACL template that will be applied on the device.
    AdditionalBandwidth int
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    Asn int
    (Autonomous System Number) Unique identifier for a network on the internet.
    Byol bool
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    CloudInitFileId string
    Identifier of a cloud init file that will be applied on the device.
    ClusterDetails DeviceClusterDetails
    An object that has the cluster details. See Cluster Details below for more details.
    Connectivity string
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    CoreCount int
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    DiverseDeviceId string
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    DiverseDeviceName string
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    Hostname string
    Device hostname prefix.
    Ibx string
    Device location Equinix Business Exchange name.
    InterfaceCount int
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    Interfaces List<DeviceInterface>
    List of device interfaces. See Interface Attribute below for more details.
    LicenseFile string
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    LicenseFileId string
    Identifier of a license file that will be applied on the device.
    LicenseStatus string
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    LicenseToken string
    License Token applicable for some device types in BYOL licensing mode.
    MetroCode string
    Device location metro code.
    MgmtAclTemplateUuid string
    Identifier of an MGMT interface ACL template that will be applied on the device.
    Name string
    Device name.
    Notifications List<string>
    List of email addresses that will receive device status notifications.
    OrderReference string
    Name/number used to identify device order on the invoice.
    PackageCode string
    Device software package code.
    ProjectId string
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    PurchaseOrderNumber string
    Purchase order number associated with a device order.
    RedundancyType string
    Device redundancy type applicable for HA devices, either primary or secondary.
    RedundantId string
    Unique identifier for a redundant device applicable for HA devices.
    Region string
    Device location region.
    SecondaryDevice DeviceSecondaryDevice
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    SelfManaged bool
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    SshIpAddress string
    IP address of SSH enabled interface on the device.
    SshIpFqdn string
    FQDN of SSH enabled interface on the device.
    SshKey DeviceSshKey
    Definition of SSH key that will be provisioned on a device
    Status string
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    TermLength int
    Device term length.
    Throughput int
    Device license throughput.
    ThroughputUnit string | Pulumi.Equinix.NetworkEdge.ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    TypeCode string
    Device type code.
    Uuid string
    Device unique identifier.
    VendorConfiguration Dictionary<string, string>
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    Version string
    Device software software version.
    WanInterfaceId string
    device interface id picked for WAN
    ZoneCode string
    Device location zone code.
    AccountNumber string
    Billing account number for a device.
    AclTemplateId string
    Identifier of a WAN interface ACL template that will be applied on the device.
    AdditionalBandwidth int
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    Asn int
    (Autonomous System Number) Unique identifier for a network on the internet.
    Byol bool
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    CloudInitFileId string
    Identifier of a cloud init file that will be applied on the device.
    ClusterDetails DeviceClusterDetailsArgs
    An object that has the cluster details. See Cluster Details below for more details.
    Connectivity string
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    CoreCount int
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    DiverseDeviceId string
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    DiverseDeviceName string
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    Hostname string
    Device hostname prefix.
    Ibx string
    Device location Equinix Business Exchange name.
    InterfaceCount int
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    Interfaces []DeviceInterfaceArgs
    List of device interfaces. See Interface Attribute below for more details.
    LicenseFile string
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    LicenseFileId string
    Identifier of a license file that will be applied on the device.
    LicenseStatus string
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    LicenseToken string
    License Token applicable for some device types in BYOL licensing mode.
    MetroCode string
    Device location metro code.
    MgmtAclTemplateUuid string
    Identifier of an MGMT interface ACL template that will be applied on the device.
    Name string
    Device name.
    Notifications []string
    List of email addresses that will receive device status notifications.
    OrderReference string
    Name/number used to identify device order on the invoice.
    PackageCode string
    Device software package code.
    ProjectId string
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    PurchaseOrderNumber string
    Purchase order number associated with a device order.
    RedundancyType string
    Device redundancy type applicable for HA devices, either primary or secondary.
    RedundantId string
    Unique identifier for a redundant device applicable for HA devices.
    Region string
    Device location region.
    SecondaryDevice DeviceSecondaryDeviceArgs
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    SelfManaged bool
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    SshIpAddress string
    IP address of SSH enabled interface on the device.
    SshIpFqdn string
    FQDN of SSH enabled interface on the device.
    SshKey DeviceSshKeyArgs
    Definition of SSH key that will be provisioned on a device
    Status string
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    TermLength int
    Device term length.
    Throughput int
    Device license throughput.
    ThroughputUnit string | ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    TypeCode string
    Device type code.
    Uuid string
    Device unique identifier.
    VendorConfiguration map[string]string
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    Version string
    Device software software version.
    WanInterfaceId string
    device interface id picked for WAN
    ZoneCode string
    Device location zone code.
    accountNumber String
    Billing account number for a device.
    aclTemplateId String
    Identifier of a WAN interface ACL template that will be applied on the device.
    additionalBandwidth Integer
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    asn Integer
    (Autonomous System Number) Unique identifier for a network on the internet.
    byol Boolean
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    cloudInitFileId String
    Identifier of a cloud init file that will be applied on the device.
    clusterDetails DeviceClusterDetails
    An object that has the cluster details. See Cluster Details below for more details.
    connectivity String
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    coreCount Integer
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    diverseDeviceId String
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    diverseDeviceName String
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    hostname String
    Device hostname prefix.
    ibx String
    Device location Equinix Business Exchange name.
    interfaceCount Integer
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    interfaces List<DeviceInterface>
    List of device interfaces. See Interface Attribute below for more details.
    licenseFile String
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    licenseFileId String
    Identifier of a license file that will be applied on the device.
    licenseStatus String
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    licenseToken String
    License Token applicable for some device types in BYOL licensing mode.
    metroCode String
    Device location metro code.
    mgmtAclTemplateUuid String
    Identifier of an MGMT interface ACL template that will be applied on the device.
    name String
    Device name.
    notifications List<String>
    List of email addresses that will receive device status notifications.
    orderReference String
    Name/number used to identify device order on the invoice.
    packageCode String
    Device software package code.
    projectId String
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    purchaseOrderNumber String
    Purchase order number associated with a device order.
    redundancyType String
    Device redundancy type applicable for HA devices, either primary or secondary.
    redundantId String
    Unique identifier for a redundant device applicable for HA devices.
    region String
    Device location region.
    secondaryDevice DeviceSecondaryDevice
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    selfManaged Boolean
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    sshIpAddress String
    IP address of SSH enabled interface on the device.
    sshIpFqdn String
    FQDN of SSH enabled interface on the device.
    sshKey DeviceSshKey
    Definition of SSH key that will be provisioned on a device
    status String
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    termLength Integer
    Device term length.
    throughput Integer
    Device license throughput.
    throughputUnit String | ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    typeCode String
    Device type code.
    uuid String
    Device unique identifier.
    vendorConfiguration Map<String,String>
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    version String
    Device software software version.
    wanInterfaceId String
    device interface id picked for WAN
    zoneCode String
    Device location zone code.
    accountNumber string
    Billing account number for a device.
    aclTemplateId string
    Identifier of a WAN interface ACL template that will be applied on the device.
    additionalBandwidth number
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    asn number
    (Autonomous System Number) Unique identifier for a network on the internet.
    byol boolean
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    cloudInitFileId string
    Identifier of a cloud init file that will be applied on the device.
    clusterDetails DeviceClusterDetails
    An object that has the cluster details. See Cluster Details below for more details.
    connectivity string
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    coreCount number
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    diverseDeviceId string
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    diverseDeviceName string
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    hostname string
    Device hostname prefix.
    ibx string
    Device location Equinix Business Exchange name.
    interfaceCount number
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    interfaces DeviceInterface[]
    List of device interfaces. See Interface Attribute below for more details.
    licenseFile string
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    licenseFileId string
    Identifier of a license file that will be applied on the device.
    licenseStatus string
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    licenseToken string
    License Token applicable for some device types in BYOL licensing mode.
    metroCode string
    Device location metro code.
    mgmtAclTemplateUuid string
    Identifier of an MGMT interface ACL template that will be applied on the device.
    name string
    Device name.
    notifications string[]
    List of email addresses that will receive device status notifications.
    orderReference string
    Name/number used to identify device order on the invoice.
    packageCode string
    Device software package code.
    projectId string
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    purchaseOrderNumber string
    Purchase order number associated with a device order.
    redundancyType string
    Device redundancy type applicable for HA devices, either primary or secondary.
    redundantId string
    Unique identifier for a redundant device applicable for HA devices.
    region string
    Device location region.
    secondaryDevice DeviceSecondaryDevice
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    selfManaged boolean
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    sshIpAddress string
    IP address of SSH enabled interface on the device.
    sshIpFqdn string
    FQDN of SSH enabled interface on the device.
    sshKey DeviceSshKey
    Definition of SSH key that will be provisioned on a device
    status string
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    termLength number
    Device term length.
    throughput number
    Device license throughput.
    throughputUnit string | ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    typeCode string
    Device type code.
    uuid string
    Device unique identifier.
    vendorConfiguration {[key: string]: string}
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    version string
    Device software software version.
    wanInterfaceId string
    device interface id picked for WAN
    zoneCode string
    Device location zone code.
    account_number str
    Billing account number for a device.
    acl_template_id str
    Identifier of a WAN interface ACL template that will be applied on the device.
    additional_bandwidth int
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    asn int
    (Autonomous System Number) Unique identifier for a network on the internet.
    byol bool
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    cloud_init_file_id str
    Identifier of a cloud init file that will be applied on the device.
    cluster_details DeviceClusterDetailsArgs
    An object that has the cluster details. See Cluster Details below for more details.
    connectivity str
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    core_count int
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    diverse_device_id str
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    diverse_device_name str
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    hostname str
    Device hostname prefix.
    ibx str
    Device location Equinix Business Exchange name.
    interface_count int
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    interfaces Sequence[DeviceInterfaceArgs]
    List of device interfaces. See Interface Attribute below for more details.
    license_file str
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    license_file_id str
    Identifier of a license file that will be applied on the device.
    license_status str
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    license_token str
    License Token applicable for some device types in BYOL licensing mode.
    metro_code str
    Device location metro code.
    mgmt_acl_template_uuid str
    Identifier of an MGMT interface ACL template that will be applied on the device.
    name str
    Device name.
    notifications Sequence[str]
    List of email addresses that will receive device status notifications.
    order_reference str
    Name/number used to identify device order on the invoice.
    package_code str
    Device software package code.
    project_id str
    Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
    purchase_order_number str
    Purchase order number associated with a device order.
    redundancy_type str
    Device redundancy type applicable for HA devices, either primary or secondary.
    redundant_id str
    Unique identifier for a redundant device applicable for HA devices.
    region str
    Device location region.
    secondary_device DeviceSecondaryDeviceArgs
    Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
    self_managed bool
    Boolean value that determines device management mode, i.e., self-managed or Equinix-managed (default).
    ssh_ip_address str
    IP address of SSH enabled interface on the device.
    ssh_ip_fqdn str
    FQDN of SSH enabled interface on the device.
    ssh_key DeviceSshKeyArgs
    Definition of SSH key that will be provisioned on a device
    status str
    interface status. One of AVAILABLE, RESERVED, ASSIGNED.
    term_length int
    Device term length.
    throughput int
    Device license throughput.
    throughput_unit str | ThroughputUnit
    License throughput unit. One of Mbps or Gbps.
    type_code str
    Device type code.
    uuid str
    Device unique identifier.
    vendor_configuration Mapping[str, str]
    Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)

    • ssh-key - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
    version str
    Device software software version.
    wan_interface_id str
    device interface id picked for WAN
    zone_code str
    Device location zone code.
    accountNumber String
    Billing account number for a device.
    aclTemplateId String
    Identifier of a WAN interface ACL template that will be applied on the device.
    additionalBandwidth Number
    Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
    asn Number
    (Autonomous System Number) Unique identifier for a network on the internet.
    byol Boolean
    Boolean value that determines device licensing mode, i.e., bring your own license or subscription (default).
    cloudInitFileId String
    Identifier of a cloud init file that will be applied on the device.
    clusterDetails Property Map
    An object that has the cluster details. See Cluster Details below for more details.
    connectivity String
    Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
    coreCount Number
    Number of CPU cores used by device. (NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.)
    diverseDeviceId String
    Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
    diverseDeviceName String
    Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id.
    hostname String
    Device hostname prefix.
    ibx String
    Device location Equinix Business Exchange name.
    interfaceCount Number
    Number of network interfaces on a device. If not specified, default number for a given device type will be used.
    interfaces List<Property Map>
    List of device interfaces. See Interface Attribute below for more details.
    licenseFile String
    Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
    licenseFileId String
    Identifier of a license file that will be applied on the device.
    licenseStatus String
    Device license registration status. Possible values are APPLYING_LICENSE, REGISTERED, APPLIED, WAITING_FOR_CLUSTER_SETUP, REGISTRATION_FAILED.
    licenseToken String
    License Token applicable for some device types in BYOL licensing mode.
    metroCode String
    Device location metro code.
    mgmtAclTemplateUuid String
    Identifier of an MGMT interface ACL template that will be applied on the device.
    name String
    Device name.