Skip to content

Update the legacy kubernetes audit log parser with the new base task types#399

Merged
kyasbal merged 20 commits into
mainfrom
epic/issue-373
Dec 4, 2025
Merged

Update the legacy kubernetes audit log parser with the new base task types#399
kyasbal merged 20 commits into
mainfrom
epic/issue-373

Conversation

@kyasbal

@kyasbal kyasbal commented Dec 4, 2025

Copy link
Copy Markdown
Member

This is a PR to merge the epic/issue-373 branch into main branch.

Summary

This PR migrates the legacy Kubernetes audit log parser to a new audit log parser implemented with the new base task types. Throughout this change, there are several enhancements applied on the parsers.

  • Now KHI audit parser can handle delete collection audit log correctly. 🐛 Changes made by delete collection operation may generate wrong resource timeline #267
  • The binding subresources shown under node resource was removed, and introduced a new subresource type pod_phase which shows pod statuses on the node.
  • kubelet logs can be associated with pod when the resource uid is included in the log.
  • Resource conditions are now handled correctly when it was created again with the same name after deletion
  • endpointslice subresource was renamed to endpoint
  • Container ID can also be provided from pod audit log by checking the status field. This enables node log parser to associate containerd log with Pod even the logs around the starting time is not included.
  • The mechanism to gather IP, container ID, pod sandbox ID, sneg names are now refactored to use the new inventory task API. This allows user to merge multiple discovery task result to provide these info to another parser using them easily. The consumer of the inventory don't need to be aware of the actual discovery task and it enables the further extensibility.

