From 849230bf2f23f8a5a9df50a442511c307e04dbd8 Mon Sep 17 00:00:00 2001 From: JoshDW19 Date: Mon, 8 Feb 2016 14:24:16 -0500 Subject: [PATCH] Add API call for BEADM to rename a boot environment REST Request: ------------------------------- PUT /sysadm/beadm { "source" : "newname", "action" : "renamebe", "target" : "bootthingy" } WebSocket Request: ------------------------------- { "namespace" : "sysadm", "name" : "beadm", "id" : "fooid", "args" : { "source" : "newname", "target" : "bootthingy", "action" : "renamebe" } } Response: ------------------------------- { "args": { "renamebe": { "source": "newname", "target": "bootthingy" } }, "id": "fooid", "name": "response", "namespace": "sysadm" --- src/server/library/.~lock.sysadm-beadm.cpp# | 1 + src/server/library/sysadm-beadm.cpp | 28 +++++++++++++++++++++ src/server/library/sysadm-beadm.h | 1 + 3 files changed, 30 insertions(+) create mode 100644 src/server/library/.~lock.sysadm-beadm.cpp# diff --git a/src/server/library/.~lock.sysadm-beadm.cpp# b/src/server/library/.~lock.sysadm-beadm.cpp# new file mode 100644 index 0000000..ee93812 --- /dev/null +++ b/src/server/library/.~lock.sysadm-beadm.cpp# @@ -0,0 +1 @@ +,josh,localhost,08.02.2016 13:33,file:///usr/home/josh/.config/libreoffice/4; \ No newline at end of file diff --git a/src/server/library/sysadm-beadm.cpp b/src/server/library/sysadm-beadm.cpp index 50509a3..56316aa 100644 --- a/src/server/library/sysadm-beadm.cpp +++ b/src/server/library/sysadm-beadm.cpp @@ -47,3 +47,31 @@ QJsonObject BEADM::listBEs() { return retObject; } + +QJsonObject BEADM::renameBE(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("beadm rename " + source + " " + target).split("\n"); + for ( int i = 0; i < output.size(); i++) + { + if ( output.at(i).indexOf("ERROR") != -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-beadm.h b/src/server/library/sysadm-beadm.h index 6a0d978..488bcf7 100644 --- a/src/server/library/sysadm-beadm.h +++ b/src/server/library/sysadm-beadm.h @@ -15,6 +15,7 @@ namespace sysadm{ class BEADM{ public: static QJsonObject listBEs(); + static QJsonObject renameBE(QJsonObject); }; } //end of pcbsd namespace