diff --git a/sdk/dotnet/Fabric/GetRoutingProtocol.cs b/sdk/dotnet/Fabric/GetRoutingProtocol.cs index f3b8bafc..8e03da8a 100644 --- a/sdk/dotnet/Fabric/GetRoutingProtocol.cs +++ b/sdk/dotnet/Fabric/GetRoutingProtocol.cs @@ -149,6 +149,10 @@ public GetRoutingProtocolInvokeArgs() [OutputType] public sealed class GetRoutingProtocolResult { + /// + /// Enable AS number override + /// + public readonly bool AsOverrideEnabled; /// /// Bidirectional Forwarding Detection /// @@ -228,6 +232,8 @@ public sealed class GetRoutingProtocolResult [OutputConstructor] private GetRoutingProtocolResult( + bool asOverrideEnabled, + Outputs.GetRoutingProtocolBfdResult bfd, string bgpAuthKey, @@ -266,6 +272,7 @@ private GetRoutingProtocolResult( string uuid) { + AsOverrideEnabled = asOverrideEnabled; Bfd = bfd; BgpAuthKey = bgpAuthKey; BgpIpv4 = bgpIpv4; diff --git a/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv4Args.cs b/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv4Args.cs index dc507707..58b97991 100644 --- a/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv4Args.cs +++ b/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv4Args.cs @@ -30,6 +30,24 @@ public sealed class RoutingProtocolBgpIpv4Args : global::Pulumi.ResourceArgs [Input("equinixPeerIp")] public Input? EquinixPeerIp { get; set; } + /// + /// Inbound Multi Exit Discriminator attribute + /// + [Input("inboundMed")] + public Input? InboundMed { get; set; } + + /// + /// AS path prepend count. One of: 0, 1, 3, 5 + /// + [Input("outboundAsPrependCount")] + public Input? OutboundAsPrependCount { get; set; } + + /// + /// Outbound Multi Exit Discriminator attribute + /// + [Input("outboundMed")] + public Input? OutboundMed { get; set; } + public RoutingProtocolBgpIpv4Args() { } diff --git a/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv4GetArgs.cs b/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv4GetArgs.cs index c0b80c34..8765dfd6 100644 --- a/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv4GetArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv4GetArgs.cs @@ -30,6 +30,24 @@ public sealed class RoutingProtocolBgpIpv4GetArgs : global::Pulumi.ResourceArgs [Input("equinixPeerIp")] public Input? EquinixPeerIp { get; set; } + /// + /// Inbound Multi Exit Discriminator attribute + /// + [Input("inboundMed")] + public Input? InboundMed { get; set; } + + /// + /// AS path prepend count. One of: 0, 1, 3, 5 + /// + [Input("outboundAsPrependCount")] + public Input? OutboundAsPrependCount { get; set; } + + /// + /// Outbound Multi Exit Discriminator attribute + /// + [Input("outboundMed")] + public Input? OutboundMed { get; set; } + public RoutingProtocolBgpIpv4GetArgs() { } diff --git a/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv6Args.cs b/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv6Args.cs index 0088806e..8c86fad0 100644 --- a/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv6Args.cs +++ b/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv6Args.cs @@ -30,6 +30,24 @@ public sealed class RoutingProtocolBgpIpv6Args : global::Pulumi.ResourceArgs [Input("equinixPeerIp")] public Input? EquinixPeerIp { get; set; } + /// + /// Inbound Multi Exit Discriminator attribute + /// + [Input("inboundMed")] + public Input? InboundMed { get; set; } + + /// + /// AS path prepend count. One of: 0, 1, 3, 5 + /// + [Input("outboundAsPrependCount")] + public Input? OutboundAsPrependCount { get; set; } + + /// + /// Outbound Multi Exit Discriminator attribute + /// + [Input("outboundMed")] + public Input? OutboundMed { get; set; } + public RoutingProtocolBgpIpv6Args() { } diff --git a/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv6GetArgs.cs b/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv6GetArgs.cs index 6af011de..684310c8 100644 --- a/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv6GetArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/RoutingProtocolBgpIpv6GetArgs.cs @@ -30,6 +30,24 @@ public sealed class RoutingProtocolBgpIpv6GetArgs : global::Pulumi.ResourceArgs [Input("equinixPeerIp")] public Input? EquinixPeerIp { get; set; } + /// + /// Inbound Multi Exit Discriminator attribute + /// + [Input("inboundMed")] + public Input? InboundMed { get; set; } + + /// + /// AS path prepend count. One of: 0, 1, 3, 5 + /// + [Input("outboundAsPrependCount")] + public Input? OutboundAsPrependCount { get; set; } + + /// + /// Outbound Multi Exit Discriminator attribute + /// + [Input("outboundMed")] + public Input? OutboundMed { get; set; } + public RoutingProtocolBgpIpv6GetArgs() { } diff --git a/sdk/dotnet/Fabric/Outputs/GetRoutingProtocolBgpIpv4Result.cs b/sdk/dotnet/Fabric/Outputs/GetRoutingProtocolBgpIpv4Result.cs index 767a49ff..1fcb2eb6 100644 --- a/sdk/dotnet/Fabric/Outputs/GetRoutingProtocolBgpIpv4Result.cs +++ b/sdk/dotnet/Fabric/Outputs/GetRoutingProtocolBgpIpv4Result.cs @@ -25,6 +25,18 @@ public sealed class GetRoutingProtocolBgpIpv4Result /// Equinix side peering ip /// public readonly string EquinixPeerIp; + /// + /// Inbound Multi Exit Discriminator attribute + /// + public readonly int InboundMed; + /// + /// AS path prepend count. One of: 0, 1, 3, 5 + /// + public readonly string OutboundAsPrependCount; + /// + /// Outbound Multi Exit Discriminator attribute + /// + public readonly int OutboundMed; [OutputConstructor] private GetRoutingProtocolBgpIpv4Result( @@ -32,11 +44,20 @@ private GetRoutingProtocolBgpIpv4Result( bool? enabled, - string equinixPeerIp) + string equinixPeerIp, + + int inboundMed, + + string outboundAsPrependCount, + + int outboundMed) { CustomerPeerIp = customerPeerIp; Enabled = enabled; EquinixPeerIp = equinixPeerIp; + InboundMed = inboundMed; + OutboundAsPrependCount = outboundAsPrependCount; + OutboundMed = outboundMed; } } } diff --git a/sdk/dotnet/Fabric/Outputs/GetRoutingProtocolBgpIpv6Result.cs b/sdk/dotnet/Fabric/Outputs/GetRoutingProtocolBgpIpv6Result.cs index bab772ae..03156125 100644 --- a/sdk/dotnet/Fabric/Outputs/GetRoutingProtocolBgpIpv6Result.cs +++ b/sdk/dotnet/Fabric/Outputs/GetRoutingProtocolBgpIpv6Result.cs @@ -25,6 +25,18 @@ public sealed class GetRoutingProtocolBgpIpv6Result /// Equinix side peering ip /// public readonly string EquinixPeerIp; + /// + /// Inbound Multi Exit Discriminator attribute + /// + public readonly int InboundMed; + /// + /// AS path prepend count. One of: 0, 1, 3, 5 + /// + public readonly string OutboundAsPrependCount; + /// + /// Outbound Multi Exit Discriminator attribute + /// + public readonly int OutboundMed; [OutputConstructor] private GetRoutingProtocolBgpIpv6Result( @@ -32,11 +44,20 @@ private GetRoutingProtocolBgpIpv6Result( bool? enabled, - string equinixPeerIp) + string equinixPeerIp, + + int inboundMed, + + string outboundAsPrependCount, + + int outboundMed) { CustomerPeerIp = customerPeerIp; Enabled = enabled; EquinixPeerIp = equinixPeerIp; + InboundMed = inboundMed; + OutboundAsPrependCount = outboundAsPrependCount; + OutboundMed = outboundMed; } } } diff --git a/sdk/dotnet/Fabric/Outputs/RoutingProtocolBgpIpv4.cs b/sdk/dotnet/Fabric/Outputs/RoutingProtocolBgpIpv4.cs index 70f0c237..76b30db3 100644 --- a/sdk/dotnet/Fabric/Outputs/RoutingProtocolBgpIpv4.cs +++ b/sdk/dotnet/Fabric/Outputs/RoutingProtocolBgpIpv4.cs @@ -25,6 +25,18 @@ public sealed class RoutingProtocolBgpIpv4 /// Equinix side peering ip /// public readonly string? EquinixPeerIp; + /// + /// Inbound Multi Exit Discriminator attribute + /// + public readonly int? InboundMed; + /// + /// AS path prepend count. One of: 0, 1, 3, 5 + /// + public readonly string? OutboundAsPrependCount; + /// + /// Outbound Multi Exit Discriminator attribute + /// + public readonly int? OutboundMed; [OutputConstructor] private RoutingProtocolBgpIpv4( @@ -32,11 +44,20 @@ private RoutingProtocolBgpIpv4( bool? enabled, - string? equinixPeerIp) + string? equinixPeerIp, + + int? inboundMed, + + string? outboundAsPrependCount, + + int? outboundMed) { CustomerPeerIp = customerPeerIp; Enabled = enabled; EquinixPeerIp = equinixPeerIp; + InboundMed = inboundMed; + OutboundAsPrependCount = outboundAsPrependCount; + OutboundMed = outboundMed; } } } diff --git a/sdk/dotnet/Fabric/Outputs/RoutingProtocolBgpIpv6.cs b/sdk/dotnet/Fabric/Outputs/RoutingProtocolBgpIpv6.cs index 0828310f..d085edbd 100644 --- a/sdk/dotnet/Fabric/Outputs/RoutingProtocolBgpIpv6.cs +++ b/sdk/dotnet/Fabric/Outputs/RoutingProtocolBgpIpv6.cs @@ -25,6 +25,18 @@ public sealed class RoutingProtocolBgpIpv6 /// Equinix side peering ip /// public readonly string? EquinixPeerIp; + /// + /// Inbound Multi Exit Discriminator attribute + /// + public readonly int? InboundMed; + /// + /// AS path prepend count. One of: 0, 1, 3, 5 + /// + public readonly string? OutboundAsPrependCount; + /// + /// Outbound Multi Exit Discriminator attribute + /// + public readonly int? OutboundMed; [OutputConstructor] private RoutingProtocolBgpIpv6( @@ -32,11 +44,20 @@ private RoutingProtocolBgpIpv6( bool? enabled, - string? equinixPeerIp) + string? equinixPeerIp, + + int? inboundMed, + + string? outboundAsPrependCount, + + int? outboundMed) { CustomerPeerIp = customerPeerIp; Enabled = enabled; EquinixPeerIp = equinixPeerIp; + InboundMed = inboundMed; + OutboundAsPrependCount = outboundAsPrependCount; + OutboundMed = outboundMed; } } } diff --git a/sdk/dotnet/Fabric/RoutingProtocol.cs b/sdk/dotnet/Fabric/RoutingProtocol.cs index 5617d8a8..02565205 100644 --- a/sdk/dotnet/Fabric/RoutingProtocol.cs +++ b/sdk/dotnet/Fabric/RoutingProtocol.cs @@ -126,6 +126,12 @@ namespace Pulumi.Equinix.Fabric [EquinixResourceType("equinix:fabric/routingProtocol:RoutingProtocol")] public partial class RoutingProtocol : global::Pulumi.CustomResource { + /// + /// Enable AS number override + /// + [Output("asOverrideEnabled")] + public Output AsOverrideEnabled { get; private set; } = null!; + /// /// Bidirectional Forwarding Detection /// @@ -281,6 +287,12 @@ public static RoutingProtocol Get(string name, Input id, RoutingProtocol public sealed class RoutingProtocolArgs : global::Pulumi.ResourceArgs { + /// + /// Enable AS number override + /// + [Input("asOverrideEnabled")] + public Input? AsOverrideEnabled { get; set; } + /// /// Bidirectional Forwarding Detection /// @@ -361,6 +373,12 @@ public RoutingProtocolArgs() public sealed class RoutingProtocolState : global::Pulumi.ResourceArgs { + /// + /// Enable AS number override + /// + [Input("asOverrideEnabled")] + public Input? AsOverrideEnabled { get; set; } + /// /// Bidirectional Forwarding Detection /// diff --git a/sdk/dotnet/Metal/Inputs/InterconnectionPortArgs.cs b/sdk/dotnet/Metal/Inputs/InterconnectionPortArgs.cs index 119984f3..dc28c150 100644 --- a/sdk/dotnet/Metal/Inputs/InterconnectionPortArgs.cs +++ b/sdk/dotnet/Metal/Inputs/InterconnectionPortArgs.cs @@ -18,24 +18,15 @@ public sealed class InterconnectionPortArgs : global::Pulumi.ResourceArgs [Input("linkStatus", required: true)] public Input LinkStatus { get; set; } = null!; - /// - /// Name of the connection resource - /// [Input("name", required: true)] public Input Name { get; set; } = null!; [Input("role", required: true)] public Input Role { get; set; } = null!; - /// - /// Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. - /// [Input("speed", required: true)] public Input Speed { get; set; } = null!; - /// - /// Status of the connection resource. - /// [Input("status", required: true)] public Input Status { get; set; } = null!; diff --git a/sdk/dotnet/Metal/Inputs/InterconnectionPortGetArgs.cs b/sdk/dotnet/Metal/Inputs/InterconnectionPortGetArgs.cs index 83a54ecd..d615e582 100644 --- a/sdk/dotnet/Metal/Inputs/InterconnectionPortGetArgs.cs +++ b/sdk/dotnet/Metal/Inputs/InterconnectionPortGetArgs.cs @@ -18,24 +18,15 @@ public sealed class InterconnectionPortGetArgs : global::Pulumi.ResourceArgs [Input("linkStatus", required: true)] public Input LinkStatus { get; set; } = null!; - /// - /// Name of the connection resource - /// [Input("name", required: true)] public Input Name { get; set; } = null!; [Input("role", required: true)] public Input Role { get; set; } = null!; - /// - /// Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. - /// [Input("speed", required: true)] public Input Speed { get; set; } = null!; - /// - /// Status of the connection resource. - /// [Input("status", required: true)] public Input Status { get; set; } = null!; diff --git a/sdk/dotnet/Metal/Inputs/InterconnectionServiceTokenArgs.cs b/sdk/dotnet/Metal/Inputs/InterconnectionServiceTokenArgs.cs index 7d7b9e81..c3303dd1 100644 --- a/sdk/dotnet/Metal/Inputs/InterconnectionServiceTokenArgs.cs +++ b/sdk/dotnet/Metal/Inputs/InterconnectionServiceTokenArgs.cs @@ -27,9 +27,6 @@ public sealed class InterconnectionServiceTokenArgs : global::Pulumi.ResourceArg [Input("state", required: true)] public Input State { get; set; } = null!; - /// - /// Connection type - dedicated or shared. - /// [Input("type", required: true)] public Input Type { get; set; } = null!; diff --git a/sdk/dotnet/Metal/Inputs/InterconnectionServiceTokenGetArgs.cs b/sdk/dotnet/Metal/Inputs/InterconnectionServiceTokenGetArgs.cs index b0c9656c..d3889581 100644 --- a/sdk/dotnet/Metal/Inputs/InterconnectionServiceTokenGetArgs.cs +++ b/sdk/dotnet/Metal/Inputs/InterconnectionServiceTokenGetArgs.cs @@ -27,9 +27,6 @@ public sealed class InterconnectionServiceTokenGetArgs : global::Pulumi.Resource [Input("state", required: true)] public Input State { get; set; } = null!; - /// - /// Connection type - dedicated or shared. - /// [Input("type", required: true)] public Input Type { get; set; } = null!; diff --git a/sdk/dotnet/Metal/Interconnection.cs b/sdk/dotnet/Metal/Interconnection.cs index d7dc222e..70f7f319 100644 --- a/sdk/dotnet/Metal/Interconnection.cs +++ b/sdk/dotnet/Metal/Interconnection.cs @@ -12,10 +12,98 @@ namespace Pulumi.Equinix.Metal /// /// Use this resource to request the creation an Interconnection asset to connect with other parties using [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/). /// - /// > Equinix Metal connection with with Service Token A-side / Z-side (service_token_type) is not generally available and may not be enabled yet for your organization. - /// /// ## Example Usage - /// ### example shared metal fabric connection from fcr + /// ### example fabric billed metal from fabric port + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Equinix = Pulumi.Equinix; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var aSide = Equinix.Fabric.GetPorts.Invoke(new() + /// { + /// Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs + /// { + /// Name = "<name_of_port||port_prefix>", + /// }, + /// }); + /// + /// var example = new Equinix.Metal.Vlan("example", new() + /// { + /// ProjectId = "<metal_project_id>", + /// Metro = "FR", + /// }); + /// + /// var exampleInterconnection = new Equinix.Metal.Interconnection("exampleInterconnection", new() + /// { + /// Name = "tf-metal-from-port", + /// ProjectId = "<metal_project_id>", + /// Type = "shared", + /// Redundancy = "primary", + /// Metro = "FR", + /// Speed = "200Mbps", + /// ServiceTokenType = "z_side", + /// ContactEmail = "username@example.com", + /// Vlans = new[] + /// { + /// example.Vxlan, + /// }, + /// }); + /// + /// var exampleConnection = new Equinix.Fabric.Connection("exampleConnection", new() + /// { + /// Name = "tf-metal-from-port", + /// Type = Equinix.Fabric.ConnectionType.EVPL, + /// Bandwidth = 200, + /// Notifications = new[] + /// { + /// new Equinix.Fabric.Inputs.ConnectionNotificationArgs + /// { + /// Type = Equinix.Fabric.NotificationsType.All, + /// Emails = new[] + /// { + /// "username@example.com", + /// }, + /// }, + /// }, + /// Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs + /// { + /// PurchaseOrderNumber = "1-323292", + /// }, + /// Project = new Equinix.Fabric.Inputs.ConnectionProjectArgs + /// { + /// ProjectId = "<fabric_project_id>", + /// }, + /// ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs + /// { + /// AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs + /// { + /// Type = Equinix.Fabric.AccessPointType.Colo, + /// Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs + /// { + /// Uuid = aSide.Apply(getPortsResult => getPortsResult.Data[0]?.Uuid), + /// }, + /// LinkProtocol = new Equinix.Fabric.Inputs.ConnectionASideAccessPointLinkProtocolArgs + /// { + /// Type = Equinix.Fabric.AccessPointLinkProtocolType.Dot1q, + /// VlanTag = 1234, + /// }, + /// }, + /// }, + /// ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs + /// { + /// ServiceToken = new Equinix.Fabric.Inputs.ConnectionZSideServiceTokenArgs + /// { + /// Uuid = exampleInterconnection.ServiceTokens.Apply(serviceTokens => serviceTokens[0].Id), + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### example fabric billed metal from fcr /// ```csharp /// using System.Collections.Generic; /// using System.Linq; @@ -26,18 +114,19 @@ namespace Pulumi.Equinix.Metal /// { /// var example1 = new Equinix.Metal.Vlan("example1", new() /// { - /// ProjectId = myProjectId, + /// ProjectId = "<metal_project_id>", /// Metro = "SV", /// }); /// /// var example = new Equinix.Metal.Interconnection("example", new() /// { - /// Name = "tf-port-to-metal-legacy", - /// ProjectId = myProjectId, + /// Name = "tf-metal-from-fcr", + /// ProjectId = "<metal_project_id>", /// Metro = "SV", /// Redundancy = "primary", /// Type = "shared_port_vlan", /// ContactEmail = "username@example.com", + /// Speed = "200Mbps", /// Vlans = new[] /// { /// example1.Vxlan, @@ -46,24 +135,23 @@ namespace Pulumi.Equinix.Metal /// /// var exampleConnection = new Equinix.Fabric.Connection("exampleConnection", new() /// { - /// Name = "tf-NIMF-metal-2-aws-legacy", + /// Name = "tf-metal-from-fcr", /// Type = "IP_VC", + /// Bandwidth = 200, /// Notifications = new[] /// { /// new Equinix.Fabric.Inputs.ConnectionNotificationArgs /// { /// Type = Equinix.Fabric.NotificationsType.All, - /// Emails = "sername@example.com", + /// Emails = new[] + /// { + /// "username@example.com", + /// }, /// }, /// }, /// Project = new Equinix.Fabric.Inputs.ConnectionProjectArgs /// { - /// ProjectId = fabricProjectId, - /// }, - /// Bandwidth = 200, - /// Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs - /// { - /// PurchaseOrderNumber = "1-323292", + /// ProjectId = "<fabric_project_id>", /// }, /// ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs /// { @@ -72,7 +160,7 @@ namespace Pulumi.Equinix.Metal /// Type = "CLOUD_ROUTER", /// Router = new Equinix.Fabric.Inputs.ConnectionASideAccessPointRouterArgs /// { - /// Uuid = cloudRouterUuid, + /// Uuid = exampleEquinixFabricCloudRouter.Id, /// }, /// }, /// }, @@ -88,7 +176,7 @@ namespace Pulumi.Equinix.Metal /// /// }); /// ``` - /// ### example shared metal fabric connection to csp + /// ### example fabric billed metal from network edge /// ```csharp /// using System.Collections.Generic; /// using System.Linq; @@ -97,83 +185,154 @@ namespace Pulumi.Equinix.Metal /// /// return await Deployment.RunAsync(() => /// { - /// var zside = Equinix.Fabric.GetServiceProfiles.Invoke(new() + /// var example = new Equinix.Metal.Vrf("example", new() + /// { + /// Name = "tf-metal-from-ne", + /// Metro = "FR", + /// LocalAsn = 65001, + /// IpRanges = new[] + /// { + /// "10.99.1.0/24", + /// }, + /// ProjectId = test.Id, + /// }); + /// + /// var exampleInterconnection = new Equinix.Metal.Interconnection("exampleInterconnection", new() + /// { + /// Name = "tf-metal-from-ne", + /// ProjectId = "<metal_project_id>", + /// Type = "shared", + /// Redundancy = "primary", + /// Metro = "FR", + /// Speed = "200Mbps", + /// ServiceTokenType = "z_side", + /// ContactEmail = "username@example.com", + /// Vrfs = new[] + /// { + /// example.Vxlan, + /// }, + /// }); + /// + /// var exampleConnection = new Equinix.Fabric.Connection("exampleConnection", new() /// { - /// Filter = new Equinix.Fabric.Inputs.GetServiceProfilesFilterInputArgs + /// Name = "tf-metal-from-ne", + /// Type = Equinix.Fabric.ConnectionType.EVPL, + /// Bandwidth = 200, + /// Notifications = new[] /// { - /// Property = "/name", - /// Operator = "=", - /// Values = new[] + /// new Equinix.Fabric.Inputs.ConnectionNotificationArgs /// { - /// "AWS Direct Connect", + /// Type = Equinix.Fabric.NotificationsType.All, + /// Emails = new[] + /// { + /// "username@example.com", + /// }, + /// }, + /// }, + /// Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs + /// { + /// PurchaseOrderNumber = "1-323292", + /// }, + /// Project = new Equinix.Fabric.Inputs.ConnectionProjectArgs + /// { + /// ProjectId = "<fabric_project_id>", + /// }, + /// ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs + /// { + /// AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs + /// { + /// Type = Equinix.Fabric.AccessPointType.VD, + /// VirtualDevice = new Equinix.Fabric.Inputs.ConnectionASideAccessPointVirtualDeviceArgs + /// { + /// Type = "EDGE", + /// Uuid = exampleEquinixNetworkDevice.Id, + /// }, + /// }, + /// }, + /// ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs + /// { + /// ServiceToken = new Equinix.Fabric.Inputs.ConnectionZSideServiceTokenArgs + /// { + /// Uuid = exampleInterconnection.ServiceTokens.Apply(serviceTokens => serviceTokens[0].Id), /// }, /// }, /// }); /// - /// var example1 = new Equinix.Metal.Vlan("example1", new() + /// }); + /// ``` + /// ### example metal billed metal to fabric port + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Equinix = Pulumi.Equinix; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var aSide = Equinix.Fabric.GetPorts.Invoke(new() /// { - /// ProjectId = myProjectId, - /// Metro = "SV", + /// Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs + /// { + /// Name = "<name_of_port||port_prefix>", + /// }, /// }); /// /// var example = new Equinix.Metal.Interconnection("example", new() /// { - /// Name = "tf-port-to-metal-legacy", - /// ProjectId = myProjectId, - /// Metro = "SV", - /// Redundancy = "primary", - /// Type = "shared_port_vlan", + /// Name = "tf-metal-2-port", + /// ProjectId = "<metal_project_id>", + /// Type = "shared", + /// Redundancy = "redundant", + /// Metro = "FR", + /// Speed = "1Gbps", + /// ServiceTokenType = "a_side", /// ContactEmail = "username@example.com", - /// Vlans = new[] - /// { - /// example1.Vxlan, - /// }, /// }); /// /// var exampleConnection = new Equinix.Fabric.Connection("exampleConnection", new() /// { - /// Name = "tf-NIMF-metal-2-aws-legacy", + /// Name = "tf-metal-2-port", /// Type = Equinix.Fabric.ConnectionType.EVPL, /// Notifications = new[] /// { /// new Equinix.Fabric.Inputs.ConnectionNotificationArgs /// { /// Type = Equinix.Fabric.NotificationsType.All, - /// Emails = "sername@example.com", + /// Emails = new[] + /// { + /// "username@example.com", + /// }, /// }, /// }, /// Project = new Equinix.Fabric.Inputs.ConnectionProjectArgs /// { - /// ProjectId = fabricProjectId, + /// ProjectId = "<fabric_project_id>", /// }, - /// Bandwidth = 200, + /// Bandwidth = 100, /// Order = new Equinix.Fabric.Inputs.ConnectionOrderArgs /// { /// PurchaseOrderNumber = "1-323292", /// }, /// ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs /// { - /// AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs + /// ServiceToken = new Equinix.Fabric.Inputs.ConnectionASideServiceTokenArgs /// { - /// Type = "METAL_NETWORK", - /// AuthenticationKey = example.AuthorizationCode, + /// Uuid = example.ServiceTokens.Apply(serviceTokens => serviceTokens[0].Id), /// }, /// }, /// ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs /// { /// AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs /// { - /// Type = Equinix.Fabric.AccessPointType.SP, - /// AuthenticationKey = awsAccountId, - /// SellerRegion = "us-west-1", - /// Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs + /// Type = Equinix.Fabric.AccessPointType.Colo, + /// Port = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointPortArgs /// { - /// Type = Equinix.Fabric.ProfileType.L2Profile, - /// Uuid = zside.Apply(getServiceProfilesResult => getServiceProfilesResult.Id), + /// Uuid = aSide.Apply(getPortsResult => getPortsResult.Data[0]?.Uuid), /// }, - /// Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs + /// LinkProtocol = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLinkProtocolArgs /// { - /// MetroCode = Equinix.Metro.SiliconValley, + /// Type = Equinix.Fabric.AccessPointLinkProtocolType.Dot1q, + /// VlanTag = 1234, /// }, /// }, /// }, @@ -186,37 +345,37 @@ namespace Pulumi.Equinix.Metal public partial class Interconnection : global::Pulumi.CustomResource { /// - /// Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services). + /// Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric. /// [Output("authorizationCode")] public Output AuthorizationCode { get; private set; } = null!; /// - /// The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. + /// The preferred email used for communication and notifications about the Equinix Fabric interconnection /// [Output("contactEmail")] public Output ContactEmail { get; private set; } = null!; /// - /// Description for the connection resource. + /// Description of the connection resource /// [Output("description")] public Output Description { get; private set; } = null!; /// - /// Facility where the connection will be created. Use metro instead; read the facility to metro migration guide + /// Facility where the connection will be created /// [Output("facility")] public Output Facility { get; private set; } = null!; /// - /// Metro where the connection will be created. + /// Metro where the connection will be created /// [Output("metro")] public Output Metro { get; private set; } = null!; /// - /// Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard. + /// Mode for connections in IBX facilities with the dedicated type - standard or tunnel /// [Output("mode")] public Output Mode { get; private set; } = null!; @@ -228,80 +387,79 @@ public partial class Interconnection : global::Pulumi.CustomResource public Output Name { get; private set; } = null!; /// - /// ID of the organization where the connection is scoped to. + /// ID of the organization responsible for the connection. Applicable with type "dedicated" /// [Output("organizationId")] public Output OrganizationId { get; private set; } = null!; /// - /// List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource. + /// List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`) /// [Output("ports")] public Output> Ports { get; private set; } = null!; /// - /// ID of the project where the connection is scoped to, must be set for. + /// ID of the project where the connection is scoped to. Required with type "shared" /// [Output("projectId")] public Output ProjectId { get; private set; } = null!; /// - /// Connection redundancy - redundant or primary. + /// Connection redundancy - redundant or primary /// [Output("redundancy")] public Output Redundancy { get; private set; } = null!; /// - /// Only used with shared connection. Type of service token to use for the connection, a_side or z_side + /// Only used with shared connection. Type of service token to use for the connection, a*side or z*side /// [Output("serviceTokenType")] public Output ServiceTokenType { get; private set; } = null!; /// - /// List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the equinix.metal.Interconnection datasource. + /// Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) /// [Output("serviceTokens")] public Output> ServiceTokens { get; private set; } = null!; /// - /// Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. + /// Connection speed - Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. /// [Output("speed")] public Output Speed { get; private set; } = null!; /// - /// Status of the connection resource. + /// Status of the connection resource /// [Output("status")] public Output Status { get; private set; } = null!; /// - /// String list of tags. + /// Tags attached to the connection /// [Output("tags")] public Output> Tags { get; private set; } = null!; /// - /// (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead. + /// Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) /// [Output("token")] public Output Token { get; private set; } = null!; /// - /// Connection type - dedicated or shared. + /// Connection type - dedicated, shared or shared*port*vlan /// [Output("type")] public Output Type { get; private set; } = null!; /// - /// Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection. + /// Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection /// [Output("vlans")] public Output> Vlans { get; private set; } = null!; /// - /// Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant - /// connection + /// Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection /// [Output("vrfs")] public Output> Vrfs { get; private set; } = null!; @@ -354,31 +512,31 @@ public static Interconnection Get(string name, Input id, Interconnection public sealed class InterconnectionArgs : global::Pulumi.ResourceArgs { /// - /// The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. + /// The preferred email used for communication and notifications about the Equinix Fabric interconnection /// [Input("contactEmail")] public Input? ContactEmail { get; set; } /// - /// Description for the connection resource. + /// Description of the connection resource /// [Input("description")] public Input? Description { get; set; } /// - /// Facility where the connection will be created. Use metro instead; read the facility to metro migration guide + /// Facility where the connection will be created /// [Input("facility")] public Input? Facility { get; set; } /// - /// Metro where the connection will be created. + /// Metro where the connection will be created /// [Input("metro")] public Input? Metro { get; set; } /// - /// Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard. + /// Mode for connections in IBX facilities with the dedicated type - standard or tunnel /// [Input("mode")] public Input? Mode { get; set; } @@ -390,31 +548,31 @@ public sealed class InterconnectionArgs : global::Pulumi.ResourceArgs public Input? Name { get; set; } /// - /// ID of the organization where the connection is scoped to. + /// ID of the organization responsible for the connection. Applicable with type "dedicated" /// [Input("organizationId")] public Input? OrganizationId { get; set; } /// - /// ID of the project where the connection is scoped to, must be set for. + /// ID of the project where the connection is scoped to. Required with type "shared" /// [Input("projectId")] public Input? ProjectId { get; set; } /// - /// Connection redundancy - redundant or primary. + /// Connection redundancy - redundant or primary /// [Input("redundancy", required: true)] public Input Redundancy { get; set; } = null!; /// - /// Only used with shared connection. Type of service token to use for the connection, a_side or z_side + /// Only used with shared connection. Type of service token to use for the connection, a*side or z*side /// [Input("serviceTokenType")] public Input? ServiceTokenType { get; set; } /// - /// Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. + /// Connection speed - Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. /// [Input("speed")] public Input? Speed { get; set; } @@ -423,7 +581,7 @@ public sealed class InterconnectionArgs : global::Pulumi.ResourceArgs private InputList? _tags; /// - /// String list of tags. + /// Tags attached to the connection /// public InputList Tags { @@ -432,7 +590,7 @@ public InputList Tags } /// - /// Connection type - dedicated or shared. + /// Connection type - dedicated, shared or shared*port*vlan /// [Input("type", required: true)] public Input Type { get; set; } = null!; @@ -441,7 +599,7 @@ public InputList Tags private InputList? _vlans; /// - /// Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection. + /// Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection /// public InputList Vlans { @@ -453,8 +611,7 @@ public InputList Vlans private InputList? _vrfs; /// - /// Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant - /// connection + /// Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection /// public InputList Vrfs { @@ -471,37 +628,37 @@ public InterconnectionArgs() public sealed class InterconnectionState : global::Pulumi.ResourceArgs { /// - /// Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services). + /// Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric. /// [Input("authorizationCode")] public Input? AuthorizationCode { get; set; } /// - /// The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. + /// The preferred email used for communication and notifications about the Equinix Fabric interconnection /// [Input("contactEmail")] public Input? ContactEmail { get; set; } /// - /// Description for the connection resource. + /// Description of the connection resource /// [Input("description")] public Input? Description { get; set; } /// - /// Facility where the connection will be created. Use metro instead; read the facility to metro migration guide + /// Facility where the connection will be created /// [Input("facility")] public Input? Facility { get; set; } /// - /// Metro where the connection will be created. + /// Metro where the connection will be created /// [Input("metro")] public Input? Metro { get; set; } /// - /// Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard. + /// Mode for connections in IBX facilities with the dedicated type - standard or tunnel /// [Input("mode")] public Input? Mode { get; set; } @@ -513,7 +670,7 @@ public sealed class InterconnectionState : global::Pulumi.ResourceArgs public Input? Name { get; set; } /// - /// ID of the organization where the connection is scoped to. + /// ID of the organization responsible for the connection. Applicable with type "dedicated" /// [Input("organizationId")] public Input? OrganizationId { get; set; } @@ -522,7 +679,7 @@ public sealed class InterconnectionState : global::Pulumi.ResourceArgs private InputList? _ports; /// - /// List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource. + /// List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`) /// public InputList Ports { @@ -531,19 +688,19 @@ public InputList Ports } /// - /// ID of the project where the connection is scoped to, must be set for. + /// ID of the project where the connection is scoped to. Required with type "shared" /// [Input("projectId")] public Input? ProjectId { get; set; } /// - /// Connection redundancy - redundant or primary. + /// Connection redundancy - redundant or primary /// [Input("redundancy")] public Input? Redundancy { get; set; } /// - /// Only used with shared connection. Type of service token to use for the connection, a_side or z_side + /// Only used with shared connection. Type of service token to use for the connection, a*side or z*side /// [Input("serviceTokenType")] public Input? ServiceTokenType { get; set; } @@ -552,7 +709,7 @@ public InputList Ports private InputList? _serviceTokens; /// - /// List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the equinix.metal.Interconnection datasource. + /// Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) /// public InputList ServiceTokens { @@ -561,13 +718,13 @@ public InputList ServiceTokens } /// - /// Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. + /// Connection speed - Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. /// [Input("speed")] public Input? Speed { get; set; } /// - /// Status of the connection resource. + /// Status of the connection resource /// [Input("status")] public Input? Status { get; set; } @@ -576,7 +733,7 @@ public InputList ServiceTokens private InputList? _tags; /// - /// String list of tags. + /// Tags attached to the connection /// public InputList Tags { @@ -585,13 +742,13 @@ public InputList Tags } /// - /// (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead. + /// Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) /// [Input("token")] public Input? Token { get; set; } /// - /// Connection type - dedicated or shared. + /// Connection type - dedicated, shared or shared*port*vlan /// [Input("type")] public Input? Type { get; set; } @@ -600,7 +757,7 @@ public InputList Tags private InputList? _vlans; /// - /// Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection. + /// Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection /// public InputList Vlans { @@ -612,8 +769,7 @@ public InputList Vlans private InputList? _vrfs; /// - /// Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant - /// connection + /// Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection /// public InputList Vrfs { diff --git a/sdk/dotnet/Metal/Outputs/InterconnectionPort.cs b/sdk/dotnet/Metal/Outputs/InterconnectionPort.cs index 4584a64e..3ddd0653 100644 --- a/sdk/dotnet/Metal/Outputs/InterconnectionPort.cs +++ b/sdk/dotnet/Metal/Outputs/InterconnectionPort.cs @@ -15,18 +15,9 @@ public sealed class InterconnectionPort { public readonly string Id; public readonly string LinkStatus; - /// - /// Name of the connection resource - /// public readonly string Name; public readonly string Role; - /// - /// Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. - /// public readonly int Speed; - /// - /// Status of the connection resource. - /// public readonly string Status; public readonly ImmutableArray VirtualCircuitIds; diff --git a/sdk/dotnet/Metal/Outputs/InterconnectionServiceToken.cs b/sdk/dotnet/Metal/Outputs/InterconnectionServiceToken.cs index d3f76158..c21cb1db 100644 --- a/sdk/dotnet/Metal/Outputs/InterconnectionServiceToken.cs +++ b/sdk/dotnet/Metal/Outputs/InterconnectionServiceToken.cs @@ -18,9 +18,6 @@ public sealed class InterconnectionServiceToken public readonly string MaxAllowedSpeed; public readonly string Role; public readonly string State; - /// - /// Connection type - dedicated or shared. - /// public readonly string Type; [OutputConstructor] diff --git a/sdk/dotnet/Metal/Vrf.cs b/sdk/dotnet/Metal/Vrf.cs index 77d327b4..7447c5cd 100644 --- a/sdk/dotnet/Metal/Vrf.cs +++ b/sdk/dotnet/Metal/Vrf.cs @@ -120,7 +120,7 @@ namespace Pulumi.Equinix.Metal public partial class Vrf : global::Pulumi.CustomResource { /// - /// Description of the VRF. + /// Description of the VRF /// [Output("description")] public Output Description { get; private set; } = null!; @@ -138,7 +138,7 @@ public partial class Vrf : global::Pulumi.CustomResource public Output LocalAsn { get; private set; } = null!; /// - /// Metro ID or Code where the VRF will be deployed. + /// Metro ID or Code where the VRF will be deployed /// [Output("metro")] public Output Metro { get; private set; } = null!; @@ -150,7 +150,7 @@ public partial class Vrf : global::Pulumi.CustomResource public Output Name { get; private set; } = null!; /// - /// Project ID where the VRF will be deployed. + /// Project ID where the VRF will be deployed /// [Output("projectId")] public Output ProjectId { get; private set; } = null!; @@ -203,7 +203,7 @@ public static Vrf Get(string name, Input id, VrfState? state = null, Cus public sealed class VrfArgs : global::Pulumi.ResourceArgs { /// - /// Description of the VRF. + /// Description of the VRF /// [Input("description")] public Input? Description { get; set; } @@ -227,7 +227,7 @@ public InputList IpRanges public Input? LocalAsn { get; set; } /// - /// Metro ID or Code where the VRF will be deployed. + /// Metro ID or Code where the VRF will be deployed /// [Input("metro", required: true)] public Input Metro { get; set; } = null!; @@ -239,7 +239,7 @@ public InputList IpRanges public Input? Name { get; set; } /// - /// Project ID where the VRF will be deployed. + /// Project ID where the VRF will be deployed /// [Input("projectId", required: true)] public Input ProjectId { get; set; } = null!; @@ -253,7 +253,7 @@ public VrfArgs() public sealed class VrfState : global::Pulumi.ResourceArgs { /// - /// Description of the VRF. + /// Description of the VRF /// [Input("description")] public Input? Description { get; set; } @@ -277,7 +277,7 @@ public InputList IpRanges public Input? LocalAsn { get; set; } /// - /// Metro ID or Code where the VRF will be deployed. + /// Metro ID or Code where the VRF will be deployed /// [Input("metro")] public Input? Metro { get; set; } @@ -289,7 +289,7 @@ public InputList IpRanges public Input? Name { get; set; } /// - /// Project ID where the VRF will be deployed. + /// Project ID where the VRF will be deployed /// [Input("projectId")] public Input? ProjectId { get; set; } diff --git a/sdk/dotnet/NetworkEdge/Inputs/DeviceSecondaryDeviceSshKeyArgs.cs b/sdk/dotnet/NetworkEdge/Inputs/DeviceSecondaryDeviceSshKeyArgs.cs index 33e4cfa2..bc528c70 100644 --- a/sdk/dotnet/NetworkEdge/Inputs/DeviceSecondaryDeviceSshKeyArgs.cs +++ b/sdk/dotnet/NetworkEdge/Inputs/DeviceSecondaryDeviceSshKeyArgs.cs @@ -15,8 +15,8 @@ public sealed class DeviceSecondaryDeviceSshKeyArgs : global::Pulumi.ResourceArg /// /// Reference by name to previously provisioned public SSH key /// - [Input("keyName", required: true)] - public Input KeyName { get; set; } = null!; + [Input("keyName")] + public Input? KeyName { get; set; } /// /// username associated with given key. diff --git a/sdk/dotnet/NetworkEdge/Inputs/DeviceSecondaryDeviceSshKeyGetArgs.cs b/sdk/dotnet/NetworkEdge/Inputs/DeviceSecondaryDeviceSshKeyGetArgs.cs index fdb33598..64cdb73a 100644 --- a/sdk/dotnet/NetworkEdge/Inputs/DeviceSecondaryDeviceSshKeyGetArgs.cs +++ b/sdk/dotnet/NetworkEdge/Inputs/DeviceSecondaryDeviceSshKeyGetArgs.cs @@ -15,8 +15,8 @@ public sealed class DeviceSecondaryDeviceSshKeyGetArgs : global::Pulumi.Resource /// /// Reference by name to previously provisioned public SSH key /// - [Input("keyName", required: true)] - public Input KeyName { get; set; } = null!; + [Input("keyName")] + public Input? KeyName { get; set; } /// /// username associated with given key. diff --git a/sdk/dotnet/NetworkEdge/Inputs/DeviceSshKeyArgs.cs b/sdk/dotnet/NetworkEdge/Inputs/DeviceSshKeyArgs.cs index c9d7141a..a09d51b3 100644 --- a/sdk/dotnet/NetworkEdge/Inputs/DeviceSshKeyArgs.cs +++ b/sdk/dotnet/NetworkEdge/Inputs/DeviceSshKeyArgs.cs @@ -15,8 +15,8 @@ public sealed class DeviceSshKeyArgs : global::Pulumi.ResourceArgs /// /// Reference by name to previously provisioned public SSH key /// - [Input("keyName", required: true)] - public Input KeyName { get; set; } = null!; + [Input("keyName")] + public Input? KeyName { get; set; } /// /// username associated with given key. diff --git a/sdk/dotnet/NetworkEdge/Inputs/DeviceSshKeyGetArgs.cs b/sdk/dotnet/NetworkEdge/Inputs/DeviceSshKeyGetArgs.cs index b09e3898..05acde18 100644 --- a/sdk/dotnet/NetworkEdge/Inputs/DeviceSshKeyGetArgs.cs +++ b/sdk/dotnet/NetworkEdge/Inputs/DeviceSshKeyGetArgs.cs @@ -15,8 +15,8 @@ public sealed class DeviceSshKeyGetArgs : global::Pulumi.ResourceArgs /// /// Reference by name to previously provisioned public SSH key /// - [Input("keyName", required: true)] - public Input KeyName { get; set; } = null!; + [Input("keyName")] + public Input? KeyName { get; set; } /// /// username associated with given key. diff --git a/sdk/dotnet/NetworkEdge/Outputs/DeviceSecondaryDeviceSshKey.cs b/sdk/dotnet/NetworkEdge/Outputs/DeviceSecondaryDeviceSshKey.cs index 1516988b..0ca060e4 100644 --- a/sdk/dotnet/NetworkEdge/Outputs/DeviceSecondaryDeviceSshKey.cs +++ b/sdk/dotnet/NetworkEdge/Outputs/DeviceSecondaryDeviceSshKey.cs @@ -16,7 +16,7 @@ public sealed class DeviceSecondaryDeviceSshKey /// /// Reference by name to previously provisioned public SSH key /// - public readonly string KeyName; + public readonly string? KeyName; /// /// username associated with given key. /// @@ -24,7 +24,7 @@ public sealed class DeviceSecondaryDeviceSshKey [OutputConstructor] private DeviceSecondaryDeviceSshKey( - string keyName, + string? keyName, string username) { diff --git a/sdk/dotnet/NetworkEdge/Outputs/DeviceSshKey.cs b/sdk/dotnet/NetworkEdge/Outputs/DeviceSshKey.cs index 004f7ec2..720e82b7 100644 --- a/sdk/dotnet/NetworkEdge/Outputs/DeviceSshKey.cs +++ b/sdk/dotnet/NetworkEdge/Outputs/DeviceSshKey.cs @@ -16,7 +16,7 @@ public sealed class DeviceSshKey /// /// Reference by name to previously provisioned public SSH key /// - public readonly string KeyName; + public readonly string? KeyName; /// /// username associated with given key. /// @@ -24,7 +24,7 @@ public sealed class DeviceSshKey [OutputConstructor] private DeviceSshKey( - string keyName, + string? keyName, string username) { diff --git a/sdk/go/equinix/fabric/getRoutingProtocol.go b/sdk/go/equinix/fabric/getRoutingProtocol.go index 5f48fb43..2b8fa88b 100644 --- a/sdk/go/equinix/fabric/getRoutingProtocol.go +++ b/sdk/go/equinix/fabric/getRoutingProtocol.go @@ -77,6 +77,8 @@ type LookupRoutingProtocolArgs struct { // A collection of values returned by getRoutingProtocol. type LookupRoutingProtocolResult struct { + // Enable AS number override + AsOverrideEnabled bool `pulumi:"asOverrideEnabled"` // Bidirectional Forwarding Detection Bfd GetRoutingProtocolBfd `pulumi:"bfd"` // BGP authorization key @@ -163,6 +165,11 @@ func (o LookupRoutingProtocolResultOutput) ToLookupRoutingProtocolResultOutputWi return o } +// Enable AS number override +func (o LookupRoutingProtocolResultOutput) AsOverrideEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v LookupRoutingProtocolResult) bool { return v.AsOverrideEnabled }).(pulumi.BoolOutput) +} + // Bidirectional Forwarding Detection func (o LookupRoutingProtocolResultOutput) Bfd() GetRoutingProtocolBfdOutput { return o.ApplyT(func(v LookupRoutingProtocolResult) GetRoutingProtocolBfd { return v.Bfd }).(GetRoutingProtocolBfdOutput) diff --git a/sdk/go/equinix/fabric/pulumiTypes.go b/sdk/go/equinix/fabric/pulumiTypes.go index c40b95d2..b57fa404 100644 --- a/sdk/go/equinix/fabric/pulumiTypes.go +++ b/sdk/go/equinix/fabric/pulumiTypes.go @@ -10409,6 +10409,12 @@ type RoutingProtocolBgpIpv4 struct { Enabled *bool `pulumi:"enabled"` // Equinix side peering ip EquinixPeerIp *string `pulumi:"equinixPeerIp"` + // Inbound Multi Exit Discriminator attribute + InboundMed *int `pulumi:"inboundMed"` + // AS path prepend count. One of: 0, 1, 3, 5 + OutboundAsPrependCount *string `pulumi:"outboundAsPrependCount"` + // Outbound Multi Exit Discriminator attribute + OutboundMed *int `pulumi:"outboundMed"` } // RoutingProtocolBgpIpv4Input is an input type that accepts RoutingProtocolBgpIpv4Args and RoutingProtocolBgpIpv4Output values. @@ -10429,6 +10435,12 @@ type RoutingProtocolBgpIpv4Args struct { Enabled pulumi.BoolPtrInput `pulumi:"enabled"` // Equinix side peering ip EquinixPeerIp pulumi.StringPtrInput `pulumi:"equinixPeerIp"` + // Inbound Multi Exit Discriminator attribute + InboundMed pulumi.IntPtrInput `pulumi:"inboundMed"` + // AS path prepend count. One of: 0, 1, 3, 5 + OutboundAsPrependCount pulumi.StringPtrInput `pulumi:"outboundAsPrependCount"` + // Outbound Multi Exit Discriminator attribute + OutboundMed pulumi.IntPtrInput `pulumi:"outboundMed"` } func (RoutingProtocolBgpIpv4Args) ElementType() reflect.Type { @@ -10523,6 +10535,21 @@ func (o RoutingProtocolBgpIpv4Output) EquinixPeerIp() pulumi.StringPtrOutput { return o.ApplyT(func(v RoutingProtocolBgpIpv4) *string { return v.EquinixPeerIp }).(pulumi.StringPtrOutput) } +// Inbound Multi Exit Discriminator attribute +func (o RoutingProtocolBgpIpv4Output) InboundMed() pulumi.IntPtrOutput { + return o.ApplyT(func(v RoutingProtocolBgpIpv4) *int { return v.InboundMed }).(pulumi.IntPtrOutput) +} + +// AS path prepend count. One of: 0, 1, 3, 5 +func (o RoutingProtocolBgpIpv4Output) OutboundAsPrependCount() pulumi.StringPtrOutput { + return o.ApplyT(func(v RoutingProtocolBgpIpv4) *string { return v.OutboundAsPrependCount }).(pulumi.StringPtrOutput) +} + +// Outbound Multi Exit Discriminator attribute +func (o RoutingProtocolBgpIpv4Output) OutboundMed() pulumi.IntPtrOutput { + return o.ApplyT(func(v RoutingProtocolBgpIpv4) *int { return v.OutboundMed }).(pulumi.IntPtrOutput) +} + type RoutingProtocolBgpIpv4PtrOutput struct{ *pulumi.OutputState } func (RoutingProtocolBgpIpv4PtrOutput) ElementType() reflect.Type { @@ -10577,6 +10604,36 @@ func (o RoutingProtocolBgpIpv4PtrOutput) EquinixPeerIp() pulumi.StringPtrOutput }).(pulumi.StringPtrOutput) } +// Inbound Multi Exit Discriminator attribute +func (o RoutingProtocolBgpIpv4PtrOutput) InboundMed() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RoutingProtocolBgpIpv4) *int { + if v == nil { + return nil + } + return v.InboundMed + }).(pulumi.IntPtrOutput) +} + +// AS path prepend count. One of: 0, 1, 3, 5 +func (o RoutingProtocolBgpIpv4PtrOutput) OutboundAsPrependCount() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RoutingProtocolBgpIpv4) *string { + if v == nil { + return nil + } + return v.OutboundAsPrependCount + }).(pulumi.StringPtrOutput) +} + +// Outbound Multi Exit Discriminator attribute +func (o RoutingProtocolBgpIpv4PtrOutput) OutboundMed() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RoutingProtocolBgpIpv4) *int { + if v == nil { + return nil + } + return v.OutboundMed + }).(pulumi.IntPtrOutput) +} + type RoutingProtocolBgpIpv6 struct { // Customer side peering ip CustomerPeerIp string `pulumi:"customerPeerIp"` @@ -10584,6 +10641,12 @@ type RoutingProtocolBgpIpv6 struct { Enabled *bool `pulumi:"enabled"` // Equinix side peering ip EquinixPeerIp *string `pulumi:"equinixPeerIp"` + // Inbound Multi Exit Discriminator attribute + InboundMed *int `pulumi:"inboundMed"` + // AS path prepend count. One of: 0, 1, 3, 5 + OutboundAsPrependCount *string `pulumi:"outboundAsPrependCount"` + // Outbound Multi Exit Discriminator attribute + OutboundMed *int `pulumi:"outboundMed"` } // RoutingProtocolBgpIpv6Input is an input type that accepts RoutingProtocolBgpIpv6Args and RoutingProtocolBgpIpv6Output values. @@ -10604,6 +10667,12 @@ type RoutingProtocolBgpIpv6Args struct { Enabled pulumi.BoolPtrInput `pulumi:"enabled"` // Equinix side peering ip EquinixPeerIp pulumi.StringPtrInput `pulumi:"equinixPeerIp"` + // Inbound Multi Exit Discriminator attribute + InboundMed pulumi.IntPtrInput `pulumi:"inboundMed"` + // AS path prepend count. One of: 0, 1, 3, 5 + OutboundAsPrependCount pulumi.StringPtrInput `pulumi:"outboundAsPrependCount"` + // Outbound Multi Exit Discriminator attribute + OutboundMed pulumi.IntPtrInput `pulumi:"outboundMed"` } func (RoutingProtocolBgpIpv6Args) ElementType() reflect.Type { @@ -10698,6 +10767,21 @@ func (o RoutingProtocolBgpIpv6Output) EquinixPeerIp() pulumi.StringPtrOutput { return o.ApplyT(func(v RoutingProtocolBgpIpv6) *string { return v.EquinixPeerIp }).(pulumi.StringPtrOutput) } +// Inbound Multi Exit Discriminator attribute +func (o RoutingProtocolBgpIpv6Output) InboundMed() pulumi.IntPtrOutput { + return o.ApplyT(func(v RoutingProtocolBgpIpv6) *int { return v.InboundMed }).(pulumi.IntPtrOutput) +} + +// AS path prepend count. One of: 0, 1, 3, 5 +func (o RoutingProtocolBgpIpv6Output) OutboundAsPrependCount() pulumi.StringPtrOutput { + return o.ApplyT(func(v RoutingProtocolBgpIpv6) *string { return v.OutboundAsPrependCount }).(pulumi.StringPtrOutput) +} + +// Outbound Multi Exit Discriminator attribute +func (o RoutingProtocolBgpIpv6Output) OutboundMed() pulumi.IntPtrOutput { + return o.ApplyT(func(v RoutingProtocolBgpIpv6) *int { return v.OutboundMed }).(pulumi.IntPtrOutput) +} + type RoutingProtocolBgpIpv6PtrOutput struct{ *pulumi.OutputState } func (RoutingProtocolBgpIpv6PtrOutput) ElementType() reflect.Type { @@ -10752,6 +10836,36 @@ func (o RoutingProtocolBgpIpv6PtrOutput) EquinixPeerIp() pulumi.StringPtrOutput }).(pulumi.StringPtrOutput) } +// Inbound Multi Exit Discriminator attribute +func (o RoutingProtocolBgpIpv6PtrOutput) InboundMed() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RoutingProtocolBgpIpv6) *int { + if v == nil { + return nil + } + return v.InboundMed + }).(pulumi.IntPtrOutput) +} + +// AS path prepend count. One of: 0, 1, 3, 5 +func (o RoutingProtocolBgpIpv6PtrOutput) OutboundAsPrependCount() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RoutingProtocolBgpIpv6) *string { + if v == nil { + return nil + } + return v.OutboundAsPrependCount + }).(pulumi.StringPtrOutput) +} + +// Outbound Multi Exit Discriminator attribute +func (o RoutingProtocolBgpIpv6PtrOutput) OutboundMed() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RoutingProtocolBgpIpv6) *int { + if v == nil { + return nil + } + return v.OutboundMed + }).(pulumi.IntPtrOutput) +} + type RoutingProtocolChange struct { // Routing Protocol Change URI Href *string `pulumi:"href"` @@ -35799,6 +35913,12 @@ type GetRoutingProtocolBgpIpv4 struct { Enabled *bool `pulumi:"enabled"` // Equinix side peering ip EquinixPeerIp string `pulumi:"equinixPeerIp"` + // Inbound Multi Exit Discriminator attribute + InboundMed int `pulumi:"inboundMed"` + // AS path prepend count. One of: 0, 1, 3, 5 + OutboundAsPrependCount string `pulumi:"outboundAsPrependCount"` + // Outbound Multi Exit Discriminator attribute + OutboundMed int `pulumi:"outboundMed"` } // GetRoutingProtocolBgpIpv4Input is an input type that accepts GetRoutingProtocolBgpIpv4Args and GetRoutingProtocolBgpIpv4Output values. @@ -35819,6 +35939,12 @@ type GetRoutingProtocolBgpIpv4Args struct { Enabled pulumi.BoolPtrInput `pulumi:"enabled"` // Equinix side peering ip EquinixPeerIp pulumi.StringInput `pulumi:"equinixPeerIp"` + // Inbound Multi Exit Discriminator attribute + InboundMed pulumi.IntInput `pulumi:"inboundMed"` + // AS path prepend count. One of: 0, 1, 3, 5 + OutboundAsPrependCount pulumi.StringInput `pulumi:"outboundAsPrependCount"` + // Outbound Multi Exit Discriminator attribute + OutboundMed pulumi.IntInput `pulumi:"outboundMed"` } func (GetRoutingProtocolBgpIpv4Args) ElementType() reflect.Type { @@ -35862,6 +35988,21 @@ func (o GetRoutingProtocolBgpIpv4Output) EquinixPeerIp() pulumi.StringOutput { return o.ApplyT(func(v GetRoutingProtocolBgpIpv4) string { return v.EquinixPeerIp }).(pulumi.StringOutput) } +// Inbound Multi Exit Discriminator attribute +func (o GetRoutingProtocolBgpIpv4Output) InboundMed() pulumi.IntOutput { + return o.ApplyT(func(v GetRoutingProtocolBgpIpv4) int { return v.InboundMed }).(pulumi.IntOutput) +} + +// AS path prepend count. One of: 0, 1, 3, 5 +func (o GetRoutingProtocolBgpIpv4Output) OutboundAsPrependCount() pulumi.StringOutput { + return o.ApplyT(func(v GetRoutingProtocolBgpIpv4) string { return v.OutboundAsPrependCount }).(pulumi.StringOutput) +} + +// Outbound Multi Exit Discriminator attribute +func (o GetRoutingProtocolBgpIpv4Output) OutboundMed() pulumi.IntOutput { + return o.ApplyT(func(v GetRoutingProtocolBgpIpv4) int { return v.OutboundMed }).(pulumi.IntOutput) +} + type GetRoutingProtocolBgpIpv6 struct { // Customer side peering ip CustomerPeerIp string `pulumi:"customerPeerIp"` @@ -35869,6 +36010,12 @@ type GetRoutingProtocolBgpIpv6 struct { Enabled *bool `pulumi:"enabled"` // Equinix side peering ip EquinixPeerIp string `pulumi:"equinixPeerIp"` + // Inbound Multi Exit Discriminator attribute + InboundMed int `pulumi:"inboundMed"` + // AS path prepend count. One of: 0, 1, 3, 5 + OutboundAsPrependCount string `pulumi:"outboundAsPrependCount"` + // Outbound Multi Exit Discriminator attribute + OutboundMed int `pulumi:"outboundMed"` } // GetRoutingProtocolBgpIpv6Input is an input type that accepts GetRoutingProtocolBgpIpv6Args and GetRoutingProtocolBgpIpv6Output values. @@ -35889,6 +36036,12 @@ type GetRoutingProtocolBgpIpv6Args struct { Enabled pulumi.BoolPtrInput `pulumi:"enabled"` // Equinix side peering ip EquinixPeerIp pulumi.StringInput `pulumi:"equinixPeerIp"` + // Inbound Multi Exit Discriminator attribute + InboundMed pulumi.IntInput `pulumi:"inboundMed"` + // AS path prepend count. One of: 0, 1, 3, 5 + OutboundAsPrependCount pulumi.StringInput `pulumi:"outboundAsPrependCount"` + // Outbound Multi Exit Discriminator attribute + OutboundMed pulumi.IntInput `pulumi:"outboundMed"` } func (GetRoutingProtocolBgpIpv6Args) ElementType() reflect.Type { @@ -35932,6 +36085,21 @@ func (o GetRoutingProtocolBgpIpv6Output) EquinixPeerIp() pulumi.StringOutput { return o.ApplyT(func(v GetRoutingProtocolBgpIpv6) string { return v.EquinixPeerIp }).(pulumi.StringOutput) } +// Inbound Multi Exit Discriminator attribute +func (o GetRoutingProtocolBgpIpv6Output) InboundMed() pulumi.IntOutput { + return o.ApplyT(func(v GetRoutingProtocolBgpIpv6) int { return v.InboundMed }).(pulumi.IntOutput) +} + +// AS path prepend count. One of: 0, 1, 3, 5 +func (o GetRoutingProtocolBgpIpv6Output) OutboundAsPrependCount() pulumi.StringOutput { + return o.ApplyT(func(v GetRoutingProtocolBgpIpv6) string { return v.OutboundAsPrependCount }).(pulumi.StringOutput) +} + +// Outbound Multi Exit Discriminator attribute +func (o GetRoutingProtocolBgpIpv6Output) OutboundMed() pulumi.IntOutput { + return o.ApplyT(func(v GetRoutingProtocolBgpIpv6) int { return v.OutboundMed }).(pulumi.IntOutput) +} + type GetRoutingProtocolChange struct { // Routing Protocol Change URI Href string `pulumi:"href"` diff --git a/sdk/go/equinix/fabric/routingProtocol.go b/sdk/go/equinix/fabric/routingProtocol.go index ec73f426..b91855a3 100644 --- a/sdk/go/equinix/fabric/routingProtocol.go +++ b/sdk/go/equinix/fabric/routingProtocol.go @@ -141,6 +141,8 @@ import ( type RoutingProtocol struct { pulumi.CustomResourceState + // Enable AS number override + AsOverrideEnabled pulumi.BoolOutput `pulumi:"asOverrideEnabled"` // Bidirectional Forwarding Detection Bfd RoutingProtocolBfdOutput `pulumi:"bfd"` // BGP authorization key @@ -212,6 +214,8 @@ func GetRoutingProtocol(ctx *pulumi.Context, // Input properties used for looking up and filtering RoutingProtocol resources. type routingProtocolState struct { + // Enable AS number override + AsOverrideEnabled *bool `pulumi:"asOverrideEnabled"` // Bidirectional Forwarding Detection Bfd *RoutingProtocolBfd `pulumi:"bfd"` // BGP authorization key @@ -251,6 +255,8 @@ type routingProtocolState struct { } type RoutingProtocolState struct { + // Enable AS number override + AsOverrideEnabled pulumi.BoolPtrInput // Bidirectional Forwarding Detection Bfd RoutingProtocolBfdPtrInput // BGP authorization key @@ -294,6 +300,8 @@ func (RoutingProtocolState) ElementType() reflect.Type { } type routingProtocolArgs struct { + // Enable AS number override + AsOverrideEnabled *bool `pulumi:"asOverrideEnabled"` // Bidirectional Forwarding Detection Bfd *RoutingProtocolBfd `pulumi:"bfd"` // BGP authorization key @@ -322,6 +330,8 @@ type routingProtocolArgs struct { // The set of arguments for constructing a RoutingProtocol resource. type RoutingProtocolArgs struct { + // Enable AS number override + AsOverrideEnabled pulumi.BoolPtrInput // Bidirectional Forwarding Detection Bfd RoutingProtocolBfdPtrInput // BGP authorization key @@ -435,6 +445,11 @@ func (o RoutingProtocolOutput) ToRoutingProtocolOutputWithContext(ctx context.Co return o } +// Enable AS number override +func (o RoutingProtocolOutput) AsOverrideEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v *RoutingProtocol) pulumi.BoolOutput { return v.AsOverrideEnabled }).(pulumi.BoolOutput) +} + // Bidirectional Forwarding Detection func (o RoutingProtocolOutput) Bfd() RoutingProtocolBfdOutput { return o.ApplyT(func(v *RoutingProtocol) RoutingProtocolBfdOutput { return v.Bfd }).(RoutingProtocolBfdOutput) diff --git a/sdk/go/equinix/metal/interconnection.go b/sdk/go/equinix/metal/interconnection.go index 9ae66e3a..3ecd86ec 100644 --- a/sdk/go/equinix/metal/interconnection.go +++ b/sdk/go/equinix/metal/interconnection.go @@ -15,10 +15,99 @@ import ( // Use this resource to request the creation an Interconnection asset to connect with other parties using [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/). // -// > Equinix Metal connection with with Service Token A-side / Z-side (service_token_type) is not generally available and may not be enabled yet for your organization. -// // ## Example Usage -// ### example shared metal fabric connection from fcr +// ### example fabric billed metal from fabric port +// ```go +// package main +// +// import ( +// +// "github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric" +// "github.com/equinix/pulumi-equinix/sdk/go/equinix/metal" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// aSide, err := fabric.GetPorts(ctx, &fabric.GetPortsArgs{ +// Filter: fabric.GetPortsFilter{ +// Name: "", +// }, +// }, nil) +// if err != nil { +// return err +// } +// example, err := metal.NewVlan(ctx, "example", &metal.VlanArgs{ +// ProjectId: pulumi.String(""), +// Metro: pulumi.String("FR"), +// }) +// if err != nil { +// return err +// } +// exampleInterconnection, err := metal.NewInterconnection(ctx, "exampleInterconnection", &metal.InterconnectionArgs{ +// Name: pulumi.String("tf-metal-from-port"), +// ProjectId: pulumi.String(""), +// Type: pulumi.String("shared"), +// Redundancy: pulumi.String("primary"), +// Metro: pulumi.String("FR"), +// Speed: pulumi.String("200Mbps"), +// ServiceTokenType: pulumi.String("z_side"), +// ContactEmail: pulumi.String("username@example.com"), +// Vlans: pulumi.IntArray{ +// example.Vxlan, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = fabric.NewConnection(ctx, "exampleConnection", &fabric.ConnectionArgs{ +// Name: pulumi.String("tf-metal-from-port"), +// Type: pulumi.String(fabric.ConnectionTypeEVPL), +// Bandwidth: pulumi.Int(200), +// Notifications: fabric.ConnectionNotificationArray{ +// &fabric.ConnectionNotificationArgs{ +// Type: pulumi.String(fabric.NotificationsTypeAll), +// Emails: pulumi.StringArray{ +// pulumi.String("username@example.com"), +// }, +// }, +// }, +// Order: &fabric.ConnectionOrderArgs{ +// PurchaseOrderNumber: pulumi.String("1-323292"), +// }, +// Project: &fabric.ConnectionProjectArgs{ +// ProjectId: pulumi.String(""), +// }, +// ASide: &fabric.ConnectionASideArgs{ +// AccessPoint: &fabric.ConnectionASideAccessPointArgs{ +// Type: pulumi.String(fabric.AccessPointTypeColo), +// Port: &fabric.ConnectionASideAccessPointPortArgs{ +// Uuid: pulumi.String(aSide.Data[0].Uuid), +// }, +// LinkProtocol: &fabric.ConnectionASideAccessPointLinkProtocolArgs{ +// Type: pulumi.String(fabric.AccessPointLinkProtocolTypeDot1q), +// VlanTag: pulumi.Int(1234), +// }, +// }, +// }, +// ZSide: &fabric.ConnectionZSideArgs{ +// ServiceToken: &fabric.ConnectionZSideServiceTokenArgs{ +// Uuid: exampleInterconnection.ServiceTokens.ApplyT(func(serviceTokens []metal.InterconnectionServiceToken) (*string, error) { +// return &serviceTokens[0].Id, nil +// }).(pulumi.StringPtrOutput), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### example fabric billed metal from fcr // ```go // package main // @@ -33,19 +122,20 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // example1, err := metal.NewVlan(ctx, "example1", &metal.VlanArgs{ -// ProjectId: pulumi.Any(myProjectId), +// ProjectId: pulumi.String(""), // Metro: pulumi.String("SV"), // }) // if err != nil { // return err // } // example, err := metal.NewInterconnection(ctx, "example", &metal.InterconnectionArgs{ -// Name: pulumi.String("tf-port-to-metal-legacy"), -// ProjectId: pulumi.Any(myProjectId), +// Name: pulumi.String("tf-metal-from-fcr"), +// ProjectId: pulumi.String(""), // Metro: pulumi.String("SV"), // Redundancy: pulumi.String("primary"), // Type: pulumi.String("shared_port_vlan"), // ContactEmail: pulumi.String("username@example.com"), +// Speed: pulumi.String("200Mbps"), // Vlans: pulumi.IntArray{ // example1.Vxlan, // }, @@ -54,26 +144,25 @@ import ( // return err // } // _, err = fabric.NewConnection(ctx, "exampleConnection", &fabric.ConnectionArgs{ -// Name: pulumi.String("tf-NIMF-metal-2-aws-legacy"), -// Type: pulumi.String("IP_VC"), +// Name: pulumi.String("tf-metal-from-fcr"), +// Type: pulumi.String("IP_VC"), +// Bandwidth: pulumi.Int(200), // Notifications: fabric.ConnectionNotificationArray{ // &fabric.ConnectionNotificationArgs{ -// Type: pulumi.String(fabric.NotificationsTypeAll), -// Emails: pulumi.StringArray("sername@example.com"), +// Type: pulumi.String(fabric.NotificationsTypeAll), +// Emails: pulumi.StringArray{ +// pulumi.String("username@example.com"), +// }, // }, // }, // Project: &fabric.ConnectionProjectArgs{ -// ProjectId: pulumi.Any(fabricProjectId), -// }, -// Bandwidth: pulumi.Int(200), -// Order: &fabric.ConnectionOrderArgs{ -// PurchaseOrderNumber: pulumi.String("1-323292"), +// ProjectId: pulumi.String(""), // }, // ASide: &fabric.ConnectionASideArgs{ // AccessPoint: &fabric.ConnectionASideAccessPointArgs{ // Type: pulumi.String("CLOUD_ROUTER"), // Router: &fabric.ConnectionASideAccessPointRouterArgs{ -// Uuid: pulumi.Any(cloudRouterUuid), +// Uuid: pulumi.Any(exampleEquinixFabricCloudRouter.Id), // }, // }, // }, @@ -92,13 +181,12 @@ import ( // } // // ``` -// ### example shared metal fabric connection to csp +// ### example fabric billed metal from network edge // ```go // package main // // import ( // -// "github.com/equinix/pulumi-equinix/sdk/go/equinix" // "github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric" // "github.com/equinix/pulumi-equinix/sdk/go/equinix/metal" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" @@ -107,72 +195,146 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// zside, err := fabric.GetServiceProfiles(ctx, &fabric.GetServiceProfilesArgs{ -// Filter: fabric.GetServiceProfilesFilter{ -// Property: "/name", -// Operator: "=", -// Values: []string{ -// "AWS Direct Connect", -// }, +// example, err := metal.NewVrf(ctx, "example", &metal.VrfArgs{ +// Name: pulumi.String("tf-metal-from-ne"), +// Metro: pulumi.String("FR"), +// LocalAsn: pulumi.Int(65001), +// IpRanges: pulumi.StringArray{ +// pulumi.String("10.99.1.0/24"), // }, -// }, nil) +// ProjectId: pulumi.Any(test.Id), +// }) // if err != nil { // return err // } -// example1, err := metal.NewVlan(ctx, "example1", &metal.VlanArgs{ -// ProjectId: pulumi.Any(myProjectId), -// Metro: pulumi.String("SV"), +// exampleInterconnection, err := metal.NewInterconnection(ctx, "exampleInterconnection", &metal.InterconnectionArgs{ +// Name: pulumi.String("tf-metal-from-ne"), +// ProjectId: pulumi.String(""), +// Type: pulumi.String("shared"), +// Redundancy: pulumi.String("primary"), +// Metro: pulumi.String("FR"), +// Speed: pulumi.String("200Mbps"), +// ServiceTokenType: pulumi.String("z_side"), +// ContactEmail: pulumi.String("username@example.com"), +// Vrfs: pulumi.StringArray{ +// example.Vxlan, +// }, // }) // if err != nil { // return err // } -// example, err := metal.NewInterconnection(ctx, "example", &metal.InterconnectionArgs{ -// Name: pulumi.String("tf-port-to-metal-legacy"), -// ProjectId: pulumi.Any(myProjectId), -// Metro: pulumi.String("SV"), -// Redundancy: pulumi.String("primary"), -// Type: pulumi.String("shared_port_vlan"), -// ContactEmail: pulumi.String("username@example.com"), -// Vlans: pulumi.IntArray{ -// example1.Vxlan, +// _, err = fabric.NewConnection(ctx, "exampleConnection", &fabric.ConnectionArgs{ +// Name: pulumi.String("tf-metal-from-ne"), +// Type: pulumi.String(fabric.ConnectionTypeEVPL), +// Bandwidth: pulumi.Int(200), +// Notifications: fabric.ConnectionNotificationArray{ +// &fabric.ConnectionNotificationArgs{ +// Type: pulumi.String(fabric.NotificationsTypeAll), +// Emails: pulumi.StringArray{ +// pulumi.String("username@example.com"), +// }, +// }, +// }, +// Order: &fabric.ConnectionOrderArgs{ +// PurchaseOrderNumber: pulumi.String("1-323292"), +// }, +// Project: &fabric.ConnectionProjectArgs{ +// ProjectId: pulumi.String(""), +// }, +// ASide: &fabric.ConnectionASideArgs{ +// AccessPoint: &fabric.ConnectionASideAccessPointArgs{ +// Type: pulumi.String(fabric.AccessPointTypeVD), +// VirtualDevice: &fabric.ConnectionASideAccessPointVirtualDeviceArgs{ +// Type: pulumi.String("EDGE"), +// Uuid: pulumi.Any(exampleEquinixNetworkDevice.Id), +// }, +// }, +// }, +// ZSide: &fabric.ConnectionZSideArgs{ +// ServiceToken: &fabric.ConnectionZSideServiceTokenArgs{ +// Uuid: exampleInterconnection.ServiceTokens.ApplyT(func(serviceTokens []metal.InterconnectionServiceToken) (*string, error) { +// return &serviceTokens[0].Id, nil +// }).(pulumi.StringPtrOutput), +// }, // }, // }) // if err != nil { // return err // } +// return nil +// }) +// } +// +// ``` +// ### example metal billed metal to fabric port +// ```go +// package main +// +// import ( +// +// "github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric" +// "github.com/equinix/pulumi-equinix/sdk/go/equinix/metal" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// aSide, err := fabric.GetPorts(ctx, &fabric.GetPortsArgs{ +// Filter: fabric.GetPortsFilter{ +// Name: "", +// }, +// }, nil) +// if err != nil { +// return err +// } +// example, err := metal.NewInterconnection(ctx, "example", &metal.InterconnectionArgs{ +// Name: pulumi.String("tf-metal-2-port"), +// ProjectId: pulumi.String(""), +// Type: pulumi.String("shared"), +// Redundancy: pulumi.String("redundant"), +// Metro: pulumi.String("FR"), +// Speed: pulumi.String("1Gbps"), +// ServiceTokenType: pulumi.String("a_side"), +// ContactEmail: pulumi.String("username@example.com"), +// }) +// if err != nil { +// return err +// } // _, err = fabric.NewConnection(ctx, "exampleConnection", &fabric.ConnectionArgs{ -// Name: pulumi.String("tf-NIMF-metal-2-aws-legacy"), +// Name: pulumi.String("tf-metal-2-port"), // Type: pulumi.String(fabric.ConnectionTypeEVPL), // Notifications: fabric.ConnectionNotificationArray{ // &fabric.ConnectionNotificationArgs{ -// Type: pulumi.String(fabric.NotificationsTypeAll), -// Emails: pulumi.StringArray("sername@example.com"), +// Type: pulumi.String(fabric.NotificationsTypeAll), +// Emails: pulumi.StringArray{ +// pulumi.String("username@example.com"), +// }, // }, // }, // Project: &fabric.ConnectionProjectArgs{ -// ProjectId: pulumi.Any(fabricProjectId), +// ProjectId: pulumi.String(""), // }, -// Bandwidth: pulumi.Int(200), +// Bandwidth: pulumi.Int(100), // Order: &fabric.ConnectionOrderArgs{ // PurchaseOrderNumber: pulumi.String("1-323292"), // }, // ASide: &fabric.ConnectionASideArgs{ -// AccessPoint: &fabric.ConnectionASideAccessPointArgs{ -// Type: pulumi.String("METAL_NETWORK"), -// AuthenticationKey: example.AuthorizationCode, +// ServiceToken: &fabric.ConnectionASideServiceTokenArgs{ +// Uuid: example.ServiceTokens.ApplyT(func(serviceTokens []metal.InterconnectionServiceToken) (*string, error) { +// return &serviceTokens[0].Id, nil +// }).(pulumi.StringPtrOutput), // }, // }, // ZSide: &fabric.ConnectionZSideArgs{ // AccessPoint: &fabric.ConnectionZSideAccessPointArgs{ -// Type: pulumi.String(fabric.AccessPointTypeSP), -// AuthenticationKey: pulumi.Any(awsAccountId), -// SellerRegion: pulumi.String("us-west-1"), -// Profile: &fabric.ConnectionZSideAccessPointProfileArgs{ -// Type: pulumi.String(fabric.ProfileTypeL2Profile), -// Uuid: pulumi.String(zside.Id), +// Type: pulumi.String(fabric.AccessPointTypeColo), +// Port: &fabric.ConnectionZSideAccessPointPortArgs{ +// Uuid: pulumi.String(aSide.Data[0].Uuid), // }, -// Location: &fabric.ConnectionZSideAccessPointLocationArgs{ -// MetroCode: pulumi.String(equinix.MetroSiliconValley), +// LinkProtocol: &fabric.ConnectionZSideAccessPointLinkProtocolArgs{ +// Type: pulumi.String(fabric.AccessPointLinkProtocolTypeDot1q), +// VlanTag: pulumi.Int(1234), // }, // }, // }, @@ -188,50 +350,49 @@ import ( type Interconnection struct { pulumi.CustomResourceState - // Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services). + // Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric. AuthorizationCode pulumi.StringOutput `pulumi:"authorizationCode"` - // The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. + // The preferred email used for communication and notifications about the Equinix Fabric interconnection ContactEmail pulumi.StringOutput `pulumi:"contactEmail"` - // Description for the connection resource. + // Description of the connection resource Description pulumi.StringOutput `pulumi:"description"` - // Facility where the connection will be created. Use metro instead; read the facility to metro migration guide + // Facility where the connection will be created // // Deprecated: Use metro instead of facility. For more information, read the migration guide. Facility pulumi.StringOutput `pulumi:"facility"` - // Metro where the connection will be created. + // Metro where the connection will be created Metro pulumi.StringOutput `pulumi:"metro"` - // Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard. + // Mode for connections in IBX facilities with the dedicated type - standard or tunnel Mode pulumi.StringOutput `pulumi:"mode"` // Name of the connection resource Name pulumi.StringOutput `pulumi:"name"` - // ID of the organization where the connection is scoped to. + // ID of the organization responsible for the connection. Applicable with type "dedicated" OrganizationId pulumi.StringOutput `pulumi:"organizationId"` - // List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the metal.Interconnection datasource. + // List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`) Ports InterconnectionPortArrayOutput `pulumi:"ports"` - // ID of the project where the connection is scoped to, must be set for. + // ID of the project where the connection is scoped to. Required with type "shared" ProjectId pulumi.StringPtrOutput `pulumi:"projectId"` - // Connection redundancy - redundant or primary. + // Connection redundancy - redundant or primary Redundancy pulumi.StringOutput `pulumi:"redundancy"` - // Only used with shared connection. Type of service token to use for the connection, aSide or z_side + // Only used with shared connection. Type of service token to use for the connection, a*side or z*side ServiceTokenType pulumi.StringPtrOutput `pulumi:"serviceTokenType"` - // List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of serviceToken is described in documentation of the metal.Interconnection datasource. + // Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) ServiceTokens InterconnectionServiceTokenArrayOutput `pulumi:"serviceTokens"` - // Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. + // Connection speed - Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. Speed pulumi.StringOutput `pulumi:"speed"` - // Status of the connection resource. + // Status of the connection resource Status pulumi.StringOutput `pulumi:"status"` - // String list of tags. + // Tags attached to the connection Tags pulumi.StringArrayOutput `pulumi:"tags"` - // (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `serviceTokens` instead. + // Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) // // Deprecated: If your organization already has connection service tokens enabled, use `serviceTokens` instead Token pulumi.StringOutput `pulumi:"token"` - // Connection type - dedicated or shared. + // Connection type - dedicated, shared or shared*port*vlan Type pulumi.StringOutput `pulumi:"type"` - // Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection. + // Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection Vlans pulumi.IntArrayOutput `pulumi:"vlans"` - // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant - // connection + // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection Vrfs pulumi.StringArrayOutput `pulumi:"vrfs"` } @@ -271,98 +432,96 @@ func GetInterconnection(ctx *pulumi.Context, // Input properties used for looking up and filtering Interconnection resources. type interconnectionState struct { - // Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services). + // Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric. AuthorizationCode *string `pulumi:"authorizationCode"` - // The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. + // The preferred email used for communication and notifications about the Equinix Fabric interconnection ContactEmail *string `pulumi:"contactEmail"` - // Description for the connection resource. + // Description of the connection resource Description *string `pulumi:"description"` - // Facility where the connection will be created. Use metro instead; read the facility to metro migration guide + // Facility where the connection will be created // // Deprecated: Use metro instead of facility. For more information, read the migration guide. Facility *string `pulumi:"facility"` - // Metro where the connection will be created. + // Metro where the connection will be created Metro *string `pulumi:"metro"` - // Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard. + // Mode for connections in IBX facilities with the dedicated type - standard or tunnel Mode *string `pulumi:"mode"` // Name of the connection resource Name *string `pulumi:"name"` - // ID of the organization where the connection is scoped to. + // ID of the organization responsible for the connection. Applicable with type "dedicated" OrganizationId *string `pulumi:"organizationId"` - // List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the metal.Interconnection datasource. + // List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`) Ports []InterconnectionPort `pulumi:"ports"` - // ID of the project where the connection is scoped to, must be set for. + // ID of the project where the connection is scoped to. Required with type "shared" ProjectId *string `pulumi:"projectId"` - // Connection redundancy - redundant or primary. + // Connection redundancy - redundant or primary Redundancy *string `pulumi:"redundancy"` - // Only used with shared connection. Type of service token to use for the connection, aSide or z_side + // Only used with shared connection. Type of service token to use for the connection, a*side or z*side ServiceTokenType *string `pulumi:"serviceTokenType"` - // List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of serviceToken is described in documentation of the metal.Interconnection datasource. + // Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) ServiceTokens []InterconnectionServiceToken `pulumi:"serviceTokens"` - // Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. + // Connection speed - Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. Speed *string `pulumi:"speed"` - // Status of the connection resource. + // Status of the connection resource Status *string `pulumi:"status"` - // String list of tags. + // Tags attached to the connection Tags []string `pulumi:"tags"` - // (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `serviceTokens` instead. + // Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) // // Deprecated: If your organization already has connection service tokens enabled, use `serviceTokens` instead Token *string `pulumi:"token"` - // Connection type - dedicated or shared. + // Connection type - dedicated, shared or shared*port*vlan Type *string `pulumi:"type"` - // Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection. + // Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection Vlans []int `pulumi:"vlans"` - // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant - // connection + // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection Vrfs []string `pulumi:"vrfs"` } type InterconnectionState struct { - // Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services). + // Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric. AuthorizationCode pulumi.StringPtrInput - // The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. + // The preferred email used for communication and notifications about the Equinix Fabric interconnection ContactEmail pulumi.StringPtrInput - // Description for the connection resource. + // Description of the connection resource Description pulumi.StringPtrInput - // Facility where the connection will be created. Use metro instead; read the facility to metro migration guide + // Facility where the connection will be created // // Deprecated: Use metro instead of facility. For more information, read the migration guide. Facility pulumi.StringPtrInput - // Metro where the connection will be created. + // Metro where the connection will be created Metro pulumi.StringPtrInput - // Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard. + // Mode for connections in IBX facilities with the dedicated type - standard or tunnel Mode pulumi.StringPtrInput // Name of the connection resource Name pulumi.StringPtrInput - // ID of the organization where the connection is scoped to. + // ID of the organization responsible for the connection. Applicable with type "dedicated" OrganizationId pulumi.StringPtrInput - // List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the metal.Interconnection datasource. + // List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`) Ports InterconnectionPortArrayInput - // ID of the project where the connection is scoped to, must be set for. + // ID of the project where the connection is scoped to. Required with type "shared" ProjectId pulumi.StringPtrInput - // Connection redundancy - redundant or primary. + // Connection redundancy - redundant or primary Redundancy pulumi.StringPtrInput - // Only used with shared connection. Type of service token to use for the connection, aSide or z_side + // Only used with shared connection. Type of service token to use for the connection, a*side or z*side ServiceTokenType pulumi.StringPtrInput - // List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of serviceToken is described in documentation of the metal.Interconnection datasource. + // Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) ServiceTokens InterconnectionServiceTokenArrayInput - // Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. + // Connection speed - Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. Speed pulumi.StringPtrInput - // Status of the connection resource. + // Status of the connection resource Status pulumi.StringPtrInput - // String list of tags. + // Tags attached to the connection Tags pulumi.StringArrayInput - // (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `serviceTokens` instead. + // Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) // // Deprecated: If your organization already has connection service tokens enabled, use `serviceTokens` instead Token pulumi.StringPtrInput - // Connection type - dedicated or shared. + // Connection type - dedicated, shared or shared*port*vlan Type pulumi.StringPtrInput - // Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection. + // Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection Vlans pulumi.IntArrayInput - // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant - // connection + // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection Vrfs pulumi.StringArrayInput } @@ -371,75 +530,73 @@ func (InterconnectionState) ElementType() reflect.Type { } type interconnectionArgs struct { - // The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. + // The preferred email used for communication and notifications about the Equinix Fabric interconnection ContactEmail *string `pulumi:"contactEmail"` - // Description for the connection resource. + // Description of the connection resource Description *string `pulumi:"description"` - // Facility where the connection will be created. Use metro instead; read the facility to metro migration guide + // Facility where the connection will be created // // Deprecated: Use metro instead of facility. For more information, read the migration guide. Facility *string `pulumi:"facility"` - // Metro where the connection will be created. + // Metro where the connection will be created Metro *string `pulumi:"metro"` - // Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard. + // Mode for connections in IBX facilities with the dedicated type - standard or tunnel Mode *string `pulumi:"mode"` // Name of the connection resource Name *string `pulumi:"name"` - // ID of the organization where the connection is scoped to. + // ID of the organization responsible for the connection. Applicable with type "dedicated" OrganizationId *string `pulumi:"organizationId"` - // ID of the project where the connection is scoped to, must be set for. + // ID of the project where the connection is scoped to. Required with type "shared" ProjectId *string `pulumi:"projectId"` - // Connection redundancy - redundant or primary. + // Connection redundancy - redundant or primary Redundancy string `pulumi:"redundancy"` - // Only used with shared connection. Type of service token to use for the connection, aSide or z_side + // Only used with shared connection. Type of service token to use for the connection, a*side or z*side ServiceTokenType *string `pulumi:"serviceTokenType"` - // Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. + // Connection speed - Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. Speed *string `pulumi:"speed"` - // String list of tags. + // Tags attached to the connection Tags []string `pulumi:"tags"` - // Connection type - dedicated or shared. + // Connection type - dedicated, shared or shared*port*vlan Type string `pulumi:"type"` - // Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection. + // Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection Vlans []int `pulumi:"vlans"` - // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant - // connection + // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection Vrfs []string `pulumi:"vrfs"` } // The set of arguments for constructing a Interconnection resource. type InterconnectionArgs struct { - // The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. + // The preferred email used for communication and notifications about the Equinix Fabric interconnection ContactEmail pulumi.StringPtrInput - // Description for the connection resource. + // Description of the connection resource Description pulumi.StringPtrInput - // Facility where the connection will be created. Use metro instead; read the facility to metro migration guide + // Facility where the connection will be created // // Deprecated: Use metro instead of facility. For more information, read the migration guide. Facility pulumi.StringPtrInput - // Metro where the connection will be created. + // Metro where the connection will be created Metro pulumi.StringPtrInput - // Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard. + // Mode for connections in IBX facilities with the dedicated type - standard or tunnel Mode pulumi.StringPtrInput // Name of the connection resource Name pulumi.StringPtrInput - // ID of the organization where the connection is scoped to. + // ID of the organization responsible for the connection. Applicable with type "dedicated" OrganizationId pulumi.StringPtrInput - // ID of the project where the connection is scoped to, must be set for. + // ID of the project where the connection is scoped to. Required with type "shared" ProjectId pulumi.StringPtrInput - // Connection redundancy - redundant or primary. + // Connection redundancy - redundant or primary Redundancy pulumi.StringInput - // Only used with shared connection. Type of service token to use for the connection, aSide or z_side + // Only used with shared connection. Type of service token to use for the connection, a*side or z*side ServiceTokenType pulumi.StringPtrInput - // Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. + // Connection speed - Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. Speed pulumi.StringPtrInput - // String list of tags. + // Tags attached to the connection Tags pulumi.StringArrayInput - // Connection type - dedicated or shared. + // Connection type - dedicated, shared or shared*port*vlan Type pulumi.StringInput - // Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection. + // Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection Vlans pulumi.IntArrayInput - // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant - // connection + // Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection Vrfs pulumi.StringArrayInput } @@ -530,34 +687,34 @@ func (o InterconnectionOutput) ToInterconnectionOutputWithContext(ctx context.Co return o } -// Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services). +// Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric. func (o InterconnectionOutput) AuthorizationCode() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.AuthorizationCode }).(pulumi.StringOutput) } -// The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. +// The preferred email used for communication and notifications about the Equinix Fabric interconnection func (o InterconnectionOutput) ContactEmail() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.ContactEmail }).(pulumi.StringOutput) } -// Description for the connection resource. +// Description of the connection resource func (o InterconnectionOutput) Description() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) } -// Facility where the connection will be created. Use metro instead; read the facility to metro migration guide +// Facility where the connection will be created // // Deprecated: Use metro instead of facility. For more information, read the migration guide. func (o InterconnectionOutput) Facility() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Facility }).(pulumi.StringOutput) } -// Metro where the connection will be created. +// Metro where the connection will be created func (o InterconnectionOutput) Metro() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Metro }).(pulumi.StringOutput) } -// Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard. +// Mode for connections in IBX facilities with the dedicated type - standard or tunnel func (o InterconnectionOutput) Mode() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Mode }).(pulumi.StringOutput) } @@ -567,70 +724,69 @@ func (o InterconnectionOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) } -// ID of the organization where the connection is scoped to. +// ID of the organization responsible for the connection. Applicable with type "dedicated" func (o InterconnectionOutput) OrganizationId() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.OrganizationId }).(pulumi.StringOutput) } -// List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the metal.Interconnection datasource. +// List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`) func (o InterconnectionOutput) Ports() InterconnectionPortArrayOutput { return o.ApplyT(func(v *Interconnection) InterconnectionPortArrayOutput { return v.Ports }).(InterconnectionPortArrayOutput) } -// ID of the project where the connection is scoped to, must be set for. +// ID of the project where the connection is scoped to. Required with type "shared" func (o InterconnectionOutput) ProjectId() pulumi.StringPtrOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringPtrOutput { return v.ProjectId }).(pulumi.StringPtrOutput) } -// Connection redundancy - redundant or primary. +// Connection redundancy - redundant or primary func (o InterconnectionOutput) Redundancy() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Redundancy }).(pulumi.StringOutput) } -// Only used with shared connection. Type of service token to use for the connection, aSide or z_side +// Only used with shared connection. Type of service token to use for the connection, a*side or z*side func (o InterconnectionOutput) ServiceTokenType() pulumi.StringPtrOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringPtrOutput { return v.ServiceTokenType }).(pulumi.StringPtrOutput) } -// List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of serviceToken is described in documentation of the metal.Interconnection datasource. +// Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) func (o InterconnectionOutput) ServiceTokens() InterconnectionServiceTokenArrayOutput { return o.ApplyT(func(v *Interconnection) InterconnectionServiceTokenArrayOutput { return v.ServiceTokens }).(InterconnectionServiceTokenArrayOutput) } -// Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. +// Connection speed - Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. func (o InterconnectionOutput) Speed() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Speed }).(pulumi.StringOutput) } -// Status of the connection resource. +// Status of the connection resource func (o InterconnectionOutput) Status() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput) } -// String list of tags. +// Tags attached to the connection func (o InterconnectionOutput) Tags() pulumi.StringArrayOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringArrayOutput { return v.Tags }).(pulumi.StringArrayOutput) } -// (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `serviceTokens` instead. +// Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard) // // Deprecated: If your organization already has connection service tokens enabled, use `serviceTokens` instead func (o InterconnectionOutput) Token() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Token }).(pulumi.StringOutput) } -// Connection type - dedicated or shared. +// Connection type - dedicated, shared or shared*port*vlan func (o InterconnectionOutput) Type() pulumi.StringOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput) } -// Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection. +// Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection func (o InterconnectionOutput) Vlans() pulumi.IntArrayOutput { return o.ApplyT(func(v *Interconnection) pulumi.IntArrayOutput { return v.Vlans }).(pulumi.IntArrayOutput) } -// Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant -// connection +// Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection func (o InterconnectionOutput) Vrfs() pulumi.StringArrayOutput { return o.ApplyT(func(v *Interconnection) pulumi.StringArrayOutput { return v.Vrfs }).(pulumi.StringArrayOutput) } diff --git a/sdk/go/equinix/metal/pulumiTypes.go b/sdk/go/equinix/metal/pulumiTypes.go index f42f0347..e4d003d3 100644 --- a/sdk/go/equinix/metal/pulumiTypes.go +++ b/sdk/go/equinix/metal/pulumiTypes.go @@ -844,14 +844,11 @@ func (o GatewayTimeoutsPtrOutput) Delete() pulumi.StringPtrOutput { } type InterconnectionPort struct { - Id string `pulumi:"id"` - LinkStatus string `pulumi:"linkStatus"` - // Name of the connection resource - Name string `pulumi:"name"` - Role string `pulumi:"role"` - // Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. - Speed int `pulumi:"speed"` - // Status of the connection resource. + Id string `pulumi:"id"` + LinkStatus string `pulumi:"linkStatus"` + Name string `pulumi:"name"` + Role string `pulumi:"role"` + Speed int `pulumi:"speed"` Status string `pulumi:"status"` VirtualCircuitIds []string `pulumi:"virtualCircuitIds"` } @@ -868,14 +865,11 @@ type InterconnectionPortInput interface { } type InterconnectionPortArgs struct { - Id pulumi.StringInput `pulumi:"id"` - LinkStatus pulumi.StringInput `pulumi:"linkStatus"` - // Name of the connection resource - Name pulumi.StringInput `pulumi:"name"` - Role pulumi.StringInput `pulumi:"role"` - // Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. - Speed pulumi.IntInput `pulumi:"speed"` - // Status of the connection resource. + Id pulumi.StringInput `pulumi:"id"` + LinkStatus pulumi.StringInput `pulumi:"linkStatus"` + Name pulumi.StringInput `pulumi:"name"` + Role pulumi.StringInput `pulumi:"role"` + Speed pulumi.IntInput `pulumi:"speed"` Status pulumi.StringInput `pulumi:"status"` VirtualCircuitIds pulumi.StringArrayInput `pulumi:"virtualCircuitIds"` } @@ -939,7 +933,6 @@ func (o InterconnectionPortOutput) LinkStatus() pulumi.StringOutput { return o.ApplyT(func(v InterconnectionPort) string { return v.LinkStatus }).(pulumi.StringOutput) } -// Name of the connection resource func (o InterconnectionPortOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v InterconnectionPort) string { return v.Name }).(pulumi.StringOutput) } @@ -948,12 +941,10 @@ func (o InterconnectionPortOutput) Role() pulumi.StringOutput { return o.ApplyT(func(v InterconnectionPort) string { return v.Role }).(pulumi.StringOutput) } -// Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF. func (o InterconnectionPortOutput) Speed() pulumi.IntOutput { return o.ApplyT(func(v InterconnectionPort) int { return v.Speed }).(pulumi.IntOutput) } -// Status of the connection resource. func (o InterconnectionPortOutput) Status() pulumi.StringOutput { return o.ApplyT(func(v InterconnectionPort) string { return v.Status }).(pulumi.StringOutput) } @@ -988,8 +979,7 @@ type InterconnectionServiceToken struct { MaxAllowedSpeed string `pulumi:"maxAllowedSpeed"` Role string `pulumi:"role"` State string `pulumi:"state"` - // Connection type - dedicated or shared. - Type string `pulumi:"type"` + Type string `pulumi:"type"` } // InterconnectionServiceTokenInput is an input type that accepts InterconnectionServiceTokenArgs and InterconnectionServiceTokenOutput values. @@ -1009,8 +999,7 @@ type InterconnectionServiceTokenArgs struct { MaxAllowedSpeed pulumi.StringInput `pulumi:"maxAllowedSpeed"` Role pulumi.StringInput `pulumi:"role"` State pulumi.StringInput `pulumi:"state"` - // Connection type - dedicated or shared. - Type pulumi.StringInput `pulumi:"type"` + Type pulumi.StringInput `pulumi:"type"` } func (InterconnectionServiceTokenArgs) ElementType() reflect.Type { @@ -1084,7 +1073,6 @@ func (o InterconnectionServiceTokenOutput) State() pulumi.StringOutput { return o.ApplyT(func(v InterconnectionServiceToken) string { return v.State }).(pulumi.StringOutput) } -// Connection type - dedicated or shared. func (o InterconnectionServiceTokenOutput) Type() pulumi.StringOutput { return o.ApplyT(func(v InterconnectionServiceToken) string { return v.Type }).(pulumi.StringOutput) } diff --git a/sdk/go/equinix/metal/vrf.go b/sdk/go/equinix/metal/vrf.go index 73d9ef98..d8f7ca0d 100644 --- a/sdk/go/equinix/metal/vrf.go +++ b/sdk/go/equinix/metal/vrf.go @@ -147,17 +147,17 @@ import ( type Vrf struct { pulumi.CustomResourceState - // Description of the VRF. + // Description of the VRF Description pulumi.StringPtrOutput `pulumi:"description"` // All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF. IpRanges pulumi.StringArrayOutput `pulumi:"ipRanges"` // The 4-byte ASN set on the VRF. LocalAsn pulumi.IntOutput `pulumi:"localAsn"` - // Metro ID or Code where the VRF will be deployed. + // Metro ID or Code where the VRF will be deployed Metro pulumi.StringOutput `pulumi:"metro"` // User-supplied name of the VRF, unique to the project Name pulumi.StringOutput `pulumi:"name"` - // Project ID where the VRF will be deployed. + // Project ID where the VRF will be deployed ProjectId pulumi.StringOutput `pulumi:"projectId"` } @@ -197,32 +197,32 @@ func GetVrf(ctx *pulumi.Context, // Input properties used for looking up and filtering Vrf resources. type vrfState struct { - // Description of the VRF. + // Description of the VRF Description *string `pulumi:"description"` // All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF. IpRanges []string `pulumi:"ipRanges"` // The 4-byte ASN set on the VRF. LocalAsn *int `pulumi:"localAsn"` - // Metro ID or Code where the VRF will be deployed. + // Metro ID or Code where the VRF will be deployed Metro *string `pulumi:"metro"` // User-supplied name of the VRF, unique to the project Name *string `pulumi:"name"` - // Project ID where the VRF will be deployed. + // Project ID where the VRF will be deployed ProjectId *string `pulumi:"projectId"` } type VrfState struct { - // Description of the VRF. + // Description of the VRF Description pulumi.StringPtrInput // All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF. IpRanges pulumi.StringArrayInput // The 4-byte ASN set on the VRF. LocalAsn pulumi.IntPtrInput - // Metro ID or Code where the VRF will be deployed. + // Metro ID or Code where the VRF will be deployed Metro pulumi.StringPtrInput // User-supplied name of the VRF, unique to the project Name pulumi.StringPtrInput - // Project ID where the VRF will be deployed. + // Project ID where the VRF will be deployed ProjectId pulumi.StringPtrInput } @@ -231,33 +231,33 @@ func (VrfState) ElementType() reflect.Type { } type vrfArgs struct { - // Description of the VRF. + // Description of the VRF Description *string `pulumi:"description"` // All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF. IpRanges []string `pulumi:"ipRanges"` // The 4-byte ASN set on the VRF. LocalAsn *int `pulumi:"localAsn"` - // Metro ID or Code where the VRF will be deployed. + // Metro ID or Code where the VRF will be deployed Metro string `pulumi:"metro"` // User-supplied name of the VRF, unique to the project Name *string `pulumi:"name"` - // Project ID where the VRF will be deployed. + // Project ID where the VRF will be deployed ProjectId string `pulumi:"projectId"` } // The set of arguments for constructing a Vrf resource. type VrfArgs struct { - // Description of the VRF. + // Description of the VRF Description pulumi.StringPtrInput // All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF. IpRanges pulumi.StringArrayInput // The 4-byte ASN set on the VRF. LocalAsn pulumi.IntPtrInput - // Metro ID or Code where the VRF will be deployed. + // Metro ID or Code where the VRF will be deployed Metro pulumi.StringInput // User-supplied name of the VRF, unique to the project Name pulumi.StringPtrInput - // Project ID where the VRF will be deployed. + // Project ID where the VRF will be deployed ProjectId pulumi.StringInput } @@ -348,7 +348,7 @@ func (o VrfOutput) ToVrfOutputWithContext(ctx context.Context) VrfOutput { return o } -// Description of the VRF. +// Description of the VRF func (o VrfOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *Vrf) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) } @@ -363,7 +363,7 @@ func (o VrfOutput) LocalAsn() pulumi.IntOutput { return o.ApplyT(func(v *Vrf) pulumi.IntOutput { return v.LocalAsn }).(pulumi.IntOutput) } -// Metro ID or Code where the VRF will be deployed. +// Metro ID or Code where the VRF will be deployed func (o VrfOutput) Metro() pulumi.StringOutput { return o.ApplyT(func(v *Vrf) pulumi.StringOutput { return v.Metro }).(pulumi.StringOutput) } @@ -373,7 +373,7 @@ func (o VrfOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *Vrf) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) } -// Project ID where the VRF will be deployed. +// Project ID where the VRF will be deployed func (o VrfOutput) ProjectId() pulumi.StringOutput { return o.ApplyT(func(v *Vrf) pulumi.StringOutput { return v.ProjectId }).(pulumi.StringOutput) } diff --git a/sdk/go/equinix/networkedge/pulumiTypes.go b/sdk/go/equinix/networkedge/pulumiTypes.go index d09cffa6..fa8efb46 100644 --- a/sdk/go/equinix/networkedge/pulumiTypes.go +++ b/sdk/go/equinix/networkedge/pulumiTypes.go @@ -3069,7 +3069,7 @@ func (o DeviceSecondaryDeviceInterfaceArrayOutput) Index(i pulumi.IntInput) Devi type DeviceSecondaryDeviceSshKey struct { // Reference by name to previously provisioned public SSH key - KeyName string `pulumi:"keyName"` + KeyName *string `pulumi:"keyName"` // username associated with given key. Username string `pulumi:"username"` } @@ -3087,7 +3087,7 @@ type DeviceSecondaryDeviceSshKeyInput interface { type DeviceSecondaryDeviceSshKeyArgs struct { // Reference by name to previously provisioned public SSH key - KeyName pulumi.StringInput `pulumi:"keyName"` + KeyName pulumi.StringPtrInput `pulumi:"keyName"` // username associated with given key. Username pulumi.StringInput `pulumi:"username"` } @@ -3170,8 +3170,8 @@ func (o DeviceSecondaryDeviceSshKeyOutput) ToDeviceSecondaryDeviceSshKeyPtrOutpu } // Reference by name to previously provisioned public SSH key -func (o DeviceSecondaryDeviceSshKeyOutput) KeyName() pulumi.StringOutput { - return o.ApplyT(func(v DeviceSecondaryDeviceSshKey) string { return v.KeyName }).(pulumi.StringOutput) +func (o DeviceSecondaryDeviceSshKeyOutput) KeyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v DeviceSecondaryDeviceSshKey) *string { return v.KeyName }).(pulumi.StringPtrOutput) } // username associated with given key. @@ -3209,7 +3209,7 @@ func (o DeviceSecondaryDeviceSshKeyPtrOutput) KeyName() pulumi.StringPtrOutput { if v == nil { return nil } - return &v.KeyName + return v.KeyName }).(pulumi.StringPtrOutput) } @@ -3225,7 +3225,7 @@ func (o DeviceSecondaryDeviceSshKeyPtrOutput) Username() pulumi.StringPtrOutput type DeviceSshKey struct { // Reference by name to previously provisioned public SSH key - KeyName string `pulumi:"keyName"` + KeyName *string `pulumi:"keyName"` // username associated with given key. Username string `pulumi:"username"` } @@ -3243,7 +3243,7 @@ type DeviceSshKeyInput interface { type DeviceSshKeyArgs struct { // Reference by name to previously provisioned public SSH key - KeyName pulumi.StringInput `pulumi:"keyName"` + KeyName pulumi.StringPtrInput `pulumi:"keyName"` // username associated with given key. Username pulumi.StringInput `pulumi:"username"` } @@ -3326,8 +3326,8 @@ func (o DeviceSshKeyOutput) ToDeviceSshKeyPtrOutputWithContext(ctx context.Conte } // Reference by name to previously provisioned public SSH key -func (o DeviceSshKeyOutput) KeyName() pulumi.StringOutput { - return o.ApplyT(func(v DeviceSshKey) string { return v.KeyName }).(pulumi.StringOutput) +func (o DeviceSshKeyOutput) KeyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v DeviceSshKey) *string { return v.KeyName }).(pulumi.StringPtrOutput) } // username associated with given key. @@ -3365,7 +3365,7 @@ func (o DeviceSshKeyPtrOutput) KeyName() pulumi.StringPtrOutput { if v == nil { return nil } - return &v.KeyName + return v.KeyName }).(pulumi.StringPtrOutput) } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/RoutingProtocol.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/RoutingProtocol.java index 21daed8d..a9d9f95d 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/RoutingProtocol.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/RoutingProtocol.java @@ -18,6 +18,7 @@ import com.pulumi.core.annotations.Export; import com.pulumi.core.annotations.ResourceType; import com.pulumi.core.internal.Codegen; +import java.lang.Boolean; import java.lang.Integer; import java.lang.String; import java.util.List; @@ -181,6 +182,20 @@ */ @ResourceType(type="equinix:fabric/routingProtocol:RoutingProtocol") public class RoutingProtocol extends com.pulumi.resources.CustomResource { + /** + * Enable AS number override + * + */ + @Export(name="asOverrideEnabled", refs={Boolean.class}, tree="[0]") + private Output asOverrideEnabled; + + /** + * @return Enable AS number override + * + */ + public Output asOverrideEnabled() { + return this.asOverrideEnabled; + } /** * Bidirectional Forwarding Detection * diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/RoutingProtocolArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/RoutingProtocolArgs.java index d7c58e9a..e3435d1a 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/RoutingProtocolArgs.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/RoutingProtocolArgs.java @@ -11,6 +11,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; import java.lang.Integer; import java.lang.String; import java.util.Objects; @@ -22,6 +23,21 @@ public final class RoutingProtocolArgs extends com.pulumi.resources.ResourceArgs public static final RoutingProtocolArgs Empty = new RoutingProtocolArgs(); + /** + * Enable AS number override + * + */ + @Import(name="asOverrideEnabled") + private @Nullable Output asOverrideEnabled; + + /** + * @return Enable AS number override + * + */ + public Optional> asOverrideEnabled() { + return Optional.ofNullable(this.asOverrideEnabled); + } + /** * Bidirectional Forwarding Detection * @@ -205,6 +221,7 @@ public Optional> uuid() { private RoutingProtocolArgs() {} private RoutingProtocolArgs(RoutingProtocolArgs $) { + this.asOverrideEnabled = $.asOverrideEnabled; this.bfd = $.bfd; this.bgpAuthKey = $.bgpAuthKey; this.bgpIpv4 = $.bgpIpv4; @@ -237,6 +254,27 @@ public Builder(RoutingProtocolArgs defaults) { $ = new RoutingProtocolArgs(Objects.requireNonNull(defaults)); } + /** + * @param asOverrideEnabled Enable AS number override + * + * @return builder + * + */ + public Builder asOverrideEnabled(@Nullable Output asOverrideEnabled) { + $.asOverrideEnabled = asOverrideEnabled; + return this; + } + + /** + * @param asOverrideEnabled Enable AS number override + * + * @return builder + * + */ + public Builder asOverrideEnabled(Boolean asOverrideEnabled) { + return asOverrideEnabled(Output.of(asOverrideEnabled)); + } + /** * @param bfd Bidirectional Forwarding Detection * diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolBgpIpv4Args.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolBgpIpv4Args.java index afcf91cc..c58a8ca8 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolBgpIpv4Args.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolBgpIpv4Args.java @@ -7,6 +7,7 @@ import com.pulumi.core.annotations.Import; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -62,12 +63,60 @@ public Optional> equinixPeerIp() { return Optional.ofNullable(this.equinixPeerIp); } + /** + * Inbound Multi Exit Discriminator attribute + * + */ + @Import(name="inboundMed") + private @Nullable Output inboundMed; + + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + public Optional> inboundMed() { + return Optional.ofNullable(this.inboundMed); + } + + /** + * AS path prepend count. One of: 0, 1, 3, 5 + * + */ + @Import(name="outboundAsPrependCount") + private @Nullable Output outboundAsPrependCount; + + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + public Optional> outboundAsPrependCount() { + return Optional.ofNullable(this.outboundAsPrependCount); + } + + /** + * Outbound Multi Exit Discriminator attribute + * + */ + @Import(name="outboundMed") + private @Nullable Output outboundMed; + + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + public Optional> outboundMed() { + return Optional.ofNullable(this.outboundMed); + } + private RoutingProtocolBgpIpv4Args() {} private RoutingProtocolBgpIpv4Args(RoutingProtocolBgpIpv4Args $) { this.customerPeerIp = $.customerPeerIp; this.enabled = $.enabled; this.equinixPeerIp = $.equinixPeerIp; + this.inboundMed = $.inboundMed; + this.outboundAsPrependCount = $.outboundAsPrependCount; + this.outboundMed = $.outboundMed; } public static Builder builder() { @@ -151,6 +200,69 @@ public Builder equinixPeerIp(String equinixPeerIp) { return equinixPeerIp(Output.of(equinixPeerIp)); } + /** + * @param inboundMed Inbound Multi Exit Discriminator attribute + * + * @return builder + * + */ + public Builder inboundMed(@Nullable Output inboundMed) { + $.inboundMed = inboundMed; + return this; + } + + /** + * @param inboundMed Inbound Multi Exit Discriminator attribute + * + * @return builder + * + */ + public Builder inboundMed(Integer inboundMed) { + return inboundMed(Output.of(inboundMed)); + } + + /** + * @param outboundAsPrependCount AS path prepend count. One of: 0, 1, 3, 5 + * + * @return builder + * + */ + public Builder outboundAsPrependCount(@Nullable Output outboundAsPrependCount) { + $.outboundAsPrependCount = outboundAsPrependCount; + return this; + } + + /** + * @param outboundAsPrependCount AS path prepend count. One of: 0, 1, 3, 5 + * + * @return builder + * + */ + public Builder outboundAsPrependCount(String outboundAsPrependCount) { + return outboundAsPrependCount(Output.of(outboundAsPrependCount)); + } + + /** + * @param outboundMed Outbound Multi Exit Discriminator attribute + * + * @return builder + * + */ + public Builder outboundMed(@Nullable Output outboundMed) { + $.outboundMed = outboundMed; + return this; + } + + /** + * @param outboundMed Outbound Multi Exit Discriminator attribute + * + * @return builder + * + */ + public Builder outboundMed(Integer outboundMed) { + return outboundMed(Output.of(outboundMed)); + } + public RoutingProtocolBgpIpv4Args build() { if ($.customerPeerIp == null) { throw new MissingRequiredPropertyException("RoutingProtocolBgpIpv4Args", "customerPeerIp"); diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolBgpIpv6Args.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolBgpIpv6Args.java index 9b810f30..bd7e13f7 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolBgpIpv6Args.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolBgpIpv6Args.java @@ -7,6 +7,7 @@ import com.pulumi.core.annotations.Import; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -62,12 +63,60 @@ public Optional> equinixPeerIp() { return Optional.ofNullable(this.equinixPeerIp); } + /** + * Inbound Multi Exit Discriminator attribute + * + */ + @Import(name="inboundMed") + private @Nullable Output inboundMed; + + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + public Optional> inboundMed() { + return Optional.ofNullable(this.inboundMed); + } + + /** + * AS path prepend count. One of: 0, 1, 3, 5 + * + */ + @Import(name="outboundAsPrependCount") + private @Nullable Output outboundAsPrependCount; + + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + public Optional> outboundAsPrependCount() { + return Optional.ofNullable(this.outboundAsPrependCount); + } + + /** + * Outbound Multi Exit Discriminator attribute + * + */ + @Import(name="outboundMed") + private @Nullable Output outboundMed; + + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + public Optional> outboundMed() { + return Optional.ofNullable(this.outboundMed); + } + private RoutingProtocolBgpIpv6Args() {} private RoutingProtocolBgpIpv6Args(RoutingProtocolBgpIpv6Args $) { this.customerPeerIp = $.customerPeerIp; this.enabled = $.enabled; this.equinixPeerIp = $.equinixPeerIp; + this.inboundMed = $.inboundMed; + this.outboundAsPrependCount = $.outboundAsPrependCount; + this.outboundMed = $.outboundMed; } public static Builder builder() { @@ -151,6 +200,69 @@ public Builder equinixPeerIp(String equinixPeerIp) { return equinixPeerIp(Output.of(equinixPeerIp)); } + /** + * @param inboundMed Inbound Multi Exit Discriminator attribute + * + * @return builder + * + */ + public Builder inboundMed(@Nullable Output inboundMed) { + $.inboundMed = inboundMed; + return this; + } + + /** + * @param inboundMed Inbound Multi Exit Discriminator attribute + * + * @return builder + * + */ + public Builder inboundMed(Integer inboundMed) { + return inboundMed(Output.of(inboundMed)); + } + + /** + * @param outboundAsPrependCount AS path prepend count. One of: 0, 1, 3, 5 + * + * @return builder + * + */ + public Builder outboundAsPrependCount(@Nullable Output outboundAsPrependCount) { + $.outboundAsPrependCount = outboundAsPrependCount; + return this; + } + + /** + * @param outboundAsPrependCount AS path prepend count. One of: 0, 1, 3, 5 + * + * @return builder + * + */ + public Builder outboundAsPrependCount(String outboundAsPrependCount) { + return outboundAsPrependCount(Output.of(outboundAsPrependCount)); + } + + /** + * @param outboundMed Outbound Multi Exit Discriminator attribute + * + * @return builder + * + */ + public Builder outboundMed(@Nullable Output outboundMed) { + $.outboundMed = outboundMed; + return this; + } + + /** + * @param outboundMed Outbound Multi Exit Discriminator attribute + * + * @return builder + * + */ + public Builder outboundMed(Integer outboundMed) { + return outboundMed(Output.of(outboundMed)); + } + public RoutingProtocolBgpIpv6Args build() { if ($.customerPeerIp == null) { throw new MissingRequiredPropertyException("RoutingProtocolBgpIpv6Args", "customerPeerIp"); diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolState.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolState.java index aa3a5fc4..98bf63b1 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolState.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/RoutingProtocolState.java @@ -13,6 +13,7 @@ import com.equinix.pulumi.fabric.inputs.RoutingProtocolOperationArgs; import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import java.lang.Boolean; import java.lang.Integer; import java.lang.String; import java.util.List; @@ -25,6 +26,21 @@ public final class RoutingProtocolState extends com.pulumi.resources.ResourceArg public static final RoutingProtocolState Empty = new RoutingProtocolState(); + /** + * Enable AS number override + * + */ + @Import(name="asOverrideEnabled") + private @Nullable Output asOverrideEnabled; + + /** + * @return Enable AS number override + * + */ + public Optional> asOverrideEnabled() { + return Optional.ofNullable(this.asOverrideEnabled); + } + /** * Bidirectional Forwarding Detection * @@ -298,6 +314,7 @@ public Optional> uuid() { private RoutingProtocolState() {} private RoutingProtocolState(RoutingProtocolState $) { + this.asOverrideEnabled = $.asOverrideEnabled; this.bfd = $.bfd; this.bgpAuthKey = $.bgpAuthKey; this.bgpIpv4 = $.bgpIpv4; @@ -336,6 +353,27 @@ public Builder(RoutingProtocolState defaults) { $ = new RoutingProtocolState(Objects.requireNonNull(defaults)); } + /** + * @param asOverrideEnabled Enable AS number override + * + * @return builder + * + */ + public Builder asOverrideEnabled(@Nullable Output asOverrideEnabled) { + $.asOverrideEnabled = asOverrideEnabled; + return this; + } + + /** + * @param asOverrideEnabled Enable AS number override + * + * @return builder + * + */ + public Builder asOverrideEnabled(Boolean asOverrideEnabled) { + return asOverrideEnabled(Output.of(asOverrideEnabled)); + } + /** * @param bfd Bidirectional Forwarding Detection * diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolBgpIpv4.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolBgpIpv4.java index 9c50804a..15703a2f 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolBgpIpv4.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolBgpIpv4.java @@ -6,6 +6,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -28,6 +29,21 @@ public final class GetRoutingProtocolBgpIpv4 { * */ private String equinixPeerIp; + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + private Integer inboundMed; + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + private String outboundAsPrependCount; + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + private Integer outboundMed; private GetRoutingProtocolBgpIpv4() {} /** @@ -51,6 +67,27 @@ public Optional enabled() { public String equinixPeerIp() { return this.equinixPeerIp; } + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + public Integer inboundMed() { + return this.inboundMed; + } + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + public String outboundAsPrependCount() { + return this.outboundAsPrependCount; + } + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + public Integer outboundMed() { + return this.outboundMed; + } public static Builder builder() { return new Builder(); @@ -64,12 +101,18 @@ public static final class Builder { private String customerPeerIp; private @Nullable Boolean enabled; private String equinixPeerIp; + private Integer inboundMed; + private String outboundAsPrependCount; + private Integer outboundMed; public Builder() {} public Builder(GetRoutingProtocolBgpIpv4 defaults) { Objects.requireNonNull(defaults); this.customerPeerIp = defaults.customerPeerIp; this.enabled = defaults.enabled; this.equinixPeerIp = defaults.equinixPeerIp; + this.inboundMed = defaults.inboundMed; + this.outboundAsPrependCount = defaults.outboundAsPrependCount; + this.outboundMed = defaults.outboundMed; } @CustomType.Setter @@ -94,11 +137,38 @@ public Builder equinixPeerIp(String equinixPeerIp) { this.equinixPeerIp = equinixPeerIp; return this; } + @CustomType.Setter + public Builder inboundMed(Integer inboundMed) { + if (inboundMed == null) { + throw new MissingRequiredPropertyException("GetRoutingProtocolBgpIpv4", "inboundMed"); + } + this.inboundMed = inboundMed; + return this; + } + @CustomType.Setter + public Builder outboundAsPrependCount(String outboundAsPrependCount) { + if (outboundAsPrependCount == null) { + throw new MissingRequiredPropertyException("GetRoutingProtocolBgpIpv4", "outboundAsPrependCount"); + } + this.outboundAsPrependCount = outboundAsPrependCount; + return this; + } + @CustomType.Setter + public Builder outboundMed(Integer outboundMed) { + if (outboundMed == null) { + throw new MissingRequiredPropertyException("GetRoutingProtocolBgpIpv4", "outboundMed"); + } + this.outboundMed = outboundMed; + return this; + } public GetRoutingProtocolBgpIpv4 build() { final var _resultValue = new GetRoutingProtocolBgpIpv4(); _resultValue.customerPeerIp = customerPeerIp; _resultValue.enabled = enabled; _resultValue.equinixPeerIp = equinixPeerIp; + _resultValue.inboundMed = inboundMed; + _resultValue.outboundAsPrependCount = outboundAsPrependCount; + _resultValue.outboundMed = outboundMed; return _resultValue; } } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolBgpIpv6.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolBgpIpv6.java index c52e970d..3b7fd7d2 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolBgpIpv6.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolBgpIpv6.java @@ -6,6 +6,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -28,6 +29,21 @@ public final class GetRoutingProtocolBgpIpv6 { * */ private String equinixPeerIp; + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + private Integer inboundMed; + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + private String outboundAsPrependCount; + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + private Integer outboundMed; private GetRoutingProtocolBgpIpv6() {} /** @@ -51,6 +67,27 @@ public Optional enabled() { public String equinixPeerIp() { return this.equinixPeerIp; } + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + public Integer inboundMed() { + return this.inboundMed; + } + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + public String outboundAsPrependCount() { + return this.outboundAsPrependCount; + } + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + public Integer outboundMed() { + return this.outboundMed; + } public static Builder builder() { return new Builder(); @@ -64,12 +101,18 @@ public static final class Builder { private String customerPeerIp; private @Nullable Boolean enabled; private String equinixPeerIp; + private Integer inboundMed; + private String outboundAsPrependCount; + private Integer outboundMed; public Builder() {} public Builder(GetRoutingProtocolBgpIpv6 defaults) { Objects.requireNonNull(defaults); this.customerPeerIp = defaults.customerPeerIp; this.enabled = defaults.enabled; this.equinixPeerIp = defaults.equinixPeerIp; + this.inboundMed = defaults.inboundMed; + this.outboundAsPrependCount = defaults.outboundAsPrependCount; + this.outboundMed = defaults.outboundMed; } @CustomType.Setter @@ -94,11 +137,38 @@ public Builder equinixPeerIp(String equinixPeerIp) { this.equinixPeerIp = equinixPeerIp; return this; } + @CustomType.Setter + public Builder inboundMed(Integer inboundMed) { + if (inboundMed == null) { + throw new MissingRequiredPropertyException("GetRoutingProtocolBgpIpv6", "inboundMed"); + } + this.inboundMed = inboundMed; + return this; + } + @CustomType.Setter + public Builder outboundAsPrependCount(String outboundAsPrependCount) { + if (outboundAsPrependCount == null) { + throw new MissingRequiredPropertyException("GetRoutingProtocolBgpIpv6", "outboundAsPrependCount"); + } + this.outboundAsPrependCount = outboundAsPrependCount; + return this; + } + @CustomType.Setter + public Builder outboundMed(Integer outboundMed) { + if (outboundMed == null) { + throw new MissingRequiredPropertyException("GetRoutingProtocolBgpIpv6", "outboundMed"); + } + this.outboundMed = outboundMed; + return this; + } public GetRoutingProtocolBgpIpv6 build() { final var _resultValue = new GetRoutingProtocolBgpIpv6(); _resultValue.customerPeerIp = customerPeerIp; _resultValue.enabled = enabled; _resultValue.equinixPeerIp = equinixPeerIp; + _resultValue.inboundMed = inboundMed; + _resultValue.outboundAsPrependCount = outboundAsPrependCount; + _resultValue.outboundMed = outboundMed; return _resultValue; } } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolResult.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolResult.java index f793e618..65adec9b 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolResult.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/GetRoutingProtocolResult.java @@ -13,6 +13,7 @@ import com.equinix.pulumi.fabric.outputs.GetRoutingProtocolOperation; import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; import java.lang.Integer; import java.lang.String; import java.util.List; @@ -20,6 +21,11 @@ @CustomType public final class GetRoutingProtocolResult { + /** + * @return Enable AS number override + * + */ + private Boolean asOverrideEnabled; /** * @return Bidirectional Forwarding Detection * @@ -117,6 +123,13 @@ public final class GetRoutingProtocolResult { private String uuid; private GetRoutingProtocolResult() {} + /** + * @return Enable AS number override + * + */ + public Boolean asOverrideEnabled() { + return this.asOverrideEnabled; + } /** * @return Bidirectional Forwarding Detection * @@ -260,6 +273,7 @@ public static Builder builder(GetRoutingProtocolResult defaults) { } @CustomType.Builder public static final class Builder { + private Boolean asOverrideEnabled; private GetRoutingProtocolBfd bfd; private String bgpAuthKey; private GetRoutingProtocolBgpIpv4 bgpIpv4; @@ -282,6 +296,7 @@ public static final class Builder { public Builder() {} public Builder(GetRoutingProtocolResult defaults) { Objects.requireNonNull(defaults); + this.asOverrideEnabled = defaults.asOverrideEnabled; this.bfd = defaults.bfd; this.bgpAuthKey = defaults.bgpAuthKey; this.bgpIpv4 = defaults.bgpIpv4; @@ -303,6 +318,14 @@ public Builder(GetRoutingProtocolResult defaults) { this.uuid = defaults.uuid; } + @CustomType.Setter + public Builder asOverrideEnabled(Boolean asOverrideEnabled) { + if (asOverrideEnabled == null) { + throw new MissingRequiredPropertyException("GetRoutingProtocolResult", "asOverrideEnabled"); + } + this.asOverrideEnabled = asOverrideEnabled; + return this; + } @CustomType.Setter public Builder bfd(GetRoutingProtocolBfd bfd) { if (bfd == null) { @@ -466,6 +489,7 @@ public Builder uuid(String uuid) { } public GetRoutingProtocolResult build() { final var _resultValue = new GetRoutingProtocolResult(); + _resultValue.asOverrideEnabled = asOverrideEnabled; _resultValue.bfd = bfd; _resultValue.bgpAuthKey = bgpAuthKey; _resultValue.bgpIpv4 = bgpIpv4; diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/RoutingProtocolBgpIpv4.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/RoutingProtocolBgpIpv4.java index c8b33dbe..aa750c30 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/RoutingProtocolBgpIpv4.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/RoutingProtocolBgpIpv4.java @@ -6,6 +6,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -28,6 +29,21 @@ public final class RoutingProtocolBgpIpv4 { * */ private @Nullable String equinixPeerIp; + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + private @Nullable Integer inboundMed; + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + private @Nullable String outboundAsPrependCount; + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + private @Nullable Integer outboundMed; private RoutingProtocolBgpIpv4() {} /** @@ -51,6 +67,27 @@ public Optional enabled() { public Optional equinixPeerIp() { return Optional.ofNullable(this.equinixPeerIp); } + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + public Optional inboundMed() { + return Optional.ofNullable(this.inboundMed); + } + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + public Optional outboundAsPrependCount() { + return Optional.ofNullable(this.outboundAsPrependCount); + } + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + public Optional outboundMed() { + return Optional.ofNullable(this.outboundMed); + } public static Builder builder() { return new Builder(); @@ -64,12 +101,18 @@ public static final class Builder { private String customerPeerIp; private @Nullable Boolean enabled; private @Nullable String equinixPeerIp; + private @Nullable Integer inboundMed; + private @Nullable String outboundAsPrependCount; + private @Nullable Integer outboundMed; public Builder() {} public Builder(RoutingProtocolBgpIpv4 defaults) { Objects.requireNonNull(defaults); this.customerPeerIp = defaults.customerPeerIp; this.enabled = defaults.enabled; this.equinixPeerIp = defaults.equinixPeerIp; + this.inboundMed = defaults.inboundMed; + this.outboundAsPrependCount = defaults.outboundAsPrependCount; + this.outboundMed = defaults.outboundMed; } @CustomType.Setter @@ -92,11 +135,32 @@ public Builder equinixPeerIp(@Nullable String equinixPeerIp) { this.equinixPeerIp = equinixPeerIp; return this; } + @CustomType.Setter + public Builder inboundMed(@Nullable Integer inboundMed) { + + this.inboundMed = inboundMed; + return this; + } + @CustomType.Setter + public Builder outboundAsPrependCount(@Nullable String outboundAsPrependCount) { + + this.outboundAsPrependCount = outboundAsPrependCount; + return this; + } + @CustomType.Setter + public Builder outboundMed(@Nullable Integer outboundMed) { + + this.outboundMed = outboundMed; + return this; + } public RoutingProtocolBgpIpv4 build() { final var _resultValue = new RoutingProtocolBgpIpv4(); _resultValue.customerPeerIp = customerPeerIp; _resultValue.enabled = enabled; _resultValue.equinixPeerIp = equinixPeerIp; + _resultValue.inboundMed = inboundMed; + _resultValue.outboundAsPrependCount = outboundAsPrependCount; + _resultValue.outboundMed = outboundMed; return _resultValue; } } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/RoutingProtocolBgpIpv6.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/RoutingProtocolBgpIpv6.java index fe0b96d7..c5c95d07 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/RoutingProtocolBgpIpv6.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/RoutingProtocolBgpIpv6.java @@ -6,6 +6,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -28,6 +29,21 @@ public final class RoutingProtocolBgpIpv6 { * */ private @Nullable String equinixPeerIp; + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + private @Nullable Integer inboundMed; + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + private @Nullable String outboundAsPrependCount; + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + private @Nullable Integer outboundMed; private RoutingProtocolBgpIpv6() {} /** @@ -51,6 +67,27 @@ public Optional enabled() { public Optional equinixPeerIp() { return Optional.ofNullable(this.equinixPeerIp); } + /** + * @return Inbound Multi Exit Discriminator attribute + * + */ + public Optional inboundMed() { + return Optional.ofNullable(this.inboundMed); + } + /** + * @return AS path prepend count. One of: 0, 1, 3, 5 + * + */ + public Optional outboundAsPrependCount() { + return Optional.ofNullable(this.outboundAsPrependCount); + } + /** + * @return Outbound Multi Exit Discriminator attribute + * + */ + public Optional outboundMed() { + return Optional.ofNullable(this.outboundMed); + } public static Builder builder() { return new Builder(); @@ -64,12 +101,18 @@ public static final class Builder { private String customerPeerIp; private @Nullable Boolean enabled; private @Nullable String equinixPeerIp; + private @Nullable Integer inboundMed; + private @Nullable String outboundAsPrependCount; + private @Nullable Integer outboundMed; public Builder() {} public Builder(RoutingProtocolBgpIpv6 defaults) { Objects.requireNonNull(defaults); this.customerPeerIp = defaults.customerPeerIp; this.enabled = defaults.enabled; this.equinixPeerIp = defaults.equinixPeerIp; + this.inboundMed = defaults.inboundMed; + this.outboundAsPrependCount = defaults.outboundAsPrependCount; + this.outboundMed = defaults.outboundMed; } @CustomType.Setter @@ -92,11 +135,32 @@ public Builder equinixPeerIp(@Nullable String equinixPeerIp) { this.equinixPeerIp = equinixPeerIp; return this; } + @CustomType.Setter + public Builder inboundMed(@Nullable Integer inboundMed) { + + this.inboundMed = inboundMed; + return this; + } + @CustomType.Setter + public Builder outboundAsPrependCount(@Nullable String outboundAsPrependCount) { + + this.outboundAsPrependCount = outboundAsPrependCount; + return this; + } + @CustomType.Setter + public Builder outboundMed(@Nullable Integer outboundMed) { + + this.outboundMed = outboundMed; + return this; + } public RoutingProtocolBgpIpv6 build() { final var _resultValue = new RoutingProtocolBgpIpv6(); _resultValue.customerPeerIp = customerPeerIp; _resultValue.enabled = enabled; _resultValue.equinixPeerIp = equinixPeerIp; + _resultValue.inboundMed = inboundMed; + _resultValue.outboundAsPrependCount = outboundAsPrependCount; + _resultValue.outboundMed = outboundMed; return _resultValue; } } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/Interconnection.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/Interconnection.java index d555ce31..4a220210 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/metal/Interconnection.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/Interconnection.java @@ -21,10 +21,8 @@ /** * Use this resource to request the creation an Interconnection asset to connect with other parties using [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/). * - * > Equinix Metal connection with with Service Token A-side / Z-side (service_token_type) is not generally available and may not be enabled yet for your organization. - * * ## Example Usage - * ### example shared metal fabric connection from fcr + * ### example fabric billed metal from fabric port *
  * {@code
  * package generated_program;
@@ -32,6 +30,9 @@
  * import com.pulumi.Context;
  * import com.pulumi.Pulumi;
  * import com.pulumi.core.Output;
+ * import com.pulumi.equinix.fabric.FabricFunctions;
+ * import com.pulumi.equinix.fabric.inputs.GetPortsArgs;
+ * import com.pulumi.equinix.fabric.inputs.GetPortsFilterArgs;
  * import com.pulumi.equinix.metal.Vlan;
  * import com.pulumi.equinix.metal.VlanArgs;
  * import com.pulumi.equinix.metal.Interconnection;
@@ -39,8 +40,103 @@
  * import com.pulumi.equinix.fabric.Connection;
  * import com.pulumi.equinix.fabric.ConnectionArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;
- * import com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointPortArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointLinkProtocolArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionZSideServiceTokenArgs;
+ * 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 }{{@code
+ *     public static void main(String[] args) }{{@code
+ *         Pulumi.run(App::stack);
+ *     }}{@code
+ * 
+ *     public static void stack(Context ctx) }{{@code
+ *         final var aSide = FabricFunctions.getPorts(GetPortsArgs.builder()
+ *             .filter(GetPortsFilterArgs.builder()
+ *                 .name("")
+ *                 .build())
+ *             .build());
+ * 
+ *         var example = new Vlan("example", VlanArgs.builder()
+ *             .projectId("")
+ *             .metro("FR")
+ *             .build());
+ * 
+ *         var exampleInterconnection = new Interconnection("exampleInterconnection", InterconnectionArgs.builder()
+ *             .name("tf-metal-from-port")
+ *             .projectId("")
+ *             .type("shared")
+ *             .redundancy("primary")
+ *             .metro("FR")
+ *             .speed("200Mbps")
+ *             .serviceTokenType("z_side")
+ *             .contactEmail("username}{@literal @}{@code example.com")
+ *             .vlans(example.vxlan())
+ *             .build());
+ * 
+ *         var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder()
+ *             .name("tf-metal-from-port")
+ *             .type("EVPL_VC")
+ *             .bandwidth("200")
+ *             .notifications(ConnectionNotificationArgs.builder()
+ *                 .type("ALL")
+ *                 .emails("username}{@literal @}{@code example.com")
+ *                 .build())
+ *             .order(ConnectionOrderArgs.builder()
+ *                 .purchaseOrderNumber("1-323292")
+ *                 .build())
+ *             .project(ConnectionProjectArgs.builder()
+ *                 .projectId("")
+ *                 .build())
+ *             .aSide(ConnectionASideArgs.builder()
+ *                 .accessPoint(ConnectionASideAccessPointArgs.builder()
+ *                     .type("COLO")
+ *                     .port(ConnectionASideAccessPointPortArgs.builder()
+ *                         .uuid(aSide.applyValue(getPortsResult -> getPortsResult.data()[0].uuid()))
+ *                         .build())
+ *                     .linkProtocol(ConnectionASideAccessPointLinkProtocolArgs.builder()
+ *                         .type("DOT1Q")
+ *                         .vlanTag(1234)
+ *                         .build())
+ *                     .build())
+ *                 .build())
+ *             .zSide(ConnectionZSideArgs.builder()
+ *                 .serviceToken(ConnectionZSideServiceTokenArgs.builder()
+ *                     .uuid(exampleInterconnection.serviceTokens().applyValue(serviceTokens -> serviceTokens[0].id()))
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }}{@code
+ * }}{@code
+ * }
+ * 
+ * ### example fabric billed metal from fcr + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.equinix.metal.Vlan;
+ * import com.pulumi.equinix.metal.VlanArgs;
+ * import com.pulumi.equinix.metal.Interconnection;
+ * import com.pulumi.equinix.metal.InterconnectionArgs;
+ * import com.pulumi.equinix.fabric.Connection;
+ * import com.pulumi.equinix.fabric.ConnectionArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointRouterArgs;
@@ -60,39 +156,37 @@
  * 
  *     public static void stack(Context ctx) }{{@code
  *         var example1 = new Vlan("example1", VlanArgs.builder()
- *             .projectId(myProjectId)
+ *             .projectId("")
  *             .metro("SV")
  *             .build());
  * 
  *         var example = new Interconnection("example", InterconnectionArgs.builder()
- *             .name("tf-port-to-metal-legacy")
- *             .projectId(myProjectId)
+ *             .name("tf-metal-from-fcr")
+ *             .projectId("")
  *             .metro("SV")
  *             .redundancy("primary")
  *             .type("shared_port_vlan")
  *             .contactEmail("username}{@literal @}{@code example.com")
+ *             .speed("200Mbps")
  *             .vlans(example1.vxlan())
  *             .build());
  * 
  *         var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder()
- *             .name("tf-NIMF-metal-2-aws-legacy")
+ *             .name("tf-metal-from-fcr")
  *             .type("IP_VC")
+ *             .bandwidth("200")
  *             .notifications(ConnectionNotificationArgs.builder()
  *                 .type("ALL")
- *                 .emails("sername}{@literal @}{@code example.com")
+ *                 .emails("username}{@literal @}{@code example.com")
  *                 .build())
  *             .project(ConnectionProjectArgs.builder()
- *                 .projectId(fabricProjectId)
- *                 .build())
- *             .bandwidth("200")
- *             .order(ConnectionOrderArgs.builder()
- *                 .purchaseOrderNumber("1-323292")
+ *                 .projectId("")
  *                 .build())
  *             .aSide(ConnectionASideArgs.builder()
  *                 .accessPoint(ConnectionASideAccessPointArgs.builder()
  *                     .type("CLOUD_ROUTER")
  *                     .router(ConnectionASideAccessPointRouterArgs.builder()
- *                         .uuid(cloudRouterUuid)
+ *                         .uuid(exampleEquinixFabricCloudRouter.id())
  *                         .build())
  *                     .build())
  *                 .build())
@@ -108,7 +202,7 @@
  * }}{@code
  * }
  * 
- * ### example shared metal fabric connection to csp + * ### example fabric billed metal from network edge *
  * {@code
  * package generated_program;
@@ -116,24 +210,20 @@
  * import com.pulumi.Context;
  * import com.pulumi.Pulumi;
  * import com.pulumi.core.Output;
- * import com.pulumi.equinix.fabric.FabricFunctions;
- * import com.pulumi.equinix.fabric.inputs.GetServiceProfilesArgs;
- * import com.pulumi.equinix.fabric.inputs.GetServiceProfilesFilterArgs;
- * import com.pulumi.equinix.metal.Vlan;
- * import com.pulumi.equinix.metal.VlanArgs;
+ * import com.pulumi.equinix.metal.Vrf;
+ * import com.pulumi.equinix.metal.VrfArgs;
  * import com.pulumi.equinix.metal.Interconnection;
  * import com.pulumi.equinix.metal.InterconnectionArgs;
  * import com.pulumi.equinix.fabric.Connection;
  * import com.pulumi.equinix.fabric.ConnectionArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;
- * import com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionASideAccessPointVirtualDeviceArgs;
  * import com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;
- * import com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;
- * import com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointProfileArgs;
- * import com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLocationArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionZSideServiceTokenArgs;
  * import java.util.List;
  * import java.util.ArrayList;
  * import java.util.Map;
@@ -147,60 +237,142 @@
  *     }}{@code
  * 
  *     public static void stack(Context ctx) }{{@code
- *         final var zside = FabricFunctions.getServiceProfiles(GetServiceProfilesArgs.builder()
- *             .filter(GetServiceProfilesFilterArgs.builder()
- *                 .property("/name")
- *                 .operator("=")
- *                 .values("AWS Direct Connect")
+ *         var example = new Vrf("example", VrfArgs.builder()
+ *             .name("tf-metal-from-ne")
+ *             .metro("FR")
+ *             .localAsn("65001")
+ *             .ipRanges("10.99.1.0/24")
+ *             .projectId(test.id())
+ *             .build());
+ * 
+ *         var exampleInterconnection = new Interconnection("exampleInterconnection", InterconnectionArgs.builder()
+ *             .name("tf-metal-from-ne")
+ *             .projectId("")
+ *             .type("shared")
+ *             .redundancy("primary")
+ *             .metro("FR")
+ *             .speed("200Mbps")
+ *             .serviceTokenType("z_side")
+ *             .contactEmail("username}{@literal @}{@code example.com")
+ *             .vrfs(example.vxlan())
+ *             .build());
+ * 
+ *         var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder()
+ *             .name("tf-metal-from-ne")
+ *             .type("EVPL_VC")
+ *             .bandwidth("200")
+ *             .notifications(ConnectionNotificationArgs.builder()
+ *                 .type("ALL")
+ *                 .emails("username}{@literal @}{@code example.com")
+ *                 .build())
+ *             .order(ConnectionOrderArgs.builder()
+ *                 .purchaseOrderNumber("1-323292")
+ *                 .build())
+ *             .project(ConnectionProjectArgs.builder()
+ *                 .projectId("")
+ *                 .build())
+ *             .aSide(ConnectionASideArgs.builder()
+ *                 .accessPoint(ConnectionASideAccessPointArgs.builder()
+ *                     .type("VD")
+ *                     .virtualDevice(ConnectionASideAccessPointVirtualDeviceArgs.builder()
+ *                         .type("EDGE")
+ *                         .uuid(exampleEquinixNetworkDevice.id())
+ *                         .build())
+ *                     .build())
+ *                 .build())
+ *             .zSide(ConnectionZSideArgs.builder()
+ *                 .serviceToken(ConnectionZSideServiceTokenArgs.builder()
+ *                     .uuid(exampleInterconnection.serviceTokens().applyValue(serviceTokens -> serviceTokens[0].id()))
+ *                     .build())
  *                 .build())
  *             .build());
  * 
- *         var example1 = new Vlan("example1", VlanArgs.builder()
- *             .projectId(myProjectId)
- *             .metro("SV")
+ *     }}{@code
+ * }}{@code
+ * }
+ * 
+ * ### example metal billed metal to fabric port + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.equinix.fabric.FabricFunctions;
+ * import com.pulumi.equinix.fabric.inputs.GetPortsArgs;
+ * import com.pulumi.equinix.fabric.inputs.GetPortsFilterArgs;
+ * import com.pulumi.equinix.metal.Interconnection;
+ * import com.pulumi.equinix.metal.InterconnectionArgs;
+ * import com.pulumi.equinix.fabric.Connection;
+ * import com.pulumi.equinix.fabric.ConnectionArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionNotificationArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionProjectArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionOrderArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionASideArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionASideServiceTokenArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionZSideArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointPortArgs;
+ * import com.pulumi.equinix.fabric.inputs.ConnectionZSideAccessPointLinkProtocolArgs;
+ * 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 }{{@code
+ *     public static void main(String[] args) }{{@code
+ *         Pulumi.run(App::stack);
+ *     }}{@code
+ * 
+ *     public static void stack(Context ctx) }{{@code
+ *         final var aSide = FabricFunctions.getPorts(GetPortsArgs.builder()
+ *             .filter(GetPortsFilterArgs.builder()
+ *                 .name("")
+ *                 .build())
  *             .build());
  * 
  *         var example = new Interconnection("example", InterconnectionArgs.builder()
- *             .name("tf-port-to-metal-legacy")
- *             .projectId(myProjectId)
- *             .metro("SV")
- *             .redundancy("primary")
- *             .type("shared_port_vlan")
+ *             .name("tf-metal-2-port")
+ *             .projectId("")
+ *             .type("shared")
+ *             .redundancy("redundant")
+ *             .metro("FR")
+ *             .speed("1Gbps")
+ *             .serviceTokenType("a_side")
  *             .contactEmail("username}{@literal @}{@code example.com")
- *             .vlans(example1.vxlan())
  *             .build());
  * 
  *         var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder()
- *             .name("tf-NIMF-metal-2-aws-legacy")
+ *             .name("tf-metal-2-port")
  *             .type("EVPL_VC")
  *             .notifications(ConnectionNotificationArgs.builder()
  *                 .type("ALL")
- *                 .emails("sername}{@literal @}{@code example.com")
+ *                 .emails("username}{@literal @}{@code example.com")
  *                 .build())
  *             .project(ConnectionProjectArgs.builder()
- *                 .projectId(fabricProjectId)
+ *                 .projectId("")
  *                 .build())
- *             .bandwidth("200")
+ *             .bandwidth("100")
  *             .order(ConnectionOrderArgs.builder()
  *                 .purchaseOrderNumber("1-323292")
  *                 .build())
  *             .aSide(ConnectionASideArgs.builder()
- *                 .accessPoint(ConnectionASideAccessPointArgs.builder()
- *                     .type("METAL_NETWORK")
- *                     .authenticationKey(example.authorizationCode())
+ *                 .serviceToken(ConnectionASideServiceTokenArgs.builder()
+ *                     .uuid(example.serviceTokens().applyValue(serviceTokens -> serviceTokens[0].id()))
  *                     .build())
  *                 .build())
  *             .zSide(ConnectionZSideArgs.builder()
  *                 .accessPoint(ConnectionZSideAccessPointArgs.builder()
- *                     .type("SP")
- *                     .authenticationKey(awsAccountId)
- *                     .sellerRegion("us-west-1")
- *                     .profile(ConnectionZSideAccessPointProfileArgs.builder()
- *                         .type("L2_PROFILE")
- *                         .uuid(zside.applyValue(getServiceProfilesResult -> getServiceProfilesResult.id()))
+ *                     .type("COLO")
+ *                     .port(ConnectionZSideAccessPointPortArgs.builder()
+ *                         .uuid(aSide.applyValue(getPortsResult -> getPortsResult.data()[0].uuid()))
  *                         .build())
- *                     .location(ConnectionZSideAccessPointLocationArgs.builder()
- *                         .metroCode("SV")
+ *                     .linkProtocol(ConnectionZSideAccessPointLinkProtocolArgs.builder()
+ *                         .type("DOT1Q")
+ *                         .vlanTag(1234)
  *                         .build())
  *                     .build())
  *                 .build())
@@ -215,49 +387,49 @@
 @ResourceType(type="equinix:metal/interconnection:Interconnection")
 public class Interconnection extends com.pulumi.resources.CustomResource {
     /**
-     * Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+     * Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
      * 
      */
     @Export(name="authorizationCode", refs={String.class}, tree="[0]")
     private Output authorizationCode;
 
     /**
-     * @return Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+     * @return Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
      * 
      */
     public Output authorizationCode() {
         return this.authorizationCode;
     }
     /**
-     * The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+     * The preferred email used for communication and notifications about the Equinix Fabric interconnection
      * 
      */
     @Export(name="contactEmail", refs={String.class}, tree="[0]")
     private Output contactEmail;
 
     /**
-     * @return The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+     * @return The preferred email used for communication and notifications about the Equinix Fabric interconnection
      * 
      */
     public Output contactEmail() {
         return this.contactEmail;
     }
     /**
-     * Description for the connection resource.
+     * Description of the connection resource
      * 
      */
     @Export(name="description", refs={String.class}, tree="[0]")
     private Output description;
 
     /**
-     * @return Description for the connection resource.
+     * @return Description of the connection resource
      * 
      */
     public Output description() {
         return this.description;
     }
     /**
-     * Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+     * Facility where the connection will be created
      * 
      * @deprecated
      * Use metro instead of facility. For more information, read the migration guide.
@@ -268,35 +440,35 @@ public Output description() {
     private Output facility;
 
     /**
-     * @return Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+     * @return Facility where the connection will be created
      * 
      */
     public Output facility() {
         return this.facility;
     }
     /**
-     * Metro where the connection will be created.
+     * Metro where the connection will be created
      * 
      */
     @Export(name="metro", refs={String.class}, tree="[0]")
     private Output metro;
 
     /**
-     * @return Metro where the connection will be created.
+     * @return Metro where the connection will be created
      * 
      */
     public Output metro() {
         return this.metro;
     }
     /**
-     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel
      * 
      */
     @Export(name="mode", refs={String.class}, tree="[0]")
     private Output mode;
 
     /**
-     * @return Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+     * @return Mode for connections in IBX facilities with the dedicated type - standard or tunnel
      * 
      */
     public Output mode() {
@@ -317,133 +489,133 @@ public Output name() {
         return this.name;
     }
     /**
-     * ID of the organization where the connection is scoped to.
+     * ID of the organization responsible for the connection. Applicable with type "dedicated"
      * 
      */
     @Export(name="organizationId", refs={String.class}, tree="[0]")
     private Output organizationId;
 
     /**
-     * @return ID of the organization where the connection is scoped to.
+     * @return ID of the organization responsible for the connection. Applicable with type "dedicated"
      * 
      */
     public Output organizationId() {
         return this.organizationId;
     }
     /**
-     * List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource.
+     * List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
      * 
      */
     @Export(name="ports", refs={List.class,InterconnectionPort.class}, tree="[0,1]")
     private Output> ports;
 
     /**
-     * @return List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource.
+     * @return List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
      * 
      */
     public Output> ports() {
         return this.ports;
     }
     /**
-     * ID of the project where the connection is scoped to, must be set for.
+     * ID of the project where the connection is scoped to. Required with type "shared"
      * 
      */
     @Export(name="projectId", refs={String.class}, tree="[0]")
     private Output projectId;
 
     /**
-     * @return ID of the project where the connection is scoped to, must be set for.
+     * @return ID of the project where the connection is scoped to. Required with type "shared"
      * 
      */
     public Output> projectId() {
         return Codegen.optional(this.projectId);
     }
     /**
-     * Connection redundancy - redundant or primary.
+     * Connection redundancy - redundant or primary
      * 
      */
     @Export(name="redundancy", refs={String.class}, tree="[0]")
     private Output redundancy;
 
     /**
-     * @return Connection redundancy - redundant or primary.
+     * @return Connection redundancy - redundant or primary
      * 
      */
     public Output redundancy() {
         return this.redundancy;
     }
     /**
-     * Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+     * Only used with shared connection. Type of service token to use for the connection, a*side or z*side
      * 
      */
     @Export(name="serviceTokenType", refs={String.class}, tree="[0]")
     private Output serviceTokenType;
 
     /**
-     * @return Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+     * @return Only used with shared connection. Type of service token to use for the connection, a*side or z*side
      * 
      */
     public Output> serviceTokenType() {
         return Codegen.optional(this.serviceTokenType);
     }
     /**
-     * List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the equinix.metal.Interconnection datasource.
+     * Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      * 
      */
     @Export(name="serviceTokens", refs={List.class,InterconnectionServiceToken.class}, tree="[0,1]")
     private Output> serviceTokens;
 
     /**
-     * @return List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the equinix.metal.Interconnection datasource.
+     * @return Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      * 
      */
     public Output> serviceTokens() {
         return this.serviceTokens;
     }
     /**
-     * Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+     * Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
      * 
      */
     @Export(name="speed", refs={String.class}, tree="[0]")
     private Output speed;
 
     /**
-     * @return Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+     * @return Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
      * 
      */
     public Output speed() {
         return this.speed;
     }
     /**
-     * Status of the connection resource.
+     * Status of the connection resource
      * 
      */
     @Export(name="status", refs={String.class}, tree="[0]")
     private Output status;
 
     /**
-     * @return Status of the connection resource.
+     * @return Status of the connection resource
      * 
      */
     public Output status() {
         return this.status;
     }
     /**
-     * String list of tags.
+     * Tags attached to the connection
      * 
      */
     @Export(name="tags", refs={List.class,String.class}, tree="[0,1]")
     private Output> tags;
 
     /**
-     * @return String list of tags.
+     * @return Tags attached to the connection
      * 
      */
     public Output>> tags() {
         return Codegen.optional(this.tags);
     }
     /**
-     * (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
+     * Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      * 
      * @deprecated
      * If your organization already has connection service tokens enabled, use `service_tokens` instead
@@ -454,51 +626,49 @@ public Output>> tags() {
     private Output token;
 
     /**
-     * @return (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
+     * @return Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      * 
      */
     public Output token() {
         return this.token;
     }
     /**
-     * Connection type - dedicated or shared.
+     * Connection type - dedicated, shared or shared*port*vlan
      * 
      */
     @Export(name="type", refs={String.class}, tree="[0]")
     private Output type;
 
     /**
-     * @return Connection type - dedicated or shared.
+     * @return Connection type - dedicated, shared or shared*port*vlan
      * 
      */
     public Output type() {
         return this.type;
     }
     /**
-     * Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+     * Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
      * 
      */
     @Export(name="vlans", refs={List.class,Integer.class}, tree="[0,1]")
     private Output> vlans;
 
     /**
-     * @return Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+     * @return Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
      * 
      */
     public Output>> vlans() {
         return Codegen.optional(this.vlans);
     }
     /**
-     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-     * connection
+     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
      * 
      */
     @Export(name="vrfs", refs={List.class,String.class}, tree="[0,1]")
     private Output> vrfs;
 
     /**
-     * @return Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-     * connection
+     * @return Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
      * 
      */
     public Output>> vrfs() {
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/InterconnectionArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/InterconnectionArgs.java
index 2fafb445..8cd73dd9 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/metal/InterconnectionArgs.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/InterconnectionArgs.java
@@ -19,14 +19,14 @@ public final class InterconnectionArgs extends com.pulumi.resources.ResourceArgs
     public static final InterconnectionArgs Empty = new InterconnectionArgs();
 
     /**
-     * The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+     * The preferred email used for communication and notifications about the Equinix Fabric interconnection
      * 
      */
     @Import(name="contactEmail")
     private @Nullable Output contactEmail;
 
     /**
-     * @return The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+     * @return The preferred email used for communication and notifications about the Equinix Fabric interconnection
      * 
      */
     public Optional> contactEmail() {
@@ -34,14 +34,14 @@ public Optional> contactEmail() {
     }
 
     /**
-     * Description for the connection resource.
+     * Description of the connection resource
      * 
      */
     @Import(name="description")
     private @Nullable Output description;
 
     /**
-     * @return Description for the connection resource.
+     * @return Description of the connection resource
      * 
      */
     public Optional> description() {
@@ -49,7 +49,7 @@ public Optional> description() {
     }
 
     /**
-     * Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+     * Facility where the connection will be created
      * 
      * @deprecated
      * Use metro instead of facility. For more information, read the migration guide.
@@ -60,7 +60,7 @@ public Optional> description() {
     private @Nullable Output facility;
 
     /**
-     * @return Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+     * @return Facility where the connection will be created
      * 
      * @deprecated
      * Use metro instead of facility. For more information, read the migration guide.
@@ -72,14 +72,14 @@ public Optional> facility() {
     }
 
     /**
-     * Metro where the connection will be created.
+     * Metro where the connection will be created
      * 
      */
     @Import(name="metro")
     private @Nullable Output metro;
 
     /**
-     * @return Metro where the connection will be created.
+     * @return Metro where the connection will be created
      * 
      */
     public Optional> metro() {
@@ -87,14 +87,14 @@ public Optional> metro() {
     }
 
     /**
-     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel
      * 
      */
     @Import(name="mode")
     private @Nullable Output mode;
 
     /**
-     * @return Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+     * @return Mode for connections in IBX facilities with the dedicated type - standard or tunnel
      * 
      */
     public Optional> mode() {
@@ -117,14 +117,14 @@ public Optional> name() {
     }
 
     /**
-     * ID of the organization where the connection is scoped to.
+     * ID of the organization responsible for the connection. Applicable with type "dedicated"
      * 
      */
     @Import(name="organizationId")
     private @Nullable Output organizationId;
 
     /**
-     * @return ID of the organization where the connection is scoped to.
+     * @return ID of the organization responsible for the connection. Applicable with type "dedicated"
      * 
      */
     public Optional> organizationId() {
@@ -132,14 +132,14 @@ public Optional> organizationId() {
     }
 
     /**
-     * ID of the project where the connection is scoped to, must be set for.
+     * ID of the project where the connection is scoped to. Required with type "shared"
      * 
      */
     @Import(name="projectId")
     private @Nullable Output projectId;
 
     /**
-     * @return ID of the project where the connection is scoped to, must be set for.
+     * @return ID of the project where the connection is scoped to. Required with type "shared"
      * 
      */
     public Optional> projectId() {
@@ -147,14 +147,14 @@ public Optional> projectId() {
     }
 
     /**
-     * Connection redundancy - redundant or primary.
+     * Connection redundancy - redundant or primary
      * 
      */
     @Import(name="redundancy", required=true)
     private Output redundancy;
 
     /**
-     * @return Connection redundancy - redundant or primary.
+     * @return Connection redundancy - redundant or primary
      * 
      */
     public Output redundancy() {
@@ -162,14 +162,14 @@ public Output redundancy() {
     }
 
     /**
-     * Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+     * Only used with shared connection. Type of service token to use for the connection, a*side or z*side
      * 
      */
     @Import(name="serviceTokenType")
     private @Nullable Output serviceTokenType;
 
     /**
-     * @return Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+     * @return Only used with shared connection. Type of service token to use for the connection, a*side or z*side
      * 
      */
     public Optional> serviceTokenType() {
@@ -177,14 +177,14 @@ public Optional> serviceTokenType() {
     }
 
     /**
-     * Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+     * Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
      * 
      */
     @Import(name="speed")
     private @Nullable Output speed;
 
     /**
-     * @return Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+     * @return Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
      * 
      */
     public Optional> speed() {
@@ -192,14 +192,14 @@ public Optional> speed() {
     }
 
     /**
-     * String list of tags.
+     * Tags attached to the connection
      * 
      */
     @Import(name="tags")
     private @Nullable Output> tags;
 
     /**
-     * @return String list of tags.
+     * @return Tags attached to the connection
      * 
      */
     public Optional>> tags() {
@@ -207,14 +207,14 @@ public Optional>> tags() {
     }
 
     /**
-     * Connection type - dedicated or shared.
+     * Connection type - dedicated, shared or shared*port*vlan
      * 
      */
     @Import(name="type", required=true)
     private Output type;
 
     /**
-     * @return Connection type - dedicated or shared.
+     * @return Connection type - dedicated, shared or shared*port*vlan
      * 
      */
     public Output type() {
@@ -222,14 +222,14 @@ public Output type() {
     }
 
     /**
-     * Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+     * Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
      * 
      */
     @Import(name="vlans")
     private @Nullable Output> vlans;
 
     /**
-     * @return Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+     * @return Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
      * 
      */
     public Optional>> vlans() {
@@ -237,16 +237,14 @@ public Optional>> vlans() {
     }
 
     /**
-     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-     * connection
+     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
      * 
      */
     @Import(name="vrfs")
     private @Nullable Output> vrfs;
 
     /**
-     * @return Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-     * connection
+     * @return Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
      * 
      */
     public Optional>> vrfs() {
@@ -292,7 +290,7 @@ public Builder(InterconnectionArgs defaults) {
         }
 
         /**
-         * @param contactEmail The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+         * @param contactEmail The preferred email used for communication and notifications about the Equinix Fabric interconnection
          * 
          * @return builder
          * 
@@ -303,7 +301,7 @@ public Builder contactEmail(@Nullable Output contactEmail) {
         }
 
         /**
-         * @param contactEmail The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+         * @param contactEmail The preferred email used for communication and notifications about the Equinix Fabric interconnection
          * 
          * @return builder
          * 
@@ -313,7 +311,7 @@ public Builder contactEmail(String contactEmail) {
         }
 
         /**
-         * @param description Description for the connection resource.
+         * @param description Description of the connection resource
          * 
          * @return builder
          * 
@@ -324,7 +322,7 @@ public Builder description(@Nullable Output description) {
         }
 
         /**
-         * @param description Description for the connection resource.
+         * @param description Description of the connection resource
          * 
          * @return builder
          * 
@@ -334,7 +332,7 @@ public Builder description(String description) {
         }
 
         /**
-         * @param facility Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+         * @param facility Facility where the connection will be created
          * 
          * @return builder
          * 
@@ -349,7 +347,7 @@ public Builder facility(@Nullable Output facility) {
         }
 
         /**
-         * @param facility Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+         * @param facility Facility where the connection will be created
          * 
          * @return builder
          * 
@@ -363,7 +361,7 @@ public Builder facility(String facility) {
         }
 
         /**
-         * @param metro Metro where the connection will be created.
+         * @param metro Metro where the connection will be created
          * 
          * @return builder
          * 
@@ -374,7 +372,7 @@ public Builder metro(@Nullable Output metro) {
         }
 
         /**
-         * @param metro Metro where the connection will be created.
+         * @param metro Metro where the connection will be created
          * 
          * @return builder
          * 
@@ -384,7 +382,7 @@ public Builder metro(String metro) {
         }
 
         /**
-         * @param mode Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+         * @param mode Mode for connections in IBX facilities with the dedicated type - standard or tunnel
          * 
          * @return builder
          * 
@@ -395,7 +393,7 @@ public Builder mode(@Nullable Output mode) {
         }
 
         /**
-         * @param mode Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+         * @param mode Mode for connections in IBX facilities with the dedicated type - standard or tunnel
          * 
          * @return builder
          * 
@@ -426,7 +424,7 @@ public Builder name(String name) {
         }
 
         /**
-         * @param organizationId ID of the organization where the connection is scoped to.
+         * @param organizationId ID of the organization responsible for the connection. Applicable with type "dedicated"
          * 
          * @return builder
          * 
@@ -437,7 +435,7 @@ public Builder organizationId(@Nullable Output organizationId) {
         }
 
         /**
-         * @param organizationId ID of the organization where the connection is scoped to.
+         * @param organizationId ID of the organization responsible for the connection. Applicable with type "dedicated"
          * 
          * @return builder
          * 
@@ -447,7 +445,7 @@ public Builder organizationId(String organizationId) {
         }
 
         /**
-         * @param projectId ID of the project where the connection is scoped to, must be set for.
+         * @param projectId ID of the project where the connection is scoped to. Required with type "shared"
          * 
          * @return builder
          * 
@@ -458,7 +456,7 @@ public Builder projectId(@Nullable Output projectId) {
         }
 
         /**
-         * @param projectId ID of the project where the connection is scoped to, must be set for.
+         * @param projectId ID of the project where the connection is scoped to. Required with type "shared"
          * 
          * @return builder
          * 
@@ -468,7 +466,7 @@ public Builder projectId(String projectId) {
         }
 
         /**
-         * @param redundancy Connection redundancy - redundant or primary.
+         * @param redundancy Connection redundancy - redundant or primary
          * 
          * @return builder
          * 
@@ -479,7 +477,7 @@ public Builder redundancy(Output redundancy) {
         }
 
         /**
-         * @param redundancy Connection redundancy - redundant or primary.
+         * @param redundancy Connection redundancy - redundant or primary
          * 
          * @return builder
          * 
@@ -489,7 +487,7 @@ public Builder redundancy(String redundancy) {
         }
 
         /**
-         * @param serviceTokenType Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+         * @param serviceTokenType Only used with shared connection. Type of service token to use for the connection, a*side or z*side
          * 
          * @return builder
          * 
@@ -500,7 +498,7 @@ public Builder serviceTokenType(@Nullable Output serviceTokenType) {
         }
 
         /**
-         * @param serviceTokenType Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+         * @param serviceTokenType Only used with shared connection. Type of service token to use for the connection, a*side or z*side
          * 
          * @return builder
          * 
@@ -510,7 +508,7 @@ public Builder serviceTokenType(String serviceTokenType) {
         }
 
         /**
-         * @param speed Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+         * @param speed Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
          * 
          * @return builder
          * 
@@ -521,7 +519,7 @@ public Builder speed(@Nullable Output speed) {
         }
 
         /**
-         * @param speed Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+         * @param speed Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
          * 
          * @return builder
          * 
@@ -531,7 +529,7 @@ public Builder speed(String speed) {
         }
 
         /**
-         * @param tags String list of tags.
+         * @param tags Tags attached to the connection
          * 
          * @return builder
          * 
@@ -542,7 +540,7 @@ public Builder tags(@Nullable Output> tags) {
         }
 
         /**
-         * @param tags String list of tags.
+         * @param tags Tags attached to the connection
          * 
          * @return builder
          * 
@@ -552,7 +550,7 @@ public Builder tags(List tags) {
         }
 
         /**
-         * @param tags String list of tags.
+         * @param tags Tags attached to the connection
          * 
          * @return builder
          * 
@@ -562,7 +560,7 @@ public Builder tags(String... tags) {
         }
 
         /**
-         * @param type Connection type - dedicated or shared.
+         * @param type Connection type - dedicated, shared or shared*port*vlan
          * 
          * @return builder
          * 
@@ -573,7 +571,7 @@ public Builder type(Output type) {
         }
 
         /**
-         * @param type Connection type - dedicated or shared.
+         * @param type Connection type - dedicated, shared or shared*port*vlan
          * 
          * @return builder
          * 
@@ -583,7 +581,7 @@ public Builder type(String type) {
         }
 
         /**
-         * @param vlans Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+         * @param vlans Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
          * 
          * @return builder
          * 
@@ -594,7 +592,7 @@ public Builder vlans(@Nullable Output> vlans) {
         }
 
         /**
-         * @param vlans Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+         * @param vlans Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
          * 
          * @return builder
          * 
@@ -604,7 +602,7 @@ public Builder vlans(List vlans) {
         }
 
         /**
-         * @param vlans Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+         * @param vlans Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
          * 
          * @return builder
          * 
@@ -614,8 +612,7 @@ public Builder vlans(Integer... vlans) {
         }
 
         /**
-         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-         * connection
+         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
          * 
          * @return builder
          * 
@@ -626,8 +623,7 @@ public Builder vrfs(@Nullable Output> vrfs) {
         }
 
         /**
-         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-         * connection
+         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
          * 
          * @return builder
          * 
@@ -637,8 +633,7 @@ public Builder vrfs(List vrfs) {
         }
 
         /**
-         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-         * connection
+         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/Vrf.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/Vrf.java
index 028b671f..be348086 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/metal/Vrf.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/Vrf.java
@@ -173,14 +173,14 @@
 @ResourceType(type="equinix:metal/vrf:Vrf")
 public class Vrf extends com.pulumi.resources.CustomResource {
     /**
-     * Description of the VRF.
+     * Description of the VRF
      * 
      */
     @Export(name="description", refs={String.class}, tree="[0]")
     private Output description;
 
     /**
-     * @return Description of the VRF.
+     * @return Description of the VRF
      * 
      */
     public Output> description() {
@@ -215,14 +215,14 @@ public Output localAsn() {
         return this.localAsn;
     }
     /**
-     * Metro ID or Code where the VRF will be deployed.
+     * Metro ID or Code where the VRF will be deployed
      * 
      */
     @Export(name="metro", refs={String.class}, tree="[0]")
     private Output metro;
 
     /**
-     * @return Metro ID or Code where the VRF will be deployed.
+     * @return Metro ID or Code where the VRF will be deployed
      * 
      */
     public Output metro() {
@@ -243,14 +243,14 @@ public Output name() {
         return this.name;
     }
     /**
-     * Project ID where the VRF will be deployed.
+     * Project ID where the VRF will be deployed
      * 
      */
     @Export(name="projectId", refs={String.class}, tree="[0]")
     private Output projectId;
 
     /**
-     * @return Project ID where the VRF will be deployed.
+     * @return Project ID where the VRF will be deployed
      * 
      */
     public Output projectId() {
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/VrfArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/VrfArgs.java
index cba1fa4e..04b8793a 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/metal/VrfArgs.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/VrfArgs.java
@@ -19,14 +19,14 @@ public final class VrfArgs extends com.pulumi.resources.ResourceArgs {
     public static final VrfArgs Empty = new VrfArgs();
 
     /**
-     * Description of the VRF.
+     * Description of the VRF
      * 
      */
     @Import(name="description")
     private @Nullable Output description;
 
     /**
-     * @return Description of the VRF.
+     * @return Description of the VRF
      * 
      */
     public Optional> description() {
@@ -64,14 +64,14 @@ public Optional> localAsn() {
     }
 
     /**
-     * Metro ID or Code where the VRF will be deployed.
+     * Metro ID or Code where the VRF will be deployed
      * 
      */
     @Import(name="metro", required=true)
     private Output metro;
 
     /**
-     * @return Metro ID or Code where the VRF will be deployed.
+     * @return Metro ID or Code where the VRF will be deployed
      * 
      */
     public Output metro() {
@@ -94,14 +94,14 @@ public Optional> name() {
     }
 
     /**
-     * Project ID where the VRF will be deployed.
+     * Project ID where the VRF will be deployed
      * 
      */
     @Import(name="projectId", required=true)
     private Output projectId;
 
     /**
-     * @return Project ID where the VRF will be deployed.
+     * @return Project ID where the VRF will be deployed
      * 
      */
     public Output projectId() {
@@ -138,7 +138,7 @@ public Builder(VrfArgs defaults) {
         }
 
         /**
-         * @param description Description of the VRF.
+         * @param description Description of the VRF
          * 
          * @return builder
          * 
@@ -149,7 +149,7 @@ public Builder description(@Nullable Output description) {
         }
 
         /**
-         * @param description Description of the VRF.
+         * @param description Description of the VRF
          * 
          * @return builder
          * 
@@ -211,7 +211,7 @@ public Builder localAsn(Integer localAsn) {
         }
 
         /**
-         * @param metro Metro ID or Code where the VRF will be deployed.
+         * @param metro Metro ID or Code where the VRF will be deployed
          * 
          * @return builder
          * 
@@ -222,7 +222,7 @@ public Builder metro(Output metro) {
         }
 
         /**
-         * @param metro Metro ID or Code where the VRF will be deployed.
+         * @param metro Metro ID or Code where the VRF will be deployed
          * 
          * @return builder
          * 
@@ -253,7 +253,7 @@ public Builder name(String name) {
         }
 
         /**
-         * @param projectId Project ID where the VRF will be deployed.
+         * @param projectId Project ID where the VRF will be deployed
          * 
          * @return builder
          * 
@@ -264,7 +264,7 @@ public Builder projectId(Output projectId) {
         }
 
         /**
-         * @param projectId Project ID where the VRF will be deployed.
+         * @param projectId Project ID where the VRF will be deployed
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionPortArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionPortArgs.java
index 27448a85..735f0506 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionPortArgs.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionPortArgs.java
@@ -30,17 +30,9 @@ public Output linkStatus() {
         return this.linkStatus;
     }
 
-    /**
-     * Name of the connection resource
-     * 
-     */
     @Import(name="name", required=true)
     private Output name;
 
-    /**
-     * @return Name of the connection resource
-     * 
-     */
     public Output name() {
         return this.name;
     }
@@ -52,32 +44,16 @@ public Output role() {
         return this.role;
     }
 
-    /**
-     * Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-     * 
-     */
     @Import(name="speed", required=true)
     private Output speed;
 
-    /**
-     * @return Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-     * 
-     */
     public Output speed() {
         return this.speed;
     }
 
-    /**
-     * Status of the connection resource.
-     * 
-     */
     @Import(name="status", required=true)
     private Output status;
 
-    /**
-     * @return Status of the connection resource.
-     * 
-     */
     public Output status() {
         return this.status;
     }
@@ -137,23 +113,11 @@ public Builder linkStatus(String linkStatus) {
             return linkStatus(Output.of(linkStatus));
         }
 
-        /**
-         * @param name Name of the connection resource
-         * 
-         * @return builder
-         * 
-         */
         public Builder name(Output name) {
             $.name = name;
             return this;
         }
 
-        /**
-         * @param name Name of the connection resource
-         * 
-         * @return builder
-         * 
-         */
         public Builder name(String name) {
             return name(Output.of(name));
         }
@@ -167,44 +131,20 @@ public Builder role(String role) {
             return role(Output.of(role));
         }
 
-        /**
-         * @param speed Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-         * 
-         * @return builder
-         * 
-         */
         public Builder speed(Output speed) {
             $.speed = speed;
             return this;
         }
 
-        /**
-         * @param speed Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-         * 
-         * @return builder
-         * 
-         */
         public Builder speed(Integer speed) {
             return speed(Output.of(speed));
         }
 
-        /**
-         * @param status Status of the connection resource.
-         * 
-         * @return builder
-         * 
-         */
         public Builder status(Output status) {
             $.status = status;
             return this;
         }
 
-        /**
-         * @param status Status of the connection resource.
-         * 
-         * @return builder
-         * 
-         */
         public Builder status(String status) {
             return status(Output.of(status));
         }
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionServiceTokenArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionServiceTokenArgs.java
index 06957980..77b36ccc 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionServiceTokenArgs.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionServiceTokenArgs.java
@@ -49,17 +49,9 @@ public Output state() {
         return this.state;
     }
 
-    /**
-     * Connection type - dedicated or shared.
-     * 
-     */
     @Import(name="type", required=true)
     private Output type;
 
-    /**
-     * @return Connection type - dedicated or shared.
-     * 
-     */
     public Output type() {
         return this.type;
     }
@@ -138,23 +130,11 @@ public Builder state(String state) {
             return state(Output.of(state));
         }
 
-        /**
-         * @param type Connection type - dedicated or shared.
-         * 
-         * @return builder
-         * 
-         */
         public Builder type(Output type) {
             $.type = type;
             return this;
         }
 
-        /**
-         * @param type Connection type - dedicated or shared.
-         * 
-         * @return builder
-         * 
-         */
         public Builder type(String type) {
             return type(Output.of(type));
         }
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionState.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionState.java
index dc15d728..3e037bd1 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionState.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/InterconnectionState.java
@@ -20,14 +20,14 @@ public final class InterconnectionState extends com.pulumi.resources.ResourceArg
     public static final InterconnectionState Empty = new InterconnectionState();
 
     /**
-     * Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+     * Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
      * 
      */
     @Import(name="authorizationCode")
     private @Nullable Output authorizationCode;
 
     /**
-     * @return Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+     * @return Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
      * 
      */
     public Optional> authorizationCode() {
@@ -35,14 +35,14 @@ public Optional> authorizationCode() {
     }
 
     /**
-     * The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+     * The preferred email used for communication and notifications about the Equinix Fabric interconnection
      * 
      */
     @Import(name="contactEmail")
     private @Nullable Output contactEmail;
 
     /**
-     * @return The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+     * @return The preferred email used for communication and notifications about the Equinix Fabric interconnection
      * 
      */
     public Optional> contactEmail() {
@@ -50,14 +50,14 @@ public Optional> contactEmail() {
     }
 
     /**
-     * Description for the connection resource.
+     * Description of the connection resource
      * 
      */
     @Import(name="description")
     private @Nullable Output description;
 
     /**
-     * @return Description for the connection resource.
+     * @return Description of the connection resource
      * 
      */
     public Optional> description() {
@@ -65,7 +65,7 @@ public Optional> description() {
     }
 
     /**
-     * Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+     * Facility where the connection will be created
      * 
      * @deprecated
      * Use metro instead of facility. For more information, read the migration guide.
@@ -76,7 +76,7 @@ public Optional> description() {
     private @Nullable Output facility;
 
     /**
-     * @return Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+     * @return Facility where the connection will be created
      * 
      * @deprecated
      * Use metro instead of facility. For more information, read the migration guide.
@@ -88,14 +88,14 @@ public Optional> facility() {
     }
 
     /**
-     * Metro where the connection will be created.
+     * Metro where the connection will be created
      * 
      */
     @Import(name="metro")
     private @Nullable Output metro;
 
     /**
-     * @return Metro where the connection will be created.
+     * @return Metro where the connection will be created
      * 
      */
     public Optional> metro() {
@@ -103,14 +103,14 @@ public Optional> metro() {
     }
 
     /**
-     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel
      * 
      */
     @Import(name="mode")
     private @Nullable Output mode;
 
     /**
-     * @return Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+     * @return Mode for connections in IBX facilities with the dedicated type - standard or tunnel
      * 
      */
     public Optional> mode() {
@@ -133,14 +133,14 @@ public Optional> name() {
     }
 
     /**
-     * ID of the organization where the connection is scoped to.
+     * ID of the organization responsible for the connection. Applicable with type "dedicated"
      * 
      */
     @Import(name="organizationId")
     private @Nullable Output organizationId;
 
     /**
-     * @return ID of the organization where the connection is scoped to.
+     * @return ID of the organization responsible for the connection. Applicable with type "dedicated"
      * 
      */
     public Optional> organizationId() {
@@ -148,14 +148,14 @@ public Optional> organizationId() {
     }
 
     /**
-     * List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource.
+     * List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
      * 
      */
     @Import(name="ports")
     private @Nullable Output> ports;
 
     /**
-     * @return List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource.
+     * @return List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
      * 
      */
     public Optional>> ports() {
@@ -163,14 +163,14 @@ public Optional>> ports() {
     }
 
     /**
-     * ID of the project where the connection is scoped to, must be set for.
+     * ID of the project where the connection is scoped to. Required with type "shared"
      * 
      */
     @Import(name="projectId")
     private @Nullable Output projectId;
 
     /**
-     * @return ID of the project where the connection is scoped to, must be set for.
+     * @return ID of the project where the connection is scoped to. Required with type "shared"
      * 
      */
     public Optional> projectId() {
@@ -178,14 +178,14 @@ public Optional> projectId() {
     }
 
     /**
-     * Connection redundancy - redundant or primary.
+     * Connection redundancy - redundant or primary
      * 
      */
     @Import(name="redundancy")
     private @Nullable Output redundancy;
 
     /**
-     * @return Connection redundancy - redundant or primary.
+     * @return Connection redundancy - redundant or primary
      * 
      */
     public Optional> redundancy() {
@@ -193,14 +193,14 @@ public Optional> redundancy() {
     }
 
     /**
-     * Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+     * Only used with shared connection. Type of service token to use for the connection, a*side or z*side
      * 
      */
     @Import(name="serviceTokenType")
     private @Nullable Output serviceTokenType;
 
     /**
-     * @return Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+     * @return Only used with shared connection. Type of service token to use for the connection, a*side or z*side
      * 
      */
     public Optional> serviceTokenType() {
@@ -208,14 +208,14 @@ public Optional> serviceTokenType() {
     }
 
     /**
-     * List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the equinix.metal.Interconnection datasource.
+     * Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      * 
      */
     @Import(name="serviceTokens")
     private @Nullable Output> serviceTokens;
 
     /**
-     * @return List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the equinix.metal.Interconnection datasource.
+     * @return Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      * 
      */
     public Optional>> serviceTokens() {
@@ -223,14 +223,14 @@ public Optional>> serviceTokens() {
     }
 
     /**
-     * Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+     * Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
      * 
      */
     @Import(name="speed")
     private @Nullable Output speed;
 
     /**
-     * @return Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+     * @return Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
      * 
      */
     public Optional> speed() {
@@ -238,14 +238,14 @@ public Optional> speed() {
     }
 
     /**
-     * Status of the connection resource.
+     * Status of the connection resource
      * 
      */
     @Import(name="status")
     private @Nullable Output status;
 
     /**
-     * @return Status of the connection resource.
+     * @return Status of the connection resource
      * 
      */
     public Optional> status() {
@@ -253,14 +253,14 @@ public Optional> status() {
     }
 
     /**
-     * String list of tags.
+     * Tags attached to the connection
      * 
      */
     @Import(name="tags")
     private @Nullable Output> tags;
 
     /**
-     * @return String list of tags.
+     * @return Tags attached to the connection
      * 
      */
     public Optional>> tags() {
@@ -268,7 +268,7 @@ public Optional>> tags() {
     }
 
     /**
-     * (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
+     * Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      * 
      * @deprecated
      * If your organization already has connection service tokens enabled, use `service_tokens` instead
@@ -279,7 +279,7 @@ public Optional>> tags() {
     private @Nullable Output token;
 
     /**
-     * @return (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
+     * @return Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      * 
      * @deprecated
      * If your organization already has connection service tokens enabled, use `service_tokens` instead
@@ -291,14 +291,14 @@ public Optional> token() {
     }
 
     /**
-     * Connection type - dedicated or shared.
+     * Connection type - dedicated, shared or shared*port*vlan
      * 
      */
     @Import(name="type")
     private @Nullable Output type;
 
     /**
-     * @return Connection type - dedicated or shared.
+     * @return Connection type - dedicated, shared or shared*port*vlan
      * 
      */
     public Optional> type() {
@@ -306,14 +306,14 @@ public Optional> type() {
     }
 
     /**
-     * Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+     * Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
      * 
      */
     @Import(name="vlans")
     private @Nullable Output> vlans;
 
     /**
-     * @return Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+     * @return Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
      * 
      */
     public Optional>> vlans() {
@@ -321,16 +321,14 @@ public Optional>> vlans() {
     }
 
     /**
-     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-     * connection
+     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
      * 
      */
     @Import(name="vrfs")
     private @Nullable Output> vrfs;
 
     /**
-     * @return Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-     * connection
+     * @return Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
      * 
      */
     public Optional>> vrfs() {
@@ -381,7 +379,7 @@ public Builder(InterconnectionState defaults) {
         }
 
         /**
-         * @param authorizationCode Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+         * @param authorizationCode Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
          * 
          * @return builder
          * 
@@ -392,7 +390,7 @@ public Builder authorizationCode(@Nullable Output authorizationCode) {
         }
 
         /**
-         * @param authorizationCode Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+         * @param authorizationCode Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
          * 
          * @return builder
          * 
@@ -402,7 +400,7 @@ public Builder authorizationCode(String authorizationCode) {
         }
 
         /**
-         * @param contactEmail The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+         * @param contactEmail The preferred email used for communication and notifications about the Equinix Fabric interconnection
          * 
          * @return builder
          * 
@@ -413,7 +411,7 @@ public Builder contactEmail(@Nullable Output contactEmail) {
         }
 
         /**
-         * @param contactEmail The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+         * @param contactEmail The preferred email used for communication and notifications about the Equinix Fabric interconnection
          * 
          * @return builder
          * 
@@ -423,7 +421,7 @@ public Builder contactEmail(String contactEmail) {
         }
 
         /**
-         * @param description Description for the connection resource.
+         * @param description Description of the connection resource
          * 
          * @return builder
          * 
@@ -434,7 +432,7 @@ public Builder description(@Nullable Output description) {
         }
 
         /**
-         * @param description Description for the connection resource.
+         * @param description Description of the connection resource
          * 
          * @return builder
          * 
@@ -444,7 +442,7 @@ public Builder description(String description) {
         }
 
         /**
-         * @param facility Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+         * @param facility Facility where the connection will be created
          * 
          * @return builder
          * 
@@ -459,7 +457,7 @@ public Builder facility(@Nullable Output facility) {
         }
 
         /**
-         * @param facility Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+         * @param facility Facility where the connection will be created
          * 
          * @return builder
          * 
@@ -473,7 +471,7 @@ public Builder facility(String facility) {
         }
 
         /**
-         * @param metro Metro where the connection will be created.
+         * @param metro Metro where the connection will be created
          * 
          * @return builder
          * 
@@ -484,7 +482,7 @@ public Builder metro(@Nullable Output metro) {
         }
 
         /**
-         * @param metro Metro where the connection will be created.
+         * @param metro Metro where the connection will be created
          * 
          * @return builder
          * 
@@ -494,7 +492,7 @@ public Builder metro(String metro) {
         }
 
         /**
-         * @param mode Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+         * @param mode Mode for connections in IBX facilities with the dedicated type - standard or tunnel
          * 
          * @return builder
          * 
@@ -505,7 +503,7 @@ public Builder mode(@Nullable Output mode) {
         }
 
         /**
-         * @param mode Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+         * @param mode Mode for connections in IBX facilities with the dedicated type - standard or tunnel
          * 
          * @return builder
          * 
@@ -536,7 +534,7 @@ public Builder name(String name) {
         }
 
         /**
-         * @param organizationId ID of the organization where the connection is scoped to.
+         * @param organizationId ID of the organization responsible for the connection. Applicable with type "dedicated"
          * 
          * @return builder
          * 
@@ -547,7 +545,7 @@ public Builder organizationId(@Nullable Output organizationId) {
         }
 
         /**
-         * @param organizationId ID of the organization where the connection is scoped to.
+         * @param organizationId ID of the organization responsible for the connection. Applicable with type "dedicated"
          * 
          * @return builder
          * 
@@ -557,7 +555,7 @@ public Builder organizationId(String organizationId) {
         }
 
         /**
-         * @param ports List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource.
+         * @param ports List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
          * 
          * @return builder
          * 
@@ -568,7 +566,7 @@ public Builder ports(@Nullable Output> ports) {
         }
 
         /**
-         * @param ports List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource.
+         * @param ports List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
          * 
          * @return builder
          * 
@@ -578,7 +576,7 @@ public Builder ports(List ports) {
         }
 
         /**
-         * @param ports List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource.
+         * @param ports List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
          * 
          * @return builder
          * 
@@ -588,7 +586,7 @@ public Builder ports(InterconnectionPortArgs... ports) {
         }
 
         /**
-         * @param projectId ID of the project where the connection is scoped to, must be set for.
+         * @param projectId ID of the project where the connection is scoped to. Required with type "shared"
          * 
          * @return builder
          * 
@@ -599,7 +597,7 @@ public Builder projectId(@Nullable Output projectId) {
         }
 
         /**
-         * @param projectId ID of the project where the connection is scoped to, must be set for.
+         * @param projectId ID of the project where the connection is scoped to. Required with type "shared"
          * 
          * @return builder
          * 
@@ -609,7 +607,7 @@ public Builder projectId(String projectId) {
         }
 
         /**
-         * @param redundancy Connection redundancy - redundant or primary.
+         * @param redundancy Connection redundancy - redundant or primary
          * 
          * @return builder
          * 
@@ -620,7 +618,7 @@ public Builder redundancy(@Nullable Output redundancy) {
         }
 
         /**
-         * @param redundancy Connection redundancy - redundant or primary.
+         * @param redundancy Connection redundancy - redundant or primary
          * 
          * @return builder
          * 
@@ -630,7 +628,7 @@ public Builder redundancy(String redundancy) {
         }
 
         /**
-         * @param serviceTokenType Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+         * @param serviceTokenType Only used with shared connection. Type of service token to use for the connection, a*side or z*side
          * 
          * @return builder
          * 
@@ -641,7 +639,7 @@ public Builder serviceTokenType(@Nullable Output serviceTokenType) {
         }
 
         /**
-         * @param serviceTokenType Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+         * @param serviceTokenType Only used with shared connection. Type of service token to use for the connection, a*side or z*side
          * 
          * @return builder
          * 
@@ -651,7 +649,7 @@ public Builder serviceTokenType(String serviceTokenType) {
         }
 
         /**
-         * @param serviceTokens List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the equinix.metal.Interconnection datasource.
+         * @param serviceTokens Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
          * 
          * @return builder
          * 
@@ -662,7 +660,7 @@ public Builder serviceTokens(@Nullable Output serviceTokens
         }
 
         /**
-         * @param serviceTokens List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the equinix.metal.Interconnection datasource.
+         * @param serviceTokens Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
          * 
          * @return builder
          * 
@@ -682,7 +680,7 @@ public Builder serviceTokens(InterconnectionServiceTokenArgs... serviceTokens) {
         }
 
         /**
-         * @param speed Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+         * @param speed Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
          * 
          * @return builder
          * 
@@ -693,7 +691,7 @@ public Builder speed(@Nullable Output speed) {
         }
 
         /**
-         * @param speed Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+         * @param speed Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
          * 
          * @return builder
          * 
@@ -703,7 +701,7 @@ public Builder speed(String speed) {
         }
 
         /**
-         * @param status Status of the connection resource.
+         * @param status Status of the connection resource
          * 
          * @return builder
          * 
@@ -714,7 +712,7 @@ public Builder status(@Nullable Output status) {
         }
 
         /**
-         * @param status Status of the connection resource.
+         * @param status Status of the connection resource
          * 
          * @return builder
          * 
@@ -724,7 +722,7 @@ public Builder status(String status) {
         }
 
         /**
-         * @param tags String list of tags.
+         * @param tags Tags attached to the connection
          * 
          * @return builder
          * 
@@ -735,7 +733,7 @@ public Builder tags(@Nullable Output> tags) {
         }
 
         /**
-         * @param tags String list of tags.
+         * @param tags Tags attached to the connection
          * 
          * @return builder
          * 
@@ -745,7 +743,7 @@ public Builder tags(List tags) {
         }
 
         /**
-         * @param tags String list of tags.
+         * @param tags Tags attached to the connection
          * 
          * @return builder
          * 
@@ -755,7 +753,7 @@ public Builder tags(String... tags) {
         }
 
         /**
-         * @param token (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
+         * @param token Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
          * 
          * @return builder
          * 
@@ -770,7 +768,7 @@ public Builder token(@Nullable Output token) {
         }
 
         /**
-         * @param token (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
+         * @param token Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
          * 
          * @return builder
          * 
@@ -784,7 +782,7 @@ public Builder token(String token) {
         }
 
         /**
-         * @param type Connection type - dedicated or shared.
+         * @param type Connection type - dedicated, shared or shared*port*vlan
          * 
          * @return builder
          * 
@@ -795,7 +793,7 @@ public Builder type(@Nullable Output type) {
         }
 
         /**
-         * @param type Connection type - dedicated or shared.
+         * @param type Connection type - dedicated, shared or shared*port*vlan
          * 
          * @return builder
          * 
@@ -805,7 +803,7 @@ public Builder type(String type) {
         }
 
         /**
-         * @param vlans Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+         * @param vlans Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
          * 
          * @return builder
          * 
@@ -816,7 +814,7 @@ public Builder vlans(@Nullable Output> vlans) {
         }
 
         /**
-         * @param vlans Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+         * @param vlans Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
          * 
          * @return builder
          * 
@@ -826,7 +824,7 @@ public Builder vlans(List vlans) {
         }
 
         /**
-         * @param vlans Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+         * @param vlans Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
          * 
          * @return builder
          * 
@@ -836,8 +834,7 @@ public Builder vlans(Integer... vlans) {
         }
 
         /**
-         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-         * connection
+         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
          * 
          * @return builder
          * 
@@ -848,8 +845,7 @@ public Builder vrfs(@Nullable Output> vrfs) {
         }
 
         /**
-         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-         * connection
+         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
          * 
          * @return builder
          * 
@@ -859,8 +855,7 @@ public Builder vrfs(List vrfs) {
         }
 
         /**
-         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-         * connection
+         * @param vrfs Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/VrfState.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/VrfState.java
index 9763fb3c..86cd3fab 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/VrfState.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/inputs/VrfState.java
@@ -18,14 +18,14 @@ public final class VrfState extends com.pulumi.resources.ResourceArgs {
     public static final VrfState Empty = new VrfState();
 
     /**
-     * Description of the VRF.
+     * Description of the VRF
      * 
      */
     @Import(name="description")
     private @Nullable Output description;
 
     /**
-     * @return Description of the VRF.
+     * @return Description of the VRF
      * 
      */
     public Optional> description() {
@@ -63,14 +63,14 @@ public Optional> localAsn() {
     }
 
     /**
-     * Metro ID or Code where the VRF will be deployed.
+     * Metro ID or Code where the VRF will be deployed
      * 
      */
     @Import(name="metro")
     private @Nullable Output metro;
 
     /**
-     * @return Metro ID or Code where the VRF will be deployed.
+     * @return Metro ID or Code where the VRF will be deployed
      * 
      */
     public Optional> metro() {
@@ -93,14 +93,14 @@ public Optional> name() {
     }
 
     /**
-     * Project ID where the VRF will be deployed.
+     * Project ID where the VRF will be deployed
      * 
      */
     @Import(name="projectId")
     private @Nullable Output projectId;
 
     /**
-     * @return Project ID where the VRF will be deployed.
+     * @return Project ID where the VRF will be deployed
      * 
      */
     public Optional> projectId() {
@@ -137,7 +137,7 @@ public Builder(VrfState defaults) {
         }
 
         /**
-         * @param description Description of the VRF.
+         * @param description Description of the VRF
          * 
          * @return builder
          * 
@@ -148,7 +148,7 @@ public Builder description(@Nullable Output description) {
         }
 
         /**
-         * @param description Description of the VRF.
+         * @param description Description of the VRF
          * 
          * @return builder
          * 
@@ -210,7 +210,7 @@ public Builder localAsn(Integer localAsn) {
         }
 
         /**
-         * @param metro Metro ID or Code where the VRF will be deployed.
+         * @param metro Metro ID or Code where the VRF will be deployed
          * 
          * @return builder
          * 
@@ -221,7 +221,7 @@ public Builder metro(@Nullable Output metro) {
         }
 
         /**
-         * @param metro Metro ID or Code where the VRF will be deployed.
+         * @param metro Metro ID or Code where the VRF will be deployed
          * 
          * @return builder
          * 
@@ -252,7 +252,7 @@ public Builder name(String name) {
         }
 
         /**
-         * @param projectId Project ID where the VRF will be deployed.
+         * @param projectId Project ID where the VRF will be deployed
          * 
          * @return builder
          * 
@@ -263,7 +263,7 @@ public Builder projectId(@Nullable Output projectId) {
         }
 
         /**
-         * @param projectId Project ID where the VRF will be deployed.
+         * @param projectId Project ID where the VRF will be deployed
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/outputs/InterconnectionPort.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/outputs/InterconnectionPort.java
index 796631a7..a46e5492 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/metal/outputs/InterconnectionPort.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/outputs/InterconnectionPort.java
@@ -14,21 +14,9 @@
 public final class InterconnectionPort {
     private String id;
     private String linkStatus;
-    /**
-     * @return Name of the connection resource
-     * 
-     */
     private String name;
     private String role;
-    /**
-     * @return Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-     * 
-     */
     private Integer speed;
-    /**
-     * @return Status of the connection resource.
-     * 
-     */
     private String status;
     private List virtualCircuitIds;
 
@@ -39,27 +27,15 @@ public String id() {
     public String linkStatus() {
         return this.linkStatus;
     }
-    /**
-     * @return Name of the connection resource
-     * 
-     */
     public String name() {
         return this.name;
     }
     public String role() {
         return this.role;
     }
-    /**
-     * @return Connection speed - Values must be in the format '<number>Mbps' or '<number>Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-     * 
-     */
     public Integer speed() {
         return this.speed;
     }
-    /**
-     * @return Status of the connection resource.
-     * 
-     */
     public String status() {
         return this.status;
     }
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/metal/outputs/InterconnectionServiceToken.java b/sdk/java/src/main/java/com/equinix/pulumi/metal/outputs/InterconnectionServiceToken.java
index 7fcc52fd..368c622f 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/metal/outputs/InterconnectionServiceToken.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/metal/outputs/InterconnectionServiceToken.java
@@ -15,10 +15,6 @@ public final class InterconnectionServiceToken {
     private String maxAllowedSpeed;
     private String role;
     private String state;
-    /**
-     * @return Connection type - dedicated or shared.
-     * 
-     */
     private String type;
 
     private InterconnectionServiceToken() {}
@@ -37,10 +33,6 @@ public String role() {
     public String state() {
         return this.state;
     }
-    /**
-     * @return Connection type - dedicated or shared.
-     * 
-     */
     public String type() {
         return this.type;
     }
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/networkedge/inputs/DeviceSecondaryDeviceSshKeyArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/networkedge/inputs/DeviceSecondaryDeviceSshKeyArgs.java
index 8078ff3f..847ccb07 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/networkedge/inputs/DeviceSecondaryDeviceSshKeyArgs.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/networkedge/inputs/DeviceSecondaryDeviceSshKeyArgs.java
@@ -8,6 +8,8 @@
 import com.pulumi.exceptions.MissingRequiredPropertyException;
 import java.lang.String;
 import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
 
 
 public final class DeviceSecondaryDeviceSshKeyArgs extends com.pulumi.resources.ResourceArgs {
@@ -18,15 +20,15 @@ public final class DeviceSecondaryDeviceSshKeyArgs extends com.pulumi.resources.
      * Reference by name to previously provisioned public SSH key
      * 
      */
-    @Import(name="keyName", required=true)
-    private Output keyName;
+    @Import(name="keyName")
+    private @Nullable Output keyName;
 
     /**
      * @return Reference by name to previously provisioned public SSH key
      * 
      */
-    public Output keyName() {
-        return this.keyName;
+    public Optional> keyName() {
+        return Optional.ofNullable(this.keyName);
     }
 
     /**
@@ -75,7 +77,7 @@ public Builder(DeviceSecondaryDeviceSshKeyArgs defaults) {
          * @return builder
          * 
          */
-        public Builder keyName(Output keyName) {
+        public Builder keyName(@Nullable Output keyName) {
             $.keyName = keyName;
             return this;
         }
@@ -112,9 +114,6 @@ public Builder username(String username) {
         }
 
         public DeviceSecondaryDeviceSshKeyArgs build() {
-            if ($.keyName == null) {
-                throw new MissingRequiredPropertyException("DeviceSecondaryDeviceSshKeyArgs", "keyName");
-            }
             if ($.username == null) {
                 throw new MissingRequiredPropertyException("DeviceSecondaryDeviceSshKeyArgs", "username");
             }
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/networkedge/inputs/DeviceSshKeyArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/networkedge/inputs/DeviceSshKeyArgs.java
index 63387c15..16ef36c3 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/networkedge/inputs/DeviceSshKeyArgs.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/networkedge/inputs/DeviceSshKeyArgs.java
@@ -8,6 +8,8 @@
 import com.pulumi.exceptions.MissingRequiredPropertyException;
 import java.lang.String;
 import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
 
 
 public final class DeviceSshKeyArgs extends com.pulumi.resources.ResourceArgs {
@@ -18,15 +20,15 @@ public final class DeviceSshKeyArgs extends com.pulumi.resources.ResourceArgs {
      * Reference by name to previously provisioned public SSH key
      * 
      */
-    @Import(name="keyName", required=true)
-    private Output keyName;
+    @Import(name="keyName")
+    private @Nullable Output keyName;
 
     /**
      * @return Reference by name to previously provisioned public SSH key
      * 
      */
-    public Output keyName() {
-        return this.keyName;
+    public Optional> keyName() {
+        return Optional.ofNullable(this.keyName);
     }
 
     /**
@@ -75,7 +77,7 @@ public Builder(DeviceSshKeyArgs defaults) {
          * @return builder
          * 
          */
-        public Builder keyName(Output keyName) {
+        public Builder keyName(@Nullable Output keyName) {
             $.keyName = keyName;
             return this;
         }
@@ -112,9 +114,6 @@ public Builder username(String username) {
         }
 
         public DeviceSshKeyArgs build() {
-            if ($.keyName == null) {
-                throw new MissingRequiredPropertyException("DeviceSshKeyArgs", "keyName");
-            }
             if ($.username == null) {
                 throw new MissingRequiredPropertyException("DeviceSshKeyArgs", "username");
             }
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/networkedge/outputs/DeviceSecondaryDeviceSshKey.java b/sdk/java/src/main/java/com/equinix/pulumi/networkedge/outputs/DeviceSecondaryDeviceSshKey.java
index 38a8a443..069be36b 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/networkedge/outputs/DeviceSecondaryDeviceSshKey.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/networkedge/outputs/DeviceSecondaryDeviceSshKey.java
@@ -7,6 +7,8 @@
 import com.pulumi.exceptions.MissingRequiredPropertyException;
 import java.lang.String;
 import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
 
 @CustomType
 public final class DeviceSecondaryDeviceSshKey {
@@ -14,7 +16,7 @@ public final class DeviceSecondaryDeviceSshKey {
      * @return Reference by name to previously provisioned public SSH key
      * 
      */
-    private String keyName;
+    private @Nullable String keyName;
     /**
      * @return username associated with given key.
      * 
@@ -26,8 +28,8 @@ private DeviceSecondaryDeviceSshKey() {}
      * @return Reference by name to previously provisioned public SSH key
      * 
      */
-    public String keyName() {
-        return this.keyName;
+    public Optional keyName() {
+        return Optional.ofNullable(this.keyName);
     }
     /**
      * @return username associated with given key.
@@ -46,7 +48,7 @@ public static Builder builder(DeviceSecondaryDeviceSshKey defaults) {
     }
     @CustomType.Builder
     public static final class Builder {
-        private String keyName;
+        private @Nullable String keyName;
         private String username;
         public Builder() {}
         public Builder(DeviceSecondaryDeviceSshKey defaults) {
@@ -56,10 +58,8 @@ public Builder(DeviceSecondaryDeviceSshKey defaults) {
         }
 
         @CustomType.Setter
-        public Builder keyName(String keyName) {
-            if (keyName == null) {
-              throw new MissingRequiredPropertyException("DeviceSecondaryDeviceSshKey", "keyName");
-            }
+        public Builder keyName(@Nullable String keyName) {
+
             this.keyName = keyName;
             return this;
         }
diff --git a/sdk/java/src/main/java/com/equinix/pulumi/networkedge/outputs/DeviceSshKey.java b/sdk/java/src/main/java/com/equinix/pulumi/networkedge/outputs/DeviceSshKey.java
index 8956336b..740a6727 100644
--- a/sdk/java/src/main/java/com/equinix/pulumi/networkedge/outputs/DeviceSshKey.java
+++ b/sdk/java/src/main/java/com/equinix/pulumi/networkedge/outputs/DeviceSshKey.java
@@ -7,6 +7,8 @@
 import com.pulumi.exceptions.MissingRequiredPropertyException;
 import java.lang.String;
 import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
 
 @CustomType
 public final class DeviceSshKey {
@@ -14,7 +16,7 @@ public final class DeviceSshKey {
      * @return Reference by name to previously provisioned public SSH key
      * 
      */
-    private String keyName;
+    private @Nullable String keyName;
     /**
      * @return username associated with given key.
      * 
@@ -26,8 +28,8 @@ private DeviceSshKey() {}
      * @return Reference by name to previously provisioned public SSH key
      * 
      */
-    public String keyName() {
-        return this.keyName;
+    public Optional keyName() {
+        return Optional.ofNullable(this.keyName);
     }
     /**
      * @return username associated with given key.
@@ -46,7 +48,7 @@ public static Builder builder(DeviceSshKey defaults) {
     }
     @CustomType.Builder
     public static final class Builder {
-        private String keyName;
+        private @Nullable String keyName;
         private String username;
         public Builder() {}
         public Builder(DeviceSshKey defaults) {
@@ -56,10 +58,8 @@ public Builder(DeviceSshKey defaults) {
         }
 
         @CustomType.Setter
-        public Builder keyName(String keyName) {
-            if (keyName == null) {
-              throw new MissingRequiredPropertyException("DeviceSshKey", "keyName");
-            }
+        public Builder keyName(@Nullable String keyName) {
+
             this.keyName = keyName;
             return this;
         }
diff --git a/sdk/nodejs/fabric/getRoutingProtocol.ts b/sdk/nodejs/fabric/getRoutingProtocol.ts
index 71099b55..3c2c8aed 100644
--- a/sdk/nodejs/fabric/getRoutingProtocol.ts
+++ b/sdk/nodejs/fabric/getRoutingProtocol.ts
@@ -66,6 +66,10 @@ export interface GetRoutingProtocolArgs {
  * A collection of values returned by getRoutingProtocol.
  */
 export interface GetRoutingProtocolResult {
+    /**
+     * Enable AS number override
+     */
+    readonly asOverrideEnabled: boolean;
     /**
      * Bidirectional Forwarding Detection
      */
diff --git a/sdk/nodejs/fabric/routingProtocol.ts b/sdk/nodejs/fabric/routingProtocol.ts
index cacafaab..31ec3a66 100644
--- a/sdk/nodejs/fabric/routingProtocol.ts
+++ b/sdk/nodejs/fabric/routingProtocol.ts
@@ -114,6 +114,10 @@ export class RoutingProtocol extends pulumi.CustomResource {
         return obj['__pulumiType'] === RoutingProtocol.__pulumiType;
     }
 
+    /**
+     * Enable AS number override
+     */
+    public readonly asOverrideEnabled!: pulumi.Output;
     /**
      * Bidirectional Forwarding Detection
      */
@@ -200,6 +204,7 @@ export class RoutingProtocol extends pulumi.CustomResource {
         opts = opts || {};
         if (opts.id) {
             const state = argsOrState as RoutingProtocolState | undefined;
+            resourceInputs["asOverrideEnabled"] = state ? state.asOverrideEnabled : undefined;
             resourceInputs["bfd"] = state ? state.bfd : undefined;
             resourceInputs["bgpAuthKey"] = state ? state.bgpAuthKey : undefined;
             resourceInputs["bgpIpv4"] = state ? state.bgpIpv4 : undefined;
@@ -223,6 +228,7 @@ export class RoutingProtocol extends pulumi.CustomResource {
             if ((!args || args.connectionUuid === undefined) && !opts.urn) {
                 throw new Error("Missing required property 'connectionUuid'");
             }
+            resourceInputs["asOverrideEnabled"] = args ? args.asOverrideEnabled : undefined;
             resourceInputs["bfd"] = args ? args.bfd : undefined;
             resourceInputs["bgpAuthKey"] = args ? args.bgpAuthKey : undefined;
             resourceInputs["bgpIpv4"] = args ? args.bgpIpv4 : undefined;
@@ -251,6 +257,10 @@ export class RoutingProtocol extends pulumi.CustomResource {
  * Input properties used for looking up and filtering RoutingProtocol resources.
  */
 export interface RoutingProtocolState {
+    /**
+     * Enable AS number override
+     */
+    asOverrideEnabled?: pulumi.Input;
     /**
      * Bidirectional Forwarding Detection
      */
@@ -329,6 +339,10 @@ export interface RoutingProtocolState {
  * The set of arguments for constructing a RoutingProtocol resource.
  */
 export interface RoutingProtocolArgs {
+    /**
+     * Enable AS number override
+     */
+    asOverrideEnabled?: pulumi.Input;
     /**
      * Bidirectional Forwarding Detection
      */
diff --git a/sdk/nodejs/metal/interconnection.ts b/sdk/nodejs/metal/interconnection.ts
index 57f93510..d26d12b5 100644
--- a/sdk/nodejs/metal/interconnection.ts
+++ b/sdk/nodejs/metal/interconnection.ts
@@ -10,46 +10,100 @@ import * as utilities from "../utilities";
 /**
  * Use this resource to request the creation an Interconnection asset to connect with other parties using [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/).
  *
- * > Equinix Metal connection with with Service Token A-side / Z-side (service_token_type) is not generally available and may not be enabled yet for your organization.
- *
  * ## Example Usage
- * ### example shared metal fabric connection from fcr
+ * ### example fabric billed metal from fabric port
+ * ```typescript
+ * import * as pulumi from "@pulumi/pulumi";
+ * import * as equinix from "@equinix-labs/pulumi-equinix";
+ *
+ * const aSide = equinix.fabric.getPortsOutput({
+ *     filter: {
+ *         name: "",
+ *     },
+ * });
+ * const example = new equinix.metal.Vlan("example", {
+ *     projectId: "",
+ *     metro: "FR",
+ * });
+ * const exampleInterconnection = new equinix.metal.Interconnection("exampleInterconnection", {
+ *     name: "tf-metal-from-port",
+ *     projectId: "",
+ *     type: "shared",
+ *     redundancy: "primary",
+ *     metro: "FR",
+ *     speed: "200Mbps",
+ *     serviceTokenType: "z_side",
+ *     contactEmail: "username@example.com",
+ *     vlans: [example.vxlan],
+ * });
+ * const exampleConnection = new equinix.fabric.Connection("exampleConnection", {
+ *     name: "tf-metal-from-port",
+ *     type: equinix.fabric.ConnectionType.EVPL,
+ *     bandwidth: 200,
+ *     notifications: [{
+ *         type: equinix.fabric.NotificationsType.All,
+ *         emails: ["username@example.com"],
+ *     }],
+ *     order: {
+ *         purchaseOrderNumber: "1-323292",
+ *     },
+ *     project: {
+ *         projectId: "",
+ *     },
+ *     aSide: {
+ *         accessPoint: {
+ *             type: equinix.fabric.AccessPointType.Colo,
+ *             port: {
+ *                 uuid: aSide.apply(aSide => aSide.data?.[0]?.uuid),
+ *             },
+ *             linkProtocol: {
+ *                 type: equinix.fabric.AccessPointLinkProtocolType.Dot1q,
+ *                 vlanTag: 1234,
+ *             },
+ *         },
+ *     },
+ *     zSide: {
+ *         serviceToken: {
+ *             uuid: exampleInterconnection.serviceTokens.apply(serviceTokens => serviceTokens[0].id),
+ *         },
+ *     },
+ * });
+ * ```
+ * ### example fabric billed metal from fcr
  * ```typescript
  * import * as pulumi from "@pulumi/pulumi";
  * import * as equinix from "@equinix-labs/pulumi-equinix";
  *
  * const example1 = new equinix.metal.Vlan("example1", {
- *     projectId: myProjectId,
+ *     projectId: "",
  *     metro: "SV",
  * });
  * const example = new equinix.metal.Interconnection("example", {
- *     name: "tf-port-to-metal-legacy",
- *     projectId: myProjectId,
+ *     name: "tf-metal-from-fcr",
+ *     projectId: "",
  *     metro: "SV",
  *     redundancy: "primary",
  *     type: "shared_port_vlan",
  *     contactEmail: "username@example.com",
+ *     speed: "200Mbps",
  *     vlans: [example1.vxlan],
  * });
  * const exampleConnection = new equinix.fabric.Connection("exampleConnection", {
- *     name: "tf-NIMF-metal-2-aws-legacy",
+ *     name: "tf-metal-from-fcr",
  *     type: "IP_VC",
+ *     bandwidth: 200,
  *     notifications: [{
  *         type: equinix.fabric.NotificationsType.All,
- *         emails: "sername@example.com",
+ *         emails: ["username@example.com"],
  *     }],
  *     project: {
- *         projectId: fabricProjectId,
- *     },
- *     bandwidth: 200,
- *     order: {
- *         purchaseOrderNumber: "1-323292",
+ *         projectId: "",
  *     },
  *     aSide: {
  *         accessPoint: {
  *             type: "CLOUD_ROUTER",
  *             router: {
- *                 uuid: cloudRouterUuid,
+ *                 uuid: exampleEquinixFabricCloudRouter.id,
  *             },
  *         },
  *     },
@@ -61,62 +115,107 @@ import * as utilities from "../utilities";
  *     },
  * });
  * ```
- * ### example shared metal fabric connection to csp
+ * ### example fabric billed metal from network edge
  * ```typescript
  * import * as pulumi from "@pulumi/pulumi";
  * import * as equinix from "@equinix-labs/pulumi-equinix";
  *
- * const zside = equinix.fabric.getServiceProfilesOutput({
- *     filter: {
- *         property: "/name",
- *         operator: "=",
- *         values: ["AWS Direct Connect"],
+ * const example = new equinix.metal.Vrf("example", {
+ *     name: "tf-metal-from-ne",
+ *     metro: "FR",
+ *     localAsn: 65001,
+ *     ipRanges: ["10.99.1.0/24"],
+ *     projectId: test.id,
+ * });
+ * const exampleInterconnection = new equinix.metal.Interconnection("exampleInterconnection", {
+ *     name: "tf-metal-from-ne",
+ *     projectId: "",
+ *     type: "shared",
+ *     redundancy: "primary",
+ *     metro: "FR",
+ *     speed: "200Mbps",
+ *     serviceTokenType: "z_side",
+ *     contactEmail: "username@example.com",
+ *     vrfs: [example.vxlan],
+ * });
+ * const exampleConnection = new equinix.fabric.Connection("exampleConnection", {
+ *     name: "tf-metal-from-ne",
+ *     type: equinix.fabric.ConnectionType.EVPL,
+ *     bandwidth: 200,
+ *     notifications: [{
+ *         type: equinix.fabric.NotificationsType.All,
+ *         emails: ["username@example.com"],
+ *     }],
+ *     order: {
+ *         purchaseOrderNumber: "1-323292",
+ *     },
+ *     project: {
+ *         projectId: "",
+ *     },
+ *     aSide: {
+ *         accessPoint: {
+ *             type: equinix.fabric.AccessPointType.VD,
+ *             virtualDevice: {
+ *                 type: "EDGE",
+ *                 uuid: exampleEquinixNetworkDevice.id,
+ *             },
+ *         },
+ *     },
+ *     zSide: {
+ *         serviceToken: {
+ *             uuid: exampleInterconnection.serviceTokens.apply(serviceTokens => serviceTokens[0].id),
+ *         },
  *     },
  * });
- * const example1 = new equinix.metal.Vlan("example1", {
- *     projectId: myProjectId,
- *     metro: "SV",
+ * ```
+ * ### example metal billed metal to fabric port
+ * ```typescript
+ * import * as pulumi from "@pulumi/pulumi";
+ * import * as equinix from "@equinix-labs/pulumi-equinix";
+ *
+ * const aSide = equinix.fabric.getPortsOutput({
+ *     filter: {
+ *         name: "",
+ *     },
  * });
  * const example = new equinix.metal.Interconnection("example", {
- *     name: "tf-port-to-metal-legacy",
- *     projectId: myProjectId,
- *     metro: "SV",
- *     redundancy: "primary",
- *     type: "shared_port_vlan",
+ *     name: "tf-metal-2-port",
+ *     projectId: "",
+ *     type: "shared",
+ *     redundancy: "redundant",
+ *     metro: "FR",
+ *     speed: "1Gbps",
+ *     serviceTokenType: "a_side",
  *     contactEmail: "username@example.com",
- *     vlans: [example1.vxlan],
  * });
  * const exampleConnection = new equinix.fabric.Connection("exampleConnection", {
- *     name: "tf-NIMF-metal-2-aws-legacy",
+ *     name: "tf-metal-2-port",
  *     type: equinix.fabric.ConnectionType.EVPL,
  *     notifications: [{
  *         type: equinix.fabric.NotificationsType.All,
- *         emails: "sername@example.com",
+ *         emails: ["username@example.com"],
  *     }],
  *     project: {
- *         projectId: fabricProjectId,
+ *         projectId: "",
  *     },
- *     bandwidth: 200,
+ *     bandwidth: 100,
  *     order: {
  *         purchaseOrderNumber: "1-323292",
  *     },
  *     aSide: {
- *         accessPoint: {
- *             type: "METAL_NETWORK",
- *             authenticationKey: example.authorizationCode,
+ *         serviceToken: {
+ *             uuid: example.serviceTokens.apply(serviceTokens => serviceTokens[0].id),
  *         },
  *     },
  *     zSide: {
  *         accessPoint: {
- *             type: equinix.fabric.AccessPointType.SP,
- *             authenticationKey: awsAccountId,
- *             sellerRegion: "us-west-1",
- *             profile: {
- *                 type: equinix.fabric.ProfileType.L2Profile,
- *                 uuid: zside.apply(zside => zside.id),
+ *             type: equinix.fabric.AccessPointType.Colo,
+ *             port: {
+ *                 uuid: aSide.apply(aSide => aSide.data?.[0]?.uuid),
  *             },
- *             location: {
- *                 metroCode: equinix.index.Metro.SiliconValley,
+ *             linkProtocol: {
+ *                 type: equinix.fabric.AccessPointLinkProtocolType.Dot1q,
+ *                 vlanTag: 1234,
  *             },
  *         },
  *     },
@@ -152,29 +251,29 @@ export class Interconnection extends pulumi.CustomResource {
     }
 
     /**
-     * Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+     * Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
      */
     public /*out*/ readonly authorizationCode!: pulumi.Output;
     /**
-     * The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+     * The preferred email used for communication and notifications about the Equinix Fabric interconnection
      */
     public readonly contactEmail!: pulumi.Output;
     /**
-     * Description for the connection resource.
+     * Description of the connection resource
      */
     public readonly description!: pulumi.Output;
     /**
-     * Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+     * Facility where the connection will be created
      *
      * @deprecated Use metro instead of facility. For more information, read the migration guide.
      */
     public readonly facility!: pulumi.Output;
     /**
-     * Metro where the connection will be created.
+     * Metro where the connection will be created
      */
     public readonly metro!: pulumi.Output;
     /**
-     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel
      */
     public readonly mode!: pulumi.Output;
     /**
@@ -182,58 +281,57 @@ export class Interconnection extends pulumi.CustomResource {
      */
     public readonly name!: pulumi.Output;
     /**
-     * ID of the organization where the connection is scoped to.
+     * ID of the organization responsible for the connection. Applicable with type "dedicated"
      */
     public readonly organizationId!: pulumi.Output;
     /**
-     * List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource.
+     * List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
      */
     public /*out*/ readonly ports!: pulumi.Output;
     /**
-     * ID of the project where the connection is scoped to, must be set for.
+     * ID of the project where the connection is scoped to. Required with type "shared"
      */
     public readonly projectId!: pulumi.Output;
     /**
-     * Connection redundancy - redundant or primary.
+     * Connection redundancy - redundant or primary
      */
     public readonly redundancy!: pulumi.Output;
     /**
-     * Only used with shared connection. Type of service token to use for the connection, aSide or z_side
+     * Only used with shared connection. Type of service token to use for the connection, a*side or z*side
      */
     public readonly serviceTokenType!: pulumi.Output;
     /**
-     * List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of serviceToken is described in documentation of the equinix.metal.Interconnection datasource.
+     * Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      */
     public /*out*/ readonly serviceTokens!: pulumi.Output;
     /**
-     * Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+     * Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
      */
     public readonly speed!: pulumi.Output;
     /**
-     * Status of the connection resource.
+     * Status of the connection resource
      */
     public /*out*/ readonly status!: pulumi.Output;
     /**
-     * String list of tags.
+     * Tags attached to the connection
      */
     public readonly tags!: pulumi.Output;
     /**
-     * (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `serviceTokens` instead.
+     * Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      *
      * @deprecated If your organization already has connection service tokens enabled, use `serviceTokens` instead
      */
     public /*out*/ readonly token!: pulumi.Output;
     /**
-     * Connection type - dedicated or shared.
+     * Connection type - dedicated, shared or shared*port*vlan
      */
     public readonly type!: pulumi.Output;
     /**
-     * Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+     * Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
      */
     public readonly vlans!: pulumi.Output;
     /**
-     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-     * connection
+     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
      */
     public readonly vrfs!: pulumi.Output;
 
@@ -309,29 +407,29 @@ export class Interconnection extends pulumi.CustomResource {
  */
 export interface InterconnectionState {
     /**
-     * Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the equinix.fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+     * Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
      */
     authorizationCode?: pulumi.Input;
     /**
-     * The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+     * The preferred email used for communication and notifications about the Equinix Fabric interconnection
      */
     contactEmail?: pulumi.Input;
     /**
-     * Description for the connection resource.
+     * Description of the connection resource
      */
     description?: pulumi.Input;
     /**
-     * Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+     * Facility where the connection will be created
      *
      * @deprecated Use metro instead of facility. For more information, read the migration guide.
      */
     facility?: pulumi.Input;
     /**
-     * Metro where the connection will be created.
+     * Metro where the connection will be created
      */
     metro?: pulumi.Input;
     /**
-     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel
      */
     mode?: pulumi.Input;
     /**
@@ -339,58 +437,57 @@ export interface InterconnectionState {
      */
     name?: pulumi.Input;
     /**
-     * ID of the organization where the connection is scoped to.
+     * ID of the organization responsible for the connection. Applicable with type "dedicated"
      */
     organizationId?: pulumi.Input;
     /**
-     * List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the equinix.metal.Interconnection datasource.
+     * List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
      */
     ports?: pulumi.Input[]>;
     /**
-     * ID of the project where the connection is scoped to, must be set for.
+     * ID of the project where the connection is scoped to. Required with type "shared"
      */
     projectId?: pulumi.Input;
     /**
-     * Connection redundancy - redundant or primary.
+     * Connection redundancy - redundant or primary
      */
     redundancy?: pulumi.Input;
     /**
-     * Only used with shared connection. Type of service token to use for the connection, aSide or z_side
+     * Only used with shared connection. Type of service token to use for the connection, a*side or z*side
      */
     serviceTokenType?: pulumi.Input;
     /**
-     * List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of serviceToken is described in documentation of the equinix.metal.Interconnection datasource.
+     * Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      */
     serviceTokens?: pulumi.Input[]>;
     /**
-     * Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+     * Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
      */
     speed?: pulumi.Input;
     /**
-     * Status of the connection resource.
+     * Status of the connection resource
      */
     status?: pulumi.Input;
     /**
-     * String list of tags.
+     * Tags attached to the connection
      */
     tags?: pulumi.Input[]>;
     /**
-     * (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the equinix.fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `serviceTokens` instead.
+     * Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
      *
      * @deprecated If your organization already has connection service tokens enabled, use `serviceTokens` instead
      */
     token?: pulumi.Input;
     /**
-     * Connection type - dedicated or shared.
+     * Connection type - dedicated, shared or shared*port*vlan
      */
     type?: pulumi.Input;
     /**
-     * Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+     * Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
      */
     vlans?: pulumi.Input[]>;
     /**
-     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-     * connection
+     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
      */
     vrfs?: pulumi.Input[]>;
 }
@@ -400,25 +497,25 @@ export interface InterconnectionState {
  */
 export interface InterconnectionArgs {
     /**
-     * The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+     * The preferred email used for communication and notifications about the Equinix Fabric interconnection
      */
     contactEmail?: pulumi.Input;
     /**
-     * Description for the connection resource.
+     * Description of the connection resource
      */
     description?: pulumi.Input;
     /**
-     * Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+     * Facility where the connection will be created
      *
      * @deprecated Use metro instead of facility. For more information, read the migration guide.
      */
     facility?: pulumi.Input;
     /**
-     * Metro where the connection will be created.
+     * Metro where the connection will be created
      */
     metro?: pulumi.Input;
     /**
-     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+     * Mode for connections in IBX facilities with the dedicated type - standard or tunnel
      */
     mode?: pulumi.Input;
     /**
@@ -426,40 +523,39 @@ export interface InterconnectionArgs {
      */
     name?: pulumi.Input;
     /**
-     * ID of the organization where the connection is scoped to.
+     * ID of the organization responsible for the connection. Applicable with type "dedicated"
      */
     organizationId?: pulumi.Input;
     /**
-     * ID of the project where the connection is scoped to, must be set for.
+     * ID of the project where the connection is scoped to. Required with type "shared"
      */
     projectId?: pulumi.Input;
     /**
-     * Connection redundancy - redundant or primary.
+     * Connection redundancy - redundant or primary
      */
     redundancy: pulumi.Input;
     /**
-     * Only used with shared connection. Type of service token to use for the connection, aSide or z_side
+     * Only used with shared connection. Type of service token to use for the connection, a*side or z*side
      */
     serviceTokenType?: pulumi.Input;
     /**
-     * Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+     * Connection speed -  Values must be in the format '\n\nMbps' or '\n\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
      */
     speed?: pulumi.Input;
     /**
-     * String list of tags.
+     * Tags attached to the connection
      */
     tags?: pulumi.Input[]>;
     /**
-     * Connection type - dedicated or shared.
+     * Connection type - dedicated, shared or shared*port*vlan
      */
     type: pulumi.Input;
     /**
-     * Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+     * Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
      */
     vlans?: pulumi.Input[]>;
     /**
-     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-     * connection
+     * Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
      */
     vrfs?: pulumi.Input[]>;
 }
diff --git a/sdk/nodejs/metal/vrf.ts b/sdk/nodejs/metal/vrf.ts
index 5bb43331..c285b8c8 100644
--- a/sdk/nodejs/metal/vrf.ts
+++ b/sdk/nodejs/metal/vrf.ts
@@ -110,7 +110,7 @@ export class Vrf extends pulumi.CustomResource {
     }
 
     /**
-     * Description of the VRF.
+     * Description of the VRF
      */
     public readonly description!: pulumi.Output;
     /**
@@ -122,7 +122,7 @@ export class Vrf extends pulumi.CustomResource {
      */
     public readonly localAsn!: pulumi.Output;
     /**
-     * Metro ID or Code where the VRF will be deployed.
+     * Metro ID or Code where the VRF will be deployed
      */
     public readonly metro!: pulumi.Output;
     /**
@@ -130,7 +130,7 @@ export class Vrf extends pulumi.CustomResource {
      */
     public readonly name!: pulumi.Output;
     /**
-     * Project ID where the VRF will be deployed.
+     * Project ID where the VRF will be deployed
      */
     public readonly projectId!: pulumi.Output;
 
@@ -178,7 +178,7 @@ export class Vrf extends pulumi.CustomResource {
  */
 export interface VrfState {
     /**
-     * Description of the VRF.
+     * Description of the VRF
      */
     description?: pulumi.Input;
     /**
@@ -190,7 +190,7 @@ export interface VrfState {
      */
     localAsn?: pulumi.Input;
     /**
-     * Metro ID or Code where the VRF will be deployed.
+     * Metro ID or Code where the VRF will be deployed
      */
     metro?: pulumi.Input;
     /**
@@ -198,7 +198,7 @@ export interface VrfState {
      */
     name?: pulumi.Input;
     /**
-     * Project ID where the VRF will be deployed.
+     * Project ID where the VRF will be deployed
      */
     projectId?: pulumi.Input;
 }
@@ -208,7 +208,7 @@ export interface VrfState {
  */
 export interface VrfArgs {
     /**
-     * Description of the VRF.
+     * Description of the VRF
      */
     description?: pulumi.Input;
     /**
@@ -220,7 +220,7 @@ export interface VrfArgs {
      */
     localAsn?: pulumi.Input;
     /**
-     * Metro ID or Code where the VRF will be deployed.
+     * Metro ID or Code where the VRF will be deployed
      */
     metro: pulumi.Input;
     /**
@@ -228,7 +228,7 @@ export interface VrfArgs {
      */
     name?: pulumi.Input;
     /**
-     * Project ID where the VRF will be deployed.
+     * Project ID where the VRF will be deployed
      */
     projectId: pulumi.Input;
 }
diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts
index 1d4b37a3..247111b8 100644
--- a/sdk/nodejs/types/input.ts
+++ b/sdk/nodejs/types/input.ts
@@ -1459,6 +1459,18 @@ export namespace fabric {
          * Equinix side peering ip
          */
         equinixPeerIp?: pulumi.Input;
+        /**
+         * Inbound Multi Exit Discriminator attribute
+         */
+        inboundMed?: pulumi.Input;
+        /**
+         * AS path prepend count. One of: 0, 1, 3, 5
+         */
+        outboundAsPrependCount?: pulumi.Input;
+        /**
+         * Outbound Multi Exit Discriminator attribute
+         */
+        outboundMed?: pulumi.Input;
     }
 
     export interface RoutingProtocolBgpIpv6 {
@@ -1474,6 +1486,18 @@ export namespace fabric {
          * Equinix side peering ip
          */
         equinixPeerIp?: pulumi.Input;
+        /**
+         * Inbound Multi Exit Discriminator attribute
+         */
+        inboundMed?: pulumi.Input;
+        /**
+         * AS path prepend count. One of: 0, 1, 3, 5
+         */
+        outboundAsPrependCount?: pulumi.Input;
+        /**
+         * Outbound Multi Exit Discriminator attribute
+         */
+        outboundMed?: pulumi.Input;
     }
 
     export interface RoutingProtocolChange {
@@ -2268,18 +2292,9 @@ export namespace metal {
     export interface InterconnectionPort {
         id: pulumi.Input;
         linkStatus: pulumi.Input;
-        /**
-         * Name of the connection resource
-         */
         name: pulumi.Input;
         role: pulumi.Input;
-        /**
-         * Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-         */
         speed: pulumi.Input;
-        /**
-         * Status of the connection resource.
-         */
         status: pulumi.Input;
         virtualCircuitIds: pulumi.Input[]>;
     }
@@ -2290,9 +2305,6 @@ export namespace metal {
         maxAllowedSpeed: pulumi.Input;
         role: pulumi.Input;
         state: pulumi.Input;
-        /**
-         * Connection type - dedicated or shared.
-         */
         type: pulumi.Input;
     }
 
@@ -2869,7 +2881,7 @@ export namespace networkedge {
         /**
          * Reference by name to previously provisioned public SSH key
          */
-        keyName: pulumi.Input;
+        keyName?: pulumi.Input;
         /**
          * username associated with given key.
          */
@@ -2880,7 +2892,7 @@ export namespace networkedge {
         /**
          * Reference by name to previously provisioned public SSH key
          */
-        keyName: pulumi.Input;
+        keyName?: pulumi.Input;
         /**
          * username associated with given key.
          */
diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts
index 057fb600..a61d8834 100644
--- a/sdk/nodejs/types/output.ts
+++ b/sdk/nodejs/types/output.ts
@@ -4012,6 +4012,18 @@ export namespace fabric {
          * Equinix side peering ip
          */
         equinixPeerIp: string;
+        /**
+         * Inbound Multi Exit Discriminator attribute
+         */
+        inboundMed: number;
+        /**
+         * AS path prepend count. One of: 0, 1, 3, 5
+         */
+        outboundAsPrependCount: string;
+        /**
+         * Outbound Multi Exit Discriminator attribute
+         */
+        outboundMed: number;
     }
 
     export interface GetRoutingProtocolBgpIpv6 {
@@ -4027,6 +4039,18 @@ export namespace fabric {
          * Equinix side peering ip
          */
         equinixPeerIp: string;
+        /**
+         * Inbound Multi Exit Discriminator attribute
+         */
+        inboundMed: number;
+        /**
+         * AS path prepend count. One of: 0, 1, 3, 5
+         */
+        outboundAsPrependCount: string;
+        /**
+         * Outbound Multi Exit Discriminator attribute
+         */
+        outboundMed: number;
     }
 
     export interface GetRoutingProtocolChange {
@@ -5217,6 +5241,18 @@ export namespace fabric {
          * Equinix side peering ip
          */
         equinixPeerIp: string;
+        /**
+         * Inbound Multi Exit Discriminator attribute
+         */
+        inboundMed: number;
+        /**
+         * AS path prepend count. One of: 0, 1, 3, 5
+         */
+        outboundAsPrependCount: string;
+        /**
+         * Outbound Multi Exit Discriminator attribute
+         */
+        outboundMed: number;
     }
 
     export interface RoutingProtocolBgpIpv6 {
@@ -5232,6 +5268,18 @@ export namespace fabric {
          * Equinix side peering ip
          */
         equinixPeerIp: string;
+        /**
+         * Inbound Multi Exit Discriminator attribute
+         */
+        inboundMed: number;
+        /**
+         * AS path prepend count. One of: 0, 1, 3, 5
+         */
+        outboundAsPrependCount: string;
+        /**
+         * Outbound Multi Exit Discriminator attribute
+         */
+        outboundMed: number;
     }
 
     export interface RoutingProtocolChange {
@@ -6344,18 +6392,9 @@ export namespace metal {
     export interface InterconnectionPort {
         id: string;
         linkStatus: string;
-        /**
-         * Name of the connection resource
-         */
         name: string;
         role: string;
-        /**
-         * Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-         */
         speed: number;
-        /**
-         * Status of the connection resource.
-         */
         status: string;
         virtualCircuitIds: string[];
     }
@@ -6366,9 +6405,6 @@ export namespace metal {
         maxAllowedSpeed: string;
         role: string;
         state: string;
-        /**
-         * Connection type - dedicated or shared.
-         */
         type: string;
     }
 
@@ -6946,7 +6982,7 @@ export namespace networkedge {
         /**
          * Reference by name to previously provisioned public SSH key
          */
-        keyName: string;
+        keyName?: string;
         /**
          * username associated with given key.
          */
@@ -6957,7 +6993,7 @@ export namespace networkedge {
         /**
          * Reference by name to previously provisioned public SSH key
          */
-        keyName: string;
+        keyName?: string;
         /**
          * username associated with given key.
          */
diff --git a/sdk/python/pulumi_equinix/fabric/_inputs.py b/sdk/python/pulumi_equinix/fabric/_inputs.py
index cf21cd64..d4f21062 100644
--- a/sdk/python/pulumi_equinix/fabric/_inputs.py
+++ b/sdk/python/pulumi_equinix/fabric/_inputs.py
@@ -4228,17 +4228,29 @@ class RoutingProtocolBgpIpv4Args:
     def __init__(__self__, *,
                  customer_peer_ip: pulumi.Input[str],
                  enabled: Optional[pulumi.Input[bool]] = None,
-                 equinix_peer_ip: Optional[pulumi.Input[str]] = None):
+                 equinix_peer_ip: Optional[pulumi.Input[str]] = None,
+                 inbound_med: Optional[pulumi.Input[int]] = None,
+                 outbound_as_prepend_count: Optional[pulumi.Input[str]] = None,
+                 outbound_med: Optional[pulumi.Input[int]] = None):
         """
         :param pulumi.Input[str] customer_peer_ip: Customer side peering ip
         :param pulumi.Input[bool] enabled: Admin status for the BGP session
         :param pulumi.Input[str] equinix_peer_ip: Equinix side peering ip
+        :param pulumi.Input[int] inbound_med: Inbound Multi Exit Discriminator attribute
+        :param pulumi.Input[str] outbound_as_prepend_count: AS path prepend count. One of: 0, 1, 3, 5
+        :param pulumi.Input[int] outbound_med: Outbound Multi Exit Discriminator attribute
         """
         pulumi.set(__self__, "customer_peer_ip", customer_peer_ip)
         if enabled is not None:
             pulumi.set(__self__, "enabled", enabled)
         if equinix_peer_ip is not None:
             pulumi.set(__self__, "equinix_peer_ip", equinix_peer_ip)
+        if inbound_med is not None:
+            pulumi.set(__self__, "inbound_med", inbound_med)
+        if outbound_as_prepend_count is not None:
+            pulumi.set(__self__, "outbound_as_prepend_count", outbound_as_prepend_count)
+        if outbound_med is not None:
+            pulumi.set(__self__, "outbound_med", outbound_med)
 
     @property
     @pulumi.getter(name="customerPeerIp")
@@ -4276,23 +4288,71 @@ def equinix_peer_ip(self) -> Optional[pulumi.Input[str]]:
     def equinix_peer_ip(self, value: Optional[pulumi.Input[str]]):
         pulumi.set(self, "equinix_peer_ip", value)
 
+    @property
+    @pulumi.getter(name="inboundMed")
+    def inbound_med(self) -> Optional[pulumi.Input[int]]:
+        """
+        Inbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "inbound_med")
+
+    @inbound_med.setter
+    def inbound_med(self, value: Optional[pulumi.Input[int]]):
+        pulumi.set(self, "inbound_med", value)
+
+    @property
+    @pulumi.getter(name="outboundAsPrependCount")
+    def outbound_as_prepend_count(self) -> Optional[pulumi.Input[str]]:
+        """
+        AS path prepend count. One of: 0, 1, 3, 5
+        """
+        return pulumi.get(self, "outbound_as_prepend_count")
+
+    @outbound_as_prepend_count.setter
+    def outbound_as_prepend_count(self, value: Optional[pulumi.Input[str]]):
+        pulumi.set(self, "outbound_as_prepend_count", value)
+
+    @property
+    @pulumi.getter(name="outboundMed")
+    def outbound_med(self) -> Optional[pulumi.Input[int]]:
+        """
+        Outbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "outbound_med")
+
+    @outbound_med.setter
+    def outbound_med(self, value: Optional[pulumi.Input[int]]):
+        pulumi.set(self, "outbound_med", value)
+
 
 @pulumi.input_type
 class RoutingProtocolBgpIpv6Args:
     def __init__(__self__, *,
                  customer_peer_ip: pulumi.Input[str],
                  enabled: Optional[pulumi.Input[bool]] = None,
-                 equinix_peer_ip: Optional[pulumi.Input[str]] = None):
+                 equinix_peer_ip: Optional[pulumi.Input[str]] = None,
+                 inbound_med: Optional[pulumi.Input[int]] = None,
+                 outbound_as_prepend_count: Optional[pulumi.Input[str]] = None,
+                 outbound_med: Optional[pulumi.Input[int]] = None):
         """
         :param pulumi.Input[str] customer_peer_ip: Customer side peering ip
         :param pulumi.Input[bool] enabled: Admin status for the BGP session
         :param pulumi.Input[str] equinix_peer_ip: Equinix side peering ip
+        :param pulumi.Input[int] inbound_med: Inbound Multi Exit Discriminator attribute
+        :param pulumi.Input[str] outbound_as_prepend_count: AS path prepend count. One of: 0, 1, 3, 5
+        :param pulumi.Input[int] outbound_med: Outbound Multi Exit Discriminator attribute
         """
         pulumi.set(__self__, "customer_peer_ip", customer_peer_ip)
         if enabled is not None:
             pulumi.set(__self__, "enabled", enabled)
         if equinix_peer_ip is not None:
             pulumi.set(__self__, "equinix_peer_ip", equinix_peer_ip)
+        if inbound_med is not None:
+            pulumi.set(__self__, "inbound_med", inbound_med)
+        if outbound_as_prepend_count is not None:
+            pulumi.set(__self__, "outbound_as_prepend_count", outbound_as_prepend_count)
+        if outbound_med is not None:
+            pulumi.set(__self__, "outbound_med", outbound_med)
 
     @property
     @pulumi.getter(name="customerPeerIp")
@@ -4330,6 +4390,42 @@ def equinix_peer_ip(self) -> Optional[pulumi.Input[str]]:
     def equinix_peer_ip(self, value: Optional[pulumi.Input[str]]):
         pulumi.set(self, "equinix_peer_ip", value)
 
+    @property
+    @pulumi.getter(name="inboundMed")
+    def inbound_med(self) -> Optional[pulumi.Input[int]]:
+        """
+        Inbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "inbound_med")
+
+    @inbound_med.setter
+    def inbound_med(self, value: Optional[pulumi.Input[int]]):
+        pulumi.set(self, "inbound_med", value)
+
+    @property
+    @pulumi.getter(name="outboundAsPrependCount")
+    def outbound_as_prepend_count(self) -> Optional[pulumi.Input[str]]:
+        """
+        AS path prepend count. One of: 0, 1, 3, 5
+        """
+        return pulumi.get(self, "outbound_as_prepend_count")
+
+    @outbound_as_prepend_count.setter
+    def outbound_as_prepend_count(self, value: Optional[pulumi.Input[str]]):
+        pulumi.set(self, "outbound_as_prepend_count", value)
+
+    @property
+    @pulumi.getter(name="outboundMed")
+    def outbound_med(self) -> Optional[pulumi.Input[int]]:
+        """
+        Outbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "outbound_med")
+
+    @outbound_med.setter
+    def outbound_med(self, value: Optional[pulumi.Input[int]]):
+        pulumi.set(self, "outbound_med", value)
+
 
 @pulumi.input_type
 class RoutingProtocolChangeArgs:
diff --git a/sdk/python/pulumi_equinix/fabric/get_routing_protocol.py b/sdk/python/pulumi_equinix/fabric/get_routing_protocol.py
index 90e24aef..c73e8d15 100644
--- a/sdk/python/pulumi_equinix/fabric/get_routing_protocol.py
+++ b/sdk/python/pulumi_equinix/fabric/get_routing_protocol.py
@@ -22,7 +22,10 @@ class GetRoutingProtocolResult:
     """
     A collection of values returned by getRoutingProtocol.
     """
-    def __init__(__self__, bfd=None, bgp_auth_key=None, bgp_ipv4=None, bgp_ipv6=None, change_logs=None, changes=None, connection_uuid=None, customer_asn=None, description=None, direct_ipv4=None, direct_ipv6=None, equinix_asn=None, href=None, id=None, name=None, operations=None, state=None, type=None, uuid=None):
+    def __init__(__self__, as_override_enabled=None, bfd=None, bgp_auth_key=None, bgp_ipv4=None, bgp_ipv6=None, change_logs=None, changes=None, connection_uuid=None, customer_asn=None, description=None, direct_ipv4=None, direct_ipv6=None, equinix_asn=None, href=None, id=None, name=None, operations=None, state=None, type=None, uuid=None):
+        if as_override_enabled and not isinstance(as_override_enabled, bool):
+            raise TypeError("Expected argument 'as_override_enabled' to be a bool")
+        pulumi.set(__self__, "as_override_enabled", as_override_enabled)
         if bfd and not isinstance(bfd, dict):
             raise TypeError("Expected argument 'bfd' to be a dict")
         pulumi.set(__self__, "bfd", bfd)
@@ -81,6 +84,14 @@ def __init__(__self__, bfd=None, bgp_auth_key=None, bgp_ipv4=None, bgp_ipv6=None
             raise TypeError("Expected argument 'uuid' to be a str")
         pulumi.set(__self__, "uuid", uuid)
 
+    @property
+    @pulumi.getter(name="asOverrideEnabled")
+    def as_override_enabled(self) -> bool:
+        """
+        Enable AS number override
+        """
+        return pulumi.get(self, "as_override_enabled")
+
     @property
     @pulumi.getter
     def bfd(self) -> 'outputs.GetRoutingProtocolBfdResult':
@@ -240,6 +251,7 @@ def __await__(self):
         if False:
             yield self
         return GetRoutingProtocolResult(
+            as_override_enabled=self.as_override_enabled,
             bfd=self.bfd,
             bgp_auth_key=self.bgp_auth_key,
             bgp_ipv4=self.bgp_ipv4,
@@ -306,6 +318,7 @@ def get_routing_protocol(connection_uuid: Optional[str] = None,
     __ret__ = pulumi.runtime.invoke('equinix:fabric/getRoutingProtocol:getRoutingProtocol', __args__, opts=opts, typ=GetRoutingProtocolResult).value
 
     return AwaitableGetRoutingProtocolResult(
+        as_override_enabled=pulumi.get(__ret__, 'as_override_enabled'),
         bfd=pulumi.get(__ret__, 'bfd'),
         bgp_auth_key=pulumi.get(__ret__, 'bgp_auth_key'),
         bgp_ipv4=pulumi.get(__ret__, 'bgp_ipv4'),
diff --git a/sdk/python/pulumi_equinix/fabric/outputs.py b/sdk/python/pulumi_equinix/fabric/outputs.py
index c456613f..e0823856 100644
--- a/sdk/python/pulumi_equinix/fabric/outputs.py
+++ b/sdk/python/pulumi_equinix/fabric/outputs.py
@@ -4154,6 +4154,12 @@ def __key_warning(key: str):
             suggest = "customer_peer_ip"
         elif key == "equinixPeerIp":
             suggest = "equinix_peer_ip"
+        elif key == "inboundMed":
+            suggest = "inbound_med"
+        elif key == "outboundAsPrependCount":
+            suggest = "outbound_as_prepend_count"
+        elif key == "outboundMed":
+            suggest = "outbound_med"
 
         if suggest:
             pulumi.log.warn(f"Key '{key}' not found in RoutingProtocolBgpIpv4. Access the value via the '{suggest}' property getter instead.")
@@ -4169,17 +4175,29 @@ def get(self, key: str, default = None) -> Any:
     def __init__(__self__, *,
                  customer_peer_ip: str,
                  enabled: Optional[bool] = None,
-                 equinix_peer_ip: Optional[str] = None):
+                 equinix_peer_ip: Optional[str] = None,
+                 inbound_med: Optional[int] = None,
+                 outbound_as_prepend_count: Optional[str] = None,
+                 outbound_med: Optional[int] = None):
         """
         :param str customer_peer_ip: Customer side peering ip
         :param bool enabled: Admin status for the BGP session
         :param str equinix_peer_ip: Equinix side peering ip
+        :param int inbound_med: Inbound Multi Exit Discriminator attribute
+        :param str outbound_as_prepend_count: AS path prepend count. One of: 0, 1, 3, 5
+        :param int outbound_med: Outbound Multi Exit Discriminator attribute
         """
         pulumi.set(__self__, "customer_peer_ip", customer_peer_ip)
         if enabled is not None:
             pulumi.set(__self__, "enabled", enabled)
         if equinix_peer_ip is not None:
             pulumi.set(__self__, "equinix_peer_ip", equinix_peer_ip)
+        if inbound_med is not None:
+            pulumi.set(__self__, "inbound_med", inbound_med)
+        if outbound_as_prepend_count is not None:
+            pulumi.set(__self__, "outbound_as_prepend_count", outbound_as_prepend_count)
+        if outbound_med is not None:
+            pulumi.set(__self__, "outbound_med", outbound_med)
 
     @property
     @pulumi.getter(name="customerPeerIp")
@@ -4205,6 +4223,30 @@ def equinix_peer_ip(self) -> Optional[str]:
         """
         return pulumi.get(self, "equinix_peer_ip")
 
+    @property
+    @pulumi.getter(name="inboundMed")
+    def inbound_med(self) -> Optional[int]:
+        """
+        Inbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "inbound_med")
+
+    @property
+    @pulumi.getter(name="outboundAsPrependCount")
+    def outbound_as_prepend_count(self) -> Optional[str]:
+        """
+        AS path prepend count. One of: 0, 1, 3, 5
+        """
+        return pulumi.get(self, "outbound_as_prepend_count")
+
+    @property
+    @pulumi.getter(name="outboundMed")
+    def outbound_med(self) -> Optional[int]:
+        """
+        Outbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "outbound_med")
+
 
 @pulumi.output_type
 class RoutingProtocolBgpIpv6(dict):
@@ -4215,6 +4257,12 @@ def __key_warning(key: str):
             suggest = "customer_peer_ip"
         elif key == "equinixPeerIp":
             suggest = "equinix_peer_ip"
+        elif key == "inboundMed":
+            suggest = "inbound_med"
+        elif key == "outboundAsPrependCount":
+            suggest = "outbound_as_prepend_count"
+        elif key == "outboundMed":
+            suggest = "outbound_med"
 
         if suggest:
             pulumi.log.warn(f"Key '{key}' not found in RoutingProtocolBgpIpv6. Access the value via the '{suggest}' property getter instead.")
@@ -4230,17 +4278,29 @@ def get(self, key: str, default = None) -> Any:
     def __init__(__self__, *,
                  customer_peer_ip: str,
                  enabled: Optional[bool] = None,
-                 equinix_peer_ip: Optional[str] = None):
+                 equinix_peer_ip: Optional[str] = None,
+                 inbound_med: Optional[int] = None,
+                 outbound_as_prepend_count: Optional[str] = None,
+                 outbound_med: Optional[int] = None):
         """
         :param str customer_peer_ip: Customer side peering ip
         :param bool enabled: Admin status for the BGP session
         :param str equinix_peer_ip: Equinix side peering ip
+        :param int inbound_med: Inbound Multi Exit Discriminator attribute
+        :param str outbound_as_prepend_count: AS path prepend count. One of: 0, 1, 3, 5
+        :param int outbound_med: Outbound Multi Exit Discriminator attribute
         """
         pulumi.set(__self__, "customer_peer_ip", customer_peer_ip)
         if enabled is not None:
             pulumi.set(__self__, "enabled", enabled)
         if equinix_peer_ip is not None:
             pulumi.set(__self__, "equinix_peer_ip", equinix_peer_ip)
+        if inbound_med is not None:
+            pulumi.set(__self__, "inbound_med", inbound_med)
+        if outbound_as_prepend_count is not None:
+            pulumi.set(__self__, "outbound_as_prepend_count", outbound_as_prepend_count)
+        if outbound_med is not None:
+            pulumi.set(__self__, "outbound_med", outbound_med)
 
     @property
     @pulumi.getter(name="customerPeerIp")
@@ -4266,6 +4326,30 @@ def equinix_peer_ip(self) -> Optional[str]:
         """
         return pulumi.get(self, "equinix_peer_ip")
 
+    @property
+    @pulumi.getter(name="inboundMed")
+    def inbound_med(self) -> Optional[int]:
+        """
+        Inbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "inbound_med")
+
+    @property
+    @pulumi.getter(name="outboundAsPrependCount")
+    def outbound_as_prepend_count(self) -> Optional[str]:
+        """
+        AS path prepend count. One of: 0, 1, 3, 5
+        """
+        return pulumi.get(self, "outbound_as_prepend_count")
+
+    @property
+    @pulumi.getter(name="outboundMed")
+    def outbound_med(self) -> Optional[int]:
+        """
+        Outbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "outbound_med")
+
 
 @pulumi.output_type
 class RoutingProtocolChange(dict):
@@ -14446,14 +14530,23 @@ class GetRoutingProtocolBgpIpv4Result(dict):
     def __init__(__self__, *,
                  customer_peer_ip: str,
                  equinix_peer_ip: str,
+                 inbound_med: int,
+                 outbound_as_prepend_count: str,
+                 outbound_med: int,
                  enabled: Optional[bool] = None):
         """
         :param str customer_peer_ip: Customer side peering ip
         :param str equinix_peer_ip: Equinix side peering ip
+        :param int inbound_med: Inbound Multi Exit Discriminator attribute
+        :param str outbound_as_prepend_count: AS path prepend count. One of: 0, 1, 3, 5
+        :param int outbound_med: Outbound Multi Exit Discriminator attribute
         :param bool enabled: Admin status for the BGP session
         """
         pulumi.set(__self__, "customer_peer_ip", customer_peer_ip)
         pulumi.set(__self__, "equinix_peer_ip", equinix_peer_ip)
+        pulumi.set(__self__, "inbound_med", inbound_med)
+        pulumi.set(__self__, "outbound_as_prepend_count", outbound_as_prepend_count)
+        pulumi.set(__self__, "outbound_med", outbound_med)
         if enabled is not None:
             pulumi.set(__self__, "enabled", enabled)
 
@@ -14473,6 +14566,30 @@ def equinix_peer_ip(self) -> str:
         """
         return pulumi.get(self, "equinix_peer_ip")
 
+    @property
+    @pulumi.getter(name="inboundMed")
+    def inbound_med(self) -> int:
+        """
+        Inbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "inbound_med")
+
+    @property
+    @pulumi.getter(name="outboundAsPrependCount")
+    def outbound_as_prepend_count(self) -> str:
+        """
+        AS path prepend count. One of: 0, 1, 3, 5
+        """
+        return pulumi.get(self, "outbound_as_prepend_count")
+
+    @property
+    @pulumi.getter(name="outboundMed")
+    def outbound_med(self) -> int:
+        """
+        Outbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "outbound_med")
+
     @property
     @pulumi.getter
     def enabled(self) -> Optional[bool]:
@@ -14487,14 +14604,23 @@ class GetRoutingProtocolBgpIpv6Result(dict):
     def __init__(__self__, *,
                  customer_peer_ip: str,
                  equinix_peer_ip: str,
+                 inbound_med: int,
+                 outbound_as_prepend_count: str,
+                 outbound_med: int,
                  enabled: Optional[bool] = None):
         """
         :param str customer_peer_ip: Customer side peering ip
         :param str equinix_peer_ip: Equinix side peering ip
+        :param int inbound_med: Inbound Multi Exit Discriminator attribute
+        :param str outbound_as_prepend_count: AS path prepend count. One of: 0, 1, 3, 5
+        :param int outbound_med: Outbound Multi Exit Discriminator attribute
         :param bool enabled: Admin status for the BGP session
         """
         pulumi.set(__self__, "customer_peer_ip", customer_peer_ip)
         pulumi.set(__self__, "equinix_peer_ip", equinix_peer_ip)
+        pulumi.set(__self__, "inbound_med", inbound_med)
+        pulumi.set(__self__, "outbound_as_prepend_count", outbound_as_prepend_count)
+        pulumi.set(__self__, "outbound_med", outbound_med)
         if enabled is not None:
             pulumi.set(__self__, "enabled", enabled)
 
@@ -14514,6 +14640,30 @@ def equinix_peer_ip(self) -> str:
         """
         return pulumi.get(self, "equinix_peer_ip")
 
+    @property
+    @pulumi.getter(name="inboundMed")
+    def inbound_med(self) -> int:
+        """
+        Inbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "inbound_med")
+
+    @property
+    @pulumi.getter(name="outboundAsPrependCount")
+    def outbound_as_prepend_count(self) -> str:
+        """
+        AS path prepend count. One of: 0, 1, 3, 5
+        """
+        return pulumi.get(self, "outbound_as_prepend_count")
+
+    @property
+    @pulumi.getter(name="outboundMed")
+    def outbound_med(self) -> int:
+        """
+        Outbound Multi Exit Discriminator attribute
+        """
+        return pulumi.get(self, "outbound_med")
+
     @property
     @pulumi.getter
     def enabled(self) -> Optional[bool]:
diff --git a/sdk/python/pulumi_equinix/fabric/routing_protocol.py b/sdk/python/pulumi_equinix/fabric/routing_protocol.py
index f6b68ddc..2c02cb35 100644
--- a/sdk/python/pulumi_equinix/fabric/routing_protocol.py
+++ b/sdk/python/pulumi_equinix/fabric/routing_protocol.py
@@ -17,6 +17,7 @@
 class RoutingProtocolArgs:
     def __init__(__self__, *,
                  connection_uuid: pulumi.Input[str],
+                 as_override_enabled: Optional[pulumi.Input[bool]] = None,
                  bfd: Optional[pulumi.Input['RoutingProtocolBfdArgs']] = None,
                  bgp_auth_key: Optional[pulumi.Input[str]] = None,
                  bgp_ipv4: Optional[pulumi.Input['RoutingProtocolBgpIpv4Args']] = None,
@@ -31,6 +32,7 @@ def __init__(__self__, *,
         """
         The set of arguments for constructing a RoutingProtocol resource.
         :param pulumi.Input[str] connection_uuid: Connection URI associated with Routing Protocol
+        :param pulumi.Input[bool] as_override_enabled: Enable AS number override
         :param pulumi.Input['RoutingProtocolBfdArgs'] bfd: Bidirectional Forwarding Detection
         :param pulumi.Input[str] bgp_auth_key: BGP authorization key
         :param pulumi.Input['RoutingProtocolBgpIpv4Args'] bgp_ipv4: Routing Protocol BGP IPv4
@@ -44,6 +46,8 @@ def __init__(__self__, *,
         :param pulumi.Input[str] uuid: Equinix-assigned routing protocol identifier
         """
         pulumi.set(__self__, "connection_uuid", connection_uuid)
+        if as_override_enabled is not None:
+            pulumi.set(__self__, "as_override_enabled", as_override_enabled)
         if bfd is not None:
             pulumi.set(__self__, "bfd", bfd)
         if bgp_auth_key is not None:
@@ -79,6 +83,18 @@ def connection_uuid(self) -> pulumi.Input[str]:
     def connection_uuid(self, value: pulumi.Input[str]):
         pulumi.set(self, "connection_uuid", value)
 
+    @property
+    @pulumi.getter(name="asOverrideEnabled")
+    def as_override_enabled(self) -> Optional[pulumi.Input[bool]]:
+        """
+        Enable AS number override
+        """
+        return pulumi.get(self, "as_override_enabled")
+
+    @as_override_enabled.setter
+    def as_override_enabled(self, value: Optional[pulumi.Input[bool]]):
+        pulumi.set(self, "as_override_enabled", value)
+
     @property
     @pulumi.getter
     def bfd(self) -> Optional[pulumi.Input['RoutingProtocolBfdArgs']]:
@@ -215,6 +231,7 @@ def uuid(self, value: Optional[pulumi.Input[str]]):
 @pulumi.input_type
 class _RoutingProtocolState:
     def __init__(__self__, *,
+                 as_override_enabled: Optional[pulumi.Input[bool]] = None,
                  bfd: Optional[pulumi.Input['RoutingProtocolBfdArgs']] = None,
                  bgp_auth_key: Optional[pulumi.Input[str]] = None,
                  bgp_ipv4: Optional[pulumi.Input['RoutingProtocolBgpIpv4Args']] = None,
@@ -235,6 +252,7 @@ def __init__(__self__, *,
                  uuid: Optional[pulumi.Input[str]] = None):
         """
         Input properties used for looking up and filtering RoutingProtocol resources.
+        :param pulumi.Input[bool] as_override_enabled: Enable AS number override
         :param pulumi.Input['RoutingProtocolBfdArgs'] bfd: Bidirectional Forwarding Detection
         :param pulumi.Input[str] bgp_auth_key: BGP authorization key
         :param pulumi.Input['RoutingProtocolBgpIpv4Args'] bgp_ipv4: Routing Protocol BGP IPv4
@@ -254,6 +272,8 @@ def __init__(__self__, *,
         :param pulumi.Input[str] type: Defines the routing protocol type like BGP or DIRECT
         :param pulumi.Input[str] uuid: Equinix-assigned routing protocol identifier
         """
+        if as_override_enabled is not None:
+            pulumi.set(__self__, "as_override_enabled", as_override_enabled)
         if bfd is not None:
             pulumi.set(__self__, "bfd", bfd)
         if bgp_auth_key is not None:
@@ -291,6 +311,18 @@ def __init__(__self__, *,
         if uuid is not None:
             pulumi.set(__self__, "uuid", uuid)
 
+    @property
+    @pulumi.getter(name="asOverrideEnabled")
+    def as_override_enabled(self) -> Optional[pulumi.Input[bool]]:
+        """
+        Enable AS number override
+        """
+        return pulumi.get(self, "as_override_enabled")
+
+    @as_override_enabled.setter
+    def as_override_enabled(self, value: Optional[pulumi.Input[bool]]):
+        pulumi.set(self, "as_override_enabled", value)
+
     @property
     @pulumi.getter
     def bfd(self) -> Optional[pulumi.Input['RoutingProtocolBfdArgs']]:
@@ -513,6 +545,7 @@ class RoutingProtocol(pulumi.CustomResource):
     def __init__(__self__,
                  resource_name: str,
                  opts: Optional[pulumi.ResourceOptions] = None,
+                 as_override_enabled: Optional[pulumi.Input[bool]] = None,
                  bfd: Optional[pulumi.Input[Union['RoutingProtocolBfdArgs', 'RoutingProtocolBfdArgsDict']]] = None,
                  bgp_auth_key: Optional[pulumi.Input[str]] = None,
                  bgp_ipv4: Optional[pulumi.Input[Union['RoutingProtocolBgpIpv4Args', 'RoutingProtocolBgpIpv4ArgsDict']]] = None,
@@ -602,6 +635,7 @@ def __init__(__self__,
 
         :param str resource_name: The name of the resource.
         :param pulumi.ResourceOptions opts: Options for the resource.
+        :param pulumi.Input[bool] as_override_enabled: Enable AS number override
         :param pulumi.Input[Union['RoutingProtocolBfdArgs', 'RoutingProtocolBfdArgsDict']] bfd: Bidirectional Forwarding Detection
         :param pulumi.Input[str] bgp_auth_key: BGP authorization key
         :param pulumi.Input[Union['RoutingProtocolBgpIpv4Args', 'RoutingProtocolBgpIpv4ArgsDict']] bgp_ipv4: Routing Protocol BGP IPv4
@@ -710,6 +744,7 @@ def __init__(__self__, resource_name: str, *args, **kwargs):
     def _internal_init(__self__,
                  resource_name: str,
                  opts: Optional[pulumi.ResourceOptions] = None,
+                 as_override_enabled: Optional[pulumi.Input[bool]] = None,
                  bfd: Optional[pulumi.Input[Union['RoutingProtocolBfdArgs', 'RoutingProtocolBfdArgsDict']]] = None,
                  bgp_auth_key: Optional[pulumi.Input[str]] = None,
                  bgp_ipv4: Optional[pulumi.Input[Union['RoutingProtocolBgpIpv4Args', 'RoutingProtocolBgpIpv4ArgsDict']]] = None,
@@ -731,6 +766,7 @@ def _internal_init(__self__,
                 raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
             __props__ = RoutingProtocolArgs.__new__(RoutingProtocolArgs)
 
+            __props__.__dict__["as_override_enabled"] = as_override_enabled
             __props__.__dict__["bfd"] = bfd
             __props__.__dict__["bgp_auth_key"] = bgp_auth_key
             __props__.__dict__["bgp_ipv4"] = bgp_ipv4
@@ -761,6 +797,7 @@ def _internal_init(__self__,
     def get(resource_name: str,
             id: pulumi.Input[str],
             opts: Optional[pulumi.ResourceOptions] = None,
+            as_override_enabled: Optional[pulumi.Input[bool]] = None,
             bfd: Optional[pulumi.Input[Union['RoutingProtocolBfdArgs', 'RoutingProtocolBfdArgsDict']]] = None,
             bgp_auth_key: Optional[pulumi.Input[str]] = None,
             bgp_ipv4: Optional[pulumi.Input[Union['RoutingProtocolBgpIpv4Args', 'RoutingProtocolBgpIpv4ArgsDict']]] = None,
@@ -786,6 +823,7 @@ def get(resource_name: str,
         :param str resource_name: The unique name of the resulting resource.
         :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
         :param pulumi.ResourceOptions opts: Options for the resource.
+        :param pulumi.Input[bool] as_override_enabled: Enable AS number override
         :param pulumi.Input[Union['RoutingProtocolBfdArgs', 'RoutingProtocolBfdArgsDict']] bfd: Bidirectional Forwarding Detection
         :param pulumi.Input[str] bgp_auth_key: BGP authorization key
         :param pulumi.Input[Union['RoutingProtocolBgpIpv4Args', 'RoutingProtocolBgpIpv4ArgsDict']] bgp_ipv4: Routing Protocol BGP IPv4
@@ -809,6 +847,7 @@ def get(resource_name: str,
 
         __props__ = _RoutingProtocolState.__new__(_RoutingProtocolState)
 
+        __props__.__dict__["as_override_enabled"] = as_override_enabled
         __props__.__dict__["bfd"] = bfd
         __props__.__dict__["bgp_auth_key"] = bgp_auth_key
         __props__.__dict__["bgp_ipv4"] = bgp_ipv4
@@ -829,6 +868,14 @@ def get(resource_name: str,
         __props__.__dict__["uuid"] = uuid
         return RoutingProtocol(resource_name, opts=opts, __props__=__props__)
 
+    @property
+    @pulumi.getter(name="asOverrideEnabled")
+    def as_override_enabled(self) -> pulumi.Output[bool]:
+        """
+        Enable AS number override
+        """
+        return pulumi.get(self, "as_override_enabled")
+
     @property
     @pulumi.getter
     def bfd(self) -> pulumi.Output['outputs.RoutingProtocolBfd']:
diff --git a/sdk/python/pulumi_equinix/metal/_inputs.py b/sdk/python/pulumi_equinix/metal/_inputs.py
index 1668ea6c..c5450ea1 100644
--- a/sdk/python/pulumi_equinix/metal/_inputs.py
+++ b/sdk/python/pulumi_equinix/metal/_inputs.py
@@ -369,11 +369,6 @@ def __init__(__self__, *,
                  speed: pulumi.Input[int],
                  status: pulumi.Input[str],
                  virtual_circuit_ids: pulumi.Input[Sequence[pulumi.Input[str]]]):
-        """
-        :param pulumi.Input[str] name: Name of the connection resource
-        :param pulumi.Input[int] speed: Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-        :param pulumi.Input[str] status: Status of the connection resource.
-        """
         pulumi.set(__self__, "id", id)
         pulumi.set(__self__, "link_status", link_status)
         pulumi.set(__self__, "name", name)
@@ -403,9 +398,6 @@ def link_status(self, value: pulumi.Input[str]):
     @property
     @pulumi.getter
     def name(self) -> pulumi.Input[str]:
-        """
-        Name of the connection resource
-        """
         return pulumi.get(self, "name")
 
     @name.setter
@@ -424,9 +416,6 @@ def role(self, value: pulumi.Input[str]):
     @property
     @pulumi.getter
     def speed(self) -> pulumi.Input[int]:
-        """
-        Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-        """
         return pulumi.get(self, "speed")
 
     @speed.setter
@@ -436,9 +425,6 @@ def speed(self, value: pulumi.Input[int]):
     @property
     @pulumi.getter
     def status(self) -> pulumi.Input[str]:
-        """
-        Status of the connection resource.
-        """
         return pulumi.get(self, "status")
 
     @status.setter
@@ -464,9 +450,6 @@ def __init__(__self__, *,
                  role: pulumi.Input[str],
                  state: pulumi.Input[str],
                  type: pulumi.Input[str]):
-        """
-        :param pulumi.Input[str] type: Connection type - dedicated or shared.
-        """
         pulumi.set(__self__, "expires_at", expires_at)
         pulumi.set(__self__, "id", id)
         pulumi.set(__self__, "max_allowed_speed", max_allowed_speed)
@@ -522,9 +505,6 @@ def state(self, value: pulumi.Input[str]):
     @property
     @pulumi.getter
     def type(self) -> pulumi.Input[str]:
-        """
-        Connection type - dedicated or shared.
-        """
         return pulumi.get(self, "type")
 
     @type.setter
diff --git a/sdk/python/pulumi_equinix/metal/interconnection.py b/sdk/python/pulumi_equinix/metal/interconnection.py
index 1d1cbe10..5714a3d9 100644
--- a/sdk/python/pulumi_equinix/metal/interconnection.py
+++ b/sdk/python/pulumi_equinix/metal/interconnection.py
@@ -33,22 +33,21 @@ def __init__(__self__, *,
                  vrfs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
         """
         The set of arguments for constructing a Interconnection resource.
-        :param pulumi.Input[str] redundancy: Connection redundancy - redundant or primary.
-        :param pulumi.Input[str] type: Connection type - dedicated or shared.
-        :param pulumi.Input[str] contact_email: The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
-        :param pulumi.Input[str] description: Description for the connection resource.
-        :param pulumi.Input[str] facility: Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
-        :param pulumi.Input[str] metro: Metro where the connection will be created.
-        :param pulumi.Input[str] mode: Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+        :param pulumi.Input[str] redundancy: Connection redundancy - redundant or primary
+        :param pulumi.Input[str] type: Connection type - dedicated, shared or shared*port*vlan
+        :param pulumi.Input[str] contact_email: The preferred email used for communication and notifications about the Equinix Fabric interconnection
+        :param pulumi.Input[str] description: Description of the connection resource
+        :param pulumi.Input[str] facility: Facility where the connection will be created
+        :param pulumi.Input[str] metro: Metro where the connection will be created
+        :param pulumi.Input[str] mode: Mode for connections in IBX facilities with the dedicated type - standard or tunnel
         :param pulumi.Input[str] name: Name of the connection resource
-        :param pulumi.Input[str] organization_id: ID of the organization where the connection is scoped to.
-        :param pulumi.Input[str] project_id: ID of the project where the connection is scoped to, must be set for.
-        :param pulumi.Input[str] service_token_type: Only used with shared connection. Type of service token to use for the connection, a_side or z_side
-        :param pulumi.Input[str] speed: Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: String list of tags.
-        :param pulumi.Input[Sequence[pulumi.Input[int]]] vlans: Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
-        :param pulumi.Input[Sequence[pulumi.Input[str]]] vrfs: Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-               connection
+        :param pulumi.Input[str] organization_id: ID of the organization responsible for the connection. Applicable with type "dedicated"
+        :param pulumi.Input[str] project_id: ID of the project where the connection is scoped to. Required with type "shared"
+        :param pulumi.Input[str] service_token_type: Only used with shared connection. Type of service token to use for the connection, a*side or z*side
+        :param pulumi.Input[str] speed: Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags attached to the connection
+        :param pulumi.Input[Sequence[pulumi.Input[int]]] vlans: Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
+        :param pulumi.Input[Sequence[pulumi.Input[str]]] vrfs: Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
         """
         pulumi.set(__self__, "redundancy", redundancy)
         pulumi.set(__self__, "type", type)
@@ -86,7 +85,7 @@ def __init__(__self__, *,
     @pulumi.getter
     def redundancy(self) -> pulumi.Input[str]:
         """
-        Connection redundancy - redundant or primary.
+        Connection redundancy - redundant or primary
         """
         return pulumi.get(self, "redundancy")
 
@@ -98,7 +97,7 @@ def redundancy(self, value: pulumi.Input[str]):
     @pulumi.getter
     def type(self) -> pulumi.Input[str]:
         """
-        Connection type - dedicated or shared.
+        Connection type - dedicated, shared or shared*port*vlan
         """
         return pulumi.get(self, "type")
 
@@ -110,7 +109,7 @@ def type(self, value: pulumi.Input[str]):
     @pulumi.getter(name="contactEmail")
     def contact_email(self) -> Optional[pulumi.Input[str]]:
         """
-        The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+        The preferred email used for communication and notifications about the Equinix Fabric interconnection
         """
         return pulumi.get(self, "contact_email")
 
@@ -122,7 +121,7 @@ def contact_email(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def description(self) -> Optional[pulumi.Input[str]]:
         """
-        Description for the connection resource.
+        Description of the connection resource
         """
         return pulumi.get(self, "description")
 
@@ -135,7 +134,7 @@ def description(self, value: Optional[pulumi.Input[str]]):
     @_utilities.deprecated("""Use metro instead of facility. For more information, read the migration guide.""")
     def facility(self) -> Optional[pulumi.Input[str]]:
         """
-        Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+        Facility where the connection will be created
         """
         return pulumi.get(self, "facility")
 
@@ -147,7 +146,7 @@ def facility(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def metro(self) -> Optional[pulumi.Input[str]]:
         """
-        Metro where the connection will be created.
+        Metro where the connection will be created
         """
         return pulumi.get(self, "metro")
 
@@ -159,7 +158,7 @@ def metro(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def mode(self) -> Optional[pulumi.Input[str]]:
         """
-        Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+        Mode for connections in IBX facilities with the dedicated type - standard or tunnel
         """
         return pulumi.get(self, "mode")
 
@@ -183,7 +182,7 @@ def name(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter(name="organizationId")
     def organization_id(self) -> Optional[pulumi.Input[str]]:
         """
-        ID of the organization where the connection is scoped to.
+        ID of the organization responsible for the connection. Applicable with type "dedicated"
         """
         return pulumi.get(self, "organization_id")
 
@@ -195,7 +194,7 @@ def organization_id(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter(name="projectId")
     def project_id(self) -> Optional[pulumi.Input[str]]:
         """
-        ID of the project where the connection is scoped to, must be set for.
+        ID of the project where the connection is scoped to. Required with type "shared"
         """
         return pulumi.get(self, "project_id")
 
@@ -207,7 +206,7 @@ def project_id(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter(name="serviceTokenType")
     def service_token_type(self) -> Optional[pulumi.Input[str]]:
         """
-        Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+        Only used with shared connection. Type of service token to use for the connection, a*side or z*side
         """
         return pulumi.get(self, "service_token_type")
 
@@ -219,7 +218,7 @@ def service_token_type(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def speed(self) -> Optional[pulumi.Input[str]]:
         """
-        Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+        Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
         """
         return pulumi.get(self, "speed")
 
@@ -231,7 +230,7 @@ def speed(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
         """
-        String list of tags.
+        Tags attached to the connection
         """
         return pulumi.get(self, "tags")
 
@@ -243,7 +242,7 @@ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
     @pulumi.getter
     def vlans(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[int]]]]:
         """
-        Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+        Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
         """
         return pulumi.get(self, "vlans")
 
@@ -255,8 +254,7 @@ def vlans(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]]):
     @pulumi.getter
     def vrfs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
         """
-        Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-        connection
+        Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
         """
         return pulumi.get(self, "vrfs")
 
@@ -290,27 +288,26 @@ def __init__(__self__, *,
                  vrfs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
         """
         Input properties used for looking up and filtering Interconnection resources.
-        :param pulumi.Input[str] authorization_code: Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
-        :param pulumi.Input[str] contact_email: The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
-        :param pulumi.Input[str] description: Description for the connection resource.
-        :param pulumi.Input[str] facility: Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
-        :param pulumi.Input[str] metro: Metro where the connection will be created.
-        :param pulumi.Input[str] mode: Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+        :param pulumi.Input[str] authorization_code: Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
+        :param pulumi.Input[str] contact_email: The preferred email used for communication and notifications about the Equinix Fabric interconnection
+        :param pulumi.Input[str] description: Description of the connection resource
+        :param pulumi.Input[str] facility: Facility where the connection will be created
+        :param pulumi.Input[str] metro: Metro where the connection will be created
+        :param pulumi.Input[str] mode: Mode for connections in IBX facilities with the dedicated type - standard or tunnel
         :param pulumi.Input[str] name: Name of the connection resource
-        :param pulumi.Input[str] organization_id: ID of the organization where the connection is scoped to.
-        :param pulumi.Input[Sequence[pulumi.Input['InterconnectionPortArgs']]] ports: List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the metal.Interconnection datasource.
-        :param pulumi.Input[str] project_id: ID of the project where the connection is scoped to, must be set for.
-        :param pulumi.Input[str] redundancy: Connection redundancy - redundant or primary.
-        :param pulumi.Input[str] service_token_type: Only used with shared connection. Type of service token to use for the connection, a_side or z_side
-        :param pulumi.Input[Sequence[pulumi.Input['InterconnectionServiceTokenArgs']]] service_tokens: List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the metal.Interconnection datasource.
-        :param pulumi.Input[str] speed: Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-        :param pulumi.Input[str] status: Status of the connection resource.
-        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: String list of tags.
-        :param pulumi.Input[str] token: (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
-        :param pulumi.Input[str] type: Connection type - dedicated or shared.
-        :param pulumi.Input[Sequence[pulumi.Input[int]]] vlans: Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
-        :param pulumi.Input[Sequence[pulumi.Input[str]]] vrfs: Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-               connection
+        :param pulumi.Input[str] organization_id: ID of the organization responsible for the connection. Applicable with type "dedicated"
+        :param pulumi.Input[Sequence[pulumi.Input['InterconnectionPortArgs']]] ports: List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
+        :param pulumi.Input[str] project_id: ID of the project where the connection is scoped to. Required with type "shared"
+        :param pulumi.Input[str] redundancy: Connection redundancy - redundant or primary
+        :param pulumi.Input[str] service_token_type: Only used with shared connection. Type of service token to use for the connection, a*side or z*side
+        :param pulumi.Input[Sequence[pulumi.Input['InterconnectionServiceTokenArgs']]] service_tokens: Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
+        :param pulumi.Input[str] speed: Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+        :param pulumi.Input[str] status: Status of the connection resource
+        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags attached to the connection
+        :param pulumi.Input[str] token: Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
+        :param pulumi.Input[str] type: Connection type - dedicated, shared or shared*port*vlan
+        :param pulumi.Input[Sequence[pulumi.Input[int]]] vlans: Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
+        :param pulumi.Input[Sequence[pulumi.Input[str]]] vrfs: Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
         """
         if authorization_code is not None:
             pulumi.set(__self__, "authorization_code", authorization_code)
@@ -363,7 +360,7 @@ def __init__(__self__, *,
     @pulumi.getter(name="authorizationCode")
     def authorization_code(self) -> Optional[pulumi.Input[str]]:
         """
-        Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+        Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
         """
         return pulumi.get(self, "authorization_code")
 
@@ -375,7 +372,7 @@ def authorization_code(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter(name="contactEmail")
     def contact_email(self) -> Optional[pulumi.Input[str]]:
         """
-        The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+        The preferred email used for communication and notifications about the Equinix Fabric interconnection
         """
         return pulumi.get(self, "contact_email")
 
@@ -387,7 +384,7 @@ def contact_email(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def description(self) -> Optional[pulumi.Input[str]]:
         """
-        Description for the connection resource.
+        Description of the connection resource
         """
         return pulumi.get(self, "description")
 
@@ -400,7 +397,7 @@ def description(self, value: Optional[pulumi.Input[str]]):
     @_utilities.deprecated("""Use metro instead of facility. For more information, read the migration guide.""")
     def facility(self) -> Optional[pulumi.Input[str]]:
         """
-        Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+        Facility where the connection will be created
         """
         return pulumi.get(self, "facility")
 
@@ -412,7 +409,7 @@ def facility(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def metro(self) -> Optional[pulumi.Input[str]]:
         """
-        Metro where the connection will be created.
+        Metro where the connection will be created
         """
         return pulumi.get(self, "metro")
 
@@ -424,7 +421,7 @@ def metro(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def mode(self) -> Optional[pulumi.Input[str]]:
         """
-        Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+        Mode for connections in IBX facilities with the dedicated type - standard or tunnel
         """
         return pulumi.get(self, "mode")
 
@@ -448,7 +445,7 @@ def name(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter(name="organizationId")
     def organization_id(self) -> Optional[pulumi.Input[str]]:
         """
-        ID of the organization where the connection is scoped to.
+        ID of the organization responsible for the connection. Applicable with type "dedicated"
         """
         return pulumi.get(self, "organization_id")
 
@@ -460,7 +457,7 @@ def organization_id(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def ports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InterconnectionPortArgs']]]]:
         """
-        List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the metal.Interconnection datasource.
+        List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
         """
         return pulumi.get(self, "ports")
 
@@ -472,7 +469,7 @@ def ports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Interconnect
     @pulumi.getter(name="projectId")
     def project_id(self) -> Optional[pulumi.Input[str]]:
         """
-        ID of the project where the connection is scoped to, must be set for.
+        ID of the project where the connection is scoped to. Required with type "shared"
         """
         return pulumi.get(self, "project_id")
 
@@ -484,7 +481,7 @@ def project_id(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def redundancy(self) -> Optional[pulumi.Input[str]]:
         """
-        Connection redundancy - redundant or primary.
+        Connection redundancy - redundant or primary
         """
         return pulumi.get(self, "redundancy")
 
@@ -496,7 +493,7 @@ def redundancy(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter(name="serviceTokenType")
     def service_token_type(self) -> Optional[pulumi.Input[str]]:
         """
-        Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+        Only used with shared connection. Type of service token to use for the connection, a*side or z*side
         """
         return pulumi.get(self, "service_token_type")
 
@@ -508,7 +505,7 @@ def service_token_type(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter(name="serviceTokens")
     def service_tokens(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InterconnectionServiceTokenArgs']]]]:
         """
-        List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the metal.Interconnection datasource.
+        Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
         """
         return pulumi.get(self, "service_tokens")
 
@@ -520,7 +517,7 @@ def service_tokens(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Int
     @pulumi.getter
     def speed(self) -> Optional[pulumi.Input[str]]:
         """
-        Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+        Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
         """
         return pulumi.get(self, "speed")
 
@@ -532,7 +529,7 @@ def speed(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def status(self) -> Optional[pulumi.Input[str]]:
         """
-        Status of the connection resource.
+        Status of the connection resource
         """
         return pulumi.get(self, "status")
 
@@ -544,7 +541,7 @@ def status(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
         """
-        String list of tags.
+        Tags attached to the connection
         """
         return pulumi.get(self, "tags")
 
@@ -557,7 +554,7 @@ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
     @_utilities.deprecated("""If your organization already has connection service tokens enabled, use `service_tokens` instead""")
     def token(self) -> Optional[pulumi.Input[str]]:
         """
-        (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
+        Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
         """
         return pulumi.get(self, "token")
 
@@ -569,7 +566,7 @@ def token(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def type(self) -> Optional[pulumi.Input[str]]:
         """
-        Connection type - dedicated or shared.
+        Connection type - dedicated, shared or shared*port*vlan
         """
         return pulumi.get(self, "type")
 
@@ -581,7 +578,7 @@ def type(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter
     def vlans(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[int]]]]:
         """
-        Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+        Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
         """
         return pulumi.get(self, "vlans")
 
@@ -593,8 +590,7 @@ def vlans(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]]):
     @pulumi.getter
     def vrfs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
         """
-        Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-        connection
+        Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
         """
         return pulumi.get(self, "vrfs")
 
@@ -627,44 +623,93 @@ def __init__(__self__,
         """
         Use this resource to request the creation an Interconnection asset to connect with other parties using [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/).
 
-        > Equinix Metal connection with with Service Token A-side / Z-side (service_token_type) is not generally available and may not be enabled yet for your organization.
-
         ## Example Usage
-        ### example shared metal fabric connection from fcr
+        ### example fabric billed metal from fabric port
+        ```python
+        import pulumi
+        import pulumi_equinix as equinix
+
+        a_side = equinix.fabric.get_ports_output(filter={
+            "name": "",
+        })
+        example = equinix.metal.Vlan("example",
+            project_id="",
+            metro="FR")
+        example_interconnection = equinix.metal.Interconnection("exampleInterconnection",
+            name="tf-metal-from-port",
+            project_id="",
+            type="shared",
+            redundancy="primary",
+            metro="FR",
+            speed="200Mbps",
+            service_token_type="z_side",
+            contact_email="username@example.com",
+            vlans=[example.vxlan])
+        example_connection = equinix.fabric.Connection("exampleConnection",
+            name="tf-metal-from-port",
+            type=equinix.fabric.ConnectionType.EVPL,
+            bandwidth=200,
+            notifications=[{
+                "type": equinix.fabric.NotificationsType.ALL,
+                "emails": ["username@example.com"],
+            }],
+            order={
+                "purchase_order_number": "1-323292",
+            },
+            project={
+                "project_id": "",
+            },
+            a_side={
+                "access_point": {
+                    "type": equinix.fabric.AccessPointType.COLO,
+                    "port": {
+                        "uuid": a_side.data[0].uuid,
+                    },
+                    "link_protocol": {
+                        "type": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,
+                        "vlan_tag": 1234,
+                    },
+                },
+            },
+            z_side={
+                "service_token": {
+                    "uuid": example_interconnection.service_tokens[0].id,
+                },
+            })
+        ```
+        ### example fabric billed metal from fcr
         ```python
         import pulumi
         import pulumi_equinix as equinix
 
         example1 = equinix.metal.Vlan("example1",
-            project_id=my_project_id,
+            project_id="",
             metro="SV")
         example = equinix.metal.Interconnection("example",
-            name="tf-port-to-metal-legacy",
-            project_id=my_project_id,
+            name="tf-metal-from-fcr",
+            project_id="",
             metro="SV",
             redundancy="primary",
             type="shared_port_vlan",
             contact_email="username@example.com",
+            speed="200Mbps",
             vlans=[example1.vxlan])
         example_connection = equinix.fabric.Connection("exampleConnection",
-            name="tf-NIMF-metal-2-aws-legacy",
+            name="tf-metal-from-fcr",
             type="IP_VC",
+            bandwidth=200,
             notifications=[{
                 "type": equinix.fabric.NotificationsType.ALL,
-                "emails": "sername@example.com",
+                "emails": ["username@example.com"],
             }],
             project={
-                "project_id": fabric_project_id,
-            },
-            bandwidth=200,
-            order={
-                "purchase_order_number": "1-323292",
+                "project_id": "",
             },
             a_side={
                 "access_point": {
                     "type": "CLOUD_ROUTER",
                     "router": {
-                        "uuid": cloud_router_uuid,
+                        "uuid": example_equinix_fabric_cloud_router["id"],
                     },
                 },
             },
@@ -675,58 +720,101 @@ def __init__(__self__,
                 },
             })
         ```
-        ### example shared metal fabric connection to csp
+        ### example fabric billed metal from network edge
         ```python
         import pulumi
         import pulumi_equinix as equinix
 
-        zside = equinix.fabric.get_service_profiles_output(filter={
-            "property": "/name",
-            "operator": "=",
-            "values": ["AWS Direct Connect"],
-        })
-        example1 = equinix.metal.Vlan("example1",
-            project_id=my_project_id,
-            metro="SV")
-        example = equinix.metal.Interconnection("example",
-            name="tf-port-to-metal-legacy",
-            project_id=my_project_id,
-            metro="SV",
+        example = equinix.metal.Vrf("example",
+            name="tf-metal-from-ne",
+            metro="FR",
+            local_asn=65001,
+            ip_ranges=["10.99.1.0/24"],
+            project_id=test["id"])
+        example_interconnection = equinix.metal.Interconnection("exampleInterconnection",
+            name="tf-metal-from-ne",
+            project_id="",
+            type="shared",
             redundancy="primary",
-            type="shared_port_vlan",
+            metro="FR",
+            speed="200Mbps",
+            service_token_type="z_side",
             contact_email="username@example.com",
-            vlans=[example1.vxlan])
+            vrfs=[example.vxlan])
         example_connection = equinix.fabric.Connection("exampleConnection",
-            name="tf-NIMF-metal-2-aws-legacy",
+            name="tf-metal-from-ne",
             type=equinix.fabric.ConnectionType.EVPL,
+            bandwidth=200,
             notifications=[{
                 "type": equinix.fabric.NotificationsType.ALL,
-                "emails": "sername@example.com",
+                "emails": ["username@example.com"],
             }],
+            order={
+                "purchase_order_number": "1-323292",
+            },
             project={
-                "project_id": fabric_project_id,
+                "project_id": "",
             },
-            bandwidth=200,
+            a_side={
+                "access_point": {
+                    "type": equinix.fabric.AccessPointType.VD,
+                    "virtual_device": {
+                        "type": "EDGE",
+                        "uuid": example_equinix_network_device["id"],
+                    },
+                },
+            },
+            z_side={
+                "service_token": {
+                    "uuid": example_interconnection.service_tokens[0].id,
+                },
+            })
+        ```
+        ### example metal billed metal to fabric port
+        ```python
+        import pulumi
+        import pulumi_equinix as equinix
+
+        a_side = equinix.fabric.get_ports_output(filter={
+            "name": "",
+        })
+        example = equinix.metal.Interconnection("example",
+            name="tf-metal-2-port",
+            project_id="",
+            type="shared",
+            redundancy="redundant",
+            metro="FR",
+            speed="1Gbps",
+            service_token_type="a_side",
+            contact_email="username@example.com")
+        example_connection = equinix.fabric.Connection("exampleConnection",
+            name="tf-metal-2-port",
+            type=equinix.fabric.ConnectionType.EVPL,
+            notifications=[{
+                "type": equinix.fabric.NotificationsType.ALL,
+                "emails": ["username@example.com"],
+            }],
+            project={
+                "project_id": "",
+            },
+            bandwidth=100,
             order={
                 "purchase_order_number": "1-323292",
             },
             a_side={
-                "access_point": {
-                    "type": "METAL_NETWORK",
-                    "authentication_key": example.authorization_code,
+                "service_token": {
+                    "uuid": example.service_tokens[0].id,
                 },
             },
             z_side={
                 "access_point": {
-                    "type": equinix.fabric.AccessPointType.SP,
-                    "authentication_key": aws_account_id,
-                    "seller_region": "us-west-1",
-                    "profile": {
-                        "type": equinix.fabric.ProfileType.L2_PROFILE,
-                        "uuid": zside.id,
+                    "type": equinix.fabric.AccessPointType.COLO,
+                    "port": {
+                        "uuid": a_side.data[0].uuid,
                     },
-                    "location": {
-                        "metro_code": equinix.Metro.SILICON_VALLEY,
+                    "link_protocol": {
+                        "type": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,
+                        "vlan_tag": 1234,
                     },
                 },
             })
@@ -734,22 +822,21 @@ def __init__(__self__,
 
         :param str resource_name: The name of the resource.
         :param pulumi.ResourceOptions opts: Options for the resource.
-        :param pulumi.Input[str] contact_email: The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
-        :param pulumi.Input[str] description: Description for the connection resource.
-        :param pulumi.Input[str] facility: Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
-        :param pulumi.Input[str] metro: Metro where the connection will be created.
-        :param pulumi.Input[str] mode: Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+        :param pulumi.Input[str] contact_email: The preferred email used for communication and notifications about the Equinix Fabric interconnection
+        :param pulumi.Input[str] description: Description of the connection resource
+        :param pulumi.Input[str] facility: Facility where the connection will be created
+        :param pulumi.Input[str] metro: Metro where the connection will be created
+        :param pulumi.Input[str] mode: Mode for connections in IBX facilities with the dedicated type - standard or tunnel
         :param pulumi.Input[str] name: Name of the connection resource
-        :param pulumi.Input[str] organization_id: ID of the organization where the connection is scoped to.
-        :param pulumi.Input[str] project_id: ID of the project where the connection is scoped to, must be set for.
-        :param pulumi.Input[str] redundancy: Connection redundancy - redundant or primary.
-        :param pulumi.Input[str] service_token_type: Only used with shared connection. Type of service token to use for the connection, a_side or z_side
-        :param pulumi.Input[str] speed: Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: String list of tags.
-        :param pulumi.Input[str] type: Connection type - dedicated or shared.
-        :param pulumi.Input[Sequence[pulumi.Input[int]]] vlans: Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
-        :param pulumi.Input[Sequence[pulumi.Input[str]]] vrfs: Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-               connection
+        :param pulumi.Input[str] organization_id: ID of the organization responsible for the connection. Applicable with type "dedicated"
+        :param pulumi.Input[str] project_id: ID of the project where the connection is scoped to. Required with type "shared"
+        :param pulumi.Input[str] redundancy: Connection redundancy - redundant or primary
+        :param pulumi.Input[str] service_token_type: Only used with shared connection. Type of service token to use for the connection, a*side or z*side
+        :param pulumi.Input[str] speed: Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags attached to the connection
+        :param pulumi.Input[str] type: Connection type - dedicated, shared or shared*port*vlan
+        :param pulumi.Input[Sequence[pulumi.Input[int]]] vlans: Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
+        :param pulumi.Input[Sequence[pulumi.Input[str]]] vrfs: Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
         """
         ...
     @overload
@@ -760,44 +847,93 @@ def __init__(__self__,
         """
         Use this resource to request the creation an Interconnection asset to connect with other parties using [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/).
 
-        > Equinix Metal connection with with Service Token A-side / Z-side (service_token_type) is not generally available and may not be enabled yet for your organization.
-
         ## Example Usage
-        ### example shared metal fabric connection from fcr
+        ### example fabric billed metal from fabric port
+        ```python
+        import pulumi
+        import pulumi_equinix as equinix
+
+        a_side = equinix.fabric.get_ports_output(filter={
+            "name": "",
+        })
+        example = equinix.metal.Vlan("example",
+            project_id="",
+            metro="FR")
+        example_interconnection = equinix.metal.Interconnection("exampleInterconnection",
+            name="tf-metal-from-port",
+            project_id="",
+            type="shared",
+            redundancy="primary",
+            metro="FR",
+            speed="200Mbps",
+            service_token_type="z_side",
+            contact_email="username@example.com",
+            vlans=[example.vxlan])
+        example_connection = equinix.fabric.Connection("exampleConnection",
+            name="tf-metal-from-port",
+            type=equinix.fabric.ConnectionType.EVPL,
+            bandwidth=200,
+            notifications=[{
+                "type": equinix.fabric.NotificationsType.ALL,
+                "emails": ["username@example.com"],
+            }],
+            order={
+                "purchase_order_number": "1-323292",
+            },
+            project={
+                "project_id": "",
+            },
+            a_side={
+                "access_point": {
+                    "type": equinix.fabric.AccessPointType.COLO,
+                    "port": {
+                        "uuid": a_side.data[0].uuid,
+                    },
+                    "link_protocol": {
+                        "type": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,
+                        "vlan_tag": 1234,
+                    },
+                },
+            },
+            z_side={
+                "service_token": {
+                    "uuid": example_interconnection.service_tokens[0].id,
+                },
+            })
+        ```
+        ### example fabric billed metal from fcr
         ```python
         import pulumi
         import pulumi_equinix as equinix
 
         example1 = equinix.metal.Vlan("example1",
-            project_id=my_project_id,
+            project_id="",
             metro="SV")
         example = equinix.metal.Interconnection("example",
-            name="tf-port-to-metal-legacy",
-            project_id=my_project_id,
+            name="tf-metal-from-fcr",
+            project_id="",
             metro="SV",
             redundancy="primary",
             type="shared_port_vlan",
             contact_email="username@example.com",
+            speed="200Mbps",
             vlans=[example1.vxlan])
         example_connection = equinix.fabric.Connection("exampleConnection",
-            name="tf-NIMF-metal-2-aws-legacy",
+            name="tf-metal-from-fcr",
             type="IP_VC",
+            bandwidth=200,
             notifications=[{
                 "type": equinix.fabric.NotificationsType.ALL,
-                "emails": "sername@example.com",
+                "emails": ["username@example.com"],
             }],
             project={
-                "project_id": fabric_project_id,
-            },
-            bandwidth=200,
-            order={
-                "purchase_order_number": "1-323292",
+                "project_id": "",
             },
             a_side={
                 "access_point": {
                     "type": "CLOUD_ROUTER",
                     "router": {
-                        "uuid": cloud_router_uuid,
+                        "uuid": example_equinix_fabric_cloud_router["id"],
                     },
                 },
             },
@@ -808,58 +944,101 @@ def __init__(__self__,
                 },
             })
         ```
-        ### example shared metal fabric connection to csp
+        ### example fabric billed metal from network edge
         ```python
         import pulumi
         import pulumi_equinix as equinix
 
-        zside = equinix.fabric.get_service_profiles_output(filter={
-            "property": "/name",
-            "operator": "=",
-            "values": ["AWS Direct Connect"],
-        })
-        example1 = equinix.metal.Vlan("example1",
-            project_id=my_project_id,
-            metro="SV")
-        example = equinix.metal.Interconnection("example",
-            name="tf-port-to-metal-legacy",
-            project_id=my_project_id,
-            metro="SV",
+        example = equinix.metal.Vrf("example",
+            name="tf-metal-from-ne",
+            metro="FR",
+            local_asn=65001,
+            ip_ranges=["10.99.1.0/24"],
+            project_id=test["id"])
+        example_interconnection = equinix.metal.Interconnection("exampleInterconnection",
+            name="tf-metal-from-ne",
+            project_id="",
+            type="shared",
             redundancy="primary",
-            type="shared_port_vlan",
+            metro="FR",
+            speed="200Mbps",
+            service_token_type="z_side",
             contact_email="username@example.com",
-            vlans=[example1.vxlan])
+            vrfs=[example.vxlan])
         example_connection = equinix.fabric.Connection("exampleConnection",
-            name="tf-NIMF-metal-2-aws-legacy",
+            name="tf-metal-from-ne",
             type=equinix.fabric.ConnectionType.EVPL,
+            bandwidth=200,
             notifications=[{
                 "type": equinix.fabric.NotificationsType.ALL,
-                "emails": "sername@example.com",
+                "emails": ["username@example.com"],
             }],
+            order={
+                "purchase_order_number": "1-323292",
+            },
             project={
-                "project_id": fabric_project_id,
+                "project_id": "",
             },
-            bandwidth=200,
+            a_side={
+                "access_point": {
+                    "type": equinix.fabric.AccessPointType.VD,
+                    "virtual_device": {
+                        "type": "EDGE",
+                        "uuid": example_equinix_network_device["id"],
+                    },
+                },
+            },
+            z_side={
+                "service_token": {
+                    "uuid": example_interconnection.service_tokens[0].id,
+                },
+            })
+        ```
+        ### example metal billed metal to fabric port
+        ```python
+        import pulumi
+        import pulumi_equinix as equinix
+
+        a_side = equinix.fabric.get_ports_output(filter={
+            "name": "",
+        })
+        example = equinix.metal.Interconnection("example",
+            name="tf-metal-2-port",
+            project_id="",
+            type="shared",
+            redundancy="redundant",
+            metro="FR",
+            speed="1Gbps",
+            service_token_type="a_side",
+            contact_email="username@example.com")
+        example_connection = equinix.fabric.Connection("exampleConnection",
+            name="tf-metal-2-port",
+            type=equinix.fabric.ConnectionType.EVPL,
+            notifications=[{
+                "type": equinix.fabric.NotificationsType.ALL,
+                "emails": ["username@example.com"],
+            }],
+            project={
+                "project_id": "",
+            },
+            bandwidth=100,
             order={
                 "purchase_order_number": "1-323292",
             },
             a_side={
-                "access_point": {
-                    "type": "METAL_NETWORK",
-                    "authentication_key": example.authorization_code,
+                "service_token": {
+                    "uuid": example.service_tokens[0].id,
                 },
             },
             z_side={
                 "access_point": {
-                    "type": equinix.fabric.AccessPointType.SP,
-                    "authentication_key": aws_account_id,
-                    "seller_region": "us-west-1",
-                    "profile": {
-                        "type": equinix.fabric.ProfileType.L2_PROFILE,
-                        "uuid": zside.id,
+                    "type": equinix.fabric.AccessPointType.COLO,
+                    "port": {
+                        "uuid": a_side.data[0].uuid,
                     },
-                    "location": {
-                        "metro_code": equinix.Metro.SILICON_VALLEY,
+                    "link_protocol": {
+                        "type": equinix.fabric.AccessPointLinkProtocolType.DOT1Q,
+                        "vlan_tag": 1234,
                     },
                 },
             })
@@ -965,27 +1144,26 @@ def get(resource_name: str,
         :param str resource_name: The unique name of the resulting resource.
         :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
         :param pulumi.ResourceOptions opts: Options for the resource.
-        :param pulumi.Input[str] authorization_code: Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
-        :param pulumi.Input[str] contact_email: The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
-        :param pulumi.Input[str] description: Description for the connection resource.
-        :param pulumi.Input[str] facility: Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
-        :param pulumi.Input[str] metro: Metro where the connection will be created.
-        :param pulumi.Input[str] mode: Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+        :param pulumi.Input[str] authorization_code: Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
+        :param pulumi.Input[str] contact_email: The preferred email used for communication and notifications about the Equinix Fabric interconnection
+        :param pulumi.Input[str] description: Description of the connection resource
+        :param pulumi.Input[str] facility: Facility where the connection will be created
+        :param pulumi.Input[str] metro: Metro where the connection will be created
+        :param pulumi.Input[str] mode: Mode for connections in IBX facilities with the dedicated type - standard or tunnel
         :param pulumi.Input[str] name: Name of the connection resource
-        :param pulumi.Input[str] organization_id: ID of the organization where the connection is scoped to.
-        :param pulumi.Input[Sequence[pulumi.Input[Union['InterconnectionPortArgs', 'InterconnectionPortArgsDict']]]] ports: List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the metal.Interconnection datasource.
-        :param pulumi.Input[str] project_id: ID of the project where the connection is scoped to, must be set for.
-        :param pulumi.Input[str] redundancy: Connection redundancy - redundant or primary.
-        :param pulumi.Input[str] service_token_type: Only used with shared connection. Type of service token to use for the connection, a_side or z_side
-        :param pulumi.Input[Sequence[pulumi.Input[Union['InterconnectionServiceTokenArgs', 'InterconnectionServiceTokenArgsDict']]]] service_tokens: List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the metal.Interconnection datasource.
-        :param pulumi.Input[str] speed: Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-        :param pulumi.Input[str] status: Status of the connection resource.
-        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: String list of tags.
-        :param pulumi.Input[str] token: (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
-        :param pulumi.Input[str] type: Connection type - dedicated or shared.
-        :param pulumi.Input[Sequence[pulumi.Input[int]]] vlans: Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
-        :param pulumi.Input[Sequence[pulumi.Input[str]]] vrfs: Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-               connection
+        :param pulumi.Input[str] organization_id: ID of the organization responsible for the connection. Applicable with type "dedicated"
+        :param pulumi.Input[Sequence[pulumi.Input[Union['InterconnectionPortArgs', 'InterconnectionPortArgsDict']]]] ports: List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
+        :param pulumi.Input[str] project_id: ID of the project where the connection is scoped to. Required with type "shared"
+        :param pulumi.Input[str] redundancy: Connection redundancy - redundant or primary
+        :param pulumi.Input[str] service_token_type: Only used with shared connection. Type of service token to use for the connection, a*side or z*side
+        :param pulumi.Input[Sequence[pulumi.Input[Union['InterconnectionServiceTokenArgs', 'InterconnectionServiceTokenArgsDict']]]] service_tokens: Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
+        :param pulumi.Input[str] speed: Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+        :param pulumi.Input[str] status: Status of the connection resource
+        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: Tags attached to the connection
+        :param pulumi.Input[str] token: Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
+        :param pulumi.Input[str] type: Connection type - dedicated, shared or shared*port*vlan
+        :param pulumi.Input[Sequence[pulumi.Input[int]]] vlans: Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
+        :param pulumi.Input[Sequence[pulumi.Input[str]]] vrfs: Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
         """
         opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
 
@@ -1017,7 +1195,7 @@ def get(resource_name: str,
     @pulumi.getter(name="authorizationCode")
     def authorization_code(self) -> pulumi.Output[str]:
         """
-        Fabric Authorization code to configure the Metal-Fabric Integration connection with Cloud Service Provider through Equinix Fabric with the fabric.Connection resource from the [Equinix Developer Portal](https://developer.equinix.com/dev-docs/fabric/getting-started/fabric-v4-apis/connect-metal-to-amazon-web-services).
+        Only used with Fabric Shared connection. Fabric uses this token to be able to give more detailed information about the Metal end of the network, when viewing resources from within Fabric.
         """
         return pulumi.get(self, "authorization_code")
 
@@ -1025,7 +1203,7 @@ def authorization_code(self) -> pulumi.Output[str]:
     @pulumi.getter(name="contactEmail")
     def contact_email(self) -> pulumi.Output[str]:
         """
-        The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.
+        The preferred email used for communication and notifications about the Equinix Fabric interconnection
         """
         return pulumi.get(self, "contact_email")
 
@@ -1033,7 +1211,7 @@ def contact_email(self) -> pulumi.Output[str]:
     @pulumi.getter
     def description(self) -> pulumi.Output[str]:
         """
-        Description for the connection resource.
+        Description of the connection resource
         """
         return pulumi.get(self, "description")
 
@@ -1042,7 +1220,7 @@ def description(self) -> pulumi.Output[str]:
     @_utilities.deprecated("""Use metro instead of facility. For more information, read the migration guide.""")
     def facility(self) -> pulumi.Output[str]:
         """
-        Facility where the connection will be created. Use metro instead; read the facility to metro migration guide
+        Facility where the connection will be created
         """
         return pulumi.get(self, "facility")
 
@@ -1050,7 +1228,7 @@ def facility(self) -> pulumi.Output[str]:
     @pulumi.getter
     def metro(self) -> pulumi.Output[str]:
         """
-        Metro where the connection will be created.
+        Metro where the connection will be created
         """
         return pulumi.get(self, "metro")
 
@@ -1058,7 +1236,7 @@ def metro(self) -> pulumi.Output[str]:
     @pulumi.getter
     def mode(self) -> pulumi.Output[str]:
         """
-        Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.
+        Mode for connections in IBX facilities with the dedicated type - standard or tunnel
         """
         return pulumi.get(self, "mode")
 
@@ -1074,7 +1252,7 @@ def name(self) -> pulumi.Output[str]:
     @pulumi.getter(name="organizationId")
     def organization_id(self) -> pulumi.Output[str]:
         """
-        ID of the organization where the connection is scoped to.
+        ID of the organization responsible for the connection. Applicable with type "dedicated"
         """
         return pulumi.get(self, "organization_id")
 
@@ -1082,7 +1260,7 @@ def organization_id(self) -> pulumi.Output[str]:
     @pulumi.getter
     def ports(self) -> pulumi.Output[Sequence['outputs.InterconnectionPort']]:
         """
-        List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`). Schema of port is described in documentation of the metal.Interconnection datasource.
+        List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)
         """
         return pulumi.get(self, "ports")
 
@@ -1090,7 +1268,7 @@ def ports(self) -> pulumi.Output[Sequence['outputs.InterconnectionPort']]:
     @pulumi.getter(name="projectId")
     def project_id(self) -> pulumi.Output[Optional[str]]:
         """
-        ID of the project where the connection is scoped to, must be set for.
+        ID of the project where the connection is scoped to. Required with type "shared"
         """
         return pulumi.get(self, "project_id")
 
@@ -1098,7 +1276,7 @@ def project_id(self) -> pulumi.Output[Optional[str]]:
     @pulumi.getter
     def redundancy(self) -> pulumi.Output[str]:
         """
-        Connection redundancy - redundant or primary.
+        Connection redundancy - redundant or primary
         """
         return pulumi.get(self, "redundancy")
 
@@ -1106,7 +1284,7 @@ def redundancy(self) -> pulumi.Output[str]:
     @pulumi.getter(name="serviceTokenType")
     def service_token_type(self) -> pulumi.Output[Optional[str]]:
         """
-        Only used with shared connection. Type of service token to use for the connection, a_side or z_side
+        Only used with shared connection. Type of service token to use for the connection, a*side or z*side
         """
         return pulumi.get(self, "service_token_type")
 
@@ -1114,7 +1292,7 @@ def service_token_type(self) -> pulumi.Output[Optional[str]]:
     @pulumi.getter(name="serviceTokens")
     def service_tokens(self) -> pulumi.Output[Sequence['outputs.InterconnectionServiceToken']]:
         """
-        List of connection service tokens with attributes required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). Scehma of service_token is described in documentation of the metal.Interconnection datasource.
+        Only used with shared connection. List of service tokens required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
         """
         return pulumi.get(self, "service_tokens")
 
@@ -1122,7 +1300,7 @@ def service_tokens(self) -> pulumi.Output[Sequence['outputs.InterconnectionServi
     @pulumi.getter
     def speed(self) -> pulumi.Output[str]:
         """
-        Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
+        Connection speed -  Values must be in the format '\\n\\nMbps' or '\\n\\nGpbs', for example '100Mbps' or '50Gbps'.  Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
         """
         return pulumi.get(self, "speed")
 
@@ -1130,7 +1308,7 @@ def speed(self) -> pulumi.Output[str]:
     @pulumi.getter
     def status(self) -> pulumi.Output[str]:
         """
-        Status of the connection resource.
+        Status of the connection resource
         """
         return pulumi.get(self, "status")
 
@@ -1138,7 +1316,7 @@ def status(self) -> pulumi.Output[str]:
     @pulumi.getter
     def tags(self) -> pulumi.Output[Optional[Sequence[str]]]:
         """
-        String list of tags.
+        Tags attached to the connection
         """
         return pulumi.get(self, "tags")
 
@@ -1147,7 +1325,7 @@ def tags(self) -> pulumi.Output[Optional[Sequence[str]]]:
     @_utilities.deprecated("""If your organization already has connection service tokens enabled, use `service_tokens` instead""")
     def token(self) -> pulumi.Output[str]:
         """
-        (Deprecated) Fabric Token required to configure the connection in Equinix Fabric with the fabric.Connection resource or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard). If your organization already has connection service tokens enabled, use `service_tokens` instead.
+        Only used with shared connection. Fabric Token required to continue the setup process with equinix*fabric*connection or from the [Equinix Fabric Portal](https://fabric.equinix.com/dashboard)
         """
         return pulumi.get(self, "token")
 
@@ -1155,7 +1333,7 @@ def token(self) -> pulumi.Output[str]:
     @pulumi.getter
     def type(self) -> pulumi.Output[str]:
         """
-        Connection type - dedicated or shared.
+        Connection type - dedicated, shared or shared*port*vlan
         """
         return pulumi.get(self, "type")
 
@@ -1163,7 +1341,7 @@ def type(self) -> pulumi.Output[str]:
     @pulumi.getter
     def vlans(self) -> pulumi.Output[Optional[Sequence[int]]]:
         """
-        Only used with shared connection. Vlans to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection.
+        Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection
         """
         return pulumi.get(self, "vlans")
 
@@ -1171,8 +1349,7 @@ def vlans(self) -> pulumi.Output[Optional[Sequence[int]]]:
     @pulumi.getter
     def vrfs(self) -> pulumi.Output[Optional[Sequence[str]]]:
         """
-        Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant
-        connection
+        Only used with shared connection. VRFs to attach. Pass one VRF for Primary/Single connection and two VRFs for Redundant connection
         """
         return pulumi.get(self, "vrfs")
 
diff --git a/sdk/python/pulumi_equinix/metal/outputs.py b/sdk/python/pulumi_equinix/metal/outputs.py
index d3cd29c8..f151874e 100644
--- a/sdk/python/pulumi_equinix/metal/outputs.py
+++ b/sdk/python/pulumi_equinix/metal/outputs.py
@@ -383,11 +383,6 @@ def __init__(__self__, *,
                  speed: int,
                  status: str,
                  virtual_circuit_ids: Sequence[str]):
-        """
-        :param str name: Name of the connection resource
-        :param int speed: Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-        :param str status: Status of the connection resource.
-        """
         pulumi.set(__self__, "id", id)
         pulumi.set(__self__, "link_status", link_status)
         pulumi.set(__self__, "name", name)
@@ -409,9 +404,6 @@ def link_status(self) -> str:
     @property
     @pulumi.getter
     def name(self) -> str:
-        """
-        Name of the connection resource
-        """
         return pulumi.get(self, "name")
 
     @property
@@ -422,17 +414,11 @@ def role(self) -> str:
     @property
     @pulumi.getter
     def speed(self) -> int:
-        """
-        Connection speed - Values must be in the format 'Mbps' or 'Gpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.
-        """
         return pulumi.get(self, "speed")
 
     @property
     @pulumi.getter
     def status(self) -> str:
-        """
-        Status of the connection resource.
-        """
         return pulumi.get(self, "status")
 
     @property
@@ -469,9 +455,6 @@ def __init__(__self__, *,
                  role: str,
                  state: str,
                  type: str):
-        """
-        :param str type: Connection type - dedicated or shared.
-        """
         pulumi.set(__self__, "expires_at", expires_at)
         pulumi.set(__self__, "id", id)
         pulumi.set(__self__, "max_allowed_speed", max_allowed_speed)
@@ -507,9 +490,6 @@ def state(self) -> str:
     @property
     @pulumi.getter
     def type(self) -> str:
-        """
-        Connection type - dedicated or shared.
-        """
         return pulumi.get(self, "type")
 
 
diff --git a/sdk/python/pulumi_equinix/metal/vrf.py b/sdk/python/pulumi_equinix/metal/vrf.py
index ae659e97..45c3117c 100644
--- a/sdk/python/pulumi_equinix/metal/vrf.py
+++ b/sdk/python/pulumi_equinix/metal/vrf.py
@@ -22,9 +22,9 @@ def __init__(__self__, *,
                  name: Optional[pulumi.Input[str]] = None):
         """
         The set of arguments for constructing a Vrf resource.
-        :param pulumi.Input[str] metro: Metro ID or Code where the VRF will be deployed.
-        :param pulumi.Input[str] project_id: Project ID where the VRF will be deployed.
-        :param pulumi.Input[str] description: Description of the VRF.
+        :param pulumi.Input[str] metro: Metro ID or Code where the VRF will be deployed
+        :param pulumi.Input[str] project_id: Project ID where the VRF will be deployed
+        :param pulumi.Input[str] description: Description of the VRF
         :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_ranges: All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.
         :param pulumi.Input[int] local_asn: The 4-byte ASN set on the VRF.
         :param pulumi.Input[str] name: User-supplied name of the VRF, unique to the project
@@ -44,7 +44,7 @@ def __init__(__self__, *,
     @pulumi.getter
     def metro(self) -> pulumi.Input[str]:
         """
-        Metro ID or Code where the VRF will be deployed.
+        Metro ID or Code where the VRF will be deployed
         """
         return pulumi.get(self, "metro")
 
@@ -56,7 +56,7 @@ def metro(self, value: pulumi.Input[str]):
     @pulumi.getter(name="projectId")
     def project_id(self) -> pulumi.Input[str]:
         """
-        Project ID where the VRF will be deployed.
+        Project ID where the VRF will be deployed
         """
         return pulumi.get(self, "project_id")
 
@@ -68,7 +68,7 @@ def project_id(self, value: pulumi.Input[str]):
     @pulumi.getter
     def description(self) -> Optional[pulumi.Input[str]]:
         """
-        Description of the VRF.
+        Description of the VRF
         """
         return pulumi.get(self, "description")
 
@@ -124,12 +124,12 @@ def __init__(__self__, *,
                  project_id: Optional[pulumi.Input[str]] = None):
         """
         Input properties used for looking up and filtering Vrf resources.
-        :param pulumi.Input[str] description: Description of the VRF.
+        :param pulumi.Input[str] description: Description of the VRF
         :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_ranges: All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.
         :param pulumi.Input[int] local_asn: The 4-byte ASN set on the VRF.
-        :param pulumi.Input[str] metro: Metro ID or Code where the VRF will be deployed.
+        :param pulumi.Input[str] metro: Metro ID or Code where the VRF will be deployed
         :param pulumi.Input[str] name: User-supplied name of the VRF, unique to the project
-        :param pulumi.Input[str] project_id: Project ID where the VRF will be deployed.
+        :param pulumi.Input[str] project_id: Project ID where the VRF will be deployed
         """
         if description is not None:
             pulumi.set(__self__, "description", description)
@@ -148,7 +148,7 @@ def __init__(__self__, *,
     @pulumi.getter
     def description(self) -> Optional[pulumi.Input[str]]:
         """
-        Description of the VRF.
+        Description of the VRF
         """
         return pulumi.get(self, "description")
 
@@ -184,7 +184,7 @@ def local_asn(self, value: Optional[pulumi.Input[int]]):
     @pulumi.getter
     def metro(self) -> Optional[pulumi.Input[str]]:
         """
-        Metro ID or Code where the VRF will be deployed.
+        Metro ID or Code where the VRF will be deployed
         """
         return pulumi.get(self, "metro")
 
@@ -208,7 +208,7 @@ def name(self, value: Optional[pulumi.Input[str]]):
     @pulumi.getter(name="projectId")
     def project_id(self) -> Optional[pulumi.Input[str]]:
         """
-        Project ID where the VRF will be deployed.
+        Project ID where the VRF will be deployed
         """
         return pulumi.get(self, "project_id")
 
@@ -303,12 +303,12 @@ def __init__(__self__,
 
         :param str resource_name: The name of the resource.
         :param pulumi.ResourceOptions opts: Options for the resource.
-        :param pulumi.Input[str] description: Description of the VRF.
+        :param pulumi.Input[str] description: Description of the VRF
         :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_ranges: All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.
         :param pulumi.Input[int] local_asn: The 4-byte ASN set on the VRF.
-        :param pulumi.Input[str] metro: Metro ID or Code where the VRF will be deployed.
+        :param pulumi.Input[str] metro: Metro ID or Code where the VRF will be deployed
         :param pulumi.Input[str] name: User-supplied name of the VRF, unique to the project
-        :param pulumi.Input[str] project_id: Project ID where the VRF will be deployed.
+        :param pulumi.Input[str] project_id: Project ID where the VRF will be deployed
         """
         ...
     @overload
@@ -451,12 +451,12 @@ def get(resource_name: str,
         :param str resource_name: The unique name of the resulting resource.
         :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
         :param pulumi.ResourceOptions opts: Options for the resource.
-        :param pulumi.Input[str] description: Description of the VRF.
+        :param pulumi.Input[str] description: Description of the VRF
         :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_ranges: All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.
         :param pulumi.Input[int] local_asn: The 4-byte ASN set on the VRF.
-        :param pulumi.Input[str] metro: Metro ID or Code where the VRF will be deployed.
+        :param pulumi.Input[str] metro: Metro ID or Code where the VRF will be deployed
         :param pulumi.Input[str] name: User-supplied name of the VRF, unique to the project
-        :param pulumi.Input[str] project_id: Project ID where the VRF will be deployed.
+        :param pulumi.Input[str] project_id: Project ID where the VRF will be deployed
         """
         opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
 
@@ -474,7 +474,7 @@ def get(resource_name: str,
     @pulumi.getter
     def description(self) -> pulumi.Output[Optional[str]]:
         """
-        Description of the VRF.
+        Description of the VRF
         """
         return pulumi.get(self, "description")
 
@@ -498,7 +498,7 @@ def local_asn(self) -> pulumi.Output[int]:
     @pulumi.getter
     def metro(self) -> pulumi.Output[str]:
         """
-        Metro ID or Code where the VRF will be deployed.
+        Metro ID or Code where the VRF will be deployed
         """
         return pulumi.get(self, "metro")
 
@@ -514,7 +514,7 @@ def name(self) -> pulumi.Output[str]:
     @pulumi.getter(name="projectId")
     def project_id(self) -> pulumi.Output[str]:
         """
-        Project ID where the VRF will be deployed.
+        Project ID where the VRF will be deployed
         """
         return pulumi.get(self, "project_id")
 
diff --git a/sdk/python/pulumi_equinix/networkedge/_inputs.py b/sdk/python/pulumi_equinix/networkedge/_inputs.py
index d4dd2873..0f1e0a2a 100644
--- a/sdk/python/pulumi_equinix/networkedge/_inputs.py
+++ b/sdk/python/pulumi_equinix/networkedge/_inputs.py
@@ -1912,26 +1912,15 @@ def type(self, value: Optional[pulumi.Input[str]]):
 @pulumi.input_type
 class DeviceSecondaryDeviceSshKeyArgs:
     def __init__(__self__, *,
-                 key_name: pulumi.Input[str],
-                 username: pulumi.Input[str]):
+                 username: pulumi.Input[str],
+                 key_name: Optional[pulumi.Input[str]] = None):
         """
-        :param pulumi.Input[str] key_name: Reference by name to previously provisioned public SSH key
         :param pulumi.Input[str] username: username associated with given key.
+        :param pulumi.Input[str] key_name: Reference by name to previously provisioned public SSH key
         """
-        pulumi.set(__self__, "key_name", key_name)
         pulumi.set(__self__, "username", username)
-
-    @property
-    @pulumi.getter(name="keyName")
-    def key_name(self) -> pulumi.Input[str]:
-        """
-        Reference by name to previously provisioned public SSH key
-        """
-        return pulumi.get(self, "key_name")
-
-    @key_name.setter
-    def key_name(self, value: pulumi.Input[str]):
-        pulumi.set(self, "key_name", value)
+        if key_name is not None:
+            pulumi.set(__self__, "key_name", key_name)
 
     @property
     @pulumi.getter
@@ -1945,31 +1934,32 @@ def username(self) -> pulumi.Input[str]:
     def username(self, value: pulumi.Input[str]):
         pulumi.set(self, "username", value)
 
-
-@pulumi.input_type
-class DeviceSshKeyArgs:
-    def __init__(__self__, *,
-                 key_name: pulumi.Input[str],
-                 username: pulumi.Input[str]):
-        """
-        :param pulumi.Input[str] key_name: Reference by name to previously provisioned public SSH key
-        :param pulumi.Input[str] username: username associated with given key.
-        """
-        pulumi.set(__self__, "key_name", key_name)
-        pulumi.set(__self__, "username", username)
-
     @property
     @pulumi.getter(name="keyName")
-    def key_name(self) -> pulumi.Input[str]:
+    def key_name(self) -> Optional[pulumi.Input[str]]:
         """
         Reference by name to previously provisioned public SSH key
         """
         return pulumi.get(self, "key_name")
 
     @key_name.setter
-    def key_name(self, value: pulumi.Input[str]):
+    def key_name(self, value: Optional[pulumi.Input[str]]):
         pulumi.set(self, "key_name", value)
 
+
+@pulumi.input_type
+class DeviceSshKeyArgs:
+    def __init__(__self__, *,
+                 username: pulumi.Input[str],
+                 key_name: Optional[pulumi.Input[str]] = None):
+        """
+        :param pulumi.Input[str] username: username associated with given key.
+        :param pulumi.Input[str] key_name: Reference by name to previously provisioned public SSH key
+        """
+        pulumi.set(__self__, "username", username)
+        if key_name is not None:
+            pulumi.set(__self__, "key_name", key_name)
+
     @property
     @pulumi.getter
     def username(self) -> pulumi.Input[str]:
@@ -1982,4 +1972,16 @@ def username(self) -> pulumi.Input[str]:
     def username(self, value: pulumi.Input[str]):
         pulumi.set(self, "username", value)
 
+    @property
+    @pulumi.getter(name="keyName")
+    def key_name(self) -> Optional[pulumi.Input[str]]:
+        """
+        Reference by name to previously provisioned public SSH key
+        """
+        return pulumi.get(self, "key_name")
+
+    @key_name.setter
+    def key_name(self, value: Optional[pulumi.Input[str]]):
+        pulumi.set(self, "key_name", value)
+
 
diff --git a/sdk/python/pulumi_equinix/networkedge/outputs.py b/sdk/python/pulumi_equinix/networkedge/outputs.py
index 832caff7..13a659f4 100644
--- a/sdk/python/pulumi_equinix/networkedge/outputs.py
+++ b/sdk/python/pulumi_equinix/networkedge/outputs.py
@@ -1823,22 +1823,15 @@ def get(self, key: str, default = None) -> Any:
         return super().get(key, default)
 
     def __init__(__self__, *,
-                 key_name: str,
-                 username: str):
+                 username: str,
+                 key_name: Optional[str] = None):
         """
-        :param str key_name: Reference by name to previously provisioned public SSH key
         :param str username: username associated with given key.
+        :param str key_name: Reference by name to previously provisioned public SSH key
         """
-        pulumi.set(__self__, "key_name", key_name)
         pulumi.set(__self__, "username", username)
-
-    @property
-    @pulumi.getter(name="keyName")
-    def key_name(self) -> str:
-        """
-        Reference by name to previously provisioned public SSH key
-        """
-        return pulumi.get(self, "key_name")
+        if key_name is not None:
+            pulumi.set(__self__, "key_name", key_name)
 
     @property
     @pulumi.getter
@@ -1848,6 +1841,14 @@ def username(self) -> str:
         """
         return pulumi.get(self, "username")
 
+    @property
+    @pulumi.getter(name="keyName")
+    def key_name(self) -> Optional[str]:
+        """
+        Reference by name to previously provisioned public SSH key
+        """
+        return pulumi.get(self, "key_name")
+
 
 @pulumi.output_type
 class DeviceSshKey(dict):
@@ -1869,22 +1870,15 @@ def get(self, key: str, default = None) -> Any:
         return super().get(key, default)
 
     def __init__(__self__, *,
-                 key_name: str,
-                 username: str):
+                 username: str,
+                 key_name: Optional[str] = None):
         """
-        :param str key_name: Reference by name to previously provisioned public SSH key
         :param str username: username associated with given key.
+        :param str key_name: Reference by name to previously provisioned public SSH key
         """
-        pulumi.set(__self__, "key_name", key_name)
         pulumi.set(__self__, "username", username)
-
-    @property
-    @pulumi.getter(name="keyName")
-    def key_name(self) -> str:
-        """
-        Reference by name to previously provisioned public SSH key
-        """
-        return pulumi.get(self, "key_name")
+        if key_name is not None:
+            pulumi.set(__self__, "key_name", key_name)
 
     @property
     @pulumi.getter
@@ -1894,6 +1888,14 @@ def username(self) -> str:
         """
         return pulumi.get(self, "username")
 
+    @property
+    @pulumi.getter(name="keyName")
+    def key_name(self) -> Optional[str]:
+        """
+        Reference by name to previously provisioned public SSH key
+        """
+        return pulumi.get(self, "key_name")
+
 
 @pulumi.output_type
 class GetDeviceClusterDetailResult(dict):