github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/compute/bidstrategy/type.go (about) 1 package bidstrategy 2 3 import ( 4 "context" 5 6 "github.com/filecoin-project/bacalhau/pkg/model" 7 ) 8 9 type BidStrategyRequest struct { 10 NodeID string 11 Job model.Job 12 } 13 14 type BidStrategyResponse struct { 15 ShouldBid bool 16 Reason string 17 } 18 19 func newShouldBidResponse() BidStrategyResponse { 20 return BidStrategyResponse{ 21 ShouldBid: true, 22 } 23 } 24 25 type BidStrategy interface { 26 ShouldBid(ctx context.Context, request BidStrategyRequest) (BidStrategyResponse, error) 27 ShouldBidBasedOnUsage(ctx context.Context, request BidStrategyRequest, resourceUsage model.ResourceUsageData) (BidStrategyResponse, error) 28 } 29 30 // the JSON data we send to http or exec probes 31 // TODO: can we just use the BidStrategyRequest struct? 32 type JobSelectionPolicyProbeData struct { 33 NodeID string `json:"node_id"` 34 JobID string `json:"job_id"` 35 Spec model.Spec `json:"spec"` 36 ExecutionPlan model.JobExecutionPlan `json:"execution_plan"` 37 } 38 39 // Return JobSelectionPolicyProbeData for the given request 40 func getJobSelectionPolicyProbeData(request BidStrategyRequest) JobSelectionPolicyProbeData { 41 return JobSelectionPolicyProbeData{ 42 NodeID: request.NodeID, 43 JobID: request.Job.Metadata.ID, 44 Spec: request.Job.Spec, 45 ExecutionPlan: request.Job.Spec.ExecutionPlan, 46 } 47 }