Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
2c66c7e
Blippy: Fix checks now that blueprints have sled subnets
jgallagher Dec 19, 2025
8907245
clippy
jgallagher Dec 19, 2025
82cf685
initial: add last_allocated_ip_subnet_offset to blueprint
jgallagher Dec 17, 2025
ce625ff
use last_allocated_ip_subnet_offset when constructing SledUnderlayIpA…
jgallagher Dec 17, 2025
5b9dd05
schema migration
jgallagher Dec 19, 2025
9450b58
openapi
jgallagher Dec 19, 2025
96e1936
add blippy check for IP above last allocated
jgallagher Dec 19, 2025
8d55a7d
Dave saves ~~Christmas~~ data migrations
jgallagher Dec 19, 2025
61502ee
add check constraint for u16 column
jgallagher Dec 19, 2025
27a7e0d
add LastAllocatedSubnetIpOffset newtype
jgallagher Dec 19, 2025
c6ffc0d
Merge branch 'main' into john/blueprint-sled-next-ip
jgallagher Jan 5, 2026
e8f1b7a
Merge branch 'main' into john/blueprint-sled-next-ip
jgallagher Jan 7, 2026
e300bd0
fix data migration version number after merging main
jgallagher Jan 7, 2026
a1da443
api doc comment
jgallagher Jan 7, 2026
32acbd6
rename the module too...
jgallagher Jan 7, 2026
178e7d3
Merge remote-tracking branch 'origin/main' into john/blueprint-sled-n…
jgallagher Jan 7, 2026
c35d2c8
planner API rework: first pass
jgallagher Dec 16, 2025
21fb0a1
second pass: rework sled editor
jgallagher Dec 17, 2025
c2fbece
update usage in other tests
jgallagher Jan 7, 2026
e02250e
comments
jgallagher Jan 7, 2026
0ffa4a3
Merge branch 'main' into john/planner-expunged-reason
jgallagher Jan 8, 2026
e77eee4
Merge branch 'main' into john/planner-expunged-reason
jgallagher Jan 9, 2026
a762e8a
minor fixups from bad merge
jgallagher Jan 9, 2026
f65fbab
Merge remote-tracking branch 'origin/main' into john/planner-expunged…
jgallagher Jan 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions dev-tools/reconfigurator-cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,16 @@ use nexus_reconfigurator_simulation::{
};
use nexus_reconfigurator_simulation::{SimStateBuilder, SimTufRepoSource};
use nexus_reconfigurator_simulation::{SimTufRepoDescription, Simulator};
use nexus_types::deployment::execution;
use nexus_types::deployment::ExpectedVersion;
use nexus_types::deployment::execution::blueprint_external_dns_config;
use nexus_types::deployment::execution::blueprint_internal_dns_config;
use nexus_types::deployment::{Blueprint, UnstableReconfiguratorState};
use nexus_types::deployment::{BlueprintArtifactVersion, PendingMgsUpdate};
use nexus_types::deployment::{BlueprintExpungedZoneAccessReason, execution};
use nexus_types::deployment::{
BlueprintHostPhase2DesiredContents, PlannerConfig,
};
use nexus_types::deployment::{BlueprintSource, SledFilter};
use nexus_types::deployment::{BlueprintZoneDisposition, ExpectedVersion};
use nexus_types::deployment::{
BlueprintZoneImageSource, PendingMgsUpdateDetails,
};
Expand Down Expand Up @@ -2766,9 +2766,12 @@ fn sled_with_zone(
) -> anyhow::Result<SledUuid> {
let mut parent_sled_id = None;

for sled_id in builder.sled_ids_with_zones() {
for sled_id in builder.current_commissioned_sleds() {
if builder
.current_sled_zones(sled_id, BlueprintZoneDisposition::any)
.current_in_service_and_expunged_sled_zones(
sled_id,
BlueprintExpungedZoneAccessReason::ReconfiguratorCli,
)
.any(|z| z.id == *zone_id)
{
parent_sled_id = Some(sled_id);
Expand Down
11 changes: 4 additions & 7 deletions live-tests/tests/test_nexus_add_remove.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,8 @@ async fn test_nexus_add_remove(lc: &LiveTestContext) {
let (image_source, nexus_generation) = commissioned_sled_ids
.iter()
.find_map(|&sled_id| {
builder
.current_sled_zones(
sled_id,
BlueprintZoneDisposition::is_in_service,
)
.find_map(|zone| {
builder.current_in_service_sled_zones(sled_id).find_map(
|zone| {
if let BlueprintZoneType::Nexus(
blueprint_zone_type::Nexus {
nexus_generation,
Expand All @@ -113,7 +109,8 @@ async fn test_nexus_add_remove(lc: &LiveTestContext) {
} else {
None
}
})
},
)
})
.context(
"could not find in-service Nexus in parent blueprint",
Expand Down
9 changes: 3 additions & 6 deletions nexus/db-queries/src/db/datastore/deployment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3111,7 +3111,6 @@ mod tests {
use nexus_types::deployment::BlueprintHostPhase2DesiredContents;
use nexus_types::deployment::BlueprintHostPhase2DesiredSlots;
use nexus_types::deployment::BlueprintPhysicalDiskDisposition;
use nexus_types::deployment::BlueprintZoneDisposition;
use nexus_types::deployment::BlueprintZoneImageSource;
use nexus_types::deployment::ExpectedActiveRotSlot;
use nexus_types::deployment::PendingMgsUpdate;
Expand Down Expand Up @@ -3532,10 +3531,7 @@ mod tests {
// Take the first two zones and set their image sources.
{
let zone_ids: Vec<OmicronZoneUuid> = builder
.current_sled_zones(
new_sled_id,
BlueprintZoneDisposition::is_in_service,
)
.current_in_service_sled_zones(new_sled_id)
.map(|zone| zone.id)
.take(2)
.collect();
Expand Down Expand Up @@ -3577,7 +3573,8 @@ mod tests {
// 3. both slots set to a known version
// 4. slot_a set to a known version; slot b set to an unknown version
{
let sled_ids = builder.sled_ids_with_zones().collect::<Vec<_>>();
let sled_ids =
builder.current_commissioned_sleds().collect::<Vec<_>>();
assert!(sled_ids.len() >= 4, "at least 4 sleds");

let host_phase_2_samples = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1503,7 +1503,7 @@ mod tests {
.expect("created builder");

let to_expunge = builder
.current_zones(BlueprintZoneDisposition::is_in_service)
.current_in_service_zones()
.filter_map(|(sled_id, zone)| {
if zone.zone_type.is_external_dns() {
Some((sled_id, zone.id))
Expand Down
Loading
Loading