Exemple #1
0
def test_get_relative_image_path(qemu, tmpdir, config):
    os.makedirs(str(tmpdir / "images1" / "QEMU"))
    os.makedirs(str(tmpdir / "images1" / "VBOX"))
    path1 = force_unix_path(str(tmpdir / "images1" / "test1.bin"))
    open(path1, 'w+').close()

    path2 = force_unix_path(str(tmpdir / "images1" / "QEMU" / "test2.bin"))
    open(path2, 'w+').close()

    os.makedirs(str(tmpdir / "images2"))
    path3 = force_unix_path(str(tmpdir / "images2" / "test3.bin"))
    open(path3, 'w+').close()

    path4 = force_unix_path(str(tmpdir / "test4.bin"))
    open(path4, 'w+').close()

    # The user use an image of another emulator we return the full path
    path5 = force_unix_path(str(tmpdir / "images1" / "VBOX" / "test5.bin"))
    open(path5, 'w+').close()

    config.set_section_config("Server", {
        "images_path": str(tmpdir / "images1"),
        "additional_images_path": str(tmpdir / "images2"),
        "local": True
    })
    assert qemu.get_relative_image_path(path1) == "test1.bin"
    assert qemu.get_relative_image_path("test1.bin") == "test1.bin"
    assert qemu.get_relative_image_path(path2) == "test2.bin"
    assert qemu.get_relative_image_path("test2.bin") == "test2.bin"
    assert qemu.get_relative_image_path("../test1.bin") == "test1.bin"
    assert qemu.get_relative_image_path("test3.bin") == "test3.bin"
    assert qemu.get_relative_image_path(path4) == path4
    assert qemu.get_relative_image_path(path5) == path5
