This is an automated email from the ASF dual-hosted git repository. machristie pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git
The following commit(s) were added to refs/heads/develop by this push: new e8d6515 AIRAVATA-3299 AIRAVATA-3300 Apply validation even when no queue options new 4b78b1e Merge branch 'AIRAVATA-3299-bug-unselected-queues-in-grp-is-listed-in-create' into develop e8d6515 is described below commit e8d651557ba5cdaf7efb2407a2c4f33f75f40d22 Author: Marcus Christie <machris...@apache.org> AuthorDate: Thu May 7 18:24:52 2020 -0400 AIRAVATA-3299 AIRAVATA-3300 Apply validation even when no queue options --- .../js/models/ComputationalResourceSchedulingModel.js | 11 +++++++---- .../js/components/experiment/QueueSettingsEditor.vue | 11 ++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/django_airavata/apps/api/static/django_airavata_api/js/models/ComputationalResourceSchedulingModel.js b/django_airavata/apps/api/static/django_airavata_api/js/models/ComputationalResourceSchedulingModel.js index 5871a99..e919f1e 100644 --- a/django_airavata/apps/api/static/django_airavata_api/js/models/ComputationalResourceSchedulingModel.js +++ b/django_airavata/apps/api/static/django_airavata_api/js/models/ComputationalResourceSchedulingModel.js @@ -20,30 +20,33 @@ export default class ComputationalResourceSchedulingModel extends BaseModel { super(FIELDS, data); } - validate(queueInfo, batchQueueResourcePolicy = null) { + validate(queueInfo = null, batchQueueResourcePolicy = null) { const validationResults = {}; if (this.isEmpty(this.resourceHostId)) { validationResults['resourceHostId'] = "Please select a compute resource."; } + if (this.isEmpty(this.queueName)) { + validationResults['queueName'] = "Please select a queue."; + } if (!(this.nodeCount > 0)) { validationResults['nodeCount'] = "Enter a node count greater than 0."; } else if (batchQueueResourcePolicy && this.nodeCount > batchQueueResourcePolicy.maxAllowedNodes) { validationResults['nodeCount'] = `Enter a node count no greater than ${batchQueueResourcePolicy.maxAllowedNodes}.`; - } else if (queueInfo.maxNodes && this.nodeCount > queueInfo.maxNodes) { + } else if (queueInfo && queueInfo.maxNodes && this.nodeCount > queueInfo.maxNodes) { validationResults['nodeCount'] = `Enter a node count no greater than ${queueInfo.maxNodes}.`; } if (!(this.totalCPUCount > 0)) { validationResults['totalCPUCount'] = "Enter a core count greater than 0."; } else if (batchQueueResourcePolicy && this.totalCPUCount > batchQueueResourcePolicy.maxAllowedCores) { validationResults['totalCPUCount'] = `Enter a core count no greater than ${batchQueueResourcePolicy.maxAllowedCores}.`; - } else if (queueInfo.maxProcessors && this.totalCPUCount > queueInfo.maxProcessors) { + } else if (queueInfo && queueInfo.maxProcessors && this.totalCPUCount > queueInfo.maxProcessors) { validationResults['totalCPUCount'] = `Enter a core count no greater than ${queueInfo.maxProcessors}.`; } if (!(this.wallTimeLimit > 0)) { validationResults['wallTimeLimit'] = "Enter a wall time limit greater than 0."; } else if (batchQueueResourcePolicy && this.wallTimeLimit > batchQueueResourcePolicy.maxAllowedWalltime) { validationResults['wallTimeLimit'] = `Enter a wall time limit no greater than ${batchQueueResourcePolicy.maxAllowedWalltime}.`; - } else if (queueInfo.maxRunTime && this.wallTimeLimit > queueInfo.maxRunTime) { + } else if (queueInfo && queueInfo.maxRunTime && this.wallTimeLimit > queueInfo.maxRunTime) { validationResults['wallTimeLimit'] = `Enter a wall time limit no greater than ${queueInfo.maxRunTime}.`; } return validationResults; diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/QueueSettingsEditor.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/QueueSettingsEditor.vue index 0b33609..e50a3f0 100644 --- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/QueueSettingsEditor.vue +++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/QueueSettingsEditor.vue @@ -40,7 +40,7 @@ <b-form-group label="Select a Queue" label-for="queue" - :feedback="getValidationFeedback('queueName')" + :invalid-feedback="getValidationFeedback('queueName')" :state="getValidationState('queueName')" > <b-form-select @@ -59,7 +59,7 @@ <b-form-group label="Node Count" label-for="node-count" - :feedback="getValidationFeedback('nodeCount')" + :invalid-feedback="getValidationFeedback('nodeCount')" :state="getValidationState('nodeCount', true)" > <b-form-input @@ -80,7 +80,7 @@ <b-form-group label="Total Core Count" label-for="core-count" - :feedback="getValidationFeedback('totalCPUCount')" + :invalid-feedback="getValidationFeedback('totalCPUCount')" :state="getValidationState('totalCPUCount', true)" > <b-form-input @@ -101,7 +101,7 @@ <b-form-group label="Wall Time Limit (in minutes)" label-for="walltime-limit" - :feedback="getValidationFeedback('wallTimeLimit')" + :invalid-feedback="getValidationFeedback('wallTimeLimit')" :state="getValidationState('wallTimeLimit', true)" > <b-input-group right="minutes"> @@ -264,7 +264,7 @@ export default { validation() { // Don't run validation if we don't have selectedQueueDefault if (!this.selectedQueueDefault) { - return {}; + return this.data.validate(); } return this.data.validate( this.selectedQueueDefault, @@ -298,6 +298,7 @@ export default { }, setDefaultQueue() { if (this.queueDefaults.length === 0) { + this.data.queueName = null; return; } const defaultQueue = this.queueDefaults[0];