mirror of
https://github.com/Telecominfraproject/wlan-cloud-owprov.git
synced 2025-10-29 17:52:28 +00:00
Standardization of device flags: rrm, firmwareUpgrade, rcOnly.
This commit is contained in:
@@ -135,7 +135,7 @@ add_executable(owprov
|
||||
src/storage/storage_variables.cpp src/storage/storage_variables.h
|
||||
src/RESTAPI/RESTAPI_variables_handler.cpp src/RESTAPI/RESTAPI_variables_handler.h
|
||||
src/RESTAPI/RESTAPI_variables_list_handler.cpp src/RESTAPI/RESTAPI_variables_list_handler.h
|
||||
src/FileDownloader.cpp src/FileDownloader.h src/Tasks/VenueConfigUpdater.h src/Kafka_ProvUpdater.cpp src/Kafka_ProvUpdater.h src/storage/storage_operataor.cpp src/storage/storage_operataor.h src/storage/storage_sub_devices.cpp src/storage/storage_sub_devices.h src/storage/storage_service_class.cpp src/storage/storage_service_class.h src/RESTAPI/RESTAPI_sub_devices_list_handler.cpp src/RESTAPI/RESTAPI_sub_devices_list_handler.h src/RESTAPI/RESTAPI_sub_devices_handler.cpp src/RESTAPI/RESTAPI_sub_devices_handler.h src/RESTAPI/RESTAPI_service_class_list_handler.cpp src/RESTAPI/RESTAPI_service_class_list_handler.h src/RESTAPI/RESTAPI_service_class_handler.cpp src/RESTAPI/RESTAPI_service_class_handler.h src/RESTAPI/RESTAPI_operators_list_handler.cpp src/RESTAPI/RESTAPI_operators_list_handler.h src/RESTAPI/RESTAPI_operators_handler.cpp src/RESTAPI/RESTAPI_operators_handler.h src/storage/storage_op_contacts.cpp src/storage/storage_op_contacts.h src/storage/storage_op_locations.cpp src/storage/storage_op_locations.h src/RESTAPI/RESTAPI_op_contact_list_handler.cpp src/RESTAPI/RESTAPI_op_contact_list_handler.h src/RESTAPI/RESTAPI_op_contact_handler.cpp src/RESTAPI/RESTAPI_op_contact_handler.h src/RESTAPI/RESTAPI_op_location_list_handler.cpp src/RESTAPI/RESTAPI_op_location_list_handler.h src/RESTAPI/RESTAPI_op_location_handler.cpp src/RESTAPI/RESTAPI_op_location_handler.h src/ProvWebSocketClient.cpp src/ProvWebSocketClient.h src/Tasks/VenueRebooter.h)
|
||||
src/FileDownloader.cpp src/FileDownloader.h src/Tasks/VenueConfigUpdater.h src/Kafka_ProvUpdater.cpp src/Kafka_ProvUpdater.h src/storage/storage_operataor.cpp src/storage/storage_operataor.h src/storage/storage_sub_devices.cpp src/storage/storage_sub_devices.h src/storage/storage_service_class.cpp src/storage/storage_service_class.h src/RESTAPI/RESTAPI_sub_devices_list_handler.cpp src/RESTAPI/RESTAPI_sub_devices_list_handler.h src/RESTAPI/RESTAPI_sub_devices_handler.cpp src/RESTAPI/RESTAPI_sub_devices_handler.h src/RESTAPI/RESTAPI_service_class_list_handler.cpp src/RESTAPI/RESTAPI_service_class_list_handler.h src/RESTAPI/RESTAPI_service_class_handler.cpp src/RESTAPI/RESTAPI_service_class_handler.h src/RESTAPI/RESTAPI_operators_list_handler.cpp src/RESTAPI/RESTAPI_operators_list_handler.h src/RESTAPI/RESTAPI_operators_handler.cpp src/RESTAPI/RESTAPI_operators_handler.h src/storage/storage_op_contacts.cpp src/storage/storage_op_contacts.h src/storage/storage_op_locations.cpp src/storage/storage_op_locations.h src/RESTAPI/RESTAPI_op_contact_list_handler.cpp src/RESTAPI/RESTAPI_op_contact_list_handler.h src/RESTAPI/RESTAPI_op_contact_handler.cpp src/RESTAPI/RESTAPI_op_contact_handler.h src/RESTAPI/RESTAPI_op_location_list_handler.cpp src/RESTAPI/RESTAPI_op_location_list_handler.h src/RESTAPI/RESTAPI_op_location_handler.cpp src/RESTAPI/RESTAPI_op_location_handler.h src/ProvWebSocketClient.cpp src/ProvWebSocketClient.h src/Tasks/VenueRebooter.h src/Tasks/VenueUpgrade.h src/sdks/SDK_fms.cpp src/sdks/SDK_fms.h)
|
||||
|
||||
target_link_libraries(owprov PUBLIC
|
||||
${Poco_LIBRARIES}
|
||||
|
||||
@@ -181,6 +181,28 @@ components:
|
||||
items:
|
||||
$ref: '#/components/schemas/ManagementPolicy'
|
||||
|
||||
DeviceRules:
|
||||
type: object
|
||||
properties:
|
||||
rcOnly:
|
||||
type: string
|
||||
enum:
|
||||
- yes
|
||||
- no
|
||||
- inherit
|
||||
rrm:
|
||||
type: string
|
||||
enum:
|
||||
- yes
|
||||
- no
|
||||
- inherit
|
||||
firmwareUpgrade:
|
||||
type: string
|
||||
enum:
|
||||
- yes
|
||||
- no
|
||||
- inherit
|
||||
|
||||
# uuids: ent:<uuid>
|
||||
Entity:
|
||||
type: object
|
||||
@@ -255,12 +277,8 @@ components:
|
||||
items:
|
||||
type: string
|
||||
format: uuid
|
||||
rrm:
|
||||
type: string
|
||||
enum:
|
||||
- off
|
||||
- on
|
||||
- inherit
|
||||
deviceRules:
|
||||
$ref: '#/components/schemas/DeviceRules'
|
||||
sourceIP:
|
||||
$ref: '#/components/schemas/StringList'
|
||||
defaultEntity:
|
||||
@@ -336,12 +354,8 @@ components:
|
||||
location:
|
||||
type: string
|
||||
format: uuid
|
||||
rrm:
|
||||
type: string
|
||||
enum:
|
||||
- off
|
||||
- on
|
||||
- inherit
|
||||
deviceRules:
|
||||
$ref: '#/components/schemas/DeviceRules'
|
||||
sourceIP:
|
||||
$ref: '#/components/schemas/StringList'
|
||||
managementPolicies:
|
||||
@@ -790,17 +804,8 @@ components:
|
||||
subscriberOnly:
|
||||
type: boolean
|
||||
default: false
|
||||
rrm:
|
||||
type: string
|
||||
enum:
|
||||
- off
|
||||
- on
|
||||
- inherit
|
||||
firmwareUpgrade:
|
||||
type: string
|
||||
example: auto or a time string of the format DOW-HH:MM
|
||||
firmwareRCOnly:
|
||||
type: boolean
|
||||
deviceRules:
|
||||
$ref: '#/components/schemas/DeviceRules'
|
||||
venue:
|
||||
type: string
|
||||
format: uuid
|
||||
@@ -850,12 +855,8 @@ components:
|
||||
deviceConfiguration:
|
||||
type: string
|
||||
format: uuid
|
||||
rrm:
|
||||
type: string
|
||||
enum:
|
||||
- off
|
||||
- on
|
||||
- inherit
|
||||
deviceRules:
|
||||
$ref: '#/components/schemas/DeviceRules'
|
||||
managementPolicy:
|
||||
type: string
|
||||
format: uuid
|
||||
@@ -1198,17 +1199,8 @@ components:
|
||||
defaultOperator:
|
||||
type: boolean
|
||||
default: false
|
||||
rrm:
|
||||
type: string
|
||||
enum:
|
||||
- off
|
||||
- on
|
||||
- inherit
|
||||
firmwareUpgrade:
|
||||
type: string
|
||||
example: auto or a time string of the format DOW-HH:MM
|
||||
firmwareRCOnly:
|
||||
type: boolean
|
||||
deviceRules:
|
||||
$ref: '#/components/schemas/DeviceRules'
|
||||
managementPolicy:
|
||||
type: string
|
||||
format: uuid
|
||||
@@ -1254,12 +1246,8 @@ components:
|
||||
$ref: '#/components/schemas/SubLocation'
|
||||
contact:
|
||||
$ref: '#/components/schemas/SubContact'
|
||||
rrm:
|
||||
type: string
|
||||
enum:
|
||||
- off
|
||||
- on
|
||||
- inherit
|
||||
deviceRules:
|
||||
$ref: '#/components/schemas/DeviceRules'
|
||||
state:
|
||||
type: string
|
||||
locale:
|
||||
|
||||
@@ -202,9 +202,8 @@ namespace OpenWifi{
|
||||
Existing.variables = ToVariables;
|
||||
}
|
||||
|
||||
AssignIfPresent(RawObject, "rrm", Existing.rrm);
|
||||
AssignIfPresent(RawObject, "firmwareUpgrade",Existing.firmwareUpgrade);
|
||||
AssignIfPresent(RawObject, "firmwareRCOnly", Existing.firmwareRCOnly);
|
||||
if(RawObject->has("deviceRules"))
|
||||
Existing.deviceRules = NewConfig.deviceRules;
|
||||
|
||||
if(DB_.UpdateRecord("id",UUID,Existing)) {
|
||||
ManageMembership(StorageService()->VariablesDB(),&ProvObjects::VariableBlock::configurations, FromVariables, ToVariables, Existing.info.id);
|
||||
|
||||
@@ -525,12 +525,14 @@ namespace OpenWifi {
|
||||
return Result;
|
||||
}
|
||||
|
||||
inline bool ValidRRM(const std::string &V) {
|
||||
return (V=="on" || V=="off" || V=="inherit");
|
||||
inline bool ValidDeviceRules(const ProvObjects::DeviceRules & DR) {
|
||||
return (DR.rrm=="on" || DR.rrm=="off" || DR.rrm=="inherit") &&
|
||||
(DR.firmwareUpgrade=="on" || DR.firmwareUpgrade=="off" || DR.firmwareUpgrade=="inherit") &&
|
||||
(DR.rcOnly=="on" || DR.rcOnly=="off" || DR.rcOnly=="inherit");
|
||||
}
|
||||
|
||||
inline bool ValidRRM(const std::string &V, RESTAPIHandler &H) {
|
||||
if(V=="on" || V=="off" || V=="inherit")
|
||||
inline bool ValidDeviceRules(const ProvObjects::DeviceRules & DR, RESTAPIHandler &H) {
|
||||
if(ValidDeviceRules(DR))
|
||||
return true;
|
||||
H.BadRequest(RESTAPI::Errors::InvalidRRM);
|
||||
return false;
|
||||
|
||||
@@ -150,7 +150,8 @@ namespace OpenWifi{
|
||||
return BadRequest(Error);
|
||||
}
|
||||
|
||||
AssignIfPresent(RawObject, "rrm", Existing.rrm);
|
||||
if(RawObject->has("deviceRules"))
|
||||
Existing.deviceRules = NewEntity.deviceRules;
|
||||
|
||||
if(DB_.UpdateRecord("id",UUID,Existing)) {
|
||||
MoveUsage(StorageService()->PolicyDB(),DB_,FromPolicy,ToPolicy,Existing.info.id);
|
||||
|
||||
@@ -299,7 +299,8 @@ namespace OpenWifi{
|
||||
return BadRequest(RESTAPI::Errors::NameMustBeSet);
|
||||
}
|
||||
|
||||
AssignIfPresent(RawObject, "rrm",Existing.rrm);
|
||||
if(RawObject->has("deviceRules"))
|
||||
Existing.deviceRules = NewObject.deviceRules;
|
||||
|
||||
std::string FromPolicy, ToPolicy;
|
||||
if(!CreateMove(RawObject,"managementPolicy",&InventoryDB::RecordName::managementPolicy, Existing, FromPolicy,
|
||||
|
||||
@@ -65,13 +65,6 @@ namespace OpenWifi {
|
||||
return BadRequest(RESTAPI::Errors::UnknownManagementPolicyUUID);
|
||||
}
|
||||
|
||||
if(NewObject.rrm.empty())
|
||||
NewObject.rrm = "inherit";
|
||||
|
||||
if(!ValidRRM(NewObject.rrm)) {
|
||||
return BadRequest(RESTAPI::Errors::InvalidRRM);
|
||||
}
|
||||
|
||||
if(!ValidSourceIP(NewObject.sourceIP)) {
|
||||
return BadRequest(RESTAPI::Errors::InvalidIPAddresses);
|
||||
}
|
||||
@@ -143,15 +136,8 @@ namespace OpenWifi {
|
||||
Existing.sourceIP = UpdatedObj.sourceIP;
|
||||
}
|
||||
|
||||
if(RawObject->has("rrm")) {
|
||||
if(!UpdatedObj.rrm.empty() && !ValidRRM(UpdatedObj.rrm)) {
|
||||
return BadRequest(RESTAPI::Errors::InvalidRRM);
|
||||
}
|
||||
Existing.rrm = UpdatedObj.rrm.empty() ? "inherit" : UpdatedObj.rrm;
|
||||
}
|
||||
|
||||
AssignIfPresent(RawObject, "firmwareUpgrade", Existing.firmwareUpgrade);
|
||||
AssignIfPresent(RawObject, "firmwareRCOnly", Existing.firmwareRCOnly);
|
||||
if(RawObject->has("deviceRules"))
|
||||
Existing.deviceRules = UpdatedObj.deviceRules;
|
||||
|
||||
return ReturnUpdatedObject(DB_, Existing, *this);
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace OpenWifi {
|
||||
!ValidDbId(NewObject.operatorId, StorageService()->OperatorDB(), true, RESTAPI::Errors::InvalidOperatorId, *this) ||
|
||||
!ValidDbId(NewObject.serviceClass, StorageService()->ServiceClassDB(), true, RESTAPI::Errors::InvalidServiceClassId, *this) ||
|
||||
!ValidSubscriberId(NewObject.subscriberId, true, *this) ||
|
||||
!ValidRRM(NewObject.rrm,*this) ||
|
||||
(RawObject->has("deviceRules") && !ValidDeviceRules(NewObject.deviceRules,*this)) ||
|
||||
!ValidSerialNumber(NewObject.serialNumber,false,*this)
|
||||
) {
|
||||
return;
|
||||
@@ -86,7 +86,7 @@ namespace OpenWifi {
|
||||
!ValidDbId(UpdateObj.operatorId, StorageService()->OperatorDB(), true, RESTAPI::Errors::InvalidOperatorId, *this) ||
|
||||
!ValidDbId(UpdateObj.serviceClass, StorageService()->ServiceClassDB(), true, RESTAPI::Errors::InvalidServiceClassId, *this) ||
|
||||
!ValidSubscriberId(UpdateObj.subscriberId, true, *this) ||
|
||||
!ValidRRM(UpdateObj.rrm,*this) ||
|
||||
(RawObject->has("deviceRules") && !ValidDeviceRules(UpdateObj.deviceRules,*this)) ||
|
||||
!ValidSerialNumber(UpdateObj.serialNumber,false,*this)
|
||||
) {
|
||||
return;
|
||||
@@ -99,7 +99,8 @@ namespace OpenWifi {
|
||||
AssignIfPresent(RawObject, "serviceClass", Existing.serviceClass);
|
||||
AssignIfPresent(RawObject, "qrCode", Existing.qrCode);
|
||||
AssignIfPresent(RawObject, "geoCode", Existing.geoCode);
|
||||
AssignIfPresent(RawObject, "rrm", Existing.rrm);
|
||||
if(RawObject->has("deviceRules"))
|
||||
Existing.deviceRules = UpdateObj.deviceRules;
|
||||
AssignIfPresent(RawObject, "state", Existing.state);
|
||||
AssignIfPresent(RawObject, "locale", Existing.locale);
|
||||
AssignIfPresent(RawObject, "billingCode", Existing.billingCode);
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "RESTAPI/RESTAPI_db_helpers.h"
|
||||
#include "Tasks/VenueConfigUpdater.h"
|
||||
#include "Tasks/VenueRebooter.h"
|
||||
#include "Tasks/VenueUpgrade.h"
|
||||
|
||||
#include "Kafka_ProvUpdater.h"
|
||||
|
||||
@@ -216,8 +217,7 @@ namespace OpenWifi{
|
||||
return ReturnObject(Answer);
|
||||
}
|
||||
|
||||
auto updateAllDevices = GetBoolParameter("updateAllDevices");
|
||||
if(updateAllDevices) {
|
||||
if(GetBoolParameter("updateAllDevices")) {
|
||||
ProvObjects::SerialNumberList SNL;
|
||||
|
||||
Poco::JSON::Object Answer;
|
||||
@@ -231,8 +231,21 @@ namespace OpenWifi{
|
||||
return ReturnObject(Answer);
|
||||
}
|
||||
|
||||
auto rebootAllDevices = GetBoolParameter("rebootAllDevices");
|
||||
if(rebootAllDevices) {
|
||||
if(GetBoolParameter("upgradeAllDevices")) {
|
||||
ProvObjects::SerialNumberList SNL;
|
||||
|
||||
Poco::JSON::Object Answer;
|
||||
SNL.serialNumbers = Existing.devices;
|
||||
|
||||
auto Task = new VenueUpgrade(UUID,UserInfo_.userinfo,0,Logger());
|
||||
auto JobId = Task->Start();
|
||||
|
||||
SNL.to_json(Answer);
|
||||
Answer.set("jobId",JobId);
|
||||
return ReturnObject(Answer);
|
||||
}
|
||||
|
||||
if(GetBoolParameter("rebootAllDevices")) {
|
||||
ProvObjects::SerialNumberList SNL;
|
||||
|
||||
Poco::JSON::Object Answer;
|
||||
@@ -256,7 +269,8 @@ namespace OpenWifi{
|
||||
return BadRequest( RESTAPI::Errors::NameMustBeSet);
|
||||
}
|
||||
|
||||
AssignIfPresent(RawObject, "rrm",Existing.rrm);
|
||||
if(RawObject->has("deviceRules"))
|
||||
Existing.deviceRules = NewObject.deviceRules;
|
||||
|
||||
if(RawObject->has("sourceIP")) {
|
||||
if(!NewObject.sourceIP.empty() && !CIDR::ValidateIpRanges(NewObject.sourceIP)) {
|
||||
|
||||
@@ -91,7 +91,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_to_json( Obj,"managementPolicy",managementPolicy);
|
||||
field_to_json( Obj,"deviceConfiguration",deviceConfiguration);
|
||||
field_to_json( Obj,"devices",devices);
|
||||
field_to_json( Obj,"rrm",rrm);
|
||||
field_to_json( Obj,"deviceRules",deviceRules);
|
||||
field_to_json( Obj,"sourceIP",sourceIP);
|
||||
field_to_json( Obj,"variables", variables);
|
||||
field_to_json( Obj,"managementPolicies", managementPolicies);
|
||||
@@ -111,7 +111,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_from_json( Obj,"managementPolicy",managementPolicy);
|
||||
field_from_json( Obj,"deviceConfiguration",deviceConfiguration);
|
||||
field_from_json( Obj,"devices",devices);
|
||||
field_from_json( Obj,"rrm",rrm);
|
||||
field_from_json( Obj,"deviceRules",deviceRules);
|
||||
field_from_json( Obj,"sourceIP",sourceIP);
|
||||
field_from_json( Obj,"variables", variables);
|
||||
field_from_json( Obj,"managementPolicies", managementPolicies);
|
||||
@@ -154,7 +154,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_to_json( Obj,"deviceConfiguration",deviceConfiguration);
|
||||
field_to_json( Obj,"contacts",contacts);
|
||||
field_to_json( Obj,"location",location);
|
||||
field_to_json( Obj,"rrm",rrm);
|
||||
field_to_json( Obj,"deviceRules",deviceRules);
|
||||
field_to_json( Obj,"sourceIP",sourceIP);
|
||||
field_to_json( Obj,"variables", variables);
|
||||
field_to_json( Obj,"managementPolicies", managementPolicies);
|
||||
@@ -178,7 +178,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_from_json( Obj,"deviceConfiguration",deviceConfiguration);
|
||||
field_from_json( Obj,"contacts",contacts);
|
||||
field_from_json( Obj,"location",location);
|
||||
field_from_json( Obj,"rrm",rrm);
|
||||
field_from_json( Obj,"deviceRules",deviceRules);
|
||||
field_from_json( Obj,"sourceIP",sourceIP);
|
||||
field_from_json( Obj,"variables", variables);
|
||||
field_from_json( Obj,"managementPolicies", managementPolicies);
|
||||
@@ -197,9 +197,7 @@ namespace OpenWifi::ProvObjects {
|
||||
info.to_json(Obj);
|
||||
field_to_json( Obj,"managementPolicy",managementPolicy);
|
||||
field_to_json( Obj,"managementRoles",managementRoles);
|
||||
field_to_json( Obj,"rrm",rrm);
|
||||
field_to_json( Obj,"firmwareUpgrade",firmwareUpgrade);
|
||||
field_to_json( Obj,"firmwareRCOnly",firmwareRCOnly);
|
||||
field_to_json( Obj,"deviceRules",deviceRules);
|
||||
field_to_json( Obj,"variables",variables);
|
||||
field_to_json( Obj,"defaultOperator",defaultOperator);
|
||||
field_to_json( Obj,"sourceIP",sourceIP);
|
||||
@@ -211,9 +209,7 @@ namespace OpenWifi::ProvObjects {
|
||||
info.from_json(Obj);
|
||||
field_from_json( Obj,"managementPolicy",managementPolicy);
|
||||
field_from_json( Obj,"managementRoles",managementRoles);
|
||||
field_from_json( Obj,"rrm",rrm);
|
||||
field_from_json( Obj,"firmwareUpgrade",firmwareUpgrade);
|
||||
field_from_json( Obj,"firmwareRCOnly",firmwareRCOnly);
|
||||
field_from_json( Obj,"deviceRules",deviceRules);
|
||||
field_from_json( Obj,"variables",variables);
|
||||
field_from_json( Obj,"defaultOperator",defaultOperator);
|
||||
field_from_json( Obj,"sourceIP",sourceIP);
|
||||
@@ -598,7 +594,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_to_json( Obj, "location", location);
|
||||
field_to_json( Obj, "contact", contact);
|
||||
field_to_json( Obj, "deviceConfiguration",deviceConfiguration);
|
||||
field_to_json( Obj, "rrm",rrm);
|
||||
field_to_json( Obj,"deviceRules",deviceRules);
|
||||
field_to_json( Obj, "managementPolicy",managementPolicy);
|
||||
field_to_json( Obj, "state",state);
|
||||
field_to_json( Obj, "devClass",devClass);
|
||||
@@ -619,7 +615,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_from_json( Obj,"location",location);
|
||||
field_from_json( Obj,"contact",contact);
|
||||
field_from_json( Obj,"deviceConfiguration",deviceConfiguration);
|
||||
field_from_json( Obj,"rrm",rrm);
|
||||
field_from_json( Obj,"deviceRules",deviceRules);
|
||||
field_from_json( Obj,"managementPolicy",managementPolicy);
|
||||
field_from_json( Obj,"state",state);
|
||||
field_from_json( Obj,"devClass",devClass);
|
||||
@@ -690,8 +686,6 @@ namespace OpenWifi::ProvObjects {
|
||||
info.to_json(Obj);
|
||||
field_to_json( Obj,"managementPolicy",managementPolicy);
|
||||
field_to_json( Obj,"deviceTypes",deviceTypes);
|
||||
field_to_json( Obj,"firmwareUpgrade",firmwareUpgrade);
|
||||
field_to_json( Obj,"firmwareRCOnly",firmwareRCOnly);
|
||||
field_to_json( Obj,"subscriberOnly",subscriberOnly);
|
||||
field_to_json( Obj,"entity", entity);
|
||||
field_to_json( Obj,"venue", venue);
|
||||
@@ -699,7 +693,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_to_json( Obj,"configuration",configuration);
|
||||
field_to_json( Obj,"inUse",inUse);
|
||||
field_to_json( Obj,"variables",variables);
|
||||
field_to_json( Obj,"rrm",rrm);
|
||||
field_to_json( Obj,"deviceRules",deviceRules);
|
||||
}
|
||||
|
||||
bool DeviceConfiguration::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
||||
@@ -714,9 +708,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_from_json( Obj,"venue", venue);
|
||||
field_from_json( Obj,"subscriber", subscriber);
|
||||
field_from_json( Obj,"configuration",configuration);
|
||||
field_from_json( Obj,"rrm",rrm);
|
||||
field_from_json( Obj,"firmwareUpgrade",firmwareUpgrade);
|
||||
field_from_json( Obj,"firmwareRCOnly",firmwareRCOnly);
|
||||
field_from_json( Obj,"deviceRules",deviceRules);
|
||||
return true;
|
||||
} catch(...) {
|
||||
|
||||
@@ -1028,7 +1020,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_to_json( Obj,"serviceClass", serviceClass);
|
||||
field_to_json( Obj,"qrCode", qrCode);
|
||||
field_to_json( Obj,"geoCode", geoCode);
|
||||
field_to_json( Obj,"rrm", rrm);
|
||||
field_to_json( Obj,"deviceRules",deviceRules);
|
||||
field_to_json( Obj,"state", state);
|
||||
field_to_json( Obj,"locale", locale);
|
||||
field_to_json( Obj,"billingCode", billingCode);
|
||||
@@ -1052,7 +1044,7 @@ namespace OpenWifi::ProvObjects {
|
||||
field_from_json( Obj,"serviceClass", serviceClass);
|
||||
field_from_json( Obj,"qrCode", qrCode);
|
||||
field_from_json( Obj,"geoCode", geoCode);
|
||||
field_from_json( Obj,"rrm", rrm);
|
||||
field_from_json( Obj,"deviceRules",deviceRules);
|
||||
field_from_json( Obj,"state", state);
|
||||
field_from_json( Obj,"locale", locale);
|
||||
field_from_json( Obj,"billingCode", billingCode);
|
||||
@@ -1153,5 +1145,23 @@ namespace OpenWifi::ProvObjects {
|
||||
return true;
|
||||
}
|
||||
|
||||
void DeviceRules::to_json(Poco::JSON::Object &Obj) const {
|
||||
field_to_json(Obj,"rcOnly",rcOnly);
|
||||
field_to_json(Obj,"rrm",rrm);
|
||||
field_to_json(Obj,"firmwareUpgrade",firmwareUpgrade);
|
||||
}
|
||||
|
||||
bool DeviceRules::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
||||
try {
|
||||
field_from_json(Obj,"rcOnly",rcOnly);
|
||||
field_from_json(Obj,"rrm",rrm);
|
||||
field_from_json(Obj,"firmwareUpgrade",firmwareUpgrade);
|
||||
return true;
|
||||
} catch(...) {
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -62,6 +62,15 @@ namespace OpenWifi::ProvObjects {
|
||||
};
|
||||
typedef std::vector<ManagementPolicy> ManagementPolicyVec;
|
||||
|
||||
struct DeviceRules {
|
||||
std::string rcOnly{"inherit"};
|
||||
std::string rrm{"inherit"};
|
||||
std::string firmwareUpgrade{"inherit"};
|
||||
|
||||
void to_json(Poco::JSON::Object &Obj) const;
|
||||
bool from_json(const Poco::JSON::Object::Ptr &Obj);
|
||||
};
|
||||
|
||||
struct Entity {
|
||||
ObjectInfo info;
|
||||
Types::UUID_t parent;
|
||||
@@ -72,7 +81,7 @@ namespace OpenWifi::ProvObjects {
|
||||
Types::UUID_t managementPolicy;
|
||||
Types::UUIDvec_t deviceConfiguration;
|
||||
Types::UUIDvec_t devices;
|
||||
std::string rrm;
|
||||
DeviceRules deviceRules;
|
||||
Types::StringVec sourceIP;
|
||||
Types::UUIDvec_t variables;
|
||||
Types::UUIDvec_t managementPolicies;
|
||||
@@ -107,7 +116,7 @@ namespace OpenWifi::ProvObjects {
|
||||
Types::UUIDvec_t deviceConfiguration;
|
||||
Types::UUIDvec_t contacts;
|
||||
std::string location;
|
||||
std::string rrm;
|
||||
DeviceRules deviceRules;
|
||||
Types::StringVec sourceIP;
|
||||
Types::UUIDvec_t variables;
|
||||
Types::UUIDvec_t configurations;
|
||||
@@ -375,9 +384,7 @@ namespace OpenWifi::ProvObjects {
|
||||
DeviceConfigurationElementVec configuration;
|
||||
Types::StringVec inUse;
|
||||
Types::UUIDvec_t variables;
|
||||
std::string rrm;
|
||||
std::string firmwareUpgrade;
|
||||
bool firmwareRCOnly=false;
|
||||
DeviceRules deviceRules;
|
||||
bool subscriberOnly=false;
|
||||
std::string venue;
|
||||
std::string entity;
|
||||
@@ -401,7 +408,7 @@ namespace OpenWifi::ProvObjects {
|
||||
std::string location;
|
||||
std::string contact;
|
||||
std::string deviceConfiguration;
|
||||
std::string rrm;
|
||||
DeviceRules deviceRules;
|
||||
Types::UUID_t managementPolicy;
|
||||
std::string state;
|
||||
std::string devClass;
|
||||
@@ -582,9 +589,7 @@ namespace OpenWifi::ProvObjects {
|
||||
ObjectInfo info;
|
||||
Types::UUID_t managementPolicy;
|
||||
Types::UUIDvec_t managementRoles;
|
||||
std::string rrm;
|
||||
std::string firmwareUpgrade;
|
||||
bool firmwareRCOnly=true;
|
||||
DeviceRules deviceRules;
|
||||
std::vector<Variable> variables;
|
||||
bool defaultOperator=false;
|
||||
Types::StringVec sourceIP;
|
||||
@@ -655,7 +660,7 @@ namespace OpenWifi::ProvObjects {
|
||||
Types::UUID_t serviceClass;
|
||||
std::string qrCode;
|
||||
std::string geoCode;
|
||||
std::string rrm{"inherit"};
|
||||
DeviceRules deviceRules;
|
||||
std::string state;
|
||||
std::string locale;
|
||||
std::string billingCode;
|
||||
|
||||
@@ -247,7 +247,7 @@ namespace OpenWifi {
|
||||
Root.info.id = EntityDB::RootUUID();
|
||||
Root.info.name = "Top Entity";
|
||||
Root.info.created = Root.info.modified = OpenWifi::Now();
|
||||
Root.rrm = "off";
|
||||
Root.deviceRules.rrm = "off";
|
||||
EntityDB().CreateRecord(Root);
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@ namespace OpenWifi {
|
||||
DefOp.info.name = "Default Operator";
|
||||
DefOp.defaultOperator = true;
|
||||
DefOp.info.created = DefOp.info.modified = OpenWifi::Now();
|
||||
DefOp.rrm = "inherit";
|
||||
DefOp.deviceRules.rrm = "inherit";
|
||||
OperatorDB_->CreateRecord(DefOp);
|
||||
|
||||
ProvObjects::ServiceClass DefSer;
|
||||
|
||||
180
src/Tasks/VenueUpgrade.h
Normal file
180
src/Tasks/VenueUpgrade.h
Normal file
@@ -0,0 +1,180 @@
|
||||
//
|
||||
// Created by stephane bourque on 2022-05-12.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "framework/MicroService.h"
|
||||
#include "framework/WebSocketClientNotifications.h"
|
||||
|
||||
#include "StorageService.h"
|
||||
#include "APConfig.h"
|
||||
#include "sdks/SDK_gw.h"
|
||||
#include "sdks/SDK_fms.h"
|
||||
|
||||
namespace OpenWifi {
|
||||
class VenueDeviceUpgrade : public Poco::Runnable {
|
||||
public:
|
||||
VenueDeviceUpgrade(const std::string &UUID, const std::string &venue, [[maybe_unused]] const std::string &fw_rules, Poco::Logger &L) :
|
||||
uuid_(UUID),
|
||||
venue_(venue),
|
||||
Logger_(L) {
|
||||
}
|
||||
|
||||
void run() final {
|
||||
ProvObjects::InventoryTag Device;
|
||||
started_=true;
|
||||
if(StorageService()->InventoryDB().GetRecord("id",uuid_,Device)) {
|
||||
SerialNumber = Device.serialNumber;
|
||||
// get the latest firmware for device type
|
||||
if (SDK::GW::Device::Reboot(Device.serialNumber, 0)) {
|
||||
Logger().debug(fmt::format("{}: Upgraded.",Device.serialNumber));
|
||||
upgraded_++;
|
||||
} else {
|
||||
Logger().information(fmt::format("{}: Not Upgraded.", Device.serialNumber));
|
||||
failed_++;
|
||||
}
|
||||
}
|
||||
done_ = true;
|
||||
// std::cout << "Done push for " << Device.serialNumber << std::endl;
|
||||
}
|
||||
|
||||
uint64_t upgraded_=0, failed_=0;
|
||||
bool started_ = false,
|
||||
done_ = false;
|
||||
std::string SerialNumber;
|
||||
|
||||
private:
|
||||
std::string uuid_;
|
||||
std::string venue_;
|
||||
Poco::Logger &Logger_;
|
||||
inline Poco::Logger & Logger() { return Logger_; }
|
||||
};
|
||||
|
||||
class VenueUpgrade: public Poco::Runnable {
|
||||
public:
|
||||
explicit VenueUpgrade(const std::string & VenueUUID, const SecurityObjects::UserInfo &UI, uint64_t When, Poco::Logger &L) :
|
||||
VenueUUID_(VenueUUID),
|
||||
UI_(UI),
|
||||
When_(When),
|
||||
Logger_(L)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
inline std::string Start() {
|
||||
JobId_ = MicroService::CreateUUID();
|
||||
Worker_.start(*this);
|
||||
return JobId_;
|
||||
}
|
||||
|
||||
private:
|
||||
std::string VenueUUID_;
|
||||
SecurityObjects::UserInfo UI_;
|
||||
uint64_t When_;
|
||||
Poco::Logger &Logger_;
|
||||
Poco::Thread Worker_;
|
||||
std::string JobId_;
|
||||
Poco::ThreadPool Pool_{2,16,300};
|
||||
|
||||
inline Poco::Logger & Logger() { return Logger_; }
|
||||
|
||||
inline void run() final {
|
||||
|
||||
if(When_ && When_>OpenWifi::Now())
|
||||
Poco::Thread::trySleep( (long) (When_ - OpenWifi::Now()) * 1000 );
|
||||
|
||||
WebSocketClientNotificationVenueRebootList_t N;
|
||||
|
||||
Logger().information(fmt::format("Job {} Starting.", JobId_));
|
||||
|
||||
ProvObjects::Venue Venue;
|
||||
uint64_t upgraded_ = 0, failed_ = 0;
|
||||
if(StorageService()->VenueDB().GetRecord("id",VenueUUID_,Venue)) {
|
||||
const std::size_t MaxThreads=16;
|
||||
struct tState {
|
||||
Poco::Thread thr_;
|
||||
VenueDeviceUpgrade *task= nullptr;
|
||||
};
|
||||
|
||||
N.content.title = fmt::format("Upgrading {} devices.", Venue.info.name);
|
||||
N.content.jobId = JobId_;
|
||||
|
||||
std::array<tState,MaxThreads> Tasks;
|
||||
|
||||
for(const auto &uuid:Venue.devices) {
|
||||
std::string fw_rules;
|
||||
auto NewTask = new VenueDeviceUpgrade(uuid, Venue.info.name, fw_rules,Logger());
|
||||
// std::cout << "Scheduling config push for " << uuid << std::endl;
|
||||
bool found_slot = false;
|
||||
while (!found_slot) {
|
||||
for (auto &cur_task: Tasks) {
|
||||
if (cur_task.task == nullptr) {
|
||||
cur_task.task = NewTask;
|
||||
cur_task.thr_.start(*NewTask);
|
||||
found_slot = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Let's look for a slot...
|
||||
if (!found_slot) {
|
||||
for (auto &cur_task: Tasks) {
|
||||
if (cur_task.task != nullptr && cur_task.task->started_) {
|
||||
if (cur_task.thr_.isRunning())
|
||||
continue;
|
||||
if (!cur_task.thr_.isRunning() && cur_task.task->done_) {
|
||||
cur_task.thr_.join();
|
||||
upgraded_ += cur_task.task->upgraded_;
|
||||
failed_ += cur_task.task->failed_;
|
||||
cur_task.task->started_ = cur_task.task->done_ = false;
|
||||
delete cur_task.task;
|
||||
cur_task.task = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Logger().debug("Waiting for outstanding update threads to finish.");
|
||||
bool stillTasksRunning=true;
|
||||
while(stillTasksRunning) {
|
||||
stillTasksRunning = false;
|
||||
for(auto &cur_task:Tasks) {
|
||||
if(cur_task.task!= nullptr && cur_task.task->started_) {
|
||||
if(cur_task.thr_.isRunning()) {
|
||||
stillTasksRunning = true;
|
||||
continue;
|
||||
}
|
||||
if(!cur_task.thr_.isRunning() && cur_task.task->done_) {
|
||||
cur_task.thr_.join();
|
||||
if(cur_task.task->upgraded_) {
|
||||
upgraded_++;
|
||||
N.content.success.push_back(cur_task.task->SerialNumber);
|
||||
} else if(cur_task.task->failed_) {
|
||||
failed_++;
|
||||
N.content.warning.push_back(cur_task.task->SerialNumber);
|
||||
}
|
||||
cur_task.task->started_ = cur_task.task->done_ = false;
|
||||
delete cur_task.task;
|
||||
cur_task.task = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
N.content.details = fmt::format("Job {} Completed: {} upgraded, {} failed to upgrade.",
|
||||
JobId_, upgraded_ ,failed_);
|
||||
|
||||
} else {
|
||||
N.content.details = fmt::format("Venue {} no longer exists.",VenueUUID_);
|
||||
Logger().warning(N.content.details);
|
||||
}
|
||||
|
||||
WebSocketClientNotificationVenueRebootCompletionToUser(UI_.email,N);
|
||||
Logger().information(fmt::format("Job {} Completed: {} upgraded, {} failed to upgrade.",
|
||||
JobId_, upgraded_ ,failed_));
|
||||
delete this;
|
||||
}
|
||||
};
|
||||
}
|
||||
34
src/sdks/SDK_fms.cpp
Normal file
34
src/sdks/SDK_fms.cpp
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// Created by stephane bourque on 2022-05-12.
|
||||
//
|
||||
|
||||
#include "SDK_fms.h"
|
||||
#include "framework/MicroService.h"
|
||||
#include "RESTObjects/RESTAPI_FMSObjects.h"
|
||||
|
||||
namespace OpenWifi::SDK::FMS {
|
||||
|
||||
namespace Firmware {
|
||||
|
||||
bool GetLatest(const std::string &device_type, bool RCOnly, FMSObjects::Firmware & FirmWare) {
|
||||
static const std::string EndPoint{"/api/v1/firmwares"};
|
||||
|
||||
OpenWifi::OpenAPIRequestGet API( uSERVICE_FIRMWARE,
|
||||
EndPoint,
|
||||
{ { "latestOnly" , "true"},
|
||||
{ "deviceType", device_type},
|
||||
{ "rcOnly" , RCOnly ? "true" : "false" }
|
||||
},
|
||||
50000);
|
||||
|
||||
auto CallResponse = Poco::makeShared<Poco::JSON::Object>();
|
||||
auto StatusCode = API.Do(CallResponse);
|
||||
if( StatusCode == Poco::Net::HTTPResponse::HTTP_OK) {
|
||||
return FirmWare.from_json(CallResponse);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
18
src/sdks/SDK_fms.h
Normal file
18
src/sdks/SDK_fms.h
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// Created by stephane bourque on 2022-05-12.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include "RESTObjects/RESTAPI_FMSObjects.h"
|
||||
|
||||
namespace OpenWifi::SDK::FMS {
|
||||
|
||||
namespace Firmware {
|
||||
bool GetLatest(const std::string &device_type, bool RCOnly, FMSObjects::Firmware & FirmWare);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -28,10 +28,8 @@ namespace OpenWifi {
|
||||
ORM::Field{"configuration",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"inUse",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"variables",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"rrm",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"deviceRules",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"tags",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"firmwareUpgrade",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"firmwareRCOnly",ORM::FieldType::FT_INT},
|
||||
ORM::Field{"subscriberOnly",ORM::FieldType::FT_BOOLEAN},
|
||||
ORM::Field{"entity",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"venue",ORM::FieldType::FT_TEXT},
|
||||
@@ -50,7 +48,8 @@ namespace OpenWifi {
|
||||
"alter table " + TableName_ + " add column subscriberOnly BOOLEAN;",
|
||||
"alter table " + TableName_ + " add column entity TEXT;",
|
||||
"alter table " + TableName_ + " add column subscriber TEXT;",
|
||||
"alter table " + TableName_ + " add column venue TEXT;"
|
||||
"alter table " + TableName_ + " add column venue TEXT;",
|
||||
"alter table " + TableName_ + " add column deviceRules TEXT;"
|
||||
};
|
||||
RunScript(Statements);
|
||||
to = 2;
|
||||
@@ -149,14 +148,12 @@ template<> void ORM::DB< OpenWifi::ConfigurationDBRecordType, OpenWifi::ProvO
|
||||
Out.configuration = OpenWifi::RESTAPI_utils::to_object_array<OpenWifi::ProvObjects::DeviceConfigurationElement>(In.get<8>());
|
||||
Out.inUse = OpenWifi::RESTAPI_utils::to_object_array(In.get<9>());
|
||||
Out.variables = OpenWifi::RESTAPI_utils::to_object_array(In.get<10>());
|
||||
Out.rrm = In.get<11>();
|
||||
Out.deviceRules = OpenWifi::RESTAPI_utils::to_object<OpenWifi::ProvObjects::DeviceRules>(In.get<11>());
|
||||
Out.info.tags = OpenWifi::RESTAPI_utils::to_taglist(In.get<12>());
|
||||
Out.firmwareUpgrade = In.get<13>();
|
||||
Out.firmwareRCOnly = In.get<14>();
|
||||
Out.subscriberOnly = In.get<15>();
|
||||
Out.entity = In.get<16>();
|
||||
Out.venue = In.get<17>();
|
||||
Out.subscriber = In.get<18>();
|
||||
Out.subscriberOnly = In.get<13>();
|
||||
Out.entity = In.get<14>();
|
||||
Out.venue = In.get<15>();
|
||||
Out.subscriber = In.get<16>();
|
||||
}
|
||||
|
||||
template<> void ORM::DB< OpenWifi::ConfigurationDBRecordType, OpenWifi::ProvObjects::DeviceConfiguration>::Convert(const OpenWifi::ProvObjects::DeviceConfiguration &In, OpenWifi::ConfigurationDBRecordType &Out) {
|
||||
@@ -171,12 +168,10 @@ template<> void ORM::DB< OpenWifi::ConfigurationDBRecordType, OpenWifi::ProvO
|
||||
Out.set<8>(OpenWifi::RESTAPI_utils::to_string(In.configuration));
|
||||
Out.set<9>(OpenWifi::RESTAPI_utils::to_string(In.inUse));
|
||||
Out.set<10>(OpenWifi::RESTAPI_utils::to_string(In.variables));
|
||||
Out.set<11>(In.rrm);
|
||||
Out.set<11>(OpenWifi::RESTAPI_utils::to_string(In.deviceRules));
|
||||
Out.set<12>(OpenWifi::RESTAPI_utils::to_string(In.info.tags));
|
||||
Out.set<13>(In.firmwareUpgrade);
|
||||
Out.set<14>(In.firmwareRCOnly);
|
||||
Out.set<15>(In.subscriberOnly);
|
||||
Out.set<16>(In.entity);
|
||||
Out.set<17>(In.venue);
|
||||
Out.set<18>(In.subscriber);
|
||||
Out.set<13>(In.subscriberOnly);
|
||||
Out.set<14>(In.entity);
|
||||
Out.set<15>(In.venue);
|
||||
Out.set<16>(In.subscriber);
|
||||
}
|
||||
|
||||
@@ -26,8 +26,6 @@ namespace OpenWifi {
|
||||
std::string,
|
||||
std::string,
|
||||
std::string,
|
||||
std::string,
|
||||
uint32_t,
|
||||
bool,
|
||||
std::string,
|
||||
std::string,
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace OpenWifi {
|
||||
ORM::Field{"venues",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"deviceConfiguration",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"devices",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"rrm",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"deviceRules",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"tags",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"sourceIP",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"variables",ORM::FieldType::FT_TEXT},
|
||||
@@ -58,7 +58,8 @@ namespace OpenWifi {
|
||||
"alter table " + TableName_ + " add column managementPolicies text",
|
||||
"alter table " + TableName_ + " add column maps text",
|
||||
"alter table " + TableName_ + " add column configurations text",
|
||||
"alter table " + TableName_ + " add column managementRoles text"
|
||||
"alter table " + TableName_ + " add column managementRoles text",
|
||||
"alter table " + TableName_ + " add column deviceRules text"
|
||||
};
|
||||
|
||||
for(const auto &i:Script) {
|
||||
@@ -210,7 +211,7 @@ template<> void ORM::DB< OpenWifi::EntityDBRecordType, OpenWifi::ProvObjects:
|
||||
Out.venues = OpenWifi::RESTAPI_utils::to_object_array(In.get<11>());
|
||||
Out.deviceConfiguration = OpenWifi::RESTAPI_utils::to_object_array(In.get<12>());
|
||||
Out.devices = OpenWifi::RESTAPI_utils::to_object_array(In.get<13>());
|
||||
Out.rrm = In.get<14>();
|
||||
Out.deviceRules = OpenWifi::RESTAPI_utils::to_object<OpenWifi::ProvObjects::DeviceRules>(In.get<14>());
|
||||
Out.info.tags = OpenWifi::RESTAPI_utils::to_taglist(In.get<15>());
|
||||
Out.sourceIP = OpenWifi::RESTAPI_utils::to_object_array(In.get<16>());
|
||||
Out.variables = OpenWifi::RESTAPI_utils::to_object_array(In.get<17>());
|
||||
@@ -235,7 +236,7 @@ template<> void ORM::DB< OpenWifi::EntityDBRecordType, OpenWifi::ProvObjects:
|
||||
Out.set<11>(OpenWifi::RESTAPI_utils::to_string(In.venues));
|
||||
Out.set<12>(OpenWifi::RESTAPI_utils::to_string(In.deviceConfiguration));
|
||||
Out.set<13>(OpenWifi::RESTAPI_utils::to_string(In.devices));
|
||||
Out.set<14>(In.rrm);
|
||||
Out.set<14>(OpenWifi::RESTAPI_utils::to_string(In.deviceRules));
|
||||
Out.set<15>(OpenWifi::RESTAPI_utils::to_string(In.info.tags));
|
||||
Out.set<16>(OpenWifi::RESTAPI_utils::to_string(In.sourceIP));
|
||||
Out.set<17>(OpenWifi::RESTAPI_utils::to_string(In.variables));
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace OpenWifi {
|
||||
ORM::Field{"location",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"contact",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"deviceConfiguration",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"rrm",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"deviceRules",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"tags",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"managementPolicy",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"state",ORM::FieldType::FT_TEXT},
|
||||
@@ -63,7 +63,8 @@ namespace OpenWifi {
|
||||
"alter table " + TableName_ + " add column state text" ,
|
||||
"alter table " + TableName_ + " add column locale varchar(16)" ,
|
||||
"alter table " + TableName_ + " add column realMacAddress text" ,
|
||||
"alter table " + TableName_ + " add column devClass text"
|
||||
"alter table " + TableName_ + " add column devClass text",
|
||||
"alter table " + TableName_ + " add column deviceRules text"
|
||||
};
|
||||
|
||||
for(const auto &i:Script) {
|
||||
@@ -194,12 +195,12 @@ namespace OpenWifi {
|
||||
ProvObjects::DeviceConfiguration C;
|
||||
for(const auto &i:E.deviceConfiguration) {
|
||||
if(StorageService()->ConfigurationDB().GetRecord("id",i,C)) {
|
||||
if(C.firmwareUpgrade=="no") {
|
||||
if(C.deviceRules.firmwareUpgrade=="no") {
|
||||
Rules = ProvObjects::dont_upgrade;
|
||||
return false;
|
||||
}
|
||||
if(C.firmwareUpgrade=="yes") {
|
||||
if(C.firmwareRCOnly)
|
||||
if(C.deviceRules.firmwareUpgrade=="yes") {
|
||||
if(C.deviceRules.rcOnly=="yes")
|
||||
Rules = ProvObjects::upgrade_release_only;
|
||||
else
|
||||
Rules = ProvObjects::upgrade_latest;
|
||||
@@ -226,12 +227,12 @@ namespace OpenWifi {
|
||||
ProvObjects::DeviceConfiguration C;
|
||||
for(const auto &i:V.deviceConfiguration) {
|
||||
if(StorageService()->ConfigurationDB().GetRecord("id",i,C)) {
|
||||
if(C.firmwareUpgrade=="no") {
|
||||
if(C.deviceRules.firmwareUpgrade=="no") {
|
||||
Rules = ProvObjects::dont_upgrade;
|
||||
return false;
|
||||
}
|
||||
if(C.firmwareUpgrade=="yes") {
|
||||
if(C.firmwareRCOnly)
|
||||
if(C.deviceRules.firmwareUpgrade=="yes") {
|
||||
if(C.deviceRules.rcOnly=="yes")
|
||||
Rules = ProvObjects::upgrade_release_only;
|
||||
else
|
||||
Rules = ProvObjects::upgrade_latest;
|
||||
@@ -261,12 +262,12 @@ namespace OpenWifi {
|
||||
if(!T.deviceConfiguration.empty()) {
|
||||
ProvObjects::DeviceConfiguration C;
|
||||
if(StorageService()->ConfigurationDB().GetRecord("id",T.deviceConfiguration,C)) {
|
||||
if(C.firmwareUpgrade=="no") {
|
||||
if(C.deviceRules.firmwareUpgrade=="no") {
|
||||
Rules = ProvObjects::dont_upgrade;
|
||||
return false;
|
||||
}
|
||||
if(C.firmwareUpgrade=="yes") {
|
||||
if(C.firmwareRCOnly)
|
||||
if(C.deviceRules.firmwareUpgrade=="yes") {
|
||||
if(C.deviceRules.rcOnly=="yes")
|
||||
Rules = ProvObjects::upgrade_release_only;
|
||||
else
|
||||
Rules = ProvObjects::upgrade_latest;
|
||||
@@ -299,12 +300,12 @@ namespace OpenWifi {
|
||||
try {
|
||||
ProvObjects::Entity E;
|
||||
if(StorageService()->EntityDB().GetRecord("id", Entity, E)) {
|
||||
if(E.rrm == "inherit") {
|
||||
if(E.deviceRules.rrm == "inherit") {
|
||||
if(!E.parent.empty())
|
||||
return LookForRRMInEntity(E.parent);
|
||||
return false;
|
||||
}
|
||||
if(E.rrm=="no")
|
||||
if(E.deviceRules.rrm=="no")
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@@ -319,14 +320,14 @@ namespace OpenWifi {
|
||||
try {
|
||||
ProvObjects::Venue V;
|
||||
if(StorageService()->VenueDB().GetRecord("id", Venue, V)) {
|
||||
if(V.rrm == "inherit") {
|
||||
if(V.deviceRules.rrm == "inherit") {
|
||||
if(!V.parent.empty())
|
||||
return LookForRRMInVenue(V.parent);
|
||||
if(!V.entity.empty())
|
||||
return LookForRRMInEntity(V.entity);
|
||||
return false;
|
||||
}
|
||||
if(V.rrm=="no")
|
||||
if(V.deviceRules.rrm=="no")
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@@ -353,9 +354,9 @@ namespace OpenWifi {
|
||||
std::string SerialNumber = Utils::IntToSerialNumber(i);
|
||||
ProvObjects::InventoryTag Tag;
|
||||
if(StorageService()->InventoryDB().GetRecord("serialNumber",SerialNumber,Tag)) {
|
||||
if(Tag.rrm=="no")
|
||||
if(Tag.deviceRules.rrm=="no")
|
||||
continue;
|
||||
if(Tag.rrm=="inherit") {
|
||||
if(Tag.deviceRules.rrm=="inherit") {
|
||||
if(!LookForRRM(Tag))
|
||||
continue;
|
||||
}
|
||||
@@ -383,7 +384,7 @@ template<> void ORM::DB< OpenWifi::InventoryDBRecordType, OpenWifi::ProvObjec
|
||||
Out.location = In.get<13>();
|
||||
Out.contact = In.get<14>();
|
||||
Out.deviceConfiguration = In.get<15>();
|
||||
Out.rrm = In.get<16>();
|
||||
Out.deviceRules = OpenWifi::RESTAPI_utils::to_object<OpenWifi::ProvObjects::DeviceRules>(In.get<16>());
|
||||
Out.info.tags = OpenWifi::RESTAPI_utils::to_taglist(In.get<17>());
|
||||
Out.managementPolicy = In.get<18>();
|
||||
Out.state = In.get<19>();
|
||||
@@ -409,7 +410,7 @@ template<> void ORM::DB< OpenWifi::InventoryDBRecordType, OpenWifi::ProvObjec
|
||||
Out.set<13>(In.location);
|
||||
Out.set<14>(In.contact);
|
||||
Out.set<15>(In.deviceConfiguration);
|
||||
Out.set<16>(In.rrm);
|
||||
Out.set<16>(OpenWifi::RESTAPI_utils::to_string(In.deviceRules));
|
||||
Out.set<17>(OpenWifi::RESTAPI_utils::to_string(In.info.tags));
|
||||
Out.set<18>(In.managementPolicy);
|
||||
Out.set<19>(In.state);
|
||||
|
||||
@@ -20,9 +20,7 @@ namespace OpenWifi {
|
||||
ORM::Field{"modified",ORM::FieldType::FT_BIGINT},
|
||||
ORM::Field{"managementPolicy",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"managementRoles",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"rrm",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"firmwareUpgrade",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"firmwareRCOnly",ORM::FieldType::FT_BOOLEAN},
|
||||
ORM::Field{"deviceRules",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"variables",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"defaultOperator",ORM::FieldType::FT_BOOLEAN},
|
||||
ORM::Field{"sourceIP",ORM::FieldType::FT_TEXT},
|
||||
@@ -43,7 +41,7 @@ namespace OpenWifi {
|
||||
bool OperatorDB::Upgrade([[maybe_unused]] uint32_t from, uint32_t &to) {
|
||||
to = Version();
|
||||
std::vector<std::string> Script{
|
||||
|
||||
"alter table " + TableName_ + " add column deviceRules text"
|
||||
};
|
||||
|
||||
RunScript(Script);
|
||||
@@ -80,13 +78,11 @@ template<> void ORM::DB< OpenWifi::OperatorDBRecordType, OpenWifi::ProvObject
|
||||
Out.info.modified = In.get<5>();
|
||||
Out.managementPolicy = In.get<6>();
|
||||
Out.managementRoles = OpenWifi::RESTAPI_utils::to_object_array(In.get<7>());
|
||||
Out.rrm = In.get<8>();
|
||||
Out.firmwareUpgrade = In.get<9>();
|
||||
Out.firmwareRCOnly = In.get<10>();
|
||||
Out.variables = OpenWifi::RESTAPI_utils::to_object_array<OpenWifi::ProvObjects::Variable>(In.get<11>());
|
||||
Out.defaultOperator = In.get<12>();
|
||||
Out.sourceIP = OpenWifi::RESTAPI_utils::to_object_array(In.get<13>());
|
||||
Out.registrationId = In.get<14>();
|
||||
Out.deviceRules = OpenWifi::RESTAPI_utils::to_object<OpenWifi::ProvObjects::DeviceRules>(In.get<8>());
|
||||
Out.variables = OpenWifi::RESTAPI_utils::to_object_array<OpenWifi::ProvObjects::Variable>(In.get<9>());
|
||||
Out.defaultOperator = In.get<10>();
|
||||
Out.sourceIP = OpenWifi::RESTAPI_utils::to_object_array(In.get<11>());
|
||||
Out.registrationId = In.get<12>();
|
||||
}
|
||||
|
||||
template<> void ORM::DB< OpenWifi::OperatorDBRecordType, OpenWifi::ProvObjects::Operator>::Convert(const OpenWifi::ProvObjects::Operator &In, OpenWifi::OperatorDBRecordType &Out) {
|
||||
@@ -98,11 +94,9 @@ template<> void ORM::DB< OpenWifi::OperatorDBRecordType, OpenWifi::ProvObject
|
||||
Out.set<5>(In.info.modified);
|
||||
Out.set<6>(In.managementPolicy);
|
||||
Out.set<7>(OpenWifi::RESTAPI_utils::to_string(In.managementRoles));
|
||||
Out.set<8>(In.rrm);
|
||||
Out.set<9>(In.firmwareUpgrade);
|
||||
Out.set<10>(In.firmwareRCOnly);
|
||||
Out.set<11>(OpenWifi::RESTAPI_utils::to_string(In.variables));
|
||||
Out.set<12>(In.defaultOperator);
|
||||
Out.set<13>(OpenWifi::RESTAPI_utils::to_string(In.sourceIP));
|
||||
Out.set<14>(In.registrationId);
|
||||
Out.set<8>(OpenWifi::RESTAPI_utils::to_string(In.deviceRules));
|
||||
Out.set<9>(OpenWifi::RESTAPI_utils::to_string(In.variables));
|
||||
Out.set<10>(In.defaultOperator);
|
||||
Out.set<11>(OpenWifi::RESTAPI_utils::to_string(In.sourceIP));
|
||||
Out.set<12>(In.registrationId);
|
||||
}
|
||||
|
||||
@@ -22,8 +22,6 @@ namespace OpenWifi {
|
||||
std::string,
|
||||
bool,
|
||||
std::string,
|
||||
bool,
|
||||
std::string,
|
||||
std::string
|
||||
> OperatorDBRecordType;
|
||||
|
||||
|
||||
@@ -28,28 +28,26 @@ namespace OpenWifi {
|
||||
ORM::Field{"serviceClass",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"qrCode",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"geoCode",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"rrm",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"deviceRules",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"state",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"locale",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"billingCode",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"configuration",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"suspended",ORM::FieldType::FT_BOOLEAN},
|
||||
ORM::Field{"realMacAddress",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"firmwareRCOnly",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"firmwareUpgrade",ORM::FieldType::FT_TEXT}
|
||||
ORM::Field{"realMacAddress",ORM::FieldType::FT_TEXT}
|
||||
};
|
||||
|
||||
static ORM::IndexVec SubscriberDeviceDB_Indexes{
|
||||
{ std::string("subscriber_device_name_index3"),
|
||||
{ std::string("subscriber_device_name_index4"),
|
||||
ORM::IndexEntryVec{ {std::string("name"), ORM::Indextype::ASC} } },
|
||||
{ std::string("subscriber_device_serialNumber_index3"),
|
||||
{ std::string("subscriber_device_serialNumber_index4"),
|
||||
ORM::IndexEntryVec{ {std::string("serialNumber"), ORM::Indextype::ASC} } } ,
|
||||
{ std::string("subscriber_device_realMacAddress_index3"),
|
||||
{ std::string("subscriber_device_realMacAddress_index4"),
|
||||
ORM::IndexEntryVec{ {std::string("realMacAddress"), ORM::Indextype::ASC} } }
|
||||
};
|
||||
|
||||
SubscriberDeviceDB::SubscriberDeviceDB( OpenWifi::DBType T, Poco::Data::SessionPool & P, Poco::Logger &L) :
|
||||
DB(T, "sub_devices3", SubscriberDeviceDB_Fields, SubscriberDeviceDB_Indexes, P, L, "sdv") {
|
||||
DB(T, "sub_devices4", SubscriberDeviceDB_Fields, SubscriberDeviceDB_Indexes, P, L, "sdv") {
|
||||
}
|
||||
|
||||
bool SubscriberDeviceDB::Upgrade([[maybe_unused]] uint32_t from, uint32_t &to) {
|
||||
@@ -78,15 +76,13 @@ template<> void ORM::DB< OpenWifi::SubDeviceDBRecordType, OpenWifi::ProvObjec
|
||||
Out.serviceClass = In.get<13>();
|
||||
Out.qrCode = In.get<14>();
|
||||
Out.geoCode = In.get<15>();
|
||||
Out.rrm = In.get<16>();
|
||||
Out.deviceRules = OpenWifi::RESTAPI_utils::to_object<OpenWifi::ProvObjects::DeviceRules>(In.get<16>());
|
||||
Out.state = In.get<17>();
|
||||
Out.locale = In.get<18>();
|
||||
Out.billingCode = In.get<19>();
|
||||
Out.configuration = OpenWifi::RESTAPI_utils::to_object_array<OpenWifi::ProvObjects::DeviceConfigurationElement>(In.get<20>());
|
||||
Out.suspended = In.get<21>();
|
||||
Out.realMacAddress = In.get<22>();
|
||||
Out.firmwareRCOnly = In.get<23>();
|
||||
Out.firmwareUpgrade = In.get<24>();
|
||||
}
|
||||
|
||||
template<> void ORM::DB< OpenWifi::SubDeviceDBRecordType, OpenWifi::ProvObjects::SubscriberDevice>::Convert(const OpenWifi::ProvObjects::SubscriberDevice &In, OpenWifi::SubDeviceDBRecordType &Out) {
|
||||
@@ -106,13 +102,11 @@ template<> void ORM::DB< OpenWifi::SubDeviceDBRecordType, OpenWifi::ProvObjec
|
||||
Out.set<13>(In.serviceClass);
|
||||
Out.set<14>(In.qrCode);
|
||||
Out.set<15>(In.geoCode);
|
||||
Out.set<16>(In.rrm);
|
||||
Out.set<16>(OpenWifi::RESTAPI_utils::to_string(In.deviceRules));
|
||||
Out.set<17>(In.state);
|
||||
Out.set<18>(In.locale);
|
||||
Out.set<19>(In.billingCode);
|
||||
Out.set<20>(OpenWifi::RESTAPI_utils::to_string(In.configuration));
|
||||
Out.set<21>(In.suspended);
|
||||
Out.set<22>(In.realMacAddress);
|
||||
Out.set<23>(In.firmwareRCOnly);
|
||||
Out.set<24>(In.firmwareUpgrade);
|
||||
}
|
||||
|
||||
@@ -42,8 +42,6 @@ namespace OpenWifi {
|
||||
std::string,
|
||||
std::string,
|
||||
bool,
|
||||
std::string,
|
||||
std::string,
|
||||
std::string
|
||||
> SubDeviceDBRecordType;
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace OpenWifi {
|
||||
ORM::Field{"design",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"contacts",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"location",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"rrm",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"deviceRules",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"tags",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"deviceConfiguration",ORM::FieldType::FT_TEXT},
|
||||
ORM::Field{"sourceIP",ORM::FieldType::FT_TEXT},
|
||||
@@ -65,6 +65,7 @@ namespace OpenWifi {
|
||||
"alter table " + TableName_ + " add column managementPolicies text",
|
||||
"alter table " + TableName_ + " add column boards text",
|
||||
"alter table " + TableName_ + " rename column contact to contacts",
|
||||
"alter table " + TableName_ + " add column deviceRules text"
|
||||
};
|
||||
|
||||
for(const auto &i:Script) {
|
||||
@@ -116,7 +117,7 @@ template<> void ORM::DB< OpenWifi::VenueDBRecordType, OpenWifi::ProvObjects::
|
||||
Out.design = In.get<12>();
|
||||
Out.contacts = OpenWifi::RESTAPI_utils::to_object_array(In.get<13>());
|
||||
Out.location = In.get<14>();
|
||||
Out.rrm = In.get<15>();
|
||||
Out.deviceRules = OpenWifi::RESTAPI_utils::to_object<OpenWifi::ProvObjects::DeviceRules>(In.get<15>());
|
||||
Out.info.tags = OpenWifi::RESTAPI_utils::to_taglist(In.get<16>());
|
||||
Out.deviceConfiguration = OpenWifi::RESTAPI_utils::to_object_array(In.get<17>());
|
||||
Out.sourceIP = OpenWifi::RESTAPI_utils::to_object_array(In.get<18>());
|
||||
@@ -144,7 +145,7 @@ template<> void ORM::DB< OpenWifi::VenueDBRecordType, OpenWifi::ProvObjects::
|
||||
Out.set<12>(In.design);
|
||||
Out.set<13>(OpenWifi::RESTAPI_utils::to_string(In.contacts));
|
||||
Out.set<14>(In.location);
|
||||
Out.set<15>(In.rrm);
|
||||
Out.set<15>(OpenWifi::RESTAPI_utils::to_string(In.deviceRules));
|
||||
Out.set<16>(OpenWifi::RESTAPI_utils::to_string(In.info.tags));
|
||||
Out.set<17>(OpenWifi::RESTAPI_utils::to_string(In.deviceConfiguration));
|
||||
Out.set<18>(OpenWifi::RESTAPI_utils::to_string(In.sourceIP));
|
||||
|
||||
Reference in New Issue
Block a user