Skip to content

Commit 38532db

Browse files
authored
[Feature] [Platform] Add Sharding to the Inventory Endpoint (#1848)
1 parent 4dc65f4 commit 38532db

File tree

5 files changed

+141
-21
lines changed

5 files changed

+141
-21
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- (Maintenance) Allow GRPC Marshal Opts
1010
- (Bugfix) Propagate Gateway Idle Timeout
1111
- (Feature) Update Authz V1 Definitions
12+
- (Feature) (Platform) Add Sharding to the Inventory Endpoint
1213

1314
## [1.2.46](https://github.com/arangodb/kube-arangodb/tree/1.2.46) (2025-02-24)
1415
- (Bugfix) Clean Phase change properly during upgrade

integrations/inventory/v1/definition/inventory.go

+31
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,15 @@
2121
package definition
2222

2323
import (
24+
"strconv"
25+
2426
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
2527
ugrpc "github.com/arangodb/kube-arangodb/pkg/util/grpc"
28+
"github.com/arangodb/kube-arangodb/pkg/util/strings"
29+
)
30+
31+
const (
32+
forceOneShardFlag = "--cluster.force-one-shard"
2633
)
2734

2835
func (s *Inventory) JSON() ([]byte, error) {
@@ -55,5 +62,29 @@ func NewArangoDBConfiguration(spec api.DeploymentSpec, status api.DeploymentStat
5562
cfg.Version = string(i.ArangoDBVersion)
5663
}
5764

65+
if spec.GetMode() != api.DeploymentModeCluster {
66+
cfg.Sharding = ArangoDBSharding_Sharded
67+
} else {
68+
cfg.Sharding = getShardingFromArgs(spec.Coordinators.Args...)
69+
}
70+
5871
return &cfg
5972
}
73+
74+
func getShardingFromArgs(args ...string) ArangoDBSharding {
75+
for _, arg := range args {
76+
if arg == forceOneShardFlag {
77+
return ArangoDBSharding_OneShardEnforced
78+
}
79+
80+
if v := strings.SplitN(arg, "=", 2); v[0] == forceOneShardFlag && len(v) == 2 {
81+
if q, err := strconv.ParseBool(v[1]); err != nil {
82+
continue
83+
} else if q {
84+
return ArangoDBSharding_OneShardEnforced
85+
}
86+
}
87+
}
88+
89+
return ArangoDBSharding_Sharded
90+
}

integrations/inventory/v1/definition/inventory.pb.go

+88-21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

integrations/inventory/v1/definition/inventory.proto

+10
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ enum ArangoDBEdition {
5656
Enterprise = 1;
5757
}
5858

59+
// ArangoDB Sharding Mode
60+
enum ArangoDBSharding {
61+
// Sharded Sharding Mode
62+
Sharded = 0;
63+
// OneShardEnforced Sharding Mode
64+
OneShardEnforced = 1;
65+
}
66+
5967
// ArangoDB Deployment Configuration
6068
message ArangoDBConfiguration {
6169
// ArangoDB Deployment Mode
@@ -64,4 +72,6 @@ message ArangoDBConfiguration {
6472
ArangoDBEdition edition = 2;
6573
// ArangoDB Deployment Version
6674
string version = 3;
75+
// ArangoDB Sharding Mode
76+
ArangoDBSharding sharding = 4;
6777
}

integrations/inventory/v1/definition/inventory_test.go

+11
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package definition
2222

2323
import (
24+
"fmt"
2425
"testing"
2526

2627
"github.com/stretchr/testify/require"
@@ -52,3 +53,13 @@ func Test_State_Marshal(t *testing.T) {
5253

5354
require.EqualValues(t, &s, res)
5455
}
56+
57+
func Test_getShardingFromArgs(t *testing.T) {
58+
require.EqualValues(t, ArangoDBSharding_Sharded, getShardingFromArgs())
59+
require.EqualValues(t, ArangoDBSharding_OneShardEnforced, getShardingFromArgs(forceOneShardFlag))
60+
require.EqualValues(t, ArangoDBSharding_OneShardEnforced, getShardingFromArgs("--test=el", forceOneShardFlag))
61+
require.EqualValues(t, ArangoDBSharding_OneShardEnforced, getShardingFromArgs(fmt.Sprintf("%s=true", forceOneShardFlag)))
62+
require.EqualValues(t, ArangoDBSharding_Sharded, getShardingFromArgs(fmt.Sprintf("%s=false", forceOneShardFlag)))
63+
require.EqualValues(t, ArangoDBSharding_OneShardEnforced, getShardingFromArgs(fmt.Sprintf("%s=True", forceOneShardFlag)))
64+
require.EqualValues(t, ArangoDBSharding_Sharded, getShardingFromArgs(fmt.Sprintf("%s=Unknown", forceOneShardFlag)))
65+
}

0 commit comments

Comments
 (0)