From 5cb8dcf026902487f9145bb47511ddcb0984ea3a Mon Sep 17 00:00:00 2001 From: JoshDW19 Date: Thu, 4 Feb 2016 15:53:45 -0500 Subject: [PATCH] Add new API call to iohyve to remove a iso dataset Target is the iso we are removing from iohyve REST Request: ------------------------------- PUT /sysadm/iohyve { "action" : "rmiso", "target" : "FreeBSD-10.2-RELEASE-amd64-bootonly.iso" } WebSocket Request: ------------------------------- { "id" : "fooid", "name" : "iohyve", "args" : { "target" : "FreeBSD-10.2-RELEASE-amd64-bootonly.iso", "action" : "rmiso" }, "namespace" : "sysadm" } Response: ------------------------------- { "args": { "rmiso": { "target": "FreeBSD-10.2-RELEASE-amd64-bootonly.iso" } }, "id": "fooid", "name": "response", "namespace": "sysadm" } --- src/server/WebBackend.cpp | 5 ++++- src/server/library/sysadm-iohyve.cpp | 24 ++++++++++++++++++++++++ src/server/library/sysadm-iohyve.h | 1 + 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 2d4f5aa..464a0ba 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -449,7 +449,10 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIohyveRequest(const QJsonVal ok = true; out->insert("renameiso", sysadm::Iohyve::renameISO(in_args.toObject())); } - + if(act=="rmiso"){ + ok = true; + out->insert("rmiso", sysadm::Iohyve::rmISO(in_args.toObject())); + } } //end of "action" key usage //If nothing done - return the proper code diff --git a/src/server/library/sysadm-iohyve.cpp b/src/server/library/sysadm-iohyve.cpp index c95fc06..739d3f2 100644 --- a/src/server/library/sysadm-iohyve.cpp +++ b/src/server/library/sysadm-iohyve.cpp @@ -98,4 +98,28 @@ QJsonObject Iohyve::renameISO(QJsonObject jsin) { return retObject; } +// Remove an ISO file +QJsonObject Iohyve::rmISO(QJsonObject jsin) { + QJsonObject retObject; + + QStringList keys = jsin.keys(); + if (! keys.contains("target") ) { + retObject.insert("error", "Missing required key 'target'"); + return retObject; + } + + // Get the key values + QString target = jsin.value("target").toString(); + + QStringList output = General::RunCommand("iohyve rmiso " + 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("target", target); + return retObject; +} diff --git a/src/server/library/sysadm-iohyve.h b/src/server/library/sysadm-iohyve.h index 589b32b..292397e 100644 --- a/src/server/library/sysadm-iohyve.h +++ b/src/server/library/sysadm-iohyve.h @@ -17,6 +17,7 @@ public: static QJsonObject fetchISO(QJsonObject); static QJsonObject listVMs(); static QJsonObject renameISO(QJsonObject); + static QJsonObject rmISO(QJsonObject); }; } //end of pcbsd namespace