Skip to content

Commit ce95817

Browse files
committed
Pull request logicmonitor#144: fix(deleted-group): Fixed creation of _deleted resource group
fix(deleted-group): Fixed creation of _deleted resource group in old and new resource tree structure Squashed commit of the following: commit cf33ecc74fed9890d24a298bdb2cbd1523446389 Author: Shubhashri Shirode <[email protected]> Date: Tue Oct 26 19:41:20 2021 +0530 refactor commit 4d0a38bfee823956ad30f46adb27ed5cdb6061e2 Author: Shubhashri Shirode <[email protected]> Date: Mon Oct 25 23:45:44 2021 +0530 Added _deleted group for clusterscopeed resources as well. commit 8b9078e683454af5b1794738a85b3e294fbdf0c6 Author: Shubhashri Shirode <[email protected]> Date: Mon Oct 25 23:14:05 2021 +0530 Fixed build error commit 1b297f3caf21eaf80a63a03ac9f2c7d135daf0cc Author: Shubhashri Shirode <[email protected]> Date: Mon Oct 25 15:24:07 2021 +0530 fix(deleted-group): Fixed creation of _deleted resource group
1 parent 78710db commit ce95817

File tree

2 files changed

+75
-35
lines changed

2 files changed

+75
-35
lines changed

