commit
10f6541376
|
@ -0,0 +1,88 @@
|
|||
package controllers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
|
||||
seaweedv1 "github.com/seaweedfs/seaweedfs-operator/api/v1"
|
||||
)
|
||||
|
||||
var _ = Describe("Seaweed Controller", func() {
|
||||
Context("Basic Functionality", func() {
|
||||
It("Should create StatefulSets", func() {
|
||||
By("By creating a new Seaweed", func() {
|
||||
const (
|
||||
namespace = "default"
|
||||
name = "test-seaweed"
|
||||
|
||||
timeout = time.Second * 30
|
||||
interval = time.Millisecond * 250
|
||||
)
|
||||
|
||||
ctx := context.Background()
|
||||
seaweed := &seaweedv1.Seaweed{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Namespace: namespace,
|
||||
Name: name,
|
||||
},
|
||||
Spec: seaweedv1.SeaweedSpec{
|
||||
Image: "chrislusf/seaweedfs:2.07",
|
||||
VolumeServerDiskCount: 1,
|
||||
Master: &seaweedv1.MasterSpec{
|
||||
Replicas: 3,
|
||||
},
|
||||
Volume: &seaweedv1.VolumeSpec{
|
||||
Replicas: 1,
|
||||
ResourceRequirements: corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{
|
||||
corev1.ResourceStorage: resource.MustParse("1Gi"),
|
||||
},
|
||||
},
|
||||
},
|
||||
Filer: &seaweedv1.FilerSpec{
|
||||
Replicas: 2,
|
||||
},
|
||||
},
|
||||
}
|
||||
Expect(k8sClient.Create(ctx, seaweed)).Should(Succeed())
|
||||
|
||||
masterKey := types.NamespacedName{Name: name + "-master", Namespace: namespace}
|
||||
volumeKey := types.NamespacedName{Name: name + "-volume", Namespace: namespace}
|
||||
filerKey := types.NamespacedName{Name: name + "-filer", Namespace: namespace}
|
||||
|
||||
masterSts := &appsv1.StatefulSet{}
|
||||
volumeSts := &appsv1.StatefulSet{}
|
||||
filerSts := &appsv1.StatefulSet{}
|
||||
|
||||
Eventually(func() bool {
|
||||
err := k8sClient.Get(ctx, masterKey, masterSts)
|
||||
return err == nil
|
||||
}, timeout, interval).Should(BeTrue())
|
||||
Expect(masterSts.Spec.Replicas).ShouldNot(BeNil())
|
||||
Expect(*masterSts.Spec.Replicas).Should(Equal(seaweed.Spec.Master.Replicas))
|
||||
|
||||
Eventually(func() bool {
|
||||
err := k8sClient.Get(ctx, volumeKey, volumeSts)
|
||||
return err == nil
|
||||
}, timeout, interval).Should(BeTrue())
|
||||
Expect(volumeSts.Spec.Replicas).ShouldNot(BeNil())
|
||||
Expect(*volumeSts.Spec.Replicas).Should(Equal(seaweed.Spec.Volume.Replicas))
|
||||
|
||||
Eventually(func() bool {
|
||||
err := k8sClient.Get(ctx, filerKey, filerSts)
|
||||
return err == nil
|
||||
}, timeout, interval).Should(BeTrue())
|
||||
Expect(filerSts.Spec.Replicas).ShouldNot(BeNil())
|
||||
Expect(*filerSts.Spec.Replicas).Should(Equal(seaweed.Spec.Filer.Replicas))
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
|
@ -24,6 +24,7 @@ import (
|
|||
. "github.com/onsi/gomega"
|
||||
"k8s.io/client-go/kubernetes/scheme"
|
||||
"k8s.io/client-go/rest"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/envtest"
|
||||
"sigs.k8s.io/controller-runtime/pkg/envtest/printer"
|
||||
|
@ -68,6 +69,23 @@ var _ = BeforeSuite(func(done Done) {
|
|||
// +kubebuilder:scaffold:scheme
|
||||
|
||||
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
|
||||
k8sManager, err := ctrl.NewManager(cfg, ctrl.Options{
|
||||
Scheme: scheme.Scheme,
|
||||
})
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
err = (&SeaweedReconciler{
|
||||
Client: k8sManager.GetClient(),
|
||||
Log: ctrl.Log.WithName("controllers").WithName("Seaweed"),
|
||||
Scheme: k8sManager.GetScheme(),
|
||||
}).SetupWithManager(k8sManager)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
go func() {
|
||||
err = k8sManager.Start(ctrl.SetupSignalHandler())
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}()
|
||||
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(k8sClient).ToNot(BeNil())
|
||||
|
||||
|
|
Loading…
Reference in New Issue