mirror of
https://github.com/outbackdingo/sysadm.git
synced 2026-01-27 10:20:26 +00:00
Add new API call for listing available branches to update to
REST Request:
-------------------------------
PUT /sysadm/update
{
"action" : "listbranches"
}
REST Response:
-------------------------------
{
"args": {
"listbranches": {
"10.1-RELEASE": "available",
"10.2-RELEASE": "active",
"11.0-CURRENTJAN2016": "available"
}
}
}
WebSocket Request:
-------------------------------
{
"args" : {
"action" : "listbranches"
},
"namespace" : "sysadm",
"name" : "update",
"id" : "fooid"
}
WebSocket Response:
-------------------------------
{
"args": {
"listbranches": {
"10.1-RELEASE": "available",
"10.2-RELEASE": "active",
"11.0-CURRENTJAN2016": "available"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
This commit is contained in:
@@ -14,56 +14,87 @@ using namespace sysadm;
|
||||
|
||||
// Return a list of updates available
|
||||
QJsonObject Update::checkUpdates() {
|
||||
QJsonObject retObject;
|
||||
QJsonObject retObject;
|
||||
|
||||
QStringList output = General::RunCommand("pc-updatemanager check").split("\n");
|
||||
QString nameval;
|
||||
QStringList output = General::RunCommand("pc-updatemanager check").split("\n");
|
||||
QString nameval;
|
||||
|
||||
for ( int i = 0; i < output.size(); i++)
|
||||
{
|
||||
if ( output.at(i).indexOf("Your system is up to date!") != -1 )
|
||||
{
|
||||
retObject.insert("status", "noupdates");
|
||||
return retObject;
|
||||
}
|
||||
if ( output.at(i).indexOf("NAME: ") != -1 )
|
||||
nameval = output.at(i).section(" ", 1, 1);
|
||||
for ( int i = 0; i < output.size(); i++)
|
||||
{
|
||||
if ( output.at(i).indexOf("Your system is up to date!") != -1 )
|
||||
{
|
||||
retObject.insert("status", "noupdates");
|
||||
return retObject;
|
||||
}
|
||||
if ( output.at(i).indexOf("NAME: ") != -1 )
|
||||
nameval = output.at(i).section(" ", 1, 1);
|
||||
|
||||
if ( output.at(i).indexOf("TYPE: SECURITYUPDATE") != -1 ) {
|
||||
QJsonObject itemvals;
|
||||
itemvals.insert("name", nameval);
|
||||
retObject.insert("security", itemvals);
|
||||
}
|
||||
if ( output.at(i).indexOf("TYPE: SYSTEMUPDATE") != -1 ) {
|
||||
QJsonObject itemvals;
|
||||
itemvals.insert("name", nameval);
|
||||
if ( output.size() > ( i + 1) )
|
||||
itemvals.insert("tag", output.at(i+1).section(" ", 1, 1));
|
||||
if ( output.size() > ( i + 2) )
|
||||
itemvals.insert("version", output.at(i+2).section(" ", 1, 1));
|
||||
retObject.insert("majorupgrade", itemvals);
|
||||
}
|
||||
if ( output.at(i).indexOf("TYPE: PATCH") != -1 ) {
|
||||
QJsonObject itemvals;
|
||||
itemvals.insert("name", nameval);
|
||||
if ( output.size() > ( i + 1) )
|
||||
itemvals.insert("tag", output.at(i+1).section(" ", 1, 1));
|
||||
if ( output.size() > ( i + 2) )
|
||||
itemvals.insert("details", output.at(i+2).section(" ", 1, 1));
|
||||
if ( output.size() > ( i + 3) )
|
||||
itemvals.insert("date", output.at(i+3).section(" ", 1, 1));
|
||||
if ( output.size() > ( i + 4) )
|
||||
itemvals.insert("size", output.at(i+4).section(" ", 1, 1));
|
||||
retObject.insert("patch", itemvals);
|
||||
}
|
||||
if ( output.at(i).indexOf("TYPE: PKGUPDATE") != -1 ) {
|
||||
QJsonObject itemvals;
|
||||
itemvals.insert("name", nameval);
|
||||
retObject.insert("packageupdate", itemvals);
|
||||
}
|
||||
if ( output.at(i).indexOf("TYPE: SECURITYUPDATE") != -1 ) {
|
||||
QJsonObject itemvals;
|
||||
itemvals.insert("name", nameval);
|
||||
retObject.insert("security", itemvals);
|
||||
}
|
||||
if ( output.at(i).indexOf("TYPE: SYSTEMUPDATE") != -1 ) {
|
||||
QJsonObject itemvals;
|
||||
itemvals.insert("name", nameval);
|
||||
if ( output.size() > ( i + 1) )
|
||||
itemvals.insert("tag", output.at(i+1).section(" ", 1, 1));
|
||||
if ( output.size() > ( i + 2) )
|
||||
itemvals.insert("version", output.at(i+2).section(" ", 1, 1));
|
||||
retObject.insert("majorupgrade", itemvals);
|
||||
}
|
||||
if ( output.at(i).indexOf("TYPE: PATCH") != -1 ) {
|
||||
QJsonObject itemvals;
|
||||
itemvals.insert("name", nameval);
|
||||
if ( output.size() > ( i + 1) )
|
||||
itemvals.insert("tag", output.at(i+1).section(" ", 1, 1));
|
||||
if ( output.size() > ( i + 2) )
|
||||
itemvals.insert("details", output.at(i+2).section(" ", 1, 1));
|
||||
if ( output.size() > ( i + 3) )
|
||||
itemvals.insert("date", output.at(i+3).section(" ", 1, 1));
|
||||
if ( output.size() > ( i + 4) )
|
||||
itemvals.insert("size", output.at(i+4).section(" ", 1, 1));
|
||||
retObject.insert("patch", itemvals);
|
||||
}
|
||||
if ( output.at(i).indexOf("TYPE: PKGUPDATE") != -1 ) {
|
||||
QJsonObject itemvals;
|
||||
itemvals.insert("name", nameval);
|
||||
retObject.insert("packageupdate", itemvals);
|
||||
}
|
||||
}
|
||||
|
||||
// Update status that we have updates
|
||||
retObject.insert("status", "updatesavailable");
|
||||
return retObject;
|
||||
}
|
||||
|
||||
// List available branches we can switch to
|
||||
QJsonObject Update::listBranches() {
|
||||
QJsonObject retObject;
|
||||
|
||||
QStringList output = General::RunCommand("pc-updatemanager branches").split("\n");
|
||||
|
||||
bool inSection = false;
|
||||
for ( int i = 0; i < output.size(); i++)
|
||||
{
|
||||
if ( output.at(i).indexOf("-----------------") != -1 ) {
|
||||
inSection = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!inSection)
|
||||
continue;
|
||||
|
||||
if ( output.at(i).isEmpty() )
|
||||
break;
|
||||
|
||||
QString tmp = output.at(i).section(" ", 0, 0);
|
||||
QString tmp2 = output.at(i).section(" ", 1, 1);
|
||||
if ( tmp2 == "*" )
|
||||
retObject.insert(tmp, "active");
|
||||
else
|
||||
retObject.insert(tmp, "available");
|
||||
}
|
||||
|
||||
return retObject;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace sysadm{
|
||||
class Update{
|
||||
public:
|
||||
static QJsonObject checkUpdates();
|
||||
static QJsonObject listBranches();
|
||||
};
|
||||
|
||||
} //end of pcbsd namespace
|
||||
|
||||
@@ -297,9 +297,11 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmUpdateRequest(const QJsonVal
|
||||
QString act = JsonValueToString(in_args.toObject().value("action"));
|
||||
if(act=="checkupdates"){
|
||||
ok = true;
|
||||
qDebug() << " - Starting update check";
|
||||
out->insert("checkupdates", sysadm::Update::checkUpdates());
|
||||
qDebug() << " - Finished update check";
|
||||
}
|
||||
if(act=="listbranches"){
|
||||
ok = true;
|
||||
out->insert("listbranches", sysadm::Update::listBranches());
|
||||
}
|
||||
|
||||
} //end of "action" key usage
|
||||
|
||||
Reference in New Issue
Block a user