Simplify the logic for Docker provider
This commit is contained in:
@@ -163,7 +163,6 @@ class DesktopEnv(gym.Env):
|
|||||||
self.vlc_port = 8080
|
self.vlc_port = 8080
|
||||||
|
|
||||||
# Initialize with default (no proxy) provider
|
# 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.manager, self.provider = create_vm_manager_and_provider(provider_name, region, use_proxy=False)
|
||||||
|
|
||||||
self.os_type = os_type
|
self.os_type = os_type
|
||||||
@@ -194,15 +193,8 @@ class DesktopEnv(gym.Env):
|
|||||||
self.require_terminal = require_terminal
|
self.require_terminal = require_terminal
|
||||||
|
|
||||||
# Initialize emulator and controller
|
# Initialize emulator and controller
|
||||||
# Docker provider needs delayed initialization due to container lifecycle
|
logger.info("Initializing...")
|
||||||
if provider_name == "docker":
|
self._start_emulator()
|
||||||
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()
|
|
||||||
|
|
||||||
# mode: human or machine
|
# mode: human or machine
|
||||||
self.instruction = None
|
self.instruction = None
|
||||||
@@ -232,6 +224,7 @@ class DesktopEnv(gym.Env):
|
|||||||
# Get the ip from the virtual machine, and setup the controller
|
# Get the ip from the virtual machine, and setup the controller
|
||||||
vm_ip_ports = self.provider.get_ip_address(self.path_to_vm).split(':')
|
vm_ip_ports = self.provider.get_ip_address(self.path_to_vm).split(':')
|
||||||
self.vm_ip = vm_ip_ports[0]
|
self.vm_ip = vm_ip_ports[0]
|
||||||
|
# Get the ports from the virtual machine (for Docker provider only)
|
||||||
if len(vm_ip_ports) > 1:
|
if len(vm_ip_ports) > 1:
|
||||||
self.server_port = int(vm_ip_ports[1])
|
self.server_port = int(vm_ip_ports[1])
|
||||||
self.chromium_port = int(vm_ip_ports[2])
|
self.chromium_port = int(vm_ip_ports[2])
|
||||||
@@ -271,17 +264,6 @@ class DesktopEnv(gym.Env):
|
|||||||
self.action_history.clear()
|
self.action_history.clear()
|
||||||
|
|
||||||
for attempt in range(MAX_RETRIES):
|
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)
|
# Only revert to snapshot if environment has been used (step/setup)
|
||||||
# This optimization is especially important for cloud providers like AWS
|
# This optimization is especially important for cloud providers like AWS
|
||||||
# where unnecessary snapshot operations are costly and time-consuming
|
# where unnecessary snapshot operations are costly and time-consuming
|
||||||
@@ -295,11 +277,6 @@ class DesktopEnv(gym.Env):
|
|||||||
self.is_environment_used = False
|
self.is_environment_used = False
|
||||||
else:
|
else:
|
||||||
logger.info("Environment is clean, skipping snapshot revert (provider: {}).".format(self.provider_name))
|
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 is not None:
|
||||||
if task_config.get("proxy", False) and self.enable_proxy:
|
if task_config.get("proxy", False) and self.enable_proxy:
|
||||||
|
|||||||
Reference in New Issue
Block a user