@@ -57,6 +57,15 @@ def image(self) -> Optional[str]:
5757 except KeyError :
5858 return None
5959
60+ @property
61+ def envs (self ) -> list [dict [str , str ]]:
62+ """Environment variables for the service"""
63+ return self ._spec .get ("envs" , [])
64+
65+ @envs .setter
66+ def envs (self , value : list [dict [str , str ]]):
67+ self ._spec ["envs" ] = value
68+
6069 @image .setter
6170 def image (self , value : str ):
6271 if "extraPodSpec" not in self ._spec :
@@ -318,13 +327,9 @@ def set_service_env_var(self, service_name: str, name: str, value: str):
318327 """
319328 Set an environment variable for a specific service
320329 """
321- # Check service exists
322- if service_name not in self ._deployment_spec ["spec" ]["services" ]:
323- raise ValueError (f"Service '{ service_name } ' not found in deployment spec" )
324-
325- service = self ._deployment_spec ["spec" ]["services" ][service_name ]
326- if "envs" not in service :
327- service ["envs" ] = []
330+ service = self .get_service (service_name )
331+ if service .envs is None :
332+ service .envs = []
328333
329334 # if env var already exists, update it
330335 for env in service ["envs" ]:
@@ -342,11 +347,8 @@ def get_service_env_vars(self, service_name: str) -> list[dict]:
342347 Returns:
343348 List of environment variable dicts (e.g., [{"name": "VAR", "value": "val"}])
344349 """
345- # Check service exists
346- if service_name not in self ._deployment_spec ["spec" ]["services" ]:
347- raise ValueError (f"Service '{ service_name } ' not found in deployment spec" )
348-
349- return self ._deployment_spec ["spec" ]["services" ][service_name ].get ("envs" , [])
350+ service = self .get_service (service_name )
351+ return service .envs
350352
351353 @property
352354 def services (self ) -> list [ServiceSpec ]:
@@ -374,11 +376,7 @@ def add_arg_to_service(self, service_name: str, arg_name: str, arg_value: str):
374376 arg_name: Argument name (e.g., "--max-model-len", "--max-seq-len")
375377 arg_value: Argument value (e.g., "1024")
376378 """
377- # Get the service
378- if service_name not in self ._deployment_spec ["spec" ]["services" ]:
379- raise ValueError (f"Service '{ service_name } ' not found in deployment spec" )
380-
381- service = self ._deployment_spec ["spec" ]["services" ][service_name ]
379+ service = self .get_service (service_name )
382380
383381 # Ensure args list exists
384382 if "extraPodSpec" not in service :
@@ -418,15 +416,23 @@ def add_arg_to_service(self, service_name: str, arg_name: str, arg_value: str):
418416 # Add new argument
419417 args_list .extend ([arg_name , arg_value ])
420418
421- def set_service_replicas (self , service_name : str , replicas : int ) :
419+ def get_service (self , service_name : str ) -> ServiceSpec :
422420 """
423- Set the number of replicas for a specific service
421+ Get a specific service from the deployment spec
424422 """
425- # Check service exists
426423 if service_name not in self ._deployment_spec ["spec" ]["services" ]:
427424 raise ValueError (f"Service '{ service_name } ' not found in deployment spec" )
428425
429- self ._deployment_spec ["spec" ]["services" ][service_name ]["replicas" ] = replicas
426+ return ServiceSpec (
427+ service_name , self ._deployment_spec ["spec" ]["services" ][service_name ]
428+ )
429+
430+ def set_service_replicas (self , service_name : str , replicas : int ):
431+ """
432+ Set the number of replicas for a specific service
433+ """
434+ service = self .get_service (service_name )
435+ service .replicas = replicas
430436
431437 def save (self , out_file : str ):
432438 """Save updated deployment to file"""
0 commit comments