|
|
3f6cae |
From 77760bdeb1642e30f109ba88a98fff8b1faba206 Mon Sep 17 00:00:00 2001
|
|
|
3f6cae |
From: Ivan Devat <idevat@redhat.com>
|
|
|
3f6cae |
Date: Tue, 19 Mar 2019 10:05:40 +0100
|
|
|
3f6cae |
Subject: [PATCH] squash bz1690290 GUI cannot create a cluster if k
|
|
|
3f6cae |
|
|
|
3f6cae |
fix missing addrs field in cluster setup in webUi
|
|
|
3f6cae |
|
|
|
3f6cae |
fix transport options in cluster setup in webui
|
|
|
3f6cae |
---
|
|
|
3f6cae |
pcsd/public/js/api.js | 41 ++++++++++++++++++++++++---------
|
|
|
3f6cae |
pcsd/public/js/cluster-setup.js | 8 +++----
|
|
|
3f6cae |
2 files changed, 33 insertions(+), 16 deletions(-)
|
|
|
3f6cae |
|
|
|
3f6cae |
diff --git a/pcsd/public/js/api.js b/pcsd/public/js/api.js
|
|
|
3f6cae |
index 6c433b54..b9c94720 100644
|
|
|
3f6cae |
--- a/pcsd/public/js/api.js
|
|
|
3f6cae |
+++ b/pcsd/public/js/api.js
|
|
|
3f6cae |
@@ -209,10 +209,39 @@ api.checkAuthAgainstNodes = function(nodesNames){
|
|
|
3f6cae |
|
|
|
3f6cae |
api.clusterSetup = function(submitData, processOptions){
|
|
|
3f6cae |
var setupData = submitData.setupData;
|
|
|
3f6cae |
+ var transportOptions = {};
|
|
|
3f6cae |
+ if (setupData.transportType === "knet") {
|
|
|
3f6cae |
+ transportOptions = {
|
|
|
3f6cae |
+ ip_version: setupData.transportOptions.ip_version,
|
|
|
3f6cae |
+ knet_pmtud_interval: setupData.transportOptions.knet_pmtud_interval,
|
|
|
3f6cae |
+ link_mode: setupData.transportOptions.link_mode,
|
|
|
3f6cae |
+ };
|
|
|
3f6cae |
+ } else if(setupData.transportType !== undefined) {
|
|
|
3f6cae |
+ transportOptions = {
|
|
|
3f6cae |
+ ip_version: setupData.transportOptions.ip_version,
|
|
|
3f6cae |
+ netmtu: setupData.transportOptions.netmtu,
|
|
|
3f6cae |
+ };
|
|
|
3f6cae |
+ }
|
|
|
3f6cae |
var data = {
|
|
|
3f6cae |
cluster_name: setupData.clusterName,
|
|
|
3f6cae |
nodes: setupData.nodeList.map(function(node){
|
|
|
3f6cae |
apiNode = { name: node.name };
|
|
|
3f6cae |
+ // The backend defaults addresses. But for the defaulting addresses there
|
|
|
3f6cae |
+ // must be no key "addrs".
|
|
|
3f6cae |
+ // There can be following (valid) scenarios:
|
|
|
3f6cae |
+ // 1 User uses no link. We omit key "addrs" for every node. The backend
|
|
|
3f6cae |
+ // defaults addresses.
|
|
|
3f6cae |
+ // 2 User uses 1 link and keep all addresses fields empty. We omit key
|
|
|
3f6cae |
+ // "addrs" for every node. The backend defaults addresses.
|
|
|
3f6cae |
+ // 3 User uses 1 link and keep some addresses fields empty. We omit key
|
|
|
3f6cae |
+ // "addrs" for respective nodes. The backend then refuses it because
|
|
|
3f6cae |
+ // nodes addreses are inconsistent.
|
|
|
3f6cae |
+ // 4 User uses more links. We omit key "addrs" when no address for node is
|
|
|
3f6cae |
+ // filled. The backend then refuses it because nodes addresses count
|
|
|
3f6cae |
+ // is inconsistent with links count.
|
|
|
3f6cae |
+ // Because we need to support scenario 2 and the backend defaults
|
|
|
3f6cae |
+ // addresses only when key "addrs" is not specified we cannot simply
|
|
|
3f6cae |
+ // sent empty addresses or empty address list (i.e. key "addrs").
|
|
|
3f6cae |
var addrs = node.addrs.filter(function(addr){return addr.length > 0});
|
|
|
3f6cae |
if (addrs.length > 0) {
|
|
|
3f6cae |
apiNode["addrs"] = addrs;
|
|
|
3f6cae |
@@ -220,17 +249,7 @@ api.clusterSetup = function(submitData, processOptions){
|
|
|
3f6cae |
return apiNode;
|
|
|
3f6cae |
}),
|
|
|
3f6cae |
transport_type: setupData.transportType,
|
|
|
3f6cae |
- transport_options: setupData.transportType == "knet"
|
|
|
3f6cae |
- ? {
|
|
|
3f6cae |
- ip_version: setupData.transportOptions.ip_version,
|
|
|
3f6cae |
- knet_pmtud_interval: setupData.transportOptions.knet_pmtud_interval,
|
|
|
3f6cae |
- link_mode: setupData.transportOptions.link_mode,
|
|
|
3f6cae |
- }
|
|
|
3f6cae |
- : {
|
|
|
3f6cae |
- ip_version: setupData.transportOptions.ip_version,
|
|
|
3f6cae |
- netmtu: setupData.transportOptions.netmtu,
|
|
|
3f6cae |
- }
|
|
|
3f6cae |
- ,
|
|
|
3f6cae |
+ transport_options: transportOptions,
|
|
|
3f6cae |
link_list: setupData.linkList.map(function(link){
|
|
|
3f6cae |
return setupData.transportType == "knet"
|
|
|
3f6cae |
? {
|
|
|
3f6cae |
diff --git a/pcsd/public/js/cluster-setup.js b/pcsd/public/js/cluster-setup.js
|
|
|
3f6cae |
index 2b7b0a4e..be0a22d5 100644
|
|
|
3f6cae |
--- a/pcsd/public/js/cluster-setup.js
|
|
|
3f6cae |
+++ b/pcsd/public/js/cluster-setup.js
|
|
|
3f6cae |
@@ -322,11 +322,9 @@ clusterSetup.data.validateNameAndNodes = function(formData){
|
|
|
3f6cae |
|
|
|
3f6cae |
clusterSetup.data.nodes = function(nodesNames, getAddrs){
|
|
|
3f6cae |
return nodesNames.map(function(nodeName){
|
|
|
3f6cae |
- addrs = getAddrs ? getAddrs(nodeName) : [];
|
|
|
3f6cae |
- return addrs.length > 0
|
|
|
3f6cae |
- ? { name: nodeName, addrs: addrs }
|
|
|
3f6cae |
- : { name: nodeName }
|
|
|
3f6cae |
- ;
|
|
|
3f6cae |
+ // The field addrs is here always. The details of backend is solved within
|
|
|
3f6cae |
+ // api.js module.
|
|
|
3f6cae |
+ return { name: nodeName, addrs: getAddrs ? getAddrs(nodeName) : [] };
|
|
|
3f6cae |
});
|
|
|
3f6cae |
};
|
|
|
3f6cae |
|
|
|
3f6cae |
--
|
|
|
3f6cae |
2.20.1
|
|
|
3f6cae |
|