Skip to content

Commit

Permalink
feat: add set resource class to launcher and select a resource class …
Browse files Browse the repository at this point in the history
…when launching a session
  • Loading branch information
andre-code committed Jun 18, 2024
1 parent 0386536 commit 9c95aa6
Show file tree
Hide file tree
Showing 25 changed files with 832 additions and 246 deletions.
2 changes: 1 addition & 1 deletion client/run-telepresence.sh
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ then
fi

if [[ $NAMESPACE =~ ^[0-9]+$ ]]; then
NAMESPACE=renku-ci-ui-${NAMESPACE}
NAMESPACE=renku-ci-ds-${NAMESPACE}
fi
SERVICE=${NAMESPACE}-ui
BASE_URL=https://${NAMESPACE}.dev.renku.ch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ import {

import { Loader } from "../../components/Loader";
import { RtkErrorAlert } from "../../components/errors/RtkErrorAlert";
import { useAddUsersToResourcePoolMutation } from "../dataServices/computeResources.api.ts";
import { ResourcePool } from "../dataServices/dataServices.types";
import { useAddUsersToResourcePoolMutation } from "./adminComputeResources.api";
import { useGetKeycloakUsersQuery } from "./adminKeycloak.api";
import useKeycloakRealm from "./useKeycloakRealm.hook";

Expand Down
2 changes: 1 addition & 1 deletion client/src/features/admin/AddResourceClassButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ import {
} from "reactstrap";
import { Loader } from "../../components/Loader";
import { RtkErrorAlert } from "../../components/errors/RtkErrorAlert";
import { useAddResourceClassMutation } from "../dataServices/computeResources.api.ts";
import { NodeAffinity, ResourcePool } from "../dataServices/dataServices.types";
import { useAddResourceClassMutation } from "./adminComputeResources.api";

