Commit 8b122333 authored by Alicja Reniewicz's avatar Alicja Reniewicz
Browse files

changes for byon nodes

parent ac78c4da
......@@ -63,7 +63,7 @@
<th mat-header-cell *matHeaderCellDef mat-sort-header>SSH connection</th>
<td mat-cell *matCellDef="let row">
<button mat-raised-button class="ssh-button" (click)="onSshConnectionClick(row)" color="primary"
[disabled]="!userHasPermissionToSshConnection()">
[disabled]="!userHasPermissionToSshConnection(row)">
SSH connection
</button>
</td>
......
......@@ -95,34 +95,43 @@ export class VmListComponent implements OnInit {
}
getPrivateIp(vm: NodeCloudiator): string {
return vm.ipAddresses
.find(value => value.ipAddressType.toString() === IpAddressType[IpAddressType.PRIVATE_IP])
.value;
const privateIp = vm.ipAddresses
.find(value => value.ipAddressType.toString() === IpAddressType[IpAddressType.PRIVATE_IP]);
return privateIp ? privateIp.value : 'UNKNOWN';
}
getProviderName(vm: NodeCloudiator): string {
return this.cloudsList
.find(value => value.id === vm.nodeProperties.providerId)
.api.providerName;
const provider = this.cloudsList
.find(value => value.id === vm.nodeProperties.providerId);
return provider ? provider.api.providerName : 'UNKNOWN';
}
getCity(vm: NodeCloudiator): string {
const locationId = vm.originId.split('/')[0];
return this.locationList
.find(value => value.id === locationId)
.geoLocation.city;
const location = this.locationList
.find(value => value.id === locationId);
return location ? location.geoLocation.city : 'UNKNOWN';
}
userHasPermissionToSshConnection(): boolean {
return UserRole.ADMIN === UserRole[this.userService.currentUser.userRole];
userHasPermissionToSshConnection(vm: NodeCloudiator): boolean {
return (UserRole.ADMIN === UserRole[this.userService.currentUser.userRole]) && vm.loginCredential.privateKey !== null;
}
onSshConnectionClick(vm: NodeCloudiator) {
console.log(`SSH connection click for vm: ${vm.name}`);
const formattedPrivateKey = this.formatKey(vm.loginCredential.privateKey);
const webSshUrl = `${AppConfigService.settings.webSshUrl}/?hostname=${vm.publicIp}&username=${vm.loginCredential.username}` +
`&privatekey=${formattedPrivateKey}`;
window.open(webSshUrl);
let webSshUrl;
if (vm.loginCredential.privateKey) {
console.log(`Key-based SSH connection`);
const formattedPrivateKey = this.formatKey(vm.loginCredential.privateKey);
webSshUrl = `${AppConfigService.settings.webSshUrl}/?hostname=${vm.publicIp}&username=${vm.loginCredential.username}` +
`&privatekey=${formattedPrivateKey}`;
window.open(webSshUrl);
} else {
webSshUrl = `${AppConfigService.settings.webSshUrl}/?hostname=${vm.publicIp}&username=${vm.loginCredential.username}` +
`&password=${btoa(vm.loginCredential.password)}`;
console.log(`Password-based SSH connection under address: ${webSshUrl}`);
// todo add window.open(webSshUrl) after webssh fixed
}
}
private formatKey(privateKey: string): string {
......
......@@ -43,9 +43,9 @@ export class NodeListComponent implements OnInit {
}
getProviderName(node: NodeCloudiator): string {
return this.cloudList
.find(value => value.id === node.nodeProperties.providerId)
.api.providerName;
const provider = this.cloudList
.find(value => value.id === node.nodeProperties.providerId);
return provider ? provider.api.providerName : 'UNKNOWN';
}
getPublicIp(node: NodeCloudiator): string {
......@@ -62,9 +62,9 @@ export class NodeListComponent implements OnInit {
if (node.ipAddresses === null) {
return '-';
} else {
return node.ipAddresses
.find(value => value.ipAddressType.toString() === IpAddressType[IpAddressType.PRIVATE_IP])
.value;
const privateIp = node.ipAddresses
.find(value => value.ipAddressType.toString() === IpAddressType[IpAddressType.PRIVATE_IP]);
return privateIp ? privateIp.value : 'UNKNOWN';
}
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment