Project

General

Profile

Actions

action #176361

closed

coordination #169654: [epic] Create test scenarios for Agama

Add interactive installation using iscsi ibft disk

Added by JERiveraMoya 3 months ago. Updated about 1 month ago.

Status:
Resolved
Priority:
High
Assignee:
Target version:
-
Start date:
2025-01-30
Due date:
% Done:

0%

Estimated time:

Description

Motivation

Being able to run installations using iscsi disk.
In Storage/Select installation device we can connect iSCSI target in openQA by clicking on Discover. Adding only the IP (I used the one of the worker) would automatically add the target. Tweaking the option, for example putting (on boot) it will appear as Connected but it is not showed as iBFT.

Acceptance criteria

  • AC1: Check what happens with kernel parameter withiscsi=1
  • AC2: Figure out why target it is not showed as iBFT
  • AC3: Figure out what IP to add so it can run everytime from each worker
  • AC4: Automate for x86_64 but check if we can automate also for aarch64.
  • AC5: Add existing validation

Additional information

Use of kernel boot parameter in YaST installer: https://openqa.suse.de/tests/16583524#step/bootloader_start/9
Rest of the settings seems not needed, like IBFT (but better double-check!)

Actions #1

Updated by JERiveraMoya 3 months ago

  • Tags changed from qe-yam-jan-sprint-fy25 to qe-yam-feb-sprint-fy25
Actions #2

Updated by zoecao 3 months ago

  • Status changed from Workable to In Progress
  • Assignee set to zoecao
Actions #3

Updated by zoecao 3 months ago

Downloaded a agama build5.1 media locally, and started to do an interactive installation with iscsi ibft disk manually.

Actions #4

Updated by zoecao 2 months ago ยท Edited

Learnt to generate puppeter codes through browser. Creating pages for storage/change pages.

const puppeteer = require('puppeteer'); // v23.0.0 or later

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    const timeout = 5000;
    page.setDefaultTimeout(timeout);

    {
        const targetPage = page;
        await targetPage.setViewport({
            width: 591,
            height: 636
        })
    }
    {
        const targetPage = page;
        await targetPage.goto('https://ip/#/storage');
    }
    {
        const targetPage = page;
        await puppeteer.Locator.race([
            targetPage.locator('::-p-aria(Installation device[role=\\"region\\"]) >>>> ::-p-aria(Change)'),
            targetPage.locator('div.pf-m-fill > div > div:nth-of-type(2) a'),
            targetPage.locator('::-p-xpath(//*[@id=\\"root\\"]/div/div[2]/div/div/div[1]/div/main/div/div[2]/div/div[2]/div/div[1]/section/div[3]/div/a)'),
            targetPage.locator(':scope >>> div.pf-m-fill > div > div:nth-of-type(2) a')
        ])
            .setTimeout(timeout)
            .click({
              offset: {
                x: 46,
                y: 17.86456298828125,
              },
            });
    }
    {
        const targetPage = page;
        await puppeteer.Locator.race([
            targetPage.locator('span.pf-v5-c-menu-toggle__text'),
            targetPage.locator('::-p-xpath(//*[@id=\\"targetSelection\\"]/section[2]/div/div/div/div[3]/button/span[1])'),
            targetPage.locator(':scope >>> span.pf-v5-c-menu-toggle__text'),
            targetPage.locator('::-p-text(storage techs)')
        ])
            .setTimeout(timeout)
            .click({
              offset: {
                x: 28.90625,
                y: 11.229156494140625,
              },
            });
    }
    {
        const targetPage = page;
        await puppeteer.Locator.race([
            targetPage.locator('span.pf-v5-c-menu__item-main > span'),
            targetPage.locator('::-p-xpath(//*[@id=\\"storage-tech-menu\\"]/div/ul/li/a/span[1]/span)'),
            targetPage.locator(':scope >>> span.pf-v5-c-menu__item-main > span')
        ])
            .setTimeout(timeout)
            .click({
              offset: {
                x: 21.666656494140625,
                y: 16.7916259765625,
              },
            });
    }
    {
        const targetPage = page;
        await puppeteer.Locator.race([
            targetPage.locator('::-p-aria(Discover iSCSI targets)'),
            targetPage.locator('div.pf-m-fill > div > div:nth-of-type(2) button'),
            targetPage.locator('::-p-xpath(//*[@id=\\"root\\"]/div/div[2]/div/div/div[1]/div/main/div/div[2]/div/div[2]/section/div[2]/div/button)'),
            targetPage.locator(':scope >>> div.pf-m-fill > div > div:nth-of-type(2) button'),
            targetPage.locator('::-p-text(Discover iSCSI)')
        ])
            .setTimeout(timeout)
            .click({
              offset: {
                x: 227,
                y: 24.791656494140625,
              },
            });
    }

    await browser.close();

})().catch(err => {
    console.error(err);
    process.exit(1);
});
Actions #5

