github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/compute/bidstrategy/capacity_max_strategy.go (about)

     1  package bidstrategy
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/filecoin-project/bacalhau/pkg/model"
     7  )
     8  
     9  type MaxCapacityStrategyParams struct {
    10  	MaxJobRequirements model.ResourceUsageData
    11  }
    12  
    13  type MaxCapacityStrategy struct {
    14  	maxJobRequirements model.ResourceUsageData
    15  }
    16  
    17  func NewMaxCapacityStrategy(params MaxCapacityStrategyParams) *MaxCapacityStrategy {
    18  	return &MaxCapacityStrategy{
    19  		maxJobRequirements: params.MaxJobRequirements,
    20  	}
    21  }
    22  
    23  func (s *MaxCapacityStrategy) ShouldBid(ctx context.Context, request BidStrategyRequest) (BidStrategyResponse, error) {
    24  	return newShouldBidResponse(), nil
    25  }
    26  
    27  func (s *MaxCapacityStrategy) ShouldBidBasedOnUsage(
    28  	ctx context.Context, request BidStrategyRequest, usage model.ResourceUsageData) (BidStrategyResponse, error) {
    29  	// skip bidding if we don't have enough capacity available
    30  	if !usage.LessThanEq(s.maxJobRequirements) {
    31  		return BidStrategyResponse{
    32  			ShouldBid: false,
    33  			Reason:    "job requirements exceed max allowed per job",
    34  		}, nil
    35  	}
    36  
    37  	return newShouldBidResponse(), nil
    38  }