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
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ spec:
shortNames:
- sp
singular: storageprovider
scope: Cluster
scope: Namespaced
versions:
- name: v1alpha1
schema:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -371,8 +371,6 @@ rules:
- storageproviders
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ apiVersion: shardingsphere.apache.org/v1alpha1
kind: StorageProvider
metadata:
name: aws-aurora-cluster-mysql-5.7
namespace: default
spec:
provisioner: storageproviders.shardingsphere.apache.org/aws-aurora
reclaimPolicy: Delete
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ apiVersion: shardingsphere.apache.org/v1alpha1
kind: StorageProvider
metadata:
name: aws-rds-cluster-mysql-8.0.32
namespace: default
spec:
provisioner: storageproviders.shardingsphere.apache.org/aws-rds-cluster
reclaimPolicy: Delete
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ apiVersion: shardingsphere.apache.org/v1alpha1
kind: StorageProvider
metadata:
name: aws-rds-instance-mysql-5.7
namespace: default
spec:
provisioner: storageproviders.shardingsphere.apache.org/aws-rds-instance
reclaimPolicy: Delete
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ type StorageProviderStatus struct {

//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:resource:scope=Cluster,shortName=sp
//+kubebuilder:resource:scope=Namespaced,shortName=sp

// StorageProvider is the Schema for the storageproviders API
type StorageProvider struct {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ spec:
shortNames:
- sp
singular: storageprovider
scope: Cluster
scope: Namespaced
versions:
- name: v1alpha1
schema:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ var _ = Describe("StorageNode Controller Mock Test For AWS Rds Instance", func()
// create default resource
dbClass := &v1alpha1.StorageProvider{
ObjectMeta: metav1.ObjectMeta{
Name: defaultTestStorageProvider,
Name: defaultTestStorageProvider,
Namespace: defaultTestNamespace,
},
Spec: v1alpha1.StorageProviderSpec{
Provisioner: v1alpha1.ProvisionerAWSRDSInstance,
Expand Down Expand Up @@ -131,7 +132,8 @@ var _ = Describe("StorageNode Controller Mock Test For AWS Rds Instance", func()
})).Should(Succeed())
Expect(fakeClient.Delete(ctx, &v1alpha1.StorageProvider{
ObjectMeta: metav1.ObjectMeta{
Name: defaultTestStorageProvider,
Name: defaultTestStorageProvider,
Namespace: defaultTestNamespace,
},
})).Should(Succeed())

Expand Down Expand Up @@ -183,6 +185,45 @@ var _ = Describe("StorageNode Controller Mock Test For AWS Rds Instance", func()
})
})

Context("create storage node with storage provider in another namespace", func() {
It("should fail reconcile because cross-namespace reference is not allowed", func() {
storageProvider := &v1alpha1.StorageProvider{
ObjectMeta: metav1.ObjectMeta{
Name: "test-storage-provider-cross-namespace",
Namespace: "another-namespace",
},
Spec: v1alpha1.StorageProviderSpec{
Provisioner: v1alpha1.ProvisionerAWSRDSInstance,
},
}
storageNode := &v1alpha1.StorageNode{
ObjectMeta: metav1.ObjectMeta{
Name: "test-storage-node-3",
Namespace: defaultTestNamespace,
},
Spec: v1alpha1.StorageNodeSpec{
StorageProviderName: storageProvider.GetName(),
},
Status: v1alpha1.StorageNodeStatus{},
}

Expect(fakeClient.Create(ctx, storageProvider)).Should(Succeed())
Expect(fakeClient.Create(ctx, storageNode)).Should(Succeed())

req := ctrl.Request{
NamespacedName: client.ObjectKey{
Name: storageNode.GetName(),
Namespace: storageNode.GetNamespace(),
},
}

_, err := reconciler.Reconcile(ctx, req)
Expect(apierrors.IsNotFound(err)).To(BeTrue())
Expect(fakeClient.Delete(ctx, storageNode)).Should(Succeed())
Expect(fakeClient.Delete(ctx, storageProvider)).Should(Succeed())
})
})

