mirror of
https://github.com/argoproj/argo-cd
synced 2026-05-23 09:18:26 +00:00
This commit is contained in:
parent
ac7906fdea
commit
86f6b657e2
2 changed files with 17 additions and 1 deletions
5
controller/cache/cluster_test.go
vendored
5
controller/cache/cluster_test.go
vendored
|
|
@ -375,6 +375,11 @@ func TestCircularReference(t *testing.T) {
|
|||
|
||||
children := getChildren(cluster, dep)
|
||||
assert.Len(t, children, 2)
|
||||
|
||||
node := cluster.nodes[kube.GetResourceKey(dep)]
|
||||
assert.NotNil(t, node)
|
||||
app := node.getApp(cluster.nodes)
|
||||
assert.Equal(t, "", app)
|
||||
}
|
||||
|
||||
func TestWatchCacheUpdated(t *testing.T) {
|
||||
|
|
|
|||
13
controller/cache/node.go
vendored
13
controller/cache/node.go
vendored
|
|
@ -53,13 +53,24 @@ func ownerRefGV(ownerRef metav1.OwnerReference) schema.GroupVersion {
|
|||
}
|
||||
|
||||
func (n *node) getApp(ns map[kube.ResourceKey]*node) string {
|
||||
return n.getAppRecursive(ns, map[kube.ResourceKey]bool{})
|
||||
}
|
||||
|
||||
func (n *node) getAppRecursive(ns map[kube.ResourceKey]*node, visited map[kube.ResourceKey]bool) string {
|
||||
if !visited[n.resourceKey()] {
|
||||
visited[n.resourceKey()] = true
|
||||
} else {
|
||||
log.Warnf("Circular dependency detected: %v.", visited)
|
||||
return n.appName
|
||||
}
|
||||
|
||||
if n.appName != "" {
|
||||
return n.appName
|
||||
}
|
||||
for _, ownerRef := range n.ownerRefs {
|
||||
gv := ownerRefGV(ownerRef)
|
||||
if parent, ok := ns[kube.NewResourceKey(gv.Group, ownerRef.Kind, n.ref.Namespace, ownerRef.Name)]; ok {
|
||||
app := parent.getApp(ns)
|
||||
app := parent.getAppRecursive(ns, visited)
|
||||
if app != "" {
|
||||
return app
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue