Skip to content

Commit

Permalink
Fix etcd replicaCount (#202)
Browse files Browse the repository at this point in the history
Signed-off-by: haorenfsa <[email protected]>
  • Loading branch information
haorenfsa authored Oct 28, 2024
1 parent 39df548 commit 82a6643
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 5 deletions.
7 changes: 3 additions & 4 deletions apis/milvus.io/v1beta1/milvus_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -360,18 +360,17 @@ func (r *Milvus) defaultEtcd() {
if r.Spec.Dep.Etcd.InCluster.Values.Data == nil {
r.Spec.Dep.Etcd.InCluster.Values.Data = map[string]interface{}{}
}
etcdReplicaCountRaw, etcdReplicaCountExists := r.Spec.Dep.Etcd.InCluster.Values.Data["replicaCount"]
etcdReplicaCountInt64, etcdReplicaCountValid := etcdReplicaCountRaw.(int64)
etcdReplicaCountNumber, etcdReplicaCountValid := util.GetNumberValue(r.Spec.Dep.Etcd.InCluster.Values.Data, "replicaCount")
var etcdReplicaCount int
if !etcdReplicaCountExists || !etcdReplicaCountValid {
if !etcdReplicaCountValid {
if r.Spec.Mode == MilvusModeStandalone {
etcdReplicaCount = 1
} else {
etcdReplicaCount = 3
}
r.Spec.Dep.Etcd.InCluster.Values.Data["replicaCount"] = int64(etcdReplicaCount)
} else {
etcdReplicaCount = int(etcdReplicaCountInt64)
etcdReplicaCount = int(etcdReplicaCountNumber)
}
if len(r.Spec.Dep.Etcd.Endpoints) == 0 &&
etcdReplicaCount > 0 {
Expand Down
15 changes: 15 additions & 0 deletions pkg/util/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,21 @@ import (

const MqTypeConfigKey = "messageQueue"

// GetNumberValue supports int64 / float64 in values return as float64
// see https://datatracker.ietf.org/doc/html/rfc8259#section-6
func GetNumberValue(values map[string]interface{}, fields ...string) (float64, bool) {
val, found, err := unstructured.NestedInt64(values, fields...)
if err == nil && found {
return float64(val), true
}

fval, found, err := unstructured.NestedFloat64(values, fields...)
if err == nil && found {
return fval, true
}
return 0, false
}

func GetBoolValue(values map[string]interface{}, fields ...string) (bool, bool) {
val, found, err := unstructured.NestedBool(values, fields...)
if err != nil || !found {
Expand Down
16 changes: 16 additions & 0 deletions pkg/util/util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,22 @@ import (
"sigs.k8s.io/yaml"
)

func TestGetNumberValue(t *testing.T) {
vals := map[string]interface{}{
"a": map[string]interface{}{
"b": int64(1),
"c": float64(2.2),
},
}

ret, exist := GetNumberValue(vals, "a", "b")
assert.True(t, exist)
assert.Equal(t, float64(1), ret)
ret, exist = GetNumberValue(vals, "a", "c")
assert.True(t, exist)
assert.Equal(t, float64(2.2), ret)
}

func TestGetStringValue(t *testing.T) {
vals := map[string]interface{}{
"a": map[string]interface{}{
Expand Down
2 changes: 1 addition & 1 deletion test/min-milvus-feature.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ spec:
deletionPolicy: Delete
pvcDeletion: true
values:
replicaCount: 1
replicaCount: 3
auth:
rbac:
enabled: true
Expand Down

0 comments on commit 82a6643

Please sign in to comment.