pkg/sync/initsyncer.go

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -74,26 +74,7 @@ func (i *InitSyncer) Sync(lctx *lmctx.LMContext) {
7474
log.Tracef("Current cache: %v", list)
7575

7676
log.Infof("Deleting duplicate resources if any")
77-
for _, entry := range list {
78-
log.Tracef("Iterate resource cache entry : %v ", entry)
79-
cacheResourceName := entry.K
80-
cacheResourceMeta := entry.V
81-
82-
if ignoreSync[cacheResourceName.Resource] || cacheResourceName.Resource == enums.Namespaces {
83-
continue
84-
}
85-
86-
if strings.HasSuffix(cacheResourceMeta.Container, "-dupl") {
87-
childLctx := lmlog.LMContextWithFields(lctx, logrus.Fields{
88-
"name": cacheResourceName.Resource.FQName(cacheResourceName.Name),
89-
"type": cacheResourceName.Resource.Singular(),
90-
"ns": cacheResourceMeta.Container,
91-
"event": "sync",
92-
})
93-
childLctx = childLctx.LMContextWith(map[string]interface{}{constants.PartitionKey: fmt.Sprintf("%s-%s", cacheResourceName.Resource.String(), cacheResourceName.Name)})
94-
i.deleteResource(childLctx, cacheResourceName, cacheResourceMeta)
95-
}
96-
}
77+
i.removeDuplicateResources(lctx, list, ignoreSync)
9778

9879
for _, entry := range list {
9980
log.Tracef("Iterate resource cache entry : %v ", entry)
@@ -111,7 +92,7 @@ func (i *InitSyncer) Sync(lctx *lmctx.LMContext) {
11192
})
11293
childLctx = childLctx.LMContextWith(map[string]interface{}{constants.PartitionKey: fmt.Sprintf("%s-%s", cacheResourceName.Resource.String(), cacheResourceName.Name)})
11394

114-
if cacheResourceName.Resource == enums.Namespaces {
95+
if cacheResourceName.Resource == enums.Namespaces && cacheResourceName.Name != constants.DeletedResourceGroup {
11596
if err := i.deleteNamespace(allK8SResourcesStore, childLctx, cacheResourceName, cacheResourceMeta, log, conf); err != nil && !errors.Is(err, aerrors.ErrResourceGroupIsNotEmpty) &&
11697
!errors.Is(err, aerrors.ErrResourceGroupParentIsNotValid) &&
11798
!strings.Contains(err.Error(), util.ClusterGroupName(conf.ClusterName)) {
@@ -137,6 +118,30 @@ func (i *InitSyncer) Sync(lctx *lmctx.LMContext) {
137118
}
138119
}
139120

121+
func (i *InitSyncer) removeDuplicateResources(lctx *lmctx.LMContext, list []types.IterItem, ignoreSync map[enums.ResourceType]bool) {
122+
log := lmlog.Logger(lctx)
123+
for _, entry := range list {
124+
log.Tracef("Iterate resource cache entry : %v ", entry)
125+
cacheResourceName := entry.K
126+
cacheResourceMeta := entry.V
127+
128+
if ignoreSync[cacheResourceName.Resource] || cacheResourceName.Resource == enums.Namespaces {
129+
continue
130+
}
131+
132+
if strings.HasSuffix(cacheResourceMeta.Container, "-dupl") {
133+
childLctx := lmlog.LMContextWithFields(lctx, logrus.Fields{
134+
"name": cacheResourceName.Resource.FQName(cacheResourceName.Name),
135+
"type": cacheResourceName.Resource.Singular(),
136+
"ns": cacheResourceMeta.Container,
137+
"event": "sync",
138+
})
139+
childLctx = childLctx.LMContextWith(map[string]interface{}{constants.PartitionKey: fmt.Sprintf("%s-%s", cacheResourceName.Resource.String(), cacheResourceName.Name)})
140+
i.deleteResource(childLctx, cacheResourceName, cacheResourceMeta)
141+
}
142+
}
143+
}
144+
140145
func (i *InitSyncer) deleteNamespace(allK8SResourcesStore *resourcecache.Store, childLctx *lmctx.LMContext, cacheResourceName types.ResourceName, cacheResourceMeta types.ResourceMeta, log *logrus.Entry, conf *config.Config) error {
141146
if _, ok := allK8SResourcesStore.Get(childLctx, cacheResourceName); !ok {
142147
list := i.ResourceManager.GetResourceCache().ListWithFilter(func(k types.ResourceName, v types.ResourceMeta) bool {

pkg/tree/tree.go

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,16 @@ func GetResourceGroupTree(lctx *lmctx.LMContext, dgBuilder types.ResourceManager
7373
dgBuilder.AppliesTo(dgbuilder.NewAppliesToBuilder().HasCategory(resource.GetCategory()).And().Auto("clustername").Equals(conf.ClusterName)),
7474
dgBuilder.CustomProperties(dgbuilder.NewPropertyBuilder().AddProperties(conf.ResourceGroupProperties.Get(resource))),
7575
},
76-
ChildGroups: nil,
76+
ChildGroups: []*types.ResourceGroupTree{
77+
{
78+
DontCreate: doNotCreateDeletedGroup,
79+
Options: []types.ResourceGroupOption{
80+
dgBuilder.GroupName(constants.DeletedResourceGroup),
81+
dgBuilder.DisableAlerting(true),
82+
dgBuilder.AppliesTo(dgbuilder.NewAppliesToBuilder().HasCategory(resource.GetDeletedCategory()).And().Auto("clustername").Equals(conf.ClusterName)),
83+
},
84+
},
85+
},
7786
})
7887
}
7988
}
@@ -112,17 +121,6 @@ func GetResourceGroupTree2(lctx *lmctx.LMContext, dgBuilder types.ResourceManage
112121
}
113122
nodes := enums.Nodes
114123
doNotCreateDeletedGroup := conf.DeleteResources
115-
deletedBuilder := dgbuilder.NewAppliesToBuilder().
116-
Auto("clustername").Equals(conf.ClusterName).And().
117-
OpenBracket()
118-
for _, e := range enums.ALLResourceTypes {
119-
if e == enums.Namespaces || !e.IsNamespaceScopedResource() {
120-
continue
121-
}
122-
deletedBuilder = deletedBuilder.HasCategory(e.GetDeletedCategory()).Or()
123-
}
124-
deletedBuilder.TrimOrCloseBracket()
125-
126124
clusterProps, ok := conf.ResourceGroupProperties.Raw["cluster"]
127125
if !ok {
128126
clusterProps = []config.PropOpts{}
@@ -156,7 +154,16 @@ func GetResourceGroupTree2(lctx *lmctx.LMContext, dgBuilder types.ResourceManage
156154
Options: []types.ResourceGroupOption{
157155
dgBuilder.GroupName(constants.ClusterScopedGroupName),
158156
},
159-
ChildGroups: clusterscoped,
157+
ChildGroups: append(clusterscoped,
158+
&types.ResourceGroupTree{
159+
DontCreate: doNotCreateDeletedGroup,
160+
Options: []types.ResourceGroupOption{
161+
dgBuilder.GroupName(constants.DeletedResourceGroup),
162+
dgBuilder.DisableAlerting(true),
163+
dgBuilder.AppliesTo(getDeleteBuilderForClusterScopedResources(conf.ClusterName)),
164+
},
165+
ChildGroups: nil,
166+
}),
160167
},
161168
{
162169
Options: []types.ResourceGroupOption{
@@ -193,7 +200,7 @@ func GetResourceGroupTree2(lctx *lmctx.LMContext, dgBuilder types.ResourceManage
193200
Options: []types.ResourceGroupOption{
194201
dgBuilder.GroupName(constants.DeletedResourceGroup),
195202
dgBuilder.DisableAlerting(true),
196-
dgBuilder.AppliesTo(deletedBuilder),
203+
dgBuilder.AppliesTo(getDeleteBuilderForNamespaceScopedResources(conf.ClusterName)),
197204
},
198205
},
199206
},
@@ -234,3 +241,31 @@ func checkAndUpdateClusterGroup(lctx *lmctx.LMContext, config *config.Config, lm
234241
}
235242
return nil
236243
}
244+
245+
func getDeleteBuilderForNamespaceScopedResources(clusterName string) types.AppliesToBuilder {
246+
deletedBuilderForNamespaceScoped := dgbuilder.NewAppliesToBuilder().
247+
Auto("clustername").Equals(clusterName).And().
248+
OpenBracket()
249+
for _, e := range enums.ALLResourceTypes {
250+
if e == enums.Namespaces || !e.IsNamespaceScopedResource() {
251+
continue
252+
}
253+
deletedBuilderForNamespaceScoped = deletedBuilderForNamespaceScoped.HasCategory(e.GetDeletedCategory()).Or()
254+
}
255+
deletedBuilderForNamespaceScoped.TrimOrCloseBracket()
256+
return deletedBuilderForNamespaceScoped
257+
}
258+
259+
func getDeleteBuilderForClusterScopedResources(clusterName string) types.AppliesToBuilder {
260+
deletedBuilderForClusterScoped := dgbuilder.NewAppliesToBuilder().
261+
Auto("clustername").Equals(clusterName).And().
262+
OpenBracket()
263+
for _, e := range enums.ALLResourceTypes {
264+
if e == enums.Namespaces || e.IsNamespaceScopedResource() {
265+
continue
266+
}
267+
deletedBuilderForClusterScoped = deletedBuilderForClusterScoped.HasCategory(e.GetDeletedCategory()).Or()
268+
}
269+
deletedBuilderForClusterScoped.TrimOrCloseBracket()
270+
return deletedBuilderForClusterScoped
271+
}

0 commit comments

Comments
 (0)