Skip to content

Commit fe542a9

Browse files
authored
fix: cloning repos token urls (#1253)
1 parent 62c200e commit fe542a9

4 files changed

Lines changed: 30 additions & 9 deletions

File tree

bases/renku_data_services/data_api/config.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def from_env(cls, db: DBConfig | None = None) -> Self:
6363
else:
6464
gitlab_url = None
6565

66+
nb_config = NotebooksConfig.from_env(db, enable_internal_gitlab=enable_internal_gitlab)
6667
return cls(
6768
enable_internal_gitlab=enable_internal_gitlab,
6869
version=os.environ.get("VERSION", "0.0.1"),
@@ -71,7 +72,7 @@ def from_env(cls, db: DBConfig | None = None) -> Self:
7172
k8s_config_root=os.environ.get("K8S_CONFIGS_ROOT", "/secrets/kube_configs"),
7273
db=db,
7374
builds=BuildsConfig.from_env(),
74-
nb_config=NotebooksConfig.from_env(db, enable_internal_gitlab=enable_internal_gitlab),
75+
nb_config=nb_config,
7576
secrets=PublicSecretsConfig.from_env(),
7677
sentry=SentryConfig.from_env(),
7778
posthog=PosthogConfig.from_env(),
@@ -83,5 +84,5 @@ def from_env(cls, db: DBConfig | None = None) -> Self:
8384
gitlab_url=gitlab_url,
8485
log_cfg=LoggingConfig.from_env(),
8586
alertmanager_webhook_role=os.environ.get("ALERTMANAGER_WEBHOOK_ROLE", "alertmanager-webhook"),
86-
deposit_config=DepositConfig.from_env(),
87+
deposit_config=DepositConfig.from_env(nb_config.sessions.renku_url),
8788
)

components/renku_data_services/data_connectors/config.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class DepositConfig:
2929
cluster_id: Final[ClusterId] = DEFAULT_K8S_CLUSTER
3030

3131
@classmethod
32-
def from_env(cls) -> DepositConfig:
32+
def from_env(cls, renku_url: str) -> DepositConfig:
3333
"""Create a data deposit configuration from environment variables."""
3434
# NOTE: The deserialize method from the K8s API client needs the json payload to be in
3535
# a `data` property on the object passed into the deserializer.
@@ -57,8 +57,8 @@ def from_env(cls) -> DepositConfig:
5757
"Could not validate DATA_DEPOSITS_NODE_TOLERATIONS. Will not use tolerations for data upload jobs."
5858
)
5959
return cls(
60-
image=os.environ["DATA_DEPOSITS_JOB_IMAGE"],
61-
renku_url=os.environ["RENKU_URL"],
60+
image=os.environ.get("DATA_DEPOSITS_JOB_IMAGE", "ghcr.io/swissdatasciencecenter/renku-cli"),
61+
renku_url=renku_url,
6262
tolerations=tolerations,
6363
node_selector=node_selector,
6464
namespace=os.environ["KUBERNETES_NAMESPACE"],

components/renku_data_services/notebooks/api/classes/data_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def create(cls, csr: ConnectedServicesRepository, enable_internal_gitlab: bool)
154154
return GitProviderHelper(
155155
connected_services_repo=csr,
156156
service_url=data_service_url,
157-
renku_url=f"http://{sessions_config.ingress.host}",
157+
renku_url=sessions_config.renku_url,
158158
internal_gitlab_url=git_config.url,
159159
enable_internal_gitlab=enable_internal_gitlab,
160160
)

components/renku_data_services/notebooks/config/dynamic.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from dataclasses import dataclass, field
88
from enum import Enum
99
from io import StringIO
10-
from typing import Any, ClassVar, Self, Union
10+
from typing import Any, ClassVar, Literal, Self, Union
1111

1212
import yaml
1313
from kubernetes import client
@@ -256,6 +256,16 @@ def from_env(cls) -> Self:
256256
annotations=yaml.safe_load(StringIO(os.environ.get("NB_SESSIONS__INGRESS__ANNOTATIONS", "{}"))),
257257
)
258258

