Working with ZTP Scripts
# Imports (run once)from air_sdk import AirApifrom air_sdk.endpoints import Simulation, ZTPScript
# 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
Basic info
Simulation instances have a ztp_script property which accesses any ZTPScript associated with the simulation.
sim_without_ztp_script: Simulation = api.simulations.get('...') # replace with actual sim idassert sim_without_ztp_script.ztp_script is Nonesim_with_ztp_script: Simulation = api.simulations.get('...') # replace with actual sim idztp_script = sim_with_ztp_script.ztp_scriptassert ztp_script is not Noneassert ztp_script.content is not None
Adding ZTP Scripts during import
ztp_script_path = '../files/ztp/basic_script.sh'with open(ztp_script_path, 'r') as f:ztp_script_content = 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_content,}sim: Simulation = api.simulations.import_from_data(**json_data)assert isinstance(sim.ztp_script, ZTPScript)assert sim.ztp_script.content == ztp_script_content
Adding ZTP Scripts after creation
sim: Simulation = api.simulations.create(name='Blank Sim')assert sim.ztp_script is Noneztp_script_path = '../files/ztp/basic_script.sh'with open(ztp_script_path, 'r') as f:ztp_script_content = f.read()sim.create_ztp_script(content=ztp_script_content)assert isinstance(sim.ztp_script, ZTPScript)assert sim.ztp_script.content == ztp_script_content
Updating ZTP Script content
sim_id = '...' # Replace with your simulation IDsim_with_ztp_script: Simulation = api.simulations.get(sim_id)assert isinstance(sim_with_ztp_script.ztp_script, ZTPScript)ztp_script_path = '../files/ztp/basic_script.sh'with open(ztp_script_path, 'r') as f:ztp_script_content = f.read() # New contentsim_with_ztp_script.ztp_script.update(content=ztp_script_content)
Deleting a ZTP Script from a simulation
sim_id = '...' # Replace with your simulation IDsim_with_ztp_script: Simulation = api.simulations.get(sim_id)ztp_script = sim_with_ztp_script.ztp_scriptassert ztp_script is not Noneztp_script.delete()assert sim_with_ztp_script.ztp_script is None