From 4d3b590f460d301b9376a063f9407dabfd7c9c66 Mon Sep 17 00:00:00 2001 From: Kris Moore Date: Thu, 4 Feb 2016 15:23:44 -0500 Subject: [PATCH] Add new API call to iohyve to rename an existing ISO file on disk REST Request: ------------------------------- PUT /sysadm/iohyve { "source" : "test.iso", "target" : "102.iso", "action" : "renameiso" } WebSocket Request: ------------------------------- { "args" : { "target" : "102.iso", "source" : "test.iso", "action" : "renameiso" }, "id" : "fooid", "name" : "iohyve", "namespace" : "sysadm" } Response: ------------------------------- { "args": { "renameiso": { "source": "test.iso", "target": "102.iso" } }, "id": "fooid", "name": "response", "namespace": "sysadm" } --- src/server/WebBackend.cpp | 4 ++++ src/server/library/sysadm-iohyve.cpp | 30 ++++++++++++++++++++++++++++ src/server/library/sysadm-iohyve.h | 1 + 3 files changed, 35 insertions(+) diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 1c49306..2d4f5aa 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -445,6 +445,10 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIohyveRequest(const QJsonVal ok = true; out->insert("fetchiso", sysadm::Iohyve::fetchISO(in_args.toObject())); } + if(act=="renameiso"){ + ok = true; + out->insert("renameiso", sysadm::Iohyve::renameISO(in_args.toObject())); + } } //end of "action" key usage diff --git a/src/server/library/sysadm-iohyve.cpp b/src/server/library/sysadm-iohyve.cpp index 9adb9a6..c95fc06 100644 --- a/src/server/library/sysadm-iohyve.cpp +++ b/src/server/library/sysadm-iohyve.cpp @@ -69,3 +69,33 @@ QJsonObject Iohyve::listVMs() { return retObject; } + +// Rename an ISO file +QJsonObject Iohyve::renameISO(QJsonObject jsin) { + QJsonObject retObject; + + QStringList keys = jsin.keys(); + if (! keys.contains("source") || ! keys.contains("target") ) { + retObject.insert("error", "Missing required key(s) 'source / target'"); + return retObject; + } + + // Get the key values + QString source = jsin.value("source").toString(); + QString target = jsin.value("target").toString(); + + QStringList output = General::RunCommand("iohyve renameiso " + source + " " + target).split("\n"); + for ( int i = 0; i < output.size(); i++) + { + if ( output.at(i).indexOf("cannot open") != -1 ) { + retObject.insert("error", output.at(i)); + return retObject; + } + } + + retObject.insert("source", source); + retObject.insert("target", target); + return retObject; +} + + diff --git a/src/server/library/sysadm-iohyve.h b/src/server/library/sysadm-iohyve.h index aceb0ce..589b32b 100644 --- a/src/server/library/sysadm-iohyve.h +++ b/src/server/library/sysadm-iohyve.h @@ -16,6 +16,7 @@ class Iohyve{ public: static QJsonObject fetchISO(QJsonObject); static QJsonObject listVMs(); + static QJsonObject renameISO(QJsonObject); }; } //end of pcbsd namespace