Adding tree import.

This commit is contained in:
stephb9959
2021-09-08 12:39:04 -07:00
parent 79b2742f36
commit e1cb55883e
3 changed files with 20 additions and 19 deletions

View File

@@ -49,42 +49,42 @@ namespace OpenWifi {
return true; return true;
} }
bool APConfig::merge(const Poco::JSON::Object::Ptr & A, const Poco::JSON::Object::Ptr & B, Poco::JSON::Object &C) { bool APConfig::merge(const Poco::JSON::Object::Ptr & A, const Poco::JSON::Object::Ptr & B, Poco::JSON::Object::Ptr &C) {
for(const auto &i:*A) { for(const auto &i:*A) {
const std::string & K = i.first; const std::string & K = i.first;
// std::cout << "KEY: " << K << std::endl; // std::cout << "KEY: " << K << std::endl;
if(B->has(K)) { if(B->has(K)) {
if(A->isArray(K)) { if(A->isArray(K)) {
// std::cout << "ISARRAY" << std::endl; // std::cout << "ISARRAY" << std::endl;
if(B->isArray(K)) { if(B->isArray(K)) {
Poco::JSON::Array Arr; Poco::JSON::Array Arr;
auto AR1=A->getArray(K); auto AR1=A->getArray(K);
auto AR2=B->getArray(K); auto AR2=B->getArray(K);
mergeArray(K,AR1,AR2,Arr); mergeArray(K,AR1,AR2,Arr);
C.set(K,Arr); C->set(K,Arr);
} else { } else {
C.set(K,A->getArray(K)); C->set(K,A->getArray(K));
} }
} }
else if(A->isObject(K) && B->isObject(K)) { else if(A->isObject(K) && B->isObject(K)) {
// std::cout << "ISOBJECT" << std::endl; // std::cout << "ISOBJECT" << std::endl;
Poco::JSON::Object R; Poco::JSON::Object::Ptr R;
merge(A->getObject(K),B->getObject(K),R); merge(A->getObject(K),B->getObject(K),R);
C.set(K,R); C->set(K,R);
} }
else { else {
C.set(K,i.second); C->set(K,i.second);
} }
} else { } else {
C.set(K,i.second); C->set(K,i.second);
} }
} }
for(const auto &i:*B) { for(const auto &i:*B) {
const std::string & K = i.first; const std::string & K = i.first;
if(!A->has(K)) if(!A->has(K))
C.set(K,i.second); C->set(K,i.second);
} }
return true; return true;
} }
@@ -118,19 +118,20 @@ namespace OpenWifi {
// globals // globals
// unit // unit
Poco::JSON::Object CFG; Poco::JSON::Object::Ptr CFG;
for(const auto &i:Config_) { for(const auto &i:Config_) {
Poco::JSON::Parser P; Poco::JSON::Parser P;
auto O = P.parse(i.configuration).extract<Poco::JSON::Object::Ptr>(); auto O = P.parse(i.configuration).extract<Poco::JSON::Object::Ptr>();
for(const auto &j:*O) { Poco::JSON::Object::Ptr Result;
CFG.set(j.first,j.second); merge(CFG, O, Result);
} CFG = Result;
} }
Configuration = CFG; Configuration = *CFG;
if(Config_.empty()) if(Config_.empty())
return false; return false;
return true; return true;
} }

View File

@@ -34,7 +34,7 @@ namespace OpenWifi {
bool FindRadio(const std::string &Band, const Poco::JSON::Array::Ptr &Arr, Poco::JSON::Object::Ptr & Radio); bool FindRadio(const std::string &Band, const Poco::JSON::Array::Ptr &Arr, Poco::JSON::Object::Ptr & Radio);
bool mergeArray(const std::string &K, const Poco::JSON::Array::Ptr &A , const Poco::JSON::Array::Ptr &B, Poco::JSON::Array &Arr); bool mergeArray(const std::string &K, const Poco::JSON::Array::Ptr &A , const Poco::JSON::Array::Ptr &B, Poco::JSON::Array &Arr);
bool merge(const Poco::JSON::Object::Ptr & A, const Poco::JSON::Object::Ptr & B, Poco::JSON::Object &C); bool merge(const Poco::JSON::Object::Ptr & A, const Poco::JSON::Object::Ptr & B, Poco::JSON::Object::Ptr &C);
}; };
} }

View File

@@ -181,7 +181,7 @@ gettag() {
} }
addtag() { addtag() {
payload="{ \"name\" : \"$1\",\"entity\" : \"$2\", \"serialNumber\" : \"$1\", \"deviceType\" : \"linksys_ea8300\" }"; payload="{ \"name\" : \"$1\", \"serialNumber\" : \"$1\", \"deviceType\" : \"linksys_ea8300\" }";
curl ${FLAGS} -X POST "https://${OWPROV}/api/v1/inventory/1" \ curl ${FLAGS} -X POST "https://${OWPROV}/api/v1/inventory/1" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-H "Authorization: Bearer ${token}" \ -H "Authorization: Bearer ${token}" \
@@ -372,7 +372,7 @@ case "$1" in
"tree") login; tree ; logout;; "tree") login; tree ; logout;;
"importtree") login; importtree $2; logout;; "importtree") login; importtree $2; logout;;
"deviceconfig") login; deviceconfig "$2"; logout;; "deviceconfig") login; deviceconfig "$2"; logout;;
"addtag") login; addtag $2 $3; logout;; "addtag") login; addtag "$2"; logout;;
"unassigntag") login; unassigntag $2; logout;; "unassigntag") login; unassigntag $2; logout;;
"addunassignedtag") login; addunassignedtag $2 ; logout;; "addunassignedtag") login; addunassignedtag $2 ; logout;;
"getunassignedtags") login; getunassignedtags ; logout;; "getunassignedtags") login; getunassignedtags ; logout;;