Institutional Information
}">
Institutional Information
@@ -311,7 +327,8 @@
{{ notificationModalTitle }}
diff --git a/src/app/projectmanagement/overview.component.html b/src/app/projectmanagement/overview.component.html
index e36a95dfb3..0ccf4b1c60 100755
--- a/src/app/projectmanagement/overview.component.html
+++ b/src/app/projectmanagement/overview.component.html
@@ -40,7 +40,7 @@
Projects Overview
{{project.ComputeCenter.Name}}
- Login:
+ href="{{project.ComputeCenter.Login}}">
{{project.ComputeCenter.Login}}
- Support: {{project.ComputeCenter.Support}}
@@ -527,7 +527,7 @@ Applications for {{selectedProject?.Name}}
{{application.Name}} |
{{application.DateCreated}} |
-
+ |
|
- Membership for the vo must be approved beforehand |
@@ -550,16 +549,22 @@
Applications for {{selectedProject?.Name}}
Success: Succesfully {{application_action}} the application of
{{application_member_name}}.
-
+
Failed: The application of {{application_member_name}} could not be
{{application_action}} .
+
+ Failed: User didn't verify his email address yet. Please wait until the email is
+ verified.
+
diff --git a/src/app/projectmanagement/overview.component.ts b/src/app/projectmanagement/overview.component.ts
index 614bd42f37..36fd75437c 100644
--- a/src/app/projectmanagement/overview.component.ts
+++ b/src/app/projectmanagement/overview.component.ts
@@ -34,6 +34,7 @@ export class OverviewComponent {
application_member_name = '';
application_action_done = false;
application_action_success: boolean;
+ application_action_error_message: boolean;
projects: Project[] = new Array();
loaded = true;
details_loaded = false;
@@ -168,7 +169,7 @@ export class OverviewComponent {
this.is_admin,
compute_center);
newProject.OpenStackProject = group['openstack_project'];
- newProject.RealName=realname;
+ newProject.RealName = realname;
this.projects.push(newProject);
}
this.isLoaded = true;
@@ -246,7 +247,6 @@ export class OverviewComponent {
loadProjectApplications(project: number) {
this.loaded = false;
-
this.groupservice.getGroupApplications(project).subscribe(applications => {
let newProjectApplications = [];
@@ -256,21 +256,17 @@ export class OverviewComponent {
}
for (let application of applications) {
let dateApplicationCreated = moment(application['createdAt'], "YYYY-MM-DD HH:mm:ss.SSS");
- let membername = application['user']['firstName'] + ' ' + application['user']['lastName'];
- let userid = application['user']['id'];
- this.userservice.isMember(userid).subscribe(isMember => {
+ let membername = application['displayName'];
- let isMemberBool = isMember['isMember'];
- let newMemberApplication = new ProjectMemberApplication(
- application['id'], membername, dateApplicationCreated.date() + "." + (dateApplicationCreated.month() + 1) + "." + dateApplicationCreated.year(), userid, isMemberBool
- )
- newProjectApplications.push(newMemberApplication)
+ let newMemberApplication = new ProjectMemberApplication(
+ application['id'], membername, dateApplicationCreated.date() + "." + (dateApplicationCreated.month() + 1) + "." + dateApplicationCreated.year()
+ );
+ newProjectApplications.push(newMemberApplication);
+
+ this.selectedProject.ProjectMemberApplications = newProjectApplications;
+ this.loaded = true;
- this.selectedProject.ProjectMemberApplications = newProjectApplications;
- this.loaded = true;
- }
- )
}
@@ -289,13 +285,21 @@ export class OverviewComponent {
if (application['state'] == 'APPROVED') {
this.application_action_success = true;
+ }
+ else if (application['message']) {
+ this.application_action_success = false;
+
+ this.application_action_error_message = application['message'];
+
+
}
else {
this.application_action_success = false;
}
+
this.application_action = 'approved';
this.application_member_name = membername;
- this.application_action_done = true
+ this.application_action_done = true;
this.loadProjectApplications(project);
@@ -307,24 +311,33 @@ export class OverviewComponent {
this.application_action_done = false;
this.groupservice.rejectGroupApplication(project, application).subscribe(result => {
- let application = result;
- this.selectedProject.ProjectMemberApplications = [];
+ let application = result;
+ this.selectedProject.ProjectMemberApplications = [];
- if (application['state'] == 'REJECTED') {
- this.application_action_success = true;
+ if (application['state'] == 'REJECTED') {
+ this.application_action_success = true;
- }
- else {
- this.application_action_success = false;
- }
- this.application_action = 'rejected';
- this.application_member_name = membername;
- this.application_action_done = true;
- this.loadProjectApplications(project);
+ }
+ else if (application['message']) {
+ this.application_action_success = false;
- });
+ this.application_action_error_message = application['message'];
+ }
+
+
+ else {
+ this.application_action_success = false;
+ }
+ this.application_action = 'rejected';
+ this.application_member_name = membername;
+ this.application_action_done = true;
+ this.loadProjectApplications(project);
+
+
+ }
+ );
}
isPi(member: ProjectMember): string {
@@ -412,9 +425,9 @@ export class OverviewComponent {
public addMember(groupid: number, memberid: number, firstName: string, lastName: string) {
- let facility_id=null
- if (this.UserModalFacility && this.UserModalFacility[1]){
- facility_id=this.UserModalFacility[1]
+ let facility_id = null
+ if (this.UserModalFacility && this.UserModalFacility[1]) {
+ facility_id = this.UserModalFacility[1]
}
this.groupservice.addMember(groupid, memberid, facility_id).subscribe(
result => {
@@ -443,7 +456,7 @@ export class OverviewComponent {
public addAdmin(groupid: number, memberid: number, userid: number, firstName: string, lastName: string) {
let facility_id = null;
- if (this.UserModalFacility && this.UserModalFacility[1]){
+ if (this.UserModalFacility && this.UserModalFacility[1]) {
facility_id = this.UserModalFacility[1]
}
this.groupservice.addMember(groupid, memberid, facility_id).subscribe(result => {
@@ -488,7 +501,7 @@ export class OverviewComponent {
public promoteAdmin(groupid: number, userid: number, username: string) {
let facility_id = null;
- if (this.UserModalFacility && this.UserModalFacility[1]){
+ if (this.UserModalFacility && this.UserModalFacility[1]) {
facility_id = this.UserModalFacility[1]
}
this.groupservice.addAdmin(groupid, userid, facility_id).toPromise()
@@ -508,7 +521,7 @@ export class OverviewComponent {
public removeAdmin(groupid: number, userid: number, name: string) {
let facility_id = null;
- if (this.UserModalFacility && this.UserModalFacility[1]){
+ if (this.UserModalFacility && this.UserModalFacility[1]) {
facility_id = this.UserModalFacility[1]
}
this.groupservice.removeAdmin(groupid, userid, facility_id).toPromise()
@@ -527,7 +540,7 @@ export class OverviewComponent {
public removeMember(groupid: number, memberid: number, name: string) {
let facility_id = null
- if (this.UserModalFacility && this.UserModalFacility[1]){
+ if (this.UserModalFacility && this.UserModalFacility[1]) {
facility_id = this.UserModalFacility[1]
}
this.groupservice.removeMember(groupid, memberid, facility_id).subscribe(result => {
diff --git a/src/app/projectmanagement/project_member_application.ts b/src/app/projectmanagement/project_member_application.ts
index 680f5b7da7..93db7a7003 100644
--- a/src/app/projectmanagement/project_member_application.ts
+++ b/src/app/projectmanagement/project_member_application.ts
@@ -3,16 +3,13 @@ export class ProjectMemberApplication {
private _Id: number;
private _Name: string;
private _DateCreated: string;
- private _UserId: string;
private _UserIsVoMember:boolean;
- constructor(Id: number, Name: string, DateCreated: string,UserId:string,UserIsVoMember:boolean) {
+ constructor(Id: number, Name: string, DateCreated: string) {
this._Id = Id;
this._Name = Name;
this._DateCreated = DateCreated;
- this._UserId=UserId;
- this._UserIsVoMember=UserIsVoMember
}
@@ -25,13 +22,6 @@ export class ProjectMemberApplication {
this._UserIsVoMember=value;
}
- get UserId(): string {
- return this._UserId
- }
-
- set UserId(value:string){
- this._UserId=value
- }
get Id(): number {
return this._Id;
diff --git a/src/app/virtualmachines/addvm.component.ts b/src/app/virtualmachines/addvm.component.ts
index 7a623ba1a4..de3628b950 100644
--- a/src/app/virtualmachines/addvm.component.ts
+++ b/src/app/virtualmachines/addvm.component.ts
@@ -54,6 +54,7 @@ export class VirtualMachineComponent implements OnInit {
selectedFlavor: Flavor;
userinfo: Userinfo;
vmclient: Vmclient;
+ selectedProjectClient:Vmclient;
selectedProjectDiskspaceMax: number;
selectedProjectDiskspaceUsed: number;
selectedProjectVolumesMax: number;
@@ -63,7 +64,6 @@ export class VirtualMachineComponent implements OnInit {
selectedProject: [string, number];
client_avaiable: boolean;
validPublickey: boolean;
-
volumeName: string = '';
optional_params = false;
@@ -233,8 +233,10 @@ export class VirtualMachineComponent implements OnInit {
getSelectedProjectClient(groupid: number) {
this.groupService.getClient(this.selectedProject[1].toString()).subscribe(res => {
+ this.selectedProjectClient=res;
if (res['status'] == 'Connected') {
this.client_avaiable = true;
+
this.getSelectedProjectDiskspace();
this.getSelectedProjectVms();
this.getSelectedProjectVolumes();
diff --git a/src/app/virtualmachines/virtualmachinemodels/virtualmachine.ts b/src/app/virtualmachines/virtualmachinemodels/virtualmachine.ts
index a48965c9e5..d22267fc7e 100644
--- a/src/app/virtualmachines/virtualmachinemodels/virtualmachine.ts
+++ b/src/app/virtualmachines/virtualmachinemodels/virtualmachine.ts
@@ -1,20 +1,24 @@
import {Image} from './image';
import {Flavor} from './flavor';
+import {Vmclient} from "./vmclient";
export class VirtualMachine {
- flavor: Flavor;
- image: Image;
- project: string;
- status: string;
- keyname: string;
- name: string;
- openstackid: string;
- created_at: string;
- stopped_at: string;
- elixir_id: string;
- username: string;
- floating_ip: string;
- ssh_command: string;
+ flavor: Flavor;
+ image: Image;
+ project: string;
+ status: string;
+ keyname: string;
+ name: string;
+ client: Vmclient;
+ openstackid: string;
+ created_at: string;
+ stopped_at: string;
+ elixir_id: string;
+ username: string;
+ floating_ip: string;
+ ssh_command: string;
+
+
}
diff --git a/src/app/virtualmachines/virtualmachinemodels/vmclient.ts b/src/app/virtualmachines/virtualmachinemodels/vmclient.ts
index 74044bbf39..242b3a03e9 100644
--- a/src/app/virtualmachines/virtualmachinemodels/vmclient.ts
+++ b/src/app/virtualmachines/virtualmachinemodels/vmclient.ts
@@ -1,7 +1,10 @@
-export class Vmclient{
- id:string;
- host: string;
- status: string;
- port: string;
- location: string;
+export class Vmclient {
+ id: string;
+ host: string;
+ status: string;
+ port: string;
+ version: string;
+ features: string[];
+ location: string;
+
}
diff --git a/src/app/virtualmachines/vmOverview.component.html b/src/app/virtualmachines/vmOverview.component.html
index 236bbe0155..dea59a41fa 100755
--- a/src/app/virtualmachines/vmOverview.component.html
+++ b/src/app/virtualmachines/vmOverview.component.html
@@ -125,12 +125,12 @@
-
-
diff --git a/src/app/virtualmachines/vmOverview.component.ts b/src/app/virtualmachines/vmOverview.component.ts
index e8ee18e5d3..5b2fe63c0f 100644
--- a/src/app/virtualmachines/vmOverview.component.ts
+++ b/src/app/virtualmachines/vmOverview.component.ts
@@ -7,6 +7,7 @@ import {VirtualMachine} from "./virtualmachinemodels/virtualmachine";
import {FullLayoutComponent} from "../layouts/full-layout.component";
import {UserService} from "../api-connector/user.service";
import {ImageService} from "../api-connector/image.service";
+import {Vmclient} from "./virtualmachinemodels/vmclient";
@Component({
selector: 'vm-overview',
@@ -349,7 +350,6 @@ export class VmOverviewComponent implements OnInit {
}
}
this.isLoaded=true;
-
this.applyFilter();
this.checkInactiveVms();