Skip to content

Commit e095c3e

Browse files
committed
https://telecominfraproject.atlassian.net/browse/WIFI-13450
Signed-off-by: stephb9959 <stephane.bourque@gmail.com>
1 parent e43bd4f commit e095c3e

10 files changed

Lines changed: 4834 additions & 231 deletions

src/RESTObjects/RESTAPI_ProvObjects.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,9 @@ namespace OpenWifi::ProvObjects {
587587
field_to_json(Obj, "locale", locale);
588588
field_to_json(Obj, "realMacAddress", realMacAddress);
589589
field_to_json(Obj, "doNotAllowOverrides", doNotAllowOverrides);
590+
field_to_json(Obj, "imported", imported);
591+
field_to_json(Obj, "connected", connected);
592+
field_to_json(Obj, "platform", platform);
590593
}
591594

592595
bool InventoryTag::from_json(const Poco::JSON::Object::Ptr &Obj) {
@@ -609,6 +612,9 @@ namespace OpenWifi::ProvObjects {
609612
field_from_json(Obj, "locale", locale);
610613
field_from_json(Obj, "realMacAddress", realMacAddress);
611614
field_from_json(Obj, "doNotAllowOverrides", doNotAllowOverrides);
615+
field_from_json(Obj, "imported", imported);
616+
field_from_json(Obj, "connected", connected);
617+
field_from_json(Obj, "platform", platform);
612618
return true;
613619
} catch (...) {
614620
}

src/RESTObjects/RESTAPI_ProvObjects.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,9 +490,11 @@ namespace OpenWifi::ProvObjects {
490490
std::string locale;
491491
std::string realMacAddress;
492492
bool doNotAllowOverrides = false;
493+
std::uint64_t imported=0;
494+
std::uint64_t connected=0;
495+
std::string platform{"AP"};
493496

494497
void to_json(Poco::JSON::Object &Obj) const;
495-
496498
bool from_json(const Poco::JSON::Object::Ptr &Obj);
497499
};
498500

src/framework/ConfigurationValidator.cpp

Lines changed: 4770 additions & 217 deletions
Large diffs are not rendered by default.

src/framework/ConfigurationValidator.h

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,33 +17,42 @@
1717
namespace OpenWifi {
1818
class ConfigurationValidator : public SubSystemServer {
1919
public:
20+
21+
enum class ConfigurationType { AP = 0 , SWITCH = 1};
22+
2023
static auto instance() {
2124
static auto instance_ = new ConfigurationValidator;
2225
return instance_;
2326
}
2427

25-
bool Validate(const std::string &C, std::vector<std::string> &Errors, bool Strict);
28+
bool Validate(ConfigurationType Type, const std::string &C, std::string &Errors, bool Strict);
2629
int Start() override;
2730
void Stop() override;
2831
void reinitialize(Poco::Util::Application &self) override;
2932

33+
inline static ConfigurationType GetType(const std::string &type) {
34+
std::string Type = Poco::toUpper(type);
35+
if (Type == "AP")
36+
return ConfigurationType::AP;
37+
if (Type == "SWITCH")
38+
return ConfigurationType::SWITCH;
39+
return ConfigurationType::AP;
40+
}
41+
3042
private:
3143
bool Initialized_ = false;
3244
bool Working_ = false;
3345
void Init();
34-
std::unique_ptr<valijson::Schema> RootSchema_;
35-
std::unique_ptr<valijson::SchemaParser> SchemaParser_;
36-
std::unique_ptr<valijson::adapters::PocoJsonAdapter> PocoJsonAdapter_;
37-
Poco::JSON::Object::Ptr SchemaDocPtr_;
38-
bool SetSchema(const std::string &SchemaStr);
46+
std::array<valijson::Schema,2> RootSchema_;
47+
bool SetSchema(ConfigurationType Type, const std::string &SchemaStr);
3948

4049
ConfigurationValidator()
4150
: SubSystemServer("ConfigValidator", "CFG-VALIDATOR", "config.validator") {}
4251
};
4352

4453
inline auto ConfigurationValidator() { return ConfigurationValidator::instance(); }
45-
inline bool ValidateUCentralConfiguration(const std::string &C, std::vector<std::string> &Error,
54+
inline bool ValidateUCentralConfiguration(ConfigurationValidator::ConfigurationType Type, const std::string &C, std::string &Errors,
4655
bool strict) {
47-
return ConfigurationValidator::instance()->Validate(C, Error, strict);
56+
return ConfigurationValidator::instance()->Validate(Type, C, Errors, strict);
4857
}
4958
} // namespace OpenWifi

src/framework/KafkaManager.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,10 @@ namespace OpenWifi {
7979
Utils::SetThreadName("Kafka:Prod");
8080
cppkafka::Configuration Config(
8181
{{"client.id", MicroServiceConfigGetString("openwifi.kafka.client.id", "")},
82-
{"metadata.broker.list",
83-
MicroServiceConfigGetString("openwifi.kafka.brokerlist", "")}});
82+
{"metadata.broker.list",MicroServiceConfigGetString("openwifi.kafka.brokerlist", "")},
83+
{"send.buffer.bytes", KafkaManager()->KafkaManagerMaximumPayloadSize() }
84+
}
85+
);
8486

8587
AddKafkaSecurity(Config);
8688

@@ -275,6 +277,7 @@ namespace OpenWifi {
275277
int KafkaManager::Start() {
276278
if (!KafkaEnabled_)
277279
return 0;
280+
MaxPayloadSize_ = MicroServiceConfigGetInt("openwifi.kafka.max.payload", 2500000);
278281
ConsumerThr_.Start();
279282
ProducerThr_.Start();
280283
return 0;

src/framework/KafkaManager.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,14 @@ namespace OpenWifi {
9494
return ConsumerThr_.UnregisterTopicWatcher(Topic,Id);
9595
}
9696

97+
std::uint64_t KafkaManagerMaximumPayloadSize() const { return MaxPayloadSize_; }
98+
9799
private:
98100
bool KafkaEnabled_ = false;
99101
std::string SystemInfoWrapper_;
100102
KafkaProducer ProducerThr_;
101103
KafkaConsumer ConsumerThr_;
104+
std::uint64_t MaxPayloadSize_ = 2500000;
102105

103106
void PartitionAssignment(const cppkafka::TopicPartitionList &partitions);
104107
void PartitionRevocation(const cppkafka::TopicPartitionList &partitions);

src/framework/MicroService.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
//
2+
//
23
// Created by stephane bourque on 2022-10-26.
34
//
45

@@ -480,7 +481,17 @@ namespace OpenWifi {
480481
KafkaManager()->RegisterTopicWatcher(KafkaTopics::SERVICE_EVENTS, F);
481482
}
482483

483-
void MicroService::initialize([[maybe_unused]] Poco::Util::Application &self) {
484+
void MicroService::StopEverything([[maybe_unused]] Poco::Util::Application &self) {
485+
LoadConfigurationFile();
486+
InitializeLoggingSystem();
487+
488+
Types::TopicNotifyFunction F = [this](const std::string &Key, const std::string &Payload) {
489+
this->BusMessageReceived(Key, Payload);
490+
};
491+
KafkaManager()->RegisterTopicWatcher(KafkaTopics::SERVICE_EVENTS, F);
492+
}
493+
494+
void MicroService::initialize([[maybe_unused]] Poco::Util::Application &self) {
484495
#ifndef USE_MEDUSA_CLIENT
485496
StartEverything(self);
486497
#endif

src/framework/MicroService.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ namespace OpenWifi {
113113
void LoadMyConfig();
114114
void initialize(Poco::Util::Application &self) override;
115115
void StartEverything(Poco::Util::Application &self);
116-
void uninitialize() override;
116+
void StopEverything(Poco::Util::Application &self);
117+
void uninitialize() override;
117118
void reinitialize(Poco::Util::Application &self) override;
118119
void defineOptions(Poco::Util::OptionSet &options) override;
119120
void handleHelp(const std::string &name, const std::string &value);
@@ -168,6 +169,15 @@ namespace OpenWifi {
168169

169170
inline void SetConfigContent(const std::string &Content) { ConfigContent_ = Content; }
170171

172+
inline std::optional<OpenWifi::Types::MicroServiceMeta> GetPrivateEndPointServiceKey( const std::string & ServicePrivateEndPoint ) {
173+
std::lock_guard G(InfraMutex_);
174+
auto K = Services_.find(ServicePrivateEndPoint);
175+
if(K==end(Services_)) {
176+
return std::nullopt;
177+
}
178+
return K->second;
179+
}
180+
171181
private:
172182
static MicroService *instance_;
173183
bool HelpRequested_ = false;

src/framework/MicroServiceFuncs.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,4 +133,8 @@ namespace OpenWifi {
133133
return MicroService::instance().Hash();
134134
}
135135

136+
std::optional<OpenWifi::Types::MicroServiceMeta> MicroServicePrivateAccessKey(const std::string &servicePrivateEndPoint) {
137+
return MicroService::instance().GetPrivateEndPointServiceKey(servicePrivateEndPoint);
138+
}
139+
136140
} // namespace OpenWifi

src/framework/MicroServiceFuncs.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ namespace OpenWifi {
2323
std::string MicroServiceConfigGetString(const std::string &Key,
2424
const std::string &DefaultValue);
2525
std::string MicroServiceAccessKey();
26-
bool MicroServiceConfigGetBool(const std::string &Key, bool DefaultValue);
26+
std::optional<OpenWifi::Types::MicroServiceMeta> MicroServicePrivateAccessKey(const std::string &servicePrivateEndPoint);
27+
28+
bool MicroServiceConfigGetBool(const std::string &Key, bool DefaultValue);
2729
std::uint64_t MicroServiceConfigGetInt(const std::string &Key, std::uint64_t DefaultValue);
2830
std::string MicroServicePrivateEndPoint();
2931
std::uint64_t MicroServiceID();

0 commit comments

Comments
 (0)