Skip to content

Commit 999483e

Browse files
committed
Use ServiceExport Condition type and reason definitions from MCS API
...that were recently added by kubernetes-sigs/mcs-api#112 Signed-off-by: Tom Pantelis <[email protected]>
1 parent f4da8a4 commit 999483e

22 files changed

+222
-255
lines changed

coredns/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ require (
1616
k8s.io/client-go v0.33.2
1717
k8s.io/utils v0.0.0-20241210054802-24370beab758
1818
sigs.k8s.io/controller-runtime v0.21.0
19-
sigs.k8s.io/mcs-api v0.2.0
19+
sigs.k8s.io/mcs-api v0.2.1-0.20250826145214-0d87c31a767d
2020
)
2121

2222
require (

coredns/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -479,8 +479,8 @@ sigs.k8s.io/controller-runtime v0.21.0 h1:CYfjpEuicjUecRk+KAeyYh+ouUBn4llGyDYytI
479479
sigs.k8s.io/controller-runtime v0.21.0/go.mod h1:OSg14+F65eWqIu4DceX7k/+QRAbTTvxeQSNSOQpukWM=
480480
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
481481
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
482-
sigs.k8s.io/mcs-api v0.2.0 h1:F8o/nIpQmog494Qwe94srDWjS3ltEu4y5IL9i3dB938=
483-
sigs.k8s.io/mcs-api v0.2.0/go.mod h1:zZ5CK8uS6HaLkxY4HqsmcBHfzHuNMrY2uJy8T7jffK4=
482+
sigs.k8s.io/mcs-api v0.2.1-0.20250826145214-0d87c31a767d h1:agQ9c0aqUsfj6FbPmYRsVOq1QacrIXoL/tinGY684Aw=
483+
sigs.k8s.io/mcs-api v0.2.1-0.20250826145214-0d87c31a767d/go.mod h1:zZ5CK8uS6HaLkxY4HqsmcBHfzHuNMrY2uJy8T7jffK4=
484484
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
485485
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
486486
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ require (
1616
k8s.io/klog/v2 v2.130.1
1717
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
1818
sigs.k8s.io/controller-runtime v0.21.0
19-
sigs.k8s.io/mcs-api v0.2.0
19+
sigs.k8s.io/mcs-api v0.2.1-0.20250826145214-0d87c31a767d
2020
)
2121

2222
require (

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,8 @@ sigs.k8s.io/controller-runtime v0.21.0 h1:CYfjpEuicjUecRk+KAeyYh+ouUBn4llGyDYytI
212212
sigs.k8s.io/controller-runtime v0.21.0/go.mod h1:OSg14+F65eWqIu4DceX7k/+QRAbTTvxeQSNSOQpukWM=
213213
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
214214
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
215-
sigs.k8s.io/mcs-api v0.2.0 h1:F8o/nIpQmog494Qwe94srDWjS3ltEu4y5IL9i3dB938=
216-
sigs.k8s.io/mcs-api v0.2.0/go.mod h1:zZ5CK8uS6HaLkxY4HqsmcBHfzHuNMrY2uJy8T7jffK4=
215+
sigs.k8s.io/mcs-api v0.2.1-0.20250826145214-0d87c31a767d h1:agQ9c0aqUsfj6FbPmYRsVOq1QacrIXoL/tinGY684Aw=
216+
sigs.k8s.io/mcs-api v0.2.1-0.20250826145214-0d87c31a767d/go.mod h1:zZ5CK8uS6HaLkxY4HqsmcBHfzHuNMrY2uJy8T7jffK4=
217217
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
218218
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
219219
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=

pkg/agent/controller/agent.go

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,6 @@ import (
4848
mcsv1a1 "sigs.k8s.io/mcs-api/pkg/apis/v1alpha1"
4949
)
5050

51-
const (
52-
serviceUnavailable = "ServiceUnavailable"
53-
invalidServiceType = "UnsupportedServiceType"
54-
)
55-
5651
type AgentConfig struct {
5752
ServiceImportCounterName string
5853
ServiceExportCounterName string
@@ -213,8 +208,8 @@ func (a *Controller) serviceExportToServiceImport(obj runtime.Object, _ int, op
213208
if err != nil {
214209
// some other error. Log and requeue
215210
a.serviceExportClient.UpdateStatusConditions(ctx, svcExport.Name, svcExport.Namespace,
216-
newServiceExportCondition(mcsv1a1.ServiceExportValid, metav1.ConditionUnknown, "ServiceRetrievalFailed",
217-
fmt.Sprintf("Error retrieving the Service: %v", err)))
211+
mcsv1a1.NewServiceExportCondition(mcsv1a1.ServiceExportConditionValid, metav1.ConditionUnknown,
212+
ServiceExportReasonRetrievalFailed, fmt.Sprintf("Error retrieving the Service: %v", err)))
218213
logger.Errorf(err, "Error retrieving Service %s/%s", svcExport.Namespace, svcExport.Name)
219214

220215
return nil, true
@@ -223,8 +218,8 @@ func (a *Controller) serviceExportToServiceImport(obj runtime.Object, _ int, op
223218
if !found {
224219
logger.V(log.DEBUG).Infof("Service to be exported (%s/%s) doesn't exist", svcExport.Namespace, svcExport.Name)
225220
a.serviceExportClient.UpdateStatusConditions(ctx, svcExport.Name, svcExport.Namespace,
226-
newServiceExportCondition(mcsv1a1.ServiceExportValid, metav1.ConditionFalse, serviceUnavailable,
227-
"Service to be exported doesn't exist"))
221+
mcsv1a1.NewServiceExportCondition(mcsv1a1.ServiceExportConditionValid, metav1.ConditionFalse,
222+
mcsv1a1.ServiceExportReasonNoService, "Service to be exported doesn't exist"))
228223

229224
return nil, false
230225
}
@@ -235,8 +230,8 @@ func (a *Controller) serviceExportToServiceImport(obj runtime.Object, _ int, op
235230

236231
if !ok {
237232
a.serviceExportClient.UpdateStatusConditions(ctx, svcExport.Name, svcExport.Namespace,
238-
newServiceExportCondition(mcsv1a1.ServiceExportValid, metav1.ConditionFalse, invalidServiceType,
239-
fmt.Sprintf("Service of type %v not supported", svc.Spec.Type)))
233+
mcsv1a1.NewServiceExportCondition(mcsv1a1.ServiceExportConditionValid, metav1.ConditionFalse,
234+
mcsv1a1.ServiceExportReasonInvalidServiceType, fmt.Sprintf("Service of type %v not supported", svc.Spec.Type)))
240235
logger.Errorf(nil, "Service type %q not supported for Service (%s/%s)", svc.Spec.Type, svcExport.Namespace, svcExport.Name)
241236

242237
err = a.localServiceImportFederator.Delete(ctx, a.newServiceImport(svcExport.Name, svcExport.Namespace))
@@ -286,8 +281,8 @@ func (a *Controller) serviceExportToServiceImport(obj runtime.Object, _ int, op
286281
svcExport.Namespace, svcExport.Name)
287282
// Globalnet enabled but service doesn't have globalIp yet - update the status.
288283
a.serviceExportClient.UpdateStatusConditions(ctx, svcExport.Name, svcExport.Namespace,
289-
newServiceExportCondition(mcsv1a1.ServiceExportValid, metav1.ConditionFalse, ingressIP.unallocatedReason,
290-
ingressIP.unallocatedMsg))
284+
mcsv1a1.NewServiceExportCondition(mcsv1a1.ServiceExportConditionValid, metav1.ConditionFalse,
285+
ingressIP.unallocatedReason, ingressIP.unallocatedMsg))
291286

292287
return nil, false
293288
}
@@ -299,12 +294,12 @@ func (a *Controller) serviceExportToServiceImport(obj runtime.Object, _ int, op
299294
}
300295

301296
a.serviceExportClient.UpdateStatusConditions(ctx, svcExport.Name, svcExport.Namespace,
302-
newServiceExportCondition(mcsv1a1.ServiceExportValid, metav1.ConditionTrue, ExportValidReason, ""))
297+
mcsv1a1.NewServiceExportCondition(mcsv1a1.ServiceExportConditionValid, metav1.ConditionTrue, mcsv1a1.ServiceExportReasonValid, ""))
303298

304-
if a.serviceImportController.determineUseClusterSetIP(serviceImport) &&
305-
slices.Contains(svc.Spec.IPFamilies, corev1.IPv6Protocol) {
299+
if a.serviceImportController.determineUseClusterSetIP(serviceImport) && slices.Contains(svc.Spec.IPFamilies, corev1.IPv6Protocol) {
306300
a.serviceExportClient.UpdateStatusConditions(ctx, svcExport.Name, svcExport.Namespace,
307-
newServiceExportCondition(constants.ServiceExportReady, metav1.ConditionFalse, UnsupportedIPFamilyReason,
301+
mcsv1a1.NewServiceExportCondition(mcsv1a1.ServiceExportConditionReady, metav1.ConditionFalse,
302+
ServiceExportReasonUnsupportedIPFamily,
308303
fmt.Sprintf("Service has IP families %v and clusterset IP is enabled but only IPv4 is supported",
309304
svc.Spec.IPFamilies)))
310305

@@ -335,8 +330,8 @@ func (a *Controller) shouldProcessServiceExportUpdate(oldObj, newObj *unstructur
335330
return true
336331
}
337332

338-
oldValidCond := meta.FindStatusCondition(a.toServiceExport(oldObj).Status.Conditions, mcsv1a1.ServiceExportValid)
339-
newValidCond := meta.FindStatusCondition(a.toServiceExport(newObj).Status.Conditions, mcsv1a1.ServiceExportValid)
333+
oldValidCond := meta.FindStatusCondition(a.toServiceExport(oldObj).Status.Conditions, string(mcsv1a1.ServiceExportConditionValid))
334+
newValidCond := meta.FindStatusCondition(a.toServiceExport(newObj).Status.Conditions, string(mcsv1a1.ServiceExportConditionValid))
340335

341336
if newValidCond != nil && !reflect.DeepEqual(oldValidCond, newValidCond) && newValidCond.Status == metav1.ConditionFalse {
342337
return true
@@ -371,8 +366,8 @@ func (a *Controller) serviceToRemoteServiceImport(obj runtime.Object, _ int, op
371366

372367
// Update the status and requeue
373368
a.serviceExportClient.UpdateStatusConditions(context.Background(), svc.Name, svc.Namespace,
374-
newServiceExportCondition(mcsv1a1.ServiceExportValid, metav1.ConditionFalse, serviceUnavailable,
375-
"Service to be exported doesn't exist"))
369+
mcsv1a1.NewServiceExportCondition(mcsv1a1.ServiceExportConditionValid, metav1.ConditionFalse,
370+
mcsv1a1.ServiceExportReasonNoService, "Service to be exported doesn't exist"))
376371

377372
return serviceImport, false
378373
}
@@ -422,7 +417,7 @@ func (a *Controller) getIngressIP(name, namespace string) *IngressIP {
422417
if ret == nil {
423418
ret = &IngressIP{
424419
namespace: namespace,
425-
unallocatedReason: defaultReasonIPUnavailable,
420+
unallocatedReason: ServiceExportReasonGlobalIPUnavailable,
426421
unallocatedMsg: defaultMsgIPUnavailable,
427422
}
428423
}
@@ -434,16 +429,6 @@ func (a *Controller) toServiceExport(obj runtime.Object) *mcsv1a1.ServiceExport
434429
return a.serviceImportController.converter.toServiceExport(obj)
435430
}
436431

437-
func newServiceExportCondition(condType string, status metav1.ConditionStatus, reason, msg string) metav1.Condition {
438-
return metav1.Condition{
439-
Type: condType,
440-
Status: status,
441-
LastTransitionTime: metav1.Now(),
442-
Reason: reason,
443-
Message: msg,
444-
}
445-
}
446-
447432
func (c converter) toServiceImport(obj runtime.Object) *mcsv1a1.ServiceImport {
448433
to := &mcsv1a1.ServiceImport{}
449434
utilruntime.Must(c.scheme.Convert(obj, to, nil))

0 commit comments

Comments
 (0)