Mirror of @tangled.org/core. Running on a Raspberry Pi Zero 2 (Please be gentle).
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

spindle: configure initial set of knots dynamically

Signed-off-by: oppiliappan <me@oppi.li>

+14 -11
+1 -2
spindle/config/config.go
··· 16 16 } 17 17 18 18 type Config struct { 19 - Server Server `env:",prefix=SPINDLE_SERVER_"` 20 - Knots []string `env:"SPINDLE_SUBSCRIBED_KNOTS,required"` 19 + Server Server `env:",prefix=SPINDLE_SERVER_"` 21 20 } 22 21 23 22 func Load(ctx context.Context) (*Config, error) {
+13 -9
spindle/server.go
··· 35 35 eng *engine.Engine 36 36 jq *queue.Queue 37 37 cfg *config.Config 38 + ks *knotclient.EventConsumer 38 39 } 39 40 40 41 func Run(ctx context.Context) error { ··· 83 82 cfg: cfg, 84 83 } 85 84 86 - err = e.AddDomain(rbacDomain) 85 + err = e.AddKnot(rbacDomain) 87 86 if err != nil { 88 87 return fmt.Errorf("failed to set rbac domain: %w", err) 89 88 } ··· 110 109 // for each incoming sh.tangled.pipeline, we execute 111 110 // spindle.processPipeline, which in turn enqueues the pipeline 112 111 // job in the above registered queue. 113 - 114 112 ccfg := knotclient.NewConsumerConfig() 115 113 ccfg.Logger = logger 116 114 ccfg.Dev = cfg.Server.Dev 117 115 ccfg.ProcessFunc = spindle.processPipeline 118 116 ccfg.CursorStore = cursorStore 119 - for _, knot := range spindle.cfg.Knots { 120 - kes := knotclient.NewEventSource(knot) 121 - ccfg.AddEventSource(kes) 117 + knotstream := knotclient.NewEventConsumer(*ccfg) 118 + knownKnots, err := d.Knots() 119 + if err != nil { 120 + return err 122 121 } 123 - ec := knotclient.NewEventConsumer(*ccfg) 122 + for _, knot := range knownKnots { 123 + knotstream.AddSource(ctx, knotclient.NewEventSource(knot)) 124 + } 125 + spindle.ks = knotstream 124 126 125 127 go func() { 126 - logger.Info("starting knot event consumer", "knots", spindle.cfg.Knots) 127 - ec.Start(ctx) 128 + logger.Info("starting knot event consumer", "knots") 129 + knotstream.Start(ctx) 128 130 }() 129 131 130 132 logger.Info("starting spindle server", "address", cfg.Server.ListenAddr) ··· 197 193 } 198 194 199 195 if len(serverOwner) == 0 { 200 - s.e.AddOwner(rbacDomain, cfgOwner) 196 + s.e.AddKnotOwner(rbacDomain, cfgOwner) 201 197 } else { 202 198 if serverOwner[0] != cfgOwner { 203 199 return fmt.Errorf("server owner mismatch: %s != %s", cfgOwner, serverOwner[0])