diff --git a/psdk-test/psdk_commands.py b/psdk-test/psdk_commands.py index 5167a075579f26d4d68c2b09aba15a77d2cafc90..b0b1f7fe9a4aeedf22cdc26778f00c1c28682ec0 100644 --- a/psdk-test/psdk_commands.py +++ b/psdk-test/psdk_commands.py @@ -73,19 +73,42 @@ class PsdkCommands(object): print(_err.decode()) return exit_status, _output.decode(), _err.decode() + def convert_ova_to_vdi(self,url, old_sdk, new_sdk): + self._run(["tar", "-xvf", url]) + zipped = self._run(["find", ".", "-name", "*.gz"],output=True) + zipped=zipped.decode('utf-8').strip() + self._run(["gunzip", zipped]) + unzipped=zipped[:-3] + self._run([self.vbox_manage, "clonehd", unzipped, "output.vdi", "--format=VDI"]) + self._run(["rm", unzipped]) + self._run([self.vbox_manage, "closemedium", "disk", "output.vdi"]) + self._run([self.vbox_manage, "closemedium", "disk", unzipped]) + shutil.copy("output.vdi", old_sdk) + shutil.copy("output.vdi", new_sdk) + def setup_disk_files(self, url, old_sdk_filename, new_sdk_filename): if url.startswith("http"): print("Dowloading %s ..." % url) try: response = urllib.request.urlopen(url) - gunzip_response = gzip.GzipFile(fileobj=response) - with open(old_sdk_filename, 'wb') as old_sdk_file, \ - open(new_sdk_filename, 'wb') as new_sdk_file: - content = gunzip_response.read(1024*1024) - while (content): - old_sdk_file.write(content) - new_sdk_file.write(content) + if (url.endswith("ova")): + with open('downloaded_file.ova', 'wb') as file: + content = response.read(1024*1024) + while(content): + file.write(content) + content = response.read(1024*1024) + self.convert_ova_to_vdi("downloaded_file.ova", old_sdk_filename, new_sdk_filename) + self._run(["rm", "downloaded_file.ova"]) + + else: + gunzip_response = gzip.GzipFile(fileobj=response) + with open(old_sdk_filename, 'wb') as old_sdk_file, \ + open(new_sdk_filename, 'wb') as new_sdk_file: content = gunzip_response.read(1024*1024) + while (content): + old_sdk_file.write(content) + new_sdk_file.write(content) + content = gunzip_response.read(1024*1024) except urllib.error.HTTPError as e: print("FAILED: Error dowloading image file: ", e.code) exit(1) @@ -103,8 +126,11 @@ class PsdkCommands(object): new_sdk_file.write(content) content = gunzip_response.read(1024*1024) else: - shutil.copy(url, old_sdk_filename) - shutil.copy(url, new_sdk_filename) + if(url.endswith("ova")): + self.convert_ova_to_vdi(url, old_sdk_filename, new_sdk_filename) + else: + shutil.copy(url, old_sdk_filename) + shutil.copy(url, new_sdk_filename) self._run([self.vbox_manage, "internalcommands", "sethduuid", new_sdk_filename])