Simplify the logic for Docker provider
This commit is contained in:
@@ -163,7 +163,6 @@ class DesktopEnv(gym.Env):
|
||||
self.vlc_port = 8080
|
||||
|
||||
# Initialize with default (no proxy) provider
|
||||
self.current_use_proxy = False
|
||||
self.manager, self.provider = create_vm_manager_and_provider(provider_name, region, use_proxy=False)
|
||||
|
||||
self.os_type = os_type
|
||||
@@ -194,15 +193,8 @@ class DesktopEnv(gym.Env):
|
||||
self.require_terminal = require_terminal
|
||||
|
||||
# Initialize emulator and controller
|
||||
# Docker provider needs delayed initialization due to container lifecycle
|
||||
if provider_name == "docker":
|
||||
logger.info("Docker provider detected - will initialize on first reset()")
|
||||
# Initialize controllers as None for Docker - they'll be set up in reset()
|
||||
self.controller = None
|
||||
self.setup_controller = None
|
||||
else:
|
||||
logger.info("Initializing...")
|
||||
self._start_emulator()
|
||||
logger.info("Initializing...")
|
||||
self._start_emulator()
|
||||
|
||||
# mode: human or machine
|
||||
self.instruction = None
|
||||
@@ -232,6 +224,7 @@ class DesktopEnv(gym.Env):
|
||||
# Get the ip from the virtual machine, and setup the controller
|
||||
vm_ip_ports = self.provider.get_ip_address(self.path_to_vm).split(':')
|
||||
self.vm_ip = vm_ip_ports[0]
|
||||
# Get the ports from the virtual machine (for Docker provider only)
|
||||
if len(vm_ip_ports) > 1:
|
||||
self.server_port = int(vm_ip_ports[1])
|
||||
self.chromium_port = int(vm_ip_ports[2])
|
||||
@@ -271,17 +264,6 @@ class DesktopEnv(gym.Env):
|
||||
self.action_history.clear()
|
||||
|
||||
for attempt in range(MAX_RETRIES):
|
||||
# Check and handle proxy requirement changes BEFORE starting emulator
|
||||
if task_config is not None:
|
||||
# Only consider task proxy requirement if proxy is enabled at system level
|
||||
task_use_proxy = task_config.get("proxy", False) and self.enable_proxy
|
||||
if not self.enable_proxy and task_config.get("proxy", False):
|
||||
logger.info("Task requires proxy but proxy is disabled at system level, ignoring proxy requirement.")
|
||||
|
||||
if task_use_proxy != self.current_use_proxy:
|
||||
# keep because get_info_from_website depend on this
|
||||
self.current_use_proxy = task_use_proxy
|
||||
|
||||
# Only revert to snapshot if environment has been used (step/setup)
|
||||
# This optimization is especially important for cloud providers like AWS
|
||||
# where unnecessary snapshot operations are costly and time-consuming
|
||||
@@ -295,11 +277,6 @@ class DesktopEnv(gym.Env):
|
||||
self.is_environment_used = False
|
||||
else:
|
||||
logger.info("Environment is clean, skipping snapshot revert (provider: {}).".format(self.provider_name))
|
||||
|
||||
# Initialize Docker provider controllers if not already done
|
||||
if self.provider_name == "docker" and self.controller is None:
|
||||
logger.info("Initializing Docker provider controllers...")
|
||||
self._start_emulator()
|
||||
|
||||
if task_config is not None:
|
||||
if task_config.get("proxy", False) and self.enable_proxy:
|
||||
|
||||
Reference in New Issue
Block a user