Import and Export functionality
# Imports (run once)import jsonfrom air_sdk import AirApi, SimStatefrom 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(SimState.INACTIVE, error_states=SimState.INVALID)print(f'Current state of simulation: {sim.state}')
Current state of simulation: IMPORTINGwaiting 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(SimState.INACTIVE, error_states=SimState.INVALID)print(f'Current state of simulation: {sim.state}')
Current state of simulation: IMPORTINGwaiting for simulation to finish importing....Current state of simulation: INACTIVE
Export
Export an existing simulation
sim_id = '...' # Replace with your simulation IDsim: Simulation = api.simulations.get(sim_id)export_data = sim.export()with open('my_export.json', 'w') as f:json.dump(export_data, f)