Skip to content

Commit beb3ea5

Browse files
committed
Inject defaults for required rclone options for "test connection"
1 parent 6f48d73 commit beb3ea5

File tree

1 file changed

+20
-1
lines changed
  • components/renku_data_services/storage

1 file changed

+20
-1
lines changed

components/renku_data_services/storage/rclone.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ async def test_connection(
6363

6464
# Obscure configuration and transform if needed
6565
obscured_config = await self.obscure_config(configuration)
66-
transformed_config = self.transform_polybox_switchdriver_config(obscured_config)
66+
transformed_config = self.inject_default_values(self.transform_polybox_switchdriver_config(obscured_config))
6767

6868
with tempfile.NamedTemporaryFile(mode="w+", delete=False, encoding="utf-8") as f:
6969
config = "\n".join(f"{k}={v}" for k, v in transformed_config.items())
@@ -166,6 +166,25 @@ async def get_doi_metadata(self, configuration: Union["RCloneConfig", dict[str,
166166
detail=f"Reason: {stderr.decode().strip()}",
167167
)
168168

169+
def inject_default_values(
170+
self, config: Union["RCloneConfig", dict[str, Any]]
171+
) -> Union["RCloneConfig", dict[str, Any]]:
172+
"""Adds default values for required options that are not provided in the config."""
173+
provider = self.get_provider(config)
174+
for opt in provider.options:
175+
if not opt.required or not opt.default or opt.name in config:
176+
continue
177+
178+
match opt.default:
179+
case RCloneTriState() as ts:
180+
def_val: Any = ts.value
181+
case v:
182+
def_val = v
183+
184+
config.update({opt.name: def_val})
185+
186+
return config
187+
169188
@staticmethod
170189
def transform_polybox_switchdriver_config(
171190
configuration: Union["RCloneConfig", dict[str, Any]],

0 commit comments

Comments
 (0)