Nodes
CREATE
We can create new nodes for a simulation by using the api.nodes.create method:
from air_sdk import AirApifrom air_sdk.endpoints.nodes import Nodefrom air_sdk.endpoints.simulations import Simulationapi = AirApi.with_ngc_config()# Or use SAK directly# api = AirApi.with_api_key(api_key='nvapi-xyz')sim: Simulation = api.simulations.create(name='Blank Simulation')ubuntu_2204 = next(api.images.list(search='generic/ubuntu2204'))node: Node = api.nodes.create(simulation=sim,image=ubuntu_2204,name='ubuntu-server',console_username='ubuntu',console_password='nvidia',)node.dict()
{'id': 'ab51b7fa-a0a7-4969-ba48-e49c7302c3d5','created': datetime.datetime(2025, 5, 5, 19, 27, 12, 522911, tzinfo=datetime.timezone.utc),'modified': datetime.datetime(2025, 5, 5, 19, 27, 12, 522921, tzinfo=datetime.timezone.utc),'name': 'ubuntu-server','simulation': '75dd1ce1-7927-46e1-a84c-07ec00661884','image': 'f42d97f1-e217-470a-b63b-59368ef18ec9','state': 'READY','category': 'SERVER','split_options': None,'cpu': 1,'memory': 1024,'storage': 10,'pos_x': 0,'pos_y': 0,'console_username': 'ubuntu','console_password': 'nvidia'}
Nodes can also be created off of an existing Simulation instance:
from air_sdk.endpoints.nodes import Nodefrom air_sdk.endpoints.simulations import Simulationsim: Simulation = api.simulations.create(name='Blank Simulation')ubuntu_2204 = next(api.images.list(search='generic/ubuntu2204'))# You do not have to specify `simulation=sim` in the payload when using this method.node: Node = sim.nodes.create(name='new-node', image=ubuntu_2204)node.dict()
{'id': 'fe4ba46d-1142-4a1c-a9f1-86b453272c1c','created': datetime.datetime(2025, 5, 5, 19, 27, 14, 536811, tzinfo=datetime.timezone.utc),'modified': datetime.datetime(2025, 5, 5, 19, 27, 14, 536820, tzinfo=datetime.timezone.utc),'name': 'new-node','simulation': '75dd1ce1-7927-46e1-a84c-07ec00661884','image': 'f42d97f1-e217-470a-b63b-59368ef18ec9','state': 'READY','category': 'SERVER','split_options': None,'cpu': 1,'memory': 1024,'storage': 10,'pos_x': 0,'pos_y': 0,'console_username': '','console_password': ''}
GET
How to list, filter, order, and search for nodes of a simulation.
from air_sdk.endpoints.images import Imagefrom air_sdk.endpoints.simulations import Simulationubuntu_2204: Image = next(api.images.list(search='generic/ubuntu2204'))cumulus_5_6_0: Image = next(api.images.list(search='cumulus-vx-5.6.0'))sim: Simulation = api.simulations.create(name='Blank Simulation')
# Create nodes with various specificationssim.nodes.create(name='ubuntu-1', image=ubuntu_2204)sim.nodes.create(name='ubuntu-2', image=ubuntu_2204)sim.nodes.create(name='ubuntu-12', image=ubuntu_2204)sim.nodes.create(name='special-node', image=ubuntu_2204)sim.nodes.create(name='node14', image=cumulus_5_6_0)sim.nodes.create(name='node15', image=cumulus_5_6_0)sim.nodes.create(name='node16', image=cumulus_5_6_0)for node in sim.nodes.list():print(node)
Node(id='42917bde-000a-4209-a20b-59db0c15b1a1', name='ubuntu-1')Node(id='552b72bd-e4c5-4226-b50e-0e763c7890b8', name='ubuntu-2')Node(id='c2903bfe-fa0b-43ec-ae75-7faf80f1f049', name='ubuntu-12')Node(id='7f6772aa-76ef-4012-a2e0-e6d30ceb78a4', name='special-node')Node(id='f61db084-99da-4928-bdb3-7bbd5950416e', name='node14')Node(id='1a77d4bd-f533-48a7-a169-1415d52d8d91', name='node15')Node(id='4abe2036-b4d1-438e-ad3b-9c236fd32e47', name='node16')
Order nodes by specific fields
for node in sim.nodes.list(ordering='name'):print(node.name)
node14node15node16special-nodeubuntu-1ubuntu-12ubuntu-2
Search for nodes by name
for node in sim.nodes.list(search='node'):print(node.name)
node14node15node16
Filter node by specific properties
for node in sim.nodes.list(image=cumulus_5_6_0):print(node.name, node.image.name)
node14 cumulus-vx-5.6.0node15 cumulus-vx-5.6.0node16 cumulus-vx-5.6.0
This can be used to obtain a specific node by name
list(sim.nodes.list(name='special-node'))
[Node(id='7f6772aa-76ef-4012-a2e0-e6d30ceb78a4', name='special-node')]