Updated by zoecao 2 months ago

For AC1: Check what happens with kernel parameter withiscsi=1
I'm not sure whether my understand is correct or not, I added withiscsi=1 to kernel parameter in openqa testing, didn't find any difference:
openqa-clone-job --from http://openqa.suse.de --host http://openqa.suse.de 16663110 --skip-download --apikey XXXXXXXXXXXXXXXX --apisecret XXXXXXXXXXXXXXXX _GROUP=0 BUILD=chcao_176361 TEST=sles_iscsi_test EXTRABOOTPARAMS='live.password=xxxxxxx console=ttyS0 console=tty kernel.softlockup_panic=1 agama.install_url=http://openqa.suse.de/assets/repo/SLES-Packages-16.0-x86_64-Build5.1/ withiscsi=1'
Job: https://openqa.suse.de/tests/16770347
So still need to add the iscsi configs to the installation.

Actions #6

Updated by zoecao 2 months ago

[AC4][AC5]: PRs for automation testing:
https://github.com/jknphy/agama-integration-test-webpack/pull/80
https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/21278/files
Need to run some vrs to check ip for [AC3], the VRs are not ready, still need to think about where to add the ip address.
VRs: https://openqa.suse.de/tests/overview?version=16.0&distri=sle&build=chcao_176361

Actions #7

Updated by zoecao 2 months ago

Found the reason why validation failed: the system didn't install the system to iscsi disk, the current configuration lacks a few steps, will update the PR.

Actions #8

Updated by JERiveraMoya about 2 months ago

  • Tags changed from qe-yam-feb-sprint-fy25 to qe-yam-mar-sprint-fy25
Actions #9

Updated by zoecao about 2 months ago

Update the latest status here:
The latest VR:
https://openqa.suse.de/tests/16936234#step/ibft/46

  1. It seems no need to submit PR to jknphy/agama-integration-test-webpack#main, the installation works fine by adding some settings only. SO I'll close this [pr]
  2. packages of lsscsi and hdparm are not pre-installed, from the confluence page (https://confluence.suse.com/display/SLES16/Request+to+add+packages+to+SLES+16): As SLES 16 is a new code-base, patterns and package lists have been reviewed. It's our goal to reduce the number of supported packages and not offer different alternatives.
    "If it's available but not pre-installed, state why it should be pre-installed"
    "Saying it was in 15 is not good enough!"
    No special reason to make it pre-installed, so current workaround it to install them in testing. (will double confirm it by asking it in eng-testing channel)
  3. Investigated the current failure: https://openqa.suse.de/tests/16936234#step/ibft/46, maybe a bug in 'grep', with command " grep -r CONFIG_ISCSI_IBFT=m /boot/* " would work fine.
Actions #10

Updated by zoecao about 2 months ago

Filed the bug of grep for the validation testing:
[bsc#1238483]
Will add the testsuite to the two groups.

Actions #11

Updated by JERiveraMoya about 2 months ago

zoecao wrote in #note-10:

Filed the bug of grep for the validation testing:
[bsc#1238483]
Will add the testsuite to the two groups.

could you please add some screenshot about how does it look the UI inspecting the partitioning, I remember that the iBFT wasn't displayed properly (AC2).

Actions #12

Updated by zoecao about 2 months ago

To update status here:

BTW, the installation is changed to unattended installation:
https://suse.slack.com/archives/C02CLB2LB7Z/p1741160672925249
And running the latest VR with a PR update of adding soft_failure of packages not pre-installed.

Actions #13

Updated by zoecao about 2 months ago

Actions #14

Updated by zoecao about 2 months ago

Will add testsuits to the groups after PR is merged.
PR: https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/21278

Actions #15

Updated by JERiveraMoya about 2 months ago

Automation should fail showing that ibft is not present, we might not know exactly how it would be showed or if it would be showed at all in Agama logs, but shouldn't fail with errors where the problem is that we haven't adapted the automation. Most likely the developer doesn't know how it will be displayed in the future, so let's reach that point where the automation failure is clear and we can merge this.

Actions #16

Updated by JERiveraMoya about 1 month ago

Merged, let's setup the test suite in prod/development.

Actions #17

Updated by zoecao about 1 month ago

  • Status changed from In Progress to Resolved

The PR was merged, and added the test suite of sles_iscsi_ibft_unattended to prod and devel groups, and triggered the testsuites, will keep eyes on the results latter. Resolve here now, thanks.

Actions

Also available in: Atom PDF