diff --git a/ipam/allocator.go b/ipam/allocator.go index d708702a..e95e01bb 100644 --- a/ipam/allocator.go +++ b/ipam/allocator.go @@ -917,6 +917,11 @@ func (alloc *Allocator) loadPersistedData() bool { return false } + if persistedRing.Range() != alloc.universe { + overwritePersisted("Deleting persisted data for IPAM range %s; our range is %s", persistedRing.Range(), alloc.universe) + return false + } + alloc.ring = persistedRing alloc.space.UpdateRanges(alloc.ring.OwnedRanges()) diff --git a/test/362_ipalloc_range_change.sh b/test/362_ipalloc_range_change.sh new file mode 100755 index 00000000..d7fab65a --- /dev/null +++ b/test/362_ipalloc_range_change.sh @@ -0,0 +1,14 @@ +#! /bin/bash + +. ./config.sh + +start_suite "IPAM alloc range change" + +weave_on $HOST1 launch --ipalloc-range 10.2.0.0/16 +weave_on $HOST1 prime +weave_on $HOST1 stop +weave_on $HOST1 launch --ipalloc-range 10.3.0.0/16 +# Ensure allocations can proceed +assert_raises "timeout 10 cat <( start_container $HOST1 )" + +end_suite