@@ -187,6 +187,47 @@ class LinodeInterfaceVLANOptions(JSONObject):
187187 ipam_address : Optional [str ] = None
188188
189189
190+ @dataclass
191+ class LinodeInterfaceRDMAVPCIPv4AddressOptions (JSONObject ):
192+ """
193+ Options accepted for a single address when creating or updating the IPv4
194+ configuration of an RDMA VPC Linode Interface.
195+
196+ Only one address is supported per RDMA VPC interface, and it must be
197+ marked as primary.
198+ """
199+
200+ address : Optional [str ] = None
201+ primary : Optional [bool ] = None
202+
203+
204+ @dataclass
205+ class LinodeInterfaceRDMAVPCIPv4Options (JSONObject ):
206+ """
207+ Options accepted when creating or updating the IPv4 configuration of an
208+ RDMA VPC Linode Interface.
209+
210+ The ``addresses`` list MUST contain exactly one element. If omitted, the
211+ API defaults to a single primary ``auto`` address.
212+ """
213+
214+ addresses : Optional [List [LinodeInterfaceRDMAVPCIPv4AddressOptions ]] = None
215+
216+
217+ @dataclass
218+ class LinodeInterfaceRDMAVPCOptions (JSONObject ):
219+ """
220+ RDMA-VPC-exclusive options accepted when creating or updating a Linode
221+ Interface.
222+
223+ Used for GPUDirect RDMA interfaces. Default routes and NAT 1:1 addresses
224+ are not supported on RDMA VPC interfaces.
225+ """
226+
227+ subnet_id : int = 0
228+ ipv4 : Optional [LinodeInterfaceRDMAVPCIPv4Options ] = None
229+
230+
190231@dataclass
191232class LinodeInterfaceOptions (JSONObject ):
192233 """
@@ -204,6 +245,7 @@ class LinodeInterfaceOptions(JSONObject):
204245 vpc : Optional [LinodeInterfaceVPCOptions ] = None
205246 public : Optional [LinodeInterfacePublicOptions ] = None
206247 vlan : Optional [LinodeInterfaceVLANOptions ] = None
248+ rdma_vpc : Optional [LinodeInterfaceRDMAVPCOptions ] = None
207249
208250
209251# Interface GET Response
@@ -409,6 +451,45 @@ class LinodeInterfaceVLAN(JSONObject):
409451 ipam_address : Optional [str ] = None
410452
411453
454+ @dataclass
455+ class LinodeInterfaceRDMAVPCIPv4Address (JSONObject ):
456+ """
457+ A single address under the IPv4 configuration of an RDMA VPC Linode Interface.
458+ """
459+
460+ put_class = LinodeInterfaceRDMAVPCIPv4AddressOptions
461+
462+ address : str = ""
463+ primary : bool = False
464+
465+
466+ @dataclass
467+ class LinodeInterfaceRDMAVPCIPv4 (JSONObject ):
468+ """
469+ The IPv4 configuration of an RDMA VPC Linode Interface.
470+ """
471+
472+ put_class = LinodeInterfaceRDMAVPCIPv4Options
473+
474+ addresses : List [LinodeInterfaceRDMAVPCIPv4Address ] = field (
475+ default_factory = list
476+ )
477+
478+
479+ @dataclass
480+ class LinodeInterfaceRDMAVPC (JSONObject ):
481+ """
482+ RDMA VPC-specific configuration field for a Linode Interface.
483+ """
484+
485+ put_class = LinodeInterfaceRDMAVPCOptions
486+
487+ vpc_id : int = 0
488+ subnet_id : int = 0
489+
490+ ipv4 : Optional [LinodeInterfaceRDMAVPCIPv4 ] = None
491+
492+
412493class LinodeInterface (DerivedBase ):
413494 """
414495 A Linode's network interface.
@@ -449,6 +530,7 @@ class LinodeInterface(DerivedBase):
449530 "public" : Property (mutable = True , json_object = LinodeInterfacePublic ),
450531 "vlan" : Property (mutable = True , json_object = LinodeInterfaceVLAN ),
451532 "vpc" : Property (mutable = True , json_object = LinodeInterfaceVPC ),
533+ "rdma_vpc" : Property (mutable = True , json_object = LinodeInterfaceRDMAVPC ),
452534 }
453535
454536 def firewalls (self , * filters ) -> List [Firewall ]:
0 commit comments