]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
k8s: Fix #0010901 - Problem when restore service clusterIPs
authorFrancisco Manuel Garcia Botella <francisco.garcia@baculasystems.com>
Fri, 10 May 2024 09:39:44 +0000 (11:39 +0200)
committerEric Bollengier <eric@baculasystems.com>
Wed, 4 Dec 2024 08:10:17 +0000 (09:10 +0100)
bacula/src/plugins/fd/kubernetes-backend/baculak8s/plugins/k8sbackend/service.py

index 5dbdd0cd81f387c38b2955845b579b7b04e0d66f..59d61888ce839d4ef89d4b2f0bfa11bcdeadbda1 100644 (file)
@@ -51,8 +51,8 @@ def services_list_namespaced(corev1api, namespace, estimate=False, labels=""):
 def services_restore_namespaced(corev1api, file_info, file_content):
     srv = encoder_load(file_content, file_info.name)
     metadata = prepare_metadata(srv.metadata)
-    # Instantiate the services object
-    services = client.V1Service(
+    # Instantiate the service object
+    service = client.V1Service(
         api_version=srv.api_version,
         kind="Service",
         spec=srv.spec,
@@ -60,15 +60,16 @@ def services_restore_namespaced(corev1api, file_info, file_content):
     )
     # If it is headless service, we need put 'None' in cluster_ip.
     # In other case, we need put None to assign another IP in cluster.
-    if services.spec.cluster_ip != 'None':
+    if service.spec.cluster_ip != 'None' and service.spec.type == 'ClusterIP':
         # clean some data
-        services.spec.cluster_ip = None
+        service.spec.cluster_ip = None
+        service.spec.cluster_i_ps = []
 
     if file_info.objcache is not None:
         # object exist so we replace it
         response = corev1api.replace_namespaced_service(k8sfile2objname(file_info.name),
-                                                        file_info.namespace, services, pretty='true')
+                                                        file_info.namespace, service, pretty='true')
     else:
         # object does not exist, so create one as required
-        response = corev1api.create_namespaced_service(file_info.namespace, services, pretty='true')
+        response = corev1api.create_namespaced_service(file_info.namespace, service, pretty='true')
     return {'response': response}