diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 57ae141..ce6b35d 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -581,6 +581,10 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIohyveRequest(const QJsonVal if(keys.contains("action")){ QString act = JsonValueToString(in_args.toObject().value("action")); //qDebug() << " - iohyve action:" << act; + if(act=="adddisk"){ + ok = true; + out->insert("adddisk", sysadm::Iohyve::addDisk(in_args.toObject())); + } if(act=="create"){ ok = true; out->insert("create", sysadm::Iohyve::createGuest(in_args.toObject())); diff --git a/src/server/library/sysadm-iohyve.cpp b/src/server/library/sysadm-iohyve.cpp index 0a43ae6..55bf0ef 100644 --- a/src/server/library/sysadm-iohyve.cpp +++ b/src/server/library/sysadm-iohyve.cpp @@ -14,6 +14,40 @@ using namespace sysadm; //PLEASE: Keep the functions in the same order as listed in pcbsd-general.h +// Add a new disk for a VM +QJsonObject Iohyve::addDisk(QJsonObject jsin) { + QJsonObject retObject; + + QStringList keys = jsin.keys(); + if (! keys.contains("name") || ! keys.contains("size") ) { + retObject.insert("error", "Missing required key(s) 'name', 'size'"); + return retObject; + } + + // Get the key values + QString name = jsin.value("name").toString(); + QString size = jsin.value("size").toString(); + QString pool = jsin.value("pool").toString(); + + QStringList output = General::RunCommand("iohyve add " + name + " " + size + " " + pool).split("\n"); + + for ( int i = 0; i < output.size(); i++) + { + if ( output.at(i).indexOf("cannot create") != -1 ) { + retObject.insert("error", output.at(i)); + return retObject; + } + } + + QJsonObject vm; + vm.insert("size", size); + if ( ! pool.isEmpty() ) + vm.insert("pool", pool); + retObject.insert(name, vm); + + return retObject; +} + // Create a new guest VM QJsonObject Iohyve::createGuest(QJsonObject jsin) { QJsonObject retObject; diff --git a/src/server/library/sysadm-iohyve.h b/src/server/library/sysadm-iohyve.h index 06eb3af..b5024c0 100644 --- a/src/server/library/sysadm-iohyve.h +++ b/src/server/library/sysadm-iohyve.h @@ -15,6 +15,7 @@ namespace sysadm{ class Iohyve{ public: + static QJsonObject addDisk(QJsonObject); static QJsonObject createGuest(QJsonObject); static QJsonObject deleteGuest(QJsonObject); static QJsonObject fetchISO(QJsonObject, DProcess *);