air_sdk.endpoints.interfaces

View as Markdown

Stub file for interfaces endpoint type hints.

Classes

NameDescription
InterfaceLabelsNone
InterfaceInterface model representing a network interface.
InterfaceEndpointAPIAPI client for interface endpoints.

Module Contents

class air_sdk.endpoints.interfaces.InterfaceLabels
interface_role: str | None
scalable_unit: int | None
class air_sdk.endpoints.interfaces.Interface

Bases: air_sdk.air_model.AirModel

Interface model representing a network interface.

id: str

Unique identifier for the interface

name: str

Human-readable name of the interface

Timestamp when the interface was created

Timestamp when the interface was last modified

node: Node

Node that the interface is related to

interface_type: str

Type of the interface

mac_address: str

MAC address of the interface

connection: Interface | None

Interface that the interface is connected to

outbound: bool

Whether the interface is outbound

Labels of the interface

interface_role: str | None

The role of the interface

scalable_unit: int | None

The scalable unit number of the interface

get_model_api() -> type[InterfaceEndpointAPI]
model_api: InterfaceEndpointAPI
update(
*,
name: str | dataclasses._MISSING_TYPE = ...,
interface_type: Literal[DATA_PLANE_INTF, PCIE_INTF, OOB_INTF] | dataclasses._MISSING_TYPE = ...,
outbound: bool | dataclasses._MISSING_TYPE = ...,
labels: InterfaceLabels | None | dataclasses._MISSING_TYPE = ...,
interface_role: str | None | dataclasses._MISSING_TYPE = ...,
scalable_unit: int | None | dataclasses._MISSING_TYPE = ...
) -> None

Update the interface’s properties.

Parameters:

  • name – New name for the interface
  • interface_type – New type for the interface
  • outbound – New outbound status for the interface
  • labels – New labels for the interface
  • interface_role – New role for the interface
  • scalable_unit – New scalable unit for the interface

Example:

>>> interface.update(name='New Name')
delete() -> None

Delete the interface.

Example:

>>> interface.delete()
links: LinkEndpointAPI

Access the links endpoint for this interface.

Returns:

LinkEndpointAPI instance filtered for this interface’s links

Example:

