mirror of https://github.com/aredn/aredn.git
Fix migration of services on nodes without any services (#1660)
* Fix migration of services on nodes without any services * Correctly handle first creation and last deletion.
This commit is contained in:
parent
da9417a512
commit
1a49da92ea
|
@ -37,7 +37,15 @@ if (request.env.REQUEST_METHOD === "PUT") {
|
||||||
configuration.prepareChanges();
|
configuration.prepareChanges();
|
||||||
if ("services" in request.args) {
|
if ("services" in request.args) {
|
||||||
const services = json(request.args.services);
|
const services = json(request.args.services);
|
||||||
uciMesh.set("setup", "services", "service", services);
|
if (!uciMesh.get("setup", "services")) {
|
||||||
|
uciMesh.set("setup", "services", "services");
|
||||||
|
}
|
||||||
|
if (length(services)) {
|
||||||
|
uciMesh.set("setup", "services", "service", services);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
uciMesh.delete("setup", "services", "service");
|
||||||
|
}
|
||||||
uciMesh.commit("setup");
|
uciMesh.commit("setup");
|
||||||
}
|
}
|
||||||
if ("aliases" in request.args) {
|
if ("aliases" in request.args) {
|
||||||
|
@ -108,7 +116,7 @@ const ae = iptoarr(dhcp.end);
|
||||||
const reService = regexp("^([^|]+)\\|1\\|([^|]+)\\|([^|]+)\\|(\\d+)\\|(.*)$");
|
const reService = regexp("^([^|]+)\\|1\\|([^|]+)\\|([^|]+)\\|(\\d+)\\|(.*)$");
|
||||||
const reLink = regexp("^([^|]+)\\|0\\|\\|([^|]+)\\|\\|$");
|
const reLink = regexp("^([^|]+)\\|0\\|\\|([^|]+)\\|\\|$");
|
||||||
const reType = regexp("^(.+) \\[([a-z]+)\\]$");
|
const reType = regexp("^(.+) \\[([a-z]+)\\]$");
|
||||||
const svcs = uciMesh.get("setup", "services", "service");
|
const svcs = uciMesh.get("setup", "services", "service") || [];
|
||||||
for (let i = 0; i < length(svcs); i++) {
|
for (let i = 0; i < length(svcs); i++) {
|
||||||
const l = trim(svcs[i]);
|
const l = trim(svcs[i]);
|
||||||
const v = match(l, reService);
|
const v = match(l, reService);
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
}
|
}
|
||||||
f.close();
|
f.close();
|
||||||
}
|
}
|
||||||
const svcs = uciMesh.get("setup", "services", "service");
|
const svcs = uciMesh.get("setup", "services", "service") || [];
|
||||||
for (let i = 0; i < length(svcs); i++) {
|
for (let i = 0; i < length(svcs); i++) {
|
||||||
const l = trim(svcs[i]);
|
const l = trim(svcs[i]);
|
||||||
const v = match(l, reService);
|
const v = match(l, reService);
|
||||||
|
|
|
@ -127,7 +127,7 @@ local function get(validate)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- load the services
|
-- load the services
|
||||||
local svcs = uci.cursor("/etc/config.mesh"):get_all("setup", "services", "service")
|
local svcs = uci.cursor("/etc/config.mesh"):get_all("setup", "services", "service") or {}
|
||||||
for _, svc in ipairs(svcs)
|
for _, svc in ipairs(svcs)
|
||||||
do
|
do
|
||||||
local name, link, proto, host, port, sffx = svc:match("(.*)|(.*)|(.*)|(.*)|(.*)|(.*)")
|
local name, link, proto, host, port, sffx = svc:match("(.*)|(.*)|(.*)|(.*)|(.*)|(.*)")
|
||||||
|
|
Loading…
Reference in New Issue