refactor&delete: simplify AWS VM allocation and remove proxy support (#284)
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import os
|
||||
from filelock import FileLock
|
||||
import boto3
|
||||
import psutil
|
||||
import logging
|
||||
import dotenv
|
||||
import signal
|
||||
@@ -163,60 +162,6 @@ def _allocate_vm(region=DEFAULT_REGION, screen_size=(1920, 1080)):
|
||||
return instance_id
|
||||
|
||||
|
||||
def _allocate_vm_with_proxy(region=DEFAULT_REGION, proxy_config_file=None, screen_size=(1920, 1080)):
|
||||
"""Allocate a VM with proxy configuration"""
|
||||
if not PROXY_SUPPORT_AVAILABLE:
|
||||
logger.warning("Proxy support not available, falling back to regular VM allocation")
|
||||
return _allocate_vm(region, screen_size=screen_size)
|
||||
|
||||
from desktop_env.providers.aws.provider_with_proxy import AWSProviderWithProxy
|
||||
|
||||
# Initialize proxy pool if needed
|
||||
if proxy_config_file:
|
||||
init_proxy_pool(proxy_config_file)
|
||||
|
||||
# Get current proxy
|
||||
proxy_pool = get_global_proxy_pool()
|
||||
current_proxy = proxy_pool.get_next_proxy()
|
||||
|
||||
if current_proxy:
|
||||
logger.info(f"Allocating VM with proxy: {current_proxy.host}:{current_proxy.port}")
|
||||
|
||||
# Create provider instance
|
||||
provider = AWSProviderWithProxy(region=region, proxy_config_file=proxy_config_file)
|
||||
|
||||
# Create new instance
|
||||
instance_id = provider.create_instance_with_proxy(
|
||||
image_id=IMAGE_ID_MAP[region],
|
||||
instance_type=INSTANCE_TYPE,
|
||||
security_groups=[os.getenv('AWS_SECURITY_GROUP_ID')],
|
||||
subnet_id=os.getenv('AWS_SUBNET_ID')
|
||||
)
|
||||
|
||||
try:
|
||||
ec2_client = boto3.client('ec2', region_name=region)
|
||||
instance_details = ec2_client.describe_instances(InstanceIds=[instance_id])
|
||||
instance = instance_details['Reservations'][0]['Instances'][0]
|
||||
public_ip = instance.get('PublicIpAddress', '')
|
||||
if public_ip:
|
||||
vnc_url = f"http://{public_ip}:5910/vnc.html"
|
||||
logger.info("="*80)
|
||||
logger.info(f"🖥️ VNC Web Access URL: {vnc_url}")
|
||||
logger.info(f"📡 Public IP: {public_ip}")
|
||||
logger.info(f"🆔 Instance ID: {instance_id}")
|
||||
if current_proxy:
|
||||
logger.info(f"🌐 Proxy: {current_proxy.host}:{current_proxy.port}")
|
||||
logger.info("="*80)
|
||||
print(f"\n🌐 VNC Web Access URL: {vnc_url}")
|
||||
if current_proxy:
|
||||
print(f"🔄 Current Proxy: {current_proxy.host}:{current_proxy.port}")
|
||||
print(f"📍 Please open the above address in the browser for remote desktop access\n")
|
||||
except Exception as e:
|
||||
logger.warning(f"Failed to get VNC address for proxy instance {instance_id}: {e}")
|
||||
|
||||
return instance_id
|
||||
|
||||
|
||||
class AWSVMManager(VMManager):
|
||||
"""
|
||||
AWS VM Manager for managing virtual machines on AWS.
|
||||
@@ -224,15 +169,9 @@ class AWSVMManager(VMManager):
|
||||
AWS does not need to maintain a registry of VMs, as it can dynamically allocate and deallocate VMs.
|
||||
This class supports both regular VM allocation and proxy-enabled VM allocation.
|
||||
"""
|
||||
def __init__(self, proxy_config_file=None, **kwargs):
|
||||
self.proxy_config_file = proxy_config_file
|
||||
def __init__(self, **kwargs):
|
||||
# self.lock = FileLock(".aws_lck", timeout=60)
|
||||
self.initialize_registry()
|
||||
|
||||
# Initialize proxy pool if proxy configuration is provided
|
||||
if proxy_config_file and PROXY_SUPPORT_AVAILABLE:
|
||||
init_proxy_pool(proxy_config_file)
|
||||
logger.info(f"Proxy pool initialized with config: {proxy_config_file}")
|
||||
|
||||
def initialize_registry(self, **kwargs):
|
||||
pass
|
||||
@@ -268,10 +207,6 @@ class AWSVMManager(VMManager):
|
||||
pass
|
||||
|
||||
def get_vm_path(self, region=DEFAULT_REGION, screen_size=(1920, 1080), **kwargs):
|
||||
if self.proxy_config_file:
|
||||
logger.info("Allocating a new VM with proxy configuration in region: {}".format(region))
|
||||
new_vm_path = _allocate_vm_with_proxy(region, self.proxy_config_file, screen_size=screen_size)
|
||||
else:
|
||||
logger.info("Allocating a new VM in region: {}".format(region))
|
||||
new_vm_path = _allocate_vm(region, screen_size=screen_size)
|
||||
logger.info("Allocating a new VM in region: {}".format(region))
|
||||
new_vm_path = _allocate_vm(region, screen_size=screen_size)
|
||||
return new_vm_path
|
||||
Reference in New Issue
Block a user