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