259+
@property
260+
def scheme(self) -> Literal["https"] | Literal["http"]:
261+
if self.tls_secret or self.use_default_cluster_tls_cert:
262+
return "https"
263+
return "http"
264+
265+
@property
266+
def renku_url(self) -> str:
267+
return f"{self.scheme}::{self.host}"
268+
259269

260270
@dataclass
261271
class _GenericCullingConfig:
@@ -356,6 +366,11 @@ def from_env(cls) -> Self:
356366
)
357367

358368

369+
def _get_renku_url_fallback(ingress_config: _SessionIngress) -> str:
370+
scheme = "https" if ingress_config.tls_secret or ingress_config.use_default_cluster_tls_cert else "http"
371+
return f"{scheme}::{ingress_config.host}"
372+
373+
359374
@dataclass
360375
class _SessionConfig:
361376
culling: _SessionCullingConfig
@@ -368,6 +383,7 @@ class _SessionConfig:
368383
storage: _SessionStorageConfig
369384
containers: _SessionContainers
370385
ssh: _SessionSshConfig
386+
renku_url: str
371387
default_image: str = "renku/singleuser:latest"
372388
enforce_cpu_limits: CPUEnforcement = CPUEnforcement.OFF
373389
termination_warning_duration_seconds: int = 12 * 60 * 60
@@ -386,12 +402,13 @@ class _SessionConfig:
386402

387403
@classmethod
388404
def from_env(cls) -> Self:
405+
ingress = _SessionIngress.from_env()
389406
return cls(
390407
culling=_SessionCullingConfig.from_env(),
391408
git_proxy=_GitProxyConfig.from_env(),
392409
git_rpc_server=_GitRpcServerConfig.from_env(),
393410
git_clone=_GitCloneConfig.from_env(),
394-
ingress=_SessionIngress.from_env(),
411+
ingress=ingress,
395412
ca_certs=_CustomCaCertsConfig.from_env(),
396413
oidc=_SessionOidcConfig.from_env(),
397414
storage=_SessionStorageConfig.from_env(),
@@ -404,16 +421,18 @@ def from_env(cls) -> Self:
404421
node_selector=yaml.safe_load(StringIO(os.environ.get("NB_SESSIONS__NODE_SELECTOR", "{}"))),
405422
affinity=yaml.safe_load(StringIO(os.environ.get("NB_SESSIONS__AFFINITY", "{}"))),
406423
tolerations=yaml.safe_load(StringIO(os.environ.get("NB_SESSIONS__TOLERATIONS", "[]"))),
424+
renku_url=os.environ.get("RENKU_URL") or _get_renku_url_fallback(ingress),
407425
)
408426

409427
@classmethod
410428
def _for_testing(cls) -> Self:
429+
ingress = _SessionIngress(host="localhost", tls_secret="some-secret") # nosec: B106
411430
return cls(
412431
culling=_SessionCullingConfig.from_env(),
413432
git_proxy=_GitProxyConfig(renku_client_secret="not-defined"), # nosec B106
414433
git_rpc_server=_GitRpcServerConfig.from_env(),
415434
git_clone=_GitCloneConfig.from_env(),
416-
ingress=_SessionIngress(host="localhost", tls_secret="some-secret"), # nosec: B106
435+
ingress=ingress,
417436
ca_certs=_CustomCaCertsConfig.from_env(),
418437
oidc=_SessionOidcConfig(
419438
client_id="not-defined",
@@ -432,6 +451,7 @@ def _for_testing(cls) -> Self:
432451
node_selector=yaml.safe_load(StringIO(os.environ.get("", "{}"))),
433452
affinity=yaml.safe_load(StringIO(os.environ.get("", "{}"))),
434453
tolerations=yaml.safe_load(StringIO(os.environ.get("", "[]"))),
454+
renku_url=os.environ.get("RENKU_URL") or _get_renku_url_fallback(ingress),
435455
)
436456

437457
@property

0 commit comments

Comments
 (0)