@@ -24,6 +24,8 @@ import { RegisterUserMessage } from "./RegisterUserMessage";
2424import { UpdateManyMessage } from "./UpdateManyMessage" ;
2525import { EnsureNoderedInstanceMessage } from "./EnsureNoderedInstanceMessage" ;
2626import { KubeUtil } from "../KubeUtil" ;
27+ import { Role } from "../Role" ;
28+ import { RestartNoderedInstanceMessage } from "./RestartNoderedInstanceMessage" ;
2729
2830export class Message {
2931 public id : string ;
@@ -129,6 +131,9 @@ export class Message {
129131 case "deletenoderedinstance" :
130132 this . DeleteNoderedInstance ( cli ) ;
131133 break ;
134+ case "restartnoderedinstance" :
135+ this . RestartNoderedInstance ( cli ) ;
136+ break ;
132137 case "startnoderedinstance" :
133138 this . StartNoderedInstance ( cli ) ;
134139 break ;
@@ -600,6 +605,70 @@ export class Message {
600605 }
601606 private async DeleteNoderedInstance ( cli : WebSocketClient ) : Promise < void > {
602607 this . Reply ( ) ;
608+ var msg : EnsureNoderedInstanceMessage ;
609+ var user : User ;
610+ try {
611+ msg = EnsureNoderedInstanceMessage . assign ( this . data ) ;
612+ var role : Role = await Role . FindByNameOrId ( name , null ) ;
613+ if ( role !== null ) {
614+ var jwt : string = TokenUser . rootToken ( ) ;
615+ await Config . db . DeleteOne ( role . _id , "users" , jwt ) ;
616+ }
617+ var name = cli . user . username ;
618+ var namespace = Config . namespace ;
619+ var hostname = Config . nodered_domain_schema . replace ( "$nodered_id$" , name ) ;
620+ var deployment = await KubeUtil . instance ( ) . GetDeployment ( namespace , name ) ;
621+ if ( deployment != null ) {
622+ await KubeUtil . instance ( ) . ExtensionsV1beta1Api . deleteNamespacedDeployment ( name , namespace ) ;
623+ }
624+ var service = await KubeUtil . instance ( ) . GetService ( namespace , name ) ;
625+ if ( service != null ) {
626+ await KubeUtil . instance ( ) . CoreV1Api . deleteNamespacedService ( name , namespace ) ;
627+ }
628+ var ingress = await KubeUtil . instance ( ) . GetIngress ( namespace , "ingress" ) ;
629+ var updated = false ;
630+ for ( var i = ingress . spec . rules . length - 1 ; i >= 0 ; i -- ) {
631+ if ( ingress . spec . rules [ i ] . host == hostname ) {
632+ ingress . spec . rules . splice ( i , 1 ) ;
633+ updated = true ;
634+ }
635+ }
636+ if ( updated ) {
637+ delete ingress . metadata . creationTimestamp ;
638+ await KubeUtil . instance ( ) . ExtensionsV1beta1Api . replaceNamespacedIngress ( "ingress" , namespace , ingress ) ;
639+ }
640+ } catch ( error ) {
641+ msg . error = JSON . stringify ( error , null , 2 ) ;
642+ }
643+ try {
644+ this . data = JSON . stringify ( msg ) ;
645+ } catch ( error ) {
646+ this . data = "" ;
647+ msg . error = JSON . stringify ( error , null , 2 ) ;
648+ }
649+ this . Send ( cli ) ;
650+ }
651+ private async RestartNoderedInstance ( cli : WebSocketClient ) : Promise < void > {
652+ this . Reply ( ) ;
653+ var msg : RestartNoderedInstanceMessage ;
654+ try {
655+ msg = RestartNoderedInstanceMessage . assign ( this . data ) ;
656+ var name = cli . user . username ;
657+ var namespace = Config . namespace ;
658+ // var hostname = Config.nodered_domain_schema.replace("$nodered_id$", name);
659+
660+ var list = await KubeUtil . instance ( ) . CoreV1Api . listNamespacedPod ( namespace ) ;
661+ for ( var i = 0 ; i < list . body . items . length ; i ++ ) {
662+ var item = list . body . items [ i ] ;
663+ // if (item.metadata.labels.app === (name + "nodered") || item.metadata.labels.name === name) {
664+ if ( item . metadata . labels . app === ( name + "nodered" ) ) {
665+ await KubeUtil . instance ( ) . CoreV1Api . deleteNamespacedPod ( item . metadata . name , namespace ) ;
666+ }
667+ }
668+ } catch ( error ) {
669+ this . data = "" ;
670+ msg . error = JSON . stringify ( error , null , 2 ) ;
671+ }
603672 this . Send ( cli ) ;
604673 }
605674 private async StartNoderedInstance ( cli : WebSocketClient ) : Promise < void > {
@@ -611,10 +680,6 @@ export class Message {
611680 this . Send ( cli ) ;
612681 }
613682
614-
615-
616-
617-
618683}
619684
620685export class JSONfn {
0 commit comments