Skip to content

Commit 4dbca15

Browse files
committed
fix(workbenches): implement get_username for OpenShift <=4.14
Turns out SelfSubjectReview is only available starting OpenShift 4.15. fixup incorporate User resource * RedHatQE/openshift-python-wrapper#2387 fixup incorporate SelfSubjectReview resource * RedHatQE/openshift-python-wrapper#2389
1 parent 560f952 commit 4dbca15

4 files changed

Lines changed: 586 additions & 572 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ dependencies = [
6363
"timeout-sampler>=1.0.6",
6464
"shortuuid>=1.0.13",
6565
"jira>=3.8.0",
66-
"openshift-python-wrapper>=11.0.38",
66+
"openshift-python-wrapper>=11.0.50",
6767
"semver>=3.0.4",
6868
"pytest-order>=1.3.0",
6969
"marshmallow==3.26.1,<4", # this version is needed for pytest-jira

tests/workbenches/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ def default_notebook(
8383

8484
# Set the correct username
8585
username = get_username(dyn_client=admin_client)
86+
assert username, "Failed to determine username from the cluster"
8687

8788
# Set the image path based on internal image registry status
8889
minimal_image_path = (

tests/workbenches/utils.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
1-
from kubernetes.dynamic import DynamicClient, Resource, ResourceInstance
1+
from kubernetes.dynamic import DynamicClient
2+
from ocp_resources.self_subject_review import SelfSubjectReview
3+
from ocp_resources.user import User
4+
from simple_logger.logger import get_logger
25

6+
LOGGER = get_logger(name=__name__)
37

4-
def get_username(dyn_client: DynamicClient) -> str:
8+
9+
def get_username(dyn_client: DynamicClient) -> str | None:
510
"""Gets the username for the client (see kubectl -v8 auth whoami)"""
6-
self_subject_review_resource: Resource = dyn_client.resources.get(
7-
api_version="authentication.k8s.io/v1", kind="SelfSubjectReview"
8-
)
9-
self_subject_review: ResourceInstance = dyn_client.create(self_subject_review_resource)
10-
username: str = self_subject_review.status.userInfo.username
11+
username: str | None
12+
try:
13+
self_subject_review = SelfSubjectReview(client=dyn_client, name="selfSubjectReview").create()
14+
assert self_subject_review
15+
username = self_subject_review.status.userInfo.username
16+
except NotImplementedError:
17+
LOGGER.info(
18+
"SelfSubjectReview not found. Falling back to user.openshift.io/v1/users/~ for OpenShift versions <=4.14"
19+
)
20+
user = User(client=dyn_client, name="~").instance
21+
username = user.get("metadata", {}).get("name", None)
22+
1123
return username

0 commit comments

Comments
 (0)