Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion opensearch-operator/api/v1/opensearch_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ type PersistenceSource struct {
}

type PVCSource struct {
StorageClassName string `json:"storageClass,omitempty"`
StorageClassName *string `json:"storageClass,omitempty"`
AccessModes []corev1.PersistentVolumeAccessMode `json:"accessModes,omitempty"`
}

Expand Down
5 changes: 5 additions & 0 deletions opensearch-operator/api/v1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 1 addition & 5 deletions opensearch-operator/pkg/builders/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,7 @@ func NewSTSForNodePool(
if node.Persistence == nil {
return nil
}
if node.Persistence.PVC.StorageClassName == "" {
return nil
}

return &node.Persistence.PVC.StorageClassName
return node.Persistence.PVC.StorageClassName
}(),
VolumeMode: &mode,
},
Expand Down
56 changes: 55 additions & 1 deletion opensearch-operator/pkg/builders/cluster_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,21 @@ var _ = Describe("Builders", func() {
Expect(result.Spec.Template.Spec.SecurityContext).To(Equal(podSecurityContext))
Expect(result.Spec.Template.Spec.Containers[0].SecurityContext).To(Equal(securityContext))
})
It("should use default storageclass if not specified", func() {
It("should use default storageclass if no persistence specified", func() {
clusterObject := ClusterDescWithVersion("2.2.1")
nodePool := opsterv1.NodePool{
Replicas: 3,
Component: "masters",
Roles: []string{"cluster_manager", "data"},
// No persistence specified
}
clusterObject.Spec.NodePools = append(clusterObject.Spec.NodePools, nodePool)
result := NewSTSForNodePool("foobar", &clusterObject, nodePool, "foobar", nil, nil, nil)
var expected *string = nil
actual := result.Spec.VolumeClaimTemplates[0].Spec.StorageClassName
Expect(expected).To(Equal(actual))
})
It("should use default storageClass when persistence is specified without storageClass", func() {
clusterObject := ClusterDescWithVersion("2.2.1")
nodePool := opsterv1.NodePool{
Replicas: 3,
Expand All @@ -343,6 +357,46 @@ var _ = Describe("Builders", func() {
actual := result.Spec.VolumeClaimTemplates[0].Spec.StorageClassName
Expect(expected).To(Equal(actual))
})
It("should create empty storageClassName when explicitly set to empty", func() {
clusterObject := ClusterDescWithVersion("2.2.1")
emptyString := ""
nodePool := opsterv1.NodePool{
Replicas: 3,
Component: "masters",
Roles: []string{"cluster_manager", "data"},
Persistence: &opsterv1.PersistenceConfig{PersistenceSource: opsterv1.PersistenceSource{
PVC: &opsterv1.PVCSource{
StorageClassName: &emptyString,
AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
},
}},
}
clusterObject.Spec.NodePools = append(clusterObject.Spec.NodePools, nodePool)
result := NewSTSForNodePool("foobar", &clusterObject, nodePool, "foobar", nil, nil, nil)
expected := &emptyString
actual := result.Spec.VolumeClaimTemplates[0].Spec.StorageClassName
Expect(expected).To(Equal(actual))
})
It("should use specific storageClassName when provided", func() {
clusterObject := ClusterDescWithVersion("2.2.1")
specificClass := "fast-ssd"
nodePool := opsterv1.NodePool{
Replicas: 3,
Component: "masters",
Roles: []string{"cluster_manager", "data"},
Persistence: &opsterv1.PersistenceConfig{PersistenceSource: opsterv1.PersistenceSource{
PVC: &opsterv1.PVCSource{
StorageClassName: &specificClass,
AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
},
}},
}
clusterObject.Spec.NodePools = append(clusterObject.Spec.NodePools, nodePool)
result := NewSTSForNodePool("foobar", &clusterObject, nodePool, "foobar", nil, nil, nil)
expected := &specificClass
actual := result.Spec.VolumeClaimTemplates[0].Spec.StorageClassName
Expect(expected).To(Equal(actual))
})
It("should set jvm to half of memory request when memory request is set and jvm are not provided", func() {
clusterObject := ClusterDescWithVersion("2.2.1")
nodePool := opsterv1.NodePool{
Expand Down