add vmid range check to instance creation,
add configurable templates to instance creation Signed-off-by: Arthur Lu <learthurgo@gmail.com>
This commit is contained in:
parent
c3160f760f
commit
9ccb9edf44
@ -36,6 +36,21 @@
|
|||||||
"local": 1099511627776,
|
"local": 1099511627776,
|
||||||
"cephpl": 1099511627776
|
"cephpl": 1099511627776
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"instances": {
|
||||||
|
"vmid": {
|
||||||
|
"min": 100,
|
||||||
|
"max": 199
|
||||||
|
},
|
||||||
|
"pool": "examplegroup",
|
||||||
|
"templates": {
|
||||||
|
"lxc": {
|
||||||
|
"net0": "name=eth0,bridge=vmbr0,ip=dhcp,ip6=dhcp,tag=10,type=veth"
|
||||||
|
},
|
||||||
|
"qemu": {
|
||||||
|
"net0": "virtio,bridge=vmbr0,tag=10"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
16
main.js
16
main.js
@ -247,17 +247,23 @@ app.post("/api/instance", async (req, res) => {
|
|||||||
memory: Number(req.body.memory)
|
memory: Number(req.body.memory)
|
||||||
};
|
};
|
||||||
// setup action
|
// setup action
|
||||||
let user = await requestPVE(`/access/users/${req.cookies.username}`, "GET", null, null, pveAPIToken);
|
let user = getUser(req.cookies.username);
|
||||||
let group = user.data.data.groups[0];
|
let vmid = Number.parseInt(req.body.vmid);
|
||||||
if (!group) {
|
let vmid_min = user.instances.vmid.min;
|
||||||
res.status(500).send({error: `user ${req.cookies.username} has no group membership`});
|
let vmid_max = user.instances.vmid.max;
|
||||||
|
if (vmid < vmid_min || vmid > vmid_max) {
|
||||||
|
res.status(500).send({error: `Requested vmid ${vmid} is out of allowed range [${vmid_min},${vmid_max}]`});
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
let action = {
|
let action = {
|
||||||
vmid: req.body.vmid,
|
vmid: req.body.vmid,
|
||||||
cores: req.body.cores,
|
cores: req.body.cores,
|
||||||
memory: req.body.memory,
|
memory: req.body.memory,
|
||||||
pool: group
|
pool: user.instances.pool
|
||||||
};
|
};
|
||||||
|
for (key of Object.keys(user.instances.templates[req.body.type])) {
|
||||||
|
action[key] = user.instances.templates[req.body.type][key];
|
||||||
|
}
|
||||||
if (req.body.type === "lxc") {
|
if (req.body.type === "lxc") {
|
||||||
action.swap = req.body.swap;
|
action.swap = req.body.swap;
|
||||||
action.hostname = req.body.name;
|
action.hostname = req.body.name;
|
||||||
|
Loading…
Reference in New Issue
Block a user