Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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})
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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})
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
    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})
Exemplo n.º 14
0
    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})
Exemplo n.º 15
0
    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)
Exemplo n.º 16
0
    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)
Exemplo n.º 17
0
    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)
Exemplo n.º 18
0
    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)
Exemplo n.º 19
0
    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)
Exemplo n.º 20
0
    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)
Exemplo n.º 21
0
    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)
Exemplo n.º 22
0
    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)
Exemplo n.º 23
0
    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)
Exemplo n.º 24
0
    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)
Exemplo n.º 25
0
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))
Exemplo n.º 26
0
    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)
Exemplo n.º 27
0
    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)
Exemplo n.º 28
0
    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)
Exemplo n.º 29
0
    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)
Exemplo n.º 30
0
    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)
Exemplo n.º 31
0
    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)
Exemplo n.º 32
0
    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)
Exemplo n.º 33
0
    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)
Exemplo n.º 34
0
    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)
Exemplo n.º 35
0
    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)
Exemplo n.º 36
0
    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)
Exemplo n.º 37
0
    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)
Exemplo n.º 38
0
    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)
Exemplo n.º 39
0
    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)
Exemplo n.º 40
0
    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)
Exemplo n.º 41
0
    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)
Exemplo n.º 42
0
    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)
Exemplo n.º 43
0
    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)
Exemplo n.º 44
0
    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)
Exemplo n.º 45
0
    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)
Exemplo n.º 46
0
    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)
Exemplo n.º 47
0
    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)
Exemplo n.º 48
0
    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)
Exemplo n.º 49
0
    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)
Exemplo n.º 50
0
    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)
Exemplo n.º 51
0
    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)
Exemplo n.º 52
0
    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)
Exemplo n.º 53
0
    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)
Exemplo n.º 54
0
    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)
Exemplo n.º 55
0
    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})
Exemplo n.º 56
0
    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)
Exemplo n.º 57
0
    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)
Exemplo n.º 58
0
    def suspend(request, response):

        Dynamips.instance().get_node(request.match_info["node_id"], project_id=request.match_info["project_id"])
        response.set_status(204)