@@ -27,7 +27,7 @@ import { EnsureNoderedInstanceMessage } from "./EnsureNoderedInstanceMessage";
2727import { KubeUtil } from "../KubeUtil" ;
2828import { Role } from "../Role" ;
2929import { RestartNoderedInstanceMessage } from "./RestartNoderedInstanceMessage" ;
30- import { DeleteNoderedInstanceMessage } from "./DeleteNoderedInstanceMessage" ;
30+ import { DeleteNoderedInstanceMessage , DeleteNoderedPodMessage } from "./DeleteNoderedInstanceMessage" ;
3131import { GetNoderedInstanceMessage } from "./GetNoderedInstanceMessage" ;
3232import { GetNoderedInstanceLogMessage } from "./GetNoderedInstanceLogMessage" ;
3333import { Util } from "../Util" ;
@@ -172,6 +172,9 @@ export class Message {
172172 case "stopnoderedinstance" :
173173 this . StopNoderedInstance ( cli ) ;
174174 break ;
175+ case "deletenoderedpod" :
176+ this . DeleteNoderedPod ( cli ) ;
177+ break ;
175178 case "savefile" :
176179 this . SaveFile ( cli ) ;
177180 break ;
@@ -743,7 +746,8 @@ export class Message {
743746 this . Send ( cli ) ;
744747 }
745748
746- private async GetInstanceName ( cli : WebSocketClient , _id : string , name : string ) : Promise < string > {
749+ private async GetInstanceName ( cli : WebSocketClient , _id : string ) : Promise < string > {
750+ var name : string = "" ;
747751 if ( _id !== null && _id !== undefined && _id !== "" && _id != cli . user . _id ) {
748752 var res = await Config . db . query < User > ( { _id : _id } , null , 1 , 0 , null , "users" , cli . jwt ) ;
749753 if ( res . length == 0 ) {
@@ -773,7 +777,7 @@ export class Message {
773777 try {
774778 cli . _logger . debug ( "[" + cli . user . username + "] EnsureNoderedInstance" ) ;
775779 msg = EnsureNoderedInstanceMessage . assign ( this . data ) ;
776- var name = await this . GetInstanceName ( cli , msg . _id , msg . name ) ;
780+ var name = await this . GetInstanceName ( cli , msg . _id ) ;
777781 var _id = msg . _id ;
778782 if ( _id === null || _id === undefined || _id === "" ) _id = cli . user . _id ;
779783
@@ -934,7 +938,7 @@ export class Message {
934938 try {
935939 cli . _logger . debug ( "[" + cli . user . username + "] DeleteNoderedInstance" ) ;
936940 msg = DeleteNoderedInstanceMessage . assign ( this . data ) ;
937- var name = await this . GetInstanceName ( cli , msg . _id , msg . name ) ;
941+ var name = await this . GetInstanceName ( cli , msg . _id ) ;
938942 var namespace = Config . namespace ;
939943 var hostname = Config . nodered_domain_schema . replace ( "$nodered_id$" , name ) ;
940944
@@ -995,13 +999,46 @@ export class Message {
995999 }
9961000 this . Send ( cli ) ;
9971001 }
1002+ private async DeleteNoderedPod ( cli : WebSocketClient ) : Promise < void > {
1003+ this . Reply ( ) ;
1004+ var msg : DeleteNoderedPodMessage ;
1005+ var user : User ;
1006+ try {
1007+ cli . _logger . debug ( "[" + cli . user . username + "] DeleteNoderedInstance" ) ;
1008+ msg = DeleteNoderedPodMessage . assign ( this . data ) ;
1009+ var namespace = Config . namespace ;
1010+ var list = await KubeUtil . instance ( ) . CoreV1Api . listNamespacedPod ( namespace ) ;
1011+ if ( list . body . items . length > 0 ) {
1012+ for ( var i = 0 ; i < list . body . items . length ; i ++ ) {
1013+ var item = list . body . items [ i ] ;
1014+ if ( item . metadata . name == msg . name ) {
1015+ await KubeUtil . instance ( ) . CoreV1Api . deleteNamespacedPod ( item . metadata . name , namespace ) ;
1016+ }
1017+ }
1018+ } else {
1019+ cli . _logger . warn ( "[" + cli . user . username + "] GetNoderedInstance: found NO Namespaced Pods ???" ) ;
1020+ }
1021+ } catch ( error ) {
1022+ this . data = "" ;
1023+ cli . _logger . error ( error ) ;
1024+ //msg.error = JSON.stringify(error, null, 2);
1025+ if ( msg !== null && msg !== undefined ) msg . error = "Request failed!"
1026+ }
1027+ try {
1028+ this . data = JSON . stringify ( msg ) ;
1029+ } catch ( error ) {
1030+ this . data = "" ;
1031+ cli . _logger . error ( error ) ;
1032+ }
1033+ this . Send ( cli ) ;
1034+ }
9981035 private async RestartNoderedInstance ( cli : WebSocketClient ) : Promise < void > {
9991036 this . Reply ( ) ;
10001037 var msg : RestartNoderedInstanceMessage ;
10011038 try {
10021039 cli . _logger . debug ( "[" + cli . user . username + "] RestartNoderedInstance" ) ;
10031040 msg = RestartNoderedInstanceMessage . assign ( this . data ) ;
1004- var name = await this . GetInstanceName ( cli , msg . _id , msg . name ) ;
1041+ var name = await this . GetInstanceName ( cli , msg . _id ) ;
10051042 var namespace = Config . namespace ;
10061043 // var hostname = Config.nodered_domain_schema.replace("$nodered_id$", name);
10071044
@@ -1033,23 +1070,28 @@ export class Message {
10331070 try {
10341071 cli . _logger . debug ( "[" + cli . user . username + "] GetNoderedInstance" ) ;
10351072 msg = GetNoderedInstanceMessage . assign ( this . data ) ;
1036- var name = await this . GetInstanceName ( cli , msg . _id , msg . name ) ;
1073+ var name = await this . GetInstanceName ( cli , msg . _id ) ;
10371074 var namespace = Config . namespace ;
10381075 // var hostname = Config.nodered_domain_schema.replace("$nodered_id$", name);
10391076
10401077 var list = await KubeUtil . instance ( ) . CoreV1Api . listNamespacedPod ( namespace ) ;
10411078
10421079 var found : any = null ;
10431080 msg . result = null ;
1081+ msg . results = [ ] ;
10441082 if ( list . body . items . length > 0 ) {
10451083 for ( var i = 0 ; i < list . body . items . length ; i ++ ) {
10461084 var item = list . body . items [ i ] ;
1047- if ( item . metadata . labels . app === name ) {
1085+ if ( ! Util . IsNullEmpty ( msg . name ) && item . metadata . name == msg . name && cli . user . HasRoleName ( "admins" ) ) {
1086+ found = item ;
1087+ msg . results . push ( item ) ;
1088+ } else if ( item . metadata . labels . app === name ) {
10481089 found = item ;
10491090 if ( item . status . phase != "Failed" ) {
10501091 msg . result = item ;
10511092 cli . _logger . debug ( "[" + cli . user . username + "] GetNoderedInstance:" + name + " found one" ) ;
10521093 }
1094+ msg . results . push ( item ) ;
10531095 }
10541096 }
10551097 if ( msg . result == null ) msg . result = found ;
@@ -1076,29 +1118,34 @@ export class Message {
10761118 try {
10771119 cli . _logger . debug ( "[" + cli . user . username + "] GetNoderedInstance" ) ;
10781120 msg = GetNoderedInstanceLogMessage . assign ( this . data ) ;
1079- var name = await this . GetInstanceName ( cli , msg . _id , msg . name ) ;
1121+ var name = await this . GetInstanceName ( cli , msg . _id ) ;
10801122 var namespace = Config . namespace ;
10811123
10821124 var list = await KubeUtil . instance ( ) . CoreV1Api . listNamespacedPod ( namespace ) ;
10831125
10841126 if ( list . body . items . length > 0 ) {
10851127 for ( var i = 0 ; i < list . body . items . length ; i ++ ) {
10861128 var item = list . body . items [ i ] ;
1087- if ( item . metadata . labels . app === name ) {
1129+ if ( ! Util . IsNullEmpty ( msg . name ) && item . metadata . name == msg . name && cli . user . HasRoleName ( "admins" ) ) {
1130+ cli . _logger . debug ( "[" + cli . user . username + "] GetNoderedInstance:" + name + " found one as " + item . metadata . name ) ;
1131+ var obj = await await KubeUtil . instance ( ) . CoreV1Api . readNamespacedPodLog ( item . metadata . name , namespace , "" , false ) ;
1132+ msg . result = obj . body ;
1133+ } else if ( item . metadata . labels . app === name ) {
10881134 cli . _logger . debug ( "[" + cli . user . username + "] GetNoderedInstance:" + name + " found one as " + item . metadata . name ) ;
10891135 var obj = await await KubeUtil . instance ( ) . CoreV1Api . readNamespacedPodLog ( item . metadata . name , namespace , "" , false ) ;
10901136 msg . result = obj . body ;
10911137 }
10921138 }
10931139 }
10941140
1095-
1096-
10971141 } catch ( error ) {
10981142 this . data = "" ;
10991143 cli . _logger . error ( error ) ;
11001144 //msg.error = JSON.stringify(error, null, 2);
11011145 if ( msg !== null && msg !== undefined ) msg . error = "Request failed!"
1146+ if ( error . response && error . response . body && ! Util . IsNullEmpty ( error . response . body . message ) ) {
1147+ msg . error = error . response . body . message ;
1148+ }
11021149 }
11031150 try {
11041151 this . data = JSON . stringify ( msg ) ;
0 commit comments