mirror of
https://github.com/Telecominfraproject/wlan-cloud-owprov.git
synced 2025-10-29 09:42:38 +00:00
Fixing firmware inheritance rules.
This commit is contained in:
@@ -35,8 +35,8 @@ openwifi.system.uri.public = https://ucentral.dpaas.arilia.com:16005
|
||||
openwifi.system.commandchannel = /tmp/app.owprov
|
||||
openwifi.system.uri.ui = owprov-ui.arilia.com
|
||||
|
||||
firmware.updater.upgrade = yes
|
||||
firmware.updater.rconly = no
|
||||
firmware.updater.upgrade = false
|
||||
firmware.updater.releaseonly = false
|
||||
|
||||
geocodeapi = google
|
||||
google.apikey = **********************************
|
||||
|
||||
@@ -70,8 +70,6 @@ namespace OpenWifi {
|
||||
};
|
||||
|
||||
int AutoDiscovery::Start() {
|
||||
firmwareUpgrade_ = MicroService::instance().ConfigGetString("firmware.updater.upgrade","no");
|
||||
firmwareRCOnly_ = MicroService::instance().ConfigGetBool("firmware.updater.rconly",false);
|
||||
Types::TopicNotifyFunction F = [this](std::string s1,std::string s2) { this->ConnectionReceived(s1,s2); };
|
||||
ConnectionWatcherId_ = KafkaManager()->RegisterTopicWatcher(KafkaTopics::CONNECTION, F);
|
||||
Worker_.start(*this);
|
||||
|
||||
@@ -22,8 +22,6 @@ namespace OpenWifi {
|
||||
void Stop() override;
|
||||
void run() override;
|
||||
void ConnectionReceived( const std::string & Key, const std::string & Message);
|
||||
[[nodiscard]] const std::string & firmwareUpgrade() { return firmwareUpgrade_; }
|
||||
bool firmwareRCOnly() const { return firmwareRCOnly_; }
|
||||
|
||||
private:
|
||||
static AutoDiscovery *instance_;
|
||||
@@ -31,8 +29,6 @@ namespace OpenWifi {
|
||||
std::atomic_bool Running_ = false;
|
||||
int ConnectionWatcherId_=0;
|
||||
Types::StringPairQueue NewConnections_;
|
||||
std::string firmwareUpgrade_{"no"};
|
||||
bool firmwareRCOnly_=false;
|
||||
|
||||
AutoDiscovery() noexcept:
|
||||
SubSystemServer("AutoDiscovery", "AUTO-DISCOVERY", "discovery")
|
||||
|
||||
@@ -40,6 +40,15 @@ namespace OpenWifi {
|
||||
}
|
||||
|
||||
void Daemon::initialize() {
|
||||
if(MicroService::instance().ConfigGetBool("firmware.updater.upgrade",false)) {
|
||||
if(MicroService::instance().ConfigGetBool("firmware.updater.releaseonly",false)) {
|
||||
FWRules_ = ProvObjects::upgrade_release_only;
|
||||
} else {
|
||||
FWRules_ = ProvObjects::upgrade_latest;
|
||||
}
|
||||
} else {
|
||||
FWRules_ = ProvObjects::dont_upgrade;
|
||||
}
|
||||
}
|
||||
|
||||
void MicroServicePostInitialization() {
|
||||
|
||||
14
src/Daemon.h
14
src/Daemon.h
@@ -15,20 +15,10 @@
|
||||
#include <vector>
|
||||
#include <set>
|
||||
|
||||
/*
|
||||
#include "Poco/Util/Application.h"
|
||||
#include "Poco/Util/ServerApplication.h"
|
||||
#include "Poco/Util/Option.h"
|
||||
#include "Poco/Util/OptionSet.h"
|
||||
#include "Poco/UUIDGenerator.h"
|
||||
#include "Poco/ErrorHandler.h"
|
||||
#include "Poco/Crypto/RSAKey.h"
|
||||
#include "Poco/Crypto/CipherFactory.h"
|
||||
#include "Poco/Crypto/Cipher.h"
|
||||
*/
|
||||
#include "Dashboard.h"
|
||||
#include "framework/MicroService.h"
|
||||
#include "framework/OpenWifiTypes.h"
|
||||
#include "RESTObjects/RESTAPI_ProvObjects.h"
|
||||
|
||||
namespace OpenWifi {
|
||||
|
||||
@@ -52,9 +42,11 @@ namespace OpenWifi {
|
||||
static Daemon *instance();
|
||||
inline OpenWifi::TopoDashboard & GetDashboard() { return DB_; }
|
||||
Poco::Logger & Log() { return Poco::Logger::get(AppName()); }
|
||||
ProvObjects::FIRMWARE_UPGRADE_RULES FirmwareRules() const { return FWRules_; }
|
||||
private:
|
||||
static Daemon *instance_;
|
||||
OpenWifi::TopoDashboard DB_{};
|
||||
ProvObjects::FIRMWARE_UPGRADE_RULES FWRules_{ProvObjects::dont_upgrade};
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -56,13 +56,17 @@ namespace OpenWifi{
|
||||
}
|
||||
return ReturnObject(Answer);
|
||||
} else if(HasParameter("firmwareOptions", Arg) && Arg=="true") {
|
||||
std::string firmwareUpgrade = AutoDiscovery()->firmwareUpgrade();
|
||||
bool firmwareRCOnly = AutoDiscovery()->firmwareRCOnly();
|
||||
ProvObjects::FIRMWARE_UPGRADE_RULES Rules;
|
||||
|
||||
StorageService()->InventoryDB().FindFirmwareOptions(SerialNumber,firmwareUpgrade, firmwareRCOnly);
|
||||
StorageService()->InventoryDB().FindFirmwareOptions(SerialNumber,Rules);
|
||||
|
||||
Answer.set("firmwareUpgrade",firmwareUpgrade);
|
||||
Answer.set("firmwareRCOnly", firmwareRCOnly);
|
||||
if(Rules == ProvObjects::dont_upgrade) {
|
||||
Answer.set("firmwareUpgrade","no");
|
||||
} else {
|
||||
Answer.set("firmwareUpgrade","no");
|
||||
if(Rules == ProvObjects::upgrade_release_only)
|
||||
Answer.set("firmwareRCOnly", Rules == ProvObjects::upgrade_release_only );
|
||||
}
|
||||
return ReturnObject(Answer);
|
||||
} else if(HasParameter("applyConfiguration",Arg) && Arg=="true") {
|
||||
APConfig Device(SerialNumber,Existing.deviceType,Logger_, false);
|
||||
|
||||
@@ -15,6 +15,13 @@
|
||||
|
||||
namespace OpenWifi::ProvObjects {
|
||||
|
||||
enum FIRMWARE_UPGRADE_RULES {
|
||||
dont_upgrade,
|
||||
upgrade_inherit,
|
||||
upgrade_release_only,
|
||||
upgrade_latest
|
||||
};
|
||||
|
||||
struct ObjectInfo {
|
||||
Types::UUID_t id;
|
||||
std::string name;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "SDK_stubs.h"
|
||||
#include "AutoDiscovery.h"
|
||||
#include "SerialNumberCache.h"
|
||||
#include "Daemon.h"
|
||||
|
||||
namespace OpenWifi {
|
||||
|
||||
@@ -112,8 +113,7 @@ namespace OpenWifi {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InventoryDB::FindFirmwareOptionsForEntity(const std::string &EntityUUID, std::string &firmwareUpgrade,
|
||||
bool &firmwareRCOnly) {
|
||||
bool InventoryDB::FindFirmwareOptionsForEntity(const std::string &EntityUUID, ProvObjects::FIRMWARE_UPGRADE_RULES & Rules) {
|
||||
std::string UUID = EntityUUID;
|
||||
while(!UUID.empty() && UUID!=EntityDB::RootUUID()) {
|
||||
ProvObjects::Entity E;
|
||||
@@ -122,12 +122,14 @@ namespace OpenWifi {
|
||||
ProvObjects::DeviceConfiguration C;
|
||||
if(StorageService()->ConfigurationDB().GetRecord("id",E.deviceConfiguration,C)) {
|
||||
if(C.firmwareUpgrade=="no") {
|
||||
firmwareUpgrade="no";
|
||||
Rules = ProvObjects::dont_upgrade;
|
||||
return false;
|
||||
}
|
||||
if(C.firmwareUpgrade=="yes") {
|
||||
firmwareUpgrade="yes";
|
||||
firmwareRCOnly=C.firmwareRCOnly;
|
||||
if(C.firmwareRCOnly)
|
||||
Rules = ProvObjects::upgrade_release_only;
|
||||
else
|
||||
Rules = ProvObjects::upgrade_latest;
|
||||
return true;
|
||||
}
|
||||
if(C.firmwareUpgrade.empty() || C.firmwareUpgrade=="inherit") {
|
||||
@@ -141,13 +143,11 @@ namespace OpenWifi {
|
||||
break;
|
||||
}
|
||||
}
|
||||
firmwareUpgrade = AutoDiscovery()->firmwareUpgrade();
|
||||
firmwareRCOnly= AutoDiscovery()->firmwareRCOnly();
|
||||
Rules = Daemon()->FirmwareRules();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InventoryDB::FindFirmwareOptionsForVenue(const std::string &VenueUUID, std::string &firmwareUpgrade,
|
||||
bool &firmwareRCOnly) {
|
||||
bool InventoryDB::FindFirmwareOptionsForVenue(const std::string &VenueUUID, ProvObjects::FIRMWARE_UPGRADE_RULES & Rules) {
|
||||
std::string UUID = VenueUUID;
|
||||
while(!UUID.empty()) {
|
||||
ProvObjects::Venue V;
|
||||
@@ -156,19 +156,21 @@ namespace OpenWifi {
|
||||
ProvObjects::DeviceConfiguration C;
|
||||
if(StorageService()->ConfigurationDB().GetRecord("id",V.deviceConfiguration,C)) {
|
||||
if(C.firmwareUpgrade=="no") {
|
||||
firmwareUpgrade="no";
|
||||
Rules = ProvObjects::dont_upgrade;
|
||||
return false;
|
||||
}
|
||||
if(C.firmwareUpgrade=="yes") {
|
||||
firmwareUpgrade="yes";
|
||||
firmwareRCOnly=C.firmwareRCOnly;
|
||||
if(C.firmwareRCOnly)
|
||||
Rules = ProvObjects::upgrade_release_only;
|
||||
else
|
||||
Rules = ProvObjects::upgrade_latest;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// must be inherit...
|
||||
if(!V.entity.empty()) {
|
||||
return FindFirmwareOptionsForEntity(V.entity,firmwareUpgrade,firmwareRCOnly);
|
||||
return FindFirmwareOptionsForEntity(V.entity,Rules);
|
||||
} else {
|
||||
UUID=V.parent;
|
||||
}
|
||||
@@ -176,31 +178,26 @@ namespace OpenWifi {
|
||||
break;
|
||||
}
|
||||
}
|
||||
firmwareUpgrade = AutoDiscovery()->firmwareUpgrade();
|
||||
firmwareRCOnly= AutoDiscovery()->firmwareRCOnly();
|
||||
Rules = Daemon()->FirmwareRules();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InventoryDB::FindFirmwareOptions(std::string &SerialNumber, std::string &firmwareUpgrade,
|
||||
bool &firmwareRCOnly) {
|
||||
|
||||
bool InventoryDB::FindFirmwareOptions(std::string &SerialNumber, ProvObjects::FIRMWARE_UPGRADE_RULES & Rules) {
|
||||
ProvObjects::InventoryTag T;
|
||||
firmwareUpgrade = AutoDiscovery()->firmwareUpgrade();
|
||||
firmwareRCOnly= AutoDiscovery()->firmwareRCOnly();
|
||||
if(GetRecord("serialNumber",SerialNumber,T)) {
|
||||
// if there is a local configuration, use this
|
||||
firmwareRCOnly = false;
|
||||
firmwareUpgrade.clear();
|
||||
if(!T.deviceConfiguration.empty()) {
|
||||
ProvObjects::DeviceConfiguration C;
|
||||
if(StorageService()->ConfigurationDB().GetRecord("id",T.deviceConfiguration,C)) {
|
||||
if(C.firmwareUpgrade=="no") {
|
||||
firmwareUpgrade="no";
|
||||
Rules = ProvObjects::dont_upgrade;
|
||||
return false;
|
||||
}
|
||||
if(C.firmwareUpgrade=="yes") {
|
||||
firmwareUpgrade="yes";
|
||||
firmwareRCOnly = C.firmwareRCOnly;
|
||||
if(C.firmwareRCOnly)
|
||||
Rules = ProvObjects::upgrade_release_only;
|
||||
else
|
||||
Rules = ProvObjects::upgrade_latest;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -208,14 +205,16 @@ namespace OpenWifi {
|
||||
|
||||
// look at entity...
|
||||
if(!T.entity.empty()) {
|
||||
return FindFirmwareOptionsForEntity(T.entity,firmwareUpgrade,firmwareRCOnly);
|
||||
return FindFirmwareOptionsForEntity(T.entity,Rules);
|
||||
}
|
||||
|
||||
if(!T.venue.empty()) {
|
||||
return FindFirmwareOptionsForVenue(T.venue,firmwareUpgrade,firmwareRCOnly);
|
||||
return FindFirmwareOptionsForVenue(T.venue,Rules);
|
||||
}
|
||||
Rules = Daemon()->FirmwareRules();
|
||||
return false;
|
||||
}
|
||||
Rules = ProvObjects::dont_upgrade;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,9 +40,9 @@ namespace OpenWifi {
|
||||
public:
|
||||
InventoryDB( OpenWifi::DBType T, Poco::Data::SessionPool & P, Poco::Logger &L);
|
||||
bool CreateFromConnection(const std::string & SerialNumber, const std::string & ConnectionInfo, const std::string & DeviceType);
|
||||
bool FindFirmwareOptions(std::string & SerialNumber, std::string &firmwareUpgrade, bool &firmwareRCOnly);
|
||||
static bool FindFirmwareOptionsForEntity(const std::string & EntityUUID, std::string &firmwareUpgrade, bool &firmwareRCOnly);
|
||||
static bool FindFirmwareOptionsForVenue(const std::string & VenueUUID, std::string &firmwareUpgrade, bool &firmwareRCOnly);
|
||||
bool FindFirmwareOptions(std::string & SerialNumber, ProvObjects::FIRMWARE_UPGRADE_RULES & Rules);
|
||||
static bool FindFirmwareOptionsForEntity(const std::string & EntityUUID, ProvObjects::FIRMWARE_UPGRADE_RULES & Rules);
|
||||
static bool FindFirmwareOptionsForVenue(const std::string & VenueUUID, ProvObjects::FIRMWARE_UPGRADE_RULES & Rules);
|
||||
void InitializeSerialCache();
|
||||
private:
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user