Skip to content

Commit 19099cb

Browse files
committed
more nodered stuff
1 parent dc761d4 commit 19099cb

8 files changed

Lines changed: 151 additions & 14 deletions

File tree

OpenFlow/src/Messages/Message.ts

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import { RegisterUserMessage } from "./RegisterUserMessage";
2424
import { UpdateManyMessage } from "./UpdateManyMessage";
2525
import { EnsureNoderedInstanceMessage } from "./EnsureNoderedInstanceMessage";
2626
import { KubeUtil } from "../KubeUtil";
27+
import { Role } from "../Role";
28+
import { RestartNoderedInstanceMessage } from "./RestartNoderedInstanceMessage";
2729

2830
export 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

620685
export class JSONfn {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { Base } from "../base";
2+
3+
export class RestartNoderedInstanceMessage implements IReplyMessage {
4+
public error: string;
5+
public jwt: any;
6+
7+
static assign(o: any): RestartNoderedInstanceMessage {
8+
if (typeof o === "string" || o instanceof String) {
9+
return Object.assign(new RestartNoderedInstanceMessage(), JSON.parse(o.toString()));
10+
}
11+
return Object.assign(new RestartNoderedInstanceMessage(), o);
12+
}
13+
}

OpenFlow/src/Messages/StartNoderedInstanceMessage.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { Base } from "../base";
22

3-
export class StartNoderedInstanceMessage<T extends Base> implements IReplyMessage {
3+
export class StartNoderedInstanceMessage implements IReplyMessage {
44
public error: string;
55
public jwt: any;
66

7-
static assign<T extends Base>(o: any): StartNoderedInstanceMessage<T> {
7+
static assign(o: any): StartNoderedInstanceMessage {
88
if (typeof o === "string" || o instanceof String) {
99
return Object.assign(new StartNoderedInstanceMessage(), JSON.parse(o.toString()));
1010
}

OpenFlow/src/Messages/StopNoderedMessage.ts renamed to OpenFlow/src/Messages/StopNoderedInstanceMessage.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { Base } from "../base";
22

3-
export class StopNoderedInstanceMessage<T extends Base> implements IReplyMessage {
3+
export class StopNoderedInstanceMessage implements IReplyMessage {
44
public error: string;
55
public jwt: any;
66

7-
static assign<T extends Base>(o: any): StopNoderedInstanceMessage<T> {
7+
static assign(o: any): StopNoderedInstanceMessage {
88
if (typeof o === "string" || o instanceof String) {
99
return Object.assign(new StopNoderedInstanceMessage(), JSON.parse(o.toString()));
1010
}

OpenFlow/src/public/CommonControllers.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,27 @@ module openflow {
188188
var msg: Message = new Message(); msg.command = "ensurenoderedinstance"; msg.data = JSON.stringify(q);
189189
q = await this.WebSocketClient.Send<EnsureNoderedInstanceMessage>(msg);
190190
}
191+
async DeleteNoderedInstance(): Promise<void> {
192+
var q: DeleteNoderedInstanceMessage = new DeleteNoderedInstanceMessage();
193+
var msg: Message = new Message(); msg.command = "deletenoderedinstance"; msg.data = JSON.stringify(q);
194+
q = await this.WebSocketClient.Send<DeleteNoderedInstanceMessage>(msg);
195+
}
196+
async RestartNoderedInstance(): Promise<void> {
197+
var q: RestartNoderedInstanceMessage = new RestartNoderedInstanceMessage();
198+
var msg: Message = new Message(); msg.command = "restartnoderedinstance"; msg.data = JSON.stringify(q);
199+
q = await this.WebSocketClient.Send<RestartNoderedInstanceMessage>(msg);
200+
}
201+
async StartNoderedInstance(): Promise<void> {
202+
var q: StartNoderedInstanceMessage = new StartNoderedInstanceMessage();
203+
var msg: Message = new Message(); msg.command = "startnoderedinstance"; msg.data = JSON.stringify(q);
204+
q = await this.WebSocketClient.Send<StartNoderedInstanceMessage>(msg);
205+
}
206+
async StopNoderedInstance(): Promise<void> {
207+
var q: StopNoderedInstanceMessage = new StopNoderedInstanceMessage();
208+
var msg: Message = new Message(); msg.command = "stopnoderedinstance"; msg.data = JSON.stringify(q);
209+
q = await this.WebSocketClient.Send<StopNoderedInstanceMessage>(msg);
210+
}
211+
191212
}
192213
export class JSONfn {
193214
public static stringify(obj) {

OpenFlow/src/public/Controllers.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,7 @@ module openflow {
929929
});
930930
}
931931

932-
async test() {
932+
async EnsureNoderedInstance() {
933933
try {
934934
await this.api.EnsureNoderedInstance();
935935
this.messages += "EnsureNoderedInstance completed" + "\n";
@@ -938,6 +938,33 @@ module openflow {
938938
console.error(error);
939939
}
940940
}
941+
async DeleteNoderedInstance() {
942+
try {
943+
await this.api.DeleteNoderedInstance();
944+
this.messages += "DeleteNoderedInstance completed" + "\n";
945+
} catch (error) {
946+
this.messages += error + "\n";
947+
console.error(error);
948+
}
949+
}
950+
async StartNoderedInstance() {
951+
try {
952+
await this.api.StartNoderedInstance();
953+
this.messages += "StartNoderedInstance completed" + "\n";
954+
} catch (error) {
955+
this.messages += error + "\n";
956+
console.error(error);
957+
}
958+
}
959+
async StopNoderedInstance() {
960+
try {
961+
await this.api.StopNoderedInstance();
962+
this.messages += "StopNoderedInstance completed" + "\n";
963+
} catch (error) {
964+
this.messages += error + "\n";
965+
console.error(error);
966+
}
967+
}
941968

942969
async submit() {
943970
await this.SendOne(this.queuename, this.message);

OpenFlow/src/public/Message.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,16 @@ module openflow {
198198
return Object.assign(new DeleteNoderedInstanceMessage(), o);
199199
}
200200
}
201+
export class RestartNoderedInstanceMessage {
202+
public error: string;
203+
public jwt: any;
204+
static assign(o: any): RestartNoderedInstanceMessage {
205+
if (typeof o === "string" || o instanceof String) {
206+
return Object.assign(new RestartNoderedInstanceMessage(), JSON.parse(o.toString()));
207+
}
208+
return Object.assign(new RestartNoderedInstanceMessage(), o);
209+
}
210+
}
201211
export class StartNoderedInstanceMessage {
202212
public error: string;
203213
public jwt: any;
@@ -208,14 +218,14 @@ module openflow {
208218
return Object.assign(new StartNoderedInstanceMessage(), o);
209219
}
210220
}
211-
export class StopNoderedMessage {
221+
export class StopNoderedInstanceMessage {
212222
public error: string;
213223
public jwt: any;
214-
static assign(o: any): StopNoderedMessage {
224+
static assign(o: any): StopNoderedInstanceMessage {
215225
if (typeof o === "string" || o instanceof String) {
216-
return Object.assign(new StopNoderedMessage(), JSON.parse(o.toString()));
226+
return Object.assign(new StopNoderedInstanceMessage(), JSON.parse(o.toString()));
217227
}
218-
return Object.assign(new StopNoderedMessage(), o);
228+
return Object.assign(new StopNoderedInstanceMessage(), o);
219229
}
220230
}
221231

OpenFlow/src/public/Socket.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ <h1 translate lib="web">sockets</h1>
3131
<section>
3232
<div class="form-group">
3333
<div class="col-sm-offset-2 col-sm-10">
34-
<button type="button" class="btn btn-secondary" ng-click="ctrl.test()">test</button>
34+
<button type="button" class="btn btn-secondary" ng-click="ctrl.EnsureNoderedInstance()">Ensure</button>
35+
<button type="button" class="btn btn-secondary" ng-click="ctrl.DeleteNoderedInstance()">Delete</button>
3536
</div>
3637
</div>
3738
</section>

0 commit comments

Comments
 (0)