Unverified Commit e3857ba0 authored by mohammedabdulwahhab's avatar mohammedabdulwahhab Committed by GitHub
Browse files

fix: serviceArgs in config was not getting set for workers (#640)

parent 5394421a
......@@ -84,14 +84,20 @@ class ServiceConfig(dict):
else:
args.extend([f"--{arg_key}", str(value)])
# Get service config excluding ServiceArgs if it exists
# We never want args to be generated from the ServiceArgs
service_config = self[service_name].copy()
if "ServiceArgs" in service_config:
del service_config["ServiceArgs"]
if (common := self.get(COMMON_CONFIG_SERVICE)) is not None and (
common_config_keys := self[service_name].get(COMMON_CONFIG_KEY)
common_config_keys := service_config.get(COMMON_CONFIG_KEY)
) is not None:
for key in common_config_keys:
if key in common and key not in self[service_name]:
if key in common and key not in service_config:
add_to_args(args, key, common[key])
for key, value in self[service_name].items():
for key, value in service_config.items():
add_to_args(args, key, value)
logger.info(f"Running {service_name} with {args=}")
......
......@@ -90,15 +90,32 @@ class DynamoService(Service[T]):
super().__init__(config=config, inner=inner, image=image, envs=envs or [])
# Initialize Dynamo configuration
self._dynamo_config = (
# Get any dynamo overrides from service_args
dynamo_overrides = {}
if service_args and "dynamo" in service_args:
dynamo_overrides = service_args["dynamo"]
logger.debug(f"Found dynamo overrides in service_args: {dynamo_overrides}")
# Initialize Dynamo configuration with overrides
base_config = (
dynamo_config
if dynamo_config
else DynamoConfig(name=inner.__name__, namespace="default")
)
logger.debug(f"Initial base DynamoConfig: {asdict(base_config)}")
# Apply overrides from service_args to base config
for key, value in dynamo_overrides.items():
if hasattr(base_config, key):
logger.debug(f"Applying override: {key}={value}")
setattr(base_config, key, value)
self._dynamo_config = base_config
if self._dynamo_config.name is None:
self._dynamo_config.name = inner.__name__
logger.debug(f"Final DynamoConfig: {asdict(self._dynamo_config)}")
# Add dynamo configuration to the service config
# this allows for the config to be part of the service in bento.yaml
self.config["dynamo"] = asdict(self._dynamo_config)
......@@ -182,6 +199,7 @@ class DynamoService(Service[T]):
def _remove_service_args(self, service_name: str):
"""Remove ServiceArgs from the environment config after using them, preserving envs"""
logger.debug(f"Removing service args for {service_name}")
config_str = os.environ.get("DYNAMO_SERVICE_CONFIG")
if config_str:
config = json.loads(config_str)
......@@ -198,10 +216,6 @@ class DynamoService(Service[T]):
}
os.environ["DYNAMO_SERVICE_ENVS"] = json.dumps(envs_config)
# Remove ServiceArgs from main config
del config[service_name]["ServiceArgs"]
os.environ["DYNAMO_SERVICE_CONFIG"] = json.dumps(config)
def service(
inner: Optional[type[T]] = None,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment