mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-28 11:18:11 +00:00
parent
d952718f30
commit
e9fb7f4981
@ -486,14 +486,17 @@ class BaseManager:
|
|||||||
log.info("Writting image file %s", path)
|
log.info("Writting image file %s", path)
|
||||||
try:
|
try:
|
||||||
remove_checksum(path)
|
remove_checksum(path)
|
||||||
|
# We store the file under his final name only when the upload is finished
|
||||||
|
tmp_path = path + ".tmp"
|
||||||
os.makedirs(os.path.dirname(path), exist_ok=True)
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||||
with open(path, 'wb+') as f:
|
with open(tmp_path, 'wb+') as f:
|
||||||
while True:
|
while True:
|
||||||
packet = yield from stream.read(512)
|
packet = yield from stream.read(512)
|
||||||
if not packet:
|
if not packet:
|
||||||
break
|
break
|
||||||
f.write(packet)
|
f.write(packet)
|
||||||
os.chmod(path, stat.S_IWRITE | stat.S_IREAD | stat.S_IEXEC)
|
os.chmod(tmp_path, stat.S_IWRITE | stat.S_IREAD | stat.S_IEXEC)
|
||||||
|
shutil.move(tmp_path, path)
|
||||||
md5sum(path)
|
md5sum(path)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
raise aiohttp.web.HTTPConflict(text="Could not write image: {} because {}".format(filename, e))
|
raise aiohttp.web.HTTPConflict(text="Could not write image: {} because {}".format(filename, e))
|
||||||
|
@ -173,9 +173,9 @@ def test_upload_vm(server, tmpdir):
|
|||||||
|
|
||||||
|
|
||||||
def test_upload_vm_permission_denied(server, tmpdir):
|
def test_upload_vm_permission_denied(server, tmpdir):
|
||||||
with open(str(tmpdir / "test2"), "w+") as f:
|
with open(str(tmpdir / "test2.tmp"), "w+") as f:
|
||||||
f.write("")
|
f.write("")
|
||||||
os.chmod(str(tmpdir / "test2"), 0)
|
os.chmod(str(tmpdir / "test2.tmp"), 0)
|
||||||
|
|
||||||
with patch("gns3server.modules.Dynamips.get_images_directory", return_value=str(tmpdir),):
|
with patch("gns3server.modules.Dynamips.get_images_directory", return_value=str(tmpdir),):
|
||||||
response = server.post("/dynamips/vms/test2", body="TEST", raw=True)
|
response = server.post("/dynamips/vms/test2", body="TEST", raw=True)
|
||||||
|
@ -349,11 +349,3 @@ def test_upload_vm(server, tmpdir):
|
|||||||
assert checksum == "033bd94b1168d7e4f0d644c3c95e35bf"
|
assert checksum == "033bd94b1168d7e4f0d644c3c95e35bf"
|
||||||
|
|
||||||
|
|
||||||
def test_upload_vm_permission_denied(server, tmpdir):
|
|
||||||
with open(str(tmpdir / "test2"), "w+") as f:
|
|
||||||
f.write("")
|
|
||||||
os.chmod(str(tmpdir / "test2"), 0)
|
|
||||||
|
|
||||||
with patch("gns3server.modules.IOU.get_images_directory", return_value=str(tmpdir),):
|
|
||||||
response = server.post("/iou/vms/test2", body="TEST", raw=True)
|
|
||||||
assert response.status == 409
|
|
||||||
|
@ -263,9 +263,9 @@ def test_upload_vm_forbiden_location(server, tmpdir):
|
|||||||
|
|
||||||
|
|
||||||
def test_upload_vm_permission_denied(server, tmpdir):
|
def test_upload_vm_permission_denied(server, tmpdir):
|
||||||
with open(str(tmpdir / "test2"), "w+") as f:
|
with open(str(tmpdir / "test2.tmp"), "w+") as f:
|
||||||
f.write("")
|
f.write("")
|
||||||
os.chmod(str(tmpdir / "test2"), 0)
|
os.chmod(str(tmpdir / "test2.tmp"), 0)
|
||||||
|
|
||||||
with patch("gns3server.modules.Qemu.get_images_directory", return_value=str(tmpdir),):
|
with patch("gns3server.modules.Qemu.get_images_directory", return_value=str(tmpdir),):
|
||||||
response = server.post("/qemu/vms/test2", body="TEST", raw=True)
|
response = server.post("/qemu/vms/test2", body="TEST", raw=True)
|
||||||
|
Loading…
Reference in New Issue
Block a user