This is an automated email from the ASF dual-hosted git repository.

miaoliyao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/shardingsphere-on-cloud.git


The following commit(s) were added to refs/heads/main by this push:
     new 1b50b85  fix(storage-node): fix get username and password from dbClass
     new c9473aa  Merge pull request #386 from yikuaibro/db_class
1b50b85 is described below

commit 1b50b853a348700ef35fcfcc3c0ea3367c82b67d
Author: li <[email protected]>
AuthorDate: Thu Jun 1 14:52:28 2023 +0800

    fix(storage-node): fix get username and password from dbClass
---
 .../pkg/controllers/storage_ndoe_controller_test.go    | 18 +++++++++++++++++-
 .../pkg/controllers/storage_node_controller.go         | 10 ++++++++--
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git 
a/shardingsphere-operator/pkg/controllers/storage_ndoe_controller_test.go 
b/shardingsphere-operator/pkg/controllers/storage_ndoe_controller_test.go
index 87e2fba..d165f62 100644
--- a/shardingsphere-operator/pkg/controllers/storage_ndoe_controller_test.go
+++ b/shardingsphere-operator/pkg/controllers/storage_ndoe_controller_test.go
@@ -625,6 +625,9 @@ var _ = Describe("StorageNode Controller Mock Test", func() 
{
                                                
dbmeshv1alpha1.AnnotationsInstanceDBName: testName,
                                        },
                                },
+                               Spec: v1alpha1.StorageNodeSpec{
+                                       DatabaseClassName: defaultTestDBClass,
+                               },
                                Status: v1alpha1.StorageNodeStatus{
                                        Phase: v1alpha1.StorageNodePhaseReady,
                                        Instances: []v1alpha1.InstanceStatus{
@@ -636,11 +639,24 @@ var _ = Describe("StorageNode Controller Mock Test", 
func() {
                                },
                        }
 
+                       dbClass := &dbmeshv1alpha1.DatabaseClass{
+                               ObjectMeta: metav1.ObjectMeta{
+                                       Name: defaultTestDBClass,
+                               },
+                               Spec: dbmeshv1alpha1.DatabaseClassSpec{
+                                       Provisioner: 
dbmeshv1alpha1.ProvisionerAWSRDSInstance,
+                                       Parameters: map[string]string{
+                                               "masterUsername":     testName,
+                                               "masterUserPassword": testName,
+                                       },
+                               },
+                       }
+
                        mockSS.EXPECT().CreateDatabase(gomock.Any()).Return(nil)
                        mockSS.EXPECT().Close().Return(nil)
                        mockSS.EXPECT().RegisterStorageUnit(gomock.Any(), 
gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), 
gomock.Any()).Return(nil)
 
-                       Expect(reconciler.registerStorageUnit(ctx, 
sn)).To(BeNil())
+                       Expect(reconciler.registerStorageUnit(ctx, sn, 
dbClass)).To(BeNil())
                        Expect(sn.Status.Registered).To(BeTrue())
                })
 
diff --git a/shardingsphere-operator/pkg/controllers/storage_node_controller.go 
b/shardingsphere-operator/pkg/controllers/storage_node_controller.go
index 3c99383..6ac2242 100644
--- a/shardingsphere-operator/pkg/controllers/storage_node_controller.go
+++ b/shardingsphere-operator/pkg/controllers/storage_node_controller.go
@@ -166,7 +166,7 @@ func (r *StorageNodeReconciler) reconcile(ctx 
context.Context, dbClass *dbmeshv1
        }
 
        // register storage unit if needed.
-       if err := r.registerStorageUnit(ctx, node); err != nil {
+       if err := r.registerStorageUnit(ctx, node, dbClass); err != nil {
                r.Recorder.Eventf(node, corev1.EventTypeWarning, 
"RegisterStorageUnitFailed", "unable to register storage unit %s/%s", 
node.GetNamespace(), node.GetName())
                return ctrl.Result{Requeue: true}, err
        }
@@ -463,7 +463,7 @@ func (r *StorageNodeReconciler) deleteAWSRDSInstance(ctx 
context.Context, client
 }
 
 // registerStorageUnit
-func (r *StorageNodeReconciler) registerStorageUnit(ctx context.Context, node 
*v1alpha1.StorageNode) error {
+func (r *StorageNodeReconciler) registerStorageUnit(ctx context.Context, node 
*v1alpha1.StorageNode, dbClass *dbmeshv1alpha1.DatabaseClass) error {
        // if register storage unit is not enabled, return
        if node.Annotations[AnnotationKeyRegisterStorageUnitEnabled] != "true" {
                return nil
@@ -505,7 +505,13 @@ func (r *StorageNodeReconciler) registerStorageUnit(ctx 
context.Context, node *v
        host := ins.Endpoint.Address
        port := ins.Endpoint.Port
        username := node.Annotations[dbmeshv1alpha1.AnnotationsMasterUsername]
+       if username == "" {
+               username = dbClass.Spec.Parameters["masterUsername"]
+       }
        password := 
node.Annotations[dbmeshv1alpha1.AnnotationsMasterUserPassword]
+       if password == "" {
+               password = dbClass.Spec.Parameters["masterUserPassword"]
+       }
 
        // TODO how to set ds name?
        if err := ssServer.RegisterStorageUnit(logicDBName, "ds_0", host, 
uint(port), dbName, username, password); err != nil {

Reply via email to