From b22d8205e7a8b1d57c7e7bc99da6ed6e77d626d4 Mon Sep 17 00:00:00 2001 From: Eugenio Marzo Date: Wed, 6 Jan 2021 18:04:12 +0100 Subject: [PATCH] added node discovery --- assets/box.png | Bin 3293 -> 8972 bytes assets/box_bck.png | Bin 0 -> 3293 bytes assets/k8s_node.atlas | 34 +++++++ assets/k8s_node.png | Bin 0 -> 1107 bytes assets/k8s_node1.png | Bin 0 -> 1100 bytes assets/k8s_node2.png | Bin 0 -> 1135 bytes assets/k8s_node3.png | Bin 0 -> 1157 bytes assets/k8s_node4.png | Bin 0 -> 1180 bytes assets/k8s_node5.png | Bin 0 -> 1200 bytes input/game.input_binding | 4 + main/gui.gui | 189 +++++++++++++++++++++++------------ main/k8s_node.go | 83 +++++++++++++++ main/k8s_node.script | 41 ++++++++ main/kubeinvaders.collection | 88 +++++++++++++++- main/kubeinvaders.gui_script | 27 ++++- main/mymodules/help.lua | 4 +- main/mymodules/node.lua | 47 +++++++++ main/mymodules/node_api.lua | 11 -- main/mymodules/pod.lua | 8 +- main/spaceship.script | 39 ++++++-- 20 files changed, 486 insertions(+), 89 deletions(-) create mode 100644 assets/box_bck.png create mode 100644 assets/k8s_node.atlas create mode 100644 assets/k8s_node.png create mode 100644 assets/k8s_node1.png create mode 100644 assets/k8s_node2.png create mode 100644 assets/k8s_node3.png create mode 100644 assets/k8s_node4.png create mode 100644 assets/k8s_node5.png create mode 100644 main/k8s_node.go create mode 100644 main/k8s_node.script create mode 100644 main/mymodules/node.lua delete mode 100644 main/mymodules/node_api.lua diff --git a/assets/box.png b/assets/box.png index 3218b1fd537d9883600af99bf0f0557a30cfd4e0..23922d01436838949e253540417615c5d8c5a661 100644 GIT binary patch literal 8972 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 diff --git a/assets/box_bck.png b/assets/box_bck.png new file mode 100644 index 0000000000000000000000000000000000000000..3218b1fd537d9883600af99bf0f0557a30cfd4e0 GIT binary patch literal 3293 zcmeAS@N?(olHy`uVBq!ia0y~yU~^z#VASDY1B%R^Th9UHv}QUx2Y5O=D-;yvr)B1( zGB9XNtet40Bu1{<5aBID6jX zFN_|S*Gw`$a8S`8YQdY*`Q_!?&%eDt@7bR^2F{m7wHrG%tbp;tmgMd3!f+D|KOUL^ z6yYrJh%9Dc;1&j9Muu5)B!GhKC7!;n>`xh)1=I~(H?@}mg(OQ{BTAg}b8}PkN*J7r zQWHy3QxwWGOEMJPJ$(bh8~MZ;7`V20x;TbZ+ovmcxc!SaH)tZX(7_18=jGF~kc(JFc9WT1bZIWb{Uj@|9)_s?uv_xdf+LLg|d zF=PZY0+buTG=n7*Fj)b?guyTHo$*PL-t*s|lI`MZX8b*R&j{@B12=c^E6l!mX8Y6E zG3U?kw2F-cWfukpi)eni#;s?J%!`eWTSmde?lCffWuI^;fN6(5hQT3l?%78DZJXyF zmif2mZ&lj8b7$U^?XLV*lkEt0=7agaKK(R!fA9VCr`_Sk#{TKgF5fM!d}Hs|0G1v~ zu{d8d0O^v;mX|7)GmtA=93rPq8(7|DV6Jcb{MLI?EQEJ|66U z!a{lw@iU#s^edhdUp(uw&gKYqut^r)r+2N}o(5(!c-b&t8S MboFyt=akR{0NyVtRR910 literal 0 HcmV?d00001 diff --git a/assets/k8s_node.atlas b/assets/k8s_node.atlas new file mode 100644 index 0000000..fe4a01f --- /dev/null +++ b/assets/k8s_node.atlas @@ -0,0 +1,34 @@ +images { + image: "/assets/k8s_node.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF +} +animations { + id: "led" + images { + image: "/assets/k8s_node1.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/k8s_node2.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/k8s_node3.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/k8s_node4.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/k8s_node5.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + playback: PLAYBACK_LOOP_FORWARD + fps: 2 + flip_horizontal: 0 + flip_vertical: 0 +} +margin: 0 +extrude_borders: 2 +inner_padding: 0 diff --git a/assets/k8s_node.png b/assets/k8s_node.png new file mode 100644 index 0000000000000000000000000000000000000000..0739c4a0bc2e5f83baa1240afebdd7ce6e174ea0 GIT binary patch literal 1107 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 B_;~;T literal 0 HcmV?d00001 diff --git a/assets/k8s_node3.png b/assets/k8s_node3.png new file mode 100644 index 0000000000000000000000000000000000000000..c85e4a77af2923f060caed1471b2f88c61af80bc GIT binary patch literal 1157 zcmV;01bX|4P)EX>4Tx04R}tkv&MmP!xqvQ?(*34t5Z6$WX<>f~csYR-p(LLaorMgUL((ph-iL z;^HW{799LptU9+0Yt2!cN#Zf;JBE>hxsX`w}o7as59yn7Ds-3JJ@64R`XF+kI8 zGZ~MG>CCDac!dvL2w@r{GP8_1NlL)8zV4};>MqK&y!-yFkeam^;1h{wnPJ+*8^lwa zw!wLyILr#NN_FVkWr1gg%~W!pI7}?&+gNF1RxmZ69;| z8?18P;;fY_ta(rV!eCZkS>`&eLBz3$B}fpVpn@Vwuo0zQC&faN&SM__0oN~)OCeVg zj2sInLxb%4!T;d*Y^~hHcq1to13F(E=VJ&6>;m~)WKcel^&-=60DegKP`aeSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{ z00M1EL_t(&-tAjWYuqppeV&M38ggB7kO>q5-JJTz`*Ze?Tcy≶D}(ZW;Ho1xGtx z$!mKpO*LTH^^Pn(X+GXa-o`oC;aE8MP6ImB)1{y-op`SF+fd&zeE@ihDHJ0#LtC1; zKMJlSF*5u+kOJzgZm$M-u;$Vgfq@*-vNXGUnN~tKEhgns92HQL9_rq1lJcyv5C<5 zp|BSVuPGBarc{Xbp(?ZIB9l0uny97Qw5+vPD^Qf9ptH5@9e^Lf?c1Gq-*V0)l8HYF z6y;~`&OWL3H-)+ct95qDY?j08?qD_js~t;GVmpPW=tByHN!?sXnrxG??T@h*Hiepc zxVn3z#J4wXA|4v^cx2?Vu8Ugi|TX(snM<8=BIWsyve8 ziPc#^>XvB<6lINro-TD95}h$xtf^Gf+J|Lv?p$j~Hdb8ja3sIXQXvw6 zkj6A;CO4ii$^ZV*a9i_81(E@fC0Q~D&*wzF(|Kg2dPEw>knS^pYYhqUrus+)a>31q zT;wx=UkBPk0R8}YnOcwV87n5%36TH#8hieW0OC4~RQ-N(j9MHSw4}eU$I~@xEhK*d X*I~ncebw)Q00000NkvXXu0mjfHdYfx literal 0 HcmV?d00001 diff --git a/assets/k8s_node4.png b/assets/k8s_node4.png new file mode 100644 index 0000000000000000000000000000000000000000..c547ae3f914bbf7c290950f9450c7b4a11c96e21 GIT binary patch literal 1180 zcmV;N1Y`S&P)EX>4Tx04R}tkv&MmP!xqvQ?(*34t5Z6$WX<>f~csYR-p(LLaorMgUL((ph-iL z;^HW{799LptU9+0Yt2!cN#Zf;JBE>hxsX`w}o7as59yn7Ds-3JJ@64R`XF+kI8 zGZ~MG>CCDac!dvL2w@r{GP8_1NlL)8zV4};>MqK&y!-yFkeam^;1h{wnPJ+*8^lwa zw!wLyILr#NN_FVkWr1gg%~W!pI7}?&+gNF1RxmZ69;| z8?18P;;fY_ta(rV!eCZkS>`&eLBz3$B}fpVpn@Vwuo0zQC&faN&SM__0oN~)OCeVg zj2sInLxb%4!T;d*Y^~hHcq1to13F(E=VJ&6>;m~)WKcel^&-=60DegKP`aeSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{ z00M+bL_t(&-tAjWYa1~TeV#74B;;xm&=N=~)PX|(c>hg&$R%VI5*$)WsheBm9O8mA zp0%`Ityh{#Ah6}pO7o?8Gg?oYrdeUTIrg1eXlR3$*j(E2Tm!uJwa7?=gz!`jzXjS=$)53@fjik;*4d96N?-Jp} z1LNC{J>T&fBET-Gf_Dv7kv)~x3-hTtwRD@7G3L_<5M}GonVI?mzyljTo7?6tF)AUb%mjsY^Ju&Q6I*nfHse)ok{NVbVpFYT!+2c_&IrvU!2 zv2T*_+aO9zI}fdnP@lC_#gP+A&x`QVzR+Ou0x!kZ8 zg=(c#QAXCB2vJ@m2_W=NoIF64Jg}wpp1tqw(@@so^N$bAsK#1Z`nc}5gA#ccNi&ZAB-=Iq}F0rQTFi*iZI7fh897=scweJ z)naUotj2bBCv0LBnGxrSFHwpQ1c1Ys$)3T@^$_yEYRXxOBZZL!7#R{J^MZowQg~>M zBO~P_(mvW~e*-wt5D-s`j}%4@SbRvOeZ~9h8mqN{{{mR{%}3lG8WZyb$bWtHJ%1@M ual%ik&2>^dwVY?u68)lFPnT0`p!No@?8bTep5a literal 0 HcmV?d00001 diff --git a/assets/k8s_node5.png b/assets/k8s_node5.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4da487503f33b28a109e4136d0cc2cd1e09199 GIT binary patch literal 1200 zcmV;h1W)^kP)EX>4Tx04R}tkv&MmP!xqvQ?(*34t5Z6$WX<>f~csYR-p(LLaorMgUL((ph-iL z;^HW{799LptU9+0Yt2!cN#Zf;JBE>hxsX`w}o7as59yn7Ds-3JJ@64R`XF+kI8 zGZ~MG>CCDac!dvL2w@r{GP8_1NlL)8zV4};>MqK&y!-yFkeam^;1h{wnPJ+*8^lwa zw!wLyILr#NN_FVkWr1gg%~W!pI7}?&+gNF1RxmZ69;| z8?18P;;fY_ta(rV!eCZkS>`&eLBz3$B}fpVpn@Vwuo0zQC&faN&SM__0oN~)OCeVg zj2sInLxb%4!T;d*Y^~hHcq1to13F(E=VJ&6>;m~)WKcel^&-=60DegKP`aeSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{ z00NjvL_t(&-tAkxZWJ*P{&rZ=5T%WR=;EUwNXOjl*>~%`wFi&1#rekTo$>s9Gu~~iwM(p%XTPb3hgNur&7}?ZmHz8n zJH!tFS0RRCh!V`D#Oo2eqNq(IAZ;<1#!$8v(>iJ+9edy8BcH=-+Yz){glR`GiBJxa zat>Hd+H^lJ@rr^NW14+y)H!#{g_xP{6o6yn59ZE(lXk>soYOu6-~#@Vcvbm`*CL3D z9m!pY4#0hOok@&M0LJ%)y-;|KQQ$VELU0XLnLQU8g!$A&E#0PNjJY=fL|F?uGt->_ z_{4^f=gxk}IgdytekDMZ&$&DMpxVDJ)Fr%HXQ#}x%&(I>t69CeZ6QjiQ@9B}#6XzX z=0cRR+l+008*A}xp{CAvchM^G?V}1&_RvMa%ybU{d}YIr=FYw=Ewg_SAjXBj# zt3kV`svVTGj~oK{!N#6Q%I||HDeXMAJ3>R&Qk6$?Jh9qIklHdW0isNC&?9wGo&mUE z!%yeVzT%sZdqR8*;F^uS(PUa)3)Z6l%h@xcGXR%t>|86Q_U~Q2@5| zp0f`fOb5YSR-Rm`9&i!4K=sCHcSkahTsP#w{ zB!W_RQFieQN-)P$ffhj}qTkpkx0rfImQy>s7an4nSP&mT;*>%V0>EKRvtt?H2PpaP z7Y)ZXk5oZ25M)f0?AiT&B;V#dGEqGuJx3q!cK`<(65?U?kt)a@n-96rWBhqtV|l0G zp8#%#)+2t09TV#W$e+H3?tdc)alj+h>N+__EgyJjiGNX#r)$(2iGBkB^2BN}eF16! O0000 0 then + gui.set_text(gui.get_node("node_name"), '') + node_name_pos = vmath.vector3(-501, -501, 0) + print("Reset node_name text node") + k8s_nodes_show = false + end + elseif message_id == hash("pod_log") then --gui.set_text(gui.get_node("pod_log"), message.infomessage) if message.infomessage and message.infomessage ~= '' and not kubelinter_read then @@ -43,7 +66,7 @@ function on_message(self, message_id, message, sender) gui.set_text(gui.get_node("mode"), message.mode) elseif message_id == hash("open_kubelinter_box") then - gui.set_position(gui.get_node("kubelinter"), message.position) + --gui.set_position(gui.get_node("kubelinter"), message.position) gui.set_position(gui.get_node("kubelinter_box"), vmath.vector3(893, 539, 0)) elseif message_id == hash("close_kubelinter_box") then @@ -57,7 +80,7 @@ function on_message(self, message_id, message, sender) elseif message_id == hash("quit_help") then gui.set_position(gui.get_node("inputs"), message.position) - + elseif message_id == hash("pod_name") then if message.pod_name == false or message.pod_name == nil then fake_position = message.position diff --git a/main/mymodules/help.lua b/main/mymodules/help.lua index c444fa5..5de8998 100644 --- a/main/mymodules/help.lua +++ b/main/mymodules/help.lua @@ -1,11 +1,11 @@ local M = {} function M.get_help() - msg.post("ui#gui","help",{ position = vmath.vector3(5, 300, 0) }) + msg.post("ui#gui","help",{ position = vmath.vector3(5, 300, 0) }) end function M.quit_help() - msg.post("ui#gui","quit_help",{ position = vmath.vector3(-1000, -1000, 0) }) + msg.post("ui#gui","quit_help",{ position = vmath.vector3(-1000, -1000, 0) }) end return M \ No newline at end of file diff --git a/main/mymodules/node.lua b/main/mymodules/node.lua new file mode 100644 index 0000000..34dce5e --- /dev/null +++ b/main/mymodules/node.lua @@ -0,0 +1,47 @@ +local M = {} + +function M.node_metrics(pod_name) + http.request(endpoint .. "/apis/metrics.k8s.io/v1beta1/nodes", "GET", M.http_node_metrics_result, headers) +end + +function M.http_node_metrics_result(self, _, response) + print(response.response) +end + +function M.get_nodes() + http.request(endpoint .. "/api/v1/nodes", "GET", M.http_get_nodes_result, headers) +end + +function M.http_get_nodes_result(self, _, response) + kubernetes_nodes = {} + print("Get nodes output") + print('/api/v1/nodes response: ' .. response.status) + nodes = json.decode(response.response) + node_items = nodes["items"] + node_items_size = table.getn(node_items) + print("Node table size: " .. node_items_size) + pos_x = 80 + pos_y = 500 + nodes_cnt = 1 + for k, v in pairs(node_items) do + for k1, v2 in pairs(v) do + if v2["name"] then + print("Found k8s node: " .. v2["name"]) + pos = vmath.vector3(pos_x, pos_y, 0) + new_node = factory.create("/k8s_node#k8s_node_factory", pos) + table.insert(kubernetes_nodes,{ name = v2["name"], id = new_node}) + + if ((nodes_cnt % 15 ) == 0) then + pos_y = pos_y + 100 + pos_x = 80 + else + pos_x = pos_x + 80 + end + + nodes_cnt = nodes_cnt + 1 + end + end + end +end + +return M \ No newline at end of file diff --git a/main/mymodules/node_api.lua b/main/mymodules/node_api.lua deleted file mode 100644 index 086dec6..0000000 --- a/main/mymodules/node_api.lua +++ /dev/null @@ -1,11 +0,0 @@ -local M = {} - -function M.node_metrics(pod_name) - http.request(endpoint .. "/apis/metrics.k8s.io/v1beta1/nodes", "GET", M.http_node_metrics_result, headers) -end - -function M.http_node_metrics_result(self, _, response) - print(response.response) -end - -return M \ No newline at end of file diff --git a/main/mymodules/pod.lua b/main/mymodules/pod.lua index 6ce2f16..62034a5 100644 --- a/main/mymodules/pod.lua +++ b/main/mymodules/pod.lua @@ -65,8 +65,8 @@ function M.swap_pod(items) 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) + -- 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 @@ -77,8 +77,8 @@ function M.swap_pod(items) 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) + -- 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") diff --git a/main/spaceship.script b/main/spaceship.script index 9bbbdef..f46d819 100644 --- a/main/spaceship.script +++ b/main/spaceship.script @@ -80,6 +80,13 @@ kubelinter_read = false -- Keetp track of the line showed of the kubelinter analysis content kubelinter_index = 0 +-- by default the k8s nodes are not shown. Set this var to true +k8s_nodes_show = false + +-- global table that contains k8s nodes +kubernetes_nodes = {} + + local COLLISION_RESPONSE = hash("collision_response") local timer = require "main.mymodules.timer" local spaceship = require "main.mymodules.spaceship" @@ -88,6 +95,7 @@ local pod_mod = require "main.mymodules.pod" local pod_api = require "main.mymodules.pod_api" local press_play = require "main.mymodules.press_play" local kubelinter = require "main.mymodules.kubelinter" +local k8s_node = require "main.mymodules.node" function start_chaos() msg.post("ui#gui", "mode",{ mode = "Press \"a\" to use automatic pilot" }) @@ -151,8 +159,9 @@ function start_chaos() pod_api.update_pod() pod_mod.swap_pod(kubernetes_pods) end) - timer.repeat_seconds(1, function() - msg.post("ui#gui","pod_name",{ pod_name = false, position = go.get_position()}) + + timer.repeat_seconds(1, function() + msg.post("ui#gui", "pod_name", { pod_name = false, position = go.get_position()}) if kubelinter_pod then kubelinter.run(pod_name) kubelinter_pod = false @@ -190,6 +199,9 @@ function update(self, dt) end function on_input(self, action_id, action) + + msg.post("ui#gui", "reset_node_name", {}) + p = go.get_position() if action_id == hash("up") then if p.y < 1000 then @@ -222,7 +234,6 @@ function on_input(self, action_id, action) last_pod_log = false elseif action_id == hash("help") then - print "help!" help.get_help() elseif action_id == hash("quit_help") then @@ -237,8 +248,12 @@ function on_input(self, action_id, action) automatic = false msg.post("ui#gui", "mode",{ mode = "Press \"a\" to use automatic pilot"}) + elseif action_id == hash("worker") then + print("Show kubernetes nodes...") + k8s_node.get_nodes() + elseif action_id == hash("namespace") then - print ("[change_namespace] change namespaces requested by user") + print("[change_namespace] change namespaces requested by user") msg.post("ui#gui", "error",{ errormessage = "changing namespace!" }) -- Returns an approximation of the amount in seconds of CPU time used by the program. @@ -246,7 +261,7 @@ function on_input(self, action_id, action) if last_namespace_change ~= false then diff_time = current_time - last_namespace_change - print ("[change_namespace] diff_time ".. diff_time) + print("[change_namespace] diff_time ".. diff_time) else diff_time = 99 end @@ -335,7 +350,18 @@ end function on_message(self, message_id, message, sender) current_time = os.clock() - print('DEBUG' .. message_id) + + if message_id == COLLISION_RESPONSE and not k8s_nodes_show then + for i,value in ipairs(kubernetes_nodes) do + if message["other_id"] == value["id"] then + print("Spaceship collides with " .. value["name"]) + spaceship_pos = go.get_position() + msg.post("ui#gui","node_name", { node_name = value["name"], spaceship_pos = spaceship_pos }) + end + end + return + end + if message_id == COLLISION_RESPONSE and started_chaos then msg.post("ui#gui","pod_log") @@ -358,6 +384,7 @@ function on_message(self, message_id, message, sender) print("pod_name " .. pod_name) last_pod_log_time = os.clock() end + elseif message_id == hash('start_chaos') then start_chaos() end