open-nomad/scheduler
Michael Schurter 3e50f72fad
core: merge reserved_ports into host_networks (#13651)
Fixes #13505

This fixes #13505 by treating reserved_ports like we treat a lot of jobspec settings: merging settings from more global stanzas (client.reserved.reserved_ports) "down" into more specific stanzas (client.host_networks[].reserved_ports).

As discussed in #13505 there are other options, and since it's totally broken right now we have some flexibility:

Treat overlapping reserved_ports on addresses as invalid and refuse to start agents. However, I'm not sure there's a cohesive model we want to publish right now since so much 0.9-0.12 compat code still exists! We would have to explain to folks that if their -network-interface and host_network addresses overlapped, they could only specify reserved_ports in one place or the other?! It gets ugly.
Use the global client.reserved.reserved_ports value as the default and treat host_network[].reserverd_ports as overrides. My first suggestion in the issue, but @groggemans made me realize the addresses on the agent's interface (as configured by -network-interface) may overlap with host_networks, so you'd need to remove the global reserved_ports from addresses shared with a shared network?! This seemed really confusing and subtle for users to me.
So I think "merging down" creates the most expressive yet understandable approach. I've played around with it a bit, and it doesn't seem too surprising. The only frustrating part is how difficult it is to observe the available addresses and ports on a node! However that's a job for another PR.
2022-07-12 14:40:25 -07:00
..
benchmarks snapshot restore-from-archive streaming and filtering (#13658) 2022-07-11 10:48:00 -04:00
annotate.go scheduler: label loops with nested switch statements for effective break (#8528) 2020-07-24 08:50:41 -04:00
annotate_test.go ci: swap ci parallelization for unconstrained gomaxprocs 2022-03-15 12:58:52 -05:00
context.go scheduler: detect and log unexpected scheduling collisions (#11793) 2022-01-14 20:09:14 -05:00
context_test.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
device.go
device_test.go ci: swap ci parallelization for unconstrained gomaxprocs 2022-03-15 12:58:52 -05:00
feasible.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
feasible_test.go ci: swap ci parallelization for unconstrained gomaxprocs 2022-03-15 12:58:52 -05:00
generic_sched.go system_scheduler: support disconnected clients (#12555) 2022-04-15 09:31:32 -04:00
generic_sched_test.go CSI: no early return when feasibility check fails on eligible nodes (#13274) 2022-06-07 13:31:10 -04:00
preemption.go
preemption_test.go ci: swap ci parallelization for unconstrained gomaxprocs 2022-03-15 12:58:52 -05:00
propertyset.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
rank.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
rank_test.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
reconcile.go reconciler: Handle canaries when client disconnects (#12539) 2022-04-21 10:05:58 -04:00
reconcile_test.go reconciler: Handle canaries when client disconnects (#12539) 2022-04-21 10:05:58 -04:00
reconcile_util.go core: reschedule evicted batch job when resources become available 2022-06-02 14:04:13 -05:00
reconcile_util_test.go core: reschedule evicted batch job when resources become available 2022-06-02 14:04:13 -05:00
scheduler.go disconnected clients: ensure servers meet minimum required version (#12202) 2022-04-05 17:12:23 -04:00
scheduler_oss.go gofmt all the files 2021-10-01 10:14:28 -04:00
scheduler_sysbatch_test.go ci: swap ci parallelization for unconstrained gomaxprocs 2022-03-15 12:58:52 -05:00
scheduler_system.go system_scheduler: support disconnected clients (#12555) 2022-04-15 09:31:32 -04:00
scheduler_system_test.go system_scheduler: support disconnected clients (#12555) 2022-04-15 09:31:32 -04:00
select.go chore: fix incorrect docstring formatting. 2021-08-30 11:08:12 +02:00
select_test.go ci: swap ci parallelization for unconstrained gomaxprocs 2022-03-15 12:58:52 -05:00
spread.go scheduler: prevent panic in spread iterator during alloc stop 2022-02-09 19:53:06 -05:00
spread_test.go ci: swap ci parallelization for unconstrained gomaxprocs 2022-03-15 12:58:52 -05:00
stack.go scheduler: seed random shuffle nodes with eval ID (#12008) 2022-02-08 12:16:33 -05:00
stack_oss.go chore: ensure consistent file naming for non-enterprise files. 2022-01-13 11:32:16 +01:00
stack_test.go ci: swap ci parallelization for unconstrained gomaxprocs 2022-03-15 12:58:52 -05:00
testing.go disconnected clients: ensure servers meet minimum required version (#12202) 2022-04-05 17:12:23 -04:00
util.go scheduler: volume updates should always be destructive (#13008) 2022-05-13 11:34:04 -04:00
util_test.go scheduler: volume updates should always be destructive (#13008) 2022-05-13 11:34:04 -04:00