Skip to content

Commit 90378a5

Browse files
authored
[Feature] [Platform] Chart Overrides (#1913)
1 parent 3e41ba0 commit 90378a5

30 files changed

+1323
-307
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A)
44
- (Feature) (Platform) MetaV1 Integration Service
5+
- (Feature) (Platform) Chart Overrides
56

67
## [1.2.49](https://github.com/arangodb/kube-arangodb/tree/1.2.49) (2025-06-17)
78
- (Maintenance) Optimize go.mod

docs/api/ArangoPlatformChart.V1Alpha1.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,15 @@ title: ArangoPlatformChart V1Alpha1
1010

1111
### .spec.definition
1212

13-
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.49/pkg/apis/platform/v1alpha1/chart_spec.go#L30)</sup>
13+
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.49/pkg/apis/platform/v1alpha1/chart_spec.go#L31)</sup>
14+
15+
Definition keeps the Chart base64 encoded definition
16+
17+
***
18+
19+
### .spec.overrides
20+
21+
Type: `Object` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.49/pkg/apis/platform/v1alpha1/chart_spec.go#L35)</sup>
22+
23+
Overrides keeps the Chart overrides
1424

integrations/scheduler/v2/chart.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,17 @@ func (i *implementation) ListCharts(req *pbSchedulerV2.SchedulerV2ListChartsRequ
6969
func (i *implementation) GetChart(ctx context.Context, in *pbSchedulerV2.SchedulerV2GetChartRequest) (*pbSchedulerV2.SchedulerV2GetChartResponse, error) {
7070
resp, err := i.kclient.Arango().PlatformV1alpha1().ArangoPlatformCharts(i.client.Namespace()).Get(ctx, in.GetName(), meta.GetOptions{})
7171
if err != nil {
72-
logger.Err(err).Warn("Unable to run action: GetChart")
7372
return nil, asGRPCError(err)
7473
}
7574

7675
if !resp.Status.Conditions.IsTrue(platformApi.SpecValidCondition) {
7776
return nil, status.Errorf(codes.Unavailable, "Chart Spec is invalid")
7877
}
7978

79+
if !resp.Ready() {
80+
return nil, status.Errorf(codes.Unavailable, "Chart is not Ready")
81+
}
82+
8083
if info := resp.Status.Info; info == nil {
8184
return nil, status.Errorf(codes.Unavailable, "Chart Infos are missing")
8285
} else {
@@ -91,8 +94,9 @@ func (i *implementation) GetChart(ctx context.Context, in *pbSchedulerV2.Schedul
9194
return nil, status.Errorf(codes.Unavailable, "Chart Details are missing")
9295
} else {
9396
return &pbSchedulerV2.SchedulerV2GetChartResponse{
94-
Chart: info.Definition,
95-
Info: chartInfoDetailsAsInfo(details),
97+
Chart: info.Definition,
98+
Info: chartInfoDetailsAsInfo(details),
99+
Overrides: info.Overrides,
96100
}, nil
97101
}
98102
}

integrations/scheduler/v2/chart_test.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ func Test_Chart_List(t *testing.T) {
6262
Type: platformApi.SpecValidCondition,
6363
Status: core.ConditionTrue,
6464
},
65+
{
66+
Type: platformApi.ReadyCondition,
67+
Status: core.ConditionTrue,
68+
},
6569
},
6670
Info: &platformApi.ChartStatusInfo{
6771
Definition: make([]byte, 128),
@@ -208,6 +212,10 @@ func Test_Chart_Get(t *testing.T) {
208212
Type: platformApi.SpecValidCondition,
209213
Status: core.ConditionTrue,
210214
},
215+
{
216+
Type: platformApi.ReadyCondition,
217+
Status: core.ConditionTrue,
218+
},
211219
},
212220
Info: &platformApi.ChartStatusInfo{
213221
Definition: make([]byte, 128),
@@ -235,25 +243,25 @@ func Test_Chart_Get(t *testing.T) {
235243

236244
t.Run("Invalid Info", func(t *testing.T) {
237245
resp, err := scheduler.GetChart(context.Background(), &pbSchedulerV2.SchedulerV2GetChartRequest{Name: t2.GetName()})
238-
tgrpc.AsGRPCError(t, err).Code(t, codes.Unavailable).Errorf(t, "Chart Infos are missing")
246+
tgrpc.AsGRPCError(t, err).Code(t, codes.Unavailable).Errorf(t, "Chart is not Ready")
239247
require.Nil(t, resp)
240248
})
241249

242250
t.Run("Invalid", func(t *testing.T) {
243251
resp, err := scheduler.GetChart(context.Background(), &pbSchedulerV2.SchedulerV2GetChartRequest{Name: t3.GetName()})
244-
tgrpc.AsGRPCError(t, err).Code(t, codes.Unavailable).Errorf(t, "Chart is not Valid")
252+
tgrpc.AsGRPCError(t, err).Code(t, codes.Unavailable).Errorf(t, "Chart is not Ready")
245253
require.Nil(t, resp)
246254
})
247255

248256
t.Run("Invalid with message", func(t *testing.T) {
249257
resp, err := scheduler.GetChart(context.Background(), &pbSchedulerV2.SchedulerV2GetChartRequest{Name: t4.GetName()})
250-
tgrpc.AsGRPCError(t, err).Code(t, codes.Unavailable).Errorf(t, "Chart is not Valid: Invalid XxX")
258+
tgrpc.AsGRPCError(t, err).Code(t, codes.Unavailable).Errorf(t, "Chart is not Ready")
251259
require.Nil(t, resp)
252260
})
253261

254262
t.Run("Valid with missing details", func(t *testing.T) {
255263
resp, err := scheduler.GetChart(context.Background(), &pbSchedulerV2.SchedulerV2GetChartRequest{Name: t5.GetName()})
256-
tgrpc.AsGRPCError(t, err).Code(t, codes.Unavailable).Errorf(t, "Chart Details are missing")
264+
tgrpc.AsGRPCError(t, err).Code(t, codes.Unavailable).Errorf(t, "Chart is not Ready")
257265
require.Nil(t, resp)
258266
})
259267

integrations/scheduler/v2/definition/chart.pb.go

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

integrations/scheduler/v2/definition/chart.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,6 @@ message SchedulerV2GetChartResponse {
6464
bytes chart = 1;
6565
// Chart Info
6666
SchedulerV2ChartInfo info = 2;
67+
// Chart Overrides
68+
bytes overrides = 3;
6769
}

0 commit comments

Comments
 (0)