Allow to set floating range for public network of any node network group
Closes-Bug: #1522760 Change-Id: I7ba67e17d8bd731e46abc6fd3e181eec9f2146f1
This commit is contained in:
parent
b6d379de11
commit
532eb5f2b9
|
@ -925,7 +925,7 @@ define([
|
|||
_.extend(networkErrors, utils.validateCidr(cidr));
|
||||
var cidrError = _.has(networkErrors, 'cidr');
|
||||
if (network.get('meta').notation == 'ip_ranges') {
|
||||
var ipRangesErrors = utils.validateIPRanges(network.get('ip_ranges'), !cidrError && cidr);
|
||||
var ipRangesErrors = utils.validateIPRanges(network.get('ip_ranges'), cidrError ? null : cidr);
|
||||
if (ipRangesErrors.length) {
|
||||
networkErrors.ip_ranges = ipRangesErrors;
|
||||
}
|
||||
|
@ -956,7 +956,7 @@ define([
|
|||
} else if (!baremetalCidrError && !utils.validateIpCorrespondsToCIDR(cidr, baremetalGateway)) {
|
||||
networkingParametersErrors.baremetal_gateway = i18n(ns + 'gateway_is_out_of_baremetal_network');
|
||||
}
|
||||
var baremetalRangeErrors = utils.validateIPRanges([networkParameters.get('baremetal_range')], !baremetalCidrError && cidr);
|
||||
var baremetalRangeErrors = utils.validateIPRanges([networkParameters.get('baremetal_range')], baremetalCidrError ? null : cidr);
|
||||
if (baremetalRangeErrors.length) {
|
||||
var [{start, end}] = baremetalRangeErrors;
|
||||
networkingParametersErrors.baremetal_range = [start, end];
|
||||
|
@ -997,7 +997,7 @@ define([
|
|||
networkingParametersErrors.fixed_networks_vlan_start = i18n(ns + 'vlan_intersection');
|
||||
}
|
||||
}
|
||||
floatingRangesErrors = utils.validateIPRanges(networkParameters.get('floating_ranges'));
|
||||
floatingRangesErrors = utils.validateIPRanges(networkParameters.get('floating_ranges'), null);
|
||||
if (floatingRangesErrors.length) {
|
||||
networkingParametersErrors.floating_ranges = floatingRangesErrors;
|
||||
}
|
||||
|
@ -1043,36 +1043,38 @@ define([
|
|||
}
|
||||
});
|
||||
|
||||
var defaultNodeNetworkGroupId = _.min(_.compact(networks.pluck('group_id'))),
|
||||
networkToCheckFloatingRange = networks.find(
|
||||
(network) => network.get('group_id') == defaultNodeNetworkGroupId && network.get('meta').floating_range_var
|
||||
),
|
||||
networkToCheckFloatingRangeCidrError = false;
|
||||
try {
|
||||
networkToCheckFloatingRangeCidrError = !!errors.networks[defaultNodeNetworkGroupId][networkToCheckFloatingRange.id].cidr;
|
||||
} catch (error) {}
|
||||
var networkToCheckFloatingRangeName = _.capitalize(networkToCheckFloatingRange.get('name')),
|
||||
cidrToCheckFloatingRange = networkToCheckFloatingRange.get('cidr'),
|
||||
ipRangesToCheckFloatingRange = _.filter(networkToCheckFloatingRange.get('ip_ranges'), (range, index) => {
|
||||
var ipRangeError = false;
|
||||
var floatingRanges = networkParameters.get('floating_ranges'),
|
||||
networkToCheckFloatingRange = networks.find((network) => {
|
||||
if (!network.get('meta').floating_range_var) return false;
|
||||
var cidrError = false;
|
||||
try {
|
||||
ipRangeError = !_.all(range) || !!_.find(errors.networks[defaultNodeNetworkGroupId][networkToCheckFloatingRange.id].ip_ranges, {index: index});
|
||||
cidrError = !!errors.networks[network.get('group_id')][network.id].cidr;
|
||||
} catch (error) {}
|
||||
return !ipRangeError;
|
||||
if (cidrError) return false;
|
||||
return utils.validateIpCorrespondsToCIDR(network.get('cidr'), floatingRanges[0][0]) &&
|
||||
utils.validateIpCorrespondsToCIDR(network.get('cidr'), floatingRanges[0][1]);
|
||||
});
|
||||
|
||||
var networkToCheckFloatingRangeData = networkToCheckFloatingRange ? {
|
||||
cidr: networkToCheckFloatingRange.get('cidr'),
|
||||
network: _.capitalize(networkToCheckFloatingRange.get('name')),
|
||||
nodeNetworkGroup: nodeNetworkGroups.get(networkToCheckFloatingRange.get('group_id')).get('name')
|
||||
} : {},
|
||||
networkToCheckFloatingRangeIPRanges = networkToCheckFloatingRange ? _.filter(networkToCheckFloatingRange.get('ip_ranges'), (range, index) => {
|
||||
var ipRangeError = false;
|
||||
try {
|
||||
ipRangeError = !_.all(range) || !!_.find(errors.networks[networkToCheckFloatingRange.get('group_id')][networkToCheckFloatingRange.id].ip_ranges, {index: index});
|
||||
} catch (error) {}
|
||||
return !ipRangeError;
|
||||
}) : [];
|
||||
|
||||
floatingRangesErrors = utils.validateIPRanges(
|
||||
networkParameters.get('floating_ranges'),
|
||||
!networkToCheckFloatingRangeCidrError && cidrToCheckFloatingRange,
|
||||
ipRangesToCheckFloatingRange,
|
||||
floatingRanges,
|
||||
networkToCheckFloatingRangeData.cidr,
|
||||
networkToCheckFloatingRangeIPRanges,
|
||||
{
|
||||
DOES_NOT_MATCH_CIDR: i18n(ns + 'floating_ip_does_not_match_cidr', {
|
||||
cidr: cidrToCheckFloatingRange,
|
||||
network: networkToCheckFloatingRangeName
|
||||
}),
|
||||
IP_RANGES_INTERSECTION: i18n(ns + 'floating_and_public_ip_ranges_intersection', {
|
||||
network: networkToCheckFloatingRangeName
|
||||
})
|
||||
IP_RANGES_INTERSECTION: i18n(ns + 'floating_and_public_ip_ranges_intersection', networkToCheckFloatingRangeData),
|
||||
IP_RANGE_IS_NOT_IN_PUBLIC_CIDR: i18n(ns + 'floating_range_is_not_in_public_cidr')
|
||||
}
|
||||
);
|
||||
|
||||
|
|
|
@ -702,9 +702,9 @@
|
|||
"invalid_ip_range": "Start IP address must be less than end IP address",
|
||||
"empty_ip_range": "Please specify at least one IP range",
|
||||
"ip_does_not_match_cidr": "IP address does not match the network CIDR",
|
||||
"floating_ip_does_not_match_cidr": "Floating IP range must be contained in the CIDR of the __network__ network (Default node network group): __cidr__",
|
||||
"floating_range_is_not_in_public_cidr": "Floating IP range must be contained in a CIDR of Public network",
|
||||
"ip_ranges_intersection": "The IP range intersects the following IP range: ",
|
||||
"floating_and_public_ip_ranges_intersection": "Floating IP range must not intersect with IP range of the __network__ network (Default node network group): ",
|
||||
"floating_and_public_ip_ranges_intersection": "Floating IP range must not intersect with IP range of the __network__ network (__nodeNetworkGroup__ node network group): ",
|
||||
"invalid_vlan": "Invalid VLAN ID",
|
||||
"forbidden_vlan": "This VLAN ID is used by other networks. Please select other VLAN ID",
|
||||
"invalid_netmask": "Invalid netmask",
|
||||
|
|
|
@ -227,6 +227,8 @@ define([
|
|||
if (_.isEmpty(error)) {
|
||||
if (IP.toLong(range[0]) > IP.toLong(range[1])) {
|
||||
error.start = error.end = warnings.INVALID_IP_RANGE;
|
||||
} else if (_.isUndefined(cidr)) {
|
||||
error.start = error.end = warnings.IP_RANGE_IS_NOT_IN_PUBLIC_CIDR;
|
||||
} else if (existingRanges.length) {
|
||||
var intersection = utils.checkIPRangesIntersection(range, existingRanges);
|
||||
if (intersection) {
|
||||
|
|
Loading…
Reference in New Issue