Skip to content

Commit afa8717

Browse files
author
Peng Zhou
committed
Revert Change for service
1 parent 0f99e86 commit afa8717

File tree

1 file changed

+51
-44
lines changed

1 file changed

+51
-44
lines changed

pkg/k8sutil/service.go

Lines changed: 51 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package k8sutil
33
import (
44
"strings"
55

6-
"github.com/cisco-open/k8s-objectmatcher/patch"
76
corev1 "k8s.io/api/core/v1"
87
"k8s.io/apimachinery/pkg/api/errors"
98
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -15,15 +14,13 @@ import (
1514
)
1615

1716
type serviceParameters struct {
18-
StsName string
1917
Ports []corev1.ServicePort
2018
Type corev1.ServiceType
2119
Annotations map[string]string
2220
}
2321

2422
func generateServiceParams(cr *marklogicv1.MarklogicGroup) serviceParameters {
2523
return serviceParameters{
26-
StsName: cr.Spec.Name,
2724
Type: cr.Spec.Service.Type,
2825
Ports: cr.Spec.Service.AdditionalPorts,
2926
Annotations: cr.Spec.Service.Annotations,
@@ -74,7 +71,7 @@ func generateServicePorts() []corev1.ServicePort {
7471
func generateServiceDef(serviceMeta metav1.ObjectMeta, ownerRef metav1.OwnerReference, params serviceParameters) *corev1.Service {
7572
var svcSpec corev1.ServiceSpec
7673
svcSpec = corev1.ServiceSpec{
77-
Selector: getSelectorLabels(params.StsName),
74+
Selector: serviceMeta.GetLabels(),
7875
Ports: append(params.Ports, generateServicePorts()...),
7976
}
8077
if strings.HasSuffix(serviceMeta.Name, "-cluster") {
@@ -95,17 +92,44 @@ func generateServiceDef(serviceMeta metav1.ObjectMeta, ownerRef metav1.OwnerRefe
9592
return service
9693
}
9794

98-
func generateService(svcName string, cr *marklogicv1.MarklogicGroup) *corev1.Service {
99-
labels := getCommonLabels(cr.Spec.Name)
100-
groupLabels := cr.Spec.Labels
101-
if groupLabels != nil {
102-
for key, value := range groupLabels {
103-
labels[key] = value
95+
func (oc *OperatorContext) getService(namespace string, serviceName string) (*corev1.Service, error) {
96+
logger := oc.ReqLogger
97+
98+
var serviceInfo *corev1.Service
99+
err := oc.Client.Get(oc.Ctx, types.NamespacedName{Name: serviceName, Namespace: namespace}, serviceInfo)
100+
if err != nil {
101+
logger.Info("MarkLogic service get action is failed")
102+
return nil, err
103+
}
104+
logger.Info("MarkLogic service get action is successful")
105+
return serviceInfo, nil
106+
}
107+
108+
func (oc *OperatorContext) CreateOrUpdateService(namespace string, serviceMeta metav1.ObjectMeta, ownerDef metav1.OwnerReference) error {
109+
logger := oc.ReqLogger
110+
serviceDef := generateServiceDef(serviceMeta, ownerDef, serviceParameters{})
111+
_, err := oc.getService(namespace, serviceMeta.Name)
112+
if err != nil {
113+
if errors.IsNotFound(err) {
114+
logger.Info("MarkLogic service is not found, creating a new one")
115+
err = oc.createService(namespace, serviceDef)
116+
if err != nil {
117+
logger.Info("MarkLogic service creation is failed")
118+
return err
119+
}
120+
logger.Info("MarkLogic service creation is successful")
121+
return nil
104122
}
123+
return err
105124
}
125+
return nil
126+
}
127+
128+
func generateService(svcName string, cr *marklogicv1.MarklogicGroup) *corev1.Service {
129+
labels := getCommonLabels(cr.Spec.Name)
106130
var svcParams serviceParameters = serviceParameters{}
107-
svcParams = generateServiceParams(cr)
108131
svcObjectMeta := generateObjectMeta(svcName, cr.Namespace, labels, svcParams.Annotations)
132+
svcParams = generateServiceParams(cr)
109133
service := generateServiceDef(svcObjectMeta, marklogicServerAsOwner(cr), svcParams)
110134
return service
111135
}
@@ -115,21 +139,18 @@ func (oc *OperatorContext) ReconcileServices() result.ReconcileResult {
115139
logger.Info("service::Reconciling MarkLogic Service")
116140
client := oc.Client
117141
cr := oc.MarklogicGroup
118-
currentSvc := &corev1.Service{}
142+
svc := &corev1.Service{}
119143
headlessSvcName := cr.Spec.Name
120144
svcName := cr.Spec.Name + "-cluster"
121145
services := []string{headlessSvcName, svcName}
122146
for _, service := range services {
123147
svcNsName := types.NamespacedName{Name: service, Namespace: cr.Namespace}
124-
err := client.Get(oc.Ctx, svcNsName, currentSvc)
125-
svcDef := generateService(service, cr)
148+
err := client.Get(oc.Ctx, svcNsName, svc)
126149
if err != nil {
127150
if errors.IsNotFound(err) {
128151
logger.Info("MarkLogic service not found, creating a new one")
129-
if err := patch.DefaultAnnotator.SetLastAppliedAnnotation(svcDef); err != nil {
130-
logger.Error(err, "Failed to set last applied annotation for MarkLogic service")
131-
}
132-
err = client.Create(oc.Ctx, svcDef)
152+
svc = generateService(service, cr)
153+
err = client.Create(oc.Ctx, svc)
133154
if err != nil {
134155
logger.Info("MarkLogic service creation has failed")
135156
return result.Error(err)
@@ -139,33 +160,19 @@ func (oc *OperatorContext) ReconcileServices() result.ReconcileResult {
139160
logger.Error(err, "MarkLogic service creation has failed")
140161
return result.Error(err)
141162
}
142-
} else {
143-
patchDiff, err := patch.DefaultPatchMaker.Calculate(currentSvc, svcDef,
144-
patch.IgnoreStatusFields(),
145-
patch.IgnoreVolumeClaimTemplateTypeMetaAndStatus(),
146-
patch.IgnoreField("kind"))
147-
148-
if err != nil {
149-
logger.Error(err, "Error calculating patch")
150-
return result.Error(err)
151-
}
152-
if !patchDiff.IsEmpty() {
153-
logger.Info("MarkLogic service spec is different from the MarkLogicGroup spec, updating the service")
154-
currentSvc.Spec = svcDef.Spec
155-
currentSvc.ObjectMeta.Annotations = svcDef.ObjectMeta.Annotations
156-
currentSvc.ObjectMeta.Labels = svcDef.ObjectMeta.Labels
157-
if err := patch.DefaultAnnotator.SetLastAppliedAnnotation(currentSvc); err != nil {
158-
logger.Error(err, "Failed to set last applied annotation for MarkLogic service")
159-
}
160-
err := oc.Client.Update(oc.Ctx, currentSvc)
161-
if err != nil {
162-
logger.Error(err, "Error updating MarkLogic service")
163-
return result.Error(err)
164-
}
165-
} else {
166-
logger.Info("MarkLogic service spec is the same")
167-
}
168163
}
169164
}
170165
return result.Continue()
171166
}
167+
168+
func (oc *OperatorContext) createService(namespace string, service *corev1.Service) error {
169+
logger := oc.ReqLogger
170+
client := oc.Client
171+
err := client.Create(oc.Ctx, service)
172+
if err != nil {
173+
logger.Error(err, "MarkLogic service creation has failed")
174+
return err
175+
}
176+
logger.Info("MarkLogic service creation is successful")
177+
return nil
178+
}

0 commit comments

Comments
 (0)