Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8e6ce32

Browse files
committed
satellite/modular: modular satellite supports auditor subcommand
Change-Id: I52b8b66c020c2dfa3a8c0d0091a34a561d2e3851
1 parent f5ca234 commit 8e6ce32

File tree

5 files changed

+52
-1
lines changed

5 files changed

+52
-1
lines changed

satellite/audit/mud.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ func Module(ball *mud.Ball) {
2121
mud.Provide[*Verifier](ball, func(log *zap.Logger, metabase *metabase.DB, dialer rpc.Dialer, overlay *overlay.Service, containment Containment, orders *orders.Service, id *identity.FullIdentity, cfg Config) *Verifier {
2222
return NewVerifier(log, metabase, dialer, overlay, containment, orders, id, cfg.MinBytesPerSecond, cfg.MinDownloadTimeout)
2323
})
24-
24+
mud.Provide[*Worker](ball, NewWorker)
25+
mud.Provide[*ReverifyWorker](ball, NewReverifyWorker)
26+
mud.Provide[*Reverifier](ball, NewReverifier)
2527
// TODO: we need real containment for running service.
2628
mud.Provide[Containment](ball, func() Containment {
2729
return &noContainment{}

satellite/mud.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ func Module(ball *mud.Ball) {
129129
})
130130
mud.Tag[audit.Reporter, mud.Nullable](ball, mud.Nullable{})
131131
mud.Tag[audit.Reporter, mud.Optional](ball, mud.Optional{})
132+
mud.View[DB, audit.ReverifyQueue](ball, DB.ReverifyQueue)
133+
mud.View[DB, audit.VerifyQueue](ball, DB.VerifyQueue)
132134

133135
mud.View[*identity.FullIdentity, signing.Signee](ball, func(fullIdentity *identity.FullIdentity) signing.Signee {
134136
return signing.SigneeFromPeerIdentity(fullIdentity.PeerIdentity())

satellite/run/auditor.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright (C) 2025 Storj Labs, Inc.
2+
// See LICENSE for copying information.
3+
4+
package root
5+
6+
import (
7+
"storj.io/storj/satellite/audit"
8+
"storj.io/storj/shared/debug"
9+
"storj.io/storj/shared/mud"
10+
)
11+
12+
// Auditor is a subcommand to start only Auditor services.
13+
type Auditor struct {
14+
}
15+
16+
// GetSelector implements mud.ComponentSelectorProvider.
17+
func (a *Auditor) GetSelector(ball *mud.Ball) mud.ComponentSelector {
18+
return mud.Or(
19+
mud.Select[debug.Wrapper](ball),
20+
mud.Select[*audit.Worker](ball),
21+
mud.Select[*audit.ReverifyWorker](ball))
22+
23+
}

satellite/run/mud.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"storj.io/storj/satellite/satellitedb"
99
trustmud "storj.io/storj/satellite/trust/mud"
1010
"storj.io/storj/shared/modular"
11+
"storj.io/storj/shared/modular/cli"
1112
"storj.io/storj/shared/modular/logger"
1213
"storj.io/storj/shared/mud"
1314
)
@@ -20,4 +21,9 @@ func Module(ball *mud.Ball) {
2021
satellite.Module(ball)
2122
trustmud.Module(ball)
2223
mud.Provide[*modular.MonkitReport](ball, modular.NewMonkitReport)
24+
25+
mud.Provide[*Auditor](ball, func() *Auditor {
26+
return &Auditor{}
27+
})
28+
cli.RegisterSubcommand[*Auditor](ball, "auditor", "run the auditor service")
2329
}

shared/modular/cli/mudrunner.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"fmt"
99
"os"
1010
"os/signal"
11+
"reflect"
1112

1213
"github.com/zeebo/clingy"
1314

@@ -92,6 +93,18 @@ func clingyRunner(cfg *ConfigSupport, ball *mud.Ball) func(cmds clingy.Commands)
9293
cmdSelector := func(c *mud.Component) bool {
9394
return c == component
9495
}
96+
97+
// A specific case when the component implements SelectorOverride interface.
98+
// In this case we call it for the real components to run, instead of just using the Run (what we usually do for tool subcommands).
99+
selectorOverrideType := reflect.TypeOf((*SelectorOverride)(nil)).Elem()
100+
if component.GetTarget().Implements(selectorOverrideType) {
101+
err := component.Init(context.Background())
102+
if err != nil {
103+
panic(err)
104+
}
105+
cmdSelector = component.Instance().(SelectorOverride).GetSelector(ball)
106+
}
107+
95108
cmds.New(sc.Name, sc.Description, &MudCommand{
96109
ball: ball,
97110
selector: cmdSelector,
@@ -104,3 +117,8 @@ func clingyRunner(cfg *ConfigSupport, ball *mud.Ball) func(cmds clingy.Commands)
104117
}
105118
}
106119
}
120+
121+
// SelectorOverride is an interface for components that can override the selector used in the command (instead of executing Run).
122+
type SelectorOverride interface {
123+
GetSelector(ball *mud.Ball) mud.ComponentSelector
124+
}

0 commit comments

Comments
 (0)