2017-11-29 16:07:53 +01:00
|
|
|
import { Injectable } from '@angular/core';
|
|
|
|
import { Project } from '../models/project';
|
2018-06-27 10:29:12 +02:00
|
|
|
import { Node } from '../cartography/models/node';
|
2018-07-06 11:31:44 +02:00
|
|
|
import { Observable } from 'rxjs';
|
2017-11-29 16:07:53 +01:00
|
|
|
|
|
|
|
import 'rxjs/add/operator/map';
|
2019-01-15 11:15:54 +01:00
|
|
|
import { Server } from '../models/server';
|
|
|
|
import { HttpServer } from './http-server.service';
|
|
|
|
import { Template } from '../models/template';
|
2018-11-21 10:42:36 +01:00
|
|
|
import { Label } from '../cartography/models/label';
|
2017-11-29 16:07:53 +01:00
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
export class NodeService {
|
2019-01-15 11:15:54 +01:00
|
|
|
constructor(private httpServer: HttpServer) {}
|
2017-11-29 16:07:53 +01:00
|
|
|
|
2018-03-20 16:02:41 +01:00
|
|
|
start(server: Server, node: Node) {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.post<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}/start`, {});
|
2017-11-29 16:07:53 +01:00
|
|
|
}
|
|
|
|
|
2019-03-11 04:35:27 -07:00
|
|
|
startAll(server: Server, project: Project) {
|
|
|
|
return this.httpServer.post(server, `/projects/${project.project_id}/nodes/start`, {});
|
|
|
|
}
|
|
|
|
|
2018-03-20 16:02:41 +01:00
|
|
|
stop(server: Server, node: Node) {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.post<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}/stop`, {});
|
2017-11-29 16:07:53 +01:00
|
|
|
}
|
|
|
|
|
2019-03-11 04:35:27 -07:00
|
|
|
stopAll(server: Server, project: Project) {
|
|
|
|
return this.httpServer.post(server, `/projects/${project.project_id}/nodes/stop`, {});
|
|
|
|
}
|
|
|
|
|
2019-08-06 04:44:29 -07:00
|
|
|
suspend(server: Server, node: Node) {
|
|
|
|
return this.httpServer.post<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}/suspend`, {});
|
|
|
|
}
|
|
|
|
|
2019-03-11 04:35:27 -07:00
|
|
|
suspendAll(server: Server, project: Project) {
|
|
|
|
return this.httpServer.post(server, `/projects/${project.project_id}/nodes/suspend`, {});
|
|
|
|
}
|
|
|
|
|
2019-08-06 04:44:29 -07:00
|
|
|
reload(server: Server, node: Node) {
|
|
|
|
return this.httpServer.post<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}/reload`, {});
|
|
|
|
}
|
|
|
|
|
2019-03-11 04:35:27 -07:00
|
|
|
reloadAll(server: Server, project: Project) {
|
|
|
|
return this.httpServer.post(server, `/projects/${project.project_id}/nodes/reload`, {});
|
|
|
|
}
|
|
|
|
|
2019-01-15 11:15:54 +01:00
|
|
|
createFromTemplate(server: Server, project: Project, template: Template, x: number, y: number, compute_id: string) {
|
|
|
|
return this.httpServer.post(server, `/projects/${project.project_id}/templates/${template.template_id}`, {
|
|
|
|
x: Math.round(x),
|
|
|
|
y: Math.round(y),
|
|
|
|
compute_id: compute_id
|
|
|
|
});
|
2017-11-30 10:27:41 +01:00
|
|
|
}
|
|
|
|
|
2017-12-01 11:42:40 +01:00
|
|
|
updatePosition(server: Server, node: Node, x: number, y: number): Observable<Node> {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.put<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}`, {
|
|
|
|
x: Math.round(x),
|
|
|
|
y: Math.round(y)
|
|
|
|
});
|
2017-12-01 11:42:40 +01:00
|
|
|
}
|
2018-03-29 12:36:35 +02:00
|
|
|
|
2018-11-21 10:42:36 +01:00
|
|
|
updateLabel(server: Server, node: Node, label: Label): Observable<Node> {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.put<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}`, {
|
|
|
|
label: {
|
|
|
|
rotation: label.rotation,
|
|
|
|
style: label.style,
|
|
|
|
text: label.text,
|
|
|
|
x: Math.round(label.x),
|
|
|
|
y: Math.round(label.y)
|
|
|
|
}
|
|
|
|
});
|
2018-11-21 10:42:36 +01:00
|
|
|
}
|
|
|
|
|
2019-09-04 05:14:29 -07:00
|
|
|
updateSymbol(server: Server, node: Node, changedSymbol: string): Observable<Node> {
|
|
|
|
return this.httpServer.put<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}`, {
|
|
|
|
symbol: changedSymbol
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2018-03-29 12:36:35 +02:00
|
|
|
update(server: Server, node: Node): Observable<Node> {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.put<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}`, {
|
|
|
|
x: Math.round(node.x),
|
|
|
|
y: Math.round(node.y),
|
|
|
|
z: node.z
|
|
|
|
});
|
2018-03-29 12:36:35 +02:00
|
|
|
}
|
|
|
|
|
2019-09-09 06:57:42 -07:00
|
|
|
updateNode(server: Server, node: Node): Observable<Node> {
|
|
|
|
return this.httpServer.put<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}`, {
|
|
|
|
console_type: node.console_type,
|
2019-09-17 06:27:34 -07:00
|
|
|
console_auto_start: node.console_auto_start,
|
2019-09-09 09:33:10 -07:00
|
|
|
name: node.name,
|
|
|
|
properties: node.properties
|
2019-09-09 06:57:42 -07:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2019-09-11 04:58:45 -07:00
|
|
|
updateNodeWithCustomAdapters(server: Server, node: Node): Observable<Node> {
|
|
|
|
return this.httpServer.put<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}`, {
|
|
|
|
console_type: node.console_type,
|
|
|
|
console_auto_start: node.console_auto_start,
|
|
|
|
custom_adapters: node.custom_adapters,
|
|
|
|
name: node.name,
|
|
|
|
properties: node.properties
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2018-03-30 09:13:30 +02:00
|
|
|
delete(server: Server, node: Node) {
|
|
|
|
return this.httpServer.delete<Node>(server, `/projects/${node.project_id}/nodes/${node.node_id}`);
|
|
|
|
}
|
2019-06-17 06:50:26 -07:00
|
|
|
|
|
|
|
duplicate(server: Server, node: Node) {
|
|
|
|
return this.httpServer.post(server, `/projects/${node.project_id}/nodes/${node.node_id}/duplicate`,
|
|
|
|
{
|
|
|
|
"x": node.x + 10,
|
|
|
|
"y": node.y + 10,
|
|
|
|
"z": node.z
|
|
|
|
});
|
|
|
|
}
|
2019-07-30 07:21:55 -07:00
|
|
|
|
2019-09-09 06:57:42 -07:00
|
|
|
getNode(server: Server, node: Node) {
|
|
|
|
return this.httpServer.get(server, `/projects/${node.project_id}/nodes/${node.node_id}`)
|
|
|
|
}
|
|
|
|
|
2019-09-25 04:37:25 -07:00
|
|
|
getDefaultCommand(): string {
|
|
|
|
return `putty.exe -telnet \%h \%p -wt \"\%d\" -gns3 5 -skin 4`;
|
|
|
|
}
|
|
|
|
|
2019-07-30 07:21:55 -07:00
|
|
|
getConfiguration(server: Server, node: Node) {
|
|
|
|
let urlPath: string = `/projects/${node.project_id}/nodes/${node.node_id}`
|
|
|
|
|
|
|
|
if (node.node_type === 'vpcs') {
|
|
|
|
urlPath += '/files/startup.vpc';
|
|
|
|
return this.httpServer.get(server, urlPath, { responseType: 'text' as 'json'});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
saveConfiguration(server: Server, node: Node, configuration: string) {
|
|
|
|
let urlPath: string = `/projects/${node.project_id}/nodes/${node.node_id}`
|
|
|
|
|
|
|
|
if (node.node_type === 'vpcs') {
|
|
|
|
urlPath += '/files/startup.vpc';
|
|
|
|
return this.httpServer.post(server, urlPath, configuration);
|
|
|
|
}
|
|
|
|
}
|
2017-11-29 16:07:53 +01:00
|
|
|
}
|