diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index b89f785..eb60c8b 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -632,6 +632,10 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIohyveRequest(const QJsonVal ok = true; out->insert("rmiso", sysadm::Iohyve::rmISO(in_args.toObject())); } + else if(act=="resizedisk"){ + ok = true; + out->insert("resizedisk", sysadm::Iohyve::resizeDisk(in_args.toObject())); + } else if(act=="setup"){ ok = true; out->insert("setup", sysadm::Iohyve::setupIohyve(in_args.toObject())); diff --git a/src/server/library/sysadm-iohyve.cpp b/src/server/library/sysadm-iohyve.cpp index 6351dda..e6d938c 100644 --- a/src/server/library/sysadm-iohyve.cpp +++ b/src/server/library/sysadm-iohyve.cpp @@ -322,6 +322,42 @@ QJsonObject Iohyve::renameISO(QJsonObject jsin) { return retObject; } +// Resize a guest disk +QJsonObject Iohyve::resizeDisk(QJsonObject jsin) { + QJsonObject retObject; + + QStringList keys = jsin.keys(); + if (! keys.contains("name") || !keys.contains("disk") || !keys.contains("size") ) { + retObject.insert("error", "Missing required key(s) 'name/disk/size'"); + return retObject; + } + + // Get the key values + QString name = jsin.value("name").toString(); + QString disk = jsin.value("disk").toString(); + QString size = jsin.value("size").toString(); + + // Resize the disk now + QStringList output = General::RunCommand("iohyve resize " + name + " " + disk + " " + size).split("\n"); + for ( int i = 0; i < output.size(); i++) + { + // This doesn't work, iohyve doesn't return error message right now + if ( output.at(i).indexOf("Please stop") != -1 ) { + retObject.insert("error", output.at(i)); + return retObject; + } + if ( output.at(i).indexOf("Not a valid") != -1 ) { + retObject.insert("error", output.at(i)); + return retObject; + } + } + + retObject.insert("name", name); + retObject.insert("disk", disk); + retObject.insert("size", size); + return retObject; +} + // Remove an ISO file QJsonObject Iohyve::rmISO(QJsonObject jsin) { QJsonObject retObject; diff --git a/src/server/library/sysadm-iohyve.h b/src/server/library/sysadm-iohyve.h index b2342ca..81e469c 100644 --- a/src/server/library/sysadm-iohyve.h +++ b/src/server/library/sysadm-iohyve.h @@ -26,6 +26,7 @@ public: static QJsonArray listISOs(); static QJsonObject listVMs(); static QJsonObject renameISO(QJsonObject); + static QJsonObject resizeDisk(QJsonObject); static QJsonObject rmISO(QJsonObject); static QJsonObject setupIohyve(QJsonObject); static QJsonObject startGuest(QJsonObject);