Exemple #2
0
def test_get_abs_image_additional_image_paths(qemu, tmpdir, config):

    path1 = tmpdir / "images1" / "QEMU" / "test1.bin"
    path1.write("1", ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "images2" / "test2.bin"
    path2.write("1", ensure=True)
    path2 = force_unix_path(str(path2))

    config.set_section_config(
        "Server", {
            "images_path":
            str(tmpdir / "images1"),
            "additional_images_path":
            "/tmp/null24564;{}".format(str(tmpdir / "images2")),
            "local":
            False
        })

    assert qemu.get_abs_image_path("test1.bin") == path1
    assert qemu.get_abs_image_path("test2.bin") == path2
    # Absolute path
    assert qemu.get_abs_image_path(str(path2)) == path2

    with pytest.raises(ImageMissingError):
        qemu.get_abs_image_path("test4.bin")
def test_images_directories(tmpdir):

    path1 = tmpdir / "images1" / "QEMU" / "test1.bin"
    path1.write("1", ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "images2" / "test2.bin"
    path2.write("1", ensure=True)
    path2 = force_unix_path(str(path2))

    with patch("gns3server.config.Config.get_section_config",
               return_value={
                   "images_path":
                   str(tmpdir / "images1"),
                   "additional_images_path":
                   "/tmp/null24564;{}".format(tmpdir / "images2"),
                   "local":
                   False
               }):

        # /tmp/null24564 is ignored because doesn't exists
        res = images_directories("qemu")
        assert res[0] == force_unix_path(str(tmpdir / "images1" / "QEMU"))
        assert res[1] == force_unix_path(str(tmpdir / "images2"))
        assert res[2] == force_unix_path(str(tmpdir / "images1"))
        assert len(res) == 3
def test_get_abs_image_path_non_local(qemu, tmpdir):
    path1 = tmpdir / "images" / "QEMU" / "test1.bin"
    path1.write("1", ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "private" / "QEMU" / "test2.bin"
    path2.write("1", ensure=True)
    path2 = force_unix_path(str(path2))

    # If non local we can't use path outside images directory
    with patch("gns3server.config.Config.get_section_config",
               return_value={
                   "images_path": str(tmpdir / "images"),
                   "local": False
               }):
        assert qemu.get_abs_image_path(path1) == path1
        with pytest.raises(VMError):
            qemu.get_abs_image_path(path2)
        with pytest.raises(VMError):
            qemu.get_abs_image_path("C:\\test2.bin")

    with patch("gns3server.config.Config.get_section_config",
               return_value={
                   "images_path": str(tmpdir / "images"),
                   "local": True
               }):
        assert qemu.get_abs_image_path(path2) == path2
Exemple #5
0
def test_get_abs_image_path_non_local(qemu, tmpdir, config):

    path1 = tmpdir / "images" / "QEMU" / "test1.bin"
    path1.write("1", ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "private" / "QEMU" / "test2.bin"
    path2.write("1", ensure=True)
    path2 = force_unix_path(str(path2))

    # If non local we can't use path outside images directory
    config.set_section_config("Server", {
        "images_path": str(tmpdir / "images"),
        "local": False
    })
    assert qemu.get_abs_image_path(path1) == path1
    with pytest.raises(NodeError):
        qemu.get_abs_image_path(path2)
    with pytest.raises(NodeError):
        qemu.get_abs_image_path("C:\\test2.bin")

    config.set_section_config("Server", {
        "images_path": str(tmpdir / "images"),
        "local": True
    })
    assert qemu.get_abs_image_path(path2) == path2
def test_hdd_disk_image(vm, tmpdir):

    vm.manager.config.set("Server", "images_path", str(tmpdir))

    vm.hdd_disk_image = str(tmpdir / "test")
    assert vm.hdd_disk_image == force_unix_path(str(tmpdir / "test"))
    vm.hdd_disk_image = "test"
    assert vm.hdd_disk_image == force_unix_path(str(tmpdir / "QEMU" / "test"))
Exemple #7
0
def test_initrd(vm, images_dir):

    open(os.path.join(images_dir, "test1"), "w+").close()
    vm.initrd = os.path.join(images_dir, "test1")
    assert vm.initrd == force_unix_path(os.path.join(images_dir, "test1"))
    open(os.path.join(images_dir, "QEMU", "test2"), "w+").close()
    vm.initrd = "test2"
    assert vm.initrd == force_unix_path(os.path.join(images_dir, "QEMU", "test2"))
Exemple #8
0
def test_hdd_disk_image(vm, images_dir):

    open(os.path.join(images_dir, "test1"), "w+").close()
    vm.hdd_disk_image = os.path.join(images_dir, "test1")
    assert vm.hdd_disk_image == force_unix_path(os.path.join(images_dir, "test1"))
    open(os.path.join(images_dir, "QEMU", "test2"), "w+").close()
    vm.hdd_disk_image = "test2"
    assert vm.hdd_disk_image == force_unix_path(os.path.join(images_dir, "QEMU", "test2"))
Exemple #9
0
def test_hdd_disk_image(vm, images_dir):

    open(os.path.join(images_dir, "test1"), "w+").close()
    vm.hdd_disk_image = os.path.join(images_dir, "test1")
    assert vm.hdd_disk_image == force_unix_path(os.path.join(images_dir, "test1"))
    open(os.path.join(images_dir, "QEMU", "test2"), "w+").close()
    vm.hdd_disk_image = "test2"
    assert vm.hdd_disk_image == force_unix_path(os.path.join(images_dir, "QEMU", "test2"))
Exemple #10
0
def test_initrd(vm, images_dir):

    open(os.path.join(images_dir, "test1"), "w+").close()
    vm.initrd = os.path.join(images_dir, "test1")
    assert vm.initrd == force_unix_path(os.path.join(images_dir, "test1"))
    open(os.path.join(images_dir, "QEMU", "test2"), "w+").close()
    vm.initrd = "test2"
    assert vm.initrd == force_unix_path(os.path.join(images_dir, "QEMU", "test2"))
Exemple #11
0
def test_hdd_disk_image(vm, tmpdir):

    vm.manager.config.set("Server", "images_path", str(tmpdir))

    vm.hdd_disk_image = str(tmpdir / "test")
    assert vm.hdd_disk_image == force_unix_path(str(tmpdir / "test"))
    vm.hdd_disk_image = "test"
    assert vm.hdd_disk_image == force_unix_path(str(tmpdir / "QEMU" / "test"))
Exemple #12
0
def test_initrd(vm, tmpdir):

    vm.manager.config.set("Server", "images_path", str(tmpdir))

    with patch("gns3server.modules.project.Project.emit") as mock:
        vm.initrd = str(tmpdir / "test")
        assert vm.initrd == force_unix_path(str(tmpdir / "test"))
        vm.initrd = "test"
        assert vm.initrd == force_unix_path(str(tmpdir / "QEMU" / "test"))
        assert not mock.called
def test_initrd_asa(vm, tmpdir):

    vm.manager.config.set("Server", "images_path", str(tmpdir))

    with patch("gns3server.modules.project.Project.emit") as mock:
        vm.initrd = str(tmpdir / "asa842-initrd.gz")
        assert vm.initrd == force_unix_path(str(tmpdir / "asa842-initrd.gz"))
        vm.initrd = "asa842-initrd.gz"
        assert vm.initrd == force_unix_path(str(tmpdir / "QEMU" / "asa842-initrd.gz"))
        assert mock.called
Exemple #14
0
def test_get_abs_image_path(qemu, tmpdir, config):
    os.makedirs(str(tmpdir / "QEMU"))
    path1 = force_unix_path(str(tmpdir / "test1.bin"))
    open(path1, 'w+').close()

    path2 = force_unix_path(str(tmpdir / "QEMU" / "test2.bin"))
    open(path2, 'w+').close()

    config.set_section_config("Server", {"images_path": str(tmpdir)})
    assert qemu.get_abs_image_path(path1) == path1
    assert qemu.get_abs_image_path("test1.bin") == path1
    assert qemu.get_abs_image_path(path2) == path2
    assert qemu.get_abs_image_path("test2.bin") == path2
    assert qemu.get_abs_image_path("../test1.bin") == path1
Exemple #15
0
def test_get_abs_image_path(qemu, tmpdir):
    os.makedirs(str(tmpdir / "QEMU"))
    path1 = force_unix_path(str(tmpdir / "test1.bin"))
    open(path1, 'w+').close()

    path2 = force_unix_path(str(tmpdir / "QEMU" / "test2.bin"))
    open(path2, 'w+').close()

    with patch("gns3server.config.Config.get_section_config", return_value={"images_path": str(tmpdir)}):
        assert qemu.get_abs_image_path(path1) == path1
        assert qemu.get_abs_image_path("test1.bin") == path1
        assert qemu.get_abs_image_path(path2) == path2
        assert qemu.get_abs_image_path("test2.bin") == path2
        assert qemu.get_abs_image_path("../test1.bin") == path1
def test_get_abs_image_path(qemu, tmpdir):
    os.makedirs(str(tmpdir / "QEMU"))
    path1 = force_unix_path(str(tmpdir / "test1.bin"))
    open(path1, 'w+').close()

    path2 = force_unix_path(str(tmpdir / "QEMU" / "test2.bin"))
    open(path2, 'w+').close()

    with patch("gns3server.config.Config.get_section_config",
               return_value={"images_path": str(tmpdir)}):
        assert qemu.get_abs_image_path(path1) == path1
        assert qemu.get_abs_image_path("test1.bin") == path1
        assert qemu.get_abs_image_path(path2) == path2
        assert qemu.get_abs_image_path("test2.bin") == path2
        assert qemu.get_abs_image_path("../test1.bin") == path1
Exemple #17
0
def test_initrd_asa(vm, images_dir):

    with patch("gns3server.compute.project.Project.emit") as mock:
        open(os.path.join(images_dir, "asa842-initrd.gz"), "w+").close()
        vm.initrd = os.path.join(images_dir, "asa842-initrd.gz")
        assert vm.initrd == force_unix_path(os.path.join(images_dir, "asa842-initrd.gz"))
        assert mock.called
def test_list_images_recursives(loop, qemu, tmpdir):

    fake_images = ["a.qcow2", "b.qcow2", ".blu.qcow2", "a.qcow2.md5sum"]
    for image in fake_images:
        with open(str(tmpdir / image), "w+") as f:
            f.write("1")
    os.makedirs(str(tmpdir / "c"))
    fake_images = ["c.qcow2", "c.qcow2.md5sum"]
    for image in fake_images:
        with open(str(tmpdir / "c" / image), "w+") as f:
            f.write("1")

    with patch("gns3server.utils.images.default_images_directory",
               return_value=str(tmpdir)):

        assert loop.run_until_complete(qemu.list_images()) == [{
            "filename": "a.qcow2",
            "path": "a.qcow2",
            "md5sum": "c4ca4238a0b923820dcc509a6f75849b",
            "filesize": 1
        }, {
            "filename": "b.qcow2",
            "path": "b.qcow2",
            "md5sum": "c4ca4238a0b923820dcc509a6f75849b",
            "filesize": 1
        }, {
            "filename":
            "c.qcow2",
            "path":
            force_unix_path(os.path.sep.join(["c", "c.qcow2"])),
            "md5sum":
            "c4ca4238a0b923820dcc509a6f75849b",
            "filesize":
            1
        }]
Exemple #19
0
    def post_file(request, response):

        project = yield from Controller.instance().get_loaded_project(
            request.match_info["project_id"])
        node = project.get_node(request.match_info["node_id"])
        path = request.match_info["path"]
        path = force_unix_path(path)

        # Raise error if user try to escape
        if path[0] == ".":
            raise aiohttp.web.HTTPForbidden()

        node_type = node.node_type
        path = "/project-files/{}/{}/{}".format(node_type, node.id, path)

        data = yield from request.content.read()

        yield from node.compute.http_query(
            "POST",
            "/projects/{project_id}/files{path}".format(project_id=project.id,
                                                        path=path),
            data=data,
            timeout=None,
            raw=True)
        response.set_status(201)
Exemple #20
0
def test_initrd_asa(vm, images_dir):

    with patch("gns3server.compute.project.Project.emit") as mock:
        open(os.path.join(images_dir, "asa842-initrd.gz"), "w+").close()
        vm.initrd = os.path.join(images_dir, "asa842-initrd.gz")
        assert vm.initrd == force_unix_path(os.path.join(images_dir, "asa842-initrd.gz"))
        assert mock.called
Exemple #21
0
    async def get_file(request, response):

        project = await Controller.instance().get_loaded_project(
            request.match_info["project_id"])
        node = project.get_node(request.match_info["node_id"])
        path = request.match_info["path"]
        path = force_unix_path(path)

        # Raise error if user try to escape
        if path[0] == ".":
            raise aiohttp.web.HTTPForbidden()

        node_type = node.node_type
        path = "/project-files/{}/{}/{}".format(node_type, node.id, path)

        res = await node.compute.http_query(
            "GET",
            "/projects/{project_id}/files{path}".format(project_id=project.id,
                                                        path=path),
            timeout=None,
            raw=True)
        response.set_status(200)
        response.content_type = "application/octet-stream"
        response.enable_chunked_encoding()
        await response.prepare(request)
        await response.write(res.body)
Exemple #22
0
def test_get_abs_image_recursive_ova(qemu, tmpdir, config):
    path1 = tmpdir / "images1" / "QEMU" / "demo" / "test.ova" / "test1.bin"
    path1.write("1", ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "images1" / "QEMU" / "test.ova" / "test2.bin"
    path2.write("1", ensure=True)
    path2 = force_unix_path(str(path2))

    config.set_section_config("Server", {
        "images_path": str(tmpdir / "images1"),
        "local": False})
    assert qemu.get_abs_image_path("test.ova/test1.bin") == path1
    assert qemu.get_abs_image_path("test.ova/test2.bin") == path2
    # Absolute path
    assert qemu.get_abs_image_path(str(path1)) == path1
Exemple #23
0
def test_hda_disk_image_ova(vm, tmpdir):

    vm.manager.config.set("Server", "images_path", str(tmpdir))

    vm.hda_disk_image = "test.ovf/test.vmdk"
    assert vm.hda_disk_image == force_unix_path(
        str(tmpdir / "QEMU" / "test.ovf" / "test.vmdk"))
Exemple #24
0
def test_hda_disk_image_ova(vm, images_dir):

    os.makedirs(os.path.join(images_dir, "QEMU", "test.ovf"))
    open(os.path.join(images_dir, "QEMU", "test.ovf", "test.vmdk"),
         "w+").close()
    vm.hda_disk_image = "test.ovf/test.vmdk"
    assert vm.hda_disk_image == force_unix_path(
        os.path.join(images_dir, "QEMU", "test.ovf", "test.vmdk"))
Exemple #25
0
def test_get_abs_image_path_non_local(qemu, tmpdir):
    path1 = tmpdir / "images" / "QEMU" / "test1.bin"
    path1.write("1", ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "private" / "QEMU" / "test2.bin"
    path2.write("1", ensure=True)
    path2 = force_unix_path(str(path2))

    # If non local we can't use path outside images directory
    with patch("gns3server.config.Config.get_section_config", return_value={"images_path": str(tmpdir / "images"), "local": False}):
        assert qemu.get_abs_image_path(path1) == path1
        with pytest.raises(VMError):
            qemu.get_abs_image_path(path2)
        with pytest.raises(VMError):
            qemu.get_abs_image_path("C:\\test2.bin")

    with patch("gns3server.config.Config.get_section_config", return_value={"images_path": str(tmpdir / "images"), "local": True}):
        assert qemu.get_abs_image_path(path2) == path2
Exemple #26
0
def test_get_abs_image_path_non_local(qemu, tmpdir, config):
    path1 = tmpdir / "images" / "QEMU" / "test1.bin"
    path1.write("1", ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "private" / "QEMU" / "test2.bin"
    path2.write("1", ensure=True)
    path2 = force_unix_path(str(path2))

    # If non local we can't use path outside images directory
    config.set_section_config("Server", {"images_path": str(tmpdir / "images"), "local": False})
    assert qemu.get_abs_image_path(path1) == path1
    with pytest.raises(NodeError):
        qemu.get_abs_image_path(path2)
    with pytest.raises(NodeError):
        qemu.get_abs_image_path("C:\\test2.bin")

    config.set_section_config("Server", {"images_path": str(tmpdir / "images"), "local": True})
    assert qemu.get_abs_image_path(path2) == path2
Exemple #27
0
def test_images_directories(tmpdir):
    path1 = tmpdir / "images1" / "QEMU" / "test1.bin"
    path1.write("1", ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "images2" / "test2.bin"
    path2.write("1", ensure=True)
    path2 = force_unix_path(str(path2))

    with patch("gns3server.config.Config.get_section_config", return_value={
            "images_path": str(tmpdir / "images1"),
            "additional_images_path": "/tmp/null24564;{}".format(tmpdir / "images2"),
            "local": False}):

        # /tmp/null24564 is ignored because doesn't exists
        res = images_directories("qemu")
        assert res[0] == force_unix_path(str(tmpdir / "images1" / "QEMU"))
        assert res[1] == force_unix_path(str(tmpdir / "images2"))
        assert res[2] == force_unix_path(str(tmpdir / "images1"))
        assert len(res) == 3
Exemple #28
0
def test_get_abs_image_additional_image_paths(qemu, tmpdir, config):
    path1 = tmpdir / "images1" / "QEMU" / "test1.bin"
    path1.write("1", ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "images2" / "test2.bin"
    path2.write("1", ensure=True)
    path2 = force_unix_path(str(path2))

    config.set_section_config("Server", {
        "images_path": str(tmpdir / "images1"),
        "additional_images_path": "/tmp/null24564;{}".format(str(tmpdir / "images2")),
        "local": False})

    assert qemu.get_abs_image_path("test1.bin") == path1
    assert qemu.get_abs_image_path("test2.bin") == path2
    # Absolute path
    assert qemu.get_abs_image_path(str(path2)) == path2

    with pytest.raises(ImageMissingError):
        qemu.get_abs_image_path("test4.bin")
Exemple #29
0
    async def post_file(request, response):

        project = await Controller.instance().get_loaded_project(request.match_info["project_id"])
        node = project.get_node(request.match_info["node_id"])
        path = request.match_info["path"]
        path = force_unix_path(path)

        # Raise error if user try to escape
        if path[0] == ".":
            raise aiohttp.web.HTTPForbidden()

        node_type = node.node_type
        path = "/project-files/{}/{}/{}".format(node_type, node.id, path)
        data = await request.content.read()  #FIXME: are we handling timeout or large files correctly?
        await node.compute.http_query("POST", "/projects/{project_id}/files{path}".format(project_id=project.id, path=path), data=data, timeout=None, raw=True)
        response.set_status(201)
Exemple #30
0
def test_list_images_recursives(loop, qemu, tmpdir):

    fake_images = ["a.qcow2", "b.qcow2", ".blu.qcow2", "a.qcow2.md5sum"]
    for image in fake_images:
        with open(str(tmpdir / image), "w+") as f:
            f.write("1")
    os.makedirs(str(tmpdir / "c"))
    fake_images = ["c.qcow2", "c.qcow2.md5sum"]
    for image in fake_images:
        with open(str(tmpdir / "c" / image), "w+") as f:
            f.write("1")

    with patch("gns3server.utils.images.default_images_directory", return_value=str(tmpdir)):

        assert sorted(loop.run_until_complete(qemu.list_images()), key=lambda k: k['filename']) == [
            {"filename": "a.qcow2", "path": "a.qcow2", "md5sum": "c4ca4238a0b923820dcc509a6f75849b", "filesize": 1},
            {"filename": "b.qcow2", "path": "b.qcow2", "md5sum": "c4ca4238a0b923820dcc509a6f75849b", "filesize": 1},
            {"filename": "c.qcow2", "path": force_unix_path(os.path.sep.join(["c", "c.qcow2"])), "md5sum": "c4ca4238a0b923820dcc509a6f75849b", "filesize": 1}
        ]
Exemple #31
0
    async def get_file(request, response):

        project = await Controller.instance().get_loaded_project(request.match_info["project_id"])
        node = project.get_node(request.match_info["node_id"])
        path = request.match_info["path"]
        path = force_unix_path(path)


        # Raise error if user try to escape
        if path[0] == ".":
            raise aiohttp.web.HTTPForbidden()

        node_type = node.node_type
        path = "/project-files/{}/{}/{}".format(node_type, node.id, path)

        res = await node.compute.http_query("GET", "/projects/{project_id}/files{path}".format(project_id=project.id, path=path), timeout=None, raw=True)
        response.set_status(200)
        response.content_type = "application/octet-stream"
        response.enable_chunked_encoding()
        await response.prepare(request)
        await response.write(res.body)
async def test_list_images_recursives(qemu, tmpdir):

    tmp_images_dir = os.path.join(tmpdir, "images")
    os.makedirs(tmp_images_dir, exist_ok=True)
    fake_images = ["a.qcow2", "b.qcow2", ".blu.qcow2", "a.qcow2.md5sum"]
    for image in fake_images:
        with open(os.path.join(tmp_images_dir, image), "w+") as f:
            f.write("1")
    os.makedirs(os.path.join(tmp_images_dir, "c"))
    fake_images = ["c.qcow2", "c.qcow2.md5sum"]
    for image in fake_images:
        with open(os.path.join(tmp_images_dir, "c", image), "w+") as f:
            f.write("1")

    with patch("gns3server.utils.images.default_images_directory", return_value=str(tmp_images_dir)):

        assert sorted(await qemu.list_images(), key=lambda k: k['filename']) == [
            {"filename": "a.qcow2", "path": "a.qcow2", "md5sum": "c4ca4238a0b923820dcc509a6f75849b", "filesize": 1},
            {"filename": "b.qcow2", "path": "b.qcow2", "md5sum": "c4ca4238a0b923820dcc509a6f75849b", "filesize": 1},
            {"filename": "c.qcow2", "path": force_unix_path(os.path.sep.join(["c", "c.qcow2"])), "md5sum": "c4ca4238a0b923820dcc509a6f75849b", "filesize": 1}
        ]
Exemple #33
0
def test_force_unix_path():
    assert force_unix_path("a/b") == "a/b"
    assert force_unix_path("a\\b") == "a/b"
    assert force_unix_path("a\\b\\..\\c") == "a/c"
def test_hda_disk_image_ova(vm, tmpdir):

    vm.manager.config.set("Server", "images_path", str(tmpdir))

    vm.hda_disk_image = "test.ovf/test.vmdk"
    assert vm.hda_disk_image == force_unix_path(str(tmpdir / "QEMU" / "test.ovf" / "test.vmdk"))
def test_list_images(tmpdir):

    path1 = tmpdir / "images1" / "IOS" / "test1.image"
    path1.write(b'\x7fELF\x01\x02\x01', ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "images2" / "test2.image"
    path2.write(b'\x7fELF\x01\x02\x01', ensure=True)
    path2 = force_unix_path(str(path2))

    # Invalid image because not a valid elf file
    path = tmpdir / "images2" / "test_invalid.image"
    path.write(b'NOTANELF', ensure=True)

    if sys.platform.startswith("linux"):
        path3 = tmpdir / "images1" / "IOU" / "test3.bin"
        path3.write(b'\x7fELF\x01\x02\x01', ensure=True)
        path3 = force_unix_path(str(path3))

    path4 = tmpdir / "images1" / "QEMU" / "test4.qcow2"
    path4.write("1", ensure=True)
    path4 = force_unix_path(str(path4))

    path5 = tmpdir / "images1" / "QEMU" / "test4.qcow2.md5sum"
    path5.write("1", ensure=True)
    path5 = force_unix_path(str(path5))

    with patch("gns3server.config.Config.get_section_config",
               return_value={
                   "images_path":
                   str(tmpdir / "images1"),
                   "additional_images_path":
                   "/tmp/null24564;{}".format(str(tmpdir / "images2")),
                   "local":
                   False
               }):

        assert list_images("dynamips") == [{
            'filename': 'test1.image',
            'filesize': 7,
            'md5sum': 'b0d5aa897d937aced5a6b1046e8f7e2e',
            'path': 'test1.image'
        }, {
            'filename': 'test2.image',
            'filesize': 7,
            'md5sum': 'b0d5aa897d937aced5a6b1046e8f7e2e',
            'path': str(path2)
        }]

        if sys.platform.startswith("linux"):
            assert list_images("iou") == [{
                'filename': 'test3.bin',
                'filesize': 7,
                'md5sum': 'b0d5aa897d937aced5a6b1046e8f7e2e',
                'path': 'test3.bin'
            }]

        assert list_images("qemu") == [{
            'filename': 'test4.qcow2',
            'filesize': 1,
            'md5sum': 'c4ca4238a0b923820dcc509a6f75849b',
            'path': 'test4.qcow2'
        }]
Exemple #36
0
def test_hda_disk_image_ova(vm, images_dir):

    os.makedirs(os.path.join(images_dir, "QEMU", "test.ovf"))
    open(os.path.join(images_dir, "QEMU", "test.ovf", "test.vmdk"), "w+").close()
    vm.hda_disk_image = "test.ovf/test.vmdk"
    assert vm.hda_disk_image == force_unix_path(os.path.join(images_dir, "QEMU", "test.ovf", "test.vmdk"))
Exemple #37
0
def test_list_images(tmpdir):
    path1 = tmpdir / "images1" / "IOS" / "test1.image"
    path1.write(b'\x7fELF\x01\x02\x01', ensure=True)
    path1 = force_unix_path(str(path1))

    path2 = tmpdir / "images2" / "test2.image"
    path2.write(b'\x7fELF\x01\x02\x01', ensure=True)
    path2 = force_unix_path(str(path2))

    # Invalid image because not a valid elf file
    path = tmpdir / "images2" / "test_invalid.image"
    path.write(b'NOTANELF', ensure=True)

    if sys.platform.startswith("linux"):
        path3 = tmpdir / "images1" / "IOU" / "test3.bin"
        path3.write(b'\x7fELF\x01\x02\x01', ensure=True)
        path3 = force_unix_path(str(path3))

    path4 = tmpdir / "images1" / "QEMU" / "test4.qcow2"
    path4.write("1", ensure=True)
    path4 = force_unix_path(str(path4))

    path5 = tmpdir / "images1" / "QEMU" / "test4.qcow2.md5sum"
    path5.write("1", ensure=True)
    path5 = force_unix_path(str(path5))

    with patch("gns3server.config.Config.get_section_config", return_value={
            "images_path": str(tmpdir / "images1"),
            "additional_images_path": "/tmp/null24564;{}".format(str(tmpdir / "images2")),
            "local": False}):

        assert list_images("dynamips") == [
            {
                'filename': 'test1.image',
                'filesize': 7,
                'md5sum': 'b0d5aa897d937aced5a6b1046e8f7e2e',
                'path': 'test1.image'
            },
            {
                'filename': 'test2.image',
                'filesize': 7,
                'md5sum': 'b0d5aa897d937aced5a6b1046e8f7e2e',
                'path': str(path2)
            }
        ]

        if sys.platform.startswith("linux"):
            assert list_images("iou") == [
                {
                    'filename': 'test3.bin',
                    'filesize': 7,
                    'md5sum': 'b0d5aa897d937aced5a6b1046e8f7e2e',
                    'path': 'test3.bin'
                }
            ]

        assert list_images("qemu") == [
            {
                'filename': 'test4.qcow2',
                'filesize': 1,
                'md5sum': 'c4ca4238a0b923820dcc509a6f75849b',
                'path': 'test4.qcow2'
            }
        ]