mirror of
https://github.com/lucky-sideburn/kubeinvaders.git
synced 2026-04-06 18:36:52 +00:00
125 lines
4.5 KiB
Lua
125 lines
4.5 KiB
Lua
local M = {}
|
|
local pod_api = require "main.mymodules.pod_api"
|
|
|
|
function M.print_pod_name()
|
|
pos = go.get_position()
|
|
message_pod_name = {}
|
|
pod_name = ""
|
|
for i,value in ipairs(current_pods) do
|
|
position_of_pod = go.get_position(value["id"])
|
|
if (pos.x > position_of_pod.x and pos.x - position_of_pod.x < 25) or (position_of_pod.x > pos.x and position_of_pod.x - pos.x < 25) then
|
|
pod_name = pod_name .. " " .. value["pod_name"]
|
|
last_pod_position = position_of_pod
|
|
end
|
|
end
|
|
if pod_name ~= "" then
|
|
if pod_name:match("[%a%d%p_]%s[%a%d%p_]") ~= nil then
|
|
pod_name = pod_name:gsub(" ", "\n")
|
|
end
|
|
|
|
msg.post("ui#gui","pod_name",{ pod_name = pod_name, position = last_pod_position })
|
|
--msg.post("ui#gui","pod_name",{ pod_name = pod_name })
|
|
|
|
end
|
|
end
|
|
|
|
function M.print_pod_log(pod_id)
|
|
print("[pod_log] getting pod logs...")
|
|
pos = go.get_position()
|
|
for i,value in ipairs(current_pods) do
|
|
if (pod_id == value["id"]) then
|
|
print("[pod_log] getting pod logs for " .. value["pod_name"])
|
|
pod_api.pod_log(value["pod_name"])
|
|
return value["pod_name"]
|
|
end
|
|
end
|
|
end
|
|
|
|
function M.swap_pod(items)
|
|
for i,value in ipairs(current_pods) do
|
|
if value["collision"] == true and value["color"] == "red" then
|
|
current_pods[i]["id"] = factory.create("/pod_not_running#podfactory", value["old_position"])
|
|
current_pods[i]["color"] = "red"
|
|
current_pods[i]["collision"] = false
|
|
pod_api.delete_pod(value["pod_name"])
|
|
return
|
|
end
|
|
end
|
|
|
|
kubeinvaders_pod_not_running = 0 -- Pods not running in Kubeinvaders
|
|
kubeinvaders_pod_running = 0 -- Pods running in Kubeinvaders
|
|
|
|
kubernetes_pod_not_running = 0 -- Pods not running in Kubernetes
|
|
kubernetes_pod_running = 0 -- Pods running in Kubernetes
|
|
|
|
global_kubernetes_pod_size = table.getn(items) -- All pods in Kubernetes
|
|
global_kubeinvaders_pod_size = table.getn(current_pods) -- All pods in Kubeinvaders
|
|
|
|
for i,value in ipairs(items) do
|
|
if value['status']['phase'] ~= "Running" or value['metadata']['deletionTimestamp'] ~= nil then
|
|
print("[swap_pod] phase of " .. value['metadata']['name'] .. " is " ..value['status']['phase'])
|
|
print("[swap_pod] " .. value['metadata']['name'] .. " is not running")
|
|
kubernetes_pod_not_running = kubernetes_pod_not_running + 1
|
|
else
|
|
kubernetes_pod_running = kubernetes_pod_running + 1
|
|
end
|
|
end
|
|
|
|
print ("[swap_pod]: pods not running pods in Kubernetes: " .. kubernetes_pod_not_running)
|
|
print ("[swap_pod]: pods running pods in Kubernetes: " .. kubernetes_pod_running)
|
|
msg.post("ui#gui", "hello_gui",{ pod_running = kubernetes_pod_running })
|
|
|
|
for i,value in ipairs(current_pods) do
|
|
if value["color"] == "red" then
|
|
kubeinvaders_pod_not_running = kubeinvaders_pod_not_running + 1
|
|
elseif value["color"] == "white" then
|
|
kubeinvaders_pod_running = kubeinvaders_pod_running + 1
|
|
end
|
|
end
|
|
|
|
print ("[swap_pod]: pods not running pods in KubeInvaders: " .. kubeinvaders_pod_not_running)
|
|
print ("[swap_pod]: pods running pods in KubeInvaders: " .. kubeinvaders_pod_running)
|
|
|
|
if kubernetes_pod_running < kubeinvaders_pod_running then
|
|
print ("[swap_pod] there are less pod running in kubernetes than kubeinvaders")
|
|
i = global_kubeinvaders_pod_size - 1
|
|
deleted_pods = 0
|
|
while ( i > 0) do
|
|
if current_pods[i] ~= nil and current_pods[i]["color"] == "white" then
|
|
go.delete(current_pods[i]["id"])
|
|
table.remove(current_pods,i)
|
|
deleted_pods = deleted_pods + 1
|
|
print ("[swap_pod] delete kubeinvaders pod at position " .. tostring(i) .. " of kubeinvaders global pods array")
|
|
end
|
|
i = i - 1
|
|
end
|
|
msg.post("ui#gui", "error",{ errormessage = "Synchronizing alien ships with Kubernetes pods.." })
|
|
return
|
|
end
|
|
|
|
if (kubernetes_pod_running > kubeinvaders_pod_running) then
|
|
for i,value in ipairs(current_pods) do
|
|
go.delete(value["id"])
|
|
end
|
|
current_pods = {}
|
|
pod_api.set_pods()
|
|
end
|
|
|
|
if kubeinvaders_pod_not_running > kubernetes_pod_not_running then
|
|
print ("[swap_pod] there are more pod not running in KubeInvaders than Kubernetes")
|
|
diff = kubeinvaders_pod_not_running - kubernetes_pod_not_running
|
|
a = 0
|
|
while ( a < diff ) do
|
|
for i,value in ipairs(current_pods) do
|
|
if value["color"] == "red" then
|
|
go.delete(value["id"])
|
|
table.remove(current_pods,i)
|
|
end
|
|
end
|
|
a = a + 1
|
|
end
|
|
msg.post("ui#gui", "error",{ errormessage = "Synchronizing alien ships with Kubernetes pods.." })
|
|
end
|
|
end
|
|
|
|
return M |