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