Fix errors when overwriting DHCP leases
Ensure we remove any existing leases for the MAC first, before adding a new entry for that MAC. Otherwise what dnsmasq returns will not be valid and this can cause CloudInit bootstrap errors.
This commit is contained in:
@@ -130,6 +130,8 @@ def read_lease_database(zk_conn, zk_leases_key):
|
|||||||
def add_lease(zk_conn, zk_leases_key, expiry, macaddr, ipaddr, hostname, clientid):
|
def add_lease(zk_conn, zk_leases_key, expiry, macaddr, ipaddr, hostname, clientid):
|
||||||
if not hostname:
|
if not hostname:
|
||||||
hostname = ""
|
hostname = ""
|
||||||
|
try:
|
||||||
|
zk_conn.delete("{}/{}".format(zk_leases_key, macaddr), recursive=True)
|
||||||
transaction = zk_conn.transaction()
|
transaction = zk_conn.transaction()
|
||||||
transaction.create("{}/{}".format(zk_leases_key, macaddr), "".encode("ascii"))
|
transaction.create("{}/{}".format(zk_leases_key, macaddr), "".encode("ascii"))
|
||||||
transaction.create(
|
transaction.create(
|
||||||
@@ -145,6 +147,8 @@ def add_lease(zk_conn, zk_leases_key, expiry, macaddr, ipaddr, hostname, clienti
|
|||||||
"{}/{}/clientid".format(zk_leases_key, macaddr), clientid.encode("ascii")
|
"{}/{}/clientid".format(zk_leases_key, macaddr), clientid.encode("ascii")
|
||||||
)
|
)
|
||||||
transaction.commit()
|
transaction.commit()
|
||||||
|
except Exception as e:
|
||||||
|
print(f"FATAL: {e}")
|
||||||
|
|
||||||
|
|
||||||
def del_lease(zk_conn, zk_leases_key, macaddr, expiry):
|
def del_lease(zk_conn, zk_leases_key, macaddr, expiry):
|
||||||
|
|||||||
Reference in New Issue
Block a user