Context("reconcile storageNode", func() {
It("should reconcile successfully with Creating Instance", func() {
req := ctrl.Request{
Expand Down Expand Up @@ -640,7 +681,8 @@ var _ = Describe("StorageNode Controller Mock Test For AWS Rds Instance", func()

storageProvider := &v1alpha1.StorageProvider{
ObjectMeta: metav1.ObjectMeta{
Name: defaultTestStorageProvider,
Name: defaultTestStorageProvider,
Namespace: defaultTestNamespace,
},
Spec: v1alpha1.StorageProviderSpec{
Provisioner: v1alpha1.ProvisionerAWSRDSInstance,
Expand Down Expand Up @@ -741,7 +783,8 @@ var _ = Describe("StorageNode Controller Mock Test For AWS Aurora", func() {
BeforeEach(func() {
provider = &v1alpha1.StorageProvider{
ObjectMeta: metav1.ObjectMeta{
Name: "aws-aurora",
Name: "aws-aurora",
Namespace: defaultTestNamespace,
},
Spec: v1alpha1.StorageProviderSpec{
Provisioner: v1alpha1.ProvisionerAWSAurora,
Expand Down Expand Up @@ -1191,7 +1234,8 @@ var _ = Describe("StorageNode Controller Mock Test For AWS RDS Cluster", func()
BeforeEach(func() {
provider = &v1alpha1.StorageProvider{
ObjectMeta: metav1.ObjectMeta{
Name: providerName,
Name: providerName,
Namespace: defaultTestNamespace,
},
Spec: v1alpha1.StorageProviderSpec{
Provisioner: v1alpha1.ProvisionerAWSRDSCluster,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ type StorageNodeReconciler struct {
// +kubebuilder:rbac:groups=shardingsphere.apache.org,resources=storagenodes,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=shardingsphere.apache.org,resources=storagenodes/status,verbs=get;update;patch
// +kubebuilder:rbac:groups=shardingsphere.apache.org,resources=storagenodes/finalizers,verbs=update
// +kubebuilder:rbac:groups=shardingsphere.apache.org,resources=storageproviders,verbs=get;list;watch
// +kubebuilder:rbac:groups=shardingsphere.apache.org,resources=storageproviders,verbs=get
// +kubebuilder:rbac:groups=postgresql.cnpg.io,resources=clusters,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups="",resources=event,verbs=create;patch

Expand Down Expand Up @@ -249,9 +249,9 @@ func (r *StorageNodeReconciler) getStorageProvider(ctx context.Context, node *v1

storageProvider = &v1alpha1.StorageProvider{}

if err := r.Get(ctx, client.ObjectKey{Name: node.Spec.StorageProviderName}, storageProvider); err != nil {
r.Log.Error(err, fmt.Sprintf("unable to fetch storageProvider %s", node.Spec.StorageProviderName))
r.Recorder.Event(node, corev1.EventTypeWarning, "storageProviderNotFound", fmt.Sprintf("storageProvider %s not found", node.Spec.StorageProviderName))
if err := r.Get(ctx, client.ObjectKey{Name: node.Spec.StorageProviderName, Namespace: node.Namespace}, storageProvider); err != nil {
r.Log.Error(err, fmt.Sprintf("unable to fetch storageProvider %s/%s", node.Namespace, node.Spec.StorageProviderName))
r.Recorder.Event(node, corev1.EventTypeWarning, "storageProviderNotFound", fmt.Sprintf("storageProvider %s/%s not found", node.Namespace, node.Spec.StorageProviderName))
return nil, err
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,8 @@ var _ = Describe("Test For AWS Aurora Manually", func() {

storageProvider := &v1alpha1.StorageProvider{
ObjectMeta: metav1.ObjectMeta{
Name: "test-get-aurora-cluster",
Name: "test-get-aurora-cluster",
Namespace: "test-namespace",
},
Spec: v1alpha1.StorageProviderSpec{
Provisioner: v1alpha1.ProvisionerAWSAurora,
Expand Down
10 changes: 6 additions & 4 deletions shardingsphere-operator/test/e2e/storage_node_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ var _ = Describe("StorageNode Controller Suite Test For AWS RDS Instance", func(
BeforeEach(func() {
StorageProvider := &v1alpha1.StorageProvider{
ObjectMeta: metav1.ObjectMeta{
Name: storageProviderName,
Name: storageProviderName,
Namespace: "default",
},
Spec: v1alpha1.StorageProviderSpec{
Provisioner: v1alpha1.ProvisionerAWSRDSInstance,
Expand All @@ -66,7 +67,7 @@ var _ = Describe("StorageNode Controller Suite Test For AWS RDS Instance", func(

AfterEach(func() {
StorageProvider := &v1alpha1.StorageProvider{}
Expect(k8sClient.Get(ctx, client.ObjectKey{Name: storageProviderName}, StorageProvider)).Should(Succeed())
Expect(k8sClient.Get(ctx, client.ObjectKey{Name: storageProviderName, Namespace: "default"}, StorageProvider)).Should(Succeed())
Expect(k8sClient.Delete(ctx, StorageProvider)).Should(Succeed())
})

Expand Down Expand Up @@ -293,7 +294,8 @@ var _ = Describe("StorageNode Controller Suite Test For AWS Aurora Cluster", fun
BeforeEach(func() {
provider := &v1alpha1.StorageProvider{
ObjectMeta: metav1.ObjectMeta{
Name: storageProviderName,
Name: storageProviderName,
Namespace: "default",
},
Spec: v1alpha1.StorageProviderSpec{
Provisioner: v1alpha1.ProvisionerAWSAurora,
Expand All @@ -313,7 +315,7 @@ var _ = Describe("StorageNode Controller Suite Test For AWS Aurora Cluster", fun
monkey.UnpatchAll()

StorageProvider := &v1alpha1.StorageProvider{}
Expect(k8sClient.Get(ctx, client.ObjectKey{Name: storageProviderName}, StorageProvider)).Should(Succeed())
Expect(k8sClient.Get(ctx, client.ObjectKey{Name: storageProviderName, Namespace: "default"}, StorageProvider)).Should(Succeed())
Expect(k8sClient.Delete(ctx, StorageProvider)).Should(Succeed())
})

Expand Down
Loading