From c1789a074e19c93917e955ed8f4e00f11b8414ed Mon Sep 17 00:00:00 2001 From: kyasbal Date: Mon, 15 Dec 2025 11:54:30 +0900 Subject: [PATCH 1/5] refactor(core): rename taskbase types and files for clarity Renames core task interfaces, functions, and files to better reflect their actual responsibilities and improve consistency. - `HistoryModifer` -> `LogToTimelineMapper`: Maps logs to timeline events. - `LogSerializerTask` -> `LogIngesterTask`: Ingests logs into history storage. - `LogGrouper` -> `LogGrouperFunc`: Consistent function naming. - Renamed related files to `*mapper_task.go` for brevity (e.g., `condition_historymodifier_task.go` -> `conditionmapper_task.go`). --- pkg/core/inspection/taskbase/loggroup_task.go | 6 +- .../inspection/taskbase/loggroup_task_test.go | 2 +- ...serializer_task.go => logingester_task.go} | 6 +- ..._task_test.go => logingester_task_test.go} | 16 ++--- ...historymodifier_task.go => mapper_task.go} | 31 +++++----- ...ifier_task_test.go => mapper_task_test.go} | 34 +++++----- ...t_historymodifier.go => manifestmapper.go} | 16 ++--- .../commonlogk8sauditv2/contract/taskid.go | 40 ++++++------ ...difier_task.go => conditionmapper_task.go} | 44 ++++++------- ...k_test.go => conditionmapper_task_test.go} | 34 +++++----- ...difier_task.go => containermapper_task.go} | 48 +++++++------- ...k_test.go => containermapper_task_test.go} | 26 ++++---- ...odifier_task.go => endpointmapper_task.go} | 42 ++++++------- ...sk_test.go => endpointmapper_task_test.go} | 50 +++++++-------- ...rymodifier_task.go => errormapper_task.go} | 28 ++++----- ..._task_test.go => errormapper_task_test.go} | 4 +- .../impl/lifetimetracker_task.go | 6 +- .../impl/logsummary_task.go | 38 ++++++------ .../impl/logsummary_task_test.go | 4 +- ...task.go => namespacerequestmapper_task.go} | 8 +-- ...e_task.go => ownerreferencemapper_task.go} | 34 +++++----- ...t.go => ownerreferencemapper_task_test.go} | 4 +- ...odphase_task.go => podphasemapper_task.go} | 30 ++++----- ...sk_test.go => podphasemapper_task_test.go} | 2 +- .../commonlogk8sauditv2/impl/registration.go | 20 +++--- ...task.go => resourcerevisionmapper_task.go} | 56 ++++++++--------- ...go => resourcerevisionmapper_task_test.go} | 62 +++++++++---------- .../contract/taskid.go | 10 +-- .../impl/parser_tasks.go | 26 ++++---- .../impl/parser_tasks_test.go | 6 +- .../impl/registration.go | 14 ++--- .../googlecloudlogcsm/contract/taskid.go | 8 +-- .../googlecloudlogcsm/impl/parser_task.go | 28 ++++----- .../impl/parser_task_test.go | 6 +- .../googlecloudlogcsm/impl/registration.go | 14 ++--- .../contract/taskid.go | 10 +-- .../impl/parser_tasks.go | 34 +++++----- .../impl/parser_tasks_test.go | 6 +- .../impl/registration.go | 4 +- .../contract/taskid.go | 12 ++-- .../impl/parser.go | 26 ++++---- .../impl/parser_test.go | 6 +- .../impl/registration.go | 4 +- .../googlecloudlogk8saudit/impl/parser.go | 18 +++--- .../contract/taskid.go | 10 +-- .../impl/parser_task.go | 26 ++++---- .../impl/parser_task_test.go | 8 +-- .../impl/registration.go | 4 +- .../contract/taskid.go | 16 ++--- .../impl/common_task.go | 12 ++-- .../impl/controllermanager_task.go | 22 +++---- .../impl/controllermanager_task_test.go | 8 +-- .../impl/other_task.go | 24 +++---- .../impl/other_task_test.go | 8 +-- .../impl/registration.go | 22 +++---- .../impl/scheduler_task.go | 24 +++---- .../impl/scheduler_task_test.go | 8 +-- .../googlecloudlogk8sevent/contract/taskid.go | 10 +-- .../impl/parser_task.go | 26 ++++---- .../impl/parser_task_test.go | 8 +-- .../impl/registration.go | 4 +- .../googlecloudlogk8snode/contract/taskid.go | 16 ++--- .../googlecloudlogk8snode/impl/common_task.go | 12 ++-- .../impl/containerd_task.go | 24 +++---- .../impl/containerd_task_test.go | 8 +-- .../impl/kubelet_task.go | 24 +++---- .../impl/kubelet_task_test.go | 8 +-- .../googlecloudlogk8snode/impl/other_task.go | 24 +++---- .../impl/other_task_test.go | 8 +-- .../impl/registration.go | 36 +++++------ .../contract/taskid.go | 10 +-- .../impl/parser_tasks.go | 30 ++++----- .../impl/parser_tasks_test.go | 6 +- .../impl/registration.go | 4 +- .../contract/taskid.go | 10 +-- .../impl/parser_task.go | 26 ++++---- .../impl/registration.go | 4 +- .../contract/taskid.go | 10 +-- .../impl/parser_tasks.go | 28 ++++----- .../impl/parser_tasks_test.go | 6 +- .../impl/registration.go | 4 +- .../contract/taskid.go | 8 +-- .../impl/parser_tasks.go | 34 +++++----- .../impl/parser_tasks_test.go | 8 +-- .../impl/registration.go | 14 ++--- .../ossclusterk8s/impl/auditlog_parsers.go | 18 +++--- 86 files changed, 771 insertions(+), 772 deletions(-) rename pkg/core/inspection/taskbase/{logserializer_task.go => logingester_task.go} (85%) rename pkg/core/inspection/taskbase/{logserializer_task_test.go => logingester_task_test.go} (81%) rename pkg/core/inspection/taskbase/{historymodifier_task.go => mapper_task.go} (77%) rename pkg/core/inspection/taskbase/{historymodifier_task_test.go => mapper_task_test.go} (88%) rename pkg/task/inspection/commonlogk8sauditv2/contract/{manifest_historymodifier.go => manifestmapper.go} (94%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{condition_historymodifier_task.go => conditionmapper_task.go} (84%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{condition_historymodifier_task_test.go => conditionmapper_task_test.go} (95%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{container_historymodifier_task.go => containermapper_task.go} (79%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{container_historymodifier_task_test.go => containermapper_task_test.go} (95%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{endpoint_historymodifier_task.go => endpointmapper_task.go} (82%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{endpoint_historymodifier_task_test.go => endpointmapper_task_test.go} (90%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{error_historymodifier_task.go => errormapper_task.go} (57%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{error_history_modifier_task_test.go => errormapper_task_test.go} (95%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{namespacerequest_historymodifier_task.go => namespacerequestmapper_task.go} (83%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{ownerreference_task.go => ownerreferencemapper_task.go} (64%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{ownerreference_task_test.go => ownerreferencemapper_task_test.go} (97%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{podphase_task.go => podphasemapper_task.go} (72%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{podphase_task_test.go => podphasemapper_task_test.go} (99%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{resourcerevision_task.go => resourcerevisionmapper_task.go} (73%) rename pkg/task/inspection/commonlogk8sauditv2/impl/{resourcerevision_task_test.go => resourcerevisionmapper_task_test.go} (89%) diff --git a/pkg/core/inspection/taskbase/loggroup_task.go b/pkg/core/inspection/taskbase/loggroup_task.go index 72077613e..311af26cc 100644 --- a/pkg/core/inspection/taskbase/loggroup_task.go +++ b/pkg/core/inspection/taskbase/loggroup_task.go @@ -39,13 +39,13 @@ type LogGroup struct { // LogGroupMap is a map of log groups, where the key is the group identifier. type LogGroupMap = map[string]*LogGroup -// LogGrouper defines a function that returns a group key for a given log. -type LogGrouper = func(ctx context.Context, log *log.Log) string +// LogGrouperFunc defines a function that returns a group key for a given log. +type LogGrouperFunc = func(ctx context.Context, log *log.Log) string // NewLogGrouperTask creates a task that groups logs based on a grouper function. // It processes a list of logs and organizes them into a map of LogGroup, // where each group contains logs with the same key. -func NewLogGrouperTask(taskId taskid.TaskImplementationID[LogGroupMap], logTask taskid.TaskReference[[]*log.Log], grouper LogGrouper) coretask.Task[LogGroupMap] { +func NewLogGrouperTask(taskId taskid.TaskImplementationID[LogGroupMap], logTask taskid.TaskReference[[]*log.Log], grouper LogGrouperFunc) coretask.Task[LogGroupMap] { return NewProgressReportableInspectionTask(taskId, []taskid.UntypedTaskReference{ logTask, }, diff --git a/pkg/core/inspection/taskbase/loggroup_task_test.go b/pkg/core/inspection/taskbase/loggroup_task_test.go index 6147a2dde..985fedefc 100644 --- a/pkg/core/inspection/taskbase/loggroup_task_test.go +++ b/pkg/core/inspection/taskbase/loggroup_task_test.go @@ -37,7 +37,7 @@ func TestNwewLogGrouperTask(t *testing.T) { name string taskMode inspectioncore_contract.InspectionTaskModeType logYamls []string - logGrouper LogGrouper + logGrouper LogGrouperFunc resultLogIDs map[string][]string }{ { diff --git a/pkg/core/inspection/taskbase/logserializer_task.go b/pkg/core/inspection/taskbase/logingester_task.go similarity index 85% rename from pkg/core/inspection/taskbase/logserializer_task.go rename to pkg/core/inspection/taskbase/logingester_task.go index cc4af9aeb..4c077cdb2 100644 --- a/pkg/core/inspection/taskbase/logserializer_task.go +++ b/pkg/core/inspection/taskbase/logingester_task.go @@ -28,9 +28,9 @@ import ( "go.opentelemetry.io/otel/trace" ) -// NewLogSerializerTask store its given logs to history to prepare the history type to have ChangeSet associated with the log. -// This must be called before HistoryModifier and Logs must be discarded before this task if it shouldn't be included in the result. -func NewLogSerializerTask(taskID taskid.TaskImplementationID[[]*log.Log], input taskid.TaskReference[[]*log.Log]) coretask.Task[[]*log.Log] { +// NewLogIngester store its given logs to history to prepare the history type to have ChangeSet associated with the log. +// This must be called before LogToTimelineMapperTask and Logs must be discarded before this task if it shouldn't be included in the result. +func NewLogIngester(taskID taskid.TaskImplementationID[[]*log.Log], input taskid.TaskReference[[]*log.Log]) coretask.Task[[]*log.Log] { return NewProgressReportableInspectionTask(taskID, []taskid.UntypedTaskReference{input}, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType, progress *inspectionmetadata.TaskProgressMetadata) ([]*log.Log, error) { if taskMode == inspectioncore_contract.TaskModeDryRun { return []*log.Log{}, nil diff --git a/pkg/core/inspection/taskbase/logserializer_task_test.go b/pkg/core/inspection/taskbase/logingester_task_test.go similarity index 81% rename from pkg/core/inspection/taskbase/logserializer_task_test.go rename to pkg/core/inspection/taskbase/logingester_task_test.go index 34eae2122..12eb1d849 100644 --- a/pkg/core/inspection/taskbase/logserializer_task_test.go +++ b/pkg/core/inspection/taskbase/logingester_task_test.go @@ -26,12 +26,12 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testlog" ) -func TestLogSerializerTask_DryRunMode(t *testing.T) { +func TestLogIngesterTask_DryRunMode(t *testing.T) { l := testlog.MustLogFromYAML("insertId: foo", &mockCommonLogFieldSetReader{}) ctx := inspectiontest.WithDefaultTestInspectionTaskContext(t.Context()) inputTaskID := taskid.NewDefaultImplementationID[[]*log.Log]("input") taskID := taskid.NewDefaultImplementationID[[]*log.Log]("test") - task := NewLogSerializerTask(taskID, inputTaskID.Ref()) + task := NewLogIngester(taskID, inputTaskID.Ref()) result, _, err := inspectiontest.RunInspectionTask(ctx, task, inspectioncore_contract.TaskModeDryRun, map[string]any{}, tasktest.NewTaskDependencyValuePair(inputTaskID.Ref(), []*log.Log{l})) @@ -40,22 +40,22 @@ func TestLogSerializerTask_DryRunMode(t *testing.T) { } if len(result) != 0 { - t.Errorf("LogSerializerTask returned a log result for dryrun mode") + t.Errorf("LogIngesterTask returned a log result for dryrun mode") } builder := khictx.MustGetValue(ctx, inspectioncore_contract.CurrentHistoryBuilder) _, err = builder.GetLog(l.ID) if err == nil { - t.Errorf("LogSerializerTask must not write serialzied log to the builder when it run for dryrun, but it generated a serialized log.") + t.Errorf("LogIngesterTask must not write log to the builder when it run for dryrun, but it wrote a log.") } } -func TestLogSerializerTask_RunMode(t *testing.T) { +func TestLogIngesterTask_RunMode(t *testing.T) { l := testlog.MustLogFromYAML("insertId: foo", &mockCommonLogFieldSetReader{}) ctx := inspectiontest.WithDefaultTestInspectionTaskContext(t.Context()) inputTaskID := taskid.NewDefaultImplementationID[[]*log.Log]("input") taskID := taskid.NewDefaultImplementationID[[]*log.Log]("test") - task := NewLogSerializerTask(taskID, inputTaskID.Ref()) + task := NewLogIngester(taskID, inputTaskID.Ref()) result, _, err := inspectiontest.RunInspectionTask(ctx, task, inspectioncore_contract.TaskModeRun, map[string]any{}, tasktest.NewTaskDependencyValuePair(inputTaskID.Ref(), []*log.Log{l})) @@ -64,12 +64,12 @@ func TestLogSerializerTask_RunMode(t *testing.T) { } if len(result) != 1 { - t.Errorf("LogSerializerTask didn't return a log result for run mode") + t.Errorf("LogIngesterTask didn't return a log result for run mode") } builder := khictx.MustGetValue(ctx, inspectioncore_contract.CurrentHistoryBuilder) _, err = builder.GetLog(l.ID) if err != nil { - t.Errorf("LogSerializerTask must write serialzied log to the builder when it run. err=%v", err) + t.Errorf("LogIngesterTask must write log to the builder when it run. err=%v", err) } } diff --git a/pkg/core/inspection/taskbase/historymodifier_task.go b/pkg/core/inspection/taskbase/mapper_task.go similarity index 77% rename from pkg/core/inspection/taskbase/historymodifier_task.go rename to pkg/core/inspection/taskbase/mapper_task.go index d30b54d50..9251dd0ee 100644 --- a/pkg/core/inspection/taskbase/historymodifier_task.go +++ b/pkg/core/inspection/taskbase/mapper_task.go @@ -36,29 +36,28 @@ import ( "go.opentelemetry.io/otel/trace" ) -// HistoryModifer defines the interface for modifying the History with change sets based on log entries. -// Implementations of this interface can be used to customize how log data is transformed into -// structured history. -// To process data generated from processing the last log in the same group, the method ModifyChangeSetFromLog receive and return a variable typed T. -type HistoryModifer[T any] interface { - // LogSerializerTask is one of prerequiste task of HistoryModifier serializes its logs to history data before processing with this modifier. - LogSerializerTask() taskid.TaskReference[[]*log.Log] - // Dependencies are the additional references used in history modifier. +// LogToTimelineMapper defines the interface for mapping logs to timeline elements(events or revisions). +// Implementations of this interface can be used to customize how log data is transformed into timeline elements. +// To process data generated from processing the last log in the same group, the method ProcessLogByGroup receive and return a variable typed T. +type LogToTimelineMapper[T any] interface { + // LogIngesterTask is one of prerequiste task of LogToTimelineMapper ingesting logs to history data before processing with this mapper. + LogIngesterTask() taskid.TaskReference[[]*log.Log] + // Dependencies are the additional references used in timeline mapper. Dependencies() []taskid.UntypedTaskReference // GroupedLogTask returns a reference to the task that provides the grouped logs. GroupedLogTask() taskid.TaskReference[LogGroupMap] - // ModifyChangeSetFromLog is called for each log entry to modify the corresponding ChangeSet. + // ProcessLogByGroup is called for each log entry to modify the corresponding ChangeSet. // This method allows for custom logic to be applied during the history building process. // The prevGroupData is the returned value from the last procesed log in the same group. - ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData T) (T, error) + ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData T) (T, error) } -// NewHistoryModifierTask creates a task that modifies the history builder based on grouped logs. -// It processes logs in parallel and applies the logic from the provided HistoryModifer +// NewLogToTimelineMapperTask creates a task that modifies the history builder based on grouped logs. +// It processes logs in parallel and applies the logic from the provided LogToTimelineMapper // to build a comprehensive history of events. -func NewHistoryModifierTask[T any](tid taskid.TaskImplementationID[struct{}], historyModifier HistoryModifer[T], labels ...coretask.LabelOpt) coretask.Task[struct{}] { - groupedLogTaskID := historyModifier.GroupedLogTask() - dependencies := append([]taskid.UntypedTaskReference{historyModifier.LogSerializerTask(), historyModifier.GroupedLogTask()}, historyModifier.Dependencies()...) +func NewLogToTimelineMapperTask[T any](tid taskid.TaskImplementationID[struct{}], mapper LogToTimelineMapper[T], labels ...coretask.LabelOpt) coretask.Task[struct{}] { + groupedLogTaskID := mapper.GroupedLogTask() + dependencies := append([]taskid.UntypedTaskReference{mapper.LogIngesterTask(), mapper.GroupedLogTask()}, mapper.Dependencies()...) return NewProgressReportableInspectionTask(tid, dependencies, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType, tp *inspectionmetadata.TaskProgressMetadata) (struct{}, error) { if taskMode == inspectioncore_contract.TaskModeDryRun { slog.DebugContext(ctx, "Skipping task because this is dry run mode") @@ -91,7 +90,7 @@ func NewHistoryModifierTask[T any](tid taskid.TaskImplementationID[struct{}], hi for _, l := range group.Logs { cs := history.NewChangeSet(l) var err error - groupData, err = historyModifier.ModifyChangeSetFromLog(ctx, l, cs, builder, groupData) + groupData, err = mapper.ProcessLogByGroup(ctx, l, cs, builder, groupData) if err != nil { var yaml string yamlBytes, err2 := l.Serialize("", &structured.YAMLNodeSerializer{}) diff --git a/pkg/core/inspection/taskbase/historymodifier_task_test.go b/pkg/core/inspection/taskbase/mapper_task_test.go similarity index 88% rename from pkg/core/inspection/taskbase/historymodifier_task_test.go rename to pkg/core/inspection/taskbase/mapper_task_test.go index ff0e58068..26c197005 100644 --- a/pkg/core/inspection/taskbase/historymodifier_task_test.go +++ b/pkg/core/inspection/taskbase/mapper_task_test.go @@ -31,32 +31,32 @@ import ( inspectioncore_contract "github.com/GoogleCloudPlatform/khi/pkg/task/inspection/inspectioncore/contract" ) -var mockHistoryModifierPrevTaskID = taskid.NewDefaultImplementationID[LogGroupMap]("mock-history-modifier-prev") +var mockLogToTimelineMapperPrevTaskID = taskid.NewDefaultImplementationID[LogGroupMap]("mock-timeline-mapper-prev") -var mockLogSerializerPrevTaskID = taskid.NewDefaultImplementationID[[]*log.Log]("mock-history-modifier-prev-log-serializer") +var mockLogSerializerPrevTaskID = taskid.NewDefaultImplementationID[[]*log.Log]("mock-timeline-mapper-prev-log-serializer") -type mockHistoryModifierGroupData struct { +type mockLogToTimelineMapperGroupData struct { CurrentGroupLogCount int } -type mockHistoryModifier struct { +type mockLogToTimelineMapper struct { } // GroupedLogTask implements HistoryModifer. -func (m *mockHistoryModifier) GroupedLogTask() taskid.TaskReference[LogGroupMap] { - return mockHistoryModifierPrevTaskID.Ref() +func (m *mockLogToTimelineMapper) GroupedLogTask() taskid.TaskReference[LogGroupMap] { + return mockLogToTimelineMapperPrevTaskID.Ref() } -func (m *mockHistoryModifier) LogSerializerTask() taskid.TaskReference[[]*log.Log] { +func (m *mockLogToTimelineMapper) LogIngesterTask() taskid.TaskReference[[]*log.Log] { return mockLogSerializerPrevTaskID.Ref() } -func (m *mockHistoryModifier) Dependencies() []taskid.UntypedTaskReference { +func (m *mockLogToTimelineMapper) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// ModifyChangeSetFromLog implements HistoryModifer. -func (m *mockHistoryModifier) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevData mockHistoryModifierGroupData) (mockHistoryModifierGroupData, error) { +// ProcessLogByGroup implements HistoryModifer. +func (m *mockLogToTimelineMapper) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevData mockLogToTimelineMapperGroupData) (mockLogToTimelineMapperGroupData, error) { // encode current group count to severity to use them assert in tasecases to verify the prevData is correctly handled. switch prevData.CurrentGroupLogCount { case 0: @@ -70,7 +70,7 @@ func (m *mockHistoryModifier) ModifyChangeSetFromLog(ctx context.Context, l *log } shouldErr := l.ReadBoolOrDefault("error", false) if shouldErr { - return mockHistoryModifierGroupData{ + return mockLogToTimelineMapperGroupData{ CurrentGroupLogCount: prevData.CurrentGroupLogCount + 1, }, fmt.Errorf("test error") } @@ -80,12 +80,12 @@ func (m *mockHistoryModifier) ModifyChangeSetFromLog(ctx context.Context, l *log l.ReadStringOrDefault("namespace", "unknown"), l.ReadStringOrDefault("name", "unknown"), )) - return mockHistoryModifierGroupData{ + return mockLogToTimelineMapperGroupData{ CurrentGroupLogCount: prevData.CurrentGroupLogCount + 1, }, nil } -var _ HistoryModifer[mockHistoryModifierGroupData] = (*mockHistoryModifier)(nil) +var _ LogToTimelineMapper[mockLogToTimelineMapperGroupData] = (*mockLogToTimelineMapper)(nil) type mockCommonLogFieldSetReader struct { } @@ -118,7 +118,7 @@ func mustNewLogFromYAML(t *testing.T, yaml string) *log.Log { return l } -func TestHistoryModifierTask(t *testing.T) { +func TestLogToTimelineMapperTask(t *testing.T) { testCases := []struct { desc string taskMode inspectioncore_contract.InspectionTaskModeType @@ -268,11 +268,11 @@ func TestHistoryModifierTask(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.desc, func(t *testing.T) { - tid := taskid.NewDefaultImplementationID[struct{}]("mock-history-modifier") + tid := taskid.NewDefaultImplementationID[struct{}]("mock-timeline-mapper") ctx := context.Background() ctx = inspectiontest.WithDefaultTestInspectionTaskContext(ctx) - task := NewHistoryModifierTask(tid, &mockHistoryModifier{}) + task := NewLogToTimelineMapperTask(tid, &mockLogToTimelineMapper{}) builder := khictx.MustGetValue(ctx, inspectioncore_contract.CurrentHistoryBuilder) for _, group := range testCase.prevLogGroupMap { @@ -282,7 +282,7 @@ func TestHistoryModifierTask(t *testing.T) { } } - _, _, err := inspectiontest.RunInspectionTask(ctx, task, testCase.taskMode, map[string]any{}, tasktest.NewTaskDependencyValuePair(mockHistoryModifierPrevTaskID.Ref(), testCase.prevLogGroupMap)) + _, _, err := inspectiontest.RunInspectionTask(ctx, task, testCase.taskMode, map[string]any{}, tasktest.NewTaskDependencyValuePair(mockLogToTimelineMapperPrevTaskID.Ref(), testCase.prevLogGroupMap)) if (err != nil) != testCase.wantError { t.Fatalf("RunInspectionTask() error = %v, wantError %v", err, testCase.wantError) } diff --git a/pkg/task/inspection/commonlogk8sauditv2/contract/manifest_historymodifier.go b/pkg/task/inspection/commonlogk8sauditv2/contract/manifestmapper.go similarity index 94% rename from pkg/task/inspection/commonlogk8sauditv2/contract/manifest_historymodifier.go rename to pkg/task/inspection/commonlogk8sauditv2/contract/manifestmapper.go index be6e131a7..f13eba228 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/contract/manifest_historymodifier.go +++ b/pkg/task/inspection/commonlogk8sauditv2/contract/manifestmapper.go @@ -86,12 +86,12 @@ type ResourceChangeEvent struct { EventTargetBodyReader *structured.NodeReader } -// ManifestHistoryModifierTaskSetting is the setting for the manifest history modifier task. -type ManifestHistoryModifierTaskSetting[T any] interface { +// ManifestLogToTimelineMapperTaskSetting is the setting for the manifest timeline mapper task. +type ManifestLogToTimelineMapperTaskSetting[T any] interface { // TaskID returns the task ID. TaskID() taskid.TaskImplementationID[struct{}] - // LogSerializerTask returns the task reference for the log serializer task. - LogSerializerTask() taskid.TaskReference[[]*log.Log] + // LogIngesterTask returns the task reference for the log serializer task. + LogIngesterTask() taskid.TaskReference[[]*log.Log] // GroupedLogTask returns the task reference for the grouped log task. GroupedLogTask() taskid.TaskReference[ResourceManifestLogGroupMap] // Dependencies returns the dependencies of the task. @@ -104,8 +104,8 @@ type ManifestHistoryModifierTaskSetting[T any] interface { Process(ctx context.Context, passIndex int, event ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, prevGroupData T) (T, error) } -// NewManifestHistoryModifier creates a new manifest history modifier task. -// ManifestHistoryModifier is a task that generates a timeline of resource changes based on the processed manifests. +// NewManifestLogToTimelineMapper creates a new timeline mapper task but from resource logs. +// ManifestLogToTimelineMapper is a task that generates a timeline of resource changes based on the processed manifests. // It is designed to handle the relationship between two resources (Source and Target) and generate revisions for the Target resource based on the changes in the Source resource. // For example, it can be used to generate a timeline of Pod status changes based on the Pod resource itself (Source=None, Target=Pod), or to generate a timeline of binding subresource but deleted when its parent Pod is deleted (Source=Pod, Target=Source pod's binding). // The setting has ResourcePairs method that returns the resource pairs to know these pairs of target and source. @@ -116,8 +116,8 @@ type ManifestHistoryModifierTaskSetting[T any] interface { // Type Parameter T: // The type parameter T represents the state that is passed between Process calls for the same resource pair. // This allows the implementation to track the history of the resource and detect changes. -func NewManifestHistoryModifier[T any](setting ManifestHistoryModifierTaskSetting[T]) coretask.Task[struct{}] { - dependencies := append([]taskid.UntypedTaskReference{setting.LogSerializerTask(), setting.GroupedLogTask()}, setting.Dependencies()...) +func NewManifestLogToTimelineMapper[T any](setting ManifestLogToTimelineMapperTaskSetting[T]) coretask.Task[struct{}] { + dependencies := append([]taskid.UntypedTaskReference{setting.LogIngesterTask(), setting.GroupedLogTask()}, setting.Dependencies()...) return inspectiontaskbase.NewProgressReportableInspectionTask(setting.TaskID(), dependencies, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType, tp *inspectionmetadata.TaskProgressMetadata) (struct{}, error) { if taskMode == inspectioncore_contract.TaskModeDryRun { slog.DebugContext(ctx, "Skipping task because this is dry run mode") diff --git a/pkg/task/inspection/commonlogk8sauditv2/contract/taskid.go b/pkg/task/inspection/commonlogk8sauditv2/contract/taskid.go index 7ca74ad73..a8055ccf2 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/contract/taskid.go +++ b/pkg/task/inspection/commonlogk8sauditv2/contract/taskid.go @@ -31,8 +31,8 @@ var K8sAuditLogProviderRef = taskid.NewTaskReference[[]*log.Log](TaskIDPrefix + // K8sAuditLogParserTailRef is the task reference for the task to depend all enabled k8s audit log parsing sub tasks. var K8sAuditLogParserTailRef = taskid.NewTaskReference[struct{}](TaskIDPrefix + "k8s-auditlog-parser-tail") -// K8sAuditLogSerializerTaskID is the task ID for the task to serialize the k8s audit log. -var K8sAuditLogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "k8s-auditlog-serializer") +// K8sAuditLogIngesterTaskID is the task ID for the task to serialize the k8s audit log. +var K8sAuditLogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "k8s-auditlog-serializer") // SuccessLogFilterTaskID is the task ID for the task to filter success logs. var SuccessLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "success-log-filter") @@ -52,8 +52,8 @@ var NonSuccessLogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontas // ChangeTargetGrouperTaskID is the task ID for the task to group logs by the target resource. var ChangeTargetGrouperTaskID = taskid.NewDefaultImplementationID[ResourceLogGroupMap](TaskIDPrefix + "change-target-grouper") -// NamespaceRequestHistoryModifierTaskID is the task ID for the task recording events for requests against entire resources in namespace. -var NamespaceRequestHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "namespace-request-history-modifier") +// NamespaceRequestLogToTimelineMapperTaskID is the task ID for the task recording events for requests against entire resources in namespace. +var NamespaceRequestLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "namespace-request-timeline-mapper") // ManifestGeneratorTaskID is the task ID for the task to generate manifests. var ManifestGeneratorTaskID = taskid.NewDefaultImplementationID[ResourceManifestLogGroupMap](TaskIDPrefix + "manifest-generator") @@ -61,29 +61,29 @@ var ManifestGeneratorTaskID = taskid.NewDefaultImplementationID[ResourceManifest // ResourceLifetimeTrackerTaskID is the task ID for the task to track resource lifetime. var ResourceLifetimeTrackerTaskID = taskid.NewDefaultImplementationID[ResourceManifestLogGroupMap](TaskIDPrefix + "resource-lifetime-tracker") -// LogSummaryHistoryModifierTaskID is the task ID for the task to generate log summary from given k8s audit log. -var LogSummaryHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "log-summary-history-modifier") +// LogSummaryLogToTimelineMapperTaskID is the task ID for the task to generate log summary from given k8s audit log. +var LogSummaryLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "log-summary-timeline-mapper") -// NonSuccessLogHistoryModifierTaskID is the task ID for the task to generate history from non-success logs. -var NonSuccessLogHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "non-success-history-modifier") +// NonSuccessLogLogToTimelineMapperTaskID is the task ID for the task to generate history from non-success logs. +var NonSuccessLogLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "non-success-timeline-mapper") -// ResourceRevisionHistoryModifierTaskID is the task ID for the task to modify resource revision history. -var ResourceRevisionHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "resource-revision-history-modifier") +// ResourceRevisionLogToTimelineMapperTaskID is the task ID for the task to map logs into resource revision history. +var ResourceRevisionLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "resource-revision-timeline-mapper") -// ResourceOwnerReferenceModifierTaskID is the task ID for the task to modify resource owner reference. -var ResourceOwnerReferenceModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "resource-owner-reference-modifier") +// ResourceOwnerReferenceTimelineMapperTaskID is the task ID for the task to map logs into resource owner reference. +var ResourceOwnerReferenceTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "resource-owner-reference-timeline-mapper") -// EndpointResourceHistoryModifierTaskID is the task ID for the task to modify endpoint resource history. -var EndpointResourceHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "endpoint-resource-history-modifier") +// EndpointResourceLogToTimelineMapperTaskID is the task ID for the task to map logs into endpoint resource history. +var EndpointResourceLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "endpoint-resource-timeline-mapper") -// PodPhaseHistoryModifierTaskID is the task ID for the task to modify pod phase history. -var PodPhaseHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "pod-phase-history-modifier") +// PodPhaseLogToTimelineMapperTaskID is the task ID for the task to map logs into pod phase history. +var PodPhaseLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "pod-phase-timeline-mapper") -// ContainerHistoryModifierTaskID is the task ID for the task to modify container history. -var ContainerHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "container-history-modifier") +// ContainerLogToTimelineMapperTaskID is the task ID for the task to map logs into container history. +var ContainerLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "container-timeline-mapper") -// ConditionHistoryModifierTaskID is the task ID for the task to generate condition history. -var ConditionHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "condition-history-modifier") +// ConditionLogToTimelineMapperTaskID is the task ID for the task to generate condition history. +var ConditionLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "condition-timeline-mapper") // NodeNameDiscoveryTaskID is the task ID for extracting node names from audit logs. var NodeNameDiscoveryTaskID = taskid.NewDefaultImplementationID[[]string](TaskIDPrefix + "node-name-discovery") diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/condition_historymodifier_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task.go similarity index 84% rename from pkg/task/inspection/commonlogk8sauditv2/impl/condition_historymodifier_task.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task.go index 4362519ac..bfe11fee4 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/condition_historymodifier_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task.go @@ -30,26 +30,26 @@ import ( commonlogk8sauditv2_contract "github.com/GoogleCloudPlatform/khi/pkg/task/inspection/commonlogk8sauditv2/contract" ) -// ConditionHistoryModifierTask is a ManifestHistoryModifier task that tracks and records the history of Kubernetes resource conditions. +// ConditionLogToTimelineMapperTask is a ManifestLogToTimelineMapper task that tracks and records the history of Kubernetes resource conditions. // It analyzes status.conditions fields in audit logs to generate revisions for each condition type (e.g., Ready, Scheduled). -var ConditionHistoryModifierTask = commonlogk8sauditv2_contract.NewManifestHistoryModifier[*conditionHistoryModifierTaskState](&conditionHistoryModifierTaskSetting{ +var ConditionLogToTimelineMapperTask = commonlogk8sauditv2_contract.NewManifestLogToTimelineMapper[*conditionLogToTimelineMapperTaskState](&conditionLogToTimelineMapperTaskSetting{ minimumDeltaTimeToCreateInferredCreationRevision: 10 * time.Second, }) -type conditionHistoryModifierTaskState struct { +type conditionLogToTimelineMapperTaskState struct { // AvailableTypes is the set of available condition types. AvailableTypes map[string]struct{} // ConditionWalkers is the map of condition walkers. ConditionWalkers map[string]*conditionWalker } -type conditionHistoryModifierTaskSetting struct { +type conditionLogToTimelineMapperTaskSetting struct { // minimumDeltaTimeToCreateInferredCreationRevision is the minimum delta time to create inferred creation revision. minimumDeltaTimeToCreateInferredCreationRevision time.Duration } -// Process implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *conditionHistoryModifierTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, prevResource *conditionHistoryModifierTaskState) (*conditionHistoryModifierTaskState, error) { +// Process implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *conditionLogToTimelineMapperTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, prevResource *conditionLogToTimelineMapperTaskState) (*conditionLogToTimelineMapperTaskState, error) { if event.EventTargetBodyReader == nil { return prevResource, nil } @@ -59,17 +59,17 @@ func (c *conditionHistoryModifierTaskSetting) Process(ctx context.Context, passI case 1: return c.processSecondPass(ctx, event, cs, builder, prevResource) default: - panic("unreachable. passIndex should be 0 or 1 for condition history modifier") + panic("unreachable. passIndex should be 0 or 1 for condition timeline mapper") } } -// TaskID implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *conditionHistoryModifierTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { - return commonlogk8sauditv2_contract.ConditionHistoryModifierTaskID +// TaskID implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *conditionLogToTimelineMapperTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { + return commonlogk8sauditv2_contract.ConditionLogToTimelineMapperTaskID } -// ResourcePairs implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *conditionHistoryModifierTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { +// ResourcePairs implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *conditionLogToTimelineMapperTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { result := []commonlogk8sauditv2_contract.ResourcePair{} for _, group := range groupedLogs { if group.Resource.Type() == commonlogk8sauditv2_contract.Resource { @@ -83,9 +83,9 @@ func (c *conditionHistoryModifierTaskSetting) ResourcePairs(ctx context.Context, // processFirstPass collects all available condition types from the log. // This is necessary because some conditions might appear later in the history, and we need to know about them upfront to track their state correctly. -func (c *conditionHistoryModifierTaskSetting) processFirstPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *conditionHistoryModifierTaskState) (*conditionHistoryModifierTaskState, error) { +func (c *conditionLogToTimelineMapperTaskSetting) processFirstPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *conditionLogToTimelineMapperTaskState) (*conditionLogToTimelineMapperTaskState, error) { if state == nil { - state = &conditionHistoryModifierTaskState{ + state = &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{}, ConditionWalkers: map[string]*conditionWalker{}, } @@ -123,7 +123,7 @@ func (c *conditionHistoryModifierTaskSetting) processFirstPass(ctx context.Conte // processSecondPass generates revisions for each condition type based on the collected available types. // It handles standard updates, inferred creations (when creation time is missing from the log), and deletions. -func (c *conditionHistoryModifierTaskSetting) processSecondPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *conditionHistoryModifierTaskState) (*conditionHistoryModifierTaskState, error) { +func (c *conditionLogToTimelineMapperTaskSetting) processSecondPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *conditionLogToTimelineMapperTaskState) (*conditionLogToTimelineMapperTaskState, error) { commonFieldSet := log.MustGetFieldSet(event.Log, &log.CommonFieldSet{}) k8sFieldSet := log.MustGetFieldSet(event.Log, &commonlogk8sauditv2_contract.K8sAuditLogFieldSet{}) ownerPath := resourcepath.ResourcePath{ @@ -199,26 +199,26 @@ func (c *conditionHistoryModifierTaskSetting) processSecondPass(ctx context.Cont } // Dependencies implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (c *conditionHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +func (c *conditionLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } // PassCount implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (c *conditionHistoryModifierTaskSetting) PassCount() int { +func (c *conditionLogToTimelineMapperTaskSetting) PassCount() int { return 2 } // GroupedLogTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (c *conditionHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { +func (c *conditionLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { return commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID.Ref() } -// LogSerializerTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (c *conditionHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref() +// LogIngesterTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +func (c *conditionLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } -var _ commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting[*conditionHistoryModifierTaskState] = (*conditionHistoryModifierTaskSetting)(nil) +var _ commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting[*conditionLogToTimelineMapperTaskState] = (*conditionLogToTimelineMapperTaskSetting)(nil) // conditionStateToRevisionState converts a Kubernetes condition status string ("True", "False", etc.) to a KHI RevisionState enum. func conditionStateToRevisionState(conditionState string) enum.RevisionState { diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/condition_historymodifier_task_test.go b/pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task_test.go similarity index 95% rename from pkg/task/inspection/commonlogk8sauditv2/impl/condition_historymodifier_task_test.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task_test.go index fe5e05369..ee2facadf 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/condition_historymodifier_task_test.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task_test.go @@ -237,8 +237,8 @@ func TestConditionWalker(t *testing.T) { } } -func TestConditionHistoryModifierTask_Process(t *testing.T) { - task := &conditionHistoryModifierTaskSetting{ +func TestConditionLogToTimelineMapperTask_Process(t *testing.T) { + task := &conditionLogToTimelineMapperTaskSetting{ minimumDeltaTimeToCreateInferredCreationRevision: 10 * time.Second, } ctx := context.Background() @@ -255,8 +255,8 @@ func TestConditionHistoryModifierTask_Process(t *testing.T) { eventType commonlogk8sauditv2_contract.ChangeEventType operation enum.RevisionVerb timestamp time.Time - initialState *conditionHistoryModifierTaskState - wantState *conditionHistoryModifierTaskState + initialState *conditionLogToTimelineMapperTaskState + wantState *conditionLogToTimelineMapperTaskState asserters []testchangeset.ChangeSetAsserter }{ { @@ -272,11 +272,11 @@ status: eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, timestamp: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC), - initialState: &conditionHistoryModifierTaskState{ + initialState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{}, ConditionWalkers: map[string]*conditionWalker{}, }, - wantState: &conditionHistoryModifierTaskState{ + wantState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{ "Ready": { @@ -308,7 +308,7 @@ status: operation: enum.RevisionVerbUpdate, timestamp: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC), initialState: nil, - wantState: &conditionHistoryModifierTaskState{ + wantState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{ "Ready": { @@ -339,11 +339,11 @@ status: eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, timestamp: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC), - initialState: &conditionHistoryModifierTaskState{ + initialState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{}, }, - wantState: &conditionHistoryModifierTaskState{ + wantState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}, "Scheduled": {}}, ConditionWalkers: map[string]*conditionWalker{ "Ready": { @@ -379,11 +379,11 @@ status: eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, timestamp: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC), - initialState: &conditionHistoryModifierTaskState{ + initialState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{}, }, - wantState: &conditionHistoryModifierTaskState{ + wantState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{ "Ready": { @@ -421,7 +421,7 @@ status: eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, timestamp: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC), - initialState: &conditionHistoryModifierTaskState{ + initialState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{ "Ready": { @@ -442,7 +442,7 @@ status: }, }, }, - wantState: &conditionHistoryModifierTaskState{ + wantState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{ "Ready": { @@ -497,11 +497,11 @@ status: eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetCreation, operation: enum.RevisionVerbCreate, timestamp: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC), - initialState: &conditionHistoryModifierTaskState{ + initialState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{}, }, - wantState: &conditionHistoryModifierTaskState{ + wantState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{ "Ready": { @@ -537,11 +537,11 @@ status: eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, operation: enum.RevisionVerbDelete, timestamp: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC), - initialState: &conditionHistoryModifierTaskState{ + initialState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{}, }, - wantState: &conditionHistoryModifierTaskState{ + wantState: &conditionLogToTimelineMapperTaskState{ AvailableTypes: map[string]struct{}{"Ready": {}}, ConditionWalkers: map[string]*conditionWalker{ "Ready": { diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/container_historymodifier_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/containermapper_task.go similarity index 79% rename from pkg/task/inspection/commonlogk8sauditv2/impl/container_historymodifier_task.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/containermapper_task.go index 76875eee8..5a245dd9c 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/container_historymodifier_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/containermapper_task.go @@ -61,43 +61,43 @@ func (c *containerStatusIdentity) String() string { } } -// ContainerHistoryModifierTask is the task to generate container history. -var ContainerHistoryModifierTask = commonlogk8sauditv2_contract.NewManifestHistoryModifier[*containerHistoryModifierTaskState](&containerHistoryModifierTaskSetting{}) +// ContainerLogToTimelineMapperTask is the task to generate container history. +var ContainerLogToTimelineMapperTask = commonlogk8sauditv2_contract.NewManifestLogToTimelineMapper[*containerLogToTimelineMapperTaskState](&containerLogToTimelineMapperTaskSetting{}) -type containerHistoryModifierTaskState struct { +type containerLogToTimelineMapperTaskState struct { // containerIdentities is the map of container identities. containerIdentities map[string]*containerStatusIdentity // containerStateWalkers is the map of container state walkers. containerStateWalkers map[string]*containerStateWalker } -type containerHistoryModifierTaskSetting struct { +type containerLogToTimelineMapperTaskSetting struct { } -// Dependencies implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *containerHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *containerLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *containerHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { +// GroupedLogTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *containerLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { return commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID.Ref() } -// LogSerializerTask implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *containerHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref() +// LogIngesterTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *containerLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } -// PassCount implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *containerHistoryModifierTaskSetting) PassCount() int { +// PassCount implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *containerLogToTimelineMapperTaskSetting) PassCount() int { return 2 } -// Process implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *containerHistoryModifierTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *containerHistoryModifierTaskState) (*containerHistoryModifierTaskState, error) { +// Process implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *containerLogToTimelineMapperTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *containerLogToTimelineMapperTaskState) (*containerLogToTimelineMapperTaskState, error) { if state == nil { - state = &containerHistoryModifierTaskState{ + state = &containerLogToTimelineMapperTaskState{ containerIdentities: map[string]*containerStatusIdentity{}, containerStateWalkers: map[string]*containerStateWalker{}, } @@ -117,7 +117,7 @@ func (c *containerHistoryModifierTaskSetting) Process(ctx context.Context, passI } // processFirstPass collects all container identities from the log. -func (c *containerHistoryModifierTaskSetting) processFirstPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *containerHistoryModifierTaskState) (*containerHistoryModifierTaskState, error) { +func (c *containerLogToTimelineMapperTaskSetting) processFirstPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *containerLogToTimelineMapperTaskState) (*containerLogToTimelineMapperTaskState, error) { findContainers := func(containerType containerType, fieldName string) { statuses, err := event.EventTargetBodyReader.GetReader(fieldName) if err == nil { @@ -140,7 +140,7 @@ func (c *containerHistoryModifierTaskSetting) processFirstPass(ctx context.Conte } // processSecondPass generates revisions for each container. -func (c *containerHistoryModifierTaskSetting) processSecondPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *containerHistoryModifierTaskState) (*containerHistoryModifierTaskState, error) { +func (c *containerLogToTimelineMapperTaskSetting) processSecondPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *containerLogToTimelineMapperTaskState) (*containerLogToTimelineMapperTaskState, error) { currentStateReaders := map[string]*structured.NodeReader{} findContainerStateReaders := func(containerType containerType, fieldName string) { statuses, err := event.EventTargetBodyReader.GetReader(fieldName) @@ -178,13 +178,13 @@ func (c *containerHistoryModifierTaskSetting) processSecondPass(ctx context.Cont return state, nil } -// TaskID implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *containerHistoryModifierTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { - return commonlogk8sauditv2_contract.ContainerHistoryModifierTaskID +// TaskID implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *containerLogToTimelineMapperTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { + return commonlogk8sauditv2_contract.ContainerLogToTimelineMapperTaskID } -// ResourcePairs implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (c *containerHistoryModifierTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { +// ResourcePairs implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (c *containerLogToTimelineMapperTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { results := []commonlogk8sauditv2_contract.ResourcePair{} for _, group := range groupedLogs { // core/v1#pod#namespace#podnanme @@ -197,7 +197,7 @@ func (c *containerHistoryModifierTaskSetting) ResourcePairs(ctx context.Context, return results, nil } -var _ commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting[*containerHistoryModifierTaskState] = (*containerHistoryModifierTaskSetting)(nil) +var _ commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting[*containerLogToTimelineMapperTaskState] = (*containerLogToTimelineMapperTaskSetting)(nil) type containerStateWalker struct { // containerIdentity is the identity of the container. diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/container_historymodifier_task_test.go b/pkg/task/inspection/commonlogk8sauditv2/impl/containermapper_task_test.go similarity index 95% rename from pkg/task/inspection/commonlogk8sauditv2/impl/container_historymodifier_task_test.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/containermapper_task_test.go index b7f019f5c..c941496df 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/container_historymodifier_task_test.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/containermapper_task_test.go @@ -388,8 +388,8 @@ state: } } -func TestContainerHistoryModifierTask_Process(t *testing.T) { - task := &containerHistoryModifierTaskSetting{} +func TestContainerLogToTimelineMapperTask_Process(t *testing.T) { + task := &containerLogToTimelineMapperTaskSetting{} ctx := context.Background() podNamespace := "default" podName := "nginx" @@ -399,8 +399,8 @@ func TestContainerHistoryModifierTask_Process(t *testing.T) { pass int yaml string nilBody bool - initialState *containerHistoryModifierTaskState - wantState *containerHistoryModifierTaskState + initialState *containerLogToTimelineMapperTaskState + wantState *containerLogToTimelineMapperTaskState asserters []testchangeset.ChangeSetAsserter }{ { @@ -416,7 +416,7 @@ status: - name: debug-container `, initialState: nil, - wantState: &containerHistoryModifierTaskState{ + wantState: &containerLogToTimelineMapperTaskState{ containerIdentities: map[string]*containerStatusIdentity{ "main-container": { containerName: "main-container", @@ -439,7 +439,7 @@ status: name: "Pass 0: Nil Body", pass: 0, nilBody: true, - wantState: &containerHistoryModifierTaskState{ + wantState: &containerLogToTimelineMapperTaskState{ containerIdentities: map[string]*containerStatusIdentity{}, containerStateWalkers: map[string]*containerStateWalker{}, }, @@ -457,7 +457,7 @@ status: startedAt: "2024-01-01T00:00:00Z" ready: true `, - initialState: &containerHistoryModifierTaskState{ + initialState: &containerLogToTimelineMapperTaskState{ containerIdentities: map[string]*containerStatusIdentity{ "main-container": { containerName: "main-container", @@ -466,7 +466,7 @@ status: }, containerStateWalkers: map[string]*containerStateWalker{}, }, - wantState: &containerHistoryModifierTaskState{ + wantState: &containerLogToTimelineMapperTaskState{ containerIdentities: map[string]*containerStatusIdentity{ "main-container": { containerName: "main-container", @@ -507,7 +507,7 @@ status: status: containerStatuses: [] `, - initialState: &containerHistoryModifierTaskState{ + initialState: &containerLogToTimelineMapperTaskState{ containerIdentities: map[string]*containerStatusIdentity{ "main-container": { containerName: "main-container", @@ -516,7 +516,7 @@ status: }, containerStateWalkers: map[string]*containerStateWalker{}, }, - wantState: &containerHistoryModifierTaskState{ + wantState: &containerLogToTimelineMapperTaskState{ containerIdentities: map[string]*containerStatusIdentity{ "main-container": { containerName: "main-container", @@ -554,7 +554,7 @@ status: name: "Pass 1: Nil Body", pass: 1, nilBody: true, - initialState: &containerHistoryModifierTaskState{ + initialState: &containerLogToTimelineMapperTaskState{ containerIdentities: map[string]*containerStatusIdentity{ "main-container": { containerName: "main-container", @@ -563,7 +563,7 @@ status: }, containerStateWalkers: map[string]*containerStateWalker{}, }, - wantState: &containerHistoryModifierTaskState{ + wantState: &containerLogToTimelineMapperTaskState{ containerIdentities: map[string]*containerStatusIdentity{ "main-container": { containerName: "main-container", @@ -610,7 +610,7 @@ status: t.Fatalf("Process(%d) failed: %v", tc.pass, err) } - if diff := cmp.Diff(tc.wantState, nextState, cmp.AllowUnexported(containerHistoryModifierTaskState{}, containerStatusIdentity{}, containerStateWalker{})); diff != "" { + if diff := cmp.Diff(tc.wantState, nextState, cmp.AllowUnexported(containerLogToTimelineMapperTaskState{}, containerStatusIdentity{}, containerStateWalker{})); diff != "" { t.Errorf("state mismatch (-want +got):\n%s", diff) } diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/endpoint_historymodifier_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task.go similarity index 82% rename from pkg/task/inspection/commonlogk8sauditv2/impl/endpoint_historymodifier_task.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task.go index a755f4435..e35412ebe 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/endpoint_historymodifier_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task.go @@ -37,7 +37,7 @@ type podIdentity struct { namespace string } -type endpointResourceHistoryModifierState struct { +type endpointResourceLogToTimelineMapperState struct { // serviceNames is the set of service names. serviceNames map[string]struct{} // foundPods is the map of found pods. @@ -46,21 +46,21 @@ type endpointResourceHistoryModifierState struct { lastStates map[string]enum.RevisionState } -// EndpointResourceHistoryModifierTask is the task to generate endpoint resource history. -var EndpointResourceHistoryModifierTask = commonlogk8sauditv2_contract.NewManifestHistoryModifier[*endpointResourceHistoryModifierState](&endpointResourceHistoryModifierTaskSetting{}) +// EndpointResourceLogToTimelineMapperTask is the task to generate endpoint resource history. +var EndpointResourceLogToTimelineMapperTask = commonlogk8sauditv2_contract.NewManifestLogToTimelineMapper[*endpointResourceLogToTimelineMapperState](&endpointResourceLogToTimelineMapperTaskSetting{}) -type endpointResourceHistoryModifierTaskSetting struct { +type endpointResourceLogToTimelineMapperTaskSetting struct { } -// PassCount implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (e *endpointResourceHistoryModifierTaskSetting) PassCount() int { +// PassCount implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (e *endpointResourceLogToTimelineMapperTaskSetting) PassCount() int { return 2 } -// Process implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (e *endpointResourceHistoryModifierTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *endpointResourceHistoryModifierState) (*endpointResourceHistoryModifierState, error) { +// Process implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (e *endpointResourceLogToTimelineMapperTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *endpointResourceLogToTimelineMapperState) (*endpointResourceLogToTimelineMapperState, error) { if state == nil { - state = &endpointResourceHistoryModifierState{ + state = &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, @@ -77,7 +77,7 @@ func (e *endpointResourceHistoryModifierTaskSetting) Process(ctx context.Context } // processFirstPass collects all service names and pod identities from the log. -func (e *endpointResourceHistoryModifierTaskSetting) processFirstPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *endpointResourceHistoryModifierState) (*endpointResourceHistoryModifierState, error) { +func (e *endpointResourceLogToTimelineMapperTaskSetting) processFirstPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *endpointResourceLogToTimelineMapperState) (*endpointResourceLogToTimelineMapperState, error) { ownerReferences, err := event.EventTargetBodyReader.GetReader("metadata.ownerReferences") if err == nil { // Scan all owner references to collect service names. @@ -130,7 +130,7 @@ func (e *endpointResourceHistoryModifierTaskSetting) processFirstPass(ctx contex } // processSecondPass generates revisions for each endpoint. -func (e *endpointResourceHistoryModifierTaskSetting) processSecondPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *endpointResourceHistoryModifierState) (*endpointResourceHistoryModifierState, error) { +func (e *endpointResourceLogToTimelineMapperTaskSetting) processSecondPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *endpointResourceLogToTimelineMapperState) (*endpointResourceLogToTimelineMapperState, error) { commonLogFieldSet := log.MustGetFieldSet(event.Log, &log.CommonFieldSet{}) k8sFieldSet := log.MustGetFieldSet(event.Log, &commonlogk8sauditv2_contract.K8sAuditLogFieldSet{}) if event.EventType == commonlogk8sauditv2_contract.ChangeEventTypeTargetCreation && k8sFieldSet.K8sOperation.Verb != enum.RevisionVerbCreate { @@ -318,13 +318,13 @@ func (e *endpointResourceHistoryModifierTaskSetting) processSecondPass(ctx conte return state, nil } -// TaskID implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (e *endpointResourceHistoryModifierTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { - return commonlogk8sauditv2_contract.EndpointResourceHistoryModifierTaskID +// TaskID implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (e *endpointResourceLogToTimelineMapperTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { + return commonlogk8sauditv2_contract.EndpointResourceLogToTimelineMapperTaskID } -// ResourcePairs implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (e *endpointResourceHistoryModifierTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { +// ResourcePairs implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (e *endpointResourceLogToTimelineMapperTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { result := []commonlogk8sauditv2_contract.ResourcePair{} for _, group := range groupedLogs { if group.Resource.APIVersion == "discovery.k8s.io/v1" && group.Resource.Kind == "endpointslice" { @@ -337,18 +337,18 @@ func (e *endpointResourceHistoryModifierTaskSetting) ResourcePairs(ctx context.C } // Dependencies implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (e *endpointResourceHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +func (e *endpointResourceLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } // GroupedLogTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (e *endpointResourceHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { +func (e *endpointResourceLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { return commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID.Ref() } -// LogSerializerTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (e *endpointResourceHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref() +// LogIngesterTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +func (e *endpointResourceLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } // endpointConditionToPodEndpointState converts endpoint conditions to revision state. diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/endpoint_historymodifier_task_test.go b/pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task_test.go similarity index 90% rename from pkg/task/inspection/commonlogk8sauditv2/impl/endpoint_historymodifier_task_test.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task_test.go index 07eb735b7..f55b465c8 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/endpoint_historymodifier_task_test.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task_test.go @@ -29,8 +29,8 @@ import ( "github.com/google/go-cmp/cmp" ) -func TestEndpointHistoryModifierTask_Process(t *testing.T) { - task := &endpointResourceHistoryModifierTaskSetting{} +func TestEndpointLogToTimelineMapperTask_Process(t *testing.T) { + task := &endpointResourceLogToTimelineMapperTaskSetting{} ctx := context.Background() timestamp := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC) @@ -40,8 +40,8 @@ func TestEndpointHistoryModifierTask_Process(t *testing.T) { yaml string eventType commonlogk8sauditv2_contract.ChangeEventType operation enum.RevisionVerb - initialState *endpointResourceHistoryModifierState - wantState *endpointResourceHistoryModifierState + initialState *endpointResourceLogToTimelineMapperState + wantState *endpointResourceLogToTimelineMapperState asserters []testchangeset.ChangeSetAsserter }{ { @@ -55,12 +55,12 @@ metadata: `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, @@ -82,12 +82,12 @@ endpoints: `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{}, foundPods: map[string]*podIdentity{ "pod-uid-1": { @@ -117,14 +117,14 @@ endpoints: `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, }, lastStates: map[string]enum.RevisionState{}, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, @@ -171,14 +171,14 @@ endpoints: `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, }, lastStates: map[string]enum.RevisionState{}, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, @@ -215,14 +215,14 @@ endpoints: `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, }, lastStates: map[string]enum.RevisionState{}, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, @@ -253,12 +253,12 @@ endpoints: `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, @@ -285,12 +285,12 @@ endpoints: `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, @@ -317,12 +317,12 @@ endpoints: `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{}, lastStates: map[string]enum.RevisionState{}, @@ -348,7 +348,7 @@ endpoints: [] `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, operation: enum.RevisionVerbUpdate, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, @@ -357,7 +357,7 @@ endpoints: [] "pod-uid-1": enum.RevisionStateEndpointReady, }, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, @@ -386,7 +386,7 @@ metadata: `, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, operation: enum.RevisionVerbDelete, - initialState: &endpointResourceHistoryModifierState{ + initialState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, @@ -395,7 +395,7 @@ metadata: "pod-uid-1": enum.RevisionStateEndpointReady, }, }, - wantState: &endpointResourceHistoryModifierState{ + wantState: &endpointResourceLogToTimelineMapperState{ serviceNames: map[string]struct{}{"my-service": {}}, foundPods: map[string]*podIdentity{ "pod-uid-1": {uid: "pod-uid-1", name: "my-pod", namespace: "default"}, @@ -459,7 +459,7 @@ metadata: t.Fatalf("Process(%d) failed: %v", tc.pass, err) } - if diff := cmp.Diff(tc.wantState, nextState, cmp.AllowUnexported(endpointResourceHistoryModifierState{}, podIdentity{})); diff != "" { + if diff := cmp.Diff(tc.wantState, nextState, cmp.AllowUnexported(endpointResourceLogToTimelineMapperState{}, podIdentity{})); diff != "" { t.Errorf("state mismatch (-want +got):\n%s", diff) } diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/error_historymodifier_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/errormapper_task.go similarity index 57% rename from pkg/task/inspection/commonlogk8sauditv2/impl/error_historymodifier_task.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/errormapper_task.go index 2564642b2..a5208404e 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/error_historymodifier_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/errormapper_task.go @@ -26,8 +26,8 @@ import ( commonlogk8sauditv2_contract "github.com/GoogleCloudPlatform/khi/pkg/task/inspection/commonlogk8sauditv2/contract" ) -// NonSuccessLogHistoryModifierTask is the task to generate history from non-success logs. -var NonSuccessLogHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](commonlogk8sauditv2_contract.NonSuccessLogHistoryModifierTaskID, &nonSuccessLogHistoryModifierTaskSetting{ +// NonSuccessLogLogToTimelineMapperTask is the task to generate history from non-success logs. +var NonSuccessLogLogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](commonlogk8sauditv2_contract.NonSuccessLogLogToTimelineMapperTaskID, &nonSuccessLogLogToTimelineMapperTaskSetting{ subresourceMapToWriteToParent: map[string]struct{}{ "status": {}, "finalize": {}, @@ -35,35 +35,35 @@ var NonSuccessLogHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask }, }) -type nonSuccessLogHistoryModifierTaskSetting struct { +type nonSuccessLogLogToTimelineMapperTaskSetting struct { // subresourceMapToWriteToParent is the map of subresources to write to the parent resource. subresourceMapToWriteToParent map[string]struct{} } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (e *nonSuccessLogHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (e *nonSuccessLogLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (e *nonSuccessLogHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (e *nonSuccessLogLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return commonlogk8sauditv2_contract.NonSuccessLogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (e *nonSuccessLogHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (e *nonSuccessLogLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (e *nonSuccessLogHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (e *nonSuccessLogLogToTimelineMapperTaskSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { return struct{}{}, e.addEventForLog(l, cs) } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*nonSuccessLogHistoryModifierTaskSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*nonSuccessLogLogToTimelineMapperTaskSetting)(nil) // addEventForLog adds an event for the log. -func (e *nonSuccessLogHistoryModifierTaskSetting) addEventForLog(l *log.Log, cs *history.ChangeSet) error { +func (e *nonSuccessLogLogToTimelineMapperTaskSetting) addEventForLog(l *log.Log, cs *history.ChangeSet) error { fieldSet := log.MustGetFieldSet(l, &commonlogk8sauditv2_contract.K8sAuditLogFieldSet{}) op := *fieldSet.K8sOperation if _, ok := e.subresourceMapToWriteToParent[op.SubResourceName]; op.SubResourceName != "" && ok { diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/error_history_modifier_task_test.go b/pkg/task/inspection/commonlogk8sauditv2/impl/errormapper_task_test.go similarity index 95% rename from pkg/task/inspection/commonlogk8sauditv2/impl/error_history_modifier_task_test.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/errormapper_task_test.go index 9072e4104..a2e88cd61 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/error_history_modifier_task_test.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/errormapper_task_test.go @@ -24,7 +24,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestNonSuccessLogHistoryModifierTaskSetting_AddEventForLog(t *testing.T) { +func TestNonSuccessLogLogToTimelineMapperTaskSetting_AddEventForLog(t *testing.T) { testCases := []struct { desc string input *commonlogk8sauditv2_contract.K8sAuditLogFieldSet @@ -82,7 +82,7 @@ func TestNonSuccessLogHistoryModifierTaskSetting_AddEventForLog(t *testing.T) { l := log.NewLogWithFieldSetsForTest(tc.input) cs := history.NewChangeSet(l) - setting := &nonSuccessLogHistoryModifierTaskSetting{ + setting := &nonSuccessLogLogToTimelineMapperTaskSetting{ subresourceMapToWriteToParent: map[string]struct{}{ "status": {}, }, diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go index 7b1801632..86f813559 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go @@ -173,7 +173,7 @@ var ResourceLifetimeTrackerTask = inspectiontaskbase.NewProgressReportableInspec commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID, []taskid.UntypedTaskReference{ commonlogk8sauditv2_contract.ManifestGeneratorTaskID.Ref(), - commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref(), + commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref(), }, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType, tp *inspectionmetadata.TaskProgressMetadata) (commonlogk8sauditv2_contract.ResourceManifestLogGroupMap, error) { if taskMode == inspectioncore_contract.TaskModeDryRun { @@ -197,7 +197,7 @@ var ResourceLifetimeTrackerTask = inspectiontaskbase.NewProgressReportableInspec updator.Start(ctx) processedLogCount.Store(0) - historyModifier := &lifeTimeTrackerTaskSetting{ + mapperSettingSetting := &lifeTimeTrackerTaskSetting{ kindsToWaitExactDeletionToDetermineDeletion: map[string]struct{}{ "core/v1#pod": {}, }, @@ -213,7 +213,7 @@ var ResourceLifetimeTrackerTask = inspectiontaskbase.NewProgressReportableInspec } for _, l := range group.Logs { var err error - groupData, err = historyModifier.DetectLifetimeLogEvent(ctx, l, groupData) + groupData, err = mapperSettingSetting.DetectLifetimeLogEvent(ctx, l, groupData) if err != nil { var yaml string yamlBytes, err2 := l.Log.Serialize("", &structured.YAMLNodeSerializer{}) diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task.go index d5f357a28..8e49a4e97 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task.go @@ -26,9 +26,9 @@ import ( commonlogk8sauditv2_contract "github.com/GoogleCloudPlatform/khi/pkg/task/inspection/commonlogk8sauditv2/contract" ) -// LogSerializerTask is the task to serialize k8s audit logs. -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask( - commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID, +// LogIngesterTask is the task to serialize k8s audit logs. +var LogIngesterTask = inspectiontaskbase.NewLogIngester( + commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID, commonlogk8sauditv2_contract.K8sAuditLogProviderRef, ) @@ -42,31 +42,31 @@ var LogSummaryGrouperTask = inspectiontaskbase.NewLogGrouperTask( }, ) -// LogSummaryHistoryModifierTask is the task to generate log summary from given k8s audit log. -var LogSummaryHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}]( - commonlogk8sauditv2_contract.LogSummaryHistoryModifierTaskID, - &logSummaryHistoryModifierSetting{}, +// LogSummaryLogToTimelineMapperTask is the task to generate log summary from given k8s audit log. +var LogSummaryLogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}]( + commonlogk8sauditv2_contract.LogSummaryLogToTimelineMapperTaskID, + &logSummaryLogToTimelineMapperSetting{}, ) -type logSummaryHistoryModifierSetting struct{} +type logSummaryLogToTimelineMapperSetting struct{} -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (s *logSummaryHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (s *logSummaryLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (s *logSummaryHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (s *logSummaryLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return commonlogk8sauditv2_contract.LogSummaryGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (s *logSummaryHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (s *logSummaryLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (s *logSummaryHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (s *logSummaryLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { commonFieldSet := log.MustGetFieldSet(l, &commonlogk8sauditv2_contract.K8sAuditLogFieldSet{}) if commonFieldSet.IsError { @@ -79,7 +79,7 @@ func (s *logSummaryHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Co } // logSummary generates the summary string from given log field set. -func (s *logSummaryHistoryModifierSetting) logSummary(fieldSet *commonlogk8sauditv2_contract.K8sAuditLogFieldSet) string { +func (s *logSummaryLogToTimelineMapperSetting) logSummary(fieldSet *commonlogk8sauditv2_contract.K8sAuditLogFieldSet) string { if fieldSet.IsError { return fmt.Sprintf("【%s(%d)】%s %s", fieldSet.StatusMessage, fieldSet.StatusCode, fieldSet.VerbString(), fieldSet.RequestURI) } else { @@ -87,4 +87,4 @@ func (s *logSummaryHistoryModifierSetting) logSummary(fieldSet *commonlogk8saudi } } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*logSummaryHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*logSummaryLogToTimelineMapperSetting)(nil) diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task_test.go b/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task_test.go index 08e8b62b7..b8d6ef00a 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task_test.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task_test.go @@ -22,7 +22,7 @@ import ( commonlogk8sauditv2_contract "github.com/GoogleCloudPlatform/khi/pkg/task/inspection/commonlogk8sauditv2/contract" ) -func TestLogSummaryHistoryModifierSetting_getLogSummary(t *testing.T) { +func TestLogSummaryLogToTimelineMapperSetting_getLogSummary(t *testing.T) { testCases := []struct { desc string input *commonlogk8sauditv2_contract.K8sAuditLogFieldSet @@ -58,7 +58,7 @@ func TestLogSummaryHistoryModifierSetting_getLogSummary(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { - setting := &logSummaryHistoryModifierSetting{} + setting := &logSummaryLogToTimelineMapperSetting{} got := setting.logSummary(tc.input) if got != tc.want { t.Errorf("got %q, want %q", got, tc.want) diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/namespacerequest_historymodifier_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/namespacerequestmapper_task.go similarity index 83% rename from pkg/task/inspection/commonlogk8sauditv2/impl/namespacerequest_historymodifier_task.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/namespacerequestmapper_task.go index 74203f9ec..f9bb41f38 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/namespacerequest_historymodifier_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/namespacerequestmapper_task.go @@ -29,10 +29,10 @@ import ( inspectioncore_contract "github.com/GoogleCloudPlatform/khi/pkg/task/inspection/inspectioncore/contract" ) -// NamespaceRequestHistoryModifierTask is a task to generate events of requests against namespace wide by deletecollection. -// TODO: This must be reimplemented with the HistoryModifierTask once it supports receiving group path. -var NamespaceRequestHistoryModifierTask = inspectiontaskbase.NewProgressReportableInspectionTask(commonlogk8sauditv2_contract.NamespaceRequestHistoryModifierTaskID, []taskid.UntypedTaskReference{ - commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref(), +// NamespaceRequestLogToTimelineMapperTask is a task to generate events of requests against namespace wide by deletecollection. +// TODO: This must be reimplemented with the LogToTimelineMapperTask once it supports receiving group path. +var NamespaceRequestLogToTimelineMapperTask = inspectiontaskbase.NewProgressReportableInspectionTask(commonlogk8sauditv2_contract.NamespaceRequestLogToTimelineMapperTaskID, []taskid.UntypedTaskReference{ + commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref(), commonlogk8sauditv2_contract.ChangeTargetGrouperTaskID.Ref(), }, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType, tp *inspectionmetadata.TaskProgressMetadata) (struct{}, error) { if taskMode == inspectioncore_contract.TaskModeDryRun { diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreference_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task.go similarity index 64% rename from pkg/task/inspection/commonlogk8sauditv2/impl/ownerreference_task.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task.go index f57664c59..e94723db5 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreference_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task.go @@ -27,20 +27,20 @@ import ( commonlogk8sauditv2_contract "github.com/GoogleCloudPlatform/khi/pkg/task/inspection/commonlogk8sauditv2/contract" ) -// ResourceOwnerReferenceModifierTask is the task to modify resource owner reference. -var ResourceOwnerReferenceModifierTask = commonlogk8sauditv2_contract.NewManifestHistoryModifier[struct{}](&resourceOwnerReferenceModifierTaskSetting{ +// ResourceOwnerReferenceTimelineMapperTask is the task to map logs into resource owner reference. +var ResourceOwnerReferenceTimelineMapperTask = commonlogk8sauditv2_contract.NewManifestLogToTimelineMapper[struct{}](&resourceOwnerReferenceTimelineMapperTaskSetting{ nonNamespacedOwnerTypes: map[string]struct{}{ "core/v1#node": {}, }, }) -type resourceOwnerReferenceModifierTaskSetting struct { +type resourceOwnerReferenceTimelineMapperTaskSetting struct { // nonNamespacedOwnerTypes is the set of owner types that are not namespaced. nonNamespacedOwnerTypes map[string]struct{} } -// Process implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *resourceOwnerReferenceModifierTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// Process implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *resourceOwnerReferenceTimelineMapperTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { if event.EventTargetBodyReader == nil { return struct{}{}, nil } @@ -81,13 +81,13 @@ func (r *resourceOwnerReferenceModifierTaskSetting) Process(ctx context.Context, return struct{}{}, nil } -// TaskID implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *resourceOwnerReferenceModifierTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { - return commonlogk8sauditv2_contract.ResourceOwnerReferenceModifierTaskID +// TaskID implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *resourceOwnerReferenceTimelineMapperTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { + return commonlogk8sauditv2_contract.ResourceOwnerReferenceTimelineMapperTaskID } -// ResourcePairs implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *resourceOwnerReferenceModifierTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { +// ResourcePairs implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *resourceOwnerReferenceTimelineMapperTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { result := make([]commonlogk8sauditv2_contract.ResourcePair, 0, len(groupedLogs)) for _, group := range groupedLogs { if group.Resource.Type() == commonlogk8sauditv2_contract.Namespace { @@ -101,23 +101,23 @@ func (r *resourceOwnerReferenceModifierTaskSetting) ResourcePairs(ctx context.Co } // Dependencies implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (r *resourceOwnerReferenceModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +func (r *resourceOwnerReferenceTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } // PassCount implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (r *resourceOwnerReferenceModifierTaskSetting) PassCount() int { +func (r *resourceOwnerReferenceTimelineMapperTaskSetting) PassCount() int { return 1 } // GroupedLogTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (r *resourceOwnerReferenceModifierTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { +func (r *resourceOwnerReferenceTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { return commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID.Ref() } -// LogSerializerTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. -func (r *resourceOwnerReferenceModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref() +// LogIngesterTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +func (r *resourceOwnerReferenceTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } -var _ commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting[struct{}] = (*resourceOwnerReferenceModifierTaskSetting)(nil) +var _ commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting[struct{}] = (*resourceOwnerReferenceTimelineMapperTaskSetting)(nil) diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreference_task_test.go b/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task_test.go similarity index 97% rename from pkg/task/inspection/commonlogk8sauditv2/impl/ownerreference_task_test.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task_test.go index 8935df757..ce83c4732 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreference_task_test.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task_test.go @@ -29,8 +29,8 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestResourceOwnerReferenceModifierTask_Process(t *testing.T) { - task := &resourceOwnerReferenceModifierTaskSetting{ +func TestResourceOwnerReferenceTimelineMapperTask_Process(t *testing.T) { + task := &resourceOwnerReferenceTimelineMapperTaskSetting{ nonNamespacedOwnerTypes: map[string]struct{}{ "core/v1#node": {}, }, diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/podphase_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/podphasemapper_task.go similarity index 72% rename from pkg/task/inspection/commonlogk8sauditv2/impl/podphase_task.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/podphasemapper_task.go index bdeff96cc..05a566786 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/podphase_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/podphasemapper_task.go @@ -43,12 +43,12 @@ type podPhaseTaskState struct { uidToNodeNameMap map[string]string } -type podPhaseTaskSetting struct { +type podPhaseLogToTimelineMapperTaskSetting struct { minimumDeltaTimeToCreateInferredCreationRevision time.Duration } // Process processes the log to generate pod phase history. -func (c *podPhaseTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *podPhaseTaskState) (*podPhaseTaskState, error) { +func (c *podPhaseLogToTimelineMapperTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *podPhaseTaskState) (*podPhaseTaskState, error) { if state == nil { state = &podPhaseTaskState{ uidToNodeNameMap: map[string]string{}, @@ -69,7 +69,7 @@ func (c *podPhaseTaskSetting) Process(ctx context.Context, passIndex int, event } // firstPass collects the node name of the pod. -func (c *podPhaseTaskSetting) firstPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *podPhaseTaskState) (*podPhaseTaskState, error) { +func (c *podPhaseLogToTimelineMapperTaskSetting) firstPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *podPhaseTaskState) (*podPhaseTaskState, error) { nodeName, found := GetNodeNameOfPod(event.EventTargetBodyReader) if !found { return state, nil @@ -83,7 +83,7 @@ func (c *podPhaseTaskSetting) firstPass(ctx context.Context, event commonlogk8sa } // secondPass generates revisions for pod phase. -func (c *podPhaseTaskSetting) secondPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *podPhaseTaskState) (*podPhaseTaskState, error) { +func (c *podPhaseLogToTimelineMapperTaskSetting) secondPass(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, state *podPhaseTaskState) (*podPhaseTaskState, error) { commonLogFieldSet := log.MustGetFieldSet(event.Log, &log.CommonFieldSet{}) k8sFieldSet := log.MustGetFieldSet(event.Log, &commonlogk8sauditv2_contract.K8sAuditLogFieldSet{}) uid, found := GetUID(event.EventTargetBodyReader) @@ -138,27 +138,27 @@ func (c *podPhaseTaskSetting) secondPass(ctx context.Context, event commonlogk8s return state, nil } -func (c *podPhaseTaskSetting) Dependencies() []taskid.UntypedTaskReference { +func (c *podPhaseLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -func (c *podPhaseTaskSetting) PassCount() int { +func (c *podPhaseLogToTimelineMapperTaskSetting) PassCount() int { return 2 } -func (c *podPhaseTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { +func (c *podPhaseLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { return commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID.Ref() } -func (c *podPhaseTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref() +func (c *podPhaseLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } -func (c *podPhaseTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { - return commonlogk8sauditv2_contract.PodPhaseHistoryModifierTaskID +func (c *podPhaseLogToTimelineMapperTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { + return commonlogk8sauditv2_contract.PodPhaseLogToTimelineMapperTaskID } -func (c *podPhaseTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { +func (c *podPhaseLogToTimelineMapperTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { result := []commonlogk8sauditv2_contract.ResourcePair{} for _, group := range groupedLogs { // core/v1#pod#namespace#podnanme @@ -173,9 +173,9 @@ func (c *podPhaseTaskSetting) ResourcePairs(ctx context.Context, groupedLogs com return result, nil } -var _ commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting[*podPhaseTaskState] = (*podPhaseTaskSetting)(nil) +var _ commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting[*podPhaseTaskState] = (*podPhaseLogToTimelineMapperTaskSetting)(nil) -// PodPhaseHistoryModifierTask is the task to generate pod phase history. -var PodPhaseHistoryModifierTask = commonlogk8sauditv2_contract.NewManifestHistoryModifier[*podPhaseTaskState](&podPhaseTaskSetting{ +// PodPhaseLogToTimelineMapperTask is the task to generate pod phase history. +var PodPhaseLogToTimelineMapperTask = commonlogk8sauditv2_contract.NewManifestLogToTimelineMapper[*podPhaseTaskState](&podPhaseLogToTimelineMapperTaskSetting{ minimumDeltaTimeToCreateInferredCreationRevision: 5 * time.Second, }) diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/podphase_task_test.go b/pkg/task/inspection/commonlogk8sauditv2/impl/podphasemapper_task_test.go similarity index 99% rename from pkg/task/inspection/commonlogk8sauditv2/impl/podphase_task_test.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/podphasemapper_task_test.go index 6a7267535..3ebaeb3bc 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/podphase_task_test.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/podphasemapper_task_test.go @@ -415,7 +415,7 @@ status: }, } - taskSetting := &podPhaseTaskSetting{ + taskSetting := &podPhaseLogToTimelineMapperTaskSetting{ minimumDeltaTimeToCreateInferredCreationRevision: 5 * time.Second, } diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/registration.go b/pkg/task/inspection/commonlogk8sauditv2/impl/registration.go index 2032f2149..8b2349e76 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/registration.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/registration.go @@ -22,24 +22,24 @@ import ( // Register registers all googlecloudcommon inspection tasks to the registry. func Register(registry coreinspection.InspectionTaskRegistry) error { return coretask.RegisterTasks(registry, - LogSerializerTask, + LogIngesterTask, LogSummaryGrouperTask, - LogSummaryHistoryModifierTask, + LogSummaryLogToTimelineMapperTask, SuccessLogFilterTask, NonSuccessLogFilterTask, LogSorterTask, ChangeTargetGrouperTask, ManifestGeneratorTask, ResourceLifetimeTrackerTask, - ResourceRevisionHistoryModifierTask, + ResourceRevisionLogToTimelineMapperTask, NonSuccessLogGrouperTask, - NonSuccessLogHistoryModifierTask, - ConditionHistoryModifierTask, - ResourceOwnerReferenceModifierTask, - PodPhaseHistoryModifierTask, - EndpointResourceHistoryModifierTask, - ContainerHistoryModifierTask, - NamespaceRequestHistoryModifierTask, + NonSuccessLogLogToTimelineMapperTask, + ConditionLogToTimelineMapperTask, + ResourceOwnerReferenceTimelineMapperTask, + PodPhaseLogToTimelineMapperTask, + EndpointResourceLogToTimelineMapperTask, + ContainerLogToTimelineMapperTask, + NamespaceRequestLogToTimelineMapperTask, NodeNameInventoryTask, NodeNameDiscoveryTask, diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevision_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevisionmapper_task.go similarity index 73% rename from pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevision_task.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevisionmapper_task.go index daf1dcacc..fd231017b 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevision_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevisionmapper_task.go @@ -28,7 +28,7 @@ import ( commonlogk8sauditv2_contract "github.com/GoogleCloudPlatform/khi/pkg/task/inspection/commonlogk8sauditv2/contract" ) -type resourceRevisionHistoryModifierState struct { +type resourceRevisionLogToTimelineMapperState struct { // WasCompletelyRemoved is true if the resource was completely removed. WasCompletelyRemoved bool // DeletionStarted is true if the deletion started. @@ -37,55 +37,55 @@ type resourceRevisionHistoryModifierState struct { PrevUID string } -// ResourceRevisionHistoryModifierTaskSetting is the setting for the resource revision history modifier task. -type ResourceRevisionHistoryModifierTaskSetting struct { +// ResourceRevisionLogToTimelineMapperTaskSetting is the setting for the resource revision timeline mapper task. +type ResourceRevisionLogToTimelineMapperTaskSetting struct { // minimumDeltaTimeToCreateInferredCreationRevision is a threshold of a duration that controls if KHI should create an inferred cretion revision from creationTimestamp. minimumDeltaTimeToCreateInferredCreationRevision time.Duration // kindsToWaitExactDeletionToDeterminDeletion is the map of kinds to wait exact deletion to determine deletion. kindsToWaitExactDeletionToDeterminDeletion map[string]struct{} } -// Dependencies implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *ResourceRevisionHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *ResourceRevisionLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *ResourceRevisionHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { +// GroupedLogTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *ResourceRevisionLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { return commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID.Ref() } -// LogSerializerTask implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *ResourceRevisionHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return commonlogk8sauditv2_contract.K8sAuditLogSerializerTaskID.Ref() +// LogIngesterTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *ResourceRevisionLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } -// Process implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *ResourceRevisionHistoryModifierTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, prevGroupData *resourceRevisionHistoryModifierState) (*resourceRevisionHistoryModifierState, error) { +// Process implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *ResourceRevisionLogToTimelineMapperTaskSetting) Process(ctx context.Context, passIndex int, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, builder *history.Builder, prevGroupData *resourceRevisionLogToTimelineMapperState) (*resourceRevisionLogToTimelineMapperState, error) { switch event.EventType { case commonlogk8sauditv2_contract.ChangeEventTypeSourceDeletion: - return &resourceRevisionHistoryModifierState{}, r.handleParentChangeForSubresource(ctx, event, cs) + return &resourceRevisionLogToTimelineMapperState{}, r.handleParentChangeForSubresource(ctx, event, cs) case commonlogk8sauditv2_contract.ChangeEventTypeSourceModification: - return &resourceRevisionHistoryModifierState{}, r.handleParentChangeForSubresource(ctx, event, cs) + return &resourceRevisionLogToTimelineMapperState{}, r.handleParentChangeForSubresource(ctx, event, cs) case commonlogk8sauditv2_contract.ChangeEventTypeSourceCreation: - return &resourceRevisionHistoryModifierState{}, r.handleParentChangeForSubresource(ctx, event, cs) + return &resourceRevisionLogToTimelineMapperState{}, r.handleParentChangeForSubresource(ctx, event, cs) default: return r.handleTargetChange(ctx, event, cs, prevGroupData) } } -// PassCount implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *ResourceRevisionHistoryModifierTaskSetting) PassCount() int { +// PassCount implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *ResourceRevisionLogToTimelineMapperTaskSetting) PassCount() int { return 1 } -// TaskID implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *ResourceRevisionHistoryModifierTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { - return commonlogk8sauditv2_contract.ResourceRevisionHistoryModifierTaskID +// TaskID implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *ResourceRevisionLogToTimelineMapperTaskSetting) TaskID() taskid.TaskImplementationID[struct{}] { + return commonlogk8sauditv2_contract.ResourceRevisionLogToTimelineMapperTaskID } -// ResourcePairs implements commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting. -func (r *ResourceRevisionHistoryModifierTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { +// ResourcePairs implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. +func (r *ResourceRevisionLogToTimelineMapperTaskSetting) ResourcePairs(ctx context.Context, groupedLogs commonlogk8sauditv2_contract.ResourceManifestLogGroupMap) ([]commonlogk8sauditv2_contract.ResourcePair, error) { result := []commonlogk8sauditv2_contract.ResourcePair{} for _, group := range groupedLogs { switch group.Resource.Type() { @@ -108,10 +108,10 @@ func (r *ResourceRevisionHistoryModifierTaskSetting) ResourcePairs(ctx context.C return result, nil } -var _ commonlogk8sauditv2_contract.ManifestHistoryModifierTaskSetting[*resourceRevisionHistoryModifierState] = (*ResourceRevisionHistoryModifierTaskSetting)(nil) +var _ commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting[*resourceRevisionLogToTimelineMapperState] = (*ResourceRevisionLogToTimelineMapperTaskSetting)(nil) -// ResourceRevisionHistoryModifierTask is the task to generate resource revision history. -var ResourceRevisionHistoryModifierTask = commonlogk8sauditv2_contract.NewManifestHistoryModifier(&ResourceRevisionHistoryModifierTaskSetting{ +// ResourceRevisionLogToTimelineMapperTask is the task to generate resource revision history. +var ResourceRevisionLogToTimelineMapperTask = commonlogk8sauditv2_contract.NewManifestLogToTimelineMapper(&ResourceRevisionLogToTimelineMapperTaskSetting{ minimumDeltaTimeToCreateInferredCreationRevision: 5 * time.Second, kindsToWaitExactDeletionToDeterminDeletion: map[string]struct{}{ "core/v1#pod": {}, @@ -119,7 +119,7 @@ var ResourceRevisionHistoryModifierTask = commonlogk8sauditv2_contract.NewManife }) // handleParentChangeForSubresource handles the parent change for subresource. -func (r *ResourceRevisionHistoryModifierTaskSetting) handleParentChangeForSubresource(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet) error { +func (r *ResourceRevisionLogToTimelineMapperTaskSetting) handleParentChangeForSubresource(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet) error { switch event.EventType { case commonlogk8sauditv2_contract.ChangeEventTypeSourceDeletion: path := resourcepath.ResourcePath{ @@ -147,7 +147,7 @@ func (r *ResourceRevisionHistoryModifierTaskSetting) handleParentChangeForSubres } // handleTargetChange handles the target change. -func (r *ResourceRevisionHistoryModifierTaskSetting) handleTargetChange(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, prevGroupData *resourceRevisionHistoryModifierState) (*resourceRevisionHistoryModifierState, error) { +func (r *ResourceRevisionLogToTimelineMapperTaskSetting) handleTargetChange(ctx context.Context, event commonlogk8sauditv2_contract.ResourceChangeEvent, cs *history.ChangeSet, prevGroupData *resourceRevisionLogToTimelineMapperState) (*resourceRevisionLogToTimelineMapperState, error) { commonFieldSet := log.MustGetFieldSet(event.Log, &log.CommonFieldSet{}) k8sFieldSet := log.MustGetFieldSet(event.Log, &commonlogk8sauditv2_contract.K8sAuditLogFieldSet{}) resourcePath := resourcepath.ResourcePath{ @@ -155,7 +155,7 @@ func (r *ResourceRevisionHistoryModifierTaskSetting) handleTargetChange(ctx cont ParentRelationship: enum.RelationshipChild, } if prevGroupData == nil { - prevGroupData = &resourceRevisionHistoryModifierState{} + prevGroupData = &resourceRevisionLogToTimelineMapperState{} } if k8sFieldSet.K8sOperation.Verb == enum.RevisionVerbDeleteCollection && prevGroupData.WasCompletelyRemoved { diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevision_task_test.go b/pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevisionmapper_task_test.go similarity index 89% rename from pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevision_task_test.go rename to pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevisionmapper_task_test.go index 64b5cfee0..865836c54 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevision_task_test.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/resourcerevisionmapper_task_test.go @@ -28,16 +28,16 @@ import ( "github.com/google/go-cmp/cmp" ) -func TestResourceRevisionHistoryModifierTask_Process(t *testing.T) { +func TestResourceRevisionLogToTimelineMapperTask_Process(t *testing.T) { testTime := time.Date(2023, 10, 26, 10, 0, 0, 0, time.UTC) testCases := []struct { name string - inputState *resourceRevisionHistoryModifierState + inputState *resourceRevisionLogToTimelineMapperState verb enum.RevisionVerb targetResourceBodyYAML string eventType commonlogk8sauditv2_contract.ChangeEventType - wantState *resourceRevisionHistoryModifierState + wantState *resourceRevisionLogToTimelineMapperState subResourceName string asserters []testchangeset.ChangeSetAsserter }{ @@ -48,7 +48,7 @@ func TestResourceRevisionHistoryModifierTask_Process(t *testing.T) { targetResourceBodyYAML: `metadata: uid: "test-uid"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetCreation, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: false, DeletionStarted: false, PrevUID: "test-uid", @@ -69,13 +69,13 @@ func TestResourceRevisionHistoryModifierTask_Process(t *testing.T) { }, { name: "Delete event without body", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", }, verb: enum.RevisionVerbDelete, targetResourceBodyYAML: "", eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: false, DeletionStarted: true, PrevUID: "test-uid", @@ -95,7 +95,7 @@ func TestResourceRevisionHistoryModifierTask_Process(t *testing.T) { }, { name: "Delete event with graceful period > 0", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", }, verb: enum.RevisionVerbDelete, @@ -104,7 +104,7 @@ func TestResourceRevisionHistoryModifierTask_Process(t *testing.T) { deletionGracePeriodSeconds: 30 deletionTimestamp: "2023-10-26T10:00:00Z"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: false, DeletionStarted: true, PrevUID: "test-uid", @@ -127,7 +127,7 @@ func TestResourceRevisionHistoryModifierTask_Process(t *testing.T) { }, { name: "Delete event with graceful period = 0", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", }, verb: enum.RevisionVerbDelete, @@ -136,7 +136,7 @@ func TestResourceRevisionHistoryModifierTask_Process(t *testing.T) { deletionGracePeriodSeconds: 0 deletionTimestamp: "2023-10-26T10:00:00Z"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: true, DeletionStarted: false, PrevUID: "test-uid", @@ -159,7 +159,7 @@ func TestResourceRevisionHistoryModifierTask_Process(t *testing.T) { }, { name: "Pod deletion with Failed phase", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", }, verb: enum.RevisionVerbDelete, @@ -170,7 +170,7 @@ metadata: status: phase: Failed`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: true, DeletionStarted: false, PrevUID: "test-uid", @@ -195,7 +195,7 @@ status: }, { name: "Recreation of resource", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "old-uid", WasCompletelyRemoved: true, }, @@ -203,7 +203,7 @@ status: targetResourceBodyYAML: `metadata: uid: "new-uid"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetCreation, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: false, DeletionStarted: false, PrevUID: "new-uid", @@ -224,7 +224,7 @@ status: }, { name: "DeleteCollection with phase=Failed", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", }, verb: enum.RevisionVerbDeleteCollection, @@ -233,7 +233,7 @@ status: status: phase: Failed`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: true, DeletionStarted: false, PrevUID: "test-uid", @@ -262,7 +262,7 @@ status: uid: "test-uid" creationTimestamp: "2023-10-26T09:59:00Z"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetCreation, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: false, DeletionStarted: false, PrevUID: "test-uid", @@ -294,14 +294,14 @@ status: }, { name: "Pod deletion without explicit signal", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", }, verb: enum.RevisionVerbDelete, targetResourceBodyYAML: `metadata: uid: "test-uid"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: false, DeletionStarted: true, PrevUID: "test-uid", @@ -322,7 +322,7 @@ status: }, { name: "Patch during deletion", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", DeletionStarted: true, }, @@ -330,7 +330,7 @@ status: targetResourceBodyYAML: `metadata: uid: "test-uid"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: false, DeletionStarted: true, PrevUID: "test-uid", @@ -351,7 +351,7 @@ status: }, { name: "Patch after deletion", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", WasCompletelyRemoved: true, }, @@ -359,7 +359,7 @@ status: targetResourceBodyYAML: `metadata: uid: "test-uid"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: true, DeletionStarted: false, PrevUID: "test-uid", @@ -380,7 +380,7 @@ status: }, { name: "deletionGracePeriodSeconds=0 but with finalizers", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", }, verb: enum.RevisionVerbPatch, @@ -390,7 +390,7 @@ status: finalizers: - test-finalizer`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetModification, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: false, DeletionStarted: true, PrevUID: "test-uid", @@ -414,7 +414,7 @@ status: }, { name: "Deletion with finalizers", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", }, verb: enum.RevisionVerbDelete, @@ -423,7 +423,7 @@ status: finalizers: - foregroundDeletion`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: false, DeletionStarted: true, PrevUID: "test-uid", @@ -446,7 +446,7 @@ status: }, { name: "DeleteCollection on already deleted resource", - inputState: &resourceRevisionHistoryModifierState{ + inputState: &resourceRevisionLogToTimelineMapperState{ PrevUID: "test-uid", WasCompletelyRemoved: true, }, @@ -454,7 +454,7 @@ status: targetResourceBodyYAML: `metadata: uid: "test-uid"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeTargetDeletion, - wantState: &resourceRevisionHistoryModifierState{ + wantState: &resourceRevisionLogToTimelineMapperState{ WasCompletelyRemoved: true, DeletionStarted: false, PrevUID: "test-uid", @@ -473,7 +473,7 @@ status: targetResourceBodyYAML: `metadata: uid: "test-uid"`, eventType: commonlogk8sauditv2_contract.ChangeEventTypeSourceDeletion, - wantState: &resourceRevisionHistoryModifierState{}, + wantState: &resourceRevisionLogToTimelineMapperState{}, asserters: []testchangeset.ChangeSetAsserter{ &testchangeset.HasRevision{ ResourcePath: "core/v1#pod#default#test#binding", @@ -490,7 +490,7 @@ status: }, } - task := &ResourceRevisionHistoryModifierTaskSetting{ + task := &ResourceRevisionLogToTimelineMapperTaskSetting{ minimumDeltaTimeToCreateInferredCreationRevision: 5 * time.Second, kindsToWaitExactDeletionToDeterminDeletion: map[string]struct{}{ "core/v1#pod": {}, diff --git a/pkg/task/inspection/googlecloudlogcomputeapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudlogcomputeapiaudit/contract/taskid.go index 7467b9382..32b52f657 100644 --- a/pkg/task/inspection/googlecloudlogcomputeapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogcomputeapiaudit/contract/taskid.go @@ -30,11 +30,11 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](Compute // FieldSetReaderTaskID is the task id to read the common fieldset for processing the log in the later task. var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](ComputeAPIAuditLogTaskIDPrefix + "fieldset-reader") -// LogSerializerTaskID is the task id to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](ComputeAPIAuditLogTaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task id to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](ComputeAPIAuditLogTaskIDPrefix + "log-serializer") -// LogGrouperTaskID is the task id to group logs by target instance to process logs in HistoryModifier in parallel. +// LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](ComputeAPIAuditLogTaskIDPrefix + "grouper") -// HistoryModifierTaskID is the task id for associating events/revisions with a given logs. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](ComputeAPIAuditLogTaskIDPrefix + "history-modifier") +// LogToTimelineMapperTaskID is the task id for associating events/revisions with a given logs. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](ComputeAPIAuditLogTaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks.go b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks.go index a678c4fc3..149a24b44 100644 --- a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks.go @@ -36,7 +36,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogco &googlecloudcommon_contract.GCPOperationAuditLogFieldSetReader{}, }) -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudlogcomputeapiaudit_contract.LogSerializerTaskID, googlecloudlogcomputeapiaudit_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogcomputeapiaudit_contract.LogIngesterTaskID, googlecloudlogcomputeapiaudit_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogcomputeapiaudit_contract.LogGrouperTaskID, googlecloudlogcomputeapiaudit_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { @@ -48,7 +48,7 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogcomputea return getInstanceNameFromResourceName(audit.ResourceName) }) -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogcomputeapiaudit_contract.HistoryModifierTaskID, &gcpComputeAuditLogHistoryModifierSetting{}, +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogcomputeapiaudit_contract.LogToTimelineMapperTaskID, &gcpComputeAuditLogLogToTimelineMapperSetting{}, inspectioncore_contract.FeatureTaskLabel(`Compute API Logs`, `Gather Compute API audit logs to show the timings of the provisioning of resources(e.g creating/deleting GCE VM,mounting Persistent Disk...etc) on associated timelines.`, enum.LogTypeComputeApi, @@ -57,26 +57,26 @@ var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](go googlecloudinspectiontypegroup_contract.GKEBasedClusterInspectionTypes...), ) -type gcpComputeAuditLogHistoryModifierSetting struct { +type gcpComputeAuditLogLogToTimelineMapperSetting struct { } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (g *gcpComputeAuditLogHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (g *gcpComputeAuditLogLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (g *gcpComputeAuditLogHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (g *gcpComputeAuditLogLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogcomputeapiaudit_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (g *gcpComputeAuditLogHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogcomputeapiaudit_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (g *gcpComputeAuditLogLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogcomputeapiaudit_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (g *gcpComputeAuditLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (g *gcpComputeAuditLogLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { commonLogFieldSet, err := log.GetFieldSet(l, &log.CommonFieldSet{}) if err != nil { return struct{}{}, err @@ -121,7 +121,7 @@ func (g *gcpComputeAuditLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx co return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*gcpComputeAuditLogHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*gcpComputeAuditLogLogToTimelineMapperSetting)(nil) func getInstanceNameFromResourceName(resourceName string) string { resourceNameSplitted := strings.Split(resourceName, "/") diff --git a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go index b58465e58..a4de8e144 100644 --- a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go @@ -25,7 +25,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestHistoryModifierTask(t *testing.T) { +func TestLogToTimelineMapperTask(t *testing.T) { testCommonFieldSet := &log.CommonFieldSet{ Timestamp: time.Date(2025, time.January, 1, 1, 1, 1, 1, time.UTC), } @@ -143,10 +143,10 @@ func TestHistoryModifierTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.input) - historyModifierSetting := &gcpComputeAuditLogHistoryModifierSetting{} + mapperSettingSetting := &gcpComputeAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) - _, err := historyModifierSetting.ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { t.Errorf("got error %v, want nil", err) } diff --git a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/registration.go b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/registration.go index 6d38baf13..84ff20f01 100644 --- a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/registration.go +++ b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/registration.go @@ -25,22 +25,22 @@ flowchart TD ListLogEntriesTask FieldSetReadTask - LogSerializerTask + LogIngesterTask LogGrouperTask - HistoryModifierTask + LogToTimelineMapperTask ListLogEntriesTask --> FieldSetReadTask - ListLogEntriesTask -->LogSerializerTask + ListLogEntriesTask -->LogIngesterTask FieldSetReadTask --> LogGrouperTask - LogGrouperTask --> HistoryModifierTask - LogSerializerTask --> HistoryModifierTask + LogGrouperTask --> LogToTimelineMapperTask + LogIngesterTask --> LogToTimelineMapperTask */ func Register(registry coreinspection.InspectionTaskRegistry) error { return coretask.RegisterTasks(registry, ListLogEntriesTask, FieldSetReaderTask, LogGrouperTask, - LogSerializerTask, - HistoryModifierTask, + LogIngesterTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/googlecloudlogcsm/contract/taskid.go b/pkg/task/inspection/googlecloudlogcsm/contract/taskid.go index 9fed386be..cfc35bb65 100644 --- a/pkg/task/inspection/googlecloudlogcsm/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogcsm/contract/taskid.go @@ -32,11 +32,11 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDP // FieldSetReaderTaskID is the task id to read the CSM related fieldset for processing the log in the later task. var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "fieldset-reader") -// LogSerializerTaskID is the task id to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task id to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") // LogGrouperTaskID is the task ID to group CSM access logs by their reporter pod for parallel processing. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "grouper") -// HistoryModifierTaskID is the task ID for associating CSM access log events with resource timelines. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "history-modifier") +// LogToTimelineMapperTaskID is the task ID for associating CSM access log events with resource timelines. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudlogcsm/impl/parser_task.go b/pkg/task/inspection/googlecloudlogcsm/impl/parser_task.go index ff2be274a..e4d57ae85 100644 --- a/pkg/task/inspection/googlecloudlogcsm/impl/parser_task.go +++ b/pkg/task/inspection/googlecloudlogcsm/impl/parser_task.go @@ -35,8 +35,8 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogcs &googlecloudlogcsm_contract.IstioAccessLogFieldSetReader{}, }) -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask( - googlecloudlogcsm_contract.LogSerializerTaskID, +var LogIngesterTask = inspectiontaskbase.NewLogIngester( + googlecloudlogcsm_contract.LogIngesterTaskID, googlecloudlogcsm_contract.ListLogEntriesTaskID.Ref(), ) @@ -47,7 +47,7 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogcsm_cont }, ) -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogcsm_contract.HistoryModifierTaskID, &csmAccessLogHistoryModifierSetting{}, inspectioncore_contract.FeatureTaskLabel( +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogcsm_contract.LogToTimelineMapperTaskID, &csmAccessLogLogToTimelineMapperSetting{}, inspectioncore_contract.FeatureTaskLabel( "CSM Access Log", "Gather CSM access logs from Cloud Logging and associate them in client or server Pods on timelines", enum.LogTypeCSMAccessLog, @@ -56,25 +56,25 @@ var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](go googlecloudinspectiontypegroup_contract.GCPK8sClusterInspectionTypes..., )) -type csmAccessLogHistoryModifierSetting struct{} +type csmAccessLogLogToTimelineMapperSetting struct{} -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (c *csmAccessLogHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (c *csmAccessLogLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (c *csmAccessLogHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (c *csmAccessLogLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogcsm_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (c *csmAccessLogHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogcsm_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (c *csmAccessLogLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogcsm_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (c *csmAccessLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (c *csmAccessLogLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { gcpCommonAccessLog := log.MustGetFieldSet(l, &googlecloudcommon_contract.GCPAccessLogFieldSet{}) istioAccessLog := log.MustGetFieldSet(l, &googlecloudlogcsm_contract.IstioAccessLogFieldSet{}) @@ -104,4 +104,4 @@ func (c *csmAccessLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context. return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*csmAccessLogHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*csmAccessLogLogToTimelineMapperSetting)(nil) diff --git a/pkg/task/inspection/googlecloudlogcsm/impl/parser_task_test.go b/pkg/task/inspection/googlecloudlogcsm/impl/parser_task_test.go index 40bcd7f83..48e7a877e 100644 --- a/pkg/task/inspection/googlecloudlogcsm/impl/parser_task_test.go +++ b/pkg/task/inspection/googlecloudlogcsm/impl/parser_task_test.go @@ -24,7 +24,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestHistoryModifier(t *testing.T) { +func TestLogToTimelineMapper(t *testing.T) { testCases := []struct { desc string inputGCPAccessLog *googlecloudcommon_contract.GCPAccessLogFieldSet @@ -129,9 +129,9 @@ func TestHistoryModifier(t *testing.T) { l := log.NewLogWithFieldSetsForTest(tc.inputGCPAccessLog, tc.inputIstioAccessLog) cs := history.NewChangeSet(l) - _, err := (&csmAccessLogHistoryModifierSetting{}).ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := (&csmAccessLogLogToTimelineMapperSetting{}).ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { - t.Fatalf("ModifyChangeSetFromLog() failed: %v", err) + t.Fatalf("ProcessLogByGroup() failed: %v", err) } for _, asserter := range tc.asserters { asserter.Assert(t, cs) diff --git a/pkg/task/inspection/googlecloudlogcsm/impl/registration.go b/pkg/task/inspection/googlecloudlogcsm/impl/registration.go index 9ae4c7ef4..a500280a6 100644 --- a/pkg/task/inspection/googlecloudlogcsm/impl/registration.go +++ b/pkg/task/inspection/googlecloudlogcsm/impl/registration.go @@ -26,15 +26,15 @@ import ( InputCSMResponseFlagsTask(Input CSM Response Flags) ListLogEntriesTask(List Log Entries) FieldSetReaderTask(Field Set Reader) - LogSerializerTask(Log Serializer) + LogIngesterTask(Log Serializer) LogGrouperTask(Log Grouper) - HistoryModifierTask(History Modifier) + LogToTimelineMapperTask(TimelineMapper) ListLogEntriesTask --> FieldSetReaderTask - ListLogEntriesTask --> LogSerializerTask + ListLogEntriesTask --> LogIngesterTask FieldSetReaderTask --> LogGrouperTask - LogGrouperTask --> HistoryModifierTask - LogSerializerTask --> HistoryModifierTask + LogGrouperTask --> LogToTimelineMapperTask + LogIngesterTask --> LogToTimelineMapperTask InputCSMResponseFlagsTask --> ListLogEntriesTask end */ @@ -44,8 +44,8 @@ func Register(registry coreinspection.InspectionTaskRegistry) error { InputCSMResponseFlagsTask, ListLogEntriesTask, FieldSetReaderTask, - LogSerializerTask, + LogIngesterTask, LogGrouperTask, - HistoryModifierTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/googlecloudloggkeapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudloggkeapiaudit/contract/taskid.go index b74be6720..ea42948bb 100644 --- a/pkg/task/inspection/googlecloudloggkeapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudloggkeapiaudit/contract/taskid.go @@ -28,11 +28,11 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEAPIA // FieldSetReaderTaskID is the task id to read the common fieldset for processing the log in the later task. var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEAPIAuditLogTaskIDPrefix + "fieldset-reader") -// LogSerializerTaskID is the task id to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEAPIAuditLogTaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task id to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEAPIAuditLogTaskIDPrefix + "log-serializer") -// LogGrouperTaskID is the task id to group logs by target instance to process logs in HistoryModifier in parallel. +// LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](GKEAPIAuditLogTaskIDPrefix + "grouper") -// HistoryModifierTaskID is the task id for associating events/revisions with a given logs. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](GKEAPIAuditLogTaskIDPrefix + "history-modifier") +// LogToTimelineMapperTaskID is the task id for associating events/revisions with a given logs. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](GKEAPIAuditLogTaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks.go b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks.go index f978e800f..fa19f8349 100644 --- a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks.go @@ -39,8 +39,8 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudloggk &googlecloudloggkeapiaudit_contract.GKEAuditLogResourceFieldSetReader{}, }) -// LogSerializerTask is a task that serializes GKE audit logs for storage in the history builder. -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudloggkeapiaudit_contract.LogSerializerTaskID, googlecloudloggkeapiaudit_contract.ListLogEntriesTaskID.Ref()) +// LogIngesterTask is a task that serializes GKE audit logs for storage in the history builder. +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudloggkeapiaudit_contract.LogIngesterTaskID, googlecloudloggkeapiaudit_contract.ListLogEntriesTaskID.Ref()) // LogGrouperTask is a task that groups GKE audit logs by their resource path. // This grouping allows for parallel processing of logs related to the same resource. @@ -54,8 +54,8 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudloggkeapiau }, ) -// HistoryModifierTask is a task that adds revisions/events regarding logs. -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudloggkeapiaudit_contract.HistoryModifierTaskID, &gkeAuditLogHistoryModifierSetting{}, +// LogToTimelineMapperTask is a task that adds revisions/events regarding logs. +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudloggkeapiaudit_contract.LogToTimelineMapperTaskID, &gkeAuditLogLogToTimelineMapperSetting{}, inspectioncore_contract.FeatureTaskLabel(`GKE Audit logs`, `Gather GKE audit log to show creation/upgrade/deletion of logs cluster/nodepool`, enum.LogTypeGkeAudit, @@ -64,28 +64,28 @@ var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](go googlecloudinspectiontypegroup_contract.GKEBasedClusterInspectionTypes...), ) -// gkeAuditLogHistoryModifierSetting implements the HistoryModifer interface for GKE audit logs. -type gkeAuditLogHistoryModifierSetting struct { +// gkeAuditLogLogToTimelineMapperSetting implements the HistoryModifer interface for GKE audit logs. +type gkeAuditLogLogToTimelineMapperSetting struct { } -// Dependencies implements inspectiontaskbase.HistoryModifer. -// It returns a list of task references that this history modifier depends on. -func (g *gkeAuditLogHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +// It returns a list of task references that this timeline mapper depends on. +func (g *gkeAuditLogLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (g *gkeAuditLogHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (g *gkeAuditLogLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudloggkeapiaudit_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (g *gkeAuditLogHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudloggkeapiaudit_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (g *gkeAuditLogLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudloggkeapiaudit_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (g *gkeAuditLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (g *gkeAuditLogLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { commonFieldSet, err := log.GetFieldSet(l, &log.CommonFieldSet{}) if err != nil { return struct{}{}, err @@ -174,4 +174,4 @@ func (g *gkeAuditLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.C return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*gkeAuditLogHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*gkeAuditLogLogToTimelineMapperSetting)(nil) diff --git a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go index f01fb0d5a..0744f8bde 100644 --- a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go @@ -36,7 +36,7 @@ func testReaderFromYAML(t *testing.T, yaml string) *structured.NodeReader { return structured.NewNodeReader(node) } -func TestHistoryModifierTask(t *testing.T) { +func TestLogToTimelineMapperTask(t *testing.T) { testTime := time.Date(2025, time.January, 1, 1, 1, 1, 1, time.UTC) testCommonFieldSet := &log.CommonFieldSet{ Timestamp: testTime, @@ -266,10 +266,10 @@ func TestHistoryModifierTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.inputAudit, &tc.inputResource) - historyModifierSetting := &gkeAuditLogHistoryModifierSetting{} + mapperSettingSetting := &gkeAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) - _, err := historyModifierSetting.ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { t.Errorf("got error %v, want nil", err) } diff --git a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/registration.go b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/registration.go index 4c4598743..fcf2dc1b1 100644 --- a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/registration.go +++ b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/registration.go @@ -25,7 +25,7 @@ func Register(registry coreinspection.InspectionTaskRegistry) error { ListLogEntriesTask, FieldSetReaderTask, LogGrouperTask, - LogSerializerTask, - HistoryModifierTask, + LogIngesterTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/googlecloudloggkeautoscaler/contract/taskid.go b/pkg/task/inspection/googlecloudloggkeautoscaler/contract/taskid.go index 7f20bddaf..6a21e0a1c 100644 --- a/pkg/task/inspection/googlecloudloggkeautoscaler/contract/taskid.go +++ b/pkg/task/inspection/googlecloudloggkeautoscaler/contract/taskid.go @@ -27,13 +27,13 @@ const gkeAutoscalerTaskIDPrefix = "cloud.google.com/gke/log/autoscaler/" var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](gkeAutoscalerTaskIDPrefix + "query") // FieldSetReaderTaskID is the task id for the task that reads the common field set from GKE autoscaler logs. -var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](gkeAutoscalerTaskIDPrefix + "fieldset_reader") +var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](gkeAutoscalerTaskIDPrefix + "fieldset-reader") // LogGrouperTaskID is the task id for the task that groups GKE autoscaler logs. -var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](gkeAutoscalerTaskIDPrefix + "log_grouper") +var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](gkeAutoscalerTaskIDPrefix + "log-grouper") -// LogSerializerTaskID is the task id for the task that serializes GKE autoscaler logs. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](gkeAutoscalerTaskIDPrefix + "log_serializer") +// LogIngesterTaskID is the task id for the task that serializes GKE autoscaler logs. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](gkeAutoscalerTaskIDPrefix + "log-serializer") -// HistoryModifierTaskID is the task id for the task that modifies the history based on GKE autoscaler logs. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](gkeAutoscalerTaskIDPrefix + "history_modifier") +// LogToTimelineMapperTaskID is the task id for the task that modifies the history based on GKE autoscaler logs. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](gkeAutoscalerTaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser.go b/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser.go index e0e71dcf9..1dff1d690 100644 --- a/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser.go +++ b/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser.go @@ -38,7 +38,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudloggk &googlecloudloggkeautoscaler_contract.AutoscalerLogFieldSetReader{}, }) -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudloggkeautoscaler_contract.LogSerializerTaskID, googlecloudloggkeautoscaler_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudloggkeautoscaler_contract.LogIngesterTaskID, googlecloudloggkeautoscaler_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudloggkeautoscaler_contract.LogGrouperTaskID, googlecloudloggkeautoscaler_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { @@ -46,7 +46,7 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudloggkeautos }, ) -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudloggkeautoscaler_contract.HistoryModifierTaskID, &autoscalerHistoryModifierTaskSetting{}, +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudloggkeautoscaler_contract.LogToTimelineMapperTaskID, &autoscalerLogToTimelineMapperTaskSetting{}, inspectioncore_contract.FeatureTaskLabel(`GKE Autoscaler Logs`, `Gather logs related to cluster autoscaler behavior to show them on the timelines of resources related to the autoscaler decision.`, enum.LogTypeAutoscaler, @@ -55,27 +55,27 @@ var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](go googlecloudinspectiontypegroup_contract.GKEBasedClusterInspectionTypes...), ) -type autoscalerHistoryModifierTaskSetting struct{} +type autoscalerLogToTimelineMapperTaskSetting struct{} -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (a *autoscalerHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (a *autoscalerLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{ googlecloudk8scommon_contract.InputClusterNameTaskID.Ref(), } } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (a *autoscalerHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (a *autoscalerLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudloggkeautoscaler_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (a *autoscalerHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudloggkeautoscaler_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (a *autoscalerLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudloggkeautoscaler_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (a *autoscalerHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (a *autoscalerLogToTimelineMapperTaskSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { autoscalerFieldSet := log.MustGetFieldSet(l, &googlecloudloggkeautoscaler_contract.AutoscalerLogFieldSet{}) clusterName := coretask.GetTaskResult(ctx, googlecloudk8scommon_contract.InputClusterNameTaskID.Ref()) @@ -94,7 +94,7 @@ func (a *autoscalerHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx contex return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*autoscalerHistoryModifierTaskSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*autoscalerLogToTimelineMapperTaskSetting)(nil) func parseDecision(clusterName string, decision *googlecloudloggkeautoscaler_contract.DecisionLog, cs *history.ChangeSet) { // Parse scale up event diff --git a/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser_test.go b/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser_test.go index 8614440ee..6b5bbf8d5 100644 --- a/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser_test.go +++ b/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser_test.go @@ -27,7 +27,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestHistoryModifierTask(t *testing.T) { +func TestLogToTimelineMapperTask(t *testing.T) { testTime := time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC) testCases := []struct { desc string @@ -368,9 +368,9 @@ results: ) cs := history.NewChangeSet(l) ctx := tasktest.WithTaskResult(t.Context(), googlecloudk8scommon_contract.InputClusterNameTaskID.Ref(), "test-cluster") - _, err := (&autoscalerHistoryModifierTaskSetting{}).ModifyChangeSetFromLog(ctx, l, cs, nil, struct{}{}) + _, err := (&autoscalerLogToTimelineMapperTaskSetting{}).ProcessLogByGroup(ctx, l, cs, nil, struct{}{}) if err != nil { - t.Fatalf("ModifyChangeSetFromLog() error = %v", err) + t.Fatalf("ProcessLogByGroup() error = %v", err) } for _, asserter := range tc.asserter { asserter.Assert(t, cs) diff --git a/pkg/task/inspection/googlecloudloggkeautoscaler/impl/registration.go b/pkg/task/inspection/googlecloudloggkeautoscaler/impl/registration.go index 757eb7d56..5cf69dfa1 100644 --- a/pkg/task/inspection/googlecloudloggkeautoscaler/impl/registration.go +++ b/pkg/task/inspection/googlecloudloggkeautoscaler/impl/registration.go @@ -24,8 +24,8 @@ func Register(registry coreinspection.InspectionTaskRegistry) error { return coretask.RegisterTasks(registry, ListLogEntriesTask, FieldSetReaderTask, - LogSerializerTask, + LogIngesterTask, LogGrouperTask, - HistoryModifierTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/googlecloudlogk8saudit/impl/parser.go b/pkg/task/inspection/googlecloudlogk8saudit/impl/parser.go index 93d7cd768..474a0ec1c 100644 --- a/pkg/task/inspection/googlecloudlogk8saudit/impl/parser.go +++ b/pkg/task/inspection/googlecloudlogk8saudit/impl/parser.go @@ -41,15 +41,15 @@ var GCPK8sAuditLogCommonFieldSetReaderTask = inspectiontaskbase.NewFieldSetReadT var GCPK8sAuditLogParserTailTask = inspectiontaskbase.NewInspectionTask( googlecloudlogk8saudit_contract.GCPK8sAuditLogParserTailTaskID, []taskid.UntypedTaskReference{ - commonlogk8sauditv2_contract.LogSummaryHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.NonSuccessLogHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.NamespaceRequestHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.ResourceRevisionHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.ConditionHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.ResourceOwnerReferenceModifierTaskID.Ref(), - commonlogk8sauditv2_contract.PodPhaseHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.EndpointResourceHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.ContainerHistoryModifierTaskID.Ref(), + commonlogk8sauditv2_contract.LogSummaryLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.NonSuccessLogLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.NamespaceRequestLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.ResourceRevisionLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.ConditionLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.ResourceOwnerReferenceTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.PodPhaseLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.EndpointResourceLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.ContainerLogToTimelineMapperTaskID.Ref(), commonlogk8sauditv2_contract.NodeNameDiscoveryTaskID.Ref(), commonlogk8sauditv2_contract.ResourceUIDDiscoveryTaskID.Ref(), diff --git a/pkg/task/inspection/googlecloudlogk8scontainer/contract/taskid.go b/pkg/task/inspection/googlecloudlogk8scontainer/contract/taskid.go index 444c575ab..a8e6cdc7b 100644 --- a/pkg/task/inspection/googlecloudlogk8scontainer/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogk8scontainer/contract/taskid.go @@ -35,11 +35,11 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDP // FieldSetReaderTaskID is the task id to read the common fieldset for processing the log in the later task. var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "fieldset-reader") -// LogSerializerTaskID is the task id to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task id to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") -// LogGrouperTaskID is the task id to group logs by target instance to process logs in HistoryModifier in parallel. +// LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "grouper") -// HistoryModifierTaskID is the task id for associating events/revisions with a given logs. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "history-modifier") +// LogToTimelineMapperTaskID is the task id for associating events/revisions with a given logs. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task.go b/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task.go index 01f108524..d95c1e6d8 100644 --- a/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task.go +++ b/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task.go @@ -31,7 +31,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogk8 &googlecloudlogk8scontainer_contract.K8sContainerLogFieldSetReader{}, }) -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudlogk8scontainer_contract.LogSerializerTaskID, googlecloudlogk8scontainer_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogk8scontainer_contract.LogIngesterTaskID, googlecloudlogk8scontainer_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogk8scontainer_contract.LogGrouperTaskID, googlecloudlogk8scontainer_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { @@ -43,7 +43,7 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogk8sconta return containerFields.ResourcePath().Path }) -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogk8scontainer_contract.HistoryModifierTaskID, &containerLogHistoryModifierSetting{}, +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogk8scontainer_contract.LogToTimelineMapperTaskID, &containerLogLogToTimelineMapperSetting{}, inspectioncore_contract.FeatureTaskLabel(`Kubernetes container logs`, `Gather stdout/stderr logs of containers on the cluster to visualize them on the timeline under an associated Pod. Log volume can be huge when the cluster has many Pods.`, enum.LogTypeContainer, @@ -52,26 +52,26 @@ var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](go googlecloudinspectiontypegroup_contract.GCPK8sClusterInspectionTypes...), ) -type containerLogHistoryModifierSetting struct { +type containerLogLogToTimelineMapperSetting struct { } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (c *containerLogHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (c *containerLogLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (c *containerLogHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (c *containerLogLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogk8scontainer_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (c *containerLogHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogk8scontainer_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (c *containerLogLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogk8scontainer_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (c *containerLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (c *containerLogLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { containerFields, err := log.GetFieldSet(l, &googlecloudlogk8scontainer_contract.K8sContainerLogFieldSet{}) if err != nil { return struct{}{}, nil @@ -82,4 +82,4 @@ func (c *containerLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context. return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*containerLogHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*containerLogLogToTimelineMapperSetting)(nil) diff --git a/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task_test.go b/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task_test.go index 65edfbf31..b34253aa6 100644 --- a/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task_test.go +++ b/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task_test.go @@ -23,7 +23,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestHistoryModifierTask(t *testing.T) { +func TestLogToTimelineMapperTask(t *testing.T) { testCases := []struct { desc string input googlecloudlogk8scontainer_contract.K8sContainerLogFieldSet @@ -74,12 +74,12 @@ func TestHistoryModifierTask(t *testing.T) { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(&tc.input) cs := history.NewChangeSet(l) - modifier := containerLogHistoryModifierSetting{} + modifier := containerLogLogToTimelineMapperSetting{} - _, err := modifier.ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := modifier.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { - t.Errorf("ModifyChangeSetFromLog() returned an unexpected error, err=%v", err) + t.Errorf("ProcessLogByGroup() returned an unexpected error, err=%v", err) } for _, asserter := range tc.asserter { diff --git a/pkg/task/inspection/googlecloudlogk8scontainer/impl/registration.go b/pkg/task/inspection/googlecloudlogk8scontainer/impl/registration.go index afd005fca..cf606b191 100644 --- a/pkg/task/inspection/googlecloudlogk8scontainer/impl/registration.go +++ b/pkg/task/inspection/googlecloudlogk8scontainer/impl/registration.go @@ -27,7 +27,7 @@ func Register(registry coreinspection.InspectionTaskRegistry) error { ListLogEntriesTask, FieldSetReaderTask, LogGrouperTask, - LogSerializerTask, - HistoryModifierTask, + LogIngesterTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/contract/taskid.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/contract/taskid.go index 39edd1079..66e27dbac 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/contract/taskid.go @@ -34,8 +34,8 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sCont // CommonFieldSetReaderTaskID is the task id to read the common fieldset of controlplane logs for processing the log in the later task. var CommonFieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "fieldset-reader-common") -// LogSerializerTaskID is the task ID to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task ID to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "log-serializer") // SchedulerLogFilterTaskID is the task ID for filtering scheduler logs. var SchedulerLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "scheduler-log-filter") @@ -46,8 +46,8 @@ var SchedulerLogFieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log. // SchedulerLogGrouperTaskID is the task ID for grouping scheduler logs. var SchedulerLogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](K8sControlPlaneLogTaskIDPrefix + "grouper-scheduler") -// SchedulerHistoryModifierTaskID is the task ID for adding events on history based on scheduler logs. -var SchedulerHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](K8sControlPlaneLogTaskIDPrefix + "history-modifier-scheduler") +// SchedulerLogToTimelineMapperTaskID is the task ID for adding events on history based on scheduler logs. +var SchedulerLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](K8sControlPlaneLogTaskIDPrefix + "timeline-mapper-scheduler") // ControllerManagerLogFilterTaskID is the task ID for filtering controller manager logs. var ControllerManagerLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "controller-manager-log-filter") @@ -58,8 +58,8 @@ var ControllerManagerLogFieldSetReaderTaskID = taskid.NewDefaultImplementationID // ControllerManagerLogGrouperTaskID is the task ID for grouping controller manager logs. var ControllerManagerLogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](K8sControlPlaneLogTaskIDPrefix + "grouper-controller-manager") -// ControllerManagerHistoryModifierTaskID is the task ID for adding events on history based on controller manager logs. -var ControllerManagerHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](K8sControlPlaneLogTaskIDPrefix + "history-modifier-controller-manager") +// ControllerManagerLogToTimelineMapperTaskID is the task ID for adding events on history based on controller manager logs. +var ControllerManagerLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](K8sControlPlaneLogTaskIDPrefix + "timeline-mapper-controller-manager") // OtherLogFilterTaskID is the task ID for filtering logs from other control plane components. var OtherLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "other-log-filter") @@ -70,8 +70,8 @@ var OtherLogFieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log] // OtherLogGrouperTaskID is the task ID for grouping logs from other control plane components. var OtherLogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](K8sControlPlaneLogTaskIDPrefix + "grouper-other") -// OtherHistoryModifierTaskID is the task ID for adding events on history based on the other control plane components. -var OtherHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](K8sControlPlaneLogTaskIDPrefix + "history-modifier-other") +// OtherLogToTimelineMapperTaskID is the task ID for adding events on history based on the other control plane components. +var OtherLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](K8sControlPlaneLogTaskIDPrefix + "timeline-mapper-other") // TailTaskID is the task ID for the final task in the control plane log processing pipeline. var TailTaskID = taskid.NewDefaultImplementationID[struct{}](K8sControlPlaneLogTaskIDPrefix + "tail") diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/common_task.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/common_task.go index 9b3974b06..6b9491aaf 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/common_task.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/common_task.go @@ -27,9 +27,9 @@ import ( var TailTask = inspectiontaskbase.NewInspectionTask(googlecloudlogk8scontrolplane_contract.TailTaskID, []taskid.UntypedTaskReference{ - googlecloudlogk8scontrolplane_contract.SchedulerHistoryModifierTaskID.Ref(), - googlecloudlogk8scontrolplane_contract.ControllerManagerHistoryModifierTaskID.Ref(), - googlecloudlogk8scontrolplane_contract.OtherHistoryModifierTaskID.Ref(), + googlecloudlogk8scontrolplane_contract.SchedulerLogToTimelineMapperTaskID.Ref(), + googlecloudlogk8scontrolplane_contract.ControllerManagerLogToTimelineMapperTaskID.Ref(), + googlecloudlogk8scontrolplane_contract.OtherLogToTimelineMapperTaskID.Ref(), }, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType) (struct{}, error) { return struct{}{}, nil @@ -44,6 +44,6 @@ var TailTask = inspectiontaskbase.NewInspectionTask(googlecloudlogk8scontrolplan ), ) -// LogSerializerTask serializes logs to history for history modifiers to associate event or revisions in later tasks. -// No control plane logs are discarded, thus this LogSerializerTask simply receives logs from the ListLogEntriesTask. -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudlogk8scontrolplane_contract.LogSerializerTaskID, googlecloudlogk8scontrolplane_contract.ListLogEntriesTaskID.Ref()) +// LogIngesterTask serializes logs to history for timeline mappers to associate event or revisions in later tasks. +// No control plane logs are discarded, thus this LogIngesterTask simply receives logs from the ListLogEntriesTask. +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogk8scontrolplane_contract.LogIngesterTaskID, googlecloudlogk8scontrolplane_contract.ListLogEntriesTaskID.Ref()) diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/controllermanager_task.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/controllermanager_task.go index 8c4b5d8e7..413e980a2 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/controllermanager_task.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/controllermanager_task.go @@ -91,31 +91,31 @@ var ControllerManagerGrouperTask = inspectiontaskbase.NewLogGrouperTask( }, ) -var ControllerManagerHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogk8scontrolplane_contract.ControllerManagerHistoryModifierTaskID, &controllerManagerHistoryModifierTaskSetting{}) +var ControllerManagerLogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogk8scontrolplane_contract.ControllerManagerLogToTimelineMapperTaskID, &controllerManagerLogToTimelineMapperTaskSetting{}) -type controllerManagerHistoryModifierTaskSetting struct { +type controllerManagerLogToTimelineMapperTaskSetting struct { uidPrefixTokenCandidates []rune } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (o *controllerManagerHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (o *controllerManagerLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{ commonlogk8sauditv2_contract.ResourceUIDPatternFinderTaskID.Ref(), } } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (o *controllerManagerHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (o *controllerManagerLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogk8scontrolplane_contract.ControllerManagerLogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (o *controllerManagerHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogk8scontrolplane_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (o *controllerManagerLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogk8scontrolplane_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (o *controllerManagerHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (o *controllerManagerLogToTimelineMapperTaskSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { finder := coretask.GetTaskResult(ctx, commonlogk8sauditv2_contract.ResourceUIDPatternFinderTaskID.Ref()) componentFieldSet, err := log.GetFieldSet(l, &googlecloudlogk8scontrolplane_contract.K8sControlplaneComponentFieldSet{}) if err != nil { diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/controllermanager_task_test.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/controllermanager_task_test.go index 823beca02..4fbb44d9c 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/controllermanager_task_test.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/controllermanager_task_test.go @@ -28,7 +28,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestControllerManagerHistoryModifierTask(t *testing.T) { +func TestControllerManagerLogToTimelineMapperTask(t *testing.T) { testCases := []struct { desc string inputComponentField googlecloudlogk8scontrolplane_contract.K8sControlplaneComponentFieldSet @@ -96,14 +96,14 @@ func TestControllerManagerHistoryModifierTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(&tc.inputComponentField, &tc.inputControllerManagerFieldSet, &tc.inputMessageField) - modifier := controllerManagerHistoryModifierTaskSetting{} + modifier := controllerManagerLogToTimelineMapperTaskSetting{} cs := history.NewChangeSet(l) ctx := inspectiontest.WithDefaultTestInspectionTaskContext(t.Context()) finder := patternfinder.NewTriePatternFinder[*commonlogk8sauditv2_contract.ResourceIdentity]() ctx = tasktest.WithTaskResult(ctx, commonlogk8sauditv2_contract.ResourceUIDPatternFinderTaskID.Ref(), finder) - _, err := modifier.ModifyChangeSetFromLog(ctx, l, cs, nil, struct{}{}) + _, err := modifier.ProcessLogByGroup(ctx, l, cs, nil, struct{}{}) if err != nil { - t.Errorf("ModifyChangeSetFromLog() returned an unexpected error, err=%v", err) + t.Errorf("ProcessLogByGroup() returned an unexpected error, err=%v", err) } for _, asserter := range tc.asserters { asserter.Assert(t, cs) diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/other_task.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/other_task.go index f42d8c07d..8ea3fc822 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/other_task.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/other_task.go @@ -55,28 +55,28 @@ var OtherGrouperTask = inspectiontaskbase.NewLogGrouperTask( }, ) -var OtherHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogk8scontrolplane_contract.OtherHistoryModifierTaskID, &otherHistoryModifierTaskSetting{}) +var OtherLogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogk8scontrolplane_contract.OtherLogToTimelineMapperTaskID, &otherLogToTimelineMapperTaskSetting{}) -type otherHistoryModifierTaskSetting struct { +type otherLogToTimelineMapperTaskSetting struct { } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (o *otherHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (o *otherLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (o *otherHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (o *otherLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogk8scontrolplane_contract.OtherLogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (o *otherHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogk8scontrolplane_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (o *otherLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogk8scontrolplane_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (o *otherHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (o *otherLogToTimelineMapperTaskSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { componentFieldSet, err := log.GetFieldSet(l, &googlecloudlogk8scontrolplane_contract.K8sControlplaneComponentFieldSet{}) if err != nil { return struct{}{}, err @@ -91,4 +91,4 @@ func (o *otherHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx context.Con return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*otherHistoryModifierTaskSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*otherLogToTimelineMapperTaskSetting)(nil) diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/other_task_test.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/other_task_test.go index 5257981e7..eb6293388 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/other_task_test.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/other_task_test.go @@ -23,7 +23,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestOtherHistoryModifierTask(t *testing.T) { +func TestOtherLogToTimelineMapperTask(t *testing.T) { testCases := []struct { desc string inputComponentField googlecloudlogk8scontrolplane_contract.K8sControlplaneComponentFieldSet @@ -49,11 +49,11 @@ func TestOtherHistoryModifierTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(&tc.inputComponentField, &tc.inputMessageField) - modifier := otherHistoryModifierTaskSetting{} + modifier := otherLogToTimelineMapperTaskSetting{} cs := history.NewChangeSet(l) - _, err := modifier.ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := modifier.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { - t.Errorf("ModifyChangeSetFromLog() returned an unexpected error, err=%v", err) + t.Errorf("ProcessLogByGroup() returned an unexpected error, err=%v", err) } for _, asserter := range tc.asserters { asserter.Assert(t, cs) diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/registration.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/registration.go index 55cf5d274..7193ac9b9 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/registration.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/registration.go @@ -23,32 +23,32 @@ import ( /* flowchart TD ListLogEntriesTask --> CommonFieldSetReadTask - ListLogEntriesTask --> LogSerializerTask - CommonFieldSetReadTask --> SchedulerLogFilterTask -->SchedulerFieldSetReaderTask --> SchedulerGroupterTask --> SchedulerHistoryModifierTask --> TailTask - CommonFieldSetReadTask --> ControllerManagerLogFilterTask --> ControllerManagerFieldSetReaderTask --> ControllerManagerGrouperTask --> ControllerManagerHistoryModifierTask --> TailTask - CommonFieldSetReadTask --> OtherLogFilterTask --> OtherFieldSetReaderTask --> OtherGrouperTask --> OtherHistoryModifierTask --> TailTask - LogSerializerTask --> SchedulerHistoryModifierTask - LogSerializerTask --> ControllerManagerHistoryModifierTask - LogSerializerTask --> OtherHistoryModifierTask + ListLogEntriesTask --> LogIngesterTask + CommonFieldSetReadTask --> SchedulerLogFilterTask -->SchedulerFieldSetReaderTask --> SchedulerGroupterTask --> SchedulerLogToTimelineMapperTask --> TailTask + CommonFieldSetReadTask --> ControllerManagerLogFilterTask --> ControllerManagerFieldSetReaderTask --> ControllerManagerGrouperTask --> ControllerManagerLogToTimelineMapperTask --> TailTask + CommonFieldSetReadTask --> OtherLogFilterTask --> OtherFieldSetReaderTask --> OtherGrouperTask --> OtherLogToTimelineMapperTask --> TailTask + LogIngesterTask --> SchedulerLogToTimelineMapperTask + LogIngesterTask --> ControllerManagerLogToTimelineMapperTask + LogIngesterTask --> OtherLogToTimelineMapperTask */ func Register(registry coreinspection.InspectionTaskRegistry) error { return coretask.RegisterTasks(registry, InputControlPlaneComponentNameFilterTask, ListLogEntriesTask, - LogSerializerTask, + LogIngesterTask, CommonFieldSetReaderTask, SchedulerLogFilterTask, SchedulerLogFieldSetReaderTask, SchedulerGrouperTask, - SchedulerHistoryModifierTask, + SchedulerLogToTimelineMapperTask, ControllerManagerFilterTask, ControllerManagerLogFieldSetReaderTask, ControllerManagerGrouperTask, - ControllerManagerHistoryModifierTask, + ControllerManagerLogToTimelineMapperTask, OtherLogFilterTask, OtherLogFieldSetReaderTask, OtherGrouperTask, - OtherHistoryModifierTask, + OtherLogToTimelineMapperTask, TailTask, ) } diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/scheduler_task.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/scheduler_task.go index f2514cb28..8dc7ca8f0 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/scheduler_task.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/scheduler_task.go @@ -52,28 +52,28 @@ var SchedulerGrouperTask = inspectiontaskbase.NewLogGrouperTask( }, ) -var SchedulerHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogk8scontrolplane_contract.SchedulerHistoryModifierTaskID, &schedulerHistoryModifierTaskSetting{}) +var SchedulerLogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogk8scontrolplane_contract.SchedulerLogToTimelineMapperTaskID, &schedulerLogToTimelineMapperTaskSetting{}) -type schedulerHistoryModifierTaskSetting struct { +type schedulerLogToTimelineMapperTaskSetting struct { } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (o *schedulerHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (o *schedulerLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (o *schedulerHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (o *schedulerLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogk8scontrolplane_contract.SchedulerLogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (o *schedulerHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogk8scontrolplane_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (o *schedulerLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogk8scontrolplane_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (o *schedulerHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (o *schedulerLogToTimelineMapperTaskSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { componentFieldSet, err := log.GetFieldSet(l, &googlecloudlogk8scontrolplane_contract.K8sControlplaneComponentFieldSet{}) if err != nil { return struct{}{}, err @@ -95,4 +95,4 @@ func (o *schedulerHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx context return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*schedulerHistoryModifierTaskSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*schedulerLogToTimelineMapperTaskSetting)(nil) diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/scheduler_task_test.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/scheduler_task_test.go index 3d92d9335..dc97f0432 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/scheduler_task_test.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/scheduler_task_test.go @@ -23,7 +23,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestSchedulerHistoryModifierTask(t *testing.T) { +func TestSchedulerLogToTimelineMapperTask(t *testing.T) { testCases := []struct { desc string inputComponentField googlecloudlogk8scontrolplane_contract.K8sControlplaneComponentFieldSet @@ -73,11 +73,11 @@ func TestSchedulerHistoryModifierTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(&tc.inputComponentField, &tc.inputSchedulerFieldSet, &tc.inputMessageField) - modifier := schedulerHistoryModifierTaskSetting{} + modifier := schedulerLogToTimelineMapperTaskSetting{} cs := history.NewChangeSet(l) - _, err := modifier.ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := modifier.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { - t.Errorf("ModifyChangeSetFromLog() returned an unexpected error, err=%v", err) + t.Errorf("ProcessLogByGroup() returned an unexpected error, err=%v", err) } for _, asserter := range tc.asserters { asserter.Assert(t, cs) diff --git a/pkg/task/inspection/googlecloudlogk8sevent/contract/taskid.go b/pkg/task/inspection/googlecloudlogk8sevent/contract/taskid.go index dc4216630..53f759b95 100644 --- a/pkg/task/inspection/googlecloudlogk8sevent/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogk8sevent/contract/taskid.go @@ -29,11 +29,11 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEK8sE // FieldSetReaderTaskID is the task id to read the common fieldset for processing the log in the later task. var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEK8sEventLogTaskIDPrefix + "fieldset-reader") -// LogSerializerTaskID is the task id to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEK8sEventLogTaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task id to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEK8sEventLogTaskIDPrefix + "log-serializer") -// LogGrouperTaskID is the task id to group logs by target instance to process logs in HistoryModifier in parallel. +// LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](GKEK8sEventLogTaskIDPrefix + "grouper") -// HistoryModifierTaskID is the task id for associating events/revisions with a given logs. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](GKEK8sEventLogTaskIDPrefix + "history-modifier") +// LogToTimelineMapperTaskID is the task id for associating events/revisions with a given logs. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](GKEK8sEventLogTaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task.go b/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task.go index 0853d8bc5..007b0ea55 100644 --- a/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task.go +++ b/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task.go @@ -32,7 +32,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogk8 &googlecloudlogk8sevent_contract.GCPKubernetesEventFieldSetReader{}, }) -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudlogk8sevent_contract.LogSerializerTaskID, googlecloudlogk8sevent_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogk8sevent_contract.LogIngesterTaskID, googlecloudlogk8sevent_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogk8sevent_contract.LogGrouperTaskID, googlecloudlogk8sevent_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { @@ -44,7 +44,7 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogk8sevent }, ) -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogk8sevent_contract.HistoryModifierTaskID, &KubernetesEventHistoryModifierSetting{}, inspectioncore_contract.FeatureTaskLabel( +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogk8sevent_contract.LogToTimelineMapperTaskID, &KubernetesEventLogToTimelineMapperSetting{}, inspectioncore_contract.FeatureTaskLabel( "Kubernetes Event Logs", "Gather kubernetes event logs and visualize these on the associated resource timeline.", enum.LogTypeEvent, @@ -53,26 +53,26 @@ var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](go googlecloudinspectiontypegroup_contract.GCPK8sClusterInspectionTypes..., )) -type KubernetesEventHistoryModifierSetting struct { +type KubernetesEventLogToTimelineMapperSetting struct { } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (k *KubernetesEventHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (k *KubernetesEventLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (k *KubernetesEventHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (k *KubernetesEventLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogk8sevent_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (k *KubernetesEventHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogk8sevent_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (k *KubernetesEventLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogk8sevent_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (k *KubernetesEventHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (k *KubernetesEventLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { event, err := log.GetFieldSet(l, &googlecloudlogk8sevent_contract.KubernetesEventFieldSet{}) if err != nil { return struct{}{}, fmt.Errorf("failed to get kubernetes event fieldset: %w", err) @@ -83,4 +83,4 @@ func (k *KubernetesEventHistoryModifierSetting) ModifyChangeSetFromLog(ctx conte return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*KubernetesEventHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*KubernetesEventLogToTimelineMapperSetting)(nil) diff --git a/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task_test.go b/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task_test.go index 4bd9576e3..765eedbcf 100644 --- a/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task_test.go +++ b/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task_test.go @@ -23,7 +23,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestHistoryModifierTask(t *testing.T) { +func TestLogToTimelineMapperTask(t *testing.T) { testCases := []struct { desc string input googlecloudlogk8sevent_contract.KubernetesEventFieldSet @@ -51,11 +51,11 @@ func TestHistoryModifierTask(t *testing.T) { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(&tc.input) cs := history.NewChangeSet(l) - modifier := KubernetesEventHistoryModifierSetting{} + modifier := KubernetesEventLogToTimelineMapperSetting{} - _, err := modifier.ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := modifier.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { - t.Errorf("ModifyChangeSetFromLog returned an unexpected error: %v", err) + t.Errorf("ProcessLogByGroup returned an unexpected error: %v", err) } for _, asserter := range tc.asserters { diff --git a/pkg/task/inspection/googlecloudlogk8sevent/impl/registration.go b/pkg/task/inspection/googlecloudlogk8sevent/impl/registration.go index 71543c4bb..e160f91ee 100644 --- a/pkg/task/inspection/googlecloudlogk8sevent/impl/registration.go +++ b/pkg/task/inspection/googlecloudlogk8sevent/impl/registration.go @@ -25,7 +25,7 @@ func Register(registry coreinspection.InspectionTaskRegistry) error { ListLogEntriesTask, FieldSetReaderTask, LogGrouperTask, - LogSerializerTask, - HistoryModifierTask, + LogIngesterTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/googlecloudlogk8snode/contract/taskid.go b/pkg/task/inspection/googlecloudlogk8snode/contract/taskid.go index 265bd93c0..bf1b974fa 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogk8snode/contract/taskid.go @@ -31,8 +31,8 @@ const ( // ListLogEntriesTaskID is the task id for the task that queries k8s node logs from Cloud Logging. var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "query") -// LogSerializerTaskID is the task ID to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task ID to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") // CommonFieldsetReaderTaskID is the ID for a task to read the fieldset used by all parsers in node log parsers later. var CommonFieldsetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "common-fieldset-reader") @@ -46,8 +46,8 @@ var ContainerdLogGroupTaskID = taskid.NewDefaultImplementationID[inspectiontaskb // PodSandboxIDDiscoveryTaskID is the ID for a task to extract pod sandbox IDs for the other parsers to corelate a log to Pods. var PodSandboxIDDiscoveryTaskID = taskid.NewDefaultImplementationID[patternfinder.PatternFinder[*PodSandboxIDInfo]](TaskIDPrefix + "containerd-id-discovery") -// ContainerdLogHistoryModifierTaskID is the ID for a task to add events or revisions based on containerd logs. -var ContainerdLogHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "containerd-log-history-modifier") +// ContainerdLogLogToTimelineMapperTaskID is the ID for a task to add events or revisions based on containerd logs. +var ContainerdLogLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "containerd-log-timeline-mapper") // KubeletLogFilterTaskID is the ID for a task to filter only the logs for kubelet. var KubeletLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "kubelet-log-filter") @@ -55,8 +55,8 @@ var KubeletLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskI // KubeletLogGroupTaskID is the ID for a task to group kubelet related logs based on instance names. var KubeletLogGroupTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "kubelet-log-group") -// KubeletLogHistoryModifierTaskID is the ID for a task to add events or revisions based on kubelet logs. -var KubeletLogHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "kubelet-log-history-modifier") +// KubeletLogLogToTimelineMapperTaskID is the ID for a task to add events or revisions based on kubelet logs. +var KubeletLogLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "kubelet-log-timeline-mapper") // OtherLogFilterTaskID is the task ID for filtering other logs. var OtherLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "other-log-filter") @@ -64,8 +64,8 @@ var OtherLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDP // OtherLogGroupTaskID is the ID for a task to group other related logs based on instance names and component name. var OtherLogGroupTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "other-log-group") -// OtherLogHistoryModifierTaskID is the task ID for a task to add events or revisions based on other logs. -var OtherLogHistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "other-log-history-modifier") +// OtherLogLogToTimelineMapperTaskID is the task ID for a task to add events or revisions based on other logs. +var OtherLogLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "other-log-timeline-mapper") // TailTaskID is a nop task just to require all child parsers. var TailTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "tail") diff --git a/pkg/task/inspection/googlecloudlogk8snode/impl/common_task.go b/pkg/task/inspection/googlecloudlogk8snode/impl/common_task.go index 3a0254a6c..3d5a83633 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/impl/common_task.go +++ b/pkg/task/inspection/googlecloudlogk8snode/impl/common_task.go @@ -29,9 +29,9 @@ import ( inspectioncore_contract "github.com/GoogleCloudPlatform/khi/pkg/task/inspection/inspectioncore/contract" ) -// LogSerializerTask serializes logs to history for history modifiers to associate event or revisions in later tasks. -// No node logs are discarded, thus this LogSerializerTask simply receives logs from the ListLogEntriesTask. -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudlogk8snode_contract.LogSerializerTaskID, googlecloudlogk8snode_contract.ListLogEntriesTaskID.Ref()) +// LogIngesterTask serializes logs to history for timeline mappers to associate event or revisions in later tasks. +// No node logs are discarded, thus this LogIngesterTask simply receives logs from the ListLogEntriesTask. +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogk8snode_contract.LogIngesterTaskID, googlecloudlogk8snode_contract.ListLogEntriesTaskID.Ref()) var CommonFieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogk8snode_contract.CommonFieldsetReaderTaskID, googlecloudlogk8snode_contract.ListLogEntriesTaskID.Ref(), []log.FieldSetReader{ &googlecloudlogk8snode_contract.K8sNodeLogCommonFieldSetReader{ @@ -45,9 +45,9 @@ var CommonFieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googleclou var TailTask = inspectiontaskbase.NewInspectionTask(googlecloudlogk8snode_contract.TailTaskID, []taskid.UntypedTaskReference{ - googlecloudlogk8snode_contract.ContainerdLogHistoryModifierTaskID.Ref(), - googlecloudlogk8snode_contract.KubeletLogHistoryModifierTaskID.Ref(), - googlecloudlogk8snode_contract.OtherLogHistoryModifierTaskID.Ref(), + googlecloudlogk8snode_contract.ContainerdLogLogToTimelineMapperTaskID.Ref(), + googlecloudlogk8snode_contract.KubeletLogLogToTimelineMapperTaskID.Ref(), + googlecloudlogk8snode_contract.OtherLogLogToTimelineMapperTaskID.Ref(), googlecloudlogk8snode_contract.ContainerIDDiscoveryTaskID.Ref(), }, diff --git a/pkg/task/inspection/googlecloudlogk8snode/impl/containerd_task.go b/pkg/task/inspection/googlecloudlogk8snode/impl/containerd_task.go index fe2b7f06a..29a8e996e 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/impl/containerd_task.go +++ b/pkg/task/inspection/googlecloudlogk8snode/impl/containerd_task.go @@ -248,30 +248,30 @@ func findContainerIDInfo(jsonPayloadMessage *logutil.ParseStructuredLogResult) ( return nil, fmt.Errorf("container index information not found:%w", khierrors.ErrNotFound) } -var ContainerdNodeLogHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogk8snode_contract.ContainerdLogHistoryModifierTaskID, &containerdNodeLogHistoryModifierSetting{}) +var ContainerdNodeLogLogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogk8snode_contract.ContainerdLogLogToTimelineMapperTaskID, &containerdNodeLogLogToTimelineMapperSetting{}) -type containerdNodeLogHistoryModifierSetting struct{} +type containerdNodeLogLogToTimelineMapperSetting struct{} -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (c *containerdNodeLogHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (c *containerdNodeLogLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{ googlecloudlogk8snode_contract.PodSandboxIDDiscoveryTaskID.Ref(), commonlogk8sauditv2_contract.ContainerIDPatternFinderTaskID.Ref(), } } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (c *containerdNodeLogHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (c *containerdNodeLogLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogk8snode_contract.ContainerdLogGroupTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (c *containerdNodeLogHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogk8snode_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (c *containerdNodeLogLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogk8snode_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (c *containerdNodeLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (c *containerdNodeLogLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { podSandboxIDFinder := coretask.GetTaskResult(ctx, googlecloudlogk8snode_contract.PodSandboxIDDiscoveryTaskID.Ref()) containerIDPatternFinder := coretask.GetTaskResult(ctx, commonlogk8sauditv2_contract.ContainerIDPatternFinderTaskID.Ref()) nodeLogFieldSet := log.MustGetFieldSet(l, &googlecloudlogk8snode_contract.K8sNodeLogCommonFieldSet{}) @@ -324,4 +324,4 @@ func (c *containerdNodeLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx con return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*containerdNodeLogHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*containerdNodeLogLogToTimelineMapperSetting)(nil) diff --git a/pkg/task/inspection/googlecloudlogk8snode/impl/containerd_task_test.go b/pkg/task/inspection/googlecloudlogk8snode/impl/containerd_task_test.go index 6ee0b8249..8688d0575 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/impl/containerd_task_test.go +++ b/pkg/task/inspection/googlecloudlogk8snode/impl/containerd_task_test.go @@ -291,7 +291,7 @@ func TestContainerdIDDiscoveryTask(t *testing.T) { } -func TestContainerdHistoryModifierTask(t *testing.T) { +func TestContainerdLogToTimelineMapperTask(t *testing.T) { testTime := time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC) testCases := []struct { desc string @@ -441,10 +441,10 @@ func TestContainerdHistoryModifierTask(t *testing.T) { tc.inputNodeLogFieldSet, ) cs := history.NewChangeSet(l) - modifier := &containerdNodeLogHistoryModifierSetting{} - _, err := modifier.ModifyChangeSetFromLog(ctx, l, cs, nil, struct{}{}) + modifier := &containerdNodeLogLogToTimelineMapperSetting{} + _, err := modifier.ProcessLogByGroup(ctx, l, cs, nil, struct{}{}) if err != nil { - t.Fatalf("ModifyChangeSetFromLog() error = %v", err) + t.Fatalf("ProcessLogByGroup() error = %v", err) } for _, asserter := range tc.asserter { asserter.Assert(t, cs) diff --git a/pkg/task/inspection/googlecloudlogk8snode/impl/kubelet_task.go b/pkg/task/inspection/googlecloudlogk8snode/impl/kubelet_task.go index ff0e5e350..656548bfe 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/impl/kubelet_task.go +++ b/pkg/task/inspection/googlecloudlogk8snode/impl/kubelet_task.go @@ -35,12 +35,12 @@ var KubeletLogFilterTask = newParserTypeFilterTask(googlecloudlogk8snode_contrac var KubeletLogGroupTask = newNodeAndComponentNameGrouperTask(googlecloudlogk8snode_contract.KubeletLogGroupTaskID, googlecloudlogk8snode_contract.KubeletLogFilterTaskID.Ref()) -var KubeletLogHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogk8snode_contract.KubeletLogHistoryModifierTaskID, &kubeletNodeLogHistoryModifierSetting{}) +var KubeletLogLogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogk8snode_contract.KubeletLogLogToTimelineMapperTaskID, &kubeletNodeLogLogToTimelineMapperSetting{}) -type kubeletNodeLogHistoryModifierSetting struct{} +type kubeletNodeLogLogToTimelineMapperSetting struct{} -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (k *kubeletNodeLogHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (k *kubeletNodeLogLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{ googlecloudlogk8snode_contract.PodSandboxIDDiscoveryTaskID.Ref(), commonlogk8sauditv2_contract.ContainerIDPatternFinderTaskID.Ref(), @@ -48,18 +48,18 @@ func (k *kubeletNodeLogHistoryModifierSetting) Dependencies() []taskid.UntypedTa } } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (k *kubeletNodeLogHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (k *kubeletNodeLogLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogk8snode_contract.KubeletLogGroupTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (k *kubeletNodeLogHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogk8snode_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (k *kubeletNodeLogLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogk8snode_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (k *kubeletNodeLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (k *kubeletNodeLogLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { componentFieldSet := log.MustGetFieldSet(l, &googlecloudlogk8snode_contract.K8sNodeLogCommonFieldSet{}) containerIDPatternFinder := coretask.GetTaskResult(ctx, commonlogk8sauditv2_contract.ContainerIDPatternFinderTaskID.Ref()) podIDFinder := coretask.GetTaskResult(ctx, googlecloudlogk8snode_contract.PodSandboxIDDiscoveryTaskID.Ref()) @@ -173,4 +173,4 @@ func (k *kubeletNodeLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx contex return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*kubeletNodeLogHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*kubeletNodeLogLogToTimelineMapperSetting)(nil) diff --git a/pkg/task/inspection/googlecloudlogk8snode/impl/kubelet_task_test.go b/pkg/task/inspection/googlecloudlogk8snode/impl/kubelet_task_test.go index 73e3f0101..00af4b674 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/impl/kubelet_task_test.go +++ b/pkg/task/inspection/googlecloudlogk8snode/impl/kubelet_task_test.go @@ -29,7 +29,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestKubeletLogHistoryModifier(t *testing.T) { +func TestKubeletLogLogToTimelineMapper(t *testing.T) { testTime := time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC) testCases := []struct { desc string @@ -275,10 +275,10 @@ func TestKubeletLogHistoryModifier(t *testing.T) { tc.inputNodeLogFieldSet, ) cs := history.NewChangeSet(l) - modifier := &kubeletNodeLogHistoryModifierSetting{} - _, err := modifier.ModifyChangeSetFromLog(ctx, l, cs, nil, struct{}{}) + modifier := &kubeletNodeLogLogToTimelineMapperSetting{} + _, err := modifier.ProcessLogByGroup(ctx, l, cs, nil, struct{}{}) if err != nil { - t.Fatalf("ModifyChangeSetFromLog() error = %v", err) + t.Fatalf("ProcessLogByGroup() error = %v", err) } for _, asserter := range tc.asserter { asserter.Assert(t, cs) diff --git a/pkg/task/inspection/googlecloudlogk8snode/impl/other_task.go b/pkg/task/inspection/googlecloudlogk8snode/impl/other_task.go index 9c5f8da54..9aa92ff6e 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/impl/other_task.go +++ b/pkg/task/inspection/googlecloudlogk8snode/impl/other_task.go @@ -28,7 +28,7 @@ var OtherLogFilterTask = newParserTypeFilterTask(googlecloudlogk8snode_contract. var OtherLogGroupTask = newNodeAndComponentNameGrouperTask(googlecloudlogk8snode_contract.OtherLogGroupTaskID, googlecloudlogk8snode_contract.OtherLogFilterTaskID.Ref()) -var OtherLogHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogk8snode_contract.OtherLogHistoryModifierTaskID, &otherNodeLogHistoryModifierSetting{ +var OtherLogLogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogk8snode_contract.OtherLogLogToTimelineMapperTaskID, &otherNodeLogLogToTimelineMapperSetting{ StartingMessagesByComponent: map[string]string{ "dockerd": "Starting up", "configure.sh": "Start to install kubernetes files", @@ -41,28 +41,28 @@ var OtherLogHistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[stru }, }) -type otherNodeLogHistoryModifierSetting struct { +type otherNodeLogLogToTimelineMapperSetting struct { StartingMessagesByComponent map[string]string TerminatingMessagesByComponent map[string]string } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (o *otherNodeLogHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (o *otherNodeLogLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (o *otherNodeLogHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (o *otherNodeLogLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogk8snode_contract.OtherLogGroupTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (o *otherNodeLogHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogk8snode_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (o *otherNodeLogLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogk8snode_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (o *otherNodeLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (o *otherNodeLogLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { componentFieldSet := log.MustGetFieldSet(l, &googlecloudlogk8snode_contract.K8sNodeLogCommonFieldSet{}) var startingMessage string @@ -90,4 +90,4 @@ func (o *otherNodeLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context. return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*otherNodeLogHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*otherNodeLogLogToTimelineMapperSetting)(nil) diff --git a/pkg/task/inspection/googlecloudlogk8snode/impl/other_task_test.go b/pkg/task/inspection/googlecloudlogk8snode/impl/other_task_test.go index 95acad297..03cc169d7 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/impl/other_task_test.go +++ b/pkg/task/inspection/googlecloudlogk8snode/impl/other_task_test.go @@ -27,8 +27,8 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestOtherLogHistoryModifier(t *testing.T) { - histoyModifier := otherNodeLogHistoryModifierSetting{ +func TestOtherLogLogToTimelineMapper(t *testing.T) { + histoyModifier := otherNodeLogLogToTimelineMapperSetting{ StartingMessagesByComponent: map[string]string{ "component-A": "component-A start", }, @@ -126,9 +126,9 @@ func TestOtherLogHistoryModifier(t *testing.T) { tc.inputNodeLogFieldSet, ) cs := history.NewChangeSet(l) - _, err := histoyModifier.ModifyChangeSetFromLog(context.Background(), l, cs, nil, struct{}{}) + _, err := histoyModifier.ProcessLogByGroup(context.Background(), l, cs, nil, struct{}{}) if err != nil { - t.Fatalf("ModifyChangeSetFromLog() error = %v", err) + t.Fatalf("ProcessLogByGroup() error = %v", err) } for _, asserter := range tc.asserter { asserter.Assert(t, cs) diff --git a/pkg/task/inspection/googlecloudlogk8snode/impl/registration.go b/pkg/task/inspection/googlecloudlogk8snode/impl/registration.go index ba3062a84..2f2e37da5 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/impl/registration.go +++ b/pkg/task/inspection/googlecloudlogk8snode/impl/registration.go @@ -38,19 +38,19 @@ graph TD ContainerdLogFilter ContainerdLogGroup ContainerdIDDiscovery - ContainerdHistoryModifier + ContainerdLogToTimelineMapper end subgraph Kubelet Pipeline KubeletLogFilter KubeletLogGroup - KubeletHistoryModifier + KubeletLogToTimelineMapper end subgraph Other Pipeline OtherLogFilter OtherLogGroup - OtherHistoryModifier + OtherLogToTimelineMapper end subgraph Finalization @@ -70,27 +70,27 @@ graph TD CommonFieldSetReader --> ContainerdLogFilter ContainerdLogFilter --> ContainerdLogGroup ContainerdLogFilter --> ContainerdIDDiscovery - ContainerdIDDiscovery --> ContainerdHistoryModifier - ContainerdLogGroup --> ContainerdHistoryModifier - LogSerializer --> ContainerdHistoryModifier + ContainerdIDDiscovery --> ContainerdLogToTimelineMapper + ContainerdLogGroup --> ContainerdLogToTimelineMapper + LogSerializer --> ContainerdLogToTimelineMapper %% Kubelet Pipeline Dependencies CommonFieldSetReader --> KubeletLogFilter KubeletLogFilter --> KubeletLogGroup - ContainerdIDDiscovery --> KubeletHistoryModifier - KubeletLogGroup --> KubeletHistoryModifier - LogSerializer --> KubeletHistoryModifier + ContainerdIDDiscovery --> KubeletLogToTimelineMapper + KubeletLogGroup --> KubeletLogToTimelineMapper + LogSerializer --> KubeletLogToTimelineMapper %% Other Pipeline Dependencies CommonFieldSetReader --> OtherLogFilter OtherLogFilter --> OtherLogGroup - OtherLogGroup --> OtherHistoryModifier - LogSerializer --> OtherHistoryModifier + OtherLogGroup --> OtherLogToTimelineMapper + LogSerializer --> OtherLogToTimelineMapper %% Finalization - ContainerdHistoryModifier --> Tail - KubeletHistoryModifier --> Tail - OtherHistoryModifier --> Tail + ContainerdLogToTimelineMapper --> Tail + KubeletLogToTimelineMapper --> Tail + OtherLogToTimelineMapper --> Tail ``` */ @@ -105,18 +105,18 @@ import ( func Register(registry coreinspection.InspectionTaskRegistry) error { return coretask.RegisterTasks(registry, ListLogEntriesTask, - LogSerializerTask, + LogIngesterTask, CommonFieldSetReaderTask, ContainerdLogFilterTask, ContainerdLogGroupTask, PodSandboxIDDiscoveryTask, - ContainerdNodeLogHistoryModifierTask, + ContainerdNodeLogLogToTimelineMapperTask, KubeletLogFilterTask, KubeletLogGroupTask, - KubeletLogHistoryModifierTask, + KubeletLogLogToTimelineMapperTask, OtherLogFilterTask, OtherLogGroupTask, - OtherLogHistoryModifierTask, + OtherLogLogToTimelineMapperTask, TailTask, ContainerIDDiscoveryTask, ) diff --git a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/contract/taskid.go index 3cef1754a..0a9fc9ddc 100644 --- a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/contract/taskid.go @@ -28,11 +28,11 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](MultiCl // FieldSetReaderTaskID is the task id to read the common fieldset for processing the log in the later task. var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](MultiCloudAPIAuditLogTaskIDPrefix + "fieldset-reader") -// LogSerializerTaskID is the task id to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](MultiCloudAPIAuditLogTaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task id to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](MultiCloudAPIAuditLogTaskIDPrefix + "log-serializer") -// LogGrouperTaskID is the task id to group logs by target instance to process logs in HistoryModifier in parallel. +// LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](MultiCloudAPIAuditLogTaskIDPrefix + "grouper") -// HistoryModifierTaskID is the task id for associating events/revisions with a given logs. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](MultiCloudAPIAuditLogTaskIDPrefix + "history-modifier") +// LogToTimelineMapperTaskID is the task id for associating events/revisions with a given logs. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](MultiCloudAPIAuditLogTaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks.go b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks.go index 61874d3b1..fd89cf7bd 100644 --- a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks.go @@ -39,8 +39,8 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogmu &googlecloudlogmulticloudapiaudit_contract.MulticloudAPIAuditResourceFieldSetReader{}, }) -// LogSerializerTask is a task that serializes MulticloudAPI audit logs for storage in the history builder. -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudlogmulticloudapiaudit_contract.LogSerializerTaskID, googlecloudlogmulticloudapiaudit_contract.ListLogEntriesTaskID.Ref()) +// LogIngesterTask is a task that serializes MulticloudAPI audit logs for storage in the history builder. +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogmulticloudapiaudit_contract.LogIngesterTaskID, googlecloudlogmulticloudapiaudit_contract.ListLogEntriesTaskID.Ref()) // LogGrouperTask is a task that groups MulticloudAPI audit logs by their resource path. // This grouping allows for parallel processing of logs related to the same resource. @@ -54,8 +54,8 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogmulticlo }, ) -// HistoryModifierTask is a task that adds revisions/events regarding logs. -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogmulticloudapiaudit_contract.HistoryModifierTaskID, &multicloudAuditLogHistoryModifierSetting{}, +// LogToTimelineMapperTask is a task that adds revisions/events regarding logs. +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogmulticloudapiaudit_contract.LogToTimelineMapperTaskID, &multicloudAuditLogLogToTimelineMapperSetting{}, inspectioncore_contract.FeatureTaskLabel(`MultiCloud API logs`, `Gather Anthos Multicloud audit log including cluster creation,deletion and upgrades.`, enum.LogTypeGkeAudit, @@ -64,26 +64,26 @@ var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](go googlecloudinspectiontypegroup_contract.GKEMultiCloudClusterInspectionTypes...), ) -type multicloudAuditLogHistoryModifierSetting struct { +type multicloudAuditLogLogToTimelineMapperSetting struct { } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (m *multicloudAuditLogHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (m *multicloudAuditLogLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (m *multicloudAuditLogHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (m *multicloudAuditLogLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogmulticloudapiaudit_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (m *multicloudAuditLogHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogmulticloudapiaudit_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (m *multicloudAuditLogLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogmulticloudapiaudit_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (m *multicloudAuditLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (m *multicloudAuditLogLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { commonFieldSet, err := log.GetFieldSet(l, &log.CommonFieldSet{}) if err != nil { return struct{}{}, err @@ -178,4 +178,4 @@ func (m *multicloudAuditLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx co return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*multicloudAuditLogHistoryModifierSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*multicloudAuditLogLogToTimelineMapperSetting)(nil) diff --git a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go index b24a6bfe3..073064ff6 100644 --- a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go @@ -36,7 +36,7 @@ func testReaderFromYAML(t *testing.T, yaml string) *structured.NodeReader { return structured.NewNodeReader(node) } -func TestHistoryModifierTask(t *testing.T) { +func TestLogToTimelineMapperTask(t *testing.T) { testTime := time.Date(2025, time.January, 1, 1, 1, 1, 1, time.UTC) testCommonFieldSet := &log.CommonFieldSet{ Timestamp: testTime, @@ -300,10 +300,10 @@ func TestHistoryModifierTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.inputAudit, &tc.inputResource) - historyModifierSetting := &multicloudAuditLogHistoryModifierSetting{} + mapperSettingSetting := &multicloudAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) - _, err := historyModifierSetting.ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { t.Errorf("got error %v, want nil", err) } diff --git a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/registration.go b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/registration.go index 86fd454fa..813e373bd 100644 --- a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/registration.go +++ b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/registration.go @@ -25,7 +25,7 @@ func Register(registry coreinspection.InspectionTaskRegistry) error { ListLogEntriesTask, FieldSetReaderTask, LogGrouperTask, - LogSerializerTask, - HistoryModifierTask, + LogIngesterTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/googlecloudlognetworkapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudlognetworkapiaudit/contract/taskid.go index 831c933e4..574bdd605 100644 --- a/pkg/task/inspection/googlecloudlognetworkapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlognetworkapiaudit/contract/taskid.go @@ -30,11 +30,11 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](Network // FieldSetReaderTaskID is the task id to read the fieldsets needed for parsing network audit log to process logs in the later task. var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](NetworkAPILogTaskIDPrefix + "fieldset-reader") -// LogSerializerTaskID is the task id to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](NetworkAPILogTaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task id to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](NetworkAPILogTaskIDPrefix + "log-serializer") -// LogGrouperTaskID is the task id to group logs by target instance to process logs in HistoryModifier in parallel. +// LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](NetworkAPILogTaskIDPrefix + "grouper") -// HistoryModifierTaskID is the task id for associating events/revisions with a given logs. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](NetworkAPILogTaskIDPrefix + "history-modifier") +// LogToTimelineMapperTaskID is the task id for associating events/revisions with a given logs. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](NetworkAPILogTaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/parser_task.go b/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/parser_task.go index 37578b428..cf405dbf1 100644 --- a/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/parser_task.go +++ b/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/parser_task.go @@ -40,7 +40,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogne &googlecloudcommon_contract.GCPOperationAuditLogFieldSetReader{}, }) -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudlognetworkapiaudit_contract.LogSerializerTaskID, googlecloudlognetworkapiaudit_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlognetworkapiaudit_contract.LogIngesterTaskID, googlecloudlognetworkapiaudit_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlognetworkapiaudit_contract.LogGrouperTaskID, googlecloudlognetworkapiaudit_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { @@ -53,7 +53,7 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlognetworka }, ) -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[*perNEGHistoryModificationStatus](googlecloudlognetworkapiaudit_contract.HistoryModifierTaskID, &networkAPIHistoryModifierTaskSetting{}, +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[*perNEGHistoryModificationStatus](googlecloudlognetworkapiaudit_contract.LogToTimelineMapperTaskID, &networkAPILogToTimelineMapperTaskSetting{}, inspectioncore_contract.FeatureTaskLabel(`GCE Network Logs`, `Gather GCE Network API logs to visualize statuses of Network Endpoint Groups(NEG)`, enum.LogTypeNetworkAPI, @@ -76,28 +76,28 @@ type perNEGHistoryModificationStatus struct { LastNegAttachRequest *negAttachOrDetachRequest } -type networkAPIHistoryModifierTaskSetting struct{} +type networkAPILogToTimelineMapperTaskSetting struct{} -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (n *networkAPIHistoryModifierTaskSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (n *networkAPILogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{ googlecloudk8scommon_contract.NEGNamesDiscoveryTaskID.Ref(), commonlogk8sauditv2_contract.IPLeaseHistoryInventoryTaskID.Ref(), } } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (n *networkAPIHistoryModifierTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (n *networkAPILogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlognetworkapiaudit_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (n *networkAPIHistoryModifierTaskSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlognetworkapiaudit_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (n *networkAPILogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlognetworkapiaudit_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (n *networkAPIHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData *perNEGHistoryModificationStatus) (*perNEGHistoryModificationStatus, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (n *networkAPILogToTimelineMapperTaskSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData *perNEGHistoryModificationStatus) (*perNEGHistoryModificationStatus, error) { commonFieldSet := log.MustGetFieldSet(l, &log.CommonFieldSet{}) auditFieldSet := log.MustGetFieldSet(l, &googlecloudcommon_contract.GCPAuditLogFieldSet{}) if prevGroupData == nil { @@ -202,7 +202,7 @@ func (n *networkAPIHistoryModifierTaskSetting) ModifyChangeSetFromLog(ctx contex return prevGroupData, nil } -var _ inspectiontaskbase.HistoryModifer[*perNEGHistoryModificationStatus] = (*networkAPIHistoryModifierTaskSetting)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[*perNEGHistoryModificationStatus] = (*networkAPILogToTimelineMapperTaskSetting)(nil) func getNegNameFromResourceName(resourceName string) string { lastSlashIndex := strings.LastIndex(resourceName, "/") diff --git a/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/registration.go b/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/registration.go index 108a8f652..4ada21ad7 100644 --- a/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/registration.go +++ b/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/registration.go @@ -25,7 +25,7 @@ func Register(registry coreinspection.InspectionTaskRegistry) error { ListLogEntriesTask, FieldSetReaderTask, LogGrouperTask, - LogSerializerTask, - HistoryModifierTask, + LogIngesterTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/googlecloudlogonpremapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudlogonpremapiaudit/contract/taskid.go index 7a1e9e646..2e92bcc36 100644 --- a/pkg/task/inspection/googlecloudlogonpremapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogonpremapiaudit/contract/taskid.go @@ -29,11 +29,11 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](OnPremC // FieldSetReaderTaskID is the task id to read the common fieldset for processing the log in the later task. var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](OnPremCloudAPITaskIDPrefix + "fieldset-reader") -// LogSerializerTaskID is the task id to finalize the logs to be included in the final output. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](OnPremCloudAPITaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task id to finalize the logs to be included in the final output. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](OnPremCloudAPITaskIDPrefix + "log-serializer") -// LogGrouperTaskID is the task id to group logs by target instance to process logs in HistoryModifier in parallel. +// LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](OnPremCloudAPITaskIDPrefix + "grouper") -// HistoryModifierTaskID is the task id for associating events/revisions with a given logs. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](OnPremCloudAPITaskIDPrefix + "history-modifier") +// LogToTimelineMapperTaskID is the task id for associating events/revisions with a given logs. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](OnPremCloudAPITaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks.go b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks.go index a81d3c188..221b7f48b 100644 --- a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks.go @@ -39,8 +39,8 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogon &googlecloudlogonpremapiaudit_contract.OnPremAPIAuditResourceFieldSetReader{}, }) -// LogSerializerTask is a task that serializes MulticloudAPI audit logs for storage in the history builder. -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask(googlecloudlogonpremapiaudit_contract.LogSerializerTaskID, googlecloudlogonpremapiaudit_contract.ListLogEntriesTaskID.Ref()) +// LogIngesterTask is a task that serializes MulticloudAPI audit logs for storage in the history builder. +var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogonpremapiaudit_contract.LogIngesterTaskID, googlecloudlogonpremapiaudit_contract.ListLogEntriesTaskID.Ref()) // LogGrouperTask is a task that groups MulticloudAPI audit logs by their resource path. // This grouping allows for parallel processing of logs related to the same resource. @@ -54,8 +54,8 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogonpremap }, ) -// HistoryModifierTask is a task that adds revisions/events regarding logs. -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](googlecloudlogonpremapiaudit_contract.HistoryModifierTaskID, &onpremAuditLogHistoryModifierSetting{}, +// LogToTimelineMapperTask is a task that adds revisions/events regarding logs. +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogonpremapiaudit_contract.LogToTimelineMapperTaskID, &onpremAuditLogLogToTimelineMapperSetting{}, inspectioncore_contract.FeatureTaskLabel(`OnPrem API logs`, `Gather Anthos OnPrem audit log including cluster creation,deletion,enroll,unenroll and upgrades.`, enum.LogTypeOnPremAPI, @@ -64,26 +64,26 @@ var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}](go googlecloudinspectiontypegroup_contract.GDCClusterInspectionTypes...), ) -type onpremAuditLogHistoryModifierSetting struct { +type onpremAuditLogLogToTimelineMapperSetting struct { } -// Dependencies implements inspectiontaskbase.HistoryModifer. -func (m *onpremAuditLogHistoryModifierSetting) Dependencies() []taskid.UntypedTaskReference { +// Dependencies implements inspectiontaskbase.LogToTimelineMapper. +func (m *onpremAuditLogLogToTimelineMapperSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (m *onpremAuditLogHistoryModifierSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (m *onpremAuditLogLogToTimelineMapperSetting) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogonpremapiaudit_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (m *onpremAuditLogHistoryModifierSetting) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogonpremapiaudit_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (m *onpremAuditLogLogToTimelineMapperSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogonpremapiaudit_contract.LogIngesterTaskID.Ref() } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (m *onpremAuditLogHistoryModifierSetting) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (m *onpremAuditLogLogToTimelineMapperSetting) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { commonFieldSet, err := log.GetFieldSet(l, &log.CommonFieldSet{}) if err != nil { return struct{}{}, err diff --git a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go index 3db958f0a..1db35941f 100644 --- a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go @@ -36,7 +36,7 @@ func testReaderFromYAML(t *testing.T, yaml string) *structured.NodeReader { return structured.NewNodeReader(node) } -func TestHistoryModifierTask(t *testing.T) { +func TestLogToTimelineMapperTask(t *testing.T) { testTime := time.Date(2025, time.January, 1, 1, 1, 1, 1, time.UTC) testCommonFieldSet := &log.CommonFieldSet{ Timestamp: testTime, @@ -376,10 +376,10 @@ func TestHistoryModifierTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.inputAudit, &tc.inputResource) - historyModifierSetting := &onpremAuditLogHistoryModifierSetting{} + mapperSettingSetting := &onpremAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) - _, err := historyModifierSetting.ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { t.Errorf("got error %v, want nil", err) } diff --git a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/registration.go b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/registration.go index 70b471c4e..deb26a5e0 100644 --- a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/registration.go +++ b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/registration.go @@ -25,7 +25,7 @@ func Register(registry coreinspection.InspectionTaskRegistry) error { ListLogEntriesTask, FieldSetReaderTask, LogGrouperTask, - LogSerializerTask, - HistoryModifierTask, + LogIngesterTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/googlecloudlogserialport/contract/taskid.go b/pkg/task/inspection/googlecloudlogserialport/contract/taskid.go index 17744197a..75222c566 100644 --- a/pkg/task/inspection/googlecloudlogserialport/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogserialport/contract/taskid.go @@ -31,11 +31,11 @@ var LogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix // FieldSetReadTaskID is the task id for reading serial port node specific fields(GCESerialPortLogFieldSet). var FieldSetReadTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "field-set-read") -// LogSerializerTaskID is the task id to serialize logs to history. -var LogSerializerTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") +// LogIngesterTaskID is the task id to serialize logs to history. +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") // LogGrouperTaskID is the task id to group logs by node name and serial port number. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "log-grouper") -// HistoryModifierTaskID is the task id to relate serialized logs to events on timeline. -var HistoryModifierTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "history-modifier") +// LogToTimelineMapperTaskID is the task id to relate serialized logs to events on timeline. +var LogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "timeline-mapper") diff --git a/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks.go b/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks.go index c89d09be9..aed061657 100644 --- a/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks.go @@ -40,10 +40,10 @@ var LogFilterTask = inspectiontaskbase.NewLogFilterTask(googlecloudlogserialport }, ) -// LogSerializerTask is the log serializer task for GCE serial port logs. +// LogIngesterTask is the log serializer task for GCE serial port logs. // It includes all logs gathered from log list. -var LogSerializerTask = inspectiontaskbase.NewLogSerializerTask( - googlecloudlogserialport_contract.LogSerializerTaskID, +var LogIngesterTask = inspectiontaskbase.NewLogIngester( + googlecloudlogserialport_contract.LogIngesterTaskID, googlecloudlogserialport_contract.LogFilterTaskID.Ref(), ) @@ -57,10 +57,10 @@ var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask( }, ) -// HistoryModifierTask is the task to modify history to generate events on serial port logs. -var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}]( - googlecloudlogserialport_contract.HistoryModifierTaskID, - &serialportHistoryModifier{}, +// LogToTimelineMapperTask is the task to map logs into events on serial port logs. +var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}]( + googlecloudlogserialport_contract.LogToTimelineMapperTaskID, + &serialportLogToTimelineMapper{}, inspectioncore_contract.FeatureTaskLabel( "GCE Node Serialport log", `Serialport logs from GCE instances. This helps detailed investigation on VM bootstrapping issue on GCE instance.`, @@ -69,29 +69,29 @@ var HistoryModifierTask = inspectiontaskbase.NewHistoryModifierTask[struct{}]( ), ) -type serialportHistoryModifier struct { +type serialportLogToTimelineMapper struct { } -// GroupedLogTask implements inspectiontaskbase.HistoryModifer. -func (s *serialportHistoryModifier) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { +// GroupedLogTask implements inspectiontaskbase.LogToTimelineMapper. +func (s *serialportLogToTimelineMapper) GroupedLogTask() taskid.TaskReference[inspectiontaskbase.LogGroupMap] { return googlecloudlogserialport_contract.LogGrouperTaskID.Ref() } -// LogSerializerTask implements inspectiontaskbase.HistoryModifer. -func (s *serialportHistoryModifier) LogSerializerTask() taskid.TaskReference[[]*log.Log] { - return googlecloudlogserialport_contract.LogSerializerTaskID.Ref() +// LogIngesterTask implements inspectiontaskbase.LogToTimelineMapper. +func (s *serialportLogToTimelineMapper) LogIngesterTask() taskid.TaskReference[[]*log.Log] { + return googlecloudlogserialport_contract.LogIngesterTaskID.Ref() } -func (s *serialportHistoryModifier) Dependencies() []taskid.UntypedTaskReference { +func (s *serialportLogToTimelineMapper) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// ModifyChangeSetFromLog implements inspectiontaskbase.HistoryModifer. -func (s *serialportHistoryModifier) ModifyChangeSetFromLog(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { +// ProcessLogByGroup implements inspectiontaskbase.LogToTimelineMapper. +func (s *serialportLogToTimelineMapper) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevGroupData struct{}) (struct{}, error) { serialportFieldSet := log.MustGetFieldSet(l, &googlecloudlogserialport_contract.GCESerialPortLogFieldSet{}) cs.AddEvent(serialportFieldSet.GetResourcePath()) cs.SetLogSummary(serialportFieldSet.Message) return struct{}{}, nil } -var _ inspectiontaskbase.HistoryModifer[struct{}] = (*serialportHistoryModifier)(nil) +var _ inspectiontaskbase.LogToTimelineMapper[struct{}] = (*serialportLogToTimelineMapper)(nil) diff --git a/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks_test.go index c00d7f58d..3d405020d 100644 --- a/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks_test.go @@ -23,7 +23,7 @@ import ( "github.com/GoogleCloudPlatform/khi/pkg/testutil/testchangeset" ) -func TestHistoryModifierTask(t *testing.T) { +func TestLogToTimelineMapperTask(t *testing.T) { testCases := []struct { desc string fieldSet googlecloudlogserialport_contract.GCESerialPortLogFieldSet @@ -49,11 +49,11 @@ func TestHistoryModifierTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(&tc.fieldSet) - modifier := serialportHistoryModifier{} + modifier := serialportLogToTimelineMapper{} cs := history.NewChangeSet(l) - _, err := modifier.ModifyChangeSetFromLog(t.Context(), l, cs, nil, struct{}{}) + _, err := modifier.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { - t.Errorf("ModifyChangeSetFromLog() returned an unexpected error, err=%v", err) + t.Errorf("ProcessLogByGroup() returned an unexpected error, err=%v", err) } for _, asserter := range tc.asserter { asserter.Assert(t, cs) diff --git a/pkg/task/inspection/googlecloudlogserialport/impl/registration.go b/pkg/task/inspection/googlecloudlogserialport/impl/registration.go index 5ec971c6e..73f8a9517 100644 --- a/pkg/task/inspection/googlecloudlogserialport/impl/registration.go +++ b/pkg/task/inspection/googlecloudlogserialport/impl/registration.go @@ -25,24 +25,24 @@ flowchart TD LogQueryTask LogFilterTask FieldSetReadTask - LogSerializerTask + LogIngesterTask LogGrouperTask - HistoryModifierTask + LogToTimelineMapperTask LogQueryTask --> FieldSetReadTask FieldSetReadTask --> LogFilterTask - LogFilterTask --> LogSerializerTask + LogFilterTask --> LogIngesterTask LogFilterTask --> LogGrouperTask - LogGrouperTask --> HistoryModifierTask - LogSerializerTask --> HistoryModifierTask + LogGrouperTask --> LogToTimelineMapperTask + LogIngesterTask --> LogToTimelineMapperTask */ func Register(registry coreinspection.InspectionTaskRegistry) error { return coretask.RegisterTasks(registry, LogQueryTask, FieldSetReadTask, - LogSerializerTask, + LogIngesterTask, LogGrouperTask, LogFilterTask, - HistoryModifierTask, + LogToTimelineMapperTask, ) } diff --git a/pkg/task/inspection/ossclusterk8s/impl/auditlog_parsers.go b/pkg/task/inspection/ossclusterk8s/impl/auditlog_parsers.go index 1ec82ce10..8bbc3de8f 100644 --- a/pkg/task/inspection/ossclusterk8s/impl/auditlog_parsers.go +++ b/pkg/task/inspection/ossclusterk8s/impl/auditlog_parsers.go @@ -37,15 +37,15 @@ var OSSK8sAuditLogFieldExtractorTask = inspectiontaskbase.NewFieldSetReadTask( var OSSK8sAuditLogParserTailTask = inspectiontaskbase.NewInspectionTask( ossclusterk8s_contract.OSSK8sAuditLogParserTailTaskID, []taskid.UntypedTaskReference{ - commonlogk8sauditv2_contract.LogSummaryHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.NonSuccessLogHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.NamespaceRequestHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.ResourceRevisionHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.ConditionHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.ResourceOwnerReferenceModifierTaskID.Ref(), - commonlogk8sauditv2_contract.PodPhaseHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.EndpointResourceHistoryModifierTaskID.Ref(), - commonlogk8sauditv2_contract.ContainerHistoryModifierTaskID.Ref(), + commonlogk8sauditv2_contract.LogSummaryLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.NonSuccessLogLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.NamespaceRequestLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.ResourceRevisionLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.ConditionLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.ResourceOwnerReferenceTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.PodPhaseLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.EndpointResourceLogToTimelineMapperTaskID.Ref(), + commonlogk8sauditv2_contract.ContainerLogToTimelineMapperTaskID.Ref(), commonlogk8sauditv2_contract.NodeNameDiscoveryTaskID.Ref(), commonlogk8sauditv2_contract.ResourceUIDDiscoveryTaskID.Ref(), From 0454fd769401c8dd6e5dfa24a156f693394cade3 Mon Sep 17 00:00:00 2001 From: kyasbal Date: Mon, 15 Dec 2025 12:58:45 +0900 Subject: [PATCH 2/5] Update pkg/core/inspection/taskbase/logingester_task.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal --- pkg/core/inspection/taskbase/logingester_task.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/core/inspection/taskbase/logingester_task.go b/pkg/core/inspection/taskbase/logingester_task.go index 4c077cdb2..9a7e36a1a 100644 --- a/pkg/core/inspection/taskbase/logingester_task.go +++ b/pkg/core/inspection/taskbase/logingester_task.go @@ -30,7 +30,7 @@ import ( // NewLogIngester store its given logs to history to prepare the history type to have ChangeSet associated with the log. // This must be called before LogToTimelineMapperTask and Logs must be discarded before this task if it shouldn't be included in the result. -func NewLogIngester(taskID taskid.TaskImplementationID[[]*log.Log], input taskid.TaskReference[[]*log.Log]) coretask.Task[[]*log.Log] { +func NewLogIngesterTask(taskID taskid.TaskImplementationID[[]*log.Log], input taskid.TaskReference[[]*log.Log]) coretask.Task[[]*log.Log] { return NewProgressReportableInspectionTask(taskID, []taskid.UntypedTaskReference{input}, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType, progress *inspectionmetadata.TaskProgressMetadata) ([]*log.Log, error) { if taskMode == inspectioncore_contract.TaskModeDryRun { return []*log.Log{}, nil From f245297251245d4f431f2af02cfae61b5a12129b Mon Sep 17 00:00:00 2001 From: kyasbal Date: Mon, 15 Dec 2025 13:02:48 +0900 Subject: [PATCH 3/5] Apply suggestions from code review Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal --- pkg/core/inspection/taskbase/mapper_task_test.go | 2 +- pkg/task/inspection/commonlogk8sauditv2/contract/taskid.go | 2 +- .../inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go | 2 +- .../inspection/googlecloudlogcomputeapiaudit/contract/taskid.go | 2 +- .../googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go | 2 +- pkg/task/inspection/googlecloudlogcsm/contract/taskid.go | 2 +- .../inspection/googlecloudloggkeapiaudit/contract/taskid.go | 2 +- .../googlecloudloggkeapiaudit/impl/parser_tasks_test.go | 2 +- .../inspection/googlecloudlogk8scontainer/contract/taskid.go | 2 +- .../inspection/googlecloudlogk8scontrolplane/contract/taskid.go | 2 +- pkg/task/inspection/googlecloudlogk8sevent/contract/taskid.go | 2 +- pkg/task/inspection/googlecloudlogk8snode/contract/taskid.go | 2 +- .../googlecloudlogmulticloudapiaudit/contract/taskid.go | 2 +- .../googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go | 2 +- .../inspection/googlecloudlognetworkapiaudit/contract/taskid.go | 2 +- .../inspection/googlecloudlogonpremapiaudit/contract/taskid.go | 2 +- .../googlecloudlogonpremapiaudit/impl/parser_tasks_test.go | 2 +- pkg/task/inspection/googlecloudlogserialport/contract/taskid.go | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/pkg/core/inspection/taskbase/mapper_task_test.go b/pkg/core/inspection/taskbase/mapper_task_test.go index 26c197005..b205ff851 100644 --- a/pkg/core/inspection/taskbase/mapper_task_test.go +++ b/pkg/core/inspection/taskbase/mapper_task_test.go @@ -55,7 +55,7 @@ func (m *mockLogToTimelineMapper) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// ProcessLogByGroup implements HistoryModifer. +// ProcessLogByGroup implements LogToTimelineMapper. func (m *mockLogToTimelineMapper) ProcessLogByGroup(ctx context.Context, l *log.Log, cs *history.ChangeSet, builder *history.Builder, prevData mockLogToTimelineMapperGroupData) (mockLogToTimelineMapperGroupData, error) { // encode current group count to severity to use them assert in tasecases to verify the prevData is correctly handled. switch prevData.CurrentGroupLogCount { diff --git a/pkg/task/inspection/commonlogk8sauditv2/contract/taskid.go b/pkg/task/inspection/commonlogk8sauditv2/contract/taskid.go index a8055ccf2..9a1641930 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/contract/taskid.go +++ b/pkg/task/inspection/commonlogk8sauditv2/contract/taskid.go @@ -32,7 +32,7 @@ var K8sAuditLogProviderRef = taskid.NewTaskReference[[]*log.Log](TaskIDPrefix + var K8sAuditLogParserTailRef = taskid.NewTaskReference[struct{}](TaskIDPrefix + "k8s-auditlog-parser-tail") // K8sAuditLogIngesterTaskID is the task ID for the task to serialize the k8s audit log. -var K8sAuditLogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "k8s-auditlog-serializer") +var K8sAuditLogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "k8s-auditlog-ingester") // SuccessLogFilterTaskID is the task ID for the task to filter success logs. var SuccessLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "success-log-filter") diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go index 86f813559..d321e9b9a 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go @@ -197,7 +197,7 @@ var ResourceLifetimeTrackerTask = inspectiontaskbase.NewProgressReportableInspec updator.Start(ctx) processedLogCount.Store(0) - mapperSettingSetting := &lifeTimeTrackerTaskSetting{ +setting := &lifeTimeTrackerTaskSetting{ kindsToWaitExactDeletionToDetermineDeletion: map[string]struct{}{ "core/v1#pod": {}, }, diff --git a/pkg/task/inspection/googlecloudlogcomputeapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudlogcomputeapiaudit/contract/taskid.go index 32b52f657..d912e0d4b 100644 --- a/pkg/task/inspection/googlecloudlogcomputeapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogcomputeapiaudit/contract/taskid.go @@ -31,7 +31,7 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](Compute var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](ComputeAPIAuditLogTaskIDPrefix + "fieldset-reader") // LogIngesterTaskID is the task id to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](ComputeAPIAuditLogTaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](ComputeAPIAuditLogTaskIDPrefix + "log-ingester") // LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](ComputeAPIAuditLogTaskIDPrefix + "grouper") diff --git a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go index a4de8e144..fa9c347eb 100644 --- a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go @@ -143,7 +143,7 @@ func TestLogToTimelineMapperTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.input) - mapperSettingSetting := &gcpComputeAuditLogLogToTimelineMapperSetting{} +mapperSetting := &gcpComputeAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) diff --git a/pkg/task/inspection/googlecloudlogcsm/contract/taskid.go b/pkg/task/inspection/googlecloudlogcsm/contract/taskid.go index cfc35bb65..7ea779680 100644 --- a/pkg/task/inspection/googlecloudlogcsm/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogcsm/contract/taskid.go @@ -33,7 +33,7 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDP var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "fieldset-reader") // LogIngesterTaskID is the task id to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-ingester") // LogGrouperTaskID is the task ID to group CSM access logs by their reporter pod for parallel processing. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "grouper") diff --git a/pkg/task/inspection/googlecloudloggkeapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudloggkeapiaudit/contract/taskid.go index ea42948bb..621f365db 100644 --- a/pkg/task/inspection/googlecloudloggkeapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudloggkeapiaudit/contract/taskid.go @@ -29,7 +29,7 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEAPIA var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEAPIAuditLogTaskIDPrefix + "fieldset-reader") // LogIngesterTaskID is the task id to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEAPIAuditLogTaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEAPIAuditLogTaskIDPrefix + "log-ingester") // LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](GKEAPIAuditLogTaskIDPrefix + "grouper") diff --git a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go index 0744f8bde..de469c813 100644 --- a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go @@ -266,7 +266,7 @@ func TestLogToTimelineMapperTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.inputAudit, &tc.inputResource) - mapperSettingSetting := &gkeAuditLogLogToTimelineMapperSetting{} +mapperSetting := &gkeAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) diff --git a/pkg/task/inspection/googlecloudlogk8scontainer/contract/taskid.go b/pkg/task/inspection/googlecloudlogk8scontainer/contract/taskid.go index a8e6cdc7b..b87a9f6a2 100644 --- a/pkg/task/inspection/googlecloudlogk8scontainer/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogk8scontainer/contract/taskid.go @@ -36,7 +36,7 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDP var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "fieldset-reader") // LogIngesterTaskID is the task id to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-ingester") // LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "grouper") diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/contract/taskid.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/contract/taskid.go index 66e27dbac..b34111694 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/contract/taskid.go @@ -35,7 +35,7 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sCont var CommonFieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "fieldset-reader-common") // LogIngesterTaskID is the task ID to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "log-ingester") // SchedulerLogFilterTaskID is the task ID for filtering scheduler logs. var SchedulerLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](K8sControlPlaneLogTaskIDPrefix + "scheduler-log-filter") diff --git a/pkg/task/inspection/googlecloudlogk8sevent/contract/taskid.go b/pkg/task/inspection/googlecloudlogk8sevent/contract/taskid.go index 53f759b95..0c9ee5b0a 100644 --- a/pkg/task/inspection/googlecloudlogk8sevent/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogk8sevent/contract/taskid.go @@ -30,7 +30,7 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEK8sE var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEK8sEventLogTaskIDPrefix + "fieldset-reader") // LogIngesterTaskID is the task id to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEK8sEventLogTaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](GKEK8sEventLogTaskIDPrefix + "log-ingester") // LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](GKEK8sEventLogTaskIDPrefix + "grouper") diff --git a/pkg/task/inspection/googlecloudlogk8snode/contract/taskid.go b/pkg/task/inspection/googlecloudlogk8snode/contract/taskid.go index bf1b974fa..9eb784d7a 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogk8snode/contract/taskid.go @@ -32,7 +32,7 @@ const ( var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "query") // LogIngesterTaskID is the task ID to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-ingester") // CommonFieldsetReaderTaskID is the ID for a task to read the fieldset used by all parsers in node log parsers later. var CommonFieldsetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "common-fieldset-reader") diff --git a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/contract/taskid.go index 0a9fc9ddc..68b722fce 100644 --- a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/contract/taskid.go @@ -29,7 +29,7 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](MultiCl var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](MultiCloudAPIAuditLogTaskIDPrefix + "fieldset-reader") // LogIngesterTaskID is the task id to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](MultiCloudAPIAuditLogTaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](MultiCloudAPIAuditLogTaskIDPrefix + "log-ingester") // LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](MultiCloudAPIAuditLogTaskIDPrefix + "grouper") diff --git a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go index 073064ff6..443a64c17 100644 --- a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go @@ -300,7 +300,7 @@ func TestLogToTimelineMapperTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.inputAudit, &tc.inputResource) - mapperSettingSetting := &multicloudAuditLogLogToTimelineMapperSetting{} +mapperSetting := &multicloudAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) diff --git a/pkg/task/inspection/googlecloudlognetworkapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudlognetworkapiaudit/contract/taskid.go index 574bdd605..7d116fecb 100644 --- a/pkg/task/inspection/googlecloudlognetworkapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlognetworkapiaudit/contract/taskid.go @@ -31,7 +31,7 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](Network var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](NetworkAPILogTaskIDPrefix + "fieldset-reader") // LogIngesterTaskID is the task id to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](NetworkAPILogTaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](NetworkAPILogTaskIDPrefix + "log-ingester") // LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](NetworkAPILogTaskIDPrefix + "grouper") diff --git a/pkg/task/inspection/googlecloudlogonpremapiaudit/contract/taskid.go b/pkg/task/inspection/googlecloudlogonpremapiaudit/contract/taskid.go index 2e92bcc36..190ca5e24 100644 --- a/pkg/task/inspection/googlecloudlogonpremapiaudit/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogonpremapiaudit/contract/taskid.go @@ -30,7 +30,7 @@ var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](OnPremC var FieldSetReaderTaskID = taskid.NewDefaultImplementationID[[]*log.Log](OnPremCloudAPITaskIDPrefix + "fieldset-reader") // LogIngesterTaskID is the task id to finalize the logs to be included in the final output. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](OnPremCloudAPITaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](OnPremCloudAPITaskIDPrefix + "log-ingester") // LogGrouperTaskID is the task id to group logs by target instance to process logs in LogToTimelineMapper in parallel. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](OnPremCloudAPITaskIDPrefix + "grouper") diff --git a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go index 1db35941f..d996cb763 100644 --- a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go @@ -376,7 +376,7 @@ func TestLogToTimelineMapperTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.inputAudit, &tc.inputResource) - mapperSettingSetting := &onpremAuditLogLogToTimelineMapperSetting{} +mapperSetting := &onpremAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) diff --git a/pkg/task/inspection/googlecloudlogserialport/contract/taskid.go b/pkg/task/inspection/googlecloudlogserialport/contract/taskid.go index 75222c566..bc0d191da 100644 --- a/pkg/task/inspection/googlecloudlogserialport/contract/taskid.go +++ b/pkg/task/inspection/googlecloudlogserialport/contract/taskid.go @@ -32,7 +32,7 @@ var LogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix var FieldSetReadTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "field-set-read") // LogIngesterTaskID is the task id to serialize logs to history. -var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-serializer") +var LogIngesterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "log-ingester") // LogGrouperTaskID is the task id to group logs by node name and serial port number. var LogGrouperTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "log-grouper") From 5571fda1a04b85952945df3cbb2dae3bab683ddf Mon Sep 17 00:00:00 2001 From: kyasbal Date: Mon, 15 Dec 2025 13:13:22 +0900 Subject: [PATCH 4/5] fix compilation errors --- pkg/core/inspection/taskbase/logingester_task.go | 2 +- pkg/core/inspection/taskbase/logingester_task_test.go | 4 ++-- pkg/core/inspection/taskbase/mapper_task_test.go | 2 +- .../commonlogk8sauditv2/impl/conditionmapper_task.go | 8 ++++---- .../commonlogk8sauditv2/impl/endpointmapper_task.go | 6 +++--- .../commonlogk8sauditv2/impl/lifetimetracker_task.go | 4 ++-- .../commonlogk8sauditv2/impl/logsummary_task.go | 2 +- .../commonlogk8sauditv2/impl/ownerreferencemapper_task.go | 8 ++++---- .../googlecloudlogcomputeapiaudit/impl/parser_tasks.go | 2 +- .../impl/parser_tasks_test.go | 4 ++-- pkg/task/inspection/googlecloudlogcsm/impl/parser_task.go | 2 +- .../googlecloudloggkeapiaudit/impl/parser_tasks.go | 4 ++-- .../googlecloudloggkeapiaudit/impl/parser_tasks_test.go | 4 ++-- .../inspection/googlecloudloggkeautoscaler/impl/parser.go | 2 +- .../googlecloudlogk8scontainer/impl/parser_task.go | 2 +- .../googlecloudlogk8scontrolplane/impl/common_task.go | 2 +- .../inspection/googlecloudlogk8sevent/impl/parser_task.go | 2 +- .../inspection/googlecloudlogk8snode/impl/common_task.go | 2 +- .../googlecloudlogmulticloudapiaudit/impl/parser_tasks.go | 2 +- .../impl/parser_tasks_test.go | 4 ++-- .../googlecloudlognetworkapiaudit/impl/parser_task.go | 2 +- .../googlecloudlogonpremapiaudit/impl/parser_tasks.go | 2 +- .../impl/parser_tasks_test.go | 4 ++-- .../googlecloudlogserialport/impl/parser_tasks.go | 2 +- 24 files changed, 39 insertions(+), 39 deletions(-) diff --git a/pkg/core/inspection/taskbase/logingester_task.go b/pkg/core/inspection/taskbase/logingester_task.go index 9a7e36a1a..8cbd04c8e 100644 --- a/pkg/core/inspection/taskbase/logingester_task.go +++ b/pkg/core/inspection/taskbase/logingester_task.go @@ -28,7 +28,7 @@ import ( "go.opentelemetry.io/otel/trace" ) -// NewLogIngester store its given logs to history to prepare the history type to have ChangeSet associated with the log. +// NewLogIngesterTask returns a task stores its given logs to history to prepare the history type to have ChangeSet associated with the log. // This must be called before LogToTimelineMapperTask and Logs must be discarded before this task if it shouldn't be included in the result. func NewLogIngesterTask(taskID taskid.TaskImplementationID[[]*log.Log], input taskid.TaskReference[[]*log.Log]) coretask.Task[[]*log.Log] { return NewProgressReportableInspectionTask(taskID, []taskid.UntypedTaskReference{input}, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType, progress *inspectionmetadata.TaskProgressMetadata) ([]*log.Log, error) { diff --git a/pkg/core/inspection/taskbase/logingester_task_test.go b/pkg/core/inspection/taskbase/logingester_task_test.go index 12eb1d849..536109f91 100644 --- a/pkg/core/inspection/taskbase/logingester_task_test.go +++ b/pkg/core/inspection/taskbase/logingester_task_test.go @@ -31,7 +31,7 @@ func TestLogIngesterTask_DryRunMode(t *testing.T) { ctx := inspectiontest.WithDefaultTestInspectionTaskContext(t.Context()) inputTaskID := taskid.NewDefaultImplementationID[[]*log.Log]("input") taskID := taskid.NewDefaultImplementationID[[]*log.Log]("test") - task := NewLogIngester(taskID, inputTaskID.Ref()) + task := NewLogIngesterTask(taskID, inputTaskID.Ref()) result, _, err := inspectiontest.RunInspectionTask(ctx, task, inspectioncore_contract.TaskModeDryRun, map[string]any{}, tasktest.NewTaskDependencyValuePair(inputTaskID.Ref(), []*log.Log{l})) @@ -55,7 +55,7 @@ func TestLogIngesterTask_RunMode(t *testing.T) { ctx := inspectiontest.WithDefaultTestInspectionTaskContext(t.Context()) inputTaskID := taskid.NewDefaultImplementationID[[]*log.Log]("input") taskID := taskid.NewDefaultImplementationID[[]*log.Log]("test") - task := NewLogIngester(taskID, inputTaskID.Ref()) + task := NewLogIngesterTask(taskID, inputTaskID.Ref()) result, _, err := inspectiontest.RunInspectionTask(ctx, task, inspectioncore_contract.TaskModeRun, map[string]any{}, tasktest.NewTaskDependencyValuePair(inputTaskID.Ref(), []*log.Log{l})) diff --git a/pkg/core/inspection/taskbase/mapper_task_test.go b/pkg/core/inspection/taskbase/mapper_task_test.go index b205ff851..9cf162919 100644 --- a/pkg/core/inspection/taskbase/mapper_task_test.go +++ b/pkg/core/inspection/taskbase/mapper_task_test.go @@ -42,7 +42,7 @@ type mockLogToTimelineMapperGroupData struct { type mockLogToTimelineMapper struct { } -// GroupedLogTask implements HistoryModifer. +// GroupedLogTask implements LogToTimelineMapper. func (m *mockLogToTimelineMapper) GroupedLogTask() taskid.TaskReference[LogGroupMap] { return mockLogToTimelineMapperPrevTaskID.Ref() } diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task.go index bfe11fee4..423f9d4ee 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/conditionmapper_task.go @@ -198,22 +198,22 @@ func (c *conditionLogToTimelineMapperTaskSetting) processSecondPass(ctx context. return state, nil } -// Dependencies implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// Dependencies implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (c *conditionLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// PassCount implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// PassCount implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (c *conditionLogToTimelineMapperTaskSetting) PassCount() int { return 2 } -// GroupedLogTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// GroupedLogTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (c *conditionLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { return commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID.Ref() } -// LogIngesterTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// LogIngesterTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (c *conditionLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task.go index e35412ebe..a9ef7322c 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/endpointmapper_task.go @@ -336,17 +336,17 @@ func (e *endpointResourceLogToTimelineMapperTaskSetting) ResourcePairs(ctx conte return result, nil } -// Dependencies implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// Dependencies implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (e *endpointResourceLogToTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// GroupedLogTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// GroupedLogTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (e *endpointResourceLogToTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { return commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID.Ref() } -// LogIngesterTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// LogIngesterTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (e *endpointResourceLogToTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go index d321e9b9a..930ef9b1e 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/lifetimetracker_task.go @@ -197,7 +197,7 @@ var ResourceLifetimeTrackerTask = inspectiontaskbase.NewProgressReportableInspec updator.Start(ctx) processedLogCount.Store(0) -setting := &lifeTimeTrackerTaskSetting{ + setting := &lifeTimeTrackerTaskSetting{ kindsToWaitExactDeletionToDetermineDeletion: map[string]struct{}{ "core/v1#pod": {}, }, @@ -213,7 +213,7 @@ setting := &lifeTimeTrackerTaskSetting{ } for _, l := range group.Logs { var err error - groupData, err = mapperSettingSetting.DetectLifetimeLogEvent(ctx, l, groupData) + groupData, err = setting.DetectLifetimeLogEvent(ctx, l, groupData) if err != nil { var yaml string yamlBytes, err2 := l.Log.Serialize("", &structured.YAMLNodeSerializer{}) diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task.go index 8e49a4e97..5a2d425cb 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/logsummary_task.go @@ -27,7 +27,7 @@ import ( ) // LogIngesterTask is the task to serialize k8s audit logs. -var LogIngesterTask = inspectiontaskbase.NewLogIngester( +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask( commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID, commonlogk8sauditv2_contract.K8sAuditLogProviderRef, ) diff --git a/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task.go b/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task.go index e94723db5..ef346271d 100644 --- a/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task.go +++ b/pkg/task/inspection/commonlogk8sauditv2/impl/ownerreferencemapper_task.go @@ -100,22 +100,22 @@ func (r *resourceOwnerReferenceTimelineMapperTaskSetting) ResourcePairs(ctx cont return result, nil } -// Dependencies implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// Dependencies implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (r *resourceOwnerReferenceTimelineMapperTaskSetting) Dependencies() []taskid.UntypedTaskReference { return []taskid.UntypedTaskReference{} } -// PassCount implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// PassCount implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (r *resourceOwnerReferenceTimelineMapperTaskSetting) PassCount() int { return 1 } -// GroupedLogTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// GroupedLogTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (r *resourceOwnerReferenceTimelineMapperTaskSetting) GroupedLogTask() taskid.TaskReference[commonlogk8sauditv2_contract.ResourceManifestLogGroupMap] { return commonlogk8sauditv2_contract.ResourceLifetimeTrackerTaskID.Ref() } -// LogIngesterTask implements commonlogk8sauditv2_contract.ResourceBasedHistoryModifer. +// LogIngesterTask implements commonlogk8sauditv2_contract.ManifestLogToTimelineMapperTaskSetting. func (r *resourceOwnerReferenceTimelineMapperTaskSetting) LogIngesterTask() taskid.TaskReference[[]*log.Log] { return commonlogk8sauditv2_contract.K8sAuditLogIngesterTaskID.Ref() } diff --git a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks.go b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks.go index 149a24b44..9cc60f557 100644 --- a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks.go @@ -36,7 +36,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogco &googlecloudcommon_contract.GCPOperationAuditLogFieldSetReader{}, }) -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogcomputeapiaudit_contract.LogIngesterTaskID, googlecloudlogcomputeapiaudit_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudlogcomputeapiaudit_contract.LogIngesterTaskID, googlecloudlogcomputeapiaudit_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogcomputeapiaudit_contract.LogGrouperTaskID, googlecloudlogcomputeapiaudit_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { diff --git a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go index fa9c347eb..966753197 100644 --- a/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogcomputeapiaudit/impl/parser_tasks_test.go @@ -143,10 +143,10 @@ func TestLogToTimelineMapperTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.input) -mapperSetting := &gcpComputeAuditLogLogToTimelineMapperSetting{} + mapperSetting := &gcpComputeAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) - _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) + _, err := mapperSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { t.Errorf("got error %v, want nil", err) } diff --git a/pkg/task/inspection/googlecloudlogcsm/impl/parser_task.go b/pkg/task/inspection/googlecloudlogcsm/impl/parser_task.go index e4d57ae85..07309393f 100644 --- a/pkg/task/inspection/googlecloudlogcsm/impl/parser_task.go +++ b/pkg/task/inspection/googlecloudlogcsm/impl/parser_task.go @@ -35,7 +35,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogcs &googlecloudlogcsm_contract.IstioAccessLogFieldSetReader{}, }) -var LogIngesterTask = inspectiontaskbase.NewLogIngester( +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask( googlecloudlogcsm_contract.LogIngesterTaskID, googlecloudlogcsm_contract.ListLogEntriesTaskID.Ref(), ) diff --git a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks.go b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks.go index fa19f8349..ec90b4d06 100644 --- a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks.go @@ -40,7 +40,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudloggk }) // LogIngesterTask is a task that serializes GKE audit logs for storage in the history builder. -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudloggkeapiaudit_contract.LogIngesterTaskID, googlecloudloggkeapiaudit_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudloggkeapiaudit_contract.LogIngesterTaskID, googlecloudloggkeapiaudit_contract.ListLogEntriesTaskID.Ref()) // LogGrouperTask is a task that groups GKE audit logs by their resource path. // This grouping allows for parallel processing of logs related to the same resource. @@ -64,7 +64,7 @@ var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[stru googlecloudinspectiontypegroup_contract.GKEBasedClusterInspectionTypes...), ) -// gkeAuditLogLogToTimelineMapperSetting implements the HistoryModifer interface for GKE audit logs. +// gkeAuditLogLogToTimelineMapperSetting implements the LogToTimelineMapper interface for GKE audit logs. type gkeAuditLogLogToTimelineMapperSetting struct { } diff --git a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go index de469c813..981eef335 100644 --- a/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudloggkeapiaudit/impl/parser_tasks_test.go @@ -266,10 +266,10 @@ func TestLogToTimelineMapperTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.inputAudit, &tc.inputResource) -mapperSetting := &gkeAuditLogLogToTimelineMapperSetting{} + mapperSetting := &gkeAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) - _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) + _, err := mapperSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { t.Errorf("got error %v, want nil", err) } diff --git a/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser.go b/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser.go index 1dff1d690..fdddec250 100644 --- a/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser.go +++ b/pkg/task/inspection/googlecloudloggkeautoscaler/impl/parser.go @@ -38,7 +38,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudloggk &googlecloudloggkeautoscaler_contract.AutoscalerLogFieldSetReader{}, }) -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudloggkeautoscaler_contract.LogIngesterTaskID, googlecloudloggkeautoscaler_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudloggkeautoscaler_contract.LogIngesterTaskID, googlecloudloggkeautoscaler_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudloggkeautoscaler_contract.LogGrouperTaskID, googlecloudloggkeautoscaler_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { diff --git a/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task.go b/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task.go index d95c1e6d8..55743da46 100644 --- a/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task.go +++ b/pkg/task/inspection/googlecloudlogk8scontainer/impl/parser_task.go @@ -31,7 +31,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogk8 &googlecloudlogk8scontainer_contract.K8sContainerLogFieldSetReader{}, }) -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogk8scontainer_contract.LogIngesterTaskID, googlecloudlogk8scontainer_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudlogk8scontainer_contract.LogIngesterTaskID, googlecloudlogk8scontainer_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogk8scontainer_contract.LogGrouperTaskID, googlecloudlogk8scontainer_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { diff --git a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/common_task.go b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/common_task.go index 6b9491aaf..4766575c5 100644 --- a/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/common_task.go +++ b/pkg/task/inspection/googlecloudlogk8scontrolplane/impl/common_task.go @@ -46,4 +46,4 @@ var TailTask = inspectiontaskbase.NewInspectionTask(googlecloudlogk8scontrolplan // LogIngesterTask serializes logs to history for timeline mappers to associate event or revisions in later tasks. // No control plane logs are discarded, thus this LogIngesterTask simply receives logs from the ListLogEntriesTask. -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogk8scontrolplane_contract.LogIngesterTaskID, googlecloudlogk8scontrolplane_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudlogk8scontrolplane_contract.LogIngesterTaskID, googlecloudlogk8scontrolplane_contract.ListLogEntriesTaskID.Ref()) diff --git a/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task.go b/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task.go index 007b0ea55..b61dcbd18 100644 --- a/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task.go +++ b/pkg/task/inspection/googlecloudlogk8sevent/impl/parser_task.go @@ -32,7 +32,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogk8 &googlecloudlogk8sevent_contract.GCPKubernetesEventFieldSetReader{}, }) -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogk8sevent_contract.LogIngesterTaskID, googlecloudlogk8sevent_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudlogk8sevent_contract.LogIngesterTaskID, googlecloudlogk8sevent_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogk8sevent_contract.LogGrouperTaskID, googlecloudlogk8sevent_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { diff --git a/pkg/task/inspection/googlecloudlogk8snode/impl/common_task.go b/pkg/task/inspection/googlecloudlogk8snode/impl/common_task.go index 3d5a83633..170024c09 100644 --- a/pkg/task/inspection/googlecloudlogk8snode/impl/common_task.go +++ b/pkg/task/inspection/googlecloudlogk8snode/impl/common_task.go @@ -31,7 +31,7 @@ import ( // LogIngesterTask serializes logs to history for timeline mappers to associate event or revisions in later tasks. // No node logs are discarded, thus this LogIngesterTask simply receives logs from the ListLogEntriesTask. -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogk8snode_contract.LogIngesterTaskID, googlecloudlogk8snode_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudlogk8snode_contract.LogIngesterTaskID, googlecloudlogk8snode_contract.ListLogEntriesTaskID.Ref()) var CommonFieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogk8snode_contract.CommonFieldsetReaderTaskID, googlecloudlogk8snode_contract.ListLogEntriesTaskID.Ref(), []log.FieldSetReader{ &googlecloudlogk8snode_contract.K8sNodeLogCommonFieldSetReader{ diff --git a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks.go b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks.go index fd89cf7bd..706a72b2e 100644 --- a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks.go @@ -40,7 +40,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogmu }) // LogIngesterTask is a task that serializes MulticloudAPI audit logs for storage in the history builder. -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogmulticloudapiaudit_contract.LogIngesterTaskID, googlecloudlogmulticloudapiaudit_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudlogmulticloudapiaudit_contract.LogIngesterTaskID, googlecloudlogmulticloudapiaudit_contract.ListLogEntriesTaskID.Ref()) // LogGrouperTask is a task that groups MulticloudAPI audit logs by their resource path. // This grouping allows for parallel processing of logs related to the same resource. diff --git a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go index 443a64c17..7b0fe29bd 100644 --- a/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogmulticloudapiaudit/impl/parser_tasks_test.go @@ -300,10 +300,10 @@ func TestLogToTimelineMapperTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.inputAudit, &tc.inputResource) -mapperSetting := &multicloudAuditLogLogToTimelineMapperSetting{} + mapperSetting := &multicloudAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) - _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) + _, err := mapperSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { t.Errorf("got error %v, want nil", err) } diff --git a/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/parser_task.go b/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/parser_task.go index cf405dbf1..2a85a438a 100644 --- a/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/parser_task.go +++ b/pkg/task/inspection/googlecloudlognetworkapiaudit/impl/parser_task.go @@ -40,7 +40,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogne &googlecloudcommon_contract.GCPOperationAuditLogFieldSetReader{}, }) -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlognetworkapiaudit_contract.LogIngesterTaskID, googlecloudlognetworkapiaudit_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudlognetworkapiaudit_contract.LogIngesterTaskID, googlecloudlognetworkapiaudit_contract.ListLogEntriesTaskID.Ref()) var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlognetworkapiaudit_contract.LogGrouperTaskID, googlecloudlognetworkapiaudit_contract.FieldSetReaderTaskID.Ref(), func(ctx context.Context, l *log.Log) string { diff --git a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks.go b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks.go index 221b7f48b..b2772a737 100644 --- a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks.go @@ -40,7 +40,7 @@ var FieldSetReaderTask = inspectiontaskbase.NewFieldSetReadTask(googlecloudlogon }) // LogIngesterTask is a task that serializes MulticloudAPI audit logs for storage in the history builder. -var LogIngesterTask = inspectiontaskbase.NewLogIngester(googlecloudlogonpremapiaudit_contract.LogIngesterTaskID, googlecloudlogonpremapiaudit_contract.ListLogEntriesTaskID.Ref()) +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask(googlecloudlogonpremapiaudit_contract.LogIngesterTaskID, googlecloudlogonpremapiaudit_contract.ListLogEntriesTaskID.Ref()) // LogGrouperTask is a task that groups MulticloudAPI audit logs by their resource path. // This grouping allows for parallel processing of logs related to the same resource. diff --git a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go index d996cb763..5293e8120 100644 --- a/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go +++ b/pkg/task/inspection/googlecloudlogonpremapiaudit/impl/parser_tasks_test.go @@ -376,10 +376,10 @@ func TestLogToTimelineMapperTask(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { l := log.NewLogWithFieldSetsForTest(testCommonFieldSet, &tc.inputAudit, &tc.inputResource) -mapperSetting := &onpremAuditLogLogToTimelineMapperSetting{} + mapperSetting := &onpremAuditLogLogToTimelineMapperSetting{} cs := history.NewChangeSet(l) - _, err := mapperSettingSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) + _, err := mapperSetting.ProcessLogByGroup(t.Context(), l, cs, nil, struct{}{}) if err != nil { t.Errorf("got error %v, want nil", err) } diff --git a/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks.go b/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks.go index aed061657..842c5ffa2 100644 --- a/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks.go +++ b/pkg/task/inspection/googlecloudlogserialport/impl/parser_tasks.go @@ -42,7 +42,7 @@ var LogFilterTask = inspectiontaskbase.NewLogFilterTask(googlecloudlogserialport // LogIngesterTask is the log serializer task for GCE serial port logs. // It includes all logs gathered from log list. -var LogIngesterTask = inspectiontaskbase.NewLogIngester( +var LogIngesterTask = inspectiontaskbase.NewLogIngesterTask( googlecloudlogserialport_contract.LogIngesterTaskID, googlecloudlogserialport_contract.LogFilterTaskID.Ref(), ) From c3441f40d164fc800951472ddd8d201f623a771b Mon Sep 17 00:00:00 2001 From: kyasbal Date: Mon, 15 Dec 2025 13:20:31 +0900 Subject: [PATCH 5/5] Apply suggestions from code review Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal --- pkg/core/inspection/taskbase/logingester_task.go | 2 +- pkg/core/inspection/taskbase/mapper_task.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/core/inspection/taskbase/logingester_task.go b/pkg/core/inspection/taskbase/logingester_task.go index 8cbd04c8e..3b6de03c4 100644 --- a/pkg/core/inspection/taskbase/logingester_task.go +++ b/pkg/core/inspection/taskbase/logingester_task.go @@ -28,7 +28,7 @@ import ( "go.opentelemetry.io/otel/trace" ) -// NewLogIngesterTask returns a task stores its given logs to history to prepare the history type to have ChangeSet associated with the log. +// NewLogIngesterTask returns a task that stores its given logs to history to prepare the history type to have ChangeSet associated with the log. // This must be called before LogToTimelineMapperTask and Logs must be discarded before this task if it shouldn't be included in the result. func NewLogIngesterTask(taskID taskid.TaskImplementationID[[]*log.Log], input taskid.TaskReference[[]*log.Log]) coretask.Task[[]*log.Log] { return NewProgressReportableInspectionTask(taskID, []taskid.UntypedTaskReference{input}, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType, progress *inspectionmetadata.TaskProgressMetadata) ([]*log.Log, error) { diff --git a/pkg/core/inspection/taskbase/mapper_task.go b/pkg/core/inspection/taskbase/mapper_task.go index 9251dd0ee..a1382e731 100644 --- a/pkg/core/inspection/taskbase/mapper_task.go +++ b/pkg/core/inspection/taskbase/mapper_task.go @@ -36,11 +36,11 @@ import ( "go.opentelemetry.io/otel/trace" ) -// LogToTimelineMapper defines the interface for mapping logs to timeline elements(events or revisions). +// LogToTimelineMapper defines the interface for mapping logs to timeline elements (events or revisions). // Implementations of this interface can be used to customize how log data is transformed into timeline elements. -// To process data generated from processing the last log in the same group, the method ProcessLogByGroup receive and return a variable typed T. +// To process data generated from processing the last log in the same group, the method ProcessLogByGroup receives and returns a variable typed T. type LogToTimelineMapper[T any] interface { - // LogIngesterTask is one of prerequiste task of LogToTimelineMapper ingesting logs to history data before processing with this mapper. + // LogIngesterTask is one of prerequisite task of LogToTimelineMapper ingesting logs to history data before processing with this mapper. LogIngesterTask() taskid.TaskReference[[]*log.Log] // Dependencies are the additional references used in timeline mapper. Dependencies() []taskid.UntypedTaskReference