Skip to content

Commit 69d067b

Browse files
authored
fix image permissions check after no-org removal (#2388)
1 parent 12e7ff3 commit 69d067b

File tree

5 files changed

+20
-15
lines changed

5 files changed

+20
-15
lines changed

platform_api/handlers/jobs_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ def infer_permissions_from_container(
562562
if container.belongs_to_registry(registry_host):
563563
permissions.append(
564564
Permission(
565-
uri=str(container.to_image_uri(registry_host, cluster_name, org_name)),
565+
uri=str(container.to_image_uri(registry_host, cluster_name)),
566566
action="read",
567567
)
568568
)

platform_api/orchestrator/job_request.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,14 +429,13 @@ def belongs_to_registry(self, registry_host: str) -> bool:
429429
prefix = f"{registry_host}/"
430430
return self.image.startswith(prefix)
431431

432-
def to_image_uri(self, registry_host: str, cluster_name: str, org_name: str) -> URL:
432+
def to_image_uri(self, registry_host: str, cluster_name: str) -> URL:
433433
assert self.belongs_to_registry(registry_host), "Unknown registry"
434434
prefix = f"{registry_host}/"
435435
repo = self.image[len(prefix) :]
436436
path, *_ = repo.split(":", 1)
437437
assert cluster_name
438-
assert org_name
439-
return URL.build(scheme="image", host=cluster_name) / org_name / path
438+
return URL.build(scheme="image", host=cluster_name) / path
440439

441440
def get_secrets(self) -> list[Secret]:
442441
return list(

tests/integration/test_api.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3494,7 +3494,9 @@ async def test_forbidden_image(
34943494
) -> None:
34953495
payload = {
34963496
"container": {
3497-
"image": "registry.dev.neuromation.io/anotheruser/image:tag",
3497+
"image": (
3498+
f"registry.dev.neuromation.io/{test_org_name}/anotheruser/image:tag"
3499+
),
34983500
"command": "true",
34993501
"resources": {"cpu": 0.1, "memory_mb": 32, "memory": 32 * 2**20},
35003502
}
@@ -3521,10 +3523,14 @@ async def test_allowed_image(
35213523
client: aiohttp.ClientSession,
35223524
jobs_client: JobsClient,
35233525
regular_user: _User,
3526+
test_org_name: str,
35243527
) -> None:
35253528
payload = {
35263529
"container": {
3527-
"image": f"registry.dev.neuromation.io/{regular_user.name}/image:tag",
3530+
"image": (
3531+
f"registry.dev.neuromation.io/{test_org_name}"
3532+
f"/{regular_user.name}/image:tag"
3533+
),
35283534
"command": "true",
35293535
"resources": {"cpu": 0.1, "memory_mb": 32, "memory": 32 * 2**20},
35303536
}

tests/unit/test_job.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -114,34 +114,34 @@ def test_belongs_to_registry(self) -> None:
114114

115115
def test_to_image_uri_failure(self) -> None:
116116
container = Container(
117-
image="registry.com/project/testimage",
117+
image="registry.com/test-org/project/testimage",
118118
resources=ContainerResources(cpu=1, memory=128 * 10**6),
119119
)
120120
with pytest.raises(AssertionError, match="Unknown registry"):
121-
container.to_image_uri("example.com", "test-cluster", "test-org")
121+
container.to_image_uri("example.com", "test-cluster")
122122

123123
def test_to_image_uri(self) -> None:
124124
container = Container(
125-
image="example.com/project/testimage%2d",
125+
image="example.com/test-org/project/testimage%2d",
126126
resources=ContainerResources(cpu=1, memory=128 * 10**6),
127127
)
128-
uri = container.to_image_uri("example.com", "test-cluster", "test-org")
128+
uri = container.to_image_uri("example.com", "test-cluster")
129129
assert uri == URL("image://test-cluster/test-org/project/testimage%252d")
130130

131131
def test_to_image_uri_registry_with_custom_port(self) -> None:
132132
container = Container(
133-
image="example.com:5000/project/testimage",
133+
image="example.com:5000/test-org/project/testimage",
134134
resources=ContainerResources(cpu=1, memory=128 * 10**6),
135135
)
136-
uri = container.to_image_uri("example.com:5000", "test-cluster", "test-org")
136+
uri = container.to_image_uri("example.com:5000", "test-cluster")
137137
assert uri == URL("image://test-cluster/test-org/project/testimage")
138138

139139
def test_to_image_uri_ignore_tag(self) -> None:
140140
container = Container(
141-
image="example.com/project/testimage:latest",
141+
image="example.com/test-org/project/testimage:latest",
142142
resources=ContainerResources(cpu=1, memory=128 * 10**6),
143143
)
144-
uri = container.to_image_uri("example.com", "test-cluster", "test-org")
144+
uri = container.to_image_uri("example.com", "test-cluster")
145145
assert uri == URL("image://test-cluster/test-org/project/testimage")
146146

147147

tests/unit/test_models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1760,7 +1760,7 @@ def test_volumes(self) -> None:
17601760

17611761
def test_image(self) -> None:
17621762
container = Container(
1763-
image="example.com/testuser/image",
1763+
image="example.com/test-org/testuser/image",
17641764
resources=ContainerResources(cpu=0.1, memory=16 * 10**6),
17651765
)
17661766
permissions = infer_permissions_from_container(

0 commit comments

Comments
 (0)