mirror of
https://github.com/outbackdingo/sysadm.git
synced 2026-01-27 02:20:17 +00:00
NEW API CALL: sysadm/iocage "action"="fetchreleases"
This will fetch any remotely-available FreeBSD releases and update/cache them on the local system for use when spinning up jails.
REQUIRED ARGUMENTS:
"action" = "fetchreleases"
"releases": String *or* Array of strings containing the version/release to fetch.
Changelog: yes
-----------------
REST Request (example):
-------------------------------
PUT /sysadm/iocage
{
"action" : "fetchreleases",
"releases" : [
"10.3-RELEASE",
"10.2-RELEASE"
]
}
WebSocket Request:
-------------------------------
{
"args" : {
"releases" : [
"10.3-RELEASE",
"10.2-RELEASE"
],
"action" : "fetchreleases"
},
"name" : "iocage",
"namespace" : "sysadm",
"id" : "fooid"
}
Response:
-------------------------------
{
"args": {
"fetchreleases": {
"started_dispatcher_id": [
"sysadm_iocage_fetch_release_10.3-RELEASE",
"sysadm_iocage_fetch_release_10.2-RELEASE"
]
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
This commit is contained in:
@@ -706,6 +706,7 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIocageRequest(const QJsonVal
|
||||
else if(act=="listjails"){ retObj = sysadm::Iocage::listJails(); }
|
||||
else if(act=="listtemplates"){ retObj = sysadm::Iocage::listTemplates(); }
|
||||
else if(act=="listreleases"){ retObj = sysadm::Iocage::listReleases(); }
|
||||
else if(act=="fetchreleases"){ retObj = sysadm::Iocage::fetchReleases(in_args.toObject()); }
|
||||
else if(act=="listplugins"){ retObj = sysadm::Iocage::listPlugins(); }
|
||||
ok = !retObj.keys().isEmpty();
|
||||
if(ok){ out->insert(act,retObj); }
|
||||
|
||||
@@ -192,7 +192,7 @@ QJsonObject Iocage::fetchReleases(QJsonObject inobj){
|
||||
QString jobprefix = "sysadm_iocage_fetch_release_";
|
||||
QJsonArray started;
|
||||
for(int i=0; i<releases.length(); i++){
|
||||
releases[i] = releases[i].section(" ",0,0, QString::SectionSkipEmpty); //all valid releases are a single word - do not allow injection of other commands
|
||||
releases[i] = releases[i].section(" ",0,0, QString::SectionSkipEmpty); //all valid releases are a single word - do not allow injection of other commands (or "(EOL)" tags on end)
|
||||
if(cids.contains(jobprefix+releases[i]) ){ continue; } //this fetch job is already running - skip it for now
|
||||
DISPATCHER->queueProcess(jobprefix+releases[i], "iocage fetch --verify -r "+releases[i]);
|
||||
started << jobprefix+releases[i];
|
||||
|
||||
Reference in New Issue
Block a user