diff --git a/ui/src/views/infra/zone/AdvancedGuestTrafficForm.vue b/ui/src/views/infra/zone/AdvancedGuestTrafficForm.vue index 4c0d2c137e60..caf690efcc93 100644 --- a/ui/src/views/infra/zone/AdvancedGuestTrafficForm.vue +++ b/ui/src/views/infra/zone/AdvancedGuestTrafficForm.vue @@ -39,6 +39,7 @@ { const values = toRaw(this.form) - if (!values.vlanRangeStart || (values.vlanRangeEnd && !this.checkFromTo(values.vlanRangeStart, values.vlanRangeEnd))) { + if (!this.checkFromTo(values.vlanRangeStart, values.vlanRangeEnd)) { this.validStatus = 'error' this.validMessage = this.$t('message.error.vlan.range') return @@ -185,19 +207,30 @@ export default { toVal = value fromVal = this.form[rule.compare] } - if (fromVal && toVal && !this.checkFromTo(fromVal, toVal)) { + if (!this.checkFromTo(fromVal, toVal)) { this.validStatus = 'error' this.validMessage = this.$t('message.error.vlan.range') } return Promise.resolve() }, checkFromTo (fromVal, toVal) { - if (!fromVal) fromVal = 0 - if (!toVal) toVal = 0 - if (fromVal > toVal) { - return false + const vlanRange = this.rangeLimits[this.isolationMethod] ? this.rangeLimits[this.isolationMethod] : this.rangeLimits.VLAN + switch (true) { + case ((fromVal === null) || (toVal === null)): + case fromVal === toVal: + case fromVal > toVal: + case toVal > vlanRange.max: + case fromVal < vlanRange.min: + return false + default: + this.validStatus = 'success' + this.validMessage = '' + return true } - return true + }, + getIsolationMethod () { + const phyNetworks = this.getPrefilled('physicalNetworks') + this.isolationMethod = phyNetworks[phyNetworks.length - 1].isolationMethod } } }