feat(sources): honor source_task_status in sources list#693
feat(sources): honor source_task_status in sources list#693
Conversation
Used for showing the source specific status for the last connection. Was incorrectly showing failed when the scan job that targeted multiple sources and another source failed, when the specific source shown was successful.
Reviewer's guide (collapsed on small PRs)Reviewer's GuideThis PR introduces dedicated task identifiers and statuses for each source connection, updating API constants, type definitions, and the SourcesList view to use the new source_task_status field, ensuring accurate per-source status display. ER diagram for SourceConnectionType changeserDiagram
SOURCE_CONNECTION {
number systems_count
number systems_scanned
number systems_failed
number source_task_id
string source_task_status
}
Class diagram for updated SourceConnectionTypeclassDiagram
class SourceConnectionType {
number systems_count
number systems_scanned
number systems_failed
number source_task_id
string source_task_status
}
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey there - I've reviewed your changes and they look great!
Prompt for AI Agents
Please address the comments from this code review:
## Individual Comments
### Comment 1
<location> `src/views/sources/viewSourcesList.tsx:438` </location>
<code_context>
const scanTime = (isPending && source.connection.start_time) || source.connection.end_time;
- const statusString = t(`table.label_status_${source.connection.status}`, { context: 'sources' });
+ const statusString = t(`table.label_status_${source.connection.source_task_status}`, { context: 'sources' });
return (
<Button
</code_context>
<issue_to_address>
Consider fallback for missing source_task_status value.
If source_task_status is undefined or null, the translation key may be invalid. Please add a fallback value or explicit handling for this case.
</issue_to_address>
### Comment 2
<location> `src/views/sources/viewSourcesList.tsx:454` </location>
<code_context>
}}
>
- <ContextIcon symbol={ContextIconVariant[source.connection.status]} /> {statusString}{' '}
+ <ContextIcon symbol={ContextIconVariant[source.connection.source_task_status]} /> {statusString}{' '}
{helpers.getTimeDisplayHowLongAgo(scanTime)}
</Button>
</code_context>
<issue_to_address>
Validate source_task_status against ContextIconVariant keys.
Validating source_task_status before using it as a key will help prevent runtime errors from unexpected values.
</issue_to_address>
### Comment 3
<location> `src/types/types.ts:45` </location>
<code_context>
systems_count: number;
systems_scanned: number;
systems_failed: number;
+ source_task_id: number;
+ source_task_status: string;
};
</code_context>
<issue_to_address>
Consider stricter typing for source_task_status.
Using a string literal union type or enum for source_task_status will help catch invalid values during development and make the code easier to maintain.
</issue_to_address>
<suggested_fix>
<<<<<<< SEARCH
systems_count: number;
systems_scanned: number;
systems_failed: number;
source_task_id: number;
source_task_status: string;
};
=======
systems_count: number;
systems_scanned: number;
systems_failed: number;
source_task_id: number;
source_task_status: SourceTaskStatus;
};
export type SourceTaskStatus = 'pending' | 'running' | 'completed' | 'failed';
>>>>>>> REPLACE
</suggested_fix>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| const scanTime = (isPending && source.connection.start_time) || source.connection.end_time; | ||
|
|
||
| const statusString = t(`table.label_status_${source.connection.status}`, { context: 'sources' }); | ||
| const statusString = t(`table.label_status_${source.connection.source_task_status}`, { context: 'sources' }); |
There was a problem hiding this comment.
suggestion: Consider fallback for missing source_task_status value.
If source_task_status is undefined or null, the translation key may be invalid. Please add a fallback value or explicit handling for this case.
| }} | ||
| > | ||
| <ContextIcon symbol={ContextIconVariant[source.connection.status]} /> {statusString}{' '} | ||
| <ContextIcon symbol={ContextIconVariant[source.connection.source_task_status]} /> {statusString}{' '} |
There was a problem hiding this comment.
issue (bug_risk): Validate source_task_status against ContextIconVariant keys.
Validating source_task_status before using it as a key will help prevent runtime errors from unexpected values.
| systems_count: number; | ||
| systems_scanned: number; | ||
| systems_failed: number; | ||
| source_task_id: number; | ||
| source_task_status: string; | ||
| }; |
There was a problem hiding this comment.
suggestion: Consider stricter typing for source_task_status.
Using a string literal union type or enum for source_task_status will help catch invalid values during development and make the code easier to maintain.
| systems_count: number; | |
| systems_scanned: number; | |
| systems_failed: number; | |
| source_task_id: number; | |
| source_task_status: string; | |
| }; | |
| systems_count: number; | |
| systems_scanned: number; | |
| systems_failed: number; | |
| source_task_id: number; | |
| source_task_status: SourceTaskStatus; | |
| }; | |
| export type SourceTaskStatus = 'pending' | 'running' | 'completed' | 'failed'; |
Do not merge, this is a POC. Needs additional testing for different scenarios. single source, different source types, etc.
Requires: quipucords/quipucords#3024
Summary by Sourcery
Add support for source-specific connection task status in the sources list view
Enhancements: