diff --git a/src/app/configuration/environments/edit-environment/edit-environment.component.html b/src/app/configuration/environments/edit-environment/edit-environment.component.html index d552bdc0..853f96ed 100644 --- a/src/app/configuration/environments/edit-environment/edit-environment.component.html +++ b/src/app/configuration/environments/edit-environment/edit-environment.component.html @@ -1,302 +1,430 @@ - Edit Environment + Edit Environment - Cancel - Previous - Next - Finish + Cancel + Previous + Next + Finish - - Basic Information + + Basic Information -
- - - - Environment name is required - Environment name must be longer than 4 characters - - - - - - Optional - DNS suffix is not a valid domain name - - - - - Provider is required - Provider must be longer than 2 characters - - - - - - Websocket endpoint is required - Value must be valid IP or hostname - - - - - - - - - - - - - Raw calculates resource usage in terms of CPU, memory, and storage. Count is number of VMs. - - Capacity mode is required - - - - - - - - Burst is the ability to dynamically allocate VMs upon user request. - - -
-
+
+ + + + Environment name is required + Environment name must be longer than 4 characters + + + + + + Optional + DNS suffix is not a valid domain name + + + + + Provider is required + Provider must be longer than 2 characters + + + + + + Websocket endpoint is required + Value must be valid IP or hostname + +
+
- - Environment Specifics + + Environment Specifics - - - - - - - - - - - - - - - - - - -
KeyValue 
- - - Key is required - - - - - Value is required - - - -
- Parameters require both 'key' and 'value' fields to be set. Remove any - parameters that do not meet this criteria. -
+ + + + + + + + + + + + + + + + + + +
KeyValue 
+ + + Key is required + + + + + Value is required + + + +
+ Parameters require both 'key' and 'value' fields to be set. Remove any + parameters that do not meet this criteria. +
+ + + VM Templates + Here you can define which VirtualMachineTemplates are allowed in this + environment. You can also override values from the VMT config mapping for + this environment. - - VMT Specifics - - Here you can define which VirtualMachineTemplates are allowed in this environment. - You can also override the VMT config mapping. - -
- - - + + Parameters require both 'key' and 'value' fields to be set. Remove any + parameters that do not meet this criteria. + + + + + {{ t["controls"].template.value }} + + + - - Parameters require both 'key' and 'value' fields to be set. Remove any - parameters that do not meet this criteria. - - - - - {{t['controls'].template.value}} - - - - - - - - - - - - - - - - - -
+ + + + Limit + + + + + + + + + + + + + + + + + + +
- - IP Mappings + + IP Mappings - - - - - - - - - - - - - - - - - - -
FromTo 
- - - From is required - - - - - To is required - - - -
- IP mappings require both 'from' and 'to' fields to be set. Remove any - mappings that do not meet this criteria. -
+ + + + + + + + + + + + + + + + + + +
FromTo 
+ + + From is required + + + + + To is required + + + +
+ IP mappings require both 'from' and 'to' fields to be set. Remove any + mappings that do not meet this criteria. +
- - Confirmation + + Confirmation -

Confirm the following details before finalizing

-

Basic Information

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OptionValue
Display Name{{ env.display_name }}
DNS Suffix{{ env.dnssuffix }}
Provider{{ env.provider }}
Websocket Endpoint{{ env.ws_endpoint }}
Capacity Mode{{ env.capacity_mode }}
Burst Capable{{ env.burst_capable }}
+

Confirm the following details before finalizing

+

Basic Information

+ + + + + + + + + + + + + + + + + + + + + + + + + +
OptionValue
Display Name{{ env.display_name }}
DNS Suffix{{ env.dnssuffix }}
Provider{{ env.provider }}
Websocket Endpoint{{ env.ws_endpoint }}
-

Environment Specifics

- - - - - - - - - - - - - -
KeyValue
{{ item.key }}{{ item.value }}
- -

Template Mappings

- - - - - - - - - - - - - -
TemplateParameters
{{ template.key }} - - - - - - - - - - - - - -
KeyValue
{{ item.key }}{{ item.value }}
-
+

Environment Specifics

+ + + + + + + + + + + + + +
KeyValue
{{ item.key }}{{ item.value }}
-

IP Mappings

- - +

Template Mappings

+
+ + + + + + + + + + + + +
TemplateLimitParameters
{{ template.key }}{{ getTeplateCount(template.key) }} + + - - + + - - - - - + + + + + - -
FromToKeyValue
{{ item.key }}{{ item.value }}
{{ item.key }}{{ item.value }}
- - \ No newline at end of file +
+ + + + + +

IP Mappings

+ + + + + + + + + + + + + +
FromTo
{{ item.key }}{{ item.value }}
+
+
diff --git a/src/app/configuration/environments/edit-environment/edit-environment.component.scss b/src/app/configuration/environments/edit-environment/edit-environment.component.scss index 102df7a1..c077426b 100644 --- a/src/app/configuration/environments/edit-environment/edit-environment.component.scss +++ b/src/app/configuration/environments/edit-environment/edit-environment.component.scss @@ -6,4 +6,15 @@ line-height: unset; height: unset; margin: 0 0 0 0; +} + +.btn-no-margin { + margin: 0; + padding: 7px 12px; + line-height: inherit; + height: inherit; +} + +.no-margin-top{ + margin-top: 0; } \ No newline at end of file diff --git a/src/app/configuration/environments/edit-environment/edit-environment.component.ts b/src/app/configuration/environments/edit-environment/edit-environment.component.ts index 71df08ee..ad646c16 100644 --- a/src/app/configuration/environments/edit-environment/edit-environment.component.ts +++ b/src/app/configuration/environments/edit-environment/edit-environment.component.ts @@ -45,8 +45,6 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { dnssuffix: [edit ? this.updateEnv.dnssuffix : ''], provider: [edit ? this.updateEnv.provider : '', [Validators.required, Validators.minLength(2)]], ws_endpoint: [edit ? this.updateEnv.ws_endpoint : '', [Validators.required, Validators.pattern(/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/)]], - capacity_mode: [edit ? this.updateEnv.capacity_mode : '', Validators.required], - burst_capable: [edit ? this.updateEnv.burst_capable : true] }); } @@ -80,17 +78,7 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { public buildTemplateMapping() { this.templateMappings = this._fb.group({ - templates: this._fb.array([ - this._fb.group({ - template: ['', Validators.required], - params: this._fb.array([ - this._fb.group({ - key: ['', Validators.required], - value: ['', Validators.required] - }) - ]) - }) - ]) + templates: this._fb.array([]) }); } @@ -117,6 +105,7 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { for (var i = 0; i < templateKeys.length; i++) { var newGroup = this._fb.group({ template: [templateKeys[i], Validators.required], + count: [this.updateEnv.count_capacity[templateKeys[i]], [Validators.required, Validators.pattern(/-?\d+/)]], params: this._fb.array([]) }); var paramKeys = Object.keys(this.updateEnv.template_mapping[templateKeys[i]]); @@ -160,7 +149,10 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { ngOnChanges() { if (this.updateEnv) { this.fixNullValues(); + this.env = this.updateEnv; this._prepare(); + this.wizard.navService.goTo(this.wizard.pages.last, true); + this.wizard.pages.first.makeCurrent(); } } @@ -224,6 +216,7 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { this._build(); this.wizard.reset(); if (this.updateEnv) { + this.env = this.updateEnv; this._prepare(); } this.wizard.open(); @@ -234,8 +227,6 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { this.env.dnssuffix = this.environmentDetails.get('dnssuffix').value; this.env.provider = this.environmentDetails.get('provider').value; this.env.ws_endpoint = this.environmentDetails.get('ws_endpoint').value; - this.env.capacity_mode = this.environmentDetails.get('capacity_mode').value; - this.env.burst_capable = (this.environmentDetails.get('burst_capable').value as boolean); } public newIpMapping(from: string = '', to: string = '') { @@ -288,12 +279,8 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { public newTemplateMapping() { var newGroup = this._fb.group({ template: [this.templateSelection.get('vmt_select').value, Validators.required], - params: this._fb.array([ - this._fb.group({ - key: ['', Validators.required], - value: ['', Validators.required] - }) - ]) + count: [0, [Validators.required, Validators.pattern(/-?\d+/)]], + params: this._fb.array([]) }); (this.templateMappings.get('templates') as FormArray).push(newGroup); } @@ -302,11 +289,20 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { (this.templateMappings.get('templates') as FormArray).removeAt(index); } + public getTeplateCount(vmt: string){ + if(!this.env.count_capacity){ + return 0; + } + return this.env.count_capacity[vmt] ?? 0 + } + public copyTemplateMapping() { this.env.template_mapping = {}; + this.env.count_capacity = {}; // naïve solution, using nested for loop. gross, but gets the job done. for (var i = 0; i < (this.templateMappings.get('templates') as FormArray).length; i++) { // i = index of template var template = this.templateMappings.get(['templates', i, 'template']).value; + var count = this.templateMappings.get(['templates', i, 'count']).value; var templateMap = {}; for (var j = 0; j < (this.templateMappings.get(['templates', i, 'params']) as FormArray).length; j++) { // j = index of param var key = this.templateMappings.get(['templates', i, 'params', j]).get('key').value; @@ -314,6 +310,7 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { templateMap[key] = value; } this.env.template_mapping[template] = templateMap; + this.env.count_capacity[template] = count; } } @@ -345,6 +342,7 @@ export class EditEnvironmentComponent implements OnInit, OnChanges { this.event.next(true); } ) + this.env = new Environment(); } } } diff --git a/src/app/configuration/environments/environment-detail/environment-detail.component.html b/src/app/configuration/environments/environment-detail/environment-detail.component.html index 95ec7953..13a48ebf 100644 --- a/src/app/configuration/environments/environment-detail/environment-detail.component.html +++ b/src/app/configuration/environments/environment-detail/environment-detail.component.html @@ -14,14 +14,6 @@ Websocket Endpoint {{ currentEnvironment.ws_endpoint }} - - Capacity Mode - {{ currentEnvironment.capacity_mode }} - - - Burst Capable - {{ currentEnvironment.burst_capable }} - Environment Specifics @@ -46,6 +38,7 @@ {{ template.key }} + (Limit: {{ getLimit(template.key) }}) Key Value diff --git a/src/app/configuration/environments/environment-detail/environment-detail.component.ts b/src/app/configuration/environments/environment-detail/environment-detail.component.ts index b3bea519..ab765bc9 100644 --- a/src/app/configuration/environments/environment-detail/environment-detail.component.ts +++ b/src/app/configuration/environments/environment-detail/environment-detail.component.ts @@ -51,4 +51,11 @@ export class EnvironmentDetailComponent implements OnInit { isEmpty(object: Object) { return Object.keys(object).length == 0; } + + getLimit(vmt: string){ + if(!this.currentEnvironment.count_capacity){ + return 0 + } + return this.currentEnvironment.count_capacity[vmt] ?? 0; + } } diff --git a/src/app/configuration/vmtemplates/edit-vmtemplate/edit-vmtemplate.component.html b/src/app/configuration/vmtemplates/edit-vmtemplate/edit-vmtemplate.component.html index 148e8b12..24f01d95 100644 --- a/src/app/configuration/vmtemplates/edit-vmtemplate/edit-vmtemplate.component.html +++ b/src/app/configuration/vmtemplates/edit-vmtemplate/edit-vmtemplate.component.html @@ -23,26 +23,6 @@ formControlName="image" required /> Image is required -
- - - - Number of CPUs - - - - - Memory specified in MB - - - - - Storage specified in GB - -
@@ -106,18 +86,6 @@

Basic Information

Image {{ template.image }} - - CPU - {{ template.resources?.cpu }} - - - Memory - {{ template.resources?.memory }} - - - Storage - {{ template.resources?.storage }} - diff --git a/src/app/configuration/vmtemplates/edit-vmtemplate/edit-vmtemplate.component.ts b/src/app/configuration/vmtemplates/edit-vmtemplate/edit-vmtemplate.component.ts index 2e8523d9..32f2d18a 100644 --- a/src/app/configuration/vmtemplates/edit-vmtemplate/edit-vmtemplate.component.ts +++ b/src/app/configuration/vmtemplates/edit-vmtemplate/edit-vmtemplate.component.ts @@ -55,10 +55,7 @@ export class EditVmtemplateComponent implements OnInit, OnChanges { this.templateDetails = null; this.templateDetails = this._fb.group({ name: [edit ? this.editTemplate.name : '', [Validators.required, Validators.minLength(4)]], - image: [edit ? this.editTemplate.image : '', [Validators.required]], - cpu: [ edit ? this.editTemplate.resources.cpu : 0 ], - memory: [ edit ? this.editTemplate.resources.memory : 0 ], - storage: [ edit ? this.editTemplate.resources.storage : 0 ] + image: [edit ? this.editTemplate.image : '', [Validators.required]] }) } @@ -107,10 +104,6 @@ export class EditVmtemplateComponent implements OnInit, OnChanges { public copyTemplateDetails() { this.template.name = this.templateDetails.get('name').value; this.template.image = this.templateDetails.get('image').value; - this.template.resources = {cpu: 0, memory: 0, storage: 0}; - this.template.resources.cpu = this.templateDetails.get('cpu').value; - this.template.resources.memory = this.templateDetails.get('memory').value; - this.template.resources.storage = this.templateDetails.get('storage').value; } public copyConfigMap() { @@ -168,6 +161,8 @@ export class EditVmtemplateComponent implements OnInit, OnChanges { if (this.editTemplate) { this.fixNullValues(); this._prepare(); + this.wizard.navService.goTo(this.wizard.pages.last, true); + this.wizard.pages.first.makeCurrent(); } else { this.buildTemplateDetails(); this.buildConfigMap(); diff --git a/src/app/configuration/vmtemplates/vmtemplate-detail/vmtemplate-detail.component.html b/src/app/configuration/vmtemplates/vmtemplate-detail/vmtemplate-detail.component.html index 11f9a19a..26282fd8 100644 --- a/src/app/configuration/vmtemplates/vmtemplate-detail/vmtemplate-detail.component.html +++ b/src/app/configuration/vmtemplates/vmtemplate-detail/vmtemplate-detail.component.html @@ -14,18 +14,6 @@ Image {{ currentVmTemplate.image }}
- - CPU - {{ currentVmTemplate.resources.cpu }} - - - Memory - {{ currentVmTemplate.resources.memory }} - - - Storage - {{ currentVmTemplate.resources.storage }} -
Config Map diff --git a/src/app/dashboards/vm-dashboard/vm-dashboard.component.html b/src/app/dashboards/vm-dashboard/vm-dashboard.component.html index d09008f8..ae876390 100644 --- a/src/app/dashboards/vm-dashboard/vm-dashboard.component.html +++ b/src/app/dashboards/vm-dashboard/vm-dashboard.component.html @@ -1,59 +1,109 @@
-
-
- -
+
+
+
-
No active VMs
- -
- - +
+
No active VMs
+ +
+ + + VMSet: {{ set.base_name }}   Available: + {{ set.available }}/{{ set.count }} Dynamic: {{ set.base_name }}   Count: {{ set.count }}   - VMSet: {{ set.base_name }}   Available: {{ set.available }}/{{ set.count }}  - Environment: {{ set.environment }} + Environment: {{ set.environment }} + + +
+
+ + Join Session + Status + IP + VM-Template + User + Allocated + Tainted + VM Id + Hostname - - -
-
- - Join Session - Status - IP - VM-Template - User - Allocated - Tainted - VM Id - Hostname - - - - - {{ vm.status - }} - {{ vm.status - }} - - {{ vm.public_ip }} - {{ vm.vm_template_id }} - {{ vm.user }} - {{ vm.allocated }} - {{ vm.tainted }} - {{ vm.id }} - {{ vm.hostname }} - - -
-
-
- -
- - -
\ No newline at end of file + + + + {{ vm.status }} + {{ vm.status }} + + {{ + vm.public_ip + }} + {{ + vm.vm_template_id + }} + {{ vm.user }} + {{ + vm.allocated + }} + {{ + vm.tainted + }} + {{ vm.id }} + {{ + vm.hostname + }} + + +
+
+ + +
+ +
diff --git a/src/app/dashboards/vm-dashboard/vm-dashboard.component.ts b/src/app/dashboards/vm-dashboard/vm-dashboard.component.ts index bd2fdd99..5f491ed6 100644 --- a/src/app/dashboards/vm-dashboard/vm-dashboard.component.ts +++ b/src/app/dashboards/vm-dashboard/vm-dashboard.component.ts @@ -1,4 +1,5 @@ import { ChangeDetectorRef, Component, Input, OnInit, ViewChild } from '@angular/core'; +import { Router } from '@angular/router'; import { combineLatest } from 'rxjs'; import { Progress } from 'src/app/data/progress'; import { ProgressService } from 'src/app/data/progress.service'; @@ -8,12 +9,11 @@ import { VirtualMachine } from 'src/app/data/virtualmachine'; import { VmService } from 'src/app/data/vm.service'; import { VmSet } from 'src/app/data/vmset'; import { VmSetService } from 'src/app/data/vmset.service'; -import { Router } from '@angular/router'; - interface dashboardVmSet extends VmSet { setVMs?: VirtualMachine[], stepOpen?: boolean + dynamic: boolean } @Component({ @@ -40,11 +40,7 @@ export class VmDashboardComponent implements OnInit { public vms: VirtualMachine[] = []; public vmSets: dashboardVmSet[] = []; - public emptyVMset: dashboardVmSet = { - ...new VmSet(), - base_name: "Dynamic", - stepOpen: false - } + public selectedVM: VirtualMachine = new VirtualMachine(); public openPanels: Set = new Set() @@ -76,15 +72,26 @@ export class VmDashboardComponent implements OnInit { ...set, setVMs: this.vms.filter(vm => vm.vm_set_id === set.id), stepOpen: this.openPanels.has(set.base_name), + dynamic: false, available: this.vms.filter(vm => vm.vm_set_id === set.id && vm.status == "running").length }) ) - if (this.vms.filter(vm => vm.vm_set_id == "").length > 0) { - this.emptyVMset.setVMs = this.vms.filter(vm => vm.vm_set_id == "") - this.emptyVMset.count = this.emptyVMset.setVMs.length - this.emptyVMset.available = this.emptyVMset.setVMs.filter(vm => vm.status == "running").length - this.emptyVMset.environment = this.vms.filter(vm => vm.vm_set_id == "")[0]?.environment_id - this.vmSets.push(this.emptyVMset) + // dynamic machines have no associated vmSet + if (this.vms.filter(vm => vm.vm_set_id == "").length > 0) { + let groupedVms: Map = this.groupByEnvironment(this.vms.filter(vm => vm.vm_set_id == "")); + groupedVms.forEach((element, environment) => { + let vmSet: dashboardVmSet = { + ...new VmSet(), + base_name: environment, + stepOpen: this.openPanels.has(environment), + dynamic: true + } + vmSet.setVMs = element + vmSet.count = element.length + vmSet.available = element.filter(vm => vm.status == "running").length + vmSet.environment = environment + this.vmSets.push(vmSet) + }); } this.cd.detectChanges() //The async Code above updates values after Angulars usual change-detection so we call this Method to prevent Errors }); @@ -110,4 +117,19 @@ export class VmDashboardComponent implements OnInit { }) } + groupByEnvironment(vms: VirtualMachine[]) { + let envMap = new Map(); + vms.forEach(element => { + if(envMap.has(element.environment_id)){ + let envVms = envMap.get(element.environment_id); + envVms.push(element); + envMap.set(element.environment_id, envVms); + }else{ + let envVms: VirtualMachine[] = [element]; + envMap.set(element.environment_id, envVms); + } + }); + return envMap; + } + } diff --git a/src/app/data/environment.service.ts b/src/app/data/environment.service.ts index ac8f252e..5e3c79b7 100644 --- a/src/app/data/environment.service.ts +++ b/src/app/data/environment.service.ts @@ -58,8 +58,7 @@ export class EnvironmentService { .set("environment_specifics", JSON.stringify(env.environment_specifics)) .set("ip_translation_map", JSON.stringify(env.ip_translation_map)) .set("ws_endpoint", env.ws_endpoint) - .set("capacity_mode", env.capacity_mode) - .set("burst_capable", JSON.stringify(env.burst_capable)); + .set("count_capacity", JSON.stringify(env.count_capacity)) return this.http.post(environment.server + "/a/environment/create", params) } @@ -73,8 +72,7 @@ export class EnvironmentService { .set("environment_specifics", JSON.stringify(env.environment_specifics)) .set("ip_translation_map", JSON.stringify(env.ip_translation_map)) .set("ws_endpoint", env.ws_endpoint) - .set("capacity_mode", env.capacity_mode) - .set("burst_capable", JSON.stringify(env.burst_capable)); + .set("count_capacity", JSON.stringify(env.count_capacity)) return this.http.put(environment.server + "/a/environment/" + env.name + "/update", params); } diff --git a/src/app/data/environment.ts b/src/app/data/environment.ts index 3650c577..17972be4 100644 --- a/src/app/data/environment.ts +++ b/src/app/data/environment.ts @@ -5,27 +5,8 @@ export class Environment { provider: string; // e.g. "{ ubuntu1604-docker1: { "image": "ubuntu1604-docker1-base" } }" template_mapping: Record>; - environment_specifics: {}; + environment_specifics: Record; ip_translation_map: {}; ws_endpoint: string; - capacity_mode: string; - burst_capable: boolean; - count_capacity: Map; - capacity: { - cpu: number; - memory: number; - storage: number; - }; - used: { - cpu: number; - memory: number; - storage: number; - }; - available_count: number; - burst_count_capacity: Map; - burst_capacity: { - cpu: number; - memory: number; - storage: number; - } + count_capacity: Record; } \ No newline at end of file diff --git a/src/app/data/environmentavailability.ts b/src/app/data/environmentavailability.ts index 710b1a81..986bd43d 100644 --- a/src/app/data/environmentavailability.ts +++ b/src/app/data/environmentavailability.ts @@ -1,10 +1,4 @@ export class EnvironmentAvailability { environment: string; - capacity_mode: string; available_count: {}; - available_capacity: { - cpu: number; - memory: number; - storage: number; - } } \ No newline at end of file diff --git a/src/app/data/vmtemplate.service.ts b/src/app/data/vmtemplate.service.ts index 08d2a5db..d2dce318 100644 --- a/src/app/data/vmtemplate.service.ts +++ b/src/app/data/vmtemplate.service.ts @@ -30,7 +30,6 @@ export class VmtemplateService { .set('id', template.id) .set('name', template.name) .set('image', template.image) - .set('resources', JSON.stringify(template.resources)) .set('config_map', JSON.stringify(template.config_map)) return this.http.put(environment.server + "/a/vmtemplate/" + template.id + "/update", params) @@ -40,7 +39,6 @@ export class VmtemplateService { let params = new HttpParams() .set('name', template.name) .set('image', template.image) - .set('resources', JSON.stringify(template.resources)) .set('config_map', JSON.stringify(template.config_map)) return this.http.post(environment.server + "/a/vmtemplate/create", params) diff --git a/src/app/data/vmtemplate.ts b/src/app/data/vmtemplate.ts index 9ecdff16..463a3d7f 100644 --- a/src/app/data/vmtemplate.ts +++ b/src/app/data/vmtemplate.ts @@ -2,10 +2,5 @@ export class VMTemplate { id: string; name: string; image: string; - resources: { - cpu: number; - memory: number; - storage: number; - }; config_map: any; } \ No newline at end of file diff --git a/src/app/event/new-scheduled-event/new-scheduled-event.component.html b/src/app/event/new-scheduled-event/new-scheduled-event.component.html index d22d0dda..c4a8b963 100644 --- a/src/app/event/new-scheduled-event/new-scheduled-event.component.html +++ b/src/app/event/new-scheduled-event/new-scheduled-event.component.html @@ -238,41 +238,16 @@  Environment - -  Mode -  Count - -  CPU - - -  Memory - - -  Storage - - + {{ ea.environment }} - {{ ea.capacity_mode }} - {{ item.key }} {{ item.value }} - - n/a - - - {{ ea.available_capacity.cpu }} CPU - - - {{ ea.available_capacity.memory }} MB - - - {{ ea.available_capacity.storage }} GB diff --git a/src/app/event/new-scheduled-event/new-scheduled-event.component.ts b/src/app/event/new-scheduled-event/new-scheduled-event.component.ts index 20e60466..67c20b3e 100644 --- a/src/app/event/new-scheduled-event/new-scheduled-event.component.ts +++ b/src/app/event/new-scheduled-event/new-scheduled-event.component.ts @@ -594,7 +594,7 @@ export class NewScheduledEventComponent implements OnInit { }), filter((e: Environment) => { // first add to keyed environment, regardless of if we use it or not - this.keyedEnvironments.set(e.display_name, e); + this.keyedEnvironments.set(e.name, e); let pass = false; Object.keys(e.template_mapping).forEach((s: string) => { if (templates.has(s)) {