kyasbal and others added 19 commits November 26, 2025 08:55
…sed on active tasks in the task graph. (#374) (#376)

* feat: Dynamically generate Cloud Logging resource name input forms based on active tasks in the task graph.

This is a fix of bug input forms weren't disappeared once it was added even a feature requesting it was turned off.

* fix issue pointed by gemini-code-assist
…the existing k8s audit parser to the new audit parser (#375)

* Added NewLogSorterByTimeTask and test utilities for inspectiontaskbase package

* feat: Show orphaned log when no parser associated the log to any timeline and add namespace level timeline

* fix issues pointed out by gemini-code-assist
…r audit logs (#377)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist
…from Cloud Logging (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist
* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Add ManifestGenerator related tasks

* fix issues pointed by gemini-code-assist
* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist
* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* Adding new type definitions in contract, enum values of history data and resourcepaths

This commit includes contract related changes of the later task implementations.

* fix issue pointed by gemini-code-assist

* fix flaky test because of string list order
… README about the new k8saudit tasks (#384)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* Adding new type definitions in contract, enum values of history data and resourcepaths

This commit includes contract related changes of the later task implementations.

* fix issue pointed by gemini-code-assist
* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* Adding new type definitions in contract, enum values of history data and resourcepaths

This commit includes contract related changes of the later task implementations.

* fix issue pointed by gemini-code-assist

* fix bug the revision sort criteria was not right
* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* Adding new type definitions in contract, enum values of history data and resourcepaths

This commit includes contract related changes of the later task implementations.

* fix issue pointed by gemini-code-assist

* Add comments on existing tasks
* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* Adding manifest based history-modifier tasks and manifest utils

* Add the basic revision recording tasks for k8s audit logs

* fix issues pointed by gemini-code-assist
…ser tasks to the newly implemented k8s audit parser (#390)

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* Adding manifest based history-modifier tasks and manifest utils

* Add the basic revision recording tasks for k8s audit logs

* fix issues pointed by gemini-code-assist

* Migrate pseudo recorders to the v2 k8s audit log parser tasks

---------

Signed-off-by: kyasbal <ikakeru@google.com>
…udit log parser package (#391)

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* Add podphase task and task registrations for the v2 audit parser

* fix issue pointed by gemini-code-assist
… the new audit log parsers (#392)

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Remove the unused legacy parsers and migrated OSS parsers to depend on the new parser

* fix issue pointed by gemini-code-assist
* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Refactored relationship task and now it's named as InventoryTask

* Update pkg/core/inspection/taskbase/inventory_task.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: kyasbal <kyasbal1994@gmail.com>

* fix issue pointed by gemini-code-assist

---------

Signed-off-by: kyasbal <kyasbal1994@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Refactored relationship task and now it's named as InventoryTask

* Update pkg/core/inspection/taskbase/inventory_task.go

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: kyasbal <kyasbal1994@gmail.com>

* fix issue pointed by gemini-code-assist

* Adding nodename inventory task and refactored resource groups not to operate raw string

* fix issue pointed by gemini-code-assist

---------

Signed-off-by: kyasbal <kyasbal1994@gmail.com>
Signed-off-by: kyasbal <ikakeru@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…ry tasks (#396)

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* fix issue pointed by gemini-code-assist

* Migrate containerID discovery tasks to use the inventory task and implemented resource UID inventory

* Improved containerd,kubelet and controlplane ID matchers to use inventory tasks
* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Adding grouping related tasks and tasks for gathering k8s audit logs from Cloud Logging  (#378)

* Added new fieldset related tasks and history modifiers for error audit logs

* fix issues pointed by gemini-code-assist

* Added new fieldset related tasks and history modifiers for error audit logs

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Adding k8s audit log parser tasks

* Added LogSorterTask that sorts logs before ingesting them to the manifest generator
* Added ChangeTargetGrouperTask that groups logs by the resource paths actually modified with the audit log
* Added NonSuccessLogGrouperTask that groups logs by resource paths for non succeeded audit logs

* fix issues pointed by gemini-code-assist

* Added several test asserter for changeset testing

* fix issues pointed by gemini-code-assist

* fix issues pointed by gemini-code-assist

* Implemented inventory for IP leases and NEG names

* fix issues pointed by gemini-code-assist
Signed-off-by: kyasbal <ikakeru@google.com>
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @kyasbal, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces several new features and improvements to the inspection system. It adds a new framework for discovering and merging inventory data, a new task for sorting logs by timestamp, and a mechanism for verifying and reporting orphan logs. It also deprecates RelationshipTask in favor of InventoryTask, and adds new revision states to the model/enum/revision_state.go file.

Highlights

  • Pattern Matching: Introduces a GetMatchedString method to the PatternMatchResult struct for extracting the matched string from an original string, along with corresponding unit tests.
  • Inventory Task Framework: Adds a new framework for discovering and merging inventory data from various sources, including InventoryTaskBuilder, InventoryTask, and DiscoveryTask components.
  • Log Sorting Task: Implements a new LogSorterByTimeTask for sorting logs by timestamp, along with its unit tests.
  • Code Modernization: Deprecates RelationshipTask in favor of InventoryTask, and renames relationship_task_test.go to inventory_task_test.go.
  • Revision State Enhancements: Adds new revision states to the model/enum/revision_state.go file, including states for pod phases and container statuses.
  • Orphan Log Verification: Implements a mechanism to verify and report orphan logs, which are logs not associated with any timeline events or revisions.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@kyasbal kyasbal changed the title Merge epic/issue-373 into main Update the legacy kubernetes audit log parser with the new base task types Dec 4, 2025

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a major and impressive refactoring of the Kubernetes audit log parsing logic. The introduction of the generic InventoryTaskBuilder and the new commonlogk8sauditv2 package with its modular task-based approach is a significant improvement in terms of design, extensibility, and testability. The old, more monolithic commonlogk8saudit package has been successfully replaced.

Key improvements include:

  • Decoupling with Inventory Tasks: The new InventoryTaskBuilder provides a clean and reusable pattern for discovering and aggregating data from various sources, replacing the less generic RelationshipTask. This is well-utilized for inventories like node names, resource UIDs, and IP leases.
  • Modular Parsing Logic: The commonlogk8sauditv2 package breaks down the complex parsing process into smaller, more manageable tasks (filtering, grouping, manifest generation, lifetime tracking, and various history modifiers). This separation of concerns makes the logic easier to understand and maintain.
  • Improved Accuracy: The logic for tracking resource lifetimes and sorting timeline revisions by their actual ChangeTime rather than log timestamp enhances the accuracy of the generated history.
  • Enhanced Testability: The addition of new test utilities and the modular design will make it easier to write targeted unit tests for different parts of the parsing pipeline.

I've identified a couple of areas for improvement to enhance correctness and robustness, which are detailed in the specific comments. Overall, this is a high-quality refactoring that significantly improves the architecture of the inspection framework.

Comment thread pkg/model/history/timeline_builder.go
Comment thread pkg/task/inspection/commonlogk8sauditv2/impl/resource_helpers.go
@kyasbal kyasbal merged commit b2ec8f3 into main Dec 4, 2025
11 of 12 checks passed
@kyasbal kyasbal deleted the epic/issue-373 branch December 4, 2025 06:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants