Danielle Tomlinson
3d0a45f6e5
scheduler: Add is_set/is_not_set constraints
...
This adds constraints for asserting that a given attribute or value
exists, or does not exist. This acts as a companion to =, or !=
operators, e.g:
```hcl
constraint {
attribute = "${attrs.type}"
operator = "!="
value = "database"
}
constraint {
attribute = "${attrs.type}"
operator = "is_set"
}
```
2018-11-15 11:00:32 -08:00
Danielle Tomlinson
0925bfe618
scheduler: Allow comparisons of nil values
...
This commit allows the ConstraintChecker to test values that do not exist.
This is useful when wanting to _exclude_ given nodes from executing a
job, for example, if you wanted to give canary nodes an attribute, and
not run critical services on them, you may specify something like the
below, but not want to tag all other nodes with the inverse.
```hcl
constraint {
attribute = "${node.attr.canary}
operator = "!="
value = "1"
}
```
This also requires all constraint checkers to allow for nil target
values, as they will no longer be short circuited by resolving a target.
2018-11-13 13:36:51 -08:00
Alex Dadgar
895fdb79f1
Merge pull request #4867 from hashicorp/b-deployment-progress-deadline
...
Blocked evaluation fixes
2018-11-13 10:29:03 -08:00
Preetha Appan
3a2d5f0178
blank line
2018-11-12 15:50:14 -06:00
Preetha Appan
9f7dfb17a5
Fix logic bug in tracking sum of matched affinity weights
...
We need to track the sum of matching weights per device, but only
change the final return value if its the highest scoring choice
2018-11-12 15:06:45 -06:00
Preetha Appan
eda98fb070
Normalize scores correctly
2018-11-08 17:01:58 -06:00
Preetha Appan
66670c0f02
Fixes device scheduling unit tests
...
Also changes the logic for score when there is more than one task
requesting a device. Since inter task affinities are already normalized,
we take the average of the scores across tasks.
2018-11-08 10:31:19 -06:00
Alex Dadgar
2c6ea24f3c
fix test
2018-11-07 11:59:24 -08:00
Alex Dadgar
ad4c26a1e3
review comments
2018-11-07 11:31:52 -08:00
Alex Dadgar
a36b682cf4
review comments
2018-11-07 10:33:22 -08:00
Alex Dadgar
ea5fd244f6
allocs fit checks if devices get oversubscribed
2018-11-07 10:33:22 -08:00
Alex Dadgar
dcbf9bdbab
Split device accounter and allocator
2018-11-07 10:32:03 -08:00
Alex Dadgar
7ab3ce4bde
affinities
2018-11-07 10:32:03 -08:00
Alex Dadgar
77ad27de60
assign devices
2018-11-07 10:32:03 -08:00
Alex Dadgar
0397cbc8d1
Duplicate blocked evals cancelling improved
...
The old logic for cancelling duplicate blocked evaluations by job id had
the issue where the newer evaluation could have additional node classes
that it is (in)eligible for that we would not capture. This could make
it such that cluster state could change such that the job would make
progress but no evaluation was unblocked.
2018-11-07 10:08:23 -08:00
Preetha Appan
ea5d8cb625
update preemption tests to use new node resource structs
...
also includes a fix to remove unnecessary subtraction of network mbits
2018-11-02 17:59:53 -05:00
Preetha
6aa0c7ffa9
Merge pull request #4794 from hashicorp/f-preemption-systemjobs
...
Preemption for system jobs
2018-11-02 16:28:06 -05:00
Preetha Appan
97cf4e1d7a
Address more minor code review feedback
2018-11-02 16:26:34 -05:00
Preetha Appan
c49a3e20c5
Fix test setup
2018-11-02 16:06:25 -05:00
Preetha Appan
1380acbf56
dereference safely
2018-11-02 15:58:59 -05:00
Preetha Appan
8235919158
Fix static port preemption to be device aware
2018-11-02 13:07:24 -05:00
Preetha Appan
0015095b57
Handle static port preemption when there are multiple devices
...
Also added test case
2018-11-02 09:09:50 -05:00
Preetha Appan
06ad182026
Plumb alloc resource cache in a few more places.
...
also removed now unused method
2018-11-01 16:44:43 -05:00
Preetha Appan
3ad7b3fb5b
More review comments
2018-11-01 16:36:11 -05:00
Preetha Appan
993b6a272a
Cleaner way to exit early, and fixed a couple more places reading from alloc.Resources
2018-11-01 16:15:58 -05:00
Preetha Appan
22d156f5a0
review comments
2018-11-01 12:01:59 -05:00
Preetha Appan
4a35d62887
Fix formatting of allocation score metrics
2018-10-30 12:03:23 -05:00
Preetha Appan
17344a7f3a
Introduce interface with multiple implementations for resource distance
2018-10-30 11:06:32 -05:00
Preetha Appan
35635ba39a
refactor preemption code to use method recievers and setters for common fields
2018-10-30 11:06:32 -05:00
Preetha Appan
4cc21fbcfa
more minor cleanup
2018-10-30 11:06:32 -05:00
Preetha Appan
21432d69dc
More style and readablity fixes from review
2018-10-30 11:06:32 -05:00
Preetha Appan
655689a743
Preempted allocations should be removed from proposed allocations
2018-10-30 11:06:32 -05:00
Preetha Appan
a960cced8c
comments
2018-10-30 11:06:32 -05:00
Preetha Appan
9f35923db0
fix end to end scheduler test to use new resource structs correctly
2018-10-30 11:06:32 -05:00
Preetha Appan
24b393483a
Modify preemption code to use new style of resource structs
2018-10-30 11:06:32 -05:00
Preetha Appan
6966e3c3e8
Make preemption config a struct to allow for enabling based on scheduler type
2018-10-30 11:06:32 -05:00
Preetha Appan
2143fa2ab7
Use scheduler config from state store to enable/disable preemption
2018-10-30 11:06:32 -05:00
Preetha Appan
fd6bff2332
Fix linting and better comments
2018-10-30 11:06:32 -05:00
Preetha Appan
715d869499
Implement preemption for system jobs.
...
This commit implements an allocation selection algorithm for finding
allocations to preempt. It currently special cases network resource asks
from others (cpu/memory/disk/iops).
2018-10-30 11:06:32 -05:00
Preetha Appan
b7de9570e2
Merge branch 'f-fix-resource-type' of github.com:hashicorp/nomad into f-fix-resource-type
2018-10-16 18:30:12 -05:00
Preetha Appan
851bfb2af7
fix linting
2018-10-16 18:29:49 -05:00
Alex Dadgar
5e67b37aad
use int64
2018-10-16 15:34:32 -07:00
Preetha Appan
3ca71ae935
Change CPU/Disk/MemoryMB to int everywhere in new resource structs
2018-10-16 16:21:42 -05:00
Alex Dadgar
9776141240
review comments
2018-10-15 15:31:13 -07:00
Alex Dadgar
ef82a33329
Check constraints on devices
2018-10-14 13:35:47 -07:00
Alex Dadgar
08e0d2502f
rework device checker
2018-10-13 16:47:53 -07:00
Alex Dadgar
670c7e57dc
add to stack
2018-10-13 12:27:49 -07:00
Alex Dadgar
d52130cc4b
Device feasability checker
2018-10-13 12:27:49 -07:00
Preetha Appan
dfc76b3e1f
Fix bug in reconciler where terminal allocs on a job already stopped were unnecessarily updated
2018-10-08 21:03:49 -05:00
Alex Dadgar
e30b20e65e
renames
2018-10-04 14:57:25 -07:00