Skip to content

Commit

Permalink
🐛 Prefer Task field kind over addon
Browse files Browse the repository at this point in the history
Resolves: #1970

  - When creating a new `Taskgroup`, specify `kind` instead of
    `addon`

  - Process Tasks where `kind` may be missing and `addon` is given
    instead (tasks created before this change)

  - Make `Task.id` and `Taskgroup.id` required, `New<>` as needed

Signed-off-by: Ian Bolton <[email protected]>
Signed-off-by: Scott J Dickerson <[email protected]>
  • Loading branch information
ibolton336 authored and sjd78 committed Jun 20, 2024
1 parent 5b2352d commit 0e4967d
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 15 deletions.
21 changes: 11 additions & 10 deletions client/src/app/api/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -306,21 +306,21 @@ export type TaskState =
| "Postponed";

export interface Task {
id?: number;
id: number;
createUser?: string;
updateUser?: string;
createTime?: string;

name: string;
kind: string;
addon: string;
extensions: string[];
name?: string;
kind?: string;
addon?: string;
extensions?: string[];
state?: TaskState;
locator?: string;
priority?: number;
policy: TaskPolicy;
ttl: TTL;
data: TaskData;
policy?: TaskPolicy;
ttl?: TTL;
data?: TaskData;
application: Ref;
bucket?: Ref;
pod?: string;
Expand Down Expand Up @@ -406,9 +406,10 @@ export interface TaskgroupTask {
}

export interface Taskgroup {
id?: number;
id: number;
name: string;
addon: string;
kind?: string;
addon?: string;
data: TaskData;
tasks: TaskgroupTask[];
}
Expand Down
2 changes: 1 addition & 1 deletion client/src/app/api/rest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ export const getTaskQueue = (addon?: string): Promise<TaskQueue> =>
.get<TaskQueue>(`${TASKS}/report/queue`, { params: { addon } })
.then(({ data }) => data);

export const createTaskgroup = (obj: Taskgroup) =>
export const createTaskgroup = (obj: New<Taskgroup>) =>
axios.post<Taskgroup>(TASKGROUPS, obj).then((response) => response.data);

export const submitTaskgroup = (obj: Taskgroup) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { useTranslation } from "react-i18next";

import {
Application,
New,
TaskData,
Taskgroup,
TaskgroupTask,
Expand Down Expand Up @@ -70,9 +71,9 @@ const defaultTaskData: TaskData = {
},
};

export const defaultTaskgroup: Taskgroup = {
export const defaultTaskgroup: New<Taskgroup> = {
name: `taskgroup.analyzer`,
addon: "analyzer",
kind: "analyzer",
data: {
...defaultTaskData,
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ export const ApplicationsTable: React.FC = () => {
tasks.find((task: Task) => task.application?.id === application.id);

const { tasks, hasActiveTasks } = useFetchTasks(
{ addon: "analyzer" },
{ kind: "analyzer", addon: "analyzer" },
isAnalyzeModalOpen
);

Expand Down
12 changes: 11 additions & 1 deletion client/src/app/queries/tasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {

interface FetchTasksFilters {
addon?: string;
kind?: string;
}

export const TasksQueryKey = "tasks";
Expand All @@ -38,7 +39,16 @@ export const useFetchTasks = (
select: (allTasks) => {
const uniqSorted = allTasks
.filter((task) =>
filters?.addon ? filters.addon === task.addon : true
// If there are any tasks with the addon field, we will still need to consider those older
// tasks that do not have the kind field. This is because the kind field was added later and is
// preferred over the addon field.

// The task manager will determine and assign the addon field when the addon is specified and addon isnt
// which will result in both being set.

filters?.kind || filters?.addon
? filters.kind === task.kind || filters.addon === task.addon
: true
)
// sort by application.id (ascending) then createTime (newest to oldest)
.sort((a, b) =>
Expand Down

0 comments on commit 0e4967d

Please sign in to comment.