Skip to content

Commit

Permalink
[RHOAIENG-6519] DW: Support workloads owned by either a RayCluster or…
Browse files Browse the repository at this point in the history
… a Job when querying CPU and Memory usage

Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>
  • Loading branch information
mturley committed Apr 26, 2024
1 parent 5f6fe8b commit 742286f
Show file tree
Hide file tree
Showing 8 changed files with 240 additions and 127 deletions.
16 changes: 16 additions & 0 deletions frontend/src/__mocks__/mockDWUsageByOwnerPrometheusResponse.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { WorkloadMetricIndexedByOwner, WorkloadMetricPromQueryResponse } from '~/api';
import { WorkloadOwnerType } from '~/k8sTypes';
import { mockPrometheusQueryVectorResponse } from './mockPrometheusQueryVectorResponse';

export const mockDWUsageByOwnerPrometheusResponse = (
usageByOwner: WorkloadMetricIndexedByOwner,
): WorkloadMetricPromQueryResponse =>
mockPrometheusQueryVectorResponse({
result: Object.values(WorkloadOwnerType).flatMap((ownerKind) =>
Object.keys(usageByOwner[ownerKind]).map((ownerName) => ({
// eslint-disable-next-line camelcase
metric: { owner_kind: ownerKind, owner_name: ownerName },
value: [0, String(usageByOwner[ownerKind][ownerName])],
})),
),
});
16 changes: 9 additions & 7 deletions frontend/src/__mocks__/mockWorkloadK8sResource.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { genUID } from '~/__mocks__/mockUtils';
import { WorkloadStatusType } from '~/concepts/distributedWorkloads/utils';
import { WorkloadCondition, WorkloadKind, WorkloadPodSet } from '~/k8sTypes';
import { WorkloadCondition, WorkloadKind, WorkloadOwnerType, WorkloadPodSet } from '~/k8sTypes';

const mockWorkloadStatusConditions: Record<WorkloadStatusType, WorkloadCondition[]> = {
Pending: [
Expand Down Expand Up @@ -127,14 +127,16 @@ const mockWorkloadStatusConditions: Record<WorkloadStatusType, WorkloadCondition
type MockResourceConfigType = {
k8sName?: string;
namespace?: string;
ownerJobName?: string;
ownerKind?: WorkloadOwnerType;
ownerName?: string;
mockStatus?: WorkloadStatusType | null;
podSets?: WorkloadPodSet[];
};
export const mockWorkloadK8sResource = ({
k8sName = 'test-workload',
namespace = 'test-project',
ownerJobName,
ownerKind = WorkloadOwnerType.Job,
ownerName,
mockStatus = WorkloadStatusType.Succeeded,
podSets = [],
}: MockResourceConfigType): WorkloadKind => ({
Expand All @@ -150,16 +152,16 @@ export const mockWorkloadK8sResource = ({
namespace,
resourceVersion: '9279356',
uid: genUID('workload'),
...(ownerJobName
...(ownerName
? {
ownerReferences: [
{
apiVersion: 'batch/v1',
blockOwnerDeletion: true,
controller: true,
kind: 'Job',
name: ownerJobName,
uid: genUID('job'),
kind: ownerKind,
name: ownerName,
uid: genUID(ownerKind.toLowerCase()),
},
],
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { mockK8sResourceList } from '~/__mocks__/mockK8sResourceList';
import { mockProjectK8sResource } from '~/__mocks__/mockProjectK8sResource';
import { mockPrometheusQueryVectorResponse } from '~/__mocks__/mockPrometheusQueryVectorResponse';
import { mockWorkloadK8sResource } from '~/__mocks__/mockWorkloadK8sResource';
import { ClusterQueueKind, LocalQueueKind, WorkloadKind } from '~/k8sTypes';
import { ClusterQueueKind, LocalQueueKind, WorkloadKind, WorkloadOwnerType } from '~/k8sTypes';
import { WorkloadStatusType } from '~/concepts/distributedWorkloads/utils';
import { mockClusterQueueK8sResource } from '~/__mocks__/mockClusterQueueK8sResource';
import { mockLocalQueueK8sResource } from '~/__mocks__/mockLocalQueueK8sResource';
Expand Down Expand Up @@ -35,9 +35,16 @@ const initIntercepts = ({
mockLocalQueueK8sResource({ name: 'test-local-queue', namespace: 'test-project' }),
],
workloads = [
mockWorkloadK8sResource({ k8sName: 'test-workload', mockStatus: WorkloadStatusType.Succeeded }),
mockWorkloadK8sResource({
k8sName: 'test-workload',
ownerKind: WorkloadOwnerType.Job,
ownerName: 'test-workload-job',
mockStatus: WorkloadStatusType.Succeeded,
}),
mockWorkloadK8sResource({
k8sName: 'test-workload-2',
ownerKind: WorkloadOwnerType.RayCluster,
ownerName: 'test-workload-2-rc',
mockStatus: WorkloadStatusType.Succeeded,
}),
],
Expand Down
Loading

0 comments on commit 742286f

Please sign in to comment.