Skip to content

Commit 063828b

Browse files
authored
cap number of repo depot backends (#9176)
1 parent dea2d6f commit 063828b

File tree

4 files changed

+22
-8
lines changed

4 files changed

+22
-8
lines changed

dev-tools/reconfigurator-cli/tests/output/cmds-noop-image-source-stdout

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1
510510

511511
internal DNS:
512512
DNS zone: "control-plane.oxide.internal" (unchanged)
513-
unchanged names: 53 (records: 76)
513+
unchanged names: 53 (records: 75)
514514

515515
external DNS:
516516
DNS zone: "oxide.example" (unchanged)

dev-tools/reconfigurator-cli/tests/output/cmds-set-remove-mupdate-override-stdout

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,7 @@ internal DNS:
666666
- AAAA fd00:1122:3344:107::22
667667
- name: c800ba17-240e-4b72-8ae6-afc30b6baa96.host (records: 1)
668668
- AAAA fd00:1122:3344:107::21
669-
unchanged names: 52 (records: 70)
669+
unchanged names: 52 (records: 69)
670670

671671
external DNS:
672672
DNS zone: "oxide.example" (unchanged)
@@ -1015,7 +1015,7 @@ to: blueprint ce365dff-2cdb-4f35-a186-b15e20e1e700
10151015

10161016
internal DNS:
10171017
DNS zone: "control-plane.oxide.internal" (unchanged)
1018-
unchanged names: 53 (records: 76)
1018+
unchanged names: 53 (records: 75)
10191019

10201020
external DNS:
10211021
DNS zone: "oxide.example" (unchanged)

dev-tools/reconfigurator-cli/tests/output/cmds-unsafe-zone-mgs-stdout

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ target release (generation 2): 0.0.1 (system-update-v0.0.1.zip)
9292
artifact: 7776db817d1f1b1a2f578050742e33bd4e805a4c76f36bce84dcb509b900249c switch_rot_image_b (fake-switch-rot version 0.0.1)
9393
artifact: 0686443d50db2247077dc70b6543cea9a90a9792de00e06c06cff4c91fa5a4a8 switch_rot_bootloader (fake-switch-rot-bootloader version 0.0.1)
9494
artifact: 657aaebc9c2f451446af0411a67a4bd057f39fa1b8a7fdc429ca4a2facd9344c installinator_document (installinator_document version 0.0.1)
95+
active nexus zone generation: 1
96+
active nexus zones: inferred from generation
97+
not-yet nexus zones: inferred from generation
9598
planner config:
9699
add zones with mupdate override: false
97100

nexus/types/src/deployment/execution/dns.rs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,18 +171,29 @@ pub fn blueprint_internal_dns_config(
171171
// replicated synchronously or atomically to all instances. That is: a
172172
// consumer should be careful when fetching an artifact about whether they
173173
// really can just pick any backend of this service or not.
174+
//
175+
// We currently limit the repo depot backends to keep us under current DNS
176+
// limits. See oxidecomputer/omicron#6342. This number is chosen somewhat
177+
// arbitrarily: it's small enough to fit under the DNS limit, but enough
178+
// to give some redundancy. We're implicitly assuming iteration over
179+
// `sleds_by_id` will be stable so that we're not thrashing on the DNS
180+
// names.
181+
let mut nrepo_depots = 6;
174182
for sled in sleds_by_id {
175183
if !sled.policy().matches(SledFilter::TufArtifactReplication) {
176184
continue;
177185
}
178186

179187
let dns_sled = dns_builder
180188
.host_sled(sled.id(), *sled.sled_agent_address().ip())?;
181-
dns_builder.service_backend_sled(
182-
ServiceName::RepoDepot,
183-
&dns_sled,
184-
sled.repo_depot_address().port(),
185-
)?;
189+
if nrepo_depots > 0 {
190+
dns_builder.service_backend_sled(
191+
ServiceName::RepoDepot,
192+
&dns_sled,
193+
sled.repo_depot_address().port(),
194+
)?;
195+
nrepo_depots -= 1;
196+
}
186197
}
187198

188199
Ok(dns_builder.build_zone())

0 commit comments

Comments
 (0)