123123
124124log = logging .getLogger ("nwp-consumer" )
125125
126+ # List of available model names
127+ available_models_names = [
128+ "default" ,
129+ "um-global-10km-india" ,
130+ "um-global-10km-uk" ,
131+ "um-ukv-2km" ,
132+ ]
133+
126134
127135class MetOfficeDatahubRawRepository (ports .RawRepository ):
128136 """Repository implementation for data from MetOffice's DataHub service."""
@@ -153,11 +161,11 @@ def __init__(self, order_id: str, api_key: str) -> None:
153161 @override
154162 def repository () -> entities .RawRepositoryMetadata :
155163
156- requested_model : str = os .getenv ("MODEL" , default = "default" )
157164 delay_minutes_all = {"default" : 300 ,
158165 "um-global-10km-india" : 300 ,
159166 "um-global-10km-uk" :300 ,
160167 "um-ukv-2km" : 120 }
168+ requested_model : str = get_requested_model_name ()
161169
162170 return entities .RawRepositoryMetadata (
163171 name = "MetOffice-Weather-Datahub" ,
@@ -179,15 +187,7 @@ def repository() -> entities.RawRepositoryMetadata:
179187 @staticmethod
180188 @override
181189 def model () -> entities .ModelMetadata :
182- requested_model : str = os .getenv ("MODEL" , default = "default" )
183- if requested_model not in MetOfficeDatahubRawRepository .repository ().available_models :
184- log .warn (
185- f"Unknown model '{ requested_model } ' requested, falling back to default. "
186- "MetOffice Datahub repository only supports "
187- f"'{ list (MetOfficeDatahubRawRepository .repository ().available_models .keys ())} '. "
188- "Ensure MODEL environment variable is set to a valid model name." ,
189- )
190- requested_model = "default"
190+ requested_model : str = get_requested_model_name ()
191191 return MetOfficeDatahubRawRepository .repository ().available_models [requested_model ]
192192
193193 @classmethod
@@ -524,3 +524,16 @@ def _convert_ukv(path: pathlib.Path) -> ResultE[list[xr.DataArray]]:
524524 )
525525
526526 return Success ([da ])
527+
528+
529+ def get_requested_model_name () -> str :
530+ """Get the requested model name from the environment variable."""
531+ requested_model : str = os .getenv ("MODEL" , default = "default" )
532+ if requested_model not in available_models_names :
533+ log .warn (
534+ f"Unknown model '{ requested_model } ' requested, falling back to default. "
535+ f"MetOffice Datahub repository only supports '{ available_models_names } '. "
536+ "Ensure MODEL environment variable is set to a valid model name." ,
537+ )
538+ requested_model = "default"
539+ return requested_model
0 commit comments