@@ -56,8 +56,8 @@ type StatusManager struct {
56
56
// One VarmorPolicy/ClusterPolicyName object corresponds to one PolicyStatus
57
57
policyStatuses map [string ]varmortypes.PolicyStatus
58
58
policyStatusesLock sync.RWMutex
59
- // Use "namespace/VarmorPolicyName" as key. One VarmorPolicy object corresponds to one ModelingStatus
60
- // TODO: Rebuild modelingStatuses from ArmorProfile object when leader change occurs.
59
+ // Use "namespace/VarmorPolicyName" or "VarmorClusterPolicyName" as key.
60
+ // One VarmorPolicy/ClusterPolicyName object corresponds to one ModelingStatus
61
61
modelingStatuses map [string ]varmortypes.ModelingStatus
62
62
modelingStatusesLock sync.RWMutex
63
63
ResetCh chan string
@@ -179,7 +179,7 @@ func (m *StatusManager) retrieveNodeNameList() ([]string, error) {
179
179
return nodes , nil
180
180
}
181
181
182
- // rebuildPolicyStatuses rebuild the policyStatuses cache from the existing ArmorProfile objects.
182
+ // rebuildPolicyStatuses rebuild the policyStatuses and modelingStatuses cache from the existing ArmorProfile objects.
183
183
func (m * StatusManager ) rebuildPolicyStatuses () error {
184
184
m .policyStatusesLock .Lock ()
185
185
defer m .policyStatusesLock .Unlock ()
@@ -214,13 +214,21 @@ func (m *StatusManager) rebuildPolicyStatuses() error {
214
214
}
215
215
216
216
var policyStatus varmortypes.PolicyStatus
217
+ var modelingStatus varmortypes.ModelingStatus
218
+
217
219
policyStatus .NodeMessages = make (map [string ]string , m .desiredNumber )
220
+ modelingStatus .NodeMessages = make (map [string ]string , m .desiredNumber )
218
221
219
222
// Only count the failed node that is still in the cluster
220
223
for _ , condition := range ap .Status .Conditions {
221
224
if varmorutils .InStringArray (condition .NodeName , nodes ) {
222
225
policyStatus .FailedNumber += 1
223
226
policyStatus .NodeMessages [condition .NodeName ] = condition .Message
227
+
228
+ if ap .Spec .BehaviorModeling .Duration != 0 {
229
+ modelingStatus .FailedNumber += 1
230
+ modelingStatus .NodeMessages [condition .NodeName ] = condition .Message
231
+ }
224
232
}
225
233
}
226
234
@@ -229,11 +237,17 @@ func (m *StatusManager) rebuildPolicyStatuses() error {
229
237
if _ , ok := policyStatus .NodeMessages [node ]; ! ok {
230
238
policyStatus .SuccessedNumber += 1
231
239
policyStatus .NodeMessages [node ] = string (varmor .ArmorProfileReady )
240
+
241
+ if ap .Spec .BehaviorModeling .Duration != 0 {
242
+ modelingStatus .CompletedNumber += 1
243
+ modelingStatus .NodeMessages [node ] = string (varmor .ArmorProfileModelReady )
244
+ }
232
245
}
233
246
}
234
247
235
- // Cache policy status
248
+ // Cache status
236
249
m .policyStatuses [statusKey ] = policyStatus
250
+ m .modelingStatuses [statusKey ] = modelingStatus
237
251
}
238
252
}
239
253
return nil
0 commit comments