From 89f99a4ebd321c9b951bfcfd14059193839d1c7e Mon Sep 17 00:00:00 2001 From: Amund Tenstad Date: Tue, 3 Oct 2023 08:31:47 +0200 Subject: [PATCH 1/3] feat: show pod status --- html5/images/sprite_invader_killed.png | Bin 0 -> 426 bytes html5/images/sprite_invader_pending.png | Bin 0 -> 432 bytes html5/images/sprite_invader_ready.png | Bin 0 -> 417 bytes html5/kubeinvaders.js | 45 +++++++++++++++--------- scripts/node.lua | 4 +-- scripts/pod.lua | 21 +++++++++-- 6 files changed, 49 insertions(+), 21 deletions(-) create mode 100644 html5/images/sprite_invader_killed.png create mode 100644 html5/images/sprite_invader_pending.png create mode 100644 html5/images/sprite_invader_ready.png diff --git a/html5/images/sprite_invader_killed.png b/html5/images/sprite_invader_killed.png new file mode 100644 index 0000000000000000000000000000000000000000..f1af99c26e6d2fc17457c79cf8dd6446a20078e5 GIT binary patch literal 426 zcmV;b0agBqP)Y3Y+0 zTG5Haak!zt?RveHUoY#rYqz*+N+4auw{(-MW(X72U22nBuNYTN$>A2z641y@x5zze zj^un{-i`1GK$n{>V?ub#T)oFSU2*2B9-k_~@|+W-Gna+%r={W&kLFR9m^8y7Of50T z#bF?5TAFO%<^#QPTT*Ae)v7dCug$v-j})S3$yJl)3gJS{IP98X+Ja;sICE7Fk0b|A zg~LP2nGWGNe0URj3#O&XRxVYVrR@nW$zhV%+lVY1!4<-3Y4E>MX4v$S{M+P`7keZI z{nApF16w;hijW~OAxu;vG2FX;B>k_6;OgFo`*5BSbdizqAXi3;t9qNF9wd)50$deJ z#T|!LkYy%420V`n374Dk~u&KA)z#okIS_R?eP;i_C0KulzBSXXFeF;DTMd#cpQ$yJ5wMn zy)#1>bmDLvt|)N3o^R#X^Xal`x43FbAYH|O=_Xgr5GJa-)F!oFF|L}D!!@8Kpq`no zk$cqa$@#*(8sQ#*E;nn&gzztO^&abV#hGjI_*4m&=bRv&xh#Y~Eftq|G>@{xq!|uj zYKb{64g*2c(q#KqALy0ak~-_PR;9UGZQgXarw~0$u9`Gg2p4L`Vb=`P79{(?nQP&2 zPjc{7*gT}1=@5>?n>V4iU|O1N07*qoM6N<$f&c)x1;wNQ literal 0 HcmV?d00001 diff --git a/html5/images/sprite_invader_ready.png b/html5/images/sprite_invader_ready.png new file mode 100644 index 0000000000000000000000000000000000000000..87338e3ea2fb5578c8f74fb38470b1ccea90490d GIT binary patch literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$>^XU`+RPaSX|DemnCb?;!&om)j2| zIy@yh9&*)$IAyNdWA&VE>SN)h+s?nAV`AW6|83@fpZ6&T!`1T+snu-cyKzaJdDq0` zLuxTE4;1gze|mlU&xx^21KW2A}M|BC6!Wq}_TUVu>F2wxtLEyX`M3;oVyDdgYv%zPCkb?isI~boFyt J=akUI001;m!><4U literal 0 HcmV?d00001 diff --git a/html5/kubeinvaders.js b/html5/kubeinvaders.js index 8ba7b84..f14ffa4 100644 --- a/html5/kubeinvaders.js +++ b/html5/kubeinvaders.js @@ -46,8 +46,6 @@ var random_code = (Math.random() + 1).toString(36).substring(7); // nodes list from kubernetes var nodes = []; -var mergeNodesAndPods = []; - // Hash of aliens related to pods or nodes var aliens = []; var aliensWidth = 40; @@ -664,11 +662,19 @@ function getPods() { if (chaos_pods) { var oReq = new XMLHttpRequest(); oReq.onload = function () { - json_parsed = JSON.parse(this.responseText); + new_pods = JSON.parse(this.responseText)["items"]; + + // Pod might just be killed in game, but not terminated in k8s yet. + for (i=0; i alien.name == new_pods[i].name && alien.status == "killed")) { + new_pods[i].status = "killed"; + } + } + if (nodes && nodes.length > 0) { - pods = json_parsed["items"].concat(nodes); + pods = new_pods.concat(nodes); } else { - pods = json_parsed["items"]; + pods = new_pods; } };; oReq.open("GET", k8s_url + "/kube/pods?action=list&namespace=" + namespace); @@ -703,7 +709,7 @@ window.setInterval(function getKubeItems() { getNodes(); getPods(); } -}, 1000) +}, 500) function keyDownHandler(e) { if (!modal_opened && game_mode_switch) { @@ -800,14 +806,14 @@ function keyUpHandler(e) { document.addEventListener("keydown", keyDownHandler, false); document.addEventListener("keyup", keyUpHandler, false); -function drawAlien(alienX, alienY, name) { +function drawAlien(alienX, alienY, name, status) { var image = new Image(); // Image constructor - if (contains(nodes, name)) { + if (nodes.some((node) => node.name == name)) { image.src = './images/k8s_node.png'; ctx.drawImage(image, alienX, alienY, 30, 40); } else { - image.src = './images/sprite_invader.png'; + image.src = `./images/sprite_invader_${status}.png`; ctx.font = '8px pixel'; ctx.drawImage(image, alienX, alienY, 40, 40); if (showPodName) { @@ -831,14 +837,19 @@ function checkRocketAlienCollision() { if(contains(rangeX, rocketX)) { collisionDetected = true; - aliens[i]["active"] = false; - if (contains(nodes, aliens[i]["name"])) { + aliens[i]["status"] = "killed"; + // Aliens might be updated before new pods are fetched + for (j=0; j node.name == aliens[i]["name"])) { + aliens[i]["active"] = false; startChaosNode(aliens[i]["name"]); - aliens[i]["name"] = "killed_pod"; } else { deletePods(aliens[i]["name"]); - aliens[i]["name"] = "killed_pod"; } return true; } @@ -974,7 +985,7 @@ window.setInterval(function draw() { for (i=0; i Date: Tue, 3 Oct 2023 08:37:19 +0200 Subject: [PATCH 2/3] fix: newline --- scripts/node.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/node.lua b/scripts/node.lua index 6c2c7ab..8f636b7 100644 --- a/scripts/node.lua +++ b/scripts/node.lua @@ -93,4 +93,4 @@ for k,v in ipairs(resp) do end end end -ngx.say(json.encode(nodes)) \ No newline at end of file +ngx.say(json.encode(nodes)) From bf6fe0682fd616b0e23e2ee12f3b528ab2dfa864 Mon Sep 17 00:00:00 2001 From: Amund Tenstad Date: Tue, 3 Oct 2023 08:37:43 +0200 Subject: [PATCH 3/3] fix: newline --- scripts/pod.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/pod.lua b/scripts/pod.lua index befecfd..db9a6ae 100644 --- a/scripts/pod.lua +++ b/scripts/pod.lua @@ -181,4 +181,4 @@ if action == "list" then elseif action == "delete" then ngx.say(table.concat(resp)) -end \ No newline at end of file +end