From 0a99ec751cca165d9c4f31887c6672089f41c92c Mon Sep 17 00:00:00 2001 From: Zach Wasserman Date: Wed, 9 Jun 2021 18:56:57 -0700 Subject: [PATCH] Fix targeting Teams in live queries (#1043) Properly handle the `TargetTeam` type, allowing live queries to successfully execute against Teams. Part of #1022 --- server/datastore/mysql/campaigns.go | 9 ++++++--- server/service/service_campaigns.go | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/server/datastore/mysql/campaigns.go b/server/datastore/mysql/campaigns.go index 84661db00f..2f7f0dc0c9 100644 --- a/server/datastore/mysql/campaigns.go +++ b/server/datastore/mysql/campaigns.go @@ -76,11 +76,14 @@ func (d *Datastore) DistributedQueryCampaignTargetIDs(id uint) (*fleet.HostTarge labelIDs := []uint{} teamIDs := []uint{} for _, target := range targets { - if target.Type == fleet.TargetHost { + switch target.Type { + case fleet.TargetHost: hostIDs = append(hostIDs, target.TargetID) - } else if target.Type == fleet.TargetLabel { + case fleet.TargetLabel: labelIDs = append(labelIDs, target.TargetID) - } else { + case fleet.TargetTeam: + teamIDs = append(teamIDs, target.TargetID) + default: return nil, errors.Errorf("invalid target type: %d", target.Type) } } diff --git a/server/service/service_campaigns.go b/server/service/service_campaigns.go index 2e510a9472..85315e557b 100644 --- a/server/service/service_campaigns.go +++ b/server/service/service_campaigns.go @@ -109,11 +109,11 @@ func (svc Service) NewDistributedQueryCampaign(ctx context.Context, queryString } // Add team targets - for _, lid := range targets.TeamIDs { + for _, tid := range targets.TeamIDs { _, err = svc.ds.NewDistributedQueryCampaignTarget(&fleet.DistributedQueryCampaignTarget{ Type: fleet.TargetTeam, DistributedQueryCampaignID: campaign.ID, - TargetID: lid, + TargetID: tid, }) if err != nil { return nil, errors.Wrap(err, "adding team target")