Skip to content

Commit 8abe226

Browse files
committed
bum
1 parent 255393c commit 8abe226

12 files changed

Lines changed: 98 additions & 7 deletions

OpenFlow/src/Messages/DeleteNoderedInstanceMessage.ts

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

3-
export class DeleteNoderedInstanceMessage<T extends Base> implements IReplyMessage {
3+
export class DeleteNoderedInstanceMessage implements IReplyMessage {
44
public error: string;
55
public jwt: any;
6+
public name: string;
67

7-
static assign<T extends Base>(o: any): DeleteNoderedInstanceMessage<T> {
8+
static assign(o: any): DeleteNoderedInstanceMessage {
89
if (typeof o === "string" || o instanceof String) {
910
return Object.assign(new DeleteNoderedInstanceMessage(), JSON.parse(o.toString()));
1011
}

OpenFlow/src/Messages/EnsureNoderedInstanceMessage.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Base } from "../base";
33
export class EnsureNoderedInstanceMessage implements IReplyMessage {
44
public error: string;
55
public jwt: any;
6+
public name: string;
67

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

OpenFlow/src/Messages/Message.ts

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import { EnsureNoderedInstanceMessage } from "./EnsureNoderedInstanceMessage";
2626
import { KubeUtil } from "../KubeUtil";
2727
import { Role } from "../Role";
2828
import { RestartNoderedInstanceMessage } from "./RestartNoderedInstanceMessage";
29+
import { DeleteNoderedInstanceMessage } from "./DeleteNoderedInstanceMessage";
30+
import { GetNoderedInstanceMessage } from "./GetNoderedInstanceMessage";
2931

3032
export class Message {
3133
public id: string;
@@ -134,6 +136,9 @@ export class Message {
134136
case "restartnoderedinstance":
135137
this.RestartNoderedInstance(cli);
136138
break;
139+
case "getnoderedinstance":
140+
this.GetNoderedInstance(cli);
141+
break;
137142
case "startnoderedinstance":
138143
this.StartNoderedInstance(cli);
139144
break;
@@ -503,6 +508,11 @@ export class Message {
503508
try {
504509
msg = EnsureNoderedInstanceMessage.assign(this.data);
505510
var name = cli.user.username;
511+
if (msg.name !== null && msg.name !== undefined && msg.name !== "" && msg.name != cli.user.username) {
512+
var exists = User.FindByUsername(msg.name, cli.jwt);
513+
if (exists == null) { throw new Error("Unknown name " + msg.name) }
514+
name = msg.name;
515+
}
506516
var namespace = Config.namespace;
507517
var hostname = Config.nodered_domain_schema.replace("$nodered_id$", name);
508518

@@ -616,11 +626,16 @@ export class Message {
616626
}
617627
private async DeleteNoderedInstance(cli: WebSocketClient): Promise<void> {
618628
this.Reply();
619-
var msg: EnsureNoderedInstanceMessage;
629+
var msg: DeleteNoderedInstanceMessage;
620630
var user: User;
621631
try {
622-
msg = EnsureNoderedInstanceMessage.assign(this.data);
632+
msg = DeleteNoderedInstanceMessage.assign(this.data);
623633
var name = cli.user.username;
634+
if (msg.name !== null && msg.name !== undefined && msg.name !== "" && msg.name != cli.user.username) {
635+
var exists = User.FindByUsername(msg.name, cli.jwt);
636+
if (exists == null) { throw new Error("Unknown name " + msg.name) }
637+
name = msg.name;
638+
}
624639
var namespace = Config.namespace;
625640
var hostname = Config.nodered_domain_schema.replace("$nodered_id$", name);
626641

@@ -678,6 +693,11 @@ export class Message {
678693
try {
679694
msg = RestartNoderedInstanceMessage.assign(this.data);
680695
var name = cli.user.username;
696+
if (msg.name !== null && msg.name !== undefined && msg.name !== "" && msg.name != cli.user.username) {
697+
var exists = User.FindByUsername(msg.name, cli.jwt);
698+
if (exists == null) { throw new Error("Unknown name " + msg.name) }
699+
name = msg.name;
700+
}
681701
var namespace = Config.namespace;
682702
// var hostname = Config.nodered_domain_schema.replace("$nodered_id$", name);
683703

@@ -695,6 +715,30 @@ export class Message {
695715
}
696716
this.Send(cli);
697717
}
718+
private async GetNoderedInstance(cli: WebSocketClient): Promise<void> {
719+
this.Reply();
720+
var msg: GetNoderedInstanceMessage;
721+
try {
722+
msg = GetNoderedInstanceMessage.assign(this.data);
723+
var name = cli.user.username;
724+
if (msg.name !== null && msg.name !== undefined && msg.name !== "" && msg.name != cli.user.username) {
725+
var exists = User.FindByUsername(msg.name, cli.jwt);
726+
if (exists == null) { throw new Error("Unknown name " + msg.name) }
727+
name = msg.name;
728+
}
729+
var namespace = Config.namespace;
730+
// var hostname = Config.nodered_domain_schema.replace("$nodered_id$", name);
731+
732+
var list = await KubeUtil.instance().CoreV1Api.listNamespacedPod(namespace);
733+
if (list.body.items.length > 0) {
734+
msg.result = list.body.items[0];
735+
}
736+
} catch (error) {
737+
this.data = "";
738+
msg.error = JSON.stringify(error, null, 2);
739+
}
740+
this.Send(cli);
741+
}
698742
private async StartNoderedInstance(cli: WebSocketClient): Promise<void> {
699743
this.Reply();
700744
this.Send(cli);

OpenFlow/src/Messages/RestartNoderedInstanceMessage.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Base } from "../base";
33
export class RestartNoderedInstanceMessage implements IReplyMessage {
44
public error: string;
55
public jwt: any;
6+
public name: string;
67

78
static assign(o: any): RestartNoderedInstanceMessage {
89
if (typeof o === "string" || o instanceof String) {

OpenFlow/src/Messages/StartNoderedInstanceMessage.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Base } from "../base";
33
export class StartNoderedInstanceMessage implements IReplyMessage {
44
public error: string;
55
public jwt: any;
6+
public name: string;
67

78
static assign(o: any): StartNoderedInstanceMessage {
89
if (typeof o === "string" || o instanceof String) {

OpenFlow/src/Messages/StopNoderedInstanceMessage.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Base } from "../base";
33
export class StopNoderedInstanceMessage implements IReplyMessage {
44
public error: string;
55
public jwt: any;
6+
public name: string;
67

78
static assign(o: any): StopNoderedInstanceMessage {
89
if (typeof o === "string" || o instanceof String) {

OpenFlow/src/User.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,13 @@ export class User extends Base {
7676
await result.DecorateWithRoles();
7777
return result;
7878
}
79-
public static async FindByUsername(username: string): Promise<User> {
79+
public static async FindByUsername(username: string, jwt: string = null): Promise<User> {
8080
var byuser = { username: new RegExp(["^", username, "$"].join(""), "i") };
8181
//var byid = { federationids: { $elemMatch: new RegExp(["^", username, "$"].join(""), "i") } }
8282
var byid = { federationids: new RegExp(["^", username, "$"].join(""), "i") }
8383
var q = { $or: [byuser, byid] };
84-
var items: User[] = await Config.db.query<User>(q, null, 1, 0, null, "users", TokenUser.rootToken());
84+
if (jwt === null || jwt == undefined || jwt == "") { jwt = TokenUser.rootToken(); }
85+
var items: User[] = await Config.db.query<User>(q, null, 1, 0, null, "users", jwt);
8586
if (items === null || items === undefined || items.length === 0) { return null; }
8687
var result: User = User.assign(items[0]);
8788
await result.DecorateWithRoles();

OpenFlow/src/public/CommonControllers.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,12 @@ module openflow {
185185
}
186186
return msg;
187187
}
188+
async GetNoderedInstance(): Promise<any> {
189+
var q: GetNoderedInstanceMessage = new GetNoderedInstanceMessage();
190+
var msg: Message = new Message(); msg.command = "getnoderedinstance"; msg.data = JSON.stringify(q);
191+
q = await this.WebSocketClient.Send<GetNoderedInstanceMessage>(msg);
192+
return q.result;
193+
}
188194
async EnsureNoderedInstance(): Promise<void> {
189195
var q: EnsureNoderedInstanceMessage = new EnsureNoderedInstanceMessage();
190196
var msg: Message = new Message(); msg.command = "ensurenoderedinstance"; msg.data = JSON.stringify(q);

OpenFlow/src/public/Controllers.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1559,6 +1559,7 @@ module openflow {
15591559
public queuename: string = "webtest";
15601560
public message: string = "Hi mom";
15611561
public noderedurl: string = "";
1562+
public instance: any = null;
15621563
constructor(
15631564
public $scope: ng.IScope,
15641565
public $location: ng.ILocationService,
@@ -1570,6 +1571,8 @@ module openflow {
15701571
WebSocketClient.onSignedin(async (user: TokenUser) => {
15711572
await api.RegisterQueue();
15721573
this.noderedurl = "https://" + WebSocketClient.nodered_domain_schema.replace("$nodered_id$", WebSocketClient.user.username);
1574+
this.instance = await api.GetNoderedInstance();
1575+
console.log(this.instance);
15731576
if (!this.$scope.$$phase) { this.$scope.$apply(); }
15741577
});
15751578
}

0 commit comments

Comments
 (0)