in controllers/dsmaster_controller.go [243:275]
func (r *DSMasterReconciler) ensureScaled(ctx context.Context, cluster *dsv1alpha1.DSMaster) (bool, error) {
// Get current members in this cluster
ms, err := r.podMemberSet(ctx, cluster)
if err != nil {
return true, err
}
// Scale up
if len(ms) < cluster.Spec.Replicas {
err = r.createMember(ctx, cluster)
if err != nil {
r.recorder.Event(cluster, corev1.EventTypeWarning, "cannot create the new ds-master pod", "the ds-master pod had been created failed")
return true, err
}
// Cluster modified, next reconcile will enter r.ensureMembers()
return true, err
}
// Scale down
if len(ms) > cluster.Spec.Replicas {
pod := &corev1.Pod{}
member := ms.PickOne()
pod.SetName(member.Name)
pod.SetNamespace(member.Namespace)
err = r.deletePod(ctx, pod)
if err != nil {
return true, err
}
return true, err
}
return false, nil
}