diff --git a/pkg/velaql/providers/query/tree_test.go b/pkg/velaql/providers/query/tree_test.go index 53d9543e6..40ab8830d 100644 --- a/pkg/velaql/providers/query/tree_test.go +++ b/pkg/velaql/providers/query/tree_test.go @@ -1450,6 +1450,26 @@ var _ = Describe("test merge globalRules", func() { defaultLabelSelector: true - apiVersion: apps/v1 kind: ControllerRevision +` + clickhouseJsonStr := ` +[ + { + "parentResourceType": { + "group": "clickhouse.altinity.com", + "kind": "ClickHouseInstallation" + }, + "childrenResourceType": [ + { + "apiVersion": "apps/v1", + "kind": "StatefulSet" + }, + { + "apiVersion": "v1", + "kind": "Service" + } + ] + } +] ` daemonSetStr := ` - parentResourceType: @@ -1510,14 +1530,20 @@ childrenResourceType: Expect(k8sClient.Create(ctx, &stsConfigMap)).Should(BeNil()) missConfigedCm := v1.ConfigMap{TypeMeta: metav1.TypeMeta{APIVersion: "v1", Kind: "ConfigMap"}, - ObjectMeta: metav1.ObjectMeta{Namespace: types3.DefaultKubeVelaNS, Name: "miss-configed", Labels: map[string]string{ - oam.LabelResourceRules: "true", - oam.LabelResourceRuleFormat: oam.ResourceTopologyFormatYAML, - }}, - Data: map[string]string{relationshipKey: missConfigedStr}, + ObjectMeta: metav1.ObjectMeta{Namespace: types3.DefaultKubeVelaNS, Name: "miss-configed", Labels: map[string]string{oam.LabelResourceRules: "true"}}, + Data: map[string]string{relationshipKey: missConfigedStr}, } Expect(k8sClient.Create(ctx, &missConfigedCm)).Should(BeNil()) + clickhouseJsonCm := v1.ConfigMap{TypeMeta: metav1.TypeMeta{APIVersion: "v1", Kind: "ConfigMap"}, + ObjectMeta: metav1.ObjectMeta{Namespace: types3.DefaultKubeVelaNS, Name: "clickhouse", Labels: map[string]string{ + oam.LabelResourceRules: "true", + oam.LabelResourceRuleFormat: oam.ResourceTopologyFormatJSON, + }}, + Data: map[string]string{relationshipKey: clickhouseJsonStr}, + } + Expect(k8sClient.Create(ctx, &clickhouseJsonCm)).Should(BeNil()) + Expect(mergeCustomRules(ctx, k8sClient)).Should(BeNil()) childrenResources, ok := globalRule.GetRule(GroupResourceType{Group: "apps.kruise.io", Kind: "CloneSet"}) Expect(ok).Should(BeTrue()) @@ -1553,6 +1579,19 @@ childrenResourceType: Expect(revisionCR).ShouldNot(BeNil()) Expect(revisionCR.listOptions).Should(BeNil()) + chChildrenResources, ok := globalRule.GetRule(GroupResourceType{Group: "clickhouse.altinity.com", Kind: "ClickHouseInstallation"}) + Expect(ok).Should(BeTrue()) + Expect(chChildrenResources.DefaultGenListOptionFunc).Should(BeNil()) + Expect(len(*chChildrenResources.SubResources)).Should(BeEquivalentTo(2)) + + chSts := chChildrenResources.SubResources.Get(ResourceType{APIVersion: "apps/v1", Kind: "StatefulSet"}) + Expect(chSts).ShouldNot(BeNil()) + Expect(chSts.listOptions).Should(BeNil()) + + chSvc := chChildrenResources.SubResources.Get(ResourceType{APIVersion: "v1", Kind: "Service"}) + Expect(chSvc).ShouldNot(BeNil()) + Expect(chSvc.listOptions).Should(BeNil()) + // clear data Expect(k8sClient.Delete(context.TODO(), &missConfigedCm)).Should(BeNil()) Expect(k8sClient.Delete(context.TODO(), &stsConfigMap)).Should(BeNil())