diff --git a/lib/web/integrations.go b/lib/web/integrations.go index 0ec31a630bd..880c0873069 100644 --- a/lib/web/integrations.go +++ b/lib/web/integrations.go @@ -306,14 +306,25 @@ func collectIntegrationStats(ctx context.Context, req collectIntegrationStatsReq var nextPage string for { - filters := &usertasksv1.ListUserTasksFilters{Integration: req.integration.GetName()} + filters := &usertasksv1.ListUserTasksFilters{ + Integration: req.integration.GetName(), + TaskState: usertasks.TaskStateOpen, + } userTasks, nextToken, err := req.userTasksClient.ListUserTasks(ctx, 0, nextPage, filters) if err != nil { return nil, err } + + ret.UnresolvedUserTasks += len(userTasks) + for _, userTask := range userTasks { - if userTask.GetSpec().GetState() == usertasks.TaskStateOpen { - ret.UnresolvedUserTasks++ + switch userTask.GetSpec().GetTaskType() { + case usertasks.TaskTypeDiscoverEC2: + ret.AWSEC2.UnresolvedUserTasks++ + case usertasks.TaskTypeDiscoverEKS: + ret.AWSEKS.UnresolvedUserTasks++ + case usertasks.TaskTypeDiscoverRDS: + ret.AWSRDS.UnresolvedUserTasks++ } } diff --git a/lib/web/integrations_test.go b/lib/web/integrations_test.go index 206b4c3a577..82612c4219a 100644 --- a/lib/web/integrations_test.go +++ b/lib/web/integrations_test.go @@ -203,9 +203,16 @@ func TestCollectAWSOIDCAutoDiscoverStats(t *testing.T) { } var userTasksList []*usertasksv1.UserTask - for range 10 { - userTasksList = append(userTasksList, &usertasksv1.UserTask{Spec: &usertasksv1.UserTaskSpec{State: usertasks.TaskStateOpen}}) - userTasksList = append(userTasksList, &usertasksv1.UserTask{Spec: &usertasksv1.UserTaskSpec{State: usertasks.TaskStateResolved}}) + ec2UserTasks := 10 + for range ec2UserTasks { + userTasksList = append(userTasksList, &usertasksv1.UserTask{Spec: &usertasksv1.UserTaskSpec{State: usertasks.TaskStateOpen, TaskType: usertasks.TaskTypeDiscoverEC2}}) + } + rdsUserTasks := 20 + for range rdsUserTasks { + userTasksList = append(userTasksList, &usertasksv1.UserTask{Spec: &usertasksv1.UserTaskSpec{State: usertasks.TaskStateOpen, TaskType: usertasks.TaskTypeDiscoverRDS}}) + } + for range 100 { + userTasksList = append(userTasksList, &usertasksv1.UserTask{Spec: &usertasksv1.UserTaskSpec{State: usertasks.TaskStateResolved, TaskType: usertasks.TaskTypeDiscoverEC2}}) } userTasksClient := &mockUserTasksLister{ @@ -229,7 +236,13 @@ func TestCollectAWSOIDCAutoDiscoverStats(t *testing.T) { SubKind: "aws-oidc", AWSOIDC: &ui.IntegrationAWSOIDCSpec{RoleARN: "arn:role"}, }, - UnresolvedUserTasks: 10, + UnresolvedUserTasks: ec2UserTasks + rdsUserTasks, + AWSEC2: ui.ResourceTypeSummary{ + UnresolvedUserTasks: ec2UserTasks, + }, + AWSRDS: ui.ResourceTypeSummary{ + UnresolvedUserTasks: rdsUserTasks, + }, } require.Equal(t, expectedSummary, gotSummary) }) diff --git a/lib/web/ui/integration.go b/lib/web/ui/integration.go index 142105ae323..290b4e784d0 100644 --- a/lib/web/ui/integration.go +++ b/lib/web/ui/integration.go @@ -72,7 +72,7 @@ func (r *IntegrationAWSOIDCSpec) CheckAndSetDefaults() error { type IntegrationWithSummary struct { *Integration // UnresolvedUserTasks contains the count of unresolved user tasks related to this integration. - UnresolvedUserTasks int `json:"unresolvedUserTasks,omitempty"` + UnresolvedUserTasks int `json:"unresolvedUserTasks"` // AWSEC2 contains the summary for the AWS EC2 resources for this integration. AWSEC2 ResourceTypeSummary `json:"awsec2,omitempty"` // AWSRDS contains the summary for the AWS RDS resources and agents for this integration. @@ -98,6 +98,8 @@ type ResourceTypeSummary struct { ResourcesEnrollmentSuccess int `json:"resourcesEnrollmentSuccess,omitempty"` // DiscoverLastSync contains the time when this integration tried to auto-enroll resources. DiscoverLastSync *time.Time `json:"discoverLastSync,omitempty"` + // UnresolvedUserTasks contains the count of unresolved user tasks related to this integration and resource type. + UnresolvedUserTasks int `json:"unresolvedUserTasks"` // ECSDatabaseServiceCount is the total number of DatabaseServices that were deployed into Amazon ECS. // Only applicable for AWS RDS resource summary. ECSDatabaseServiceCount int `json:"ecsDatabaseServiceCount,omitempty"`