Skip to content

Commit 829112a

Browse files
committed
refactor logic
Signed-off-by: ArkaSaha30 <[email protected]>
1 parent 4cb7a46 commit 829112a

File tree

2 files changed

+38
-27
lines changed

2 files changed

+38
-27
lines changed

internal/controller/etcdcluster_controller.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,21 +160,24 @@ func (r *EtcdClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request)
160160
targetReplica := *sts.Spec.Replicas // Start with the current size of the stateful set
161161

162162
// The number of replicas in the StatefulSet doesn't match the number of etcd members in the cluster.
163+
var scaleOut bool
163164
if int(targetReplica) != memberCnt {
164165
logger.Info("The expected number of replicas doesn't match the number of etcd members in the cluster", "targetReplica", targetReplica, "memberCnt", memberCnt)
165166
if int(targetReplica) < memberCnt {
167+
scaleOut = true
166168
logger.Info("An etcd member was added into the cluster, but the StatefulSet hasn't scaled out yet")
167169
newReplicaCount := targetReplica + 1
168170
logger.Info("Increasing StatefulSet replicas to match the etcd cluster member count", "oldReplicaCount", targetReplica, "newReplicaCount", newReplicaCount)
169-
_, err = reconcileStatefulSet(ctx, logger, etcdCluster, r.Client, newReplicaCount, r.Scheme, true)
171+
_, err = reconcileStatefulSet(ctx, logger, etcdCluster, r.Client, newReplicaCount, r.Scheme, scaleOut)
170172
if err != nil {
171173
return ctrl.Result{}, err
172174
}
173175
} else {
176+
scaleOut = false
174177
logger.Info("An etcd member was removed from the cluster, but the StatefulSet hasn't scaled in yet")
175178
newReplicaCount := targetReplica - 1
176179
logger.Info("Decreasing StatefulSet replicas to remove the unneeded Pod.", "oldReplicaCount", targetReplica, "newReplicaCount", newReplicaCount)
177-
_, err = reconcileStatefulSet(ctx, logger, etcdCluster, r.Client, newReplicaCount, r.Scheme, false)
180+
_, err = reconcileStatefulSet(ctx, logger, etcdCluster, r.Client, newReplicaCount, r.Scheme, scaleOut)
178181
if err != nil {
179182
return ctrl.Result{}, err
180183
}

internal/controller/utils.go

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -73,18 +73,6 @@ func reconcileStatefulSet(ctx context.Context, logger logr.Logger, ec *ecv1alpha
7373
return nil, err
7474
}
7575

76-
// Create Update StatefulSet
77-
err = createOrPatchStatefulSet(ctx, logger, ec, c, replicas, scheme)
78-
if err != nil {
79-
return nil, err
80-
}
81-
82-
// Wait for statefulset to be ready
83-
err = waitForStatefulSetReady(ctx, logger, c, ec.Name, ec.Namespace)
84-
if err != nil {
85-
return nil, err
86-
}
87-
8876
// Add or remove server and peer certificate
8977
if ec.Spec.TLS != nil {
9078
if addMember {
@@ -112,6 +100,18 @@ func reconcileStatefulSet(ctx context.Context, logger logr.Logger, ec *ecv1alpha
112100
}
113101
}
114102

103+
// Create Update StatefulSet
104+
err = createOrPatchStatefulSet(ctx, logger, ec, c, replicas, scheme)
105+
if err != nil {
106+
return nil, err
107+
}
108+
109+
// Wait for statefulset to be ready
110+
err = waitForStatefulSetReady(ctx, logger, c, ec.Name, ec.Namespace)
111+
if err != nil {
112+
return nil, err
113+
}
114+
115115
// Return latest Stateful set. (This is to ensure that we return the latest statefulset for next operation to act on)
116116
return getStatefulSet(ctx, c, ec.Name, ec.Namespace)
117117
}
@@ -555,28 +555,37 @@ func healthCheck(sts *appsv1.StatefulSet, lg klog.Logger) (*clientv3.MemberListR
555555
return memberlistResp, healthInfos, nil
556556
}
557557

558-
func createCMCertificateConfig(ec *ecv1alpha1.ProviderCertManagerConfig) *certInterface.Config {
559-
duration, err := time.ParseDuration(ec.ValidityDuration)
558+
func createCMCertificateConfig(ec *ecv1alpha1.EtcdCluster) *certInterface.Config {
559+
cmConfig := ec.Spec.TLS.ProviderCfg.CertManagerCfg
560+
duration, err := time.ParseDuration(cmConfig.ValidityDuration)
560561
if err != nil {
561562
log.Printf("Failed to parse ValidityDuration: %s", err)
562563
}
564+
565+
var getDNSNames []string
566+
if cmConfig.AltNames.DNSNames != nil {
567+
getDNSNames = cmConfig.AltNames.DNSNames
568+
} else {
569+
getDNSNames = []string{fmt.Sprintf("%s.svc.cluster.local", cmConfig.CommonName)}
570+
}
571+
563572
config := &certInterface.Config{
564-
CommonName: ec.CommonName,
565-
Organization: ec.Organization,
573+
CommonName: cmConfig.CommonName,
574+
Organization: cmConfig.Organization,
566575
ValidityDuration: duration,
567576
AltNames: certInterface.AltNames{
568-
DNSNames: ec.AltNames.DNSNames,
569-
IPs: make([]net.IP, len(ec.AltNames.DNSNames)),
577+
DNSNames: getDNSNames,
578+
IPs: make([]net.IP, len(getDNSNames)),
570579
},
571580
ExtraConfig: map[string]any{
572-
"issuerName": ec.IssuerName,
573-
"issuerKind": ec.IssuerKind,
581+
"issuerName": cmConfig.IssuerName,
582+
"issuerKind": cmConfig.IssuerKind,
574583
},
575584
}
576585
return config
577586
}
578587

579-
func createAutoCertificateConfig(ec *ecv1alpha1.ProviderAutoConfig) *certInterface.Config {
588+
func createAutoCertificateConfig(ec *ecv1alpha1.EtcdCluster) *certInterface.Config {
580589
// TODO
581590
config := &certInterface.Config{}
582591
return config
@@ -594,14 +603,14 @@ func createCertificate(ec *ecv1alpha1.EtcdCluster, ctx context.Context, c client
594603
log.Printf("Creating certificate: %s for etcd-operator: %s\n", certName, ec.Name)
595604
switch {
596605
case ec.Spec.TLS.ProviderCfg.AutoCfg != nil:
597-
cmConfig := createAutoCertificateConfig(ec.Spec.TLS.ProviderCfg.AutoCfg)
606+
cmConfig := createAutoCertificateConfig(ec)
598607
createCertErr := cert.EnsureCertificateSecret(ctx, certName, ec.Namespace, cmConfig)
599608
if createCertErr != nil {
600609
log.Printf("Error creating certificate: %s", createCertErr)
601610
}
602611
return nil
603612
case ec.Spec.TLS.ProviderCfg.CertManagerCfg != nil:
604-
cmConfig := createCMCertificateConfig(ec.Spec.TLS.ProviderCfg.CertManagerCfg)
613+
cmConfig := createCMCertificateConfig(ec)
605614
createCertErr := cert.EnsureCertificateSecret(ctx, certName, ec.Namespace, cmConfig)
606615
if createCertErr != nil {
607616
log.Printf("Error creating certificate: %s", createCertErr)
@@ -613,8 +622,7 @@ func createCertificate(ec *ecv1alpha1.EtcdCluster, ctx context.Context, c client
613622
return nil
614623
}
615624
} else {
616-
log.Printf("Error getting certificate")
617-
return getCertError
625+
return errors.New(fmt.Sprintf("%s:Error getting certificate", getCertError))
618626
}
619627
}
620628

0 commit comments

Comments
 (0)