github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/requester/discovery/store.go (about) 1 package discovery 2 3 import ( 4 "context" 5 6 "github.com/filecoin-project/bacalhau/pkg/model" 7 "github.com/filecoin-project/bacalhau/pkg/requester" 8 "github.com/filecoin-project/bacalhau/pkg/routing" 9 ) 10 11 type StoreNodeDiscovererParams struct { 12 Store routing.NodeInfoStore 13 } 14 15 type StoreNodeDiscoverer struct { 16 store routing.NodeInfoStore 17 } 18 19 func NewStoreNodeDiscoverer(params StoreNodeDiscovererParams) *StoreNodeDiscoverer { 20 return &StoreNodeDiscoverer{ 21 store: params.Store, 22 } 23 } 24 25 // FindNodes returns the nodes that support the job's execution engine, and have enough TOTAL capacity to run the job. 26 func (d *StoreNodeDiscoverer) FindNodes(ctx context.Context, job model.Job) ([]model.NodeInfo, error) { 27 // filter nodes that support the job's engine 28 return d.store.ListForEngine(ctx, job.Spec.Engine) 29 } 30 31 // compile time check that StoreNodeDiscoverer implements NodeDiscoverer 32 var _ requester.NodeDiscoverer = (*StoreNodeDiscoverer)(nil)