Skip to content

Commit

Permalink
frontend: KubeObject: Refactor getAuthorization logic
Browse files Browse the repository at this point in the history
This change updates the logic of the getAuthorization function in
KubeObject, which previously intended to test auth by separating the
group from its respective version when one of these was missing. Now,
these two fields are linked and grabbed together from apiInfo when one
is missing.

Fixes: #2633

Signed-off-by: Evangelos Skopelitis <[email protected]>
  • Loading branch information
skoeva committed Dec 20, 2024
1 parent 25834ad commit cf5b206
Showing 1 changed file with 6 additions and 18 deletions.
24 changes: 6 additions & 18 deletions frontend/src/lib/k8s/KubeObject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -513,31 +513,19 @@ export class KubeObject<T extends KubeObjectInterface | KubeEvent = any> {

// @todo: We should get the API info from the API endpoint.

// If we already have the group, version, and resource, then we can make the request
// without trying the API info, which may have several versions and thus be less optimal.
// If we already have the group and version, then we can make the request without
// trying the API info, which may have several versions and thus be less optimal.
if (!!resourceAttrs.group && !!resourceAttrs.version && !!resourceAttrs.resource) {
return this.fetchAuthorization(resourceAttrs);
}

// If we don't have the group, version, and resource, then we have to try all of the
// If we don't have the group or version, then we have to try all of the
// API info versions until we find one that works.
const apiInfo = this.apiEndpoint.apiInfo;
for (let i = 0; i < apiInfo.length; i++) {
const { group, version, resource } = apiInfo[i];
// We only take from the details from the apiInfo if they're missing from the resourceAttrs.
// The idea is that, since this function may also be called from the instance's getAuthorization,
// it may already have the details from the instance's API version.
const attrs = { ...resourceAttrs };

if (!!attrs.resource) {
attrs.resource = resource;
}
if (!!attrs.group) {
attrs.group = group;
}
if (!!attrs.version) {
attrs.version = version;
}
const { group, version } = apiInfo[i];
// The group and version are tied, so we take both if one is missing.
const attrs = { ...resourceAttrs, group: group, version: version };

let authResult;

Expand Down

0 comments on commit cf5b206

Please sign in to comment.