From b88b1a293f62ab0305aa537dc1282a4fe85d9200 Mon Sep 17 00:00:00 2001 From: Pizzosaure Date: Wed, 25 Sep 2024 16:36:49 +0200 Subject: [PATCH 1/7] feat(xo-server): display the bond mode of a pool's network --- packages/xo-server/src/xapi-object-to-xo.mjs | 16 ++++++++++++---- packages/xo-web/src/common/intl/messages.js | 1 + .../src/common/sorted-table/pifs-column.js | 11 ++++++++--- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/xo-server/src/xapi-object-to-xo.mjs b/packages/xo-server/src/xapi-object-to-xo.mjs index 39440601a53..f2b8a36eec2 100644 --- a/packages/xo-server/src/xapi-object-to-xo.mjs +++ b/packages/xo-server/src/xapi-object-to-xo.mjs @@ -556,7 +556,7 @@ const TRANSFORMS = { physical_usage: +obj.physical_utilisation, allocationStrategy: - srType === 'linstor' ? obj.$PBDs[0]?.device_config.provisioning ?? 'unknown' : ALLOCATION_BY_TYPE[srType], + srType === 'linstor' ? (obj.$PBDs[0]?.device_config.provisioning ?? 'unknown') : ALLOCATION_BY_TYPE[srType], current_operations: obj.current_operations, inMaintenanceMode: obj.other_config['xo:maintenanceState'] !== undefined, name_description: obj.name_description, @@ -749,9 +749,7 @@ const TRANSFORMS = { if (obj.other_config.applies_to) { const object = obj.$xapi.getObject(obj.other_config.applies_to, undefined) if (object === undefined) { - debug( - `Unknown other_config.applies_to reference ${obj.other_config.applies_to} in task ${obj.$id}` - ) + debug(`Unknown other_config.applies_to reference ${obj.other_config.applies_to} in task ${obj.$id}`) } else { applies_to = object.uuid } @@ -957,6 +955,16 @@ const TRANSFORMS = { VUSBs: link(obj, 'VUSBs'), } }, + + // ----------------------------------------------------------------- + + bond(obj) { + return { + type: 'bond', + master: link(obj, 'master'), + mode: obj.mode, + } + }, } // =================================================================== diff --git a/packages/xo-web/src/common/intl/messages.js b/packages/xo-web/src/common/intl/messages.js index ec2412c27c9..6773db978b1 100644 --- a/packages/xo-web/src/common/intl/messages.js +++ b/packages/xo-web/src/common/intl/messages.js @@ -969,6 +969,7 @@ const messages = { noHost: 'No hosts', memoryLeftTooltip: '{used}% used ({free} free)', // ----- Pool network tab ----- + bondMode: 'Bond Mode', pif: 'PIF', poolNetworkAutomatic: 'Automatic', poolNetworkNameLabel: 'Name', diff --git a/packages/xo-web/src/common/sorted-table/pifs-column.js b/packages/xo-web/src/common/sorted-table/pifs-column.js index ab9420b0983..5ad6b3a8d0c 100644 --- a/packages/xo-web/src/common/sorted-table/pifs-column.js +++ b/packages/xo-web/src/common/sorted-table/pifs-column.js @@ -8,7 +8,7 @@ import map from 'lodash/map' import React, { Component } from 'react' import Tooltip from 'tooltip' import { connectStore } from 'utils' -import { createGetObject, createSelector } from 'selectors' +import { createGetObject, createGetObjectsOfType, createSelector } from 'selectors' import { connectPif, disconnectPif } from 'xo' @connectStore(() => { @@ -19,11 +19,14 @@ import { connectPif, disconnectPif } from 'xo' pif => pif?.attached && !pif?.isBondMaster && (pif?.management || pif?.disallowUnplug) ) - return { host, pif, disableUnplug } + const bonds = createGetObjectsOfType('bond') + const bond = createSelector(pif, bonds, (pif, bonds) => Object.values(bonds).find(bond => bond.master === pif.id)) + + return { host, pif, disableUnplug, bond } }) class PifItem extends Component { render() { - const { pif, host, disableUnplug } = this.props + const { pif, host, disableUnplug, bond } = this.props return ( @@ -31,6 +34,7 @@ class PifItem extends Component { {host?.name_label ?? _('unknown')} {pif?.ip ?? _('unknown')} {pif?.mac ?? _('unknown')} + {bond?.mode ?? _('unknown')} {pif?.carrier === undefined ? ( {_('unknown')} @@ -78,6 +82,7 @@ export default class PifsColumn extends BaseComponent { {_('homeTypeHost')} {_('pifAddressLabel')} {_('pifMacLabel')} + {_('bondMode')} {_('pifStatusLabel')} From 3294c712bed2c707941b326c4339e875b7909a36 Mon Sep 17 00:00:00 2001 From: Pizzosaure Date: Wed, 25 Sep 2024 16:43:17 +0200 Subject: [PATCH 2/7] changelog entry --- CHANGELOG.unreleased.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md index 498050711e2..d5fcc8f2381 100644 --- a/CHANGELOG.unreleased.md +++ b/CHANGELOG.unreleased.md @@ -20,6 +20,7 @@ - `rest post` and `rest put` now accept `--input $file` to upload a file and display progress information - [Backup] Detect invalid VDI exports that are incorrectly reported as successful by XAPI - [Backup/HealthCheck] Improve error messages on health check timeout (PR [#8016](https://github.com/vatesfr/xen-orchestra/pull/8016)) +- [Pool/Network] Display the bond mode of a network [#7802](https://github.com/vatesfr/xen-orchestra/issues/7802) (PR [#8010](https://github.com/vatesfr/xen-orchestra/pull/8010)) ### Bug fixes @@ -48,6 +49,6 @@ - xen-api minor - xo-cli minor - xo-server minor -- xo-web patch +- xo-web minor From ec281acd51aa89806920016c7bce9ae5ffe50f93 Mon Sep 17 00:00:00 2001 From: Pizzosaure Date: Wed, 25 Sep 2024 16:47:15 +0200 Subject: [PATCH 3/7] prettier - unrelated changes --- packages/xo-server/src/xapi-object-to-xo.mjs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/xo-server/src/xapi-object-to-xo.mjs b/packages/xo-server/src/xapi-object-to-xo.mjs index f2b8a36eec2..a0e47a15427 100644 --- a/packages/xo-server/src/xapi-object-to-xo.mjs +++ b/packages/xo-server/src/xapi-object-to-xo.mjs @@ -556,7 +556,7 @@ const TRANSFORMS = { physical_usage: +obj.physical_utilisation, allocationStrategy: - srType === 'linstor' ? (obj.$PBDs[0]?.device_config.provisioning ?? 'unknown') : ALLOCATION_BY_TYPE[srType], + srType === 'linstor' ? obj.$PBDs[0]?.device_config.provisioning ?? 'unknown' : ALLOCATION_BY_TYPE[srType], current_operations: obj.current_operations, inMaintenanceMode: obj.other_config['xo:maintenanceState'] !== undefined, name_description: obj.name_description, @@ -749,7 +749,9 @@ const TRANSFORMS = { if (obj.other_config.applies_to) { const object = obj.$xapi.getObject(obj.other_config.applies_to, undefined) if (object === undefined) { - debug(`Unknown other_config.applies_to reference ${obj.other_config.applies_to} in task ${obj.$id}`) + debug( + `Unknown other_config.applies_to reference ${obj.other_config.applies_to} in task ${obj.$id}` + ) } else { applies_to = object.uuid } From d9869ab64ff313e4949fe74147ceea488961a425 Mon Sep 17 00:00:00 2001 From: Pizzosaure Date: Wed, 25 Sep 2024 16:47:47 +0200 Subject: [PATCH 4/7] prettier - unrelated change --- packages/xo-server/src/xapi-object-to-xo.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xo-server/src/xapi-object-to-xo.mjs b/packages/xo-server/src/xapi-object-to-xo.mjs index a0e47a15427..9f3272d1b7f 100644 --- a/packages/xo-server/src/xapi-object-to-xo.mjs +++ b/packages/xo-server/src/xapi-object-to-xo.mjs @@ -749,7 +749,7 @@ const TRANSFORMS = { if (obj.other_config.applies_to) { const object = obj.$xapi.getObject(obj.other_config.applies_to, undefined) if (object === undefined) { - debug( + debug( `Unknown other_config.applies_to reference ${obj.other_config.applies_to} in task ${obj.$id}` ) } else { From 1cc3c82c9e5cdce3f4a2e2585629093e46349592 Mon Sep 17 00:00:00 2001 From: MlssFrncJrg <119158464+MelissaFrncJrg@users.noreply.github.com> Date: Thu, 26 Sep 2024 09:46:05 +0200 Subject: [PATCH 5/7] changes after review Co-authored-by: Pierre Donias --- packages/xo-web/src/common/sorted-table/pifs-column.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/xo-web/src/common/sorted-table/pifs-column.js b/packages/xo-web/src/common/sorted-table/pifs-column.js index 5ad6b3a8d0c..b02cb516272 100644 --- a/packages/xo-web/src/common/sorted-table/pifs-column.js +++ b/packages/xo-web/src/common/sorted-table/pifs-column.js @@ -34,7 +34,7 @@ class PifItem extends Component { {host?.name_label ?? _('unknown')} {pif?.ip ?? _('unknown')} {pif?.mac ?? _('unknown')} - {bond?.mode ?? _('unknown')} + {bond?.mode ?? _('unknown')} {pif?.carrier === undefined ? ( {_('unknown')} @@ -82,7 +82,7 @@ export default class PifsColumn extends BaseComponent { {_('homeTypeHost')} {_('pifAddressLabel')} {_('pifMacLabel')} - {_('bondMode')} + {_('bondMode')} {_('pifStatusLabel')} From e6c5b5c18cfb8ccbd4b4032df91060330cb5ec1f Mon Sep 17 00:00:00 2001 From: Pierre Donias Date: Fri, 27 Sep 2024 10:25:11 +0200 Subject: [PATCH 6/7] =?UTF-8?q?Unknown=20=E2=86=92=20-?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/xo-web/src/common/sorted-table/pifs-column.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xo-web/src/common/sorted-table/pifs-column.js b/packages/xo-web/src/common/sorted-table/pifs-column.js index b02cb516272..7c6662b3bf7 100644 --- a/packages/xo-web/src/common/sorted-table/pifs-column.js +++ b/packages/xo-web/src/common/sorted-table/pifs-column.js @@ -34,7 +34,7 @@ class PifItem extends Component { {host?.name_label ?? _('unknown')} {pif?.ip ?? _('unknown')} {pif?.mac ?? _('unknown')} - {bond?.mode ?? _('unknown')} + {bond?.mode ?? '-'} {pif?.carrier === undefined ? ( {_('unknown')} From ba33dcdd6d7fcfff7b38a7785c93d0a2d6b1d5f7 Mon Sep 17 00:00:00 2001 From: Mathieu <70369997+MathieuRA@users.noreply.github.com> Date: Fri, 27 Sep 2024 12:32:01 +0200 Subject: [PATCH 7/7] Update CHANGELOG.unreleased.md --- CHANGELOG.unreleased.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md index bcad79d7538..1ab005e4bf6 100644 --- a/CHANGELOG.unreleased.md +++ b/CHANGELOG.unreleased.md @@ -19,7 +19,6 @@ - `rest get --output $file` now displays progress information during download - `rest post` and `rest put` now accept `--input $file` to upload a file and display progress information - [Backup] Detect invalid VDI exports that are incorrectly reported as successful by XAPI -- [Backup/HealthCheck] Improve error messages on health check timeout (PR [#8016](https://github.com/vatesfr/xen-orchestra/pull/8016)) - [Backup] Backup job sequences: configure lists of backup jobs to run in order one after the other (PRs [#7985](https://github.com/vatesfr/xen-orchestra/pull/7985), [#8014](https://github.com/vatesfr/xen-orchestra/pull/8014)) - [Pool/Network] Display the bond mode of a network [#7802](https://github.com/vatesfr/xen-orchestra/issues/7802) (PR [#8010](https://github.com/vatesfr/xen-orchestra/pull/8010))