>>> for link in interface.links.list():
... print(link.id)
breakout(
*,
split_count: int

Break out this interface into multiple sub-interfaces.

Parameters:

  • split_count – Number of interfaces to create from the breakout. Must be supported by the node’s split_options.

Returns:

List of created breakout interfaces

Example:

>>> interface = api.interfaces.get('interface-id')
>>> breakout_interfaces = interface.breakout(split_count=4)
>>> # Creates swp1s0, swp1s1, swp1s2, swp1s3
revert_breakout() -> Interface

Revert this breakout interface back to a single interface.

Can be called on any of the breakout interfaces - they will all be reverted and deleted except the first one (s0), which will be renamed back to the original name.

Returns:

The reverted interface

Example:

>>> interface = api.interfaces.get('interface-id') # e.g., swp1s0
>>> reverted = interface.revert_breakout() # Reverts back to swp1
  • All breakout interfaces will be deleted except the first one (s0)
  • The s0 interface will be renamed back to the original name
  • Any existing connections on the breakout interfaces are automatically removed
  • Cannot revert if any breakout interface has services attached
services: ServiceEndpointAPI

Query for the related services of the interface.

Returns:

ServiceEndpointAPI instance filtered for this interface’s services

Example:

>>> for service in interface.services.list():
... print(f'{service.name}: {service.worker_fqdn}:{service.worker_port}')
>>>
>>> # Create service on this interface
>>> service = interface.services.create(
... name='SSH', node_port=22, service_type='ssh'
... )
class air_sdk.endpoints.interfaces.InterfaceEndpointAPI

Bases: air_sdk.air_model.BaseEndpointAPI[air_sdk.endpoints.interfaces.Interface]

API client for interface endpoints.

API_PATH: str
model: type[Interface]
create(
*,
name: str,
node: Node | PrimaryKey,
interface_type: Literal[DATA_PLANE_INTF, PCIE_INTF, OOB_INTF] | dataclasses._MISSING_TYPE = ...,
mac_address: str | dataclasses._MISSING_TYPE = ...,
outbound: bool | dataclasses._MISSING_TYPE = ...,
labels: InterfaceLabels | None | dataclasses._MISSING_TYPE = ...,
interface_role: str | None | dataclasses._MISSING_TYPE = ...,
scalable_unit: int | None | dataclasses._MISSING_TYPE = ...

Create a new interface.

Parameters:

  • name – Name of the interface
  • node – Node to create the interface on
  • interface_type – Type of the interface
  • mac_address – MAC address of the interface
  • outbound – Outbound status of the interface
  • labels – Labels for the interface
  • interface_role – Role of the interface
  • scalable_unit – Scalable unit of the interface

Returns:

The created Interface instance

Example:

>>> interface = api.interfaces.create(name='eth0', node=node)
>>> interface = node.interfaces.create(name='eth0', node=node.id)
list(
*,
interface_type: Literal[DATA_PLANE_INTF, PCIE_INTF, OOB_INTF] | dataclasses._MISSING_TYPE = ...,
mac_address: str | dataclasses._MISSING_TYPE = ...,
name: str | dataclasses._MISSING_TYPE = ...,
node: Node | PrimaryKey | dataclasses._MISSING_TYPE = ...,
outbound: bool | dataclasses._MISSING_TYPE = ...,
simulation: str | dataclasses._MISSING_TYPE = ...,
limit: int | dataclasses._MISSING_TYPE = ...,
offset: int | dataclasses._MISSING_TYPE = ...,
search: str | dataclasses._MISSING_TYPE = ...,
ordering: str | dataclasses._MISSING_TYPE = ...

List all interfaces with optional filtering.

Parameters:

  • interface_type – Filter by interface type
  • mac_address – Filter by MAC address
  • name – Filter by name
  • node – Filter by node
  • outbound – Filter by outbound status
  • simulation – Filter by simulation
  • limit – Number of results to return per page
  • offset – The initial index from which to return the results
  • search – Search by name
  • ordering – Order by field

Returns:

Iterator of Interface instances

Example:

>>> # List all interfaces
>>> for interface in api.interfaces.list():
... print(interface.name)
>>> # Filter by interface type
>>> for interface in api.interfaces.list(interface_type='DATA_PLANE_INTF'):
... print(interface.name)
>>> # Search by name
>>> for interface in api.interfaces.list(search='eth0'):
... print(interface.name)
>>> # Order by name descending
>>> for interface in api.interfaces.list(ordering='-name'):
... print(interface.name)
get(pk: PrimaryKey) -> Interface

Get a specific interface by ID.

Parameters:

  • pk – The interface ID (string or UUID)

Returns:

The Interface instance

Example:

>>> interface = api.interfaces.get('interface-id')
delete(pk: PrimaryKey) -> None

Delete a specific interface by ID.

Parameters:

  • pk – The interface ID (string or UUID)

Example:

>>> api.interfaces.delete('interface-id')
breakout(
*,
interface: Interface | PrimaryKey,
split_count: int

Break out an interface into multiple sub-interfaces.

Breaks out a data plane interface into multiple sub-interfaces. For example, breaking out “swp1” with a 4-way split creates “swp1s0”, “swp1s1”, “swp1s2”, “swp1s3”.

Parameters:

  • interface – The interface to break out
  • split_count – Number of interfaces to create from the breakout. Must be supported by the node’s split_options (typically 2, 4, or 8).

Returns:

List of all created breakout interfaces

Example:

>>> interface = api.interfaces.get('interface-id')
>>> breakout_interfaces = api.interfaces.breakout( # fmt: skip
... interface=interface, split_count=4
... )
>>> print([i.name for i in breakout_interfaces])
['swp1s0', 'swp1s1', 'swp1s2', 'swp1s3']
  • Only data plane interfaces can be broken out
  • Any existing connection on the interface will be automatically removed
  • The original interface is renamed to <name>s0 and keeps its MAC address
  • New interfaces are created with allocated MAC addresses
revert_breakout(
*,
interface: Interface | PrimaryKey

Revert a broken out interface back to a single interface.

Reverts broken out interfaces back to a single interface. For example, reverting “swp1s0” (along with “swp1s1”, “swp1s2”, “swp1s3”) back to “swp1”. This can be called on any of the breakout interfaces.

Parameters:

  • interface – One of the breakout interfaces (e.g., swp1s0, swp1s1, etc.)

Returns:

The reverted interface with its original name

Example:

>>> interface = api.interfaces.get('interface-id') # e.g., swp1s2
>>> reverted = api.interfaces.revert_breakout(interface=interface)
>>> print(reverted.name)
'swp1'
  • All breakout interfaces will be deleted except the first one (s0)
  • The s0 interface will be renamed back to the original name
  • Any existing connections on the breakout interfaces are automatically removed
  • Cannot revert if any breakout interface has services attached