Files
sci-gui-agent-benchmark/desktop_env/providers/__init__.py
lizhanyuan 4bde685bbd feat: 新增 Proxmox provider 支持及 inject_steps 参数
- 新增 desktop_env/providers/proxmox/ (manager + provider)
- desktop_env.py: 添加 proxmox 到 provider 名称列表
- providers/__init__.py: 工厂函数注册 proxmox provider
- run.py: 新增 --inject_steps/--no_inject_steps 参数
- run_proxmox.sh: Proxmox 运行脚本
2026-03-04 16:39:08 +08:00

48 lines
2.6 KiB
Python

from desktop_env.providers.base import VMManager, Provider
def create_vm_manager_and_provider(provider_name: str, region: str, use_proxy: bool = False):
"""
Factory function to get the Virtual Machine Manager and Provider instances based on the provided provider name.
Args:
provider_name (str): The name of the provider (e.g., "aws", "vmware", etc.)
region (str): The region for the provider
use_proxy (bool): Whether to use proxy-enabled providers (currently only supported for AWS)
"""
provider_name = provider_name.lower().strip()
if provider_name == "vmware":
from desktop_env.providers.vmware.manager import VMwareVMManager
from desktop_env.providers.vmware.provider import VMwareProvider
return VMwareVMManager(), VMwareProvider(region)
elif provider_name == "virtualbox":
from desktop_env.providers.virtualbox.manager import VirtualBoxVMManager
from desktop_env.providers.virtualbox.provider import VirtualBoxProvider
return VirtualBoxVMManager(), VirtualBoxProvider(region)
elif provider_name in ["aws", "amazon web services"]:
from desktop_env.providers.aws.manager import AWSVMManager
from desktop_env.providers.aws.provider import AWSProvider
return AWSVMManager(), AWSProvider(region)
elif provider_name == "azure":
from desktop_env.providers.azure.manager import AzureVMManager
from desktop_env.providers.azure.provider import AzureProvider
return AzureVMManager(), AzureProvider(region)
elif provider_name == "docker":
from desktop_env.providers.docker.manager import DockerVMManager
from desktop_env.providers.docker.provider import DockerProvider
return DockerVMManager(), DockerProvider(region)
elif provider_name == "aliyun":
from desktop_env.providers.aliyun.manager import AliyunVMManager
from desktop_env.providers.aliyun.provider import AliyunProvider
return AliyunVMManager(), AliyunProvider()
elif provider_name == "volcengine":
from desktop_env.providers.volcengine.manager import VolcengineVMManager
from desktop_env.providers.volcengine.provider import VolcengineProvider
return VolcengineVMManager(), VolcengineProvider()
elif provider_name == "proxmox":
from desktop_env.providers.proxmox.manager import ProxmoxVMManager
from desktop_env.providers.proxmox.provider import ProxmoxProvider
return ProxmoxVMManager(), ProxmoxProvider(region)
else:
raise NotImplementedError(f"{provider_name} not implemented!")