Revision e5370111 lib/config.py
b/lib/config.py | ||
---|---|---|
384 | 384 |
_, address, _ = self._temporary_ips.Generate([], gen_one, ec_id) |
385 | 385 |
return address |
386 | 386 |
|
387 |
def _UnlockedReserveIp(self, net_uuid, address, ec_id): |
|
387 |
def _UnlockedReserveIp(self, net_uuid, address, ec_id, check=True):
|
|
388 | 388 |
"""Reserve a given IPv4 address for use by an instance. |
389 | 389 |
|
390 | 390 |
""" |
... | ... | |
392 | 392 |
pool = network.AddressPool(nobj) |
393 | 393 |
try: |
394 | 394 |
isreserved = pool.IsReserved(address) |
395 |
isextreserved = pool.IsReserved(address, external=True) |
|
395 | 396 |
except errors.AddressPoolError: |
396 | 397 |
raise errors.ReservationError("IP address not in network") |
397 | 398 |
if isreserved: |
398 | 399 |
raise errors.ReservationError("IP address already in use") |
400 |
if check and isextreserved: |
|
401 |
raise errors.ReservationError("IP is externally reserved") |
|
399 | 402 |
|
400 | 403 |
return self._temporary_ips.Reserve(ec_id, |
401 | 404 |
(constants.RESERVE_ACTION, |
402 | 405 |
address, net_uuid)) |
403 | 406 |
|
404 | 407 |
@locking.ssynchronized(_config_lock, shared=1) |
405 |
def ReserveIp(self, net_uuid, address, ec_id): |
|
408 |
def ReserveIp(self, net_uuid, address, ec_id, check=True):
|
|
406 | 409 |
"""Reserve a given IPv4 address for use by an instance. |
407 | 410 |
|
408 | 411 |
""" |
409 | 412 |
if net_uuid: |
410 |
return self._UnlockedReserveIp(net_uuid, address, ec_id) |
|
413 |
return self._UnlockedReserveIp(net_uuid, address, ec_id, check)
|
|
411 | 414 |
|
412 | 415 |
@locking.ssynchronized(_config_lock, shared=1) |
413 | 416 |
def ReserveLV(self, lv_name, ec_id): |
Also available in: Unified diff