Skip to content

Commit 17cdf37

Browse files
committed
add support for multi-cluster projects
1 parent ac0dc9f commit 17cdf37

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

api/v1/config.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,14 @@ type OpenAICompatibleSpec struct {
7272
Model string `json:"model"`
7373
}
7474

75+
// +kubebuilder:validation:XValidation:rule="has(self.memberProjects) && size(self.memberProjects) > 0 ? !has(self.apiKeys) || size(self.apiKeys) == 0 : has(self.apiKeys) && size(self.apiKeys) > 0",message="Exactly one of memberProjects or apiKeys must be non-empty."
7576
type ProjectSpec struct {
7677
// Project name (e.g., production, staging; required).
7778
// +kubebuilder:validation:Required
7879
Name string `json:"name,omitempty"`
79-
// Project API keys, used by agents to send telemetry data (required).
80-
// +kubebuilder:validation:Required
81-
// +kubebuilder:validation:MinItems=1
80+
// Names of existing projects to aggregate (multi-cluster mode).
81+
MemberProjects []string `json:"memberProjects,omitempty"`
82+
// Project API keys, used by agents to send telemetry data (required unless memberProjects is set).
8283
ApiKeys []ApiKeySpec `json:"apiKeys,omitempty"`
8384
// Notification integrations.
8485
NotificationIntegrations *NotificationIntegrationsSpec `json:"notificationIntegrations,omitempty"`

api/v1/zz_generated.deepcopy.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/coroot.com_coroots.yaml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6375,7 +6375,7 @@ spec:
63756375
recommended).
63766376
type: string
63776377
passwordSecret:
6378-
description: Secret containing password for accessing postgres.
6378+
description: Secret containing a password for accessing postgres.
63796379
properties:
63806380
key:
63816381
description: The key of the secret to select from. Must be
@@ -6418,7 +6418,7 @@ spec:
64186418
properties:
64196419
apiKeys:
64206420
description: Project API keys, used by agents to send telemetry
6421-
data (required).
6421+
data (required unless memberProjects is set).
64226422
items:
64236423
properties:
64246424
description:
@@ -6454,7 +6454,6 @@ spec:
64546454
type: object
64556455
x-kubernetes-map-type: atomic
64566456
type: object
6457-
minItems: 1
64586457
type: array
64596458
applicationCategories:
64606459
description: Application category settings.
@@ -6611,6 +6610,12 @@ spec:
66116610
type: object
66126611
type: array
66136612
type: object
6613+
memberProjects:
6614+
description: Names of existing projects to aggregate (multi-cluster
6615+
mode).
6616+
items:
6617+
type: string
6618+
type: array
66146619
name:
66156620
description: Project name (e.g., production, staging; required).
66166621
type: string
@@ -6850,9 +6855,13 @@ spec:
68506855
- baseURL
68516856
type: object
68526857
required:
6853-
- apiKeys
68546858
- name
68556859
type: object
6860+
x-kubernetes-validations:
6861+
- message: Exactly one of memberProjects or apiKeys must be non-empty.
6862+
rule: 'has(self.memberProjects) && size(self.memberProjects) >
6863+
0 ? !has(self.apiKeys) || size(self.apiKeys) == 0 : has(self.apiKeys)
6864+
&& size(self.apiKeys) > 0'
68566865
type: array
68576866
prometheus:
68586867
description: Prometheus configuration.
@@ -8145,7 +8154,7 @@ spec:
81458154
type: object
81468155
x-kubernetes-map-type: atomic
81478156
keySecret:
8148-
description: Secret containing TLS private key.
8157+
description: Secret containing a TLS private key.
81498158
properties:
81508159
key:
81518160
description: The key of the secret to select from. Must be

0 commit comments

Comments
 (0)