Skip to content

Added listMigrationTargetsWithChannels endpoint to return the target channels as well (jsc#SUMA-320)#11463

Open
admd wants to merge 1 commit intouyuni-project:masterfrom
admd:add-api-endpoint-to-list-target-channels
Open

Added listMigrationTargetsWithChannels endpoint to return the target channels as well (jsc#SUMA-320)#11463
admd wants to merge 1 commit intouyuni-project:masterfrom
admd:add-api-endpoint-to-list-target-channels

Conversation

@admd
Copy link
Contributor

@admd admd commented Feb 10, 2026

What does this PR change?

Added listMigrationTargetsWithChannels endpoint to return the target channels as well

It would return something like this

[
    {
       "ident": "[1894,1905,1901,1948,2066]",
       "friendly": "[base: SUSE Linux Enterprise Server 15 SP7 aarch64, addon: Server Applications Module 15 SP7 aarch64, Basesystem Module 15 SP7 aarch64, Python 3 Module 15 SP7 aarch64, Systems Management Module 15 SP7 aarch64]"
        "channel_options": [
            {
                "base_channel_name": "SLE-Product-SLES15-SP7-Pool for aarch64",
                "base_channel_label": "sle-product-sles15-sp7-pool-aarch64",
                "child_channels": [
                    {
                        "name": "SLE-Module-Basesystem15-SP7-Pool for aarch64",
                        "label": "sle-module-basesystem15-sp7-pool-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "SLE-Module-Basesystem15-SP7-Updates for aarch64",
                        "label": "sle-module-basesystem15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "SLE-Module-Python3-15-SP7-Pool for aarch64",
                        "label": "sle-module-python3-15-sp7-pool-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "SLE-Module-Python3-15-SP7-Updates for aarch64",
                        "label": "sle-module-python3-15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "SLE-Module-Server-Applications15-SP7-Pool for aarch64",
                        "label": "sle-module-server-applications15-sp7-pool-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "SLE-Module-Server-Applications15-SP7-Updates for aarch64",
                        "label": "sle-module-server-applications15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "SLE-Module-Systems-Management-15-SP7-Pool for aarch64",
                        "label": "sle-module-systems-management-15-sp7-pool-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "SLE-Module-Systems-Management-15-SP7-Updates for aarch64",
                        "label": "sle-module-systems-management-15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "SLE-Product-SLES15-SP7-Updates for aarch64",
                        "label": "sle-product-sles15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "SLE15-SP7-Installer-Updates for aarch64",
                        "label": "sle15-sp7-installer-updates-aarch64",
                        "mandatory": false
                    }
                ]
    
            },
            {
                "base_channel_name": "clm-test-SLE-Product-SLES15-SP7-Pool for aarch64",
                "base_channel_label": "clm-test-sle-product-sles15-sp7-pool-aarch64",
                "child_channels": [
                    {
                        "name": "clm-test-SLE-Module-Basesystem15-SP7-Pool for aarch64",
                        "label": "clm-test-sle-module-basesystem15-sp7-pool-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "clm-test-SLE-Module-Basesystem15-SP7-Updates for aarch64",
                        "label": "clm-test-sle-module-basesystem15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "clm-test-SLE-Module-Python3-15-SP7-Pool for aarch64",
                        "label": "clm-test-sle-module-python3-15-sp7-pool-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "clm-test-SLE-Module-Python3-15-SP7-Updates for aarch64",
                        "label": "clm-test-sle-module-python3-15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "clm-test-SLE-Module-Server-Applications15-SP7-Pool for aarch64",
                        "label": "clm-test-sle-module-server-applications15-sp7-pool-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "clm-test-SLE-Module-Server-Applications15-SP7-Updates for aarch64",
                        "label": "clm-test-sle-module-server-applications15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "clm-test-SLE-Module-Systems-Management-15-SP7-Pool for aarch64",
                        "label": "clm-test-sle-module-systems-management-15-sp7-pool-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "clm-test-SLE-Module-Systems-Management-15-SP7-Updates for aarch64",
                        "label": "clm-test-sle-module-systems-management-15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "clm-test-SLE-Product-SLES15-SP7-Updates for aarch64",
                        "label": "clm-test-sle-product-sles15-sp7-updates-aarch64",
                        "mandatory": true
                    },
                    {
                        "name": "clm-test-SLE15-SP7-Installer-Updates for aarch64",
                        "label": "clm-test-sle15-sp7-installer-updates-aarch64",
                        "mandatory": false
                    }
                ]
            }
        ],
    }
]

Codespace

Check if you already have a running container clicking on Running CodeSpace

Create CodeSpace About billing for Github Codespaces CodeSpace Billing Summary CodeSpace Limit

GUI diff

No difference.

  • DONE

Documentation

Test coverage

ℹ️ If a major new functionality is added, it is strongly recommended that tests for the new functionality are added to the Cucumber test suite

  • No tests: add explanation

  • No tests: already covered

  • Unit tests were added

  • Cucumber tests were added

  • DONE

Links

Issue(s): #
Port(s): # add downstream PR(s), if any

  • DONE

Changelogs

Make sure the changelogs entries you are adding are compliant with https://github.com/uyuni-project/uyuni/wiki/Contributing#changelogs and https://github.com/uyuni-project/uyuni/wiki/Contributing#uyuni-projectuyuni-repository

If you don't need a changelog check, please mark this checkbox:

  • No changelog needed

If you uncheck the checkbox after the PR is created, you will need to re-run changelog_test (see below)

Re-run a test

If you need to re-run a test, please mark the related checkbox, it will be unchecked automatically once it has re-run:

  • Re-run test "changelog_test"
  • Re-run test "backend_unittests_pgsql"
  • Re-run test "java_pgsql_tests"
  • Re-run test "schema_migration_test_pgsql"
  • Re-run test "susemanager_unittests"
  • Re-run test "frontend_checks"
  • Re-run test "spacecmd_unittests"

Before you merge

Check How to branch and merge properly!

@github-actions
Copy link
Contributor

👋 Hello! Thanks for contributing to our project.
Acceptance tests will take some time (aprox. 1h), please be patient ☕

You can see the progress at the end of this page and at https://github.com/uyuni-project/uyuni/pull/11463/checks
Once tests finish, if they fail, you can check 👀 the cucumber report. See the link at the output of the action.
You can also check the artifacts section, which contains the logs at https://github.com/uyuni-project/uyuni/pull/11463/checks.

If you are unsure the failing tests are related to your code, you can check the "reference jobs". These are jobs that run on a scheduled time with code from master. If they fail for the same reason as your build, it means the tests or the infrastructure are broken. If they do not fail, but yours do, it means it is related to your code.

Reference tests:

KNOWN ISSUES

Sometimes the build can fail when pulling new jar files from download.opensuse.org . This is a known limitation. Given this happens rarely, when it does, all you need to do is rerun the test. Sorry for the inconvenience.

For more tips on troubleshooting, see the troubleshooting guide.

Happy hacking!
⚠️ You should not merge if acceptance tests fail to pass. ⚠️

@admd admd requested review from mcalmer and removed request for a team February 10, 2026 17:31
@admd admd force-pushed the add-api-endpoint-to-list-target-channels branch from 72f5029 to e7c4ece Compare February 10, 2026 17:36
@admd admd changed the title Added listMigrationTargetsWithChannels endpoint to return the target channels as well Added listMigrationTargetsWithChannels endpoint to return the target channels as well (jsc#SUMA-320) Feb 10, 2026
SUSEProductExtension e3 = new SUSEProductExtension(
targetBaseProduct, targetAddonProduct, targetBaseProduct, false);
TestUtils.saveAndReload(e2);
TestUtils.saveAndReload(e3);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you're not reusing e2 and e3, TestUtils.saveAndFlush is sufficient. Otherwise you have to do e2 = TestUtils.saveAndReload(e2);

}

@Test
public void testListMigrationTargetsWithChannels() throws Exception {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test is quite long: I would split it in one or more setup phases to better highlight what you are going to test

SUSEProduct targetBaseProduct = SUSEProductTestUtils.createTestSUSEProduct(family);
Channel targetBaseChannel = SUSEProductTestUtils.createBaseChannelForBaseProduct(targetBaseProduct, admin);
targetBaseChannel.setChannelArch(ChannelFactory.findArchByLabel("channel-x86_64"));
TestUtils.saveAndReload(targetBaseChannel);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whether use TestUtils.saveAndFlush, or do targetBaseChannel = TestUtils.saveAndReload(targetBaseChannel);

sourceAddonProduct, sourceBaseChannel, admin);
SUSEProductExtension e = new SUSEProductExtension(
sourceBaseProduct, sourceAddonProduct, sourceBaseProduct, false);

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Variable "e" is never used and SonarCloud is complaining about it.
I agree that writing a line like new SUSEProductExtension( sourceAddonProduct, sourceBaseProduct, false); just because the creation of such object has a side effect makes the intent un-understantable.
So I suggest you make a "not strictly necessary" check afterwards, something like assertNotNull(e); so SonarCloud does not complain and the assignment makes sense

@admd admd force-pushed the add-api-endpoint-to-list-target-channels branch from e7c4ece to fe011a8 Compare February 11, 2026 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments