Skip to content

Harvester UI extension auto install fails #17543

@yonasberhe23

Description

@yonasberhe23

Setup

  • Rancher version: v2.15-b21af4502f56bb08d625ad322bcc34b9a6a71ab6-head / master 920680f
  • Rancher UI Extensions: Harvester 1.8.0
  • Browser type & version:

Describe the bug
When installing the Harvester UI extension from the Virtualization Management page, the install fails with:

Error installing Harvester UI extension TypeError: Cannot read properties of undefined (reading 'conditions')
    at f (uiplugins.ts:276:36)
    at async Proxy.installHarvesterExtension (harvesterhci.io.management.cluster.vue:281:11)
    at async a (harvesterhci.io.management.cluster.vue:130:24)

To Reproduce

  1. Navigate to Virtualization Management.
  2. Click Install.
  3. Open the browser DevTools console.

Result
The Harvester UI extension fails to install via the auto-install feature.

Expected Result
The Harvester UI extension install succeeds via the auto-install feature.

Screenshots

Screen.Recording.2026-05-07.at.10.54.55.AM.mov

Additional context
Related to #17159

Please reenable e2e test once this is fixed

// Re-enable once dashboard issue https://github.com/rancher/dashboard/issues/17543 is resolved
// qase(7020, it('can auto install harvester and begin process of importing a harvester cluster', () => {
// cy.get<Cypress.RancherVersion>('@rancherVersion').then((version) => {
// const catalog = harvesterExtensionCatalog(version);
// const chartRepo = catalog.repo;
// cy.intercept('POST', CLUSTER_REPOS_BASE_URL).as('createChart');
// cy.intercept('PUT', `${ CLUSTER_REPOS_BASE_URL }/${ chartRepo }`).as('updateChart');
// cy.intercept('POST', `${ CLUSTER_REPOS_BASE_URL }/${ chartRepo }?action=install`).as('installHarvesterExtension');
// cy.intercept('POST', '/v3/clusters').as('createHarvesterCluster');
// // verify install button and message displays
// harvesterPo.goTo();
// harvesterPo.waitForPage();
// harvesterPo.updateOrInstallButton().checkVisible();
// harvesterPo.extensionWarning().should('have.text', 'The Harvester UI Extension is not installed');
// // install harvester extension
// harvesterPo.updateOrInstallButton().click();
// cy.wait('@createChart', MEDIUM_TIMEOUT_OPT).its('response.statusCode').should('eq', 201);
// cy.wait('@updateChart', MEDIUM_TIMEOUT_OPT).its('response.statusCode').should('eq', 200);
// cy.wait('@installHarvesterExtension', MEDIUM_TIMEOUT_OPT);
// harvesterPo.waitForPage();
// cy.wait('@updateChart', LONG_TIMEOUT_OPT).its('response.statusCode').should('eq', 200);
// harvesterPo.extensionWarning(MEDIUM_TIMEOUT_OPT).should('not.exist');
// // verify harvester extension added to extensions page
// extensionsPo.goTo();
// extensionsPo.waitForTabs();
// extensionsPo.waitForPage(null, 'installed');
// extensionsPo.extensionCard(harvesterTitle).checkVisible();
// // verify harvester repo is added to repos list page
// appRepoList.goTo(undefined, 'manager');
// appRepoList.waitForPage();
// appRepoList.sortableTable().rowElementWithName(chartRepo).should('be.visible');
// appRepoList.list().state(chartRepo).contains('Active', LONG_TIMEOUT_OPT);
// // begin process of importing harvester cluster
// harvesterPo.goTo();
// harvesterPo.waitForPage();
// cy.wait('@updateChart', LONG_TIMEOUT_OPT);
// harvesterPo.importHarvesterClusterButton().click();
// harvesterPo.createHarvesterClusterForm().waitForPage(null, 'memberRoles');
// harvesterPo.createHarvesterClusterForm().title().should('contain', 'Harvester Cluster:');
// harvesterPo.createHarvesterClusterForm().nameNsDescription().name().set(harvesterClusterName);
// harvesterPo.createHarvesterClusterForm().nameNsDescription().description().set(`${ harvesterClusterName }-desc`);
// harvesterPo.createHarvesterClusterForm().resourceDetail().createEditView().create();
// cy.wait('@createHarvesterCluster').then(({ response }) => {
// expect(response?.statusCode).to.eq(201);
// const harvesterClusterId = response.body.id;
// const harvesterDetails = new HarvesterClusterDetailsPo(undefined, undefined, harvesterClusterId);
// harvesterDetails.waitForPage(null, 'registration');
// harvesterDetails.title().should('contain', harvesterClusterName);
// // navigate to harvester list page and verify the logo and tagline do not display after cluster created
// HarvesterClusterPagePo.navTo();
// harvesterPo.waitForPage();
// harvesterPo.list().resourceTable().sortableTable().rowWithName(harvesterClusterName)
// .checkVisible();
// harvesterPo.harvesterLogo().should('not.exist');
// harvesterPo.harvesterTagline().should('not.exist');
// // #14285: Should be able to edit cluster here
// harvesterPo.list().actionMenu(harvesterClusterName).getMenuItem('Edit Config').should('exist');
// // delete cluster
// cy.deleteRancherResource('v1', 'provisioning.cattle.io.clusters', `fleet-default/${ harvesterClusterId }`);
// });
// });
// }));

Metadata

Metadata

Labels

QA/dev-automationIssues that engineers have written automation around so QA doesn't have look at thisarea/harvesterkind/bug

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions