Import and Export functionality#

  • Author: Sam Eure

  • April 4, 2025

[ ]:
# Imports (run once)
import json

from air_sdk import AirApi
from air_sdk.endpoints import Simulation
[ ]:
# Authentication (run once)
api = AirApi.with_ngc_config()
# OR api = AirApi.with_api_key(api_key="...")
# OR api = AirApi.with_device_login(email="...", org_num="...")
#    ^ use in terminal only — not supported in Jupyter notebooks

Import#

Import a simulation from a JSON simulation manifest file#

[ ]:
file_path = '../files/exports/export_without_oob.json'
sim: Simulation = api.simulations.import_from_simulation_manifest(
    simulation_manifest=file_path
)

print(f'Current state of simulation: {sim.state}')
print('waiting for simulation to finish importing...', end='')
sim.wait_for_state('INACTIVE', error_states='INVALID')
print(f'Current state of simulation: {sim.state}')
Current state of simulation: IMPORTING
waiting for simulation to finish importing....
Current state of simulation: INACTIVE

Import from data#

[ ]:
ztp_script_path = '../files/ztp/basic_script.sh'
with open(ztp_script_path, 'r') as f:
    ztp_script = f.read()

json_data = {
    'format': 'JSON',
    'name': 'JSON Sim',
    'content': {
        'nodes': {
            'node1': {
                'cpu': 2,
                'memory': 1024,
                'storage': 10,
                'os': 'generic/ubuntu2204',
                'cpu_arch': 'x86',
            },
        },
        'oob': False,
    },
    'ztp': ztp_script,
}

sim: Simulation = api.simulations.import_from_data(**json_data)

print(f'Current state of simulation: {sim.state}')
print('waiting for simulation to finish importing...')
sim.wait_for_state('INACTIVE', error_states='INVALID')
print(f'Current state of simulation: {sim.state}')
Current state of simulation: IMPORTING
waiting for simulation to finish importing....
Current state of simulation: INACTIVE

Export#

Export an existing simulation#

[ ]:
sim_id = '...'  # Replace with your simulation ID
sim: Simulation = api.simulations.get(sim_id)

export_data = sim.export()

with open('my_export.json', 'w') as f:
    json.dump(export_data, f)