34 lines
912 B
Go
34 lines
912 B
Go
|
package api
|
||
|
|
||
|
// Constraint is used to serialize a job placement constraint.
|
||
|
type Constraint struct {
|
||
|
Hard bool
|
||
|
LTarget string
|
||
|
RTarget string
|
||
|
Operand string
|
||
|
Weight int
|
||
|
}
|
||
|
|
||
|
// HardConstraint is used to create a new hard constraint.
|
||
|
func HardConstraint(left, operand, right string) *Constraint {
|
||
|
return constraint(left, operand, right, true, 0)
|
||
|
}
|
||
|
|
||
|
// SoftConstraint is used to create a new soft constraint. It
|
||
|
// takes an additional weight parameter to allow balancing
|
||
|
// multiple soft constraints amongst eachother.
|
||
|
func SoftConstraint(left, operand, right string, weight int) *Constraint {
|
||
|
return constraint(left, operand, right, false, weight)
|
||
|
}
|
||
|
|
||
|
// constraint generates a new job placement constraint.
|
||
|
func constraint(left, operand, right string, hard bool, weight int) *Constraint {
|
||
|
return &Constraint{
|
||
|
Hard: hard,
|
||
|
LTarget: left,
|
||
|
RTarget: right,
|
||
|
Operand: operand,
|
||
|
Weight: weight,
|
||
|
}
|
||
|
}
|