Revision c12401f2 lib/network.py
b/lib/network.py | ||
---|---|---|
112 | 112 |
self.reservations[idx] = value |
113 | 113 |
self.Update() |
114 | 114 |
|
115 |
def _GetSize(self): |
|
116 |
return 2 ** (32 - self.network.prefixlen) |
|
117 |
|
|
118 | 115 |
@property |
119 | 116 |
def all_reservations(self): |
120 | 117 |
"""Return a combined map of internal and external reservations. |
... | ... | |
123 | 120 |
return (self.reservations | self.ext_reservations) |
124 | 121 |
|
125 | 122 |
def Validate(self): |
126 |
assert len(self.reservations) == self._GetSize()
|
|
127 |
assert len(self.ext_reservations) == self._GetSize()
|
|
123 |
assert len(self.reservations) == self.network.numhosts
|
|
124 |
assert len(self.ext_reservations) == self.network.numhosts
|
|
128 | 125 |
all_res = self.reservations & self.ext_reservations |
129 | 126 |
assert not all_res.any() |
130 | 127 |
|
... | ... | |
181 | 178 |
""" |
182 | 179 |
self._Mark(address, value=False, external=external) |
183 | 180 |
|
184 |
def GetFreeAddress(self): |
|
185 |
"""Returns the first available address. |
|
186 |
|
|
187 |
""" |
|
188 |
if self.IsFull(): |
|
189 |
raise errors.AddressPoolError("%s is full" % self.network) |
|
190 |
|
|
191 |
idx = self.all_reservations.index(False) |
|
192 |
address = str(self.network[idx]) |
|
193 |
self.Reserve(address) |
|
194 |
return address |
|
195 |
|
|
196 | 181 |
def GenerateFree(self): |
197 | 182 |
"""Returns the first free address of the network. |
198 | 183 |
|
Also available in: Unified diff