Skip to content

Commit dc46a10

Browse files
feat: api endpoint integration for ClusterQueues and LocalQueues
1 parent 26b12b1 commit dc46a10

3 files changed

Lines changed: 131 additions & 2 deletions

File tree

‎src/components/hooks/useMultiKueueResources.ts‎

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
11
import { useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk';
22
import { useMemo } from 'react';
3-
import { MultiKueueClusterModel, WorkloadModel } from '../../models';
4-
import { MultiKueueClusterKind, WorkloadKind } from '../../types';
3+
import {
4+
ClusterQueueModel,
5+
LocalQueueModel,
6+
MultiKueueClusterModel,
7+
WorkloadModel,
8+
} from '../../models';
9+
import {
10+
ClusterQueueKind,
11+
LocalQueueKind,
12+
MultiKueueClusterKind,
13+
WorkloadKind,
14+
} from '../../types';
515
import { useMultiClusterProxyService } from './useMultiClusterProxyService';
616

717
/**
@@ -59,3 +69,49 @@ export const useWorkloads = (
5969

6070
return useK8sWatchResource<WorkloadKind[]>(watchOptions);
6171
};
72+
73+
export const useClusterQueues = (): [ClusterQueueKind[], boolean, unknown] => {
74+
const { isHub } = useMultiClusterProxyService({});
75+
76+
const watchOptions = useMemo(
77+
() =>
78+
isHub
79+
? {
80+
isList: true,
81+
groupVersionKind: {
82+
group: ClusterQueueModel.apiGroup,
83+
kind: ClusterQueueModel.kind,
84+
version: ClusterQueueModel.apiVersion,
85+
},
86+
}
87+
: null,
88+
[isHub],
89+
);
90+
91+
return useK8sWatchResource<ClusterQueueKind[]>(watchOptions);
92+
};
93+
94+
export const useLocalQueues = (
95+
namespace: string,
96+
): [LocalQueueKind[], boolean, unknown] => {
97+
const { isHub } = useMultiClusterProxyService({});
98+
99+
const watchOptions = useMemo(
100+
() =>
101+
isHub && namespace
102+
? {
103+
isList: true,
104+
groupVersionKind: {
105+
group: LocalQueueModel.apiGroup,
106+
kind: LocalQueueModel.kind,
107+
version: LocalQueueModel.apiVersion,
108+
},
109+
...(namespace !== '-' ? { namespace } : {}),
110+
namespaced: true,
111+
}
112+
: null,
113+
[isHub, namespace],
114+
);
115+
116+
return useK8sWatchResource<LocalQueueKind[]>(watchOptions);
117+
};

‎src/models.ts‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,3 +537,35 @@ export const WorkloadModel: K8sKind = {
537537
crd: true,
538538
color,
539539
};
540+
541+
export const ClusterQueueModel: K8sKind = {
542+
apiGroup: 'kueue.x-k8s.io',
543+
apiVersion: 'v1beta2',
544+
label: 'ClusterQueue',
545+
labelKey: 'ClusterQueue',
546+
labelPluralKey: 'ClusterQueues',
547+
plural: 'clusterqueues',
548+
abbr: 'CQ',
549+
namespaced: false,
550+
kind: 'ClusterQueue',
551+
id: 'clusterqueue',
552+
labelPlural: 'ClusterQueues',
553+
crd: true,
554+
color,
555+
};
556+
557+
export const LocalQueueModel: K8sKind = {
558+
apiGroup: 'kueue.x-k8s.io',
559+
apiVersion: 'v1beta2',
560+
label: 'LocalQueue',
561+
labelKey: 'LocalQueue',
562+
labelPluralKey: 'LocalQueues',
563+
plural: 'localqueues',
564+
abbr: 'LQ',
565+
namespaced: true,
566+
kind: 'LocalQueue',
567+
id: 'localqueue',
568+
labelPlural: 'LocalQueues',
569+
crd: true,
570+
color,
571+
};

‎src/types/kueue.ts‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,44 @@ export type WorkloadKind = K8sResourceCommon & {
6363
conditions?: (Condition & { observedGeneration?: number })[];
6464
};
6565
};
66+
67+
export type Resource = {
68+
name: string;
69+
nominalQuota?: string;
70+
total?: string;
71+
};
72+
73+
export type Flavor = {
74+
name: string;
75+
resources?: Resource[];
76+
};
77+
78+
export type ResourceGroup = {
79+
coveredResources?: string[];
80+
flavors?: Flavor[];
81+
};
82+
83+
export type ClusterQueueKind = K8sResourceCommon & {
84+
spec?: {
85+
queueingStrategy: string;
86+
resourceGroups?: ResourceGroup[];
87+
};
88+
status?: {
89+
admittedWorkloads?: number;
90+
pendingWorkloads?: number;
91+
conditions?: (Condition & { observedGeneration?: number })[];
92+
};
93+
};
94+
95+
export type LocalQueueKind = K8sResourceCommon & {
96+
spec?: {
97+
clusterQueue?: string;
98+
};
99+
status?: {
100+
admittedWorkloads?: number;
101+
pendingWorkloads?: number;
102+
flavorsReservation?: Flavor[];
103+
flavorsUsage?: Flavor[];
104+
conditions?: (Condition & { observedGeneration?: number })[];
105+
};
106+
};

0 commit comments

Comments
 (0)