diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index ed313bd..09803c9 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -615,9 +615,12 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIohyveRequest(const QJsonVal } else if(act=="fetchiso"){ ok = true; - //DProcess fetchproc; out->insert("fetchiso", sysadm::Iohyve::fetchISO(in_args.toObject())); } + else if(act=="getprops"){ + ok = true; + out->insert("getprops", sysadm::Iohyve::getProps(in_args.toObject())); + } else if(act=="install"){ ok = true; out->insert("install", sysadm::Iohyve::installGuest(in_args.toObject())); diff --git a/src/server/library/sysadm-iohyve.cpp b/src/server/library/sysadm-iohyve.cpp index 3497d6f..f1df44f 100644 --- a/src/server/library/sysadm-iohyve.cpp +++ b/src/server/library/sysadm-iohyve.cpp @@ -146,6 +146,42 @@ QJsonObject Iohyve::deleteGuest(QJsonObject jsin) { return retObject; } +// Get all the properties for a guest +QJsonObject Iohyve::getProps(QJsonObject jsin) { + QJsonObject retObject; + + QStringList keys = jsin.keys(); + if (! keys.contains("name") ) { + retObject.insert("error", "Missing required key 'name'"); + return retObject; + } + + // Get the key values + QString name = jsin.value("name").toString(); + + QStringList output = General::RunCommand("iohyve", QStringList() << "getall" << name).split("\n"); + + QJsonObject props; + + for ( int i = 0; i < output.size(); i++) + { + if ( output.at(i).indexOf("Getting ") != -1 ) + continue; + + if ( output.at(i).isEmpty() ) + break; + + QString line = output.at(i).simplified(); + QString prop = line.section(" ", 0, 0); + QString val = line.section(" ", 1, 1); + props.insert(prop, val); + } + + retObject.insert(name, props); + return retObject; +} + + // Queue the fetch of an ISO QJsonObject Iohyve::fetchISO(QJsonObject jsin) { QJsonObject retObject; diff --git a/src/server/library/sysadm-iohyve.h b/src/server/library/sysadm-iohyve.h index 395da4d..a7fbfc0 100644 --- a/src/server/library/sysadm-iohyve.h +++ b/src/server/library/sysadm-iohyve.h @@ -20,6 +20,7 @@ public: static QJsonObject deleteDisk(QJsonObject); static QJsonObject deleteGuest(QJsonObject); static QJsonObject fetchISO(QJsonObject); + static QJsonObject getProps(QJsonObject); static QJsonObject installGuest(QJsonObject); static QJsonObject isSetup(); static QJsonObject listDisks(QJsonObject);