Attempting to add new host fail on xoa and on server, worked on xcp-ng center
-
@Jonathon We are interested if you can reproduce using an up-to-date instance of XO.

-
@Danp Sorry, due to the host being added and me continuing on with my other tasks, it is not. I could have made that more clear.
-
Hello, @Danp
I just reproduced it.
All my nodes are up to date
( my xo have 7 commits behind master, i read the commit's log of my missing commit, the commits are not related to my issue. ).In my scenario, i had a pool with 3 nodes
- node1
- node2
- node3
I reinstall node3 after a disaster ( i force forgot node 3).
Now, i can't add the host back to the pool.

I also tried to update the host after installation ( usually, i do this after ).
But it doesn't works more.
I will not add my node thought xcpng center to permit you further investigation

Here is the detailed operation json
{ "id": "0mcwehjzy", "properties": { "method": "pool.mergeInto", "params": { "sources": [ "64365465-fd4e-25b6-3db2-2cdcd9edba5e" ], "target": "a92ca4ca-caac-83b9-fa00-4bb75cb48f6c", "force": true }, "name": "API call: pool.mergeInto", "userId": "63a0dbaf-ba2d-4028-b80f-fe49f56686b2", "type": "api.call" }, "start": 1752092249470, "status": "failure", "updatedAt": 1752092249473, "end": 1752092249472, "result": { "message": "app.getLicenses is not a function", "name": "TypeError", "stack": "TypeError: app.getLicenses is not a function\n at enforceHostsHaveLicense (file:///etc/xen-orchestra/packages/xo-server/src/xo-mixins/pool.mjs:15:30)\n at Pools.apply (file:///etc/xen-orchestra/packages/xo-server/src/xo-mixins/pool.mjs:80:13)\n at Pools.mergeInto (/etc/xen-orchestra/node_modules/golike-defer/src/index.js:85:19)\n at Xo.mergeInto (file:///etc/xen-orchestra/packages/xo-server/src/api/pool.mjs:311:15)\n at Task.runInside (/etc/xen-orchestra/@vates/task/index.js:175:22)\n at Task.run (/etc/xen-orchestra/@vates/task/index.js:159:20)\n at Api.#callApiMethod (file:///etc/xen-orchestra/packages/xo-server/src/xo-mixins/api.mjs:469:18)" } }``` -
This post is deleted! -
Hey @Danp ,
I can keep my cluster without this node up to Monday, do you have an idea / do you want to investigate on this case ? -
Guess who's back!
Adding another host to the pool. Tested before and after updating xoa again.
pool.mergeInto { "sources": [ "e4cf2039-3547-6574-0e10-96f9d91316f0" ], "target": "38aea760-cf23-927c-ccf5-90969681e04b", "force": true } { "message": "app.getLicenses is not a function", "name": "TypeError", "stack": "TypeError: app.getLicenses is not a function at enforceHostsHaveLicense (file:///opt/xen-orchestra/packages/xo-server/src/xo-mixins/pool.mjs:15:30) at Pools.apply (file:///opt/xen-orchestra/packages/xo-server/src/xo-mixins/pool.mjs:80:13) at Pools.mergeInto (/opt/xen-orchestra/node_modules/golike-defer/src/index.js:85:19) at Xo.mergeInto (file:///opt/xen-orchestra/packages/xo-server/src/api/pool.mjs:314:15) at Task.runInside (/opt/xen-orchestra/@vates/task/index.js:175:22) at Task.run (/opt/xen-orchestra/@vates/task/index.js:159:20) at Api.#callApiMethod (file:///opt/xen-orchestra/packages/xo-server/src/xo-mixins/api.mjs:469:18)" }Uncaught Object { code: -32000, data: {…}, stack: "", … } index.js:171:1258316 default log-error.js:10 (Async: setTimeout handler) default log-error.js:5 e action-button.js:130 InterpretGeneratorResume self-hosted:1332 throw self-hosted:1279 m action-button.js:10 s action-button.js:10 (Async: promise callback) m action-button.js:10 i action-button.js:10 _execute action-button.js:10 _execute action-button.js:10 _execute action-button.js:10 React 5 forEach self-hosted:157 React 9 (Async: EventListener.handleEvent) listen EventListener.js:29 React 29I also checked
journalctl -u xo-server.serviceNov 12 17:46:52 xoa xo-server[1223513]: 2025-11-12T17:46:52.761Z xo:api WARN jonathon@floatplanemedia.com | pool.mergeInto(...) [32ms] =!> TypeError: app.getLicenses is not a function Nov 12 17:49:14 xoa xo-server[1223513]: 2025-11-12T17:49:14.414Z xo:api WARN jonathon@floatplanemedia.com | pool.mergeInto(...) [2ms] =!> TypeError: app.getLicenses is not a function


-
Hi,
How did you install your XO in the first place?
-
Looks like it was installed with
curl https://raw.githubusercontent.com/Jarli01/xenorchestra_installer/master/xo_install.sh
This was a few years ago at least.And it gets updated with
sudo curl https://raw.githubusercontent.com/Jarli01/xenorchestra_updater/master/xo-update.sh | bash | tee xenupgrade##.logroot@xoa:/home/fpcuser# cat xenupgrade23.log installed : v22.20.0 (with npm 10.9.3) Stopping xo-server... Checking for Yarn package... Checking for Yarn update... Checking for missing dependencies... Checking for Repo change... Checking xen-orchestra... Current branch master Current version 5.189.0 / 5.186.0 Current commit a0046fa19fa5f17344061e5c7709c1e02140dca4 2025-09-25 16:15:05 +0200 95 updates available Updating from source... No local changes to save Updating a0046fa19..d829816f6 Fast-forward @vates/async-each/index.js | 28 +- @vates/async-each/index.test.js | 14 + @vates/async-each/package.json | 2 +- @vates/fuse-vhd/package.json | 2 +- @vates/generator-toolbox/src/throttle.mts | 6 +- @vates/generator-toolbox/tsconfig.json | 1 + @vates/nbd-client/package.json | 2 +- @vates/types/package.json | 2 +- @vates/types/src/lib/xen-orchestra-xapi.mts | 5 + @vates/types/src/xen-api.mts | 28 +- @vates/types/src/xo.mts | 15 +- @vates/types/tsconfig.json | 3 +- @xen-orchestra/backups-cli/package.json | 4 +- @xen-orchestra/backups/_runners/VmsRemote.mjs | 7 +- @xen-orchestra/backups/_runners/VmsXapi.mjs | 5 +- .../backups/_runners/_vmRunners/FullRemote.mjs | 2 +- .../backups/_runners/_vmRunners/FullXapi.mjs | 6 +- .../_runners/_vmRunners/IncrementalRemote.mjs | 5 +- .../_runners/_vmRunners/IncrementalXapi.mjs | 7 +- .../_runners/_vmRunners/_AbstractRemote.mjs | 2 + .../backups/_runners/_vmRunners/_AbstractXapi.mjs | 2 + .../_runners/_writers/IncrementalXapiWriter.mjs | 11 +- @xen-orchestra/backups/package.json | 4 +- @xen-orchestra/disk-transform/src/Throttled.mts | 26 + @xen-orchestra/disk-transform/src/Timeout.mts | 16 + @xen-orchestra/disk-transform/src/index.mts | 2 + @xen-orchestra/disk-transform/tsconfig.json | 1 + @xen-orchestra/fs/package.json | 4 +- @xen-orchestra/fs/src/abstract.js | 53 +- .../immutable-backups/liftProtection.mjs | 4 +- @xen-orchestra/immutable-backups/package.json | 2 +- @xen-orchestra/lite/CHANGELOG.md | 3 + @xen-orchestra/lite/docs/modals.md | 111 - @xen-orchestra/lite/package.json | 6 +- @xen-orchestra/lite/src/App.vue | 6 +- .../lite/src/components/CollectionFilter.vue | 33 +- .../lite/src/components/CollectionFilterRow.vue | 53 +- .../lite/src/components/CollectionSorter.vue | 20 +- .../components/component-story/StoryPropParams.vue | 10 +- .../lite/src/components/form/FormJson.vue | 18 +- .../src/components/modals/CodeHighlightModal.vue | 11 +- .../components/modals/CollectionFilterModal.vue | 90 +- .../components/modals/CollectionSorterModal.vue | 51 +- .../src/components/modals/InvalidFieldModal.vue | 33 +- .../lite/src/components/modals/JsonEditorModal.vue | 62 +- .../components/modals/UnreachableHostsModal.vue | 58 +- .../lite/src/components/modals/VmDeleteModal.vue | 70 +- .../components/modals/VmExportBlockedUrlsModal.vue | 38 +- .../lite/src/components/modals/VmExportModal.vue | 59 +- .../lite/src/components/modals/VmMigrateModal.vue | 64 +- .../components/ui/modals/ModalApproveButton.vue | 13 - .../src/components/ui/modals/ModalCloseIcon.vue | 22 - .../src/components/ui/modals/ModalContainer.vue | 74 - .../components/ui/modals/ModalDeclineButton.vue | 16 - .../lite/src/components/ui/modals/ModalList.vue | 10 - .../src/components/ui/modals/ModalListItem.vue | 15 - .../lite/src/components/ui/modals/UiModal.vue | 55 - .../ui/modals/layouts/BasicModalLayout.vue | 26 - .../ui/modals/layouts/ConfirmModalLayout.vue | 76 - .../ui/modals/layouts/FormModalLayout.vue | 63 - .../vm/VmActionItems/VmActionDeleteItem.vue | 18 +- .../vm/VmActionItems/VmActionExportItem.vue | 23 +- .../vm/VmActionItems/VmActionMigrateItem.vue | 34 +- .../lite/src/composables/context.composable.ts | 5 +- .../lite/src/composables/modal.composable.ts | 4 - .../composables/unreachable-hosts.composable.ts | 23 +- @xen-orchestra/lite/src/jobs/vm-export.job.ts | 5 +- .../src/libs/xen-api/operations/vm-operations.ts | 14 +- @xen-orchestra/lite/src/pages/settings.vue | 305 +- @xen-orchestra/lite/src/pages/xoa-deploy.vue | 18 +- @xen-orchestra/lite/src/stores/modal.store.ts | 69 - .../modals/layouts/basic-modal-layout.story.md | 7 - .../modals/layouts/basic-modal-layout.story.vue | 17 - .../modals/layouts/confirm-modal-layout.story.md | 18 - .../modals/layouts/confirm-modal-layout.story.vue | 30 - .../modals/layouts/form-modal-layout.story.md | 30 - .../modals/layouts/form-modal-layout.story.vue | 50 - .../src/stories/modals/modal-container.story.md | 17 - .../src/stories/modals/modal-container.story.vue | 37 - @xen-orchestra/lite/src/types/index.ts | 9 - @xen-orchestra/lite/src/types/injection-keys.ts | 7 - @xen-orchestra/lite/typed-router.d.ts | 4 - @xen-orchestra/proxy/package.json | 4 +- @xen-orchestra/qcow2/tsconfig.json | 1 + @xen-orchestra/rest-api/package.json | 6 +- .../src/abstract-classes/base-controller.mts | 31 +- .../src/abstract-classes/xapi-xo-controller.mts | 17 +- .../rest-api/src/groups/group.controller.mts | 27 +- .../rest-api/src/helpers/helper.type.mts | 11 + .../rest-api/src/hosts/host.controller.mts | 88 +- @xen-orchestra/rest-api/src/index.mts | 7 +- @xen-orchestra/rest-api/src/ioc/ioc.mts | 6 - .../rest-api/src/messages/message.controller.mts | 2 +- .../src/middlewares/authentication.middleware.mts | 83 +- .../rest-api/src/networks/network.controller.mts | 78 +- .../src/open-api/oa-examples/pbd.oa-example.mts | 43 + .../src/open-api/oa-examples/user.oa-example.mts | 12 + .../rest-api/src/pbds/pbd.controller.mts | 50 + .../rest-api/src/pifs/pif.controller.mts | 52 +- .../rest-api/src/pools/pool.controller.mts | 78 +- .../rest-api/src/rest-api/rest-api.type.mts | 13 +- .../rest-api/src/servers/server.controller.mts | 28 +- @xen-orchestra/rest-api/src/srs/sr.controller.mts | 100 +- @xen-orchestra/rest-api/src/tasks/task.service.mts | 32 - .../rest-api/src/users/user.controller.mts | 139 +- .../rest-api/src/users/user.middleware.mts | 23 + .../rest-api/src/vbds/vbd.controller.mts | 51 +- .../src/vdi-snapshots/vdi-snapshot.controller.mts | 79 +- .../rest-api/src/vdis/vdi.controller.mts | 112 +- .../rest-api/src/vifs/vif.controller.mts | 52 +- .../src/vm-controller/vm-controller.controller.mts | 80 +- .../src/vm-snapshots/vm-snapshot.controller.mts | 61 +- .../src/vm-templates/vm-template.controller.mts | 78 +- @xen-orchestra/rest-api/src/vms/vm.controller.mts | 45 +- @xen-orchestra/rest-api/tsconfig.json | 1 + @xen-orchestra/rest-api/tsoa.json | 19 + @xen-orchestra/vmware-explorer/esxi.mjs | 2 +- @xen-orchestra/vmware-explorer/package.json | 2 +- @xen-orchestra/web-core/docs/index.md | 2 + @xen-orchestra/web-core/docs/modals.md | 115 + .../web-core/lib/assets/css/_colors.pcss | 8 + .../lib/components/backdrop/VtsBackdrop.vue | 10 +- .../lib/components/backup-state/VtsBackupState.vue | 3 +- .../lib/components/button-group/VtsButtonGroup.vue | 6 +- .../web-core/lib/components/menu/MenuList.vue | 1 + .../web-core/lib/components/modal/VtsModal.vue | 82 + .../lib/components/modal/VtsModalButton.vue | 36 + .../lib/components/modal/VtsModalCancelButton.vue | 37 + .../lib/components/modal/VtsModalConfirmButton.vue | 21 + .../web-core/lib/components/modal/VtsModalList.vue | 34 + .../lib/components/task/VtsQuickTaskButton.vue | 5 +- .../lib/components/task/VtsQuickTaskList.vue | 22 +- .../web-core/lib/components/tree/VtsTreeItem.vue | 4 +- .../web-core/lib/components/ui/button/UiButton.vue | 80 +- .../ui/collapsible-list/UiCollapsibleList.vue | 4 + .../web-core/lib/components/ui/modal/UiModal.vue | 164 + .../web-core/lib/components/ui/panel/UiPanel.vue | 2 +- .../ui/quick-task-item/UiQuickTaskItem.vue | 4 +- .../ui/table-pagination/UiTablePagination.vue | 4 +- .../web-core/lib/composables/context.composable.ts | 8 +- .../lib/composables/link-component.composable.ts | 5 +- .../lib/composables/pagination.composable.ts | 5 +- @xen-orchestra/web-core/lib/locales/cs.json | 82 +- @xen-orchestra/web-core/lib/locales/en.json | 36 +- @xen-orchestra/web-core/lib/locales/es.json | 82 +- @xen-orchestra/web-core/lib/locales/fr.json | 40 +- @xen-orchestra/web-core/lib/locales/it.json | 11 +- @xen-orchestra/web-core/lib/locales/nl.json | 48 +- @xen-orchestra/web-core/lib/locales/pt_BR.json | 34 +- @xen-orchestra/web-core/lib/locales/ru.json | 84 +- @xen-orchestra/web-core/lib/locales/uk.json | 340 +- .../lib/packages/collection/use-collection.ts | 5 +- .../form-select/use-form-option-controller.ts | 5 +- .../lib/packages/form-select/use-form-select.ts | 15 +- .../web-core/lib/packages/menu/action.ts | 7 +- @xen-orchestra/web-core/lib/packages/menu/link.ts | 9 +- .../web-core/lib/packages/menu/router-link.ts | 5 +- .../web-core/lib/packages/menu/toggle-target.ts | 5 +- .../web-core/lib/packages/modal/ModalProvider.vue | 17 + .../web-core/lib/packages/modal/README.md | 253 ++ .../lib/packages/modal/create-modal-opener.ts | 103 + .../web-core/lib/packages/modal/modal.store.ts | 22 + .../web-core/lib/packages/modal/types.ts | 92 + .../web-core/lib/packages/modal/use-modal.ts | 53 + .../web-core/lib/packages/progress/use-progress.ts | 7 +- .../web-core/lib/packages/table/README.md | 336 ++ .../lib/packages/table/apply-extensions.ts | 26 + .../web-core/lib/packages/table/define-columns.ts | 62 + .../define-renderer/define-table-cell-renderer.ts | 27 + .../table/define-renderer/define-table-renderer.ts | 47 + .../define-renderer/define-table-row-renderer.ts | 29 + .../define-table-section-renderer.ts | 29 + .../define-table/define-multi-source-table.ts | 39 + .../packages/table/define-table/define-table.ts | 13 + .../table/define-table/define-typed-table.ts | 18 + .../web-core/lib/packages/table/index.ts | 11 + .../lib/packages/table/transform-sources.ts | 13 + .../lib/packages/table/types/extensions.ts | 16 + .../web-core/lib/packages/table/types/index.ts | 47 + .../lib/packages/table/types/table-cell.ts | 18 + .../web-core/lib/packages/table/types/table-row.ts | 20 + .../lib/packages/table/types/table-section.ts | 19 + .../web-core/lib/packages/table/types/table.ts | 28 + .../lib/packages/threshold/use-threshold.ts | 7 +- .../web-core/lib/types/value-matcher.d.ts | 3 + .../web-core/lib/types/vue-virtual-scroller.d.ts | 101 + .../web-core/lib/utils/injection-keys.util.ts | 3 + @xen-orchestra/web-core/lib/utils/progress.util.ts | 3 +- @xen-orchestra/web-core/lib/utils/speed.util.ts | 12 + @xen-orchestra/web-core/lib/utils/time.util.ts | 57 + .../web-core/lib/utils/to-computed.util.ts | 15 + @xen-orchestra/web-core/package.json | 5 +- @xen-orchestra/web/env.d.ts | 1 + @xen-orchestra/web/package.json | 12 +- @xen-orchestra/web/src/App.vue | 2 + .../{pool/dashboard => }/alarms/AlarmLink.vue | 0 .../web/src/components/alarms/DashboardAlarms.vue | 77 + .../components/backups/jobs/BackupJobsTable.vue | 16 +- .../backups/jobs/panel/BackupJobsSidePanel.vue | 112 + .../panel/cards-items/BackupJobsSmartModePools.vue | 23 + .../panel/cards-items/BackupJobsSmartModeTags.vue | 23 + .../panel/cards-items/BackupJobsTargetsBrItem.vue | 19 + .../panel/cards-items/BackupJobsTargetsSection.vue | 41 + .../panel/cards-items/BackupJobsTargetsSrItem.vue | 16 + .../jobs/panel/cards-items/BackupRunItem.vue | 85 + .../jobs/panel/cards/BackupJobInfosCard.vue | 69 + .../backups/jobs/panel/cards/BackupJobLogsCard.vue | 41 + .../jobs/panel/cards/BackupJobSchedulesCard.vue | 92 + .../jobs/panel/cards/BackupJobSettingsCard.vue | 225 ++ .../panel/cards/BackupJobsBackedUpPoolsCard.vue | 39 + .../jobs/panel/cards/BackupJobsBackedUpVmsCard.vue | 173 + .../jobs/panel/cards/BackupJobsTargetsCard.vue | 48 + .../panel/cards/BackupSourceRepositoryCard.vue | 42 + .../host/dashboard/HostDashboardPatches.vue | 111 + .../pool/dashboard/PoolDashboardStatus.vue | 8 +- .../pool/dashboard/alarms/PoolDashboardAlarms.vue | 85 - .../components/site/backups/BackupJobsTable.vue | 238 -- .../src/components/site/dashboard/AlarmLink.vue | 83 - .../web/src/components/site/dashboard/Alarms.vue | 80 - .../web/src/components/tree/SiteTreeList.vue | 24 +- @xen-orchestra/web/src/main.ts | 1 + @xen-orchestra/web/src/pages/(site)/backups.vue | 32 +- @xen-orchestra/web/src/pages/(site)/dashboard.vue | 7 +- .../web/src/pages/host/[id]/dashboard.vue | 24 + .../web/src/pages/pool/[id]/dashboard.vue | 21 +- @xen-orchestra/web/src/pages/vm/[id]/backups.vue | 29 +- @xen-orchestra/web/src/pages/vm/[id]/dashboard.vue | 17 + @xen-orchestra/web/src/pages/vm/new.vue | 6 +- .../remote-resources/use-xo-alarm-collection.ts | 3 +- .../use-xo-backup-job-collection.ts | 57 +- .../use-xo-backup-log-collection.ts | 2 +- .../src/remote-resources/use-xo-br-collection.ts | 13 + .../use-xo-host-alarms-collection.ts | 18 + .../use-xo-host-missing-patches-collection.ts | 11 + .../use-xo-metadata-backup-job-collection.ts | 13 - .../use-xo-mirror-backup-job-collection.ts | 13 - .../remote-resources/use-xo-proxy-collection.ts | 13 + .../remote-resources/use-xo-schedule-collection.ts | 2 +- .../src/remote-resources/use-xo-sr-collection.ts | 2 +- .../use-xo-vm-alarms-collection.ts | 18 + .../use-xo-vm-backup-job-collection.ts | 19 - .../src/remote-resources/use-xo-vm-collection.ts | 2 +- @xen-orchestra/web/src/types/xo/backup-log.type.ts | 2 + @xen-orchestra/web/src/types/xo/br.type.ts | 11 + @xen-orchestra/web/src/types/xo/index.ts | 4 + .../web/src/types/xo/metadata-backup-job.type.ts | 33 +- .../web/src/types/xo/mirror-backup-job.type.ts | 33 +- @xen-orchestra/web/src/types/xo/new-vm.type.ts | 2 +- @xen-orchestra/web/src/types/xo/proxy.type.ts | 13 + .../web/src/types/xo/vm-backup-job.type.ts | 37 +- @xen-orchestra/web/src/utils/pattern.util.ts | 42 + @xen-orchestra/web/vite.config.ts | 8 + @xen-orchestra/xapi/disks/Xapi.mjs | 23 +- @xen-orchestra/xapi/package.json | 2 +- CHANGELOG.md | 83 +- CHANGELOG.unreleased.md | 85 + docs/docs/manage_infrastructure.md | 78 +- docs/docs/object-storage-support.md | 37 + docs/docs/users.md | 11 +- docs/docs/xoa.md | 2 +- docs/sidebars.ts | 1 + packages/vhd-cli/package.json | 2 +- .../disk-consumer/DiskConsumerVhdDirectory.mjs | 4 +- packages/vhd-lib/package.json | 6 +- packages/xo-server-auth-saml/package.json | 4 +- packages/xo-server-auth-saml/src/index.js | 20 +- packages/xo-server-sdn-controller/package.json | 4 +- packages/xo-server-sdn-controller/src/index.js | 165 +- .../src/openflow-controller.js | 16 + .../src/openflow-plugin.js | 115 + .../src/protocol/openflow-channel.js | 4 +- packages/xo-server/config.toml | 3 + packages/xo-server/package.json | 12 +- packages/xo-server/src/index.mjs | 2 +- packages/xo-server/src/xo-mixins/rest-api.mjs | 910 +---- packages/xo-server/src/xo-mixins/subjects.mjs | 11 +- packages/xo-server/src/xo-mixins/vmware/index.mjs | 5 +- packages/xo-web/package.json | 2 +- packages/xo-web/src/common/copiable/index.css | 2 +- packages/xo-web/src/common/copiable/index.js | 16 +- packages/xo-web/src/common/form/toggle.js | 10 +- packages/xo-web/src/common/intl/messages.js | 5 + .../xo-web/src/xo-app/hub/recipes/recipe-ev.js | 4 + .../src/xo-app/hub/recipes/recipe-form-ev.js | 31 +- packages/xo-web/src/xo-app/new-vm/index.js | 3 +- packages/xo-web/src/xo-app/pool/tab-advanced.js | 66 +- packages/xo-web/src/xo-app/vm/action-bar.js | 12 +- packages/xo-web/src/xo-app/vm/tab-network.js | 2 +- yarn.lock | 3606 ++++++++++---------- 289 files changed, 9224 insertions(+), 5148 deletions(-) create mode 100644 @xen-orchestra/disk-transform/src/Throttled.mts create mode 100644 @xen-orchestra/disk-transform/src/Timeout.mts delete mode 100644 @xen-orchestra/lite/docs/modals.md delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/ModalApproveButton.vue delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/ModalCloseIcon.vue delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/ModalContainer.vue delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/ModalDeclineButton.vue delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/ModalList.vue delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/ModalListItem.vue delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/UiModal.vue delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/layouts/BasicModalLayout.vue delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/layouts/ConfirmModalLayout.vue delete mode 100644 @xen-orchestra/lite/src/components/ui/modals/layouts/FormModalLayout.vue delete mode 100644 @xen-orchestra/lite/src/composables/modal.composable.ts delete mode 100644 @xen-orchestra/lite/src/stores/modal.store.ts delete mode 100644 @xen-orchestra/lite/src/stories/modals/layouts/basic-modal-layout.story.md delete mode 100644 @xen-orchestra/lite/src/stories/modals/layouts/basic-modal-layout.story.vue delete mode 100644 @xen-orchestra/lite/src/stories/modals/layouts/confirm-modal-layout.story.md delete mode 100644 @xen-orchestra/lite/src/stories/modals/layouts/confirm-modal-layout.story.vue delete mode 100644 @xen-orchestra/lite/src/stories/modals/layouts/form-modal-layout.story.md delete mode 100644 @xen-orchestra/lite/src/stories/modals/layouts/form-modal-layout.story.vue delete mode 100644 @xen-orchestra/lite/src/stories/modals/modal-container.story.md delete mode 100644 @xen-orchestra/lite/src/stories/modals/modal-container.story.vue create mode 100644 @xen-orchestra/rest-api/src/open-api/oa-examples/pbd.oa-example.mts create mode 100644 @xen-orchestra/rest-api/src/pbds/pbd.controller.mts delete mode 100644 @xen-orchestra/rest-api/src/tasks/task.service.mts create mode 100644 @xen-orchestra/rest-api/src/users/user.middleware.mts create mode 100644 @xen-orchestra/web-core/docs/modals.md create mode 100644 @xen-orchestra/web-core/lib/components/modal/VtsModal.vue create mode 100644 @xen-orchestra/web-core/lib/components/modal/VtsModalButton.vue create mode 100644 @xen-orchestra/web-core/lib/components/modal/VtsModalCancelButton.vue create mode 100644 @xen-orchestra/web-core/lib/components/modal/VtsModalConfirmButton.vue create mode 100644 @xen-orchestra/web-core/lib/components/modal/VtsModalList.vue create mode 100644 @xen-orchestra/web-core/lib/components/ui/modal/UiModal.vue create mode 100644 @xen-orchestra/web-core/lib/packages/modal/ModalProvider.vue create mode 100644 @xen-orchestra/web-core/lib/packages/modal/README.md create mode 100644 @xen-orchestra/web-core/lib/packages/modal/create-modal-opener.ts create mode 100644 @xen-orchestra/web-core/lib/packages/modal/modal.store.ts create mode 100644 @xen-orchestra/web-core/lib/packages/modal/types.ts create mode 100644 @xen-orchestra/web-core/lib/packages/modal/use-modal.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/README.md create mode 100644 @xen-orchestra/web-core/lib/packages/table/apply-extensions.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/define-columns.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/define-renderer/define-table-cell-renderer.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/define-renderer/define-table-renderer.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/define-renderer/define-table-row-renderer.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/define-renderer/define-table-section-renderer.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/define-table/define-multi-source-table.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/define-table/define-table.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/define-table/define-typed-table.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/index.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/transform-sources.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/types/extensions.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/types/index.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/types/table-cell.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/types/table-row.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/types/table-section.ts create mode 100644 @xen-orchestra/web-core/lib/packages/table/types/table.ts create mode 100644 @xen-orchestra/web-core/lib/types/value-matcher.d.ts create mode 100644 @xen-orchestra/web-core/lib/types/vue-virtual-scroller.d.ts create mode 100644 @xen-orchestra/web-core/lib/utils/speed.util.ts create mode 100644 @xen-orchestra/web-core/lib/utils/to-computed.util.ts rename @xen-orchestra/web/src/components/{pool/dashboard => }/alarms/AlarmLink.vue (100%) create mode 100644 @xen-orchestra/web/src/components/alarms/DashboardAlarms.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/BackupJobsSidePanel.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards-items/BackupJobsSmartModePools.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards-items/BackupJobsSmartModeTags.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards-items/BackupJobsTargetsBrItem.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards-items/BackupJobsTargetsSection.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards-items/BackupJobsTargetsSrItem.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards-items/BackupRunItem.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards/BackupJobInfosCard.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards/BackupJobLogsCard.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards/BackupJobSchedulesCard.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards/BackupJobSettingsCard.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards/BackupJobsBackedUpPoolsCard.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards/BackupJobsBackedUpVmsCard.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards/BackupJobsTargetsCard.vue create mode 100644 @xen-orchestra/web/src/components/backups/jobs/panel/cards/BackupSourceRepositoryCard.vue create mode 100644 @xen-orchestra/web/src/components/host/dashboard/HostDashboardPatches.vue delete mode 100644 @xen-orchestra/web/src/components/pool/dashboard/alarms/PoolDashboardAlarms.vue delete mode 100644 @xen-orchestra/web/src/components/site/backups/BackupJobsTable.vue delete mode 100644 @xen-orchestra/web/src/components/site/dashboard/AlarmLink.vue delete mode 100644 @xen-orchestra/web/src/components/site/dashboard/Alarms.vue create mode 100644 @xen-orchestra/web/src/remote-resources/use-xo-br-collection.ts create mode 100644 @xen-orchestra/web/src/remote-resources/use-xo-host-alarms-collection.ts create mode 100644 @xen-orchestra/web/src/remote-resources/use-xo-host-missing-patches-collection.ts delete mode 100644 @xen-orchestra/web/src/remote-resources/use-xo-metadata-backup-job-collection.ts delete mode 100644 @xen-orchestra/web/src/remote-resources/use-xo-mirror-backup-job-collection.ts create mode 100644 @xen-orchestra/web/src/remote-resources/use-xo-proxy-collection.ts create mode 100644 @xen-orchestra/web/src/remote-resources/use-xo-vm-alarms-collection.ts delete mode 100644 @xen-orchestra/web/src/remote-resources/use-xo-vm-backup-job-collection.ts create mode 100644 @xen-orchestra/web/src/types/xo/br.type.ts create mode 100644 @xen-orchestra/web/src/types/xo/proxy.type.ts create mode 100644 @xen-orchestra/web/src/utils/pattern.util.ts create mode 100644 docs/docs/object-storage-support.md create mode 100644 packages/xo-server-sdn-controller/src/openflow-controller.js create mode 100644 packages/xo-server-sdn-controller/src/openflow-plugin.js Clearing directories... Installing... yarn install v1.22.22 [1/5] Validating package.json... [2/5] Resolving packages... [3/5] Fetching packages... [4/5] Linking dependencies... [5/5] Building fresh packages... $ husky install husky - Git hooks installed Done in 40.48s. yarn run v1.22.22 $ TURBO_TELEMETRY_DISABLED=1 turbo run build --filter xo-server --filter xo-server-'*' --filter xo-web • Packages in scope: xo-server, xo-server-audit, xo-server-auth-github, xo-server-auth-google, xo-server-auth-ldap, xo-server-auth-oidc, xo-server-auth-saml, xo-server-backup-reports, xo-server-load-balancer, xo-server-netbox, xo-server-perf-alert, xo-server-sdn-controller, xo-server-test-plugin, xo-server-transport-email, xo-server-transport-icinga2, xo-server-transport-nagios, xo-server-transport-slack, xo-server-transport-xmpp, xo-server-usage-report, xo-server-web-hooks, xo-web • Running build in 21 packages • Remote caching disabled Tasks: 30 successful, 30 total Cached: 0 cached, 30 total Time: 1m25.652s Done in 86.03s. Updated version 5.190.1 / 5.187.0 Updated commit d829816f62bffe16b19d8d0cfc3f08841aed10df 2025-10-16 16:47:01 +0200 Checking plugins... Ignoring xo-server-test plugin Cleanup plugins... Restarting xo-server... -
Then I can't tell if there's any modification made, so I would ask to:
- Try with XOA (even XOA Free allows adding host to a pool)
- Make a clean source install from scratch following our doc https://docs.xen-orchestra.com/installation#from-the-sources
Alternatively/in parallel, you can open a ticket in the Jarli01 Github repo to report the issue.
-
Just tried after doing a force clean install, still getting same error. Going to look into it more if there is not any
root@xoa:/home/fpcuser# sudo curl https://raw.githubusercontent.com/Jarli01/xenorchestra_updater/master/xo-update.sh | bash -s -- -f | tee xenrebuild.log % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 6896 100 6896 0 0 39116 0 --:--:-- --:--:-- --:--:-- 39181 installed : v24.11.1 (with npm 11.6.2) Stopping xo-server... Checking for Yarn package... Checking for Yarn update... E: Malformed entry 1 in list file /etc/apt/sources.list.d/yarn.list (URI parse) E: The list of sources could not be read. E: Malformed entry 1 in list file /etc/apt/sources.list.d/yarn.list (URI parse) E: The list of sources could not be read. Checking for missing dependencies... Checking for Repo change... Checking xen-orchestra... Current branch master Current version 5.192.1 / 5.189.0 Current commit 6cfefc91e47db7fb264705bc2def1f1b70bc537b 2025-11-12 18:01:41 +0100 0 updates available Updating from source... No local changes to save No stash entries found. Already up to date. Clearing directories... Installing... yarn install v1.22.22 (node:1226553) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities. (Use `node --trace-deprecation ...` to show where the warning was created) [1/5] Validating package.json... [2/5] Resolving packages... success Already up-to-date. $ husky install husky - Git hooks installed Done in 1.57s. yarn run v1.22.22 $ TURBO_TELEMETRY_DISABLED=1 turbo run build --filter xo-server --filter xo-server-'*' --filter xo-web turbo 2.5.8 • Packages in scope: xo-server, xo-server-audit, xo-server-auth-github, xo-server-auth-google, xo-server-auth-ldap, xo-server-auth-oidc, xo-server-auth-saml, xo-server-backup-reports, xo-server-load-balancer, xo-server-netbox, xo-server-perf-alert, xo-server-sdn-controller, xo-server-test-plugin, xo-server-transport-email, xo-server-transport-icinga2, xo-server-transport-nagios, xo-server-transport-slack, xo-server-transport-xmpp, xo-server-usage-report, xo-server-web-hooks, xo-web • Running build in 21 packages • Remote caching disabled Tasks: 30 successful, 30 total Cached: 30 cached, 30 total Time: 1.347s >>> FULL TURBO Done in 1.55s. Updated version 5.192.1 / 5.189.0 Updated commit 6cfefc91e47db7fb264705bc2def1f1b70bc537b 2025-11-12 18:01:41 +0100 Checking plugins... Ignoring xo-server-test plugin Cleanup plugins... Restarting xo-server...So then I updated our seperate vm for xoa that we have used in the past for requests like this, and I am getting this behavior

pool.mergeInto { "sources": [ "e4cf2039-3547-6574-0e10-96f9d91316f0" ], "target": "38aea760-cf23-927c-ccf5-90969681e04b", "force": true } { "code": "POOL_JOINING_SM_FEATURES_INCOMPATIBLE", "params": [ "OpaqueRef:151858ec-cd9b-44f5-9cc5-f053685b1b8e", "" ], "call": { "duration": 2049, "method": "pool.join_force", "params": [ "* session id *", "10.2.0.10", "root", "* obfuscated *" ] }, "message": "POOL_JOINING_SM_FEATURES_INCOMPATIBLE(OpaqueRef:151858ec-cd9b-44f5-9cc5-f053685b1b8e, )", "name": "XapiError", "stack": "XapiError: POOL_JOINING_SM_FEATURES_INCOMPATIBLE(OpaqueRef:151858ec-cd9b-44f5-9cc5-f053685b1b8e, ) at Function.wrap (file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/_XapiError.mjs:16:12) at file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/transports/json-rpc.mjs:38:21 at runNextTicks (node:internal/process/task_queues:60:5) at processImmediate (node:internal/timers:454:9) at process.callbackTrampoline (node:internal/async_hooks:130:17)" }
-
After installing packages: https://docs.xcp-ng.org/xostor/#how-to-add-a-new-host-or-fix-a-badly-configured-host
Now I am getting the following on offical
pool.mergeInto { "sources": [ "e4cf2039-3547-6574-0e10-96f9d91316f0" ], "target": "38aea760-cf23-927c-ccf5-90969681e04b", "force": true } { "code": "INTERNAL_ERROR", "params": [ "Stunnel.Stunnel_verify_error(\"1416F086:SSL routines:tls_process_server_certificate:certificate verify failed\")" ], "call": { "duration": 3104, "method": "pool.join_force", "params": [ "* session id *", "10.2.0.10", "root", "* obfuscated *" ] }, "message": "INTERNAL_ERROR(Stunnel.Stunnel_verify_error(\"1416F086:SSL routines:tls_process_server_certificate:certificate verify failed\"))", "name": "XapiError", "stack": "XapiError: INTERNAL_ERROR(Stunnel.Stunnel_verify_error(\"1416F086:SSL routines:tls_process_server_certificate:certificate verify failed\")) at Function.wrap (file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/_XapiError.mjs:16:12) at file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/transports/json-rpc.mjs:38:21 at runNextTicks (node:internal/process/task_queues:60:5) at processImmediate (node:internal/timers:454:9) at process.callbackTrampoline (node:internal/async_hooks:130:17)" }And still getting this on source install
pool.mergeInto { "sources": [ "e4cf2039-3547-6574-0e10-96f9d91316f0" ], "target": "38aea760-cf23-927c-ccf5-90969681e04b", "force": true } { "message": "app.getLicenses is not a function", "name": "TypeError", "stack": "TypeError: app.getLicenses is not a function at enforceHostsHaveLicense (file:///opt/xen-orchestra/packages/xo-server/src/xo-mixins/pool.mjs:15:30) at Pools.apply (file:///opt/xen-orchestra/packages/xo-server/src/xo-mixins/pool.mjs:80:13) at Pools.mergeInto (/opt/xen-orchestra/node_modules/golike-defer/src/index.js:85:19) at Xo.mergeInto (file:///opt/xen-orchestra/packages/xo-server/src/api/pool.mjs:314:15) at Task.runInside (/opt/xen-orchestra/@vates/task/index.js:175:22) at Task.run (/opt/xen-orchestra/@vates/task/index.js:159:20) at Api.#callApiMethod (file:///opt/xen-orchestra/packages/xo-server/src/xo-mixins/api.mjs:469:18)" } -
Bummer

-


Boo
-
Check out this post for cert error not sure if its related- https://xcp-ng.org/forum/topic/9083/stunnel-sdn-cert-error-when-adding-host-to-pool/7?_=1762983691777
-
I see, it also says
name ( RO): sdn-controller-ca.pem
host ( RO): <not in database>
Like in the issue, but the file exists.[11:28 ovbh-pprod-xen05 ~]# xe certificate-list uuid ( RO) : afdd9c8e-dcae-17c7-c35c-0fd7cebd387a type ( RO): host name ( RO): host ( RO): f0cec10f-ad05-48e4-893c-414b3a3e15be not-before ( RO): 20251110T23:15:51Z not-after ( RO): 20351108T23:15:51Z fingerprint ( RO): BF:83:23:BB:7B:E9:30:DE:86:EA:9D:AF:DF:F8:BA:34:39:D0:81:AD:34:E5:C6:AB:0C:49:41:7B:4A:3C:8B:9E uuid ( RO) : b8dcd1f0-ef65-e762-f189-46bb78766c6b type ( RO): ca name ( RO): sdn-controller-ca.pem host ( RO): <not in database> not-before ( RO): 20200416T00:17:31Z not-after ( RO): 20470901T00:17:31Z fingerprint ( RO): 63:1F:89:3F:0E:1F:86:52:34:95:3C:6C:3F:9C:C8:B3:5A:61:6B:4D:EE:8F:A7:11:F0:BA:79:8B:C7:15:A0:E0 uuid ( RO) : e7daedf2-7f35-ba40-093a-e0c011d91633 type ( RO): host_internal name ( RO): host ( RO): f0cec10f-ad05-48e4-893c-414b3a3e15be not-before ( RO): 20251110T23:15:46Z not-after ( RO): 20351108T23:15:46Z fingerprint ( RO): 71:41:B0:25:88:AA:E4:56:EE:F7:A9:8E:0A:A9:FE:C5:6A:0D:D5:37:30:BF:C8:81:C2:D7:B8:20:7A:6C:7F:B7 [13:50 ovbh-pprod-xen05 ~]# ll /etc/stunnel/certs/sdn-controller-ca.pem -rw-r--r-- 1 root root 1907 Nov 12 09:45 /etc/stunnel/certs/sdn-controller-ca.pemRemoving it did not help, same error
[13:54 ovbh-pprod-xen05 ~]# xe certificate-list uuid ( RO) : afdd9c8e-dcae-17c7-c35c-0fd7cebd387a type ( RO): host name ( RO): host ( RO): f0cec10f-ad05-48e4-893c-414b3a3e15be not-before ( RO): 20251110T23:15:51Z not-after ( RO): 20351108T23:15:51Z fingerprint ( RO): BF:83:23:BB:7B:E9:30:DE:86:EA:9D:AF:DF:F8:BA:34:39:D0:81:AD:34:E5:C6:AB:0C:49:41:7B:4A:3C:8B:9E uuid ( RO) : e7daedf2-7f35-ba40-093a-e0c011d91633 type ( RO): host_internal name ( RO): host ( RO): f0cec10f-ad05-48e4-893c-414b3a3e15be not-before ( RO): 20251110T23:15:46Z not-after ( RO): 20351108T23:15:46Z fingerprint ( RO): 71:41:B0:25:88:AA:E4:56:EE:F7:A9:8E:0A:A9:FE:C5:6A:0D:D5:37:30:BF:C8:81:C2:D7:B8:20:7A:6C:7F:B7I also confirmed that all the certs for the hosts are current and not expired.