mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-05-03 17:23:00 +00:00
Update server-discovery.component.ts
This commit is contained in:
parent
383c628f2f
commit
73ef1f0f80
@ -35,29 +35,57 @@ export class ServerDiscoveryComponent implements OnInit {
|
|||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
if (this.serverService.isServiceInitialized) this.discoverFirstAvailableServer();
|
if (this.serverService.isServiceInitialized) this.discoverFirstServer();
|
||||||
|
|
||||||
this.serverService.serviceInitialized.subscribe(async (value: boolean) => {
|
this.serverService.serviceInitialized.subscribe(async (value: boolean) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
this.discoverFirstAvailableServer();
|
this.discoverFirstServer();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async discoverFirstServer() {
|
||||||
|
let discovered = await this.discoverServers();
|
||||||
|
let local = await this.serverService.findAll();
|
||||||
|
|
||||||
|
local.forEach(added => {
|
||||||
|
discovered = discovered.filter(server => {
|
||||||
|
return !(server.host == added.host && server.port == added.port);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (discovered.length > 0) {
|
||||||
|
this.discoveredServer = discovered.shift();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
async discoverServers() {
|
||||||
|
let discoveredServers: Server[] = [];
|
||||||
|
this.defaultServers.forEach(async (testServer) => {
|
||||||
|
const server = new Server();
|
||||||
|
server.host = testServer.host;
|
||||||
|
server.port = testServer.port;
|
||||||
|
let version = await this.versionService.get(server).toPromise().catch(error => null);
|
||||||
|
if (version) discoveredServers.push(server);
|
||||||
|
});
|
||||||
|
return discoveredServers;
|
||||||
|
}
|
||||||
|
|
||||||
discoverFirstAvailableServer() {
|
discoverFirstAvailableServer() {
|
||||||
forkJoin(
|
forkJoin(
|
||||||
[from(this.serverService.findAll()).pipe(map((s: Server[]) => s)),
|
[from(this.serverService.findAll()).pipe(map((s: Server[]) => s)),
|
||||||
this.discovery()]
|
this.discovery()]
|
||||||
).subscribe(([local, discovered]) => {
|
).subscribe(
|
||||||
local.forEach(added => {
|
([local, discovered]) => {
|
||||||
discovered = discovered.filter(server => {
|
local.forEach(added => {
|
||||||
return !(server.host == added.host && server.port == added.port);
|
discovered = discovered.filter(server => {
|
||||||
|
return !(server.host == added.host && server.port == added.port);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
if (discovered.length > 0) {
|
||||||
if (discovered.length > 0) {
|
this.discoveredServer = discovered.shift();
|
||||||
this.discoveredServer = discovered.shift();
|
}
|
||||||
}
|
},
|
||||||
});
|
error => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
discovery(): Observable<Server[]> {
|
discovery(): Observable<Server[]> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user