Skip to content

Commit 0ee1c09

Browse files
committed
common: monitoring: get rid of absolete partition struct
Signed-off-by: Mykhailo Lohvynenko <mykhailo_lohvynenko@epam.com>
1 parent c6917be commit 0ee1c09

6 files changed

Lines changed: 205 additions & 102 deletions

File tree

src/core/common/monitoring/average.cpp

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,17 @@ void UpdateValue(T& value, T newValue, size_t window, bool isInitialized)
4848
* Public
4949
**********************************************************************************************************************/
5050

51-
Error Average::Init(const PartitionInfoObsoleteArray& nodeDisks, size_t windowCount)
51+
Error Average::Init(const PartitionParamArray& nodeDisks, size_t windowCount)
5252
{
5353
mWindowCount = windowCount;
5454
if (mWindowCount == 0) {
5555
mWindowCount = 1;
5656
}
5757

58-
mAverageNodeData.mMonitoringData.mPartitions = nodeDisks;
58+
if (auto err = mAverageNodeData.mMonitoringData.mPartitionsParams.Assign(nodeDisks); !err.IsNone()) {
59+
return AOS_ERROR_WRAP(err);
60+
}
61+
5962
mAverageInstancesData.Clear();
6063

6164
return ErrorEnum::eNone;
@@ -119,12 +122,8 @@ Error Average::StartInstanceMonitoring(const InstanceMonitorParams& monitoringCo
119122

120123
auto averageData = MakeUnique<AverageData>(&mAllocator);
121124

122-
for (const auto& partition : monitoringConfig.mPartitions) {
123-
if (auto err = averageData->mMonitoringData.mPartitions.PushBack(
124-
PartitionInfoObsolete {partition.mName, {}, partition.mPath, 0, 0});
125-
!err.IsNone()) {
126-
return AOS_ERROR_WRAP(err);
127-
}
125+
if (auto err = averageData->mMonitoringData.mPartitionsParams.Assign(monitoringConfig.mPartitions); !err.IsNone()) {
126+
return AOS_ERROR_WRAP(err);
128127
}
129128

130129
if (auto err = mAverageInstancesData.Set(monitoringConfig.mInstanceIdent, *averageData); !err.IsNone()) {
@@ -170,17 +169,24 @@ Error Average::UpdateMonitoringData(MonitoringData& data, const MonitoringData&
170169

171170
Error Average::GetMonitoringData(MonitoringData& data, const MonitoringData& averageData) const
172171
{
173-
data.mCPU = GetValue(averageData.mCPU, mWindowCount);
174-
data.mRAM = GetValue(averageData.mRAM, mWindowCount);
172+
data.mCPU = GetValue(averageData.mCPU, mWindowCount);
173+
data.mRAM = GetValue(averageData.mRAM, mWindowCount);
174+
data.mDownload = GetValue(averageData.mDownload, mWindowCount);
175+
data.mUpload = GetValue(averageData.mUpload, mWindowCount);
176+
175177
data.mPartitions.Clear();
176178

177179
for (const auto& disk : averageData.mPartitions) {
178-
data.mPartitions.EmplaceBack(PartitionInfoObsolete {
179-
disk.mName, disk.mTypes, disk.mPath, disk.mTotalSize, GetValue(disk.mUsedSize, mWindowCount)});
180-
}
180+
if (auto err = data.mPartitions.EmplaceBack(); !err.IsNone()) {
181+
return AOS_ERROR_WRAP(err);
182+
}
181183

182-
data.mDownload = GetValue(averageData.mDownload, mWindowCount);
183-
data.mUpload = GetValue(averageData.mUpload, mWindowCount);
184+
if (auto err = data.mPartitions.Back().mName.Assign(disk.mName); !err.IsNone()) {
185+
return AOS_ERROR_WRAP(err);
186+
}
187+
188+
data.mPartitions.Back().mUsedSize = GetValue(disk.mUsedSize, mWindowCount);
189+
}
184190

185191
return ErrorEnum::eNone;
186192
}

src/core/common/monitoring/average.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Average {
2727
* @param windowCount window count.
2828
* @return Error.
2929
*/
30-
Error Init(const PartitionInfoObsoleteArray& nodeDisks, size_t windowCount);
30+
Error Init(const PartitionParamArray& nodeDisks, size_t windowCount);
3131

3232
/**
3333
* Updates average data.

src/core/common/monitoring/monitoring.hpp

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,33 @@
1111
#include <core/common/connectionprovider/connectionprovider.hpp>
1212
#include <core/common/tools/error.hpp>
1313
#include <core/common/tools/thread.hpp>
14+
#include <core/common/types/monitoring.hpp>
1415
#include <core/iam/nodeinfoprovider/nodeinfoprovider.hpp>
1516

1617
#include "alertprocessor.hpp"
1718

1819
namespace aos::monitoring {
1920

21+
/**
22+
* Partition monitoring param.
23+
*/
24+
struct PartitionParam {
25+
StaticString<cPartitionNameLen> mName;
26+
StaticString<cFilePathLen> mPath;
27+
};
28+
29+
using PartitionParamArray = StaticArray<PartitionParam, cMaxNumPartitions>;
30+
2031
/**
2132
* Monitoring data.
2233
*/
2334
struct MonitoringData {
24-
double mCPU;
25-
size_t mRAM;
26-
PartitionInfoObsoleteArray mPartitions;
27-
uint64_t mDownload;
28-
uint64_t mUpload;
35+
double mCPU;
36+
size_t mRAM;
37+
PartitionUsageArray mPartitions;
38+
PartitionParamArray mPartitionsParams;
39+
uint64_t mDownload;
40+
uint64_t mUpload;
2941

3042
/**
3143
* Compares monitoring data.
@@ -48,21 +60,15 @@ struct MonitoringData {
4860
bool operator!=(const MonitoringData& data) const { return !operator==(data); }
4961
};
5062

51-
// Partition monitoring param.
52-
struct PartitionParam {
53-
StaticString<cPartitionNameLen> mName;
54-
StaticString<cFilePathLen> mPath;
55-
};
56-
5763
/**
5864
* Instance resource monitor parameters.
5965
*/
6066
struct InstanceMonitorParams {
61-
InstanceIdent mInstanceIdent;
62-
StaticArray<PartitionParam, cMaxNumPartitions> mPartitions;
63-
uid_t mUID;
64-
gid_t mGID;
65-
Optional<AlertRules> mAlertRules;
67+
InstanceIdent mInstanceIdent;
68+
PartitionParamArray mPartitions;
69+
uid_t mUID;
70+
gid_t mGID;
71+
Optional<AlertRules> mAlertRules;
6672
};
6773

6874
/**
@@ -91,16 +97,12 @@ struct InstanceMonitoringData {
9197
*/
9298
explicit InstanceMonitoringData(const InstanceMonitorParams& monitoringParams)
9399
: mInstanceIdent(monitoringParams.mInstanceIdent)
94-
, mMonitoringData({0, 0, {}, 0, 0})
100+
, mMonitoringData({0, 0, {}, {}, 0, 0})
95101
, mUID(monitoringParams.mUID)
96102
, mGID(monitoringParams.mGID)
97103
{
98-
for (const auto& partition : monitoringParams.mPartitions) {
99-
PartitionInfoObsolete partitionInfo = {partition.mName, {}, partition.mPath, 0, 0};
100-
101-
[[maybe_unused]] auto err = mMonitoringData.mPartitions.PushBack(partitionInfo);
102-
assert(err.IsNone());
103-
}
104+
[[maybe_unused]] auto err = mMonitoringData.mPartitionsParams.Assign(monitoringParams.mPartitions);
105+
assert(err.IsNone());
104106
}
105107

106108
/**

src/core/common/monitoring/resourcemonitor.cpp

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,50 @@ Error ResourceMonitor::Init(const Config& config, const iam::nodeinfoprovider::N
3535
return AOS_ERROR_WRAP(err);
3636
}
3737

38-
mNodeMonitoringData.mNodeID = nodeInfo->mNodeID;
39-
mNodeMonitoringData.mMonitoringData.mPartitions = nodeInfo->mPartitions;
40-
mMaxDMIPS = nodeInfo->mMaxDMIPS;
41-
mMaxMemory = nodeInfo->mTotalRAM;
38+
for (const auto& partition : nodeInfo->mPartitions) {
39+
if (auto err = mNodePartitions.EmplaceBack(); !err.IsNone()) {
40+
return AOS_ERROR_WRAP(err);
41+
}
42+
43+
if (auto err = mNodePartitions.Back().mName.Assign(partition.mName); !err.IsNone()) {
44+
return AOS_ERROR_WRAP(err);
45+
}
46+
47+
if (auto err = mNodePartitions.Back().mPath.Assign(partition.mPath); !err.IsNone()) {
48+
return AOS_ERROR_WRAP(err);
49+
}
50+
51+
if (auto err = mNodePartitions.Back().mTypes.Assign(partition.mTypes); !err.IsNone()) {
52+
return AOS_ERROR_WRAP(err);
53+
}
54+
55+
mNodePartitions.Back().mTotalSize = partition.mTotalSize;
56+
}
57+
58+
mNodeMonitoringData.mNodeID = nodeInfo->mNodeID;
59+
mMaxDMIPS = nodeInfo->mMaxDMIPS;
60+
mMaxMemory = nodeInfo->mTotalRAM;
61+
62+
for (const auto& partition : mNodePartitions) {
63+
if (auto err = mNodeMonitoringData.mMonitoringData.mPartitionsParams.EmplaceBack(); !err.IsNone()) {
64+
return AOS_ERROR_WRAP(err);
65+
}
66+
67+
auto& param = mNodeMonitoringData.mMonitoringData.mPartitionsParams.Back();
68+
69+
if (auto err = param.mName.Assign(partition.mName); !err.IsNone()) {
70+
return AOS_ERROR_WRAP(err);
71+
}
72+
73+
if (auto err = param.mPath.Assign(partition.mPath); !err.IsNone()) {
74+
return AOS_ERROR_WRAP(err);
75+
}
76+
}
4277

4378
assert(mConfig.mPollPeriod > 0);
4479

45-
if (auto err = mAverage.Init(
46-
nodeInfo->mPartitions, mConfig.mAverageWindow.Nanoseconds() / mConfig.mPollPeriod.Nanoseconds());
80+
if (auto err = mAverage.Init(mNodeMonitoringData.mMonitoringData.mPartitionsParams,
81+
mConfig.mAverageWindow.Nanoseconds() / mConfig.mPollPeriod.Nanoseconds());
4782
!err.IsNone()) {
4883
return AOS_ERROR_WRAP(err);
4984
}
@@ -485,7 +520,7 @@ void ResourceMonitor::NormalizeMonitoringData()
485520

486521
for (const auto& partition : instanceMonitoring.mMonitoringData.mPartitions) {
487522
if (auto it = nodeMonitoringData.mPartitions.FindIf(
488-
[&partition](const PartitionInfoObsolete& p) { return p.mName == partition.mName; });
523+
[&partition](const auto& p) { return p.mName == partition.mName; });
489524
it != nodeMonitoringData.mPartitions.end()) {
490525
it->mUsedSize = Max(it->mUsedSize, partition.mUsedSize);
491526
}
@@ -600,14 +635,12 @@ RetWithError<uint64_t> ResourceMonitor::GetCurrentUsage(
600635

601636
RetWithError<uint64_t> ResourceMonitor::GetPartitionTotalSize(const String& name) const
602637
{
603-
auto it = mNodeMonitoringData.mMonitoringData.mPartitions.FindIf(
604-
[&name](const auto& partition) { return partition.mName == name; });
605-
606-
if (it == mNodeMonitoringData.mMonitoringData.mPartitions.end()) {
607-
return {0, ErrorEnum::eNotFound};
638+
if (auto it = mNodePartitions.FindIf([&name](const auto& partition) { return partition.mName == name; });
639+
it != mNodePartitions.end()) {
640+
return {it->mTotalSize, ErrorEnum::eNone};
608641
}
609642

610-
return {it->mTotalSize, ErrorEnum::eNone};
643+
return {0, ErrorEnum::eNotFound};
611644
}
612645

613646
UniquePtr<ResourceIdentifier> ResourceMonitor::CreateResourceIdentifier(ResourceLevel level, ResourceType type,

src/core/common/monitoring/resourcemonitor.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ class ResourceMonitor : public ResourceMonitorItf,
152152

153153
NodeMonitoringData mNodeMonitoringData {};
154154
StaticMap<StaticString<cIDLen>, InstanceMonitoringData, cMaxNumInstances> mInstanceMonitoringData;
155+
PartitionInfoArray mNodePartitions {};
155156

156157
bool mSendMonitoring {};
157158

0 commit comments

Comments
 (0)