mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-14 15:58:20 +00:00
gui/cluster: add structured peerLinks to join info
Instead of the old 'ring_addr' property (which is kept for compatibility), we also encode the link numbers into the new peerLinks structure. This allows us to display which IP is assigned to which link on the cluster in the join dialog, helping a user identify which link should receive which interface on the new node. Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
This commit is contained in:
parent
5957f47f72
commit
b1e7a7d3b7
@ -85,14 +85,18 @@ Ext.define('PVE.ClusterAdministration', {
|
||||
return el.name === data.preferred_node;
|
||||
});
|
||||
|
||||
var links = [];
|
||||
PVE.Utils.forEachCorosyncLink(nodeinfo,
|
||||
(num, link) => links.push(link));
|
||||
let links = {};
|
||||
let ring_addr = [];
|
||||
PVE.Utils.forEachCorosyncLink(nodeinfo, (num, link) => {
|
||||
links[num] = link;
|
||||
ring_addr.push(link);
|
||||
});
|
||||
|
||||
vm.set('preferred_node', {
|
||||
name: data.preferred_node,
|
||||
addr: nodeinfo.pve_addr,
|
||||
ring_addr: links,
|
||||
peerLinks: links,
|
||||
ring_addr: ring_addr,
|
||||
fp: nodeinfo.pve_fp
|
||||
});
|
||||
},
|
||||
@ -116,6 +120,7 @@ Ext.define('PVE.ClusterAdministration', {
|
||||
joinInfo: {
|
||||
ipAddress: vm.get('preferred_node.addr'),
|
||||
fingerprint: vm.get('preferred_node.fp'),
|
||||
peerLinks: vm.get('preferred_node.peerLinks'),
|
||||
ring_addr: vm.get('preferred_node.ring_addr'),
|
||||
totem: vm.get('totem')
|
||||
}
|
||||
|
@ -223,10 +223,15 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
|
||||
} else {
|
||||
let interfaces = joinInfo.totem.interface;
|
||||
let links = Object.values(interfaces).map(iface => {
|
||||
let linkNumber = iface.linknumber;
|
||||
let peerLink;
|
||||
if (joinInfo.peerLinks) {
|
||||
peerLink = joinInfo.peerLinks[linkNumber];
|
||||
}
|
||||
return {
|
||||
number: iface.linknumber,
|
||||
number: linkNumber,
|
||||
value: '',
|
||||
text: '',
|
||||
text: peerLink ? Ext.String.format(gettext("peer's link address: {0}"), peerLink) : '',
|
||||
allowBlank: false
|
||||
};
|
||||
});
|
||||
|
@ -14,7 +14,7 @@ Ext.define('PVE.form.CorosyncLinkEditorController', {
|
||||
this.addLink();
|
||||
},
|
||||
|
||||
addLink: function(number, value, allowBlank) {
|
||||
addLink: function(number, value, allowBlank, text) {
|
||||
let me = this;
|
||||
let view = me.getView();
|
||||
let vm = view.getViewModel();
|
||||
@ -37,6 +37,7 @@ Ext.define('PVE.form.CorosyncLinkEditorController', {
|
||||
allowBlankNetwork: allowBlank,
|
||||
initNumber: number,
|
||||
initNetwork: value,
|
||||
text: text,
|
||||
|
||||
// needs to be set here, because we need to update the viewmodel
|
||||
removeBtnHandler: function() {
|
||||
@ -130,6 +131,7 @@ Ext.define('PVE.form.CorosyncLinkSelector', {
|
||||
// values
|
||||
initNumber: 0,
|
||||
initNetwork: '',
|
||||
text: '',
|
||||
|
||||
layout: 'hbox',
|
||||
bodyPadding: 5,
|
||||
@ -190,6 +192,17 @@ Ext.define('PVE.form.CorosyncLinkSelector', {
|
||||
parent.removeBtnHandler();
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
xtype: 'label',
|
||||
margin: '-1px 0 0 5px',
|
||||
|
||||
// for muted effect
|
||||
cls: 'x-form-item-label-default',
|
||||
|
||||
cbind: {
|
||||
text: '{text}'
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@ -327,7 +340,8 @@ Ext.define('PVE.form.CorosyncLinkEditor', {
|
||||
vm.set('linkCount', 0);
|
||||
|
||||
Ext.Array.each(links, link => {
|
||||
controller.addLink(link['number'], link['value'], link['allowBlank']);
|
||||
controller.addLink(link['number'], link['value'],
|
||||
link['allowBlank'], link['text']);
|
||||
});
|
||||
},
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user