Working with ZTP Scripts#
Author: Sam Eure
April 4, 2025
Basic info#
Simulation instances have a ztp_script property which accesses any ZTPScript associated with the simulation.
[ ]:
from air_sdk import AirApi
from air_sdk.endpoints import Simulation, ZTPScript
api = AirApi.with_ngc_config()
# Or use SAK directly
# api = AirApi.with_api_key(api_key='nvapi-xyz')
sim_without_ztp_script: Simulation = api.simulations.get(
...
) # replace with actual sim id
assert sim_without_ztp_script.ztp_script is None
sim_with_ztp_script: Simulation = api.simulations.get(...) # replace with actual sim id
ztp_script: ZTPScript = sim_with_ztp_script.ztp_script
assert ztp_script.content is not None
Adding ZTP Scripts during import#
[1]:
from air_sdk import AirApi
from air_sdk.endpoints import Simulation, ZTPScript
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#
[3]:
from air_sdk import AirApi
from air_sdk.endpoints import Simulation, ZTPScript
sim: Simulation = api.simulations.create(name='Blank Sim')
assert sim.ztp_script is None
ztp_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#
[ ]:
from air_sdk import AirApi
from air_sdk.endpoints import Simulation, ZTPScript
sim_id = ... # Replace with your simulation ID
sim_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 content
sim_with_ztp_script.ztp_script.update(content=ztp_script_content)
Deleting a ZTP Script from a simulation#
[9]:
from air_sdk import AirApi
from air_sdk.endpoints import Simulation, ZTPScript
sim_id = ... # Replace with your simulation ID
sim_with_ztp_script: Simulation = api.simulations.get(sim_id)
ztp_script: ZTPScript = sim_with_ztp_script.ztp_script
ztp_script.delete()
assert sim_with_ztp_script.ztp_script is None