Let the Reserve button pick another address of the lease's subnet
The Reserve dialog fills in the lease's address but lets it be changed;
POST /leases/{ip}/reserve takes an optional ip, steward lease reserve
takes --ip. The address must be in the lease's subnet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c7a64773a7
commit
1bc9f9f63a
8 files changed
+49
-12
No files matched your search
@@ -36,18 +36,21 @@ function stateBadge(st) {
|
||||
}
|
||||
|
||||
async function reserve(l, done) {
|
||||
const ip = input({ value: l.ip, class: "mono" });
|
||||
const host = input({ value: l.hostname || "", placeholder: "host name (optional)" });
|
||||
const by = select([["both", "MAC address or client ID (either one)"], ["mac", "MAC address only"], ["client_id", "client ID only"]], "both");
|
||||
const err = h("div");
|
||||
await modal("Reserve " + l.ip, h("div", null,
|
||||
h("p", null, (l.mac || "The client") + " keeps " + l.ip + " from now on."),
|
||||
h("div", { class: "form-grid" }, h("label", null, "Host name"), host,
|
||||
h("p", null, (l.mac || "The client") + " keeps this address from now on."),
|
||||
h("div", { class: "form-grid" }, h("label", null, "Address"), ip, h("label"),
|
||||
h("div", { class: "help" }, "Another address of the same subnet moves the client there when it next renews."),
|
||||
h("label", null, "Host name"), host,
|
||||
l.client_id && l.mac ? [h("label", null, "Know it by"), by, h("label"),
|
||||
h("div", { class: "help" }, "It sent the client ID ", h("span", { class: "mono" }, l.client_id), ". With either one, it gets the address whichever system it boots.")] : null), err), [
|
||||
{ label: "Cancel", value: null },
|
||||
{ label: "Reserve", kind: "primary", onclick: async () => {
|
||||
try {
|
||||
await change("POST", "/leases/" + l.ip + "/reserve", { hostname: host.value.trim(), by: l.client_id && l.mac ? by.value : undefined });
|
||||
await change("POST", "/leases/" + l.ip + "/reserve", { ip: ip.value.trim(), hostname: host.value.trim(), by: l.client_id && l.mac ? by.value : undefined });
|
||||
done();
|
||||
return true;
|
||||
} catch (e) {
|
||||
|
||||
Reference in new issue
Block a user