Skip to content

Commit 6bb2b69

Browse files
committed
rework interfaces for runner change detection
1 parent dbb618a commit 6bb2b69

File tree

7 files changed

+58
-13
lines changed

7 files changed

+58
-13
lines changed

cmd/launcher/launcher.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ func runLauncher(ctx context.Context, cancel func(), multiSlogger, systemMultiSl
373373
osqueryruntime.WithAugeasLensFunction(augeas.InstallLenses),
374374
)
375375
runGroup.Add("osqueryRunner", osqueryRunner.Run, osqueryRunner.Interrupt)
376-
k.SetInstanceQuerier(osqueryRunner)
376+
k.SetInstanceRunner(osqueryRunner)
377377

378378
versionInfo := version.Version()
379379
k.SystemSlogger().Log(ctx, slog.LevelInfo,

ee/agent/knapsack/knapsack.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ type knapsack struct {
3939

4040
slogger, systemSlogger *multislogger.MultiSlogger
4141

42-
querier types.InstanceQuerier
42+
osqRunner types.OsqRunner
4343

4444
// This struct is a work in progress, and will be iteratively added to as needs arise.
4545
}
@@ -87,23 +87,31 @@ func (k *knapsack) AddSlogHandler(handler ...slog.Handler) {
8787
k.systemSlogger.AddHandler(handler...)
8888
}
8989

90-
// Osquery instance querier
91-
func (k *knapsack) SetInstanceQuerier(q types.InstanceQuerier) {
92-
k.querier = q
90+
// Osquery instance runner
91+
func (k *knapsack) SetInstanceRunner(r types.OsqRunner) {
92+
k.osqRunner = r
9393
}
9494

9595
// RegistrationTracker interface methods
9696
func (k *knapsack) RegistrationIDs() []string {
9797
return []string{types.DefaultRegistrationID}
9898
}
9999

100+
func (k *knapsack) SetRegistrationIDs(registrationIDs []string) error {
101+
if k.osqRunner == nil {
102+
return nil
103+
}
104+
105+
return k.osqRunner.UpdateRegistrationIDs(registrationIDs)
106+
}
107+
100108
// InstanceStatuses returns the current status of each osquery instance.
101109
// It performs a healthcheck against each existing instance.
102110
func (k *knapsack) InstanceStatuses() map[string]types.InstanceStatus {
103-
if k.querier == nil {
111+
if k.osqRunner == nil {
104112
return nil
105113
}
106-
return k.querier.InstanceStatuses()
114+
return k.osqRunner.InstanceStatuses()
107115
}
108116

109117
// BboltDB interface methods

ee/agent/types/knapsack.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type Knapsack interface {
1111
Slogger
1212
RegistrationTracker
1313
InstanceQuerier
14-
SetInstanceQuerier(q InstanceQuerier)
14+
SetInstanceRunner(r OsqRunner)
1515
// LatestOsquerydPath finds the path to the latest osqueryd binary, after accounting for updates.
1616
LatestOsquerydPath(ctx context.Context) string
1717
// ReadEnrollSecret returns the enroll secret value, checking in various locations.

ee/agent/types/mocks/knapsack.go

Lines changed: 22 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ee/agent/types/registration.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ const (
99
// data may be provided by e.g. a control server subsystem.
1010
type RegistrationTracker interface {
1111
RegistrationIDs() []string
12-
}
12+
SetRegistrationIDs(registrationIDs []string) error
13+
}

ee/agent/types/runner.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package types
2+
3+
type (
4+
// RegistrationChangeHandler is implemented by pkg/osquery/runtime/runner.go
5+
RegistrationChangeHandler interface {
6+
UpdateRegistrationIDs(registrationIDs []string) error
7+
}
8+
9+
OsqRunner interface {
10+
RegistrationChangeHandler
11+
InstanceQuerier
12+
}
13+
)

pkg/osquery/runtime/runner.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,3 +333,8 @@ func (r *Runner) InstanceStatuses() map[string]types.InstanceStatus {
333333

334334
return instanceStatuses
335335
}
336+
337+
func (r *Runner) UpdateRegistrationIDs(registrationIDs []string) error {
338+
// TODO: detect any difference in reg IDs and shut down/spin up instances accordingly
339+
return nil
340+
}

0 commit comments

Comments
 (0)