Files
kubeinvaders/main/mymodules/pod.lua
2020-05-24 00:16:24 +02:00

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