air_sdk.endpoints.interfaces#

Stub file for interfaces endpoint type hints.

Classes#

InterfaceAttributes

Interface

Interface model representing a network interface.

InterfaceEndpointAPI

API client for interface endpoints.

Module Contents#

class air_sdk.endpoints.interfaces.InterfaceAttributes[source]#
interface_role: str | None#
scalable_unit: int | None#
class air_sdk.endpoints.interfaces.Interface[source]#

Bases: air_sdk.air_model.AirModel

Interface model representing a network interface.

id#

Unique identifier for the interface

name#

Human-readable name of the interface

created#

Timestamp when the interface was created

modified#

Timestamp when the interface was last modified

node#

Node that the interface is related to

interface_type#

Type of the interface

mac_address#

MAC address of the interface

connection#

Interface that the interface is connected to

outbound#

Whether the interface is outbound

attributes#

Attributes of the interface

id: str#
name: str#
created: datetime.datetime#
modified: datetime.datetime#
node: air_sdk.endpoints.nodes.Node#
interface_type: str#
mac_address: str#
connection: Interface | None#
outbound: bool#
attributes: InterfaceAttributes | None#
classmethod get_model_api() type[InterfaceEndpointAPI][source]#

Returns the respective AirModelAPI type for this model.

property 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 = ...,
attributes: InterfaceAttributes | 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

  • attributes – New attributes for the interface

Example

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

Delete the interface.

Example

>>> interface.delete()

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) List[Interface][source]#

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[source]#

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

Note

  • 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

property services: air_sdk.endpoints.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(
api: air_sdk.AirApi,
default_filters: dict[str, Any] | None = None,
)[source]#

Bases: air_sdk.air_model.BaseEndpointAPI[Interface]

API client for interface endpoints.

API_PATH: str#
model: type[Interface]#
create(
*,
name: str,
node: air_sdk.endpoints.nodes.Node | air_sdk.air_model.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 = ...,
attributes: InterfaceAttributes | None | dataclasses._MISSING_TYPE = ...,
) Interface#

Create a new interface.

Parameters:
  • name – Name of the interface

  • node – Node to create the interface on

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: air_sdk.endpoints.nodes.Node | air_sdk.air_model.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 = ...,
) Iterator[Interface]#

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: air_sdk.air_model.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: air_sdk.air_model.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 | air_sdk.air_model.PrimaryKey,
split_count: int,
) List[Interface][source]#

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']

Note

  • 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 | air_sdk.air_model.PrimaryKey,
) Interface[source]#

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'

Note

  • 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