diff --git a/clearml_agent/backend_config/config.py b/clearml_agent/backend_config/config.py index a1f03f7..0774acb 100644 --- a/clearml_agent/backend_config/config.py +++ b/clearml_agent/backend_config/config.py @@ -297,6 +297,9 @@ class Config(object): def put(self, key, value): self._config.put(key, value) + def pop(self, key, default=None): + return self._config.pop(key, default=default) + def to_dict(self): return self._config.as_plain_ordered_dict() diff --git a/clearml_agent/commands/worker.py b/clearml_agent/commands/worker.py index 351b81f..dee8b90 100644 --- a/clearml_agent/commands/worker.py +++ b/clearml_agent/commands/worker.py @@ -40,6 +40,7 @@ from clearml_agent.backend_api.session import CallResult, Request from clearml_agent.backend_api.session.defs import ( ENV_ENABLE_ENV_CONFIG_SECTION, ENV_ENABLE_FILES_CONFIG_SECTION, ENV_VENV_CONFIGURED, ENV_PROPAGATE_EXITCODE, ) +from clearml_agent.backend_config import Config from clearml_agent.backend_config.defs import UptimeConf from clearml_agent.backend_config.utils import apply_environment, apply_files from clearml_agent.backend_config.converters import text_to_int @@ -71,6 +72,7 @@ from clearml_agent.definitions import ( ENV_DOCKER_ARGS_FILTERS, ENV_FORCE_SYSTEM_SITE_PACKAGES, ENV_SERVICES_DOCKER_RESTART, + ENV_CONFIG_BC_IN_STANDALONE, ) from clearml_agent.definitions import WORKING_REPOSITORY_DIR, PIP_EXTRA_INDICES from clearml_agent.errors import ( @@ -3515,6 +3517,11 @@ class Worker(ServiceCommandSection): requirements_manager.translator.enabled = False print(requirements_manager.replace(contents)) + def remove_non_backwards_compatible_entries(self, config: Config): + if not self._standalone_mode or not ENV_CONFIG_BC_IN_STANDALONE.get() or self._session.feature_set == "basic": + return + config.pop("agent.package_manager.pip_version") # removed due to a breaking change in v1.5.1 + def get_docker_config_cmd(self, docker_args, clean_api_credentials=False): docker_image = str(ENV_DOCKER_IMAGE.get() or self._session.config.get("agent.default_docker.image", "nvidia/cuda")) \ @@ -3537,6 +3544,7 @@ class Worker(ServiceCommandSection): DockerArgsSanitizer.sanitize_docker_command(self._session, self._docker_arguments) or '')) temp_config = deepcopy(self._session.config) + self.remove_non_backwards_compatible_entries(temp_config) mounted_cache_dir = temp_config.get( "agent.docker_internal_mounts.sdk_cache", self._docker_fixed_user_cache) mounted_pip_dl_dir = temp_config.get( diff --git a/clearml_agent/definitions.py b/clearml_agent/definitions.py index 999903c..5043d3f 100644 --- a/clearml_agent/definitions.py +++ b/clearml_agent/definitions.py @@ -177,6 +177,8 @@ ENV_DEBUG_INFO = EnvironmentConfig("CLEARML_AGENT_DEBUG_INFO") ENV_CHILD_AGENTS_COUNT_CMD = EnvironmentConfig("CLEARML_AGENT_CHILD_AGENTS_COUNT_CMD") ENV_DOCKER_ARGS_FILTERS = EnvironmentConfig("CLEARML_AGENT_DOCKER_ARGS_FILTERS") ENV_DOCKER_ARGS_HIDE_ENV = EnvironmentConfig("CLEARML_AGENT_DOCKER_ARGS_HIDE_ENV") +ENV_CONFIG_BC_IN_STANDALONE = EnvironmentConfig("CLEARML_AGENT_STANDALONE_CONFIG_BC", type=bool) +""" Maintain backwards compatible configuration when launching in standalone mode """ ENV_SERVICES_DOCKER_RESTART = EnvironmentConfig("CLEARML_AGENT_SERVICES_DOCKER_RESTART") """