From 23332aa6bac2ba56987757774e6fc760d9ec7bb9 Mon Sep 17 00:00:00 2001 From: Adam Grare Date: Thu, 25 Jul 2024 16:45:12 -0400 Subject: [PATCH] Set MiqWorker system_uid if missing on kubernetes --- .../miq_server/worker_management/kubernetes.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/models/miq_server/worker_management/kubernetes.rb b/app/models/miq_server/worker_management/kubernetes.rb index bb9fb528cac..b81c84e84d2 100644 --- a/app/models/miq_server/worker_management/kubernetes.rb +++ b/app/models/miq_server/worker_management/kubernetes.rb @@ -23,10 +23,23 @@ def sync_from_system def sync_starting_workers starting = MiqWorker.find_all_starting + # Get a list of pods that aren't currently assigned to MiqWorker records + pods_without_workers = current_pods.keys - MiqWorker.server_scope.pluck(:system_uid).compact + # Non-rails workers cannot set their own miq_worker record to started once they # have finished initializing. Check for any starting non-rails workers whose # pod is running and mark the miq_worker as started. starting.reject(&:rails_worker?).each do |worker| + # If the current worker doesn't have a system_uid assigned then find the first + # pod available for our worker type and link them up. + if worker.system_uid.nil? + system_uid = pods_without_workers.detect { |pod_name| pod_name.start_with?(worker.worker_deployment_name) } + if system_uid + pods_without_workers.delete(system_uid) + worker.update!(:system_uid => system_uid) + end + end + worker_pod = current_pods[worker.system_uid] next if worker_pod.nil?