interface AddResourceClassButtonProps {
resourcePool: ResourcePool;
Expand Down
6 changes: 3 additions & 3 deletions client/src/features/admin/AddResourcePoolButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ import {

import { Loader } from "../../components/Loader";
import { RtkOrNotebooksError } from "../../components/errors/RtkErrorAlert";
import { toFullHumanDuration } from "../../utils/helpers/DurationUtils";
import {
useAddResourcePoolMutation,
useGetResourcePoolsQuery,
} from "./adminComputeResources.api";
} from "../dataServices/computeResources.api.ts";
import { useGetNotebooksVersionQuery } from "../versions/versions.api";
import { AddResourcePoolForm } from "./adminComputeResources.types";
import { toFullHumanDuration } from "../../utils/helpers/DurationUtils";

export default function AddResourcePoolButton() {
const [isOpen, setIsOpen] = useState(false);
Expand All @@ -64,7 +64,7 @@ interface AddResourcePoolModalProps {
}
function AddResourcePoolModal({ isOpen, toggle }: AddResourcePoolModalProps) {
// Fetch existing resource pools and default values
const { data: resourcePools } = useGetResourcePoolsQuery();
const { data: resourcePools } = useGetResourcePoolsQuery({});
const notebookVersion = useGetNotebooksVersionQuery();
const defaultSessionClass = useMemo(
() =>
Expand Down
2 changes: 1 addition & 1 deletion client/src/features/admin/AddUserToResourcePoolButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ import {
} from "reactstrap";
import { Loader } from "../../components/Loader";
import { RtkErrorAlert } from "../../components/errors/RtkErrorAlert";
import { useAddUsersToResourcePoolMutation } from "../dataServices/computeResources.api.ts";
import { ResourcePool } from "../dataServices/dataServices.types";
import { useAddUsersToResourcePoolMutation } from "./adminComputeResources.api";
import adminKeycloakApi from "./adminKeycloak.api";
import { KeycloakUser } from "./adminKeycloak.types";
import useKeycloakRealm from "./useKeycloakRealm.hook";
Expand Down
22 changes: 11 additions & 11 deletions client/src/features/admin/AdminPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,16 @@ import { ErrorAlert } from "../../components/Alert";
import { Loader } from "../../components/Loader";
import { RtkErrorAlert } from "../../components/errors/RtkErrorAlert";
import ChevronFlippedIcon from "../../components/icons/ChevronFlippedIcon";
import { isFetchBaseQueryError } from "../../utils/helpers/ApiErrors";
import { useGetNotebooksVersionQuery } from "../../features/versions/versions.api";
import { isFetchBaseQueryError } from "../../utils/helpers/ApiErrors";
import { toFullHumanDuration } from "../../utils/helpers/DurationUtils";
import {
useDeleteResourcePoolMutation,
useGetResourcePoolUsersQuery,
useGetResourcePoolsQuery,
useGetUsersQuery,
useRemoveUserFromResourcePoolMutation,
} from "../dataServices/computeResources.api.ts";
import {
ResourceClass,
ResourcePool,
Expand All @@ -49,18 +57,10 @@ import SessionEnvironmentsSection from "./SessionEnvironmentsSection";
import UpdateResourceClassButton from "./UpdateResourceClassButton";
import UpdateResourcePoolQuotaButton from "./UpdateResourcePoolQuotaButton";
import UpdateResourcePoolThresholdsButton from "./UpdateResourcePoolThresholdsButton";
import {
useDeleteResourcePoolMutation,
useGetResourcePoolUsersQuery,
useGetResourcePoolsQuery,
useGetUsersQuery,
useRemoveUserFromResourcePoolMutation,
} from "./adminComputeResources.api";
import { ResourcePoolUser } from "./adminComputeResources.types";
import { useGetKeycloakUserQuery } from "./adminKeycloak.api";
import { KeycloakUser } from "./adminKeycloak.types";
import useKeycloakRealm from "./useKeycloakRealm.hook";
import { toFullHumanDuration } from "../../utils/helpers/DurationUtils";

export default function AdminPage() {
return (
Expand Down Expand Up @@ -90,7 +90,7 @@ function AdminComputeResourcesOverview() {
data: resourcePools,
error: resourcePoolsError,
isLoading: resourcePoolsIsLoading,
} = useGetResourcePoolsQuery();
} = useGetResourcePoolsQuery({});

const error = rawUsersError || resourcePoolsError;
const isLoading = rawUsersIsLoading || resourcePoolsIsLoading;
Expand Down Expand Up @@ -132,7 +132,7 @@ function AdminComputeResourcesOverview() {
}

function ResourcePoolsList() {
const { data: resourcePools } = useGetResourcePoolsQuery();
const { data: resourcePools } = useGetResourcePoolsQuery({});

if (!resourcePools) {
return null;
Expand Down
10 changes: 5 additions & 5 deletions client/src/features/admin/DeleteResourceClassButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,16 @@
* limitations under the License.
*/

import cx from "classnames";
import { useCallback, useEffect, useState } from "react";
import { CheckLg, TrashFill, XLg } from "react-bootstrap-icons";
import { Button, Modal, ModalBody, ModalFooter } from "reactstrap";
import { Loader } from "../../components/Loader";
import { useDeleteResourceClassMutation } from "../dataServices/computeResources.api.ts";
import {
ResourceClass,
ResourcePool,
} from "../dataServices/dataServices.types";
import { Button, Modal, ModalBody, ModalFooter } from "reactstrap";
import { CheckLg, TrashFill, XLg } from "react-bootstrap-icons";
import cx from "classnames";
import { useDeleteResourceClassMutation } from "./adminComputeResources.api";
import { Loader } from "../../components/Loader";

interface DeleteResourceClassButtonProps {
resourceClass: ResourceClass;
Expand Down
2 changes: 1 addition & 1 deletion client/src/features/admin/UpdateResourceClassButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ import {
} from "reactstrap";
import { Loader } from "../../components/Loader";
import { RtkErrorAlert } from "../../components/errors/RtkErrorAlert";
import { useUpdateResourceClassMutation } from "../dataServices/computeResources.api.ts";
import {
NodeAffinity,
ResourceClass,
ResourcePool,
} from "../dataServices/dataServices.types";
import { useUpdateResourceClassMutation } from "./adminComputeResources.api";

import styles from "./UpdateResourceClassButton.module.scss";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ import {
} from "reactstrap";
import { Loader } from "../../components/Loader";
import { RtkErrorAlert } from "../../components/errors/RtkErrorAlert";
import { useUpdateResourcePoolMutation } from "../dataServices/computeResources.api.ts";
import { ResourcePool } from "../dataServices/dataServices.types";
import { useUpdateResourcePoolMutation } from "./adminComputeResources.api";

interface UpdateResourcePoolQuotaButtonProps {
resourcePool: ResourcePool;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ import {
} from "reactstrap";
import { Loader } from "../../components/Loader";
import { RtkOrNotebooksError } from "../../components/errors/RtkErrorAlert";
import { useUpdateResourcePoolMutation } from "./adminComputeResources.api";
import { useUpdateResourcePoolMutation } from "../dataServices/computeResources.api.ts";
import { ResourcePool } from "../dataServices/dataServices.types";
import { UpdateResourcePoolThresholdsForm } from "./adminComputeResources.types";
import { useGetNotebooksVersionQuery } from "../versions/versions.api";
import { ResourcePoolDefaultThreshold } from "./AddResourcePoolButton";
import { UpdateResourcePoolThresholdsForm } from "./adminComputeResources.types";
interface UpdateResourcePoolThresholdsButtonProps {
resourcePool: ResourcePool;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/dist/query/react";
import {
ResourceClass,
ResourcePool,
} from "../dataServices/dataServices.types";
ResourcePoolsQueryParams,
} from "./dataServices.types.ts";
import {
AddResourceClassParams,
AddResourcePoolParams,
Expand All @@ -32,17 +33,24 @@ import {
ResourcePoolUser,
UpdateResourceClassParams,
UpdateResourcePoolParams,
} from "./adminComputeResources.types";
} from "../admin/adminComputeResources.types.ts";

const adminComputeResourcesApi = createApi({
reducerPath: "adminComputeResourcesApi",
const computeResourcesApi = createApi({
reducerPath: "computeResourcesApi",
baseQuery: fetchBaseQuery({ baseUrl: "/ui-server/api/data" }),
tagTypes: ["ResourcePool", "ResourcePoolUser"],
tagTypes: ["ResourcePool", "ResourcePoolUser", "ResourceClass"],
endpoints: (builder) => ({
getResourcePools: builder.query<ResourcePool[], void>({
query: () => {
getResourcePools: builder.query<ResourcePool[], ResourcePoolsQueryParams>({
query: ({ cpuRequest, gpuRequest, memoryRequest, storageRequest }) => {
const params = {
...(cpuRequest ? { cpu: cpuRequest } : {}),
...(gpuRequest ? { gpu: gpuRequest } : {}),
...(memoryRequest ? { memory: memoryRequest } : {}),
...(storageRequest ? { max_storage: storageRequest } : {}),
};
return {
url: "resource_pools",
params,
};
},
providesTags: (result) =>
Expand Down Expand Up @@ -110,7 +118,7 @@ const adminComputeResourcesApi = createApi({
body,
};
},
invalidatesTags: ["ResourcePool"],
invalidatesTags: ["ResourcePool", "ResourceClass"],
}),
updateResourcePool: builder.mutation<
ResourcePool,
Expand All @@ -125,6 +133,7 @@ const adminComputeResourcesApi = createApi({
},
invalidatesTags: (_result, _error, { resourcePoolId }) => [
{ id: resourcePoolId, type: "ResourcePool" },
"ResourceClass",
],
}),
deleteResourcePool: builder.mutation<
Expand All @@ -137,7 +146,7 @@ const adminComputeResourcesApi = createApi({
url: `resource_pools/${resourcePoolId}`,
};
},
invalidatesTags: ["ResourcePool"],
invalidatesTags: ["ResourcePool", "ResourceClass"],
}),
addResourceClass: builder.mutation<ResourceClass, AddResourceClassParams>({
query: ({ resourcePoolId, ...params }) => {
Expand All @@ -149,6 +158,7 @@ const adminComputeResourcesApi = createApi({
},
invalidatesTags: (_result, _error, { resourcePoolId }) => [
{ id: resourcePoolId, type: "ResourcePool" },
"ResourceClass",
],
}),
updateResourceClass: builder.mutation<
Expand All @@ -164,6 +174,7 @@ const adminComputeResourcesApi = createApi({
},
invalidatesTags: (_result, _error, { resourcePoolId }) => [
{ id: resourcePoolId, type: "ResourcePool" },
"ResourceClass",
],
}),
deleteResourceClass: builder.mutation<void, DeleteResourceClassParams>({
Expand All @@ -175,6 +186,7 @@ const adminComputeResourcesApi = createApi({
},
invalidatesTags: (_result, _error, { resourcePoolId }) => [
{ id: resourcePoolId, type: "ResourcePool" },
"ResourceClass",
],
}),
addUsersToResourcePool: builder.mutation<
Expand Down Expand Up @@ -207,10 +219,18 @@ const adminComputeResourcesApi = createApi({
{ id: `LIST-${resourcePoolId}`, type: "ResourcePoolUser" },
],
}),
getResourceClassById: builder.query<ResourceClass, number>({
query: (classId) => {
return {
url: `classes/${classId}`,
};
},
providesTags: ["ResourceClass"],
}),
}),
});

export default adminComputeResourcesApi;
export default computeResourcesApi;

export const {
useGetResourcePoolsQuery,
Expand All @@ -224,4 +244,5 @@ export const {
useDeleteResourceClassMutation,
useAddUsersToResourcePoolMutation,
useRemoveUserFromResourcePoolMutation,
} = adminComputeResourcesApi;
useGetResourceClassByIdQuery,
} = computeResourcesApi;
49 changes: 0 additions & 49 deletions client/src/features/dataServices/dataServices.api.ts

This file was deleted.

2 changes: 1 addition & 1 deletion client/src/features/session/components/SessionButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ import useAppDispatch from "../../../utils/customHooks/useAppDispatch.hook";
import useLegacySelector from "../../../utils/customHooks/useLegacySelector.hook";
import RtkQueryErrorsContext from "../../../utils/helpers/RtkQueryErrorsContext";
import { Url } from "../../../utils/helpers/url";
import { useGetResourcePoolsQuery } from "../../dataServices/dataServices.api";
import { useGetResourcePoolsQuery } from "../../dataServices/computeResources.api.ts";
import { ResourceClass } from "../../dataServices/dataServices.types";
import { toggleSessionLogsModal } from "../../display/displaySlice";
import {
Expand Down
Loading

0 comments on commit 9c95aa6

Please sign in to comment.