Skip to content

Commit c53bd56

Browse files
committed
feat(cli): get image repository host on login
1 parent 2108f65 commit c53bd56

File tree

4 files changed

+43
-10
lines changed

4 files changed

+43
-10
lines changed

renku/core/login.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,25 @@ def login(endpoint: Optional[str], git_login: bool, yes: bool):
135135
else:
136136
raise errors.AuthenticationError(f"Invalid status code from server: {status_code} - {response.content}")
137137

138+
image_regsitry_host_req_url = _get_url(parsed_endpoint, path=f"/api/config/imageRegistries")
139+
image_registry_host_res = requests.get(image_regsitry_host_req_url)
140+
if image_registry_host_res.status_code != 200:
141+
raise errors.ConfigurationError(
142+
f"Cannot get the image registry host from {image_regsitry_host_req_url}, "
143+
f"got unexpected status code {image_registry_host_res.status_code}"
144+
)
145+
image_registry_host = image_registry_host_res.json().get("default")
146+
if not image_registry_host:
147+
raise errors.ConfigurationError(
148+
f"Cannot get the image registry host from the response {image_registry_host_res.text}"
149+
)
150+
set_value(
151+
section=CONFIG_SECTION,
152+
key=f"{parsed_endpoint.netloc}_image_registry_host",
153+
value=image_registry_host,
154+
global_only=True,
155+
)
156+
138157
access_token = response.json().get("access_token")
139158
_store_token(parsed_endpoint.netloc, access_token)
140159

renku/core/session/session.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from renku.core import errors
2828
from renku.core.config import get_value
2929
from renku.core.plugin.session import get_supported_session_providers
30-
from renku.core.session.utils import get_image_repository_host, get_renku_project_name
30+
from renku.core.session.utils import get_renku_host, get_renku_project_name
3131
from renku.core.util import communication
3232
from renku.core.util.os import safe_read_yaml
3333
from renku.core.util.ssh import SystemSSHConfig, generate_ssh_keys
@@ -125,7 +125,7 @@ def session_start(
125125
project_name = get_renku_project_name()
126126
if image_name is None:
127127
tag = project_context.repository.head.commit.hexsha[:7]
128-
repo_host = get_image_repository_host()
128+
repo_host = get_value("http", f"{get_renku_host()}_image_registry_host")
129129
image_name = f"{project_name}:{tag}"
130130
if repo_host:
131131
image_name = f"{repo_host}/{image_name}"

renku/core/session/utils.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,9 @@ def get_renku_url() -> Optional[str]:
4646
return renku_url
4747

4848

49-
def get_image_repository_host() -> Optional[str]:
50-
"""Derive the hostname for the gitlab container registry."""
51-
# NOTE: Used to circumvent cases where the registry URL is not guessed correctly
52-
# remove once #3301 is done
53-
if "RENKU_IMAGE_REGISTRY" in os.environ:
54-
return os.environ["RENKU_IMAGE_REGISTRY"]
55-
renku_url = get_renku_url()
49+
def get_renku_host() -> Optional[str]:
50+
"""Derive the URL of the Renku deployment."""
51+
renku_url = parse_authentication_endpoint(use_remote=True)
5652
if not renku_url:
5753
return None
58-
return "registry." + urllib.parse.urlparse(renku_url).netloc
54+
return renku_url.netloc

tests/core/models/test_git.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,24 @@
296296
"owner": "renku-test",
297297
"env": "https://gitlab.example.com",
298298
},
299+
{
300+
"href": "https://dev.renku.ch/gitlab/group1/renku-test/test-2022-11-11-17-01-46.git",
301+
"scheme": "https",
302+
"hostname": "dev.renku.ch",
303+
"name": "test-2022-11-11-17-01-46",
304+
"path": "gitlab/group1/renku-test/test-2022-11-11-17-01-46.git",
305+
"owner": "group1/renku-test",
306+
"env": "https://dev.renku.ch/gitlab/",
307+
},
308+
{
309+
"href": "https://gitlab.example.com/group1/group2/renku-test/test-2022-11-11-17-01-46.git",
310+
"scheme": "https",
311+
"hostname": "gitlab.example.com",
312+
"name": "test-2022-11-11-17-01-46",
313+
"path": "group1/group2/renku-test/test-2022-11-11-17-01-46.git",
314+
"owner": "group1/group2/renku-test",
315+
"env": "https://gitlab.example.com",
316+
},
299317
],
300318
)
301319
def test_valid_href(fields):

0 commit comments

Comments
 (0)