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)