def update(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) yield from dynamips_manager.update_vm_settings(vm, request.json) vm.updated() response.json(vm)
async def get_auto_idlepc(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) idlepc = await dynamips_manager.auto_idlepc(vm) response.set_status(200) response.json({"idlepc": idlepc})
def delete(request, response): # check the project_id exists ProjectManager.instance().get_project(request.match_info["project_id"]) yield from Dynamips.instance().delete_node( request.match_info["node_id"]) response.set_status(204)
def stop_capture(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) yield from node.stop_capture(port_number) response.set_status(204)
async def console_ws(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node( request.match_info["node_id"], project_id=request.match_info["project_id"]) return await vm.start_websocket_console(request)
async def stop_capture(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) await node.stop_capture(port_number) response.set_status(204)
async def stream_pcap_file(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) nio = node.get_nio(port_number) await dynamips_manager.stream_pcap_file(nio, node.project.id, request, response)
def show(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node( request.match_info["node_id"], project_id=request.match_info["project_id"]) response.json(vm)
async def update(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) await dynamips_manager.update_vm_settings(vm, request.json) vm.updated() response.json(vm)
def get_auto_idlepc(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) idlepc = yield from dynamips_manager.auto_idlepc(vm) response.set_status(200) response.json({"idlepc": idlepc})
def show(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) # builtin_manager = Builtin.instance() # node = builtin_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) response.json(node)
async def delete_nio(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) nio = await node.remove_nio(port_number) await nio.delete() response.set_status(204)
async def start_capture(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) pcap_file_path = os.path.join(node.project.capture_working_directory(), request.json["capture_file_name"]) await node.start_capture(port_number, pcap_file_path, request.json["data_link_type"]) response.json({"pcap_file_path": pcap_file_path})
def start_capture(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) pcap_file_path = os.path.join(node.project.capture_working_directory(), request.json["capture_file_name"]) yield from node.start_capture(port_number, pcap_file_path, request.json["data_link_type"]) response.json({"pcap_file_path": pcap_file_path})
async def get_idlepcs(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) await vm.set_idlepc("0x0") idlepcs = await vm.get_idle_pc_prop() response.set_status(200) response.json(idlepcs)
def duplicate(request, response): new_node = yield from Dynamips.instance().duplicate_node( request.match_info["node_id"], request.json["destination_node_id"] ) response.set_status(201) response.json(new_node)
def resume(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node( request.match_info["node_id"], project_id=request.match_info["project_id"]) yield from vm.resume() response.set_status(204)
async def stop_capture(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) await vm.stop_capture(slot_number, port_number) response.set_status(204)
def delete_nio(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) nio = yield from node.remove_nio(port_number) yield from nio.delete() response.set_status(204)
async def reload(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node( request.match_info["node_id"], project_id=request.match_info["project_id"]) await vm.reload() response.set_status(204)
def get_idlepcs(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) yield from vm.set_idlepc("0x0") idlepcs = yield from vm.get_idle_pc_prop() response.set_status(200) response.json(idlepcs)
def stop_capture(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) yield from vm.stop_capture(slot_number, port_number) response.set_status(204)
async def stream_pcap_file(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) nio = vm.get_nio(slot_number, port_number) await dynamips_manager.stream_pcap_file(nio, vm.project.id, request, response)
def test_duplicate_ethernet_switch(async_run, project): with asyncio_patch('gns3server.compute.dynamips.nodes.ethernet_switch.EthernetSwitch.create'): dynamips_manager = Dynamips.instance() source_node_id = str(uuid.uuid4()) source_node = async_run(dynamips_manager.create_node("SW-1", project.id, source_node_id, node_type='ethernet_switch')) destination_node_id = str(uuid.uuid4()) destination_node = async_run(dynamips_manager.create_node("SW-2", project.id, destination_node_id, node_type='ethernet_switch')) async_run(dynamips_manager.duplicate_node(source_node_id, destination_node_id))
def stop_capture(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) #builtin_manager = Builtin.instance() #node = builtin_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) yield from node.stop_capture(port_number) response.set_status(204)
def create_nio(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) nio = yield from dynamips_manager.create_nio(node, request.json) port_number = int(request.match_info["port_number"]) yield from node.add_nio(nio, port_number) response.set_status(201) response.json(nio)
async def delete_nio(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) nio = await vm.slot_remove_nio_binding(slot_number, port_number) await nio.delete() response.set_status(204)
def delete_nio(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) nio = yield from vm.slot_remove_nio_binding(slot_number, port_number) yield from nio.delete() response.set_status(204)
async def start(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) try: await dynamips_manager.ghost_ios_support(vm) except GeneratorExit: pass await vm.start() response.set_status(204)
async def stream_pcap_file(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node( request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) nio = node.get_nio(port_number) await dynamips_manager.stream_pcap_file(nio, node.project.id, request, response)
def start(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) try: yield from dynamips_manager.ghost_ios_support(vm) except GeneratorExit: pass yield from vm.start() response.set_status(204)
def update(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) if "name" in request.json and node.name != request.json["name"]: yield from node.set_name(request.json["name"]) if "mappings" in request.json: node.mappings = request.json["mappings"] node.updated() response.json(node)
def delete_nio(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) #builtin_manager = Builtin.instance() #node = builtin_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) nio = yield from node.remove_nio(port_number) yield from nio.delete() response.set_status(204)
async def create_nio(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) nio = await dynamips_manager.create_nio(vm, request.json) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) await vm.slot_add_nio_binding(slot_number, port_number, nio) response.set_status(201) response.json(nio)
def create_nio(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) nio = yield from dynamips_manager.create_nio(vm, request.json) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) yield from vm.slot_add_nio_binding(slot_number, port_number, nio) response.set_status(201) response.json(nio)
async def stop_capture(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node( request.match_info["node_id"], project_id=request.match_info["project_id"]) #builtin_manager = Builtin.instance() #node = builtin_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) await node.stop_capture(port_number) response.set_status(204)
def download_image(request, response): filename = request.match_info["filename"] dynamips_manager = Dynamips.instance() image_path = dynamips_manager.get_abs_image_path(filename) # Raise error if user try to escape if filename[0] == ".": raise aiohttp.web.HTTPForbidden() yield from response.file(image_path)
async def create(request, response): # Use the Dynamips Frame Relay switch to simulate this node dynamips_manager = Dynamips.instance() node = await dynamips_manager.create_node(request.json.pop("name"), request.match_info["project_id"], request.json.get("node_id"), node_type="frame_relay_switch", mappings=request.json.get("mappings")) response.set_status(201) response.json(node)
async def update(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) if "name" in request.json and node.name != request.json["name"]: await node.set_name(request.json["name"]) if "ports_mapping" in request.json: node.ports_mapping = request.json["ports_mapping"] node.updated() response.json(node)
def create(request, response): # Use the Dynamips ATM switch to simulate this node dynamips_manager = Dynamips.instance() node = yield from dynamips_manager.create_node(request.json.pop("name"), request.match_info["project_id"], request.json.get("node_id"), node_type="atm_switch", mappings=request.json.get("mappings")) response.set_status(201) response.json(node)
async def download_image(request, response): filename = request.match_info["filename"] dynamips_manager = Dynamips.instance() image_path = dynamips_manager.get_abs_image_path(filename) # Raise error if user try to escape if filename[0] == ".": raise aiohttp.web.HTTPForbidden() await response.stream_file(image_path)
async def delete_nio(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node( request.match_info["node_id"], project_id=request.match_info["project_id"]) #builtin_manager = Builtin.instance() #node = builtin_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) port_number = int(request.match_info["port_number"]) nio = await node.remove_nio(port_number) await nio.delete() response.set_status(204)
def update_nio(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) nio = vm.slots[slot_number].get_nio(port_number) if "filters" in request.json and nio: nio.filters = request.json["filters"] yield from vm.slot_update_nio_binding(slot_number, port_number, nio) response.set_status(201) response.json(request.json)
async def create(request, response): # Use the Dynamips Frame Relay switch to simulate this node dynamips_manager = Dynamips.instance() node = await dynamips_manager.create_node( request.json.pop("name"), request.match_info["project_id"], request.json.get("node_id"), node_type="frame_relay_switch", mappings=request.json.get("mappings")) response.set_status(201) response.json(node)
async def update_nio(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) nio = vm.get_nio(slot_number, port_number) if "filters" in request.json: nio.filters = request.json["filters"] await vm.slot_update_nio_binding(slot_number, port_number, nio) response.set_status(201) response.json(request.json)
async def create(request, response): # Use the Dynamips Ethernet hub to simulate this node dynamips_manager = Dynamips.instance() node = await dynamips_manager.create_node(request.json.pop("name"), request.match_info["project_id"], request.json.get("node_id"), node_type="ethernet_hub", ports=request.json.get("ports_mapping")) response.set_status(201) response.json(node)
async def update(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node( request.match_info["node_id"], project_id=request.match_info["project_id"]) if "name" in request.json and node.name != request.json["name"]: await node.set_name(request.json["name"]) if "ports_mapping" in request.json: node.ports_mapping = request.json["ports_mapping"] node.updated() response.json(node)
async def create(request, response): # Use the Dynamips Ethernet hub to simulate this node dynamips_manager = Dynamips.instance() node = await dynamips_manager.create_node( request.json.pop("name"), request.match_info["project_id"], request.json.get("node_id"), node_type="ethernet_hub", ports=request.json.get("ports_mapping")) response.set_status(201) response.json(node)
async def create_nio(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) nio = await dynamips_manager.create_nio(node, request.json) port_number = int(request.match_info["port_number"]) await node.add_nio(nio, port_number) #builtin_manager = Builtin.instance() #node = builtin_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) #nio = await builtin_manager.create_nio(request.json["nio"]) response.set_status(201) response.json(nio)
def update(request, response): dynamips_manager = Dynamips.instance() node = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) if "name" in request.json and node.name != request.json["name"]: yield from node.set_name(request.json["name"]) if "ports_mapping" in request.json: node.ports_mapping = request.json["ports_mapping"] yield from node.update_port_settings() # builtin_manager = Builtin.instance() # node = builtin_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) node.updated() response.json(node)
def start_capture(request, response): dynamips_manager = Dynamips.instance() vm = dynamips_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) slot_number = int(request.match_info["adapter_number"]) port_number = int(request.match_info["port_number"]) pcap_file_path = os.path.join(vm.project.capture_working_directory(), request.json["capture_file_name"]) if sys.platform.startswith('win'): # FIXME: Dynamips (Cygwin actually) doesn't like non ascii paths on Windows try: pcap_file_path.encode('ascii') except UnicodeEncodeError: raise DynamipsError('The capture file path "{}" must only contain ASCII (English) characters'.format(pcap_file_path)) yield from vm.start_capture(slot_number, port_number, pcap_file_path, request.json["data_link_type"]) response.json({"pcap_file_path": pcap_file_path})
def create(request, response): dynamips_manager = Dynamips.instance() platform = request.json.pop("platform") default_chassis = None if platform in DEFAULT_CHASSIS: default_chassis = DEFAULT_CHASSIS[platform] vm = yield from dynamips_manager.create_node(request.json.pop("name"), request.match_info["project_id"], request.json.get("node_id"), dynamips_id=request.json.get("dynamips_id"), platform=platform, console=request.json.get("console"), aux=request.json.get("aux"), chassis=request.json.pop("chassis", default_chassis), node_type="dynamips") yield from dynamips_manager.update_vm_settings(vm, request.json) response.set_status(201) response.json(vm)
def create(request, response): # Use the Dynamips Ethernet switch to simulate this node dynamips_manager = Dynamips.instance() node = yield from dynamips_manager.create_node(request.json.pop("name"), request.match_info["project_id"], request.json.get("node_id"), node_type="ethernet_switch", ports=request.json.get("ports_mapping")) # On Linux, use the generic switch # builtin_manager = Builtin.instance() # node = yield from builtin_manager.create_node(request.json.pop("name"), # request.match_info["project_id"], # request.json.get("node_id"), # node_type="ethernet_switch") response.set_status(201) response.json(node)
def suspend(request, response): Dynamips.instance().get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) response.set_status(204)