Skip to content

Commit 20618f3

Browse files
author
Peng Zhou
committed
fix null pointer issue
1 parent 63a4f19 commit 20618f3

File tree

4 files changed

+28
-22
lines changed

4 files changed

+28
-22
lines changed

api/v1/common_types.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,7 @@ type HAProxy struct {
9898
// +kubebuilder:default:=false
9999
PathBasedRouting *bool `json:"pathBasedRouting,omitempty"`
100100
Service *corev1.ServiceType `json:"service,omitempty"`
101-
// +kubebuilder:default:={enabled: false}
102-
TcpPorts *Tcpports `json:"tcpPorts,omitempty"`
101+
TcpPorts *Tcpports `json:"tcpPorts,omitempty"`
103102
// +kubebuilder:default:={client: 600, connect: 600, server: 600}
104103
Timeout Timeout `json:"timeout,omitempty"`
105104
// +kubebuilder:default:={enabled: false, secretName: "", certFileName: ""}

config/crd/bases/marklogic.progress.com_marklogicclusters.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4531,8 +4531,6 @@ spec:
45314531
type: integer
45324532
type: object
45334533
tcpPorts:
4534-
default:
4535-
enabled: false
45364534
properties:
45374535
enabled:
45384536
type: boolean
@@ -9306,8 +9304,6 @@ spec:
93069304
type: integer
93079305
type: object
93089306
tcpPorts:
9309-
default:
9310-
enabled: false
93119307
properties:
93129308
enabled:
93139309
type: boolean

pkg/k8sutil/haProxy.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/hex"
66
"sort"
77

8+
"context"
89
"github.com/cisco-open/k8s-objectmatcher/patch"
910
marklogicv1 "github.com/marklogic/marklogic-operator-kubernetes/api/v1"
1011
"github.com/marklogic/marklogic-operator-kubernetes/pkg/result"
@@ -33,7 +34,7 @@ func (cc *ClusterContext) ReconcileHAProxy() result.ReconcileResult {
3334
configmap := &corev1.ConfigMap{}
3435
haproxyService := &corev1.Service{}
3536
err := client.Get(cc.Ctx, nsName, configmap)
36-
data := generateHAProxyConfigMapData(cc.MarklogicCluster)
37+
data := generateHAProxyConfigMapData(cc.Ctx, cc.MarklogicCluster)
3738
configMapDef := generateHAProxyConfigMap(objectMeta, marklogicClusterAsOwner(cr), data)
3839
haproxyDeploymentDef := cc.createHAProxyDeploymentDef(objectMeta)
3940
haproxyServiceDef := cc.generateHaproxyServiceDef(objectMeta)
@@ -143,7 +144,7 @@ func (cc *ClusterContext) ReconcileHAProxy() result.ReconcileResult {
143144
}
144145

145146
// generateHAProxyData generates the HAProxy Config Data
146-
func generateHAProxyConfigMapData(cr *marklogicv1.MarklogicCluster) map[string]string {
147+
func generateHAProxyConfigMapData(ctx context.Context, cr *marklogicv1.MarklogicCluster) map[string]string {
147148
var result string
148149
// HAProxy Config Data
149150
haProxyData := make(map[string]string)
@@ -196,7 +197,7 @@ resolvers dns
196197
result += parseTemplateToString(baseConfig, data) + "\n"
197198
haProxyData["haproxy.cfg"] += result + "\n"
198199

199-
haproxyConfig := generateHAProxyConfig(cr)
200+
haproxyConfig := generateHAProxyConfig(ctx, cr)
200201

201202
haProxyData["haproxy.cfg"] += generateFrontendConfig(cr, haproxyConfig) + "\n"
202203
haProxyData["haproxy.cfg"] += generateBackendConfig(cr, haproxyConfig) + "\n"
@@ -231,7 +232,7 @@ func (cc *ClusterContext) createHAProxyDeploymentDef(meta metav1.ObjectMeta) *ap
231232
ObjectMeta: metav1.ObjectMeta{
232233
Labels: meta.Labels,
233234
Annotations: map[string]string{
234-
"configmap-hash": calculateHash(generateHAProxyConfigMapData(cr)),
235+
"configmap-hash": calculateHash(generateHAProxyConfigMapData(cc.Ctx, cr)),
235236
},
236237
},
237238
Spec: corev1.PodSpec{

pkg/k8sutil/haProxyHelper.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package k8sutil
22

33
import (
44
"bytes"
5+
"context"
56
"fmt"
7+
marklogicv1 "github.com/marklogic/marklogic-operator-kubernetes/api/v1"
8+
"sigs.k8s.io/controller-runtime/pkg/log"
69
"strings"
710
"text/template"
8-
9-
marklogicv1 "github.com/marklogic/marklogic-operator-kubernetes/api/v1"
1011
)
1112

1213
type HAProxyTemplate struct {
@@ -63,7 +64,9 @@ type TCPConfig struct {
6364
GroupName string
6465
}
6566

66-
func generateHAProxyConfig(cr *marklogicv1.MarklogicCluster) *HAProxyConfig {
67+
func generateHAProxyConfig(ctx context.Context, cr *marklogicv1.MarklogicCluster) *HAProxyConfig {
68+
logger := log.FromContext(ctx)
69+
logger.Info("Generating HAProxy configuration")
6770
config := &HAProxyConfig{}
6871
frontendMap := make(map[string]FrontEndConfig)
6972
backendMap := make(map[string][]BackendConfig)
@@ -80,14 +83,21 @@ func generateHAProxyConfig(cr *marklogicv1.MarklogicCluster) *HAProxyConfig {
8083
config.IsPathBased = true
8184
}
8285
}
86+
87+
groupHAConfig := group.HAProxy
88+
89+
if groupHAConfig == nil {
90+
groupHAConfig = cr.Spec.HAProxy
91+
}
92+
8393
// process tcp ports
84-
if cr.Spec.HAProxy.TcpPorts != nil && group.HAProxy.TcpPorts != nil && group.HAProxy.TcpPorts.Enabled {
85-
tcpPorts := cr.Spec.HAProxy.TcpPorts.Ports
86-
if group.HAProxy != nil && group.HAProxy.TcpPorts != nil {
87-
tcpPorts = group.HAProxy.TcpPorts.Ports
94+
if groupHAConfig.TcpPorts != nil && groupHAConfig.TcpPorts.Enabled {
95+
tcpPorts := []marklogicv1.TcpPort{}
96+
if cr.Spec.HAProxy.TcpPorts != nil {
97+
tcpPorts = cr.Spec.HAProxy.TcpPorts.Ports
8898
}
89-
if len(tcpPorts) == 0 {
90-
tcpPorts = []marklogicv1.TcpPort{}
99+
if groupHAConfig.TcpPorts != nil {
100+
tcpPorts = groupHAConfig.TcpPorts.Ports
91101
}
92102
for _, tcpPort := range tcpPorts {
93103
targetPort := int(tcpPort.TargetPort)
@@ -125,10 +135,10 @@ func generateHAProxyConfig(cr *marklogicv1.MarklogicCluster) *HAProxyConfig {
125135
}
126136

127137
// process http ports with appServers
128-
appServers := group.HAProxy.AppServers
138+
appServers := groupHAConfig.AppServers
129139
groupPathBased := *cr.Spec.HAProxy.PathBasedRouting
130-
if group.HAProxy.PathBasedRouting != nil {
131-
groupPathBased = *group.HAProxy.PathBasedRouting
140+
if groupHAConfig.PathBasedRouting != nil {
141+
groupPathBased = *groupHAConfig.PathBasedRouting
132142
}
133143
if len(appServers) == 0 {
134144
appServers = defaultAppServer

0 commit comments

Comments
 (0)