VirtualBox (#46)
* Initailize aws support * Add README for the VM server * Refactor OSWorld for supporting more cloud services. * Initialize vmware and aws implementation v1, waiting for verification * Initlize files for azure, gcp and virtualbox support * Debug on the VMware provider * Fix on aws interface mapping * Fix instance type * Refactor * Clean * Add Azure provider * hk region; debug * Fix lock * Remove print * Remove key_name requirements when allocating aws vm * Clean README * Fix reset * Fix bugs * Add VirtualBox and Azure providers * Add VirtualBox OVF link * Raise exception on macOS host * Init RAEDME for VBox * Update VirtualBox VM download link * Update requirements and setup.py; Improve robustness on Windows * Fix network adapter * Go through on Windows machine * Add default adapter option * Fix minor error --------- Co-authored-by: Timothyxxx <384084775@qq.com> Co-authored-by: XinyuanWangCS <xywang626@gmail.com> Co-authored-by: Tianbao Xie <47296835+Timothyxxx@users.noreply.github.com>
This commit is contained in:
@@ -23,13 +23,18 @@ logger = logging.getLogger("desktopenv.providers.vmware.VMwareVMManager")
|
||||
logger.setLevel(logging.INFO)
|
||||
|
||||
MAX_RETRY_TIMES = 10
|
||||
RETRY_INTERVAL = 5
|
||||
UBUNTU_ARM_URL = "https://huggingface.co/datasets/xlangai/ubuntu_arm/resolve/main/Ubuntu.zip"
|
||||
UBUNTU_X86_URL = "https://huggingface.co/datasets/xlangai/ubuntu_x86/resolve/main/Ubuntu.zip"
|
||||
DOWNLOADED_FILE_NAME = "Ubuntu.zip"
|
||||
REGISTRY_PATH = '.vmware_vms'
|
||||
LOCK_FILE_NAME = '.vmware_lck'
|
||||
VMS_DIR = "./vmware_vm_data"
|
||||
update_lock = threading.Lock()
|
||||
|
||||
if platform.system() == 'Windows':
|
||||
vboxmanage_path = r"C:\Program Files (x86)\VMware\VMware Workstation"
|
||||
os.environ["PATH"] += os.pathsep + vboxmanage_path
|
||||
|
||||
def generate_new_vm_name(vms_dir):
|
||||
registry_idx = 0
|
||||
@@ -129,7 +134,7 @@ def _install_vm(vm_name, vms_dir, downloaded_file_name, original_vm_name="Ubuntu
|
||||
with requests.get(url, headers=headers, stream=True) as response:
|
||||
if response.status_code == 416:
|
||||
# This means the range was not satisfiable, possibly the file was fully downloaded
|
||||
logger.info("Fully downloaded or the file sized changed.")
|
||||
logger.info("Fully downloaded or the file size changed.")
|
||||
break
|
||||
|
||||
response.raise_for_status()
|
||||
@@ -150,7 +155,7 @@ def _install_vm(vm_name, vms_dir, downloaded_file_name, original_vm_name="Ubuntu
|
||||
progress_bar.update(size)
|
||||
except (requests.exceptions.RequestException, IOError) as e:
|
||||
logger.error(f"Download error: {e}")
|
||||
sleep(1) # Wait for 1 second before retrying
|
||||
sleep(RETRY_INTERVAL)
|
||||
logger.error("Retrying...")
|
||||
else:
|
||||
logger.info("Download succeeds.")
|
||||
@@ -233,7 +238,7 @@ def _install_vm(vm_name, vms_dir, downloaded_file_name, original_vm_name="Ubuntu
|
||||
logger.error(f"Error: {e}")
|
||||
logger.error(f"Type: {type(e).__name__}")
|
||||
logger.error(f"Error detail: {str(e)}")
|
||||
sleep(2)
|
||||
sleep(RETRY_INTERVAL)
|
||||
return False
|
||||
|
||||
# Try downloading the screenshot until successful
|
||||
@@ -269,7 +274,7 @@ def _install_vm(vm_name, vms_dir, downloaded_file_name, original_vm_name="Ubuntu
|
||||
class VMwareVMManager(VMManager):
|
||||
def __init__(self, registry_path=REGISTRY_PATH):
|
||||
self.registry_path = registry_path
|
||||
self.lock = FileLock(".vmware_lck", timeout=10)
|
||||
self.lock = FileLock(LOCK_FILE_NAME, timeout=10)
|
||||
self.initialize_registry()
|
||||
|
||||
def initialize_registry(self):
|
||||
|
||||
Reference in New Issue
Block a user