diff --git a/.gitignore b/.gitignore index 5efef74..3dc1fcd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/deps-pkgs-6.tar.gz -SOURCES/leapp-repository-0.16.0.tar.gz +SOURCES/deps-pkgs-7.tar.gz +SOURCES/leapp-repository-0.17.0.tar.gz diff --git a/.leapp-repository.metadata b/.leapp-repository.metadata index f61e49c..9f0e332 100644 --- a/.leapp-repository.metadata +++ b/.leapp-repository.metadata @@ -1,2 +1,2 @@ -a5100971d63814c213c5245181891329578baf8d SOURCES/deps-pkgs-6.tar.gz -2bcc851f1344107581096a6b564375c440a4df4a SOURCES/leapp-repository-0.16.0.tar.gz +4886551d9ee2259cdfbd8d64a02d0ab9a381ba3d SOURCES/deps-pkgs-7.tar.gz +cbb3e6025c6567507d3bc317731b4c2f0a0eb872 SOURCES/leapp-repository-0.17.0.tar.gz diff --git a/SOURCES/0001-Update-welcome-message.patch b/SOURCES/0001-Update-welcome-message.patch deleted file mode 100644 index 94adcdb..0000000 --- a/SOURCES/0001-Update-welcome-message.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 7c9ea115a68530eb25f5c23d3fcadd60c501bf78 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Wed, 23 Mar 2022 12:23:59 +0100 -Subject: [PATCH 01/39] Update welcome message - -A necessary change that should finally represent the changes of -the previous quarters: several jobs disablement and new CI -introduction. -No more e2e and internal copr build jobs, /rerun command finally -documented. - -OAMG-5822 ---- - .github/workflows/pr-welcome-msg.yml | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/.github/workflows/pr-welcome-msg.yml b/.github/workflows/pr-welcome-msg.yml -index 40f8bba6..a259dc55 100644 ---- a/.github/workflows/pr-welcome-msg.yml -+++ b/.github/workflows/pr-welcome-msg.yml -@@ -20,9 +20,13 @@ jobs: - body: | - ## **Thank you for contributing to the Leapp project!** - Please note that every PR needs to comply with the [Leapp Guidelines](https://leapp.readthedocs.io/en/latest/contributing.html#) and must pass all tests in order to be mergable. -- If you want to re-run tests or request review, you can use following commands as a comment: -- - **leapp-ci build** to run copr build and e2e tests in **OAMG CI** -+ If you want to request a review or rebuild a package in copr, you can use following commands as a comment: - - **review please** to notify leapp developers of review request -+ - **/packit copr-build** to submit a public copr build using packit -+ -+ To launch regression testing public members of oamg organization can leave the following comment: -+ - **/rerun** to schedule tests using this pr build and leapp*master* as artifacts -+ - **/rerun 42** to schedule tests using this pr build and leapp*PR42* as artifacts - - Please [open ticket](https://url.corp.redhat.com/oamg-ci-issue) in case you experience technical problem with the CI. (RH internal only) - --- -2.35.3 - diff --git a/SOURCES/0002-Fix-linting-violations.patch b/SOURCES/0002-Fix-linting-violations.patch deleted file mode 100644 index 39b2741..0000000 --- a/SOURCES/0002-Fix-linting-violations.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 44af150b6112cfd4a6d09757e0d7df64f31e8527 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Tue, 29 Mar 2022 15:09:20 +0200 -Subject: [PATCH 02/39] Fix linting violations - -used-before-assignment is a nice check worth keeping, so let's -fix occurencies in commands.upgrade.util code and vstpdconfigread. -As is the modified-iterating-list, so this patch fixes appropriately -cupsscanner actor's included_directive_check. ---- - commands/upgrade/util.py | 2 +- - .../cupsscanner/libraries/cupsscanner.py | 18 +++++++++++++----- - .../libraries/config_parser.py | 10 +++++----- - .../test_config_parser_vsftpdconfigread.py | 8 ++++++-- - 4 files changed, 25 insertions(+), 13 deletions(-) - -diff --git a/commands/upgrade/util.py b/commands/upgrade/util.py -index 75ffa6a6..22466ab7 100644 ---- a/commands/upgrade/util.py -+++ b/commands/upgrade/util.py -@@ -20,8 +20,8 @@ def disable_database_sync(): - def disable_db_sync_decorator(f): - @functools.wraps(f) - def wrapper(*args, **kwargs): -+ saved = os.environ.get('LEAPP_DEVEL_DATABASE_SYNC_OFF', None) - try: -- saved = os.environ.get('LEAPP_DEVEL_DATABASE_SYNC_OFF', None) - os.environ['LEAPP_DEVEL_DATABASE_SYNC_OFF'] = '1' - return f(*args, **kwargs) - finally: -diff --git a/repos/system_upgrade/el7toel8/actors/cupsscanner/libraries/cupsscanner.py b/repos/system_upgrade/el7toel8/actors/cupsscanner/libraries/cupsscanner.py -index 742d1e44..bc65c458 100644 ---- a/repos/system_upgrade/el7toel8/actors/cupsscanner/libraries/cupsscanner.py -+++ b/repos/system_upgrade/el7toel8/actors/cupsscanner/libraries/cupsscanner.py -@@ -93,21 +93,29 @@ def include_directive_check(read_func=_read_file): - included_files = ['/etc/cups/cupsd.conf'] - error_list = [] - -- for included_file in included_files: -+ vetted_included_files = [] -+ while included_files: -+ # NOTE(ivasilev) Will be using stack to process last encountered include directives first -+ included_file = included_files.pop(-1) - try: - lines = read_func(included_file) - except IOError: - error_list.append('Error during reading file {}: file not' - ' found'.format(included_file)) -- included_files.remove(included_file) - continue -- -+ # Append to the resulting list of vetted files if exception wasn't raised -+ vetted_included_files.append(included_file) -+ # Mark any other included file you find as need-to-be-validated -+ includes_to_process = [] - for line in lines: - value = get_directive_value('Include', line) - if value: -- included_files.append(value) -+ includes_to_process.append(value) -+ # NOTE(ivasilev) Add discovered Include directives to the stack in reversed order, so that they are processed -+ # in the same order they appeared in the file -+ included_files.extend(reversed(includes_to_process)) - -- return (included_files, error_list) -+ return (vetted_included_files, error_list) - - - def digest_directive_check(path, read_func=_read_file): -diff --git a/repos/system_upgrade/el7toel8/actors/vsftpdconfigread/libraries/config_parser.py b/repos/system_upgrade/el7toel8/actors/vsftpdconfigread/libraries/config_parser.py -index 395786f2..a7a6c179 100644 ---- a/repos/system_upgrade/el7toel8/actors/vsftpdconfigread/libraries/config_parser.py -+++ b/repos/system_upgrade/el7toel8/actors/vsftpdconfigread/libraries/config_parser.py -@@ -94,9 +94,9 @@ class VsftpdConfigParser(object): - - def _parse_config(self, contents): - res = {} -- try: -- for (ix, line) in enumerate(contents.split('\n')): -+ for (ix, line) in enumerate(contents.split('\n')): -+ try: - self._parse_config_line(line, res) -- return res -- except ParsingError as e: -- raise ParsingError("Syntax error on line %d: %s" % (ix + 1, e)) -+ except ParsingError as e: -+ raise ParsingError("Syntax error on line %d: %s" % (ix + 1, e)) -+ return res -diff --git a/repos/system_upgrade/el7toel8/actors/vsftpdconfigread/tests/test_config_parser_vsftpdconfigread.py b/repos/system_upgrade/el7toel8/actors/vsftpdconfigread/tests/test_config_parser_vsftpdconfigread.py -index 52ee9043..b10ec4c9 100644 ---- a/repos/system_upgrade/el7toel8/actors/vsftpdconfigread/tests/test_config_parser_vsftpdconfigread.py -+++ b/repos/system_upgrade/el7toel8/actors/vsftpdconfigread/tests/test_config_parser_vsftpdconfigread.py -@@ -1,7 +1,6 @@ - import pytest - --from leapp.libraries.actor.config_parser import ParsingError, VsftpdConfigOptionParser, \ -- VsftpdConfigParser -+from leapp.libraries.actor.config_parser import ParsingError, VsftpdConfigOptionParser, VsftpdConfigParser - - - def test_VsftpdConfigOptionParser_invalid_syntax(): -@@ -66,6 +65,11 @@ def test_VsftpdConfigParser_invalid_syntax(): - with pytest.raises(ParsingError): - VsftpdConfigParser('anonymous_enable') - -+ # Make sure that line num is properly shown -+ with pytest.raises(ParsingError) as err: -+ VsftpdConfigParser('background=0\n#andthislineisalso=fine\nError on line 3') -+ assert "Syntax error on line 3" in str(err.value) -+ - - def test_VsftpdConfigParser_empty_config(): - parser = VsftpdConfigParser('') --- -2.35.3 - diff --git a/SOURCES/0003-Enable-building-leapp-repository-for-specific-chroot.patch b/SOURCES/0003-Enable-building-leapp-repository-for-specific-chroot.patch deleted file mode 100644 index 51e2775..0000000 --- a/SOURCES/0003-Enable-building-leapp-repository-for-specific-chroot.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 8c3c946501a50939b91066b772e896ca55dd4084 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Tue, 29 Mar 2022 14:58:25 +0200 -Subject: [PATCH 03/39] Enable building leapp-repository for specific chroots - only - -Instead of building for all project chroots use -r/--chroot -option to specify chroots. -Tmt-tests workflow and copr-build workflow will be passing proper -chroots now via COPR_CHROOT env var. -Also some refactoring has been done to the workflows to move all -magic constants to env section. - -OAMG-6735 ---- - .github/workflows/copr-build.yml | 3 +-- - .github/workflows/tmt-tests.yml | 14 ++++++++++---- - 2 files changed, 11 insertions(+), 6 deletions(-) - -diff --git a/.github/workflows/copr-build.yml b/.github/workflows/copr-build.yml -index c2c04a26..8252e327 100644 ---- a/.github/workflows/copr-build.yml -+++ b/.github/workflows/copr-build.yml -@@ -32,5 +32,4 @@ jobs: - EOF - - pip install copr-cli -- make copr_build -- -+ COPR_CONFIG=$COPR_CONFIG COPR_CHROOT=$COPR_CHROOT make copr_build -diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml -index 93c1dd2f..15e8a488 100644 ---- a/.github/workflows/tmt-tests.yml -+++ b/.github/workflows/tmt-tests.yml -@@ -37,8 +37,11 @@ jobs: - - - name: Trigger copr build - id: copr_build -+ env: -+ COPR_CONFIG: "copr_fedora.conf" -+ COPR_CHROOT: "epel-7-x86_64,epel-8-x86_64" - run: | -- cat << EOF > copr_fedora.conf -+ cat << EOF > $COPR_CONFIG - [copr-cli] - login = ${{ secrets.FEDORA_COPR_LOGIN }} - username = @oamg -@@ -48,7 +51,7 @@ jobs: - EOF - - pip install copr-cli -- PR=${{ steps.pr_nr.outputs.pr_nr }} COPR_CONFIG=copr_fedora.conf make copr_build | tee copr.log -+ PR=${{ steps.pr_nr.outputs.pr_nr }} COPR_CONFIG=$COPR_CONFIG COPR_CHROOT=$COPR_CHROOT make copr_build | tee copr.log - - COPR_URL=$(grep -Po 'https://copr.fedorainfracloud.org/coprs/build/\d+' copr.log) - echo "::set-output name=copr_url::${COPR_URL}" -@@ -99,8 +102,11 @@ jobs: - - name: Trigger copr build for leapp - id: copr_build_leapp - if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -+ env: -+ COPR_CONFIG: "copr_fedora.conf" -+ COPR_CHROOT: "epel-7-x86_64,epel-8-x86_64" - run: | -- cat << EOF > copr_fedora.conf -+ cat << EOF > $COPR_CONFIG - [copr-cli] - login = ${{ secrets.FEDORA_COPR_LOGIN }} - username = @oamg -@@ -110,7 +116,7 @@ jobs: - EOF - - pip install copr-cli -- PR=${{ steps.leapp_pr.outputs.leapp_pr }} COPR_CONFIG=copr_fedora.conf make copr_build | tee copr.log -+ PR=${{ steps.leapp_pr.outputs.leapp_pr }} COPR_CONFIG=$COPR_CONFIG COPR_CHROOT=$COPR_CHROOT make copr_build | tee copr.log - - COPR_URL=$(grep -Po 'https://copr.fedorainfracloud.org/coprs/build/\d+' copr.log) - echo "::set-output name=copr_url::${COPR_URL}" --- -2.35.3 - diff --git a/SOURCES/0004-Switch-to-the-official-composite-action-for-tft.patch b/SOURCES/0004-Switch-to-the-official-composite-action-for-tft.patch deleted file mode 100644 index 17d93ab..0000000 --- a/SOURCES/0004-Switch-to-the-official-composite-action-for-tft.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 9e95311904fb90615e8473cc8bf96c2d544f8428 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Wed, 30 Mar 2022 11:46:30 +0200 -Subject: [PATCH 04/39] Switch to the official composite action for tft - -Looks like phracek's github action is mature enough -https://github.com/sclorg/testing-farm-as-github-action to -perform that switch. Status update enablement is not part -of this patch. - -In order to enable wait-for-result functionality the single -tmt-tests workflow will have to be split into 2 distinct -7to8 and 8to9 workflows (to be done in following commits). -This will cause massive refactoring, probably -involving moving artifacts preparation into one workflow and -creating a specific repository_dispatch event to trigger -7to8 and 8to9 with test artifacts as inputs. - -OAMG-6493 ---- - .github/workflows/tmt-tests.yml | 46 ++++++++++++++++++++++----------- - 1 file changed, 31 insertions(+), 15 deletions(-) - -diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml -index 15e8a488..5cf21e0b 100644 ---- a/.github/workflows/tmt-tests.yml -+++ b/.github/workflows/tmt-tests.yml -@@ -140,37 +140,53 @@ jobs: - id: run_test_7to8 - env: - ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0},{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} -- uses: oamg/testing-farm-service-action@main -+ uses: sclorg/testing-farm-as-github-action@v1.2.9 - with: - # required -- tft_server: ${{ secrets.TF_ENDPOINT }} -- tft_token: ${{ secrets.TF_API_KEY }} -- compose: ${{ secrets.COMPOSE_RHEL79 }} -- artifacts: ${{ env.ARTIFACTS }} -+ api_url: ${{ secrets.TF_ENDPOINT }} -+ api_key: ${{ secrets.TF_API_KEY }} -+ git_url: 'https://gitlab.cee.redhat.com/oamg/tmt-plans' -+ github_token: ${{ secrets.GITHUB_TOKEN }} - # optional -- tests_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)" -+ tf_scope: 'private' -+ tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)" -+ compose: ${{ secrets.COMPOSE_RHEL79 }} - arch: 'x86_64' - copr: 'epel-7-x86_64' -+ copr_artifacts: ${{ env.ARTIFACTS }} - debug: ${{ secrets.ACTIONS_STEP_DEBUG }} -- test_name: '7to8' - tmt_context: 'distro=rhel-7' -+ pull_request_status_name: '7to8' -+ create_issue_comment: 'true' -+ # NOTE(ivasilev) In order to update pr status this workflow has to be massively refactored with artifacts -+ # preparation moved out to a different workflow and the rest split into 2 workflows - 7to8 and 8to9 that are -+ # triggered on a specific repository dispatch event. -+ update_pull_request_status: 'false' - - - name: Schedule regression testing for 8to9 - id: run_test_8to9 - env: - ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0},{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} -- uses: oamg/testing-farm-service-action@main -+ uses: sclorg/testing-farm-as-github-action@v1.2.9 - with: - # required -- tft_server: ${{ secrets.TF_ENDPOINT }} -- tft_token: ${{ secrets.TF_API_KEY }} -- compose: ${{ secrets.COMPOSE_RHEL86 }} -- artifacts: ${{ env.ARTIFACTS }} -+ api_url: ${{ secrets.TF_ENDPOINT }} -+ api_key: ${{ secrets.TF_API_KEY }} -+ git_url: 'https://gitlab.cee.redhat.com/oamg/tmt-plans' -+ github_token: ${{ secrets.GITHUB_TOKEN }} - # optional -- tests_regex: "^(?!.*c2r)(?!.*sap)(?!.*7to8)" -+ tf_scope: 'private' -+ tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*7to8)" -+ compose: ${{ secrets.COMPOSE_RHEL86 }} - arch: 'x86_64' - copr: 'epel-8-x86_64' -+ copr_artifacts: ${{ env.ARTIFACTS }} - debug: ${{ secrets.ACTIONS_STEP_DEBUG }} -- test_name: '8to9' -- env_vars: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_SKU=RH00069;RHSM_REPOS=rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms;LEAPP_EXEC_ENV_VARS=LEAPP_DEVEL_TARGET_PRODUCT_TYPE=beta' -+ variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_SKU=RH00069;RHSM_REPOS=rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms;LEAPP_EXEC_ENV_VARS=LEAPP_DEVEL_TARGET_PRODUCT_TYPE=beta' - tmt_context: 'distro=rhel-8' -+ pull_request_status_name: '8to9' -+ create_issue_comment: 'true' -+ # NOTE(ivasilev) In order to update pr status this workflow has to be massively refactored with artifacts -+ # preparation moved out to a different workflow and the rest split into 2 workflows - 7to8 and 8to9 that are -+ # triggered on a specific repository dispatch event. -+ update_pull_request_status: 'false' --- -2.35.3 - diff --git a/SOURCES/0005-Switch-to-semicolon-build-separator-in-tmt-tests-873.patch b/SOURCES/0005-Switch-to-semicolon-build-separator-in-tmt-tests-873.patch deleted file mode 100644 index ed1153a..0000000 --- a/SOURCES/0005-Switch-to-semicolon-build-separator-in-tmt-tests-873.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 3862be2a250964e5459eda6538b2fdb8ae1b9c39 Mon Sep 17 00:00:00 2001 -From: ina vasilevskaya -Date: Fri, 1 Apr 2022 14:16:12 +0200 -Subject: [PATCH 05/39] Switch to semicolon build separator in tmt-tests (#873) - -Official github action separates test artifacts string by ; only, -so in order to test multiple artifacts this has to land. ---- - .github/workflows/tmt-tests.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml -index 5cf21e0b..ef68830e 100644 ---- a/.github/workflows/tmt-tests.yml -+++ b/.github/workflows/tmt-tests.yml -@@ -139,7 +139,7 @@ jobs: - - name: Schedule regression testing for 7to8 - id: run_test_7to8 - env: -- ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0},{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} -+ ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0};{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} - uses: sclorg/testing-farm-as-github-action@v1.2.9 - with: - # required -@@ -166,7 +166,7 @@ jobs: - - name: Schedule regression testing for 8to9 - id: run_test_8to9 - env: -- ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0},{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} -+ ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0};{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} - uses: sclorg/testing-farm-as-github-action@v1.2.9 - with: - # required --- -2.35.3 - diff --git a/SOURCES/0006-pcidevicesscanner-Also-match-deprecation-data-agains.patch b/SOURCES/0006-pcidevicesscanner-Also-match-deprecation-data-agains.patch deleted file mode 100644 index 02a2ef8..0000000 --- a/SOURCES/0006-pcidevicesscanner-Also-match-deprecation-data-agains.patch +++ /dev/null @@ -1,70 +0,0 @@ -From b4fc2e0ae62e68dd246ed2eedda0df2a3ba90633 Mon Sep 17 00:00:00 2001 -From: Vinzenz Feenstra -Date: Fri, 1 Apr 2022 15:13:51 +0200 -Subject: [PATCH 06/39] pcidevicesscanner: Also match deprecation data against - kernel modules - -Previously when the deprecation data got introduced the kernel drivers -reported to be used by lspci have not been checked. -This patch fixes this regression. - -Signed-off-by: Vinzenz Feenstra ---- - .../libraries/pcidevicesscanner.py | 29 ++++++++++++++++++- - 1 file changed, 28 insertions(+), 1 deletion(-) - -diff --git a/repos/system_upgrade/common/actors/pcidevicesscanner/libraries/pcidevicesscanner.py b/repos/system_upgrade/common/actors/pcidevicesscanner/libraries/pcidevicesscanner.py -index 146f1a33..0f02bd02 100644 ---- a/repos/system_upgrade/common/actors/pcidevicesscanner/libraries/pcidevicesscanner.py -+++ b/repos/system_upgrade/common/actors/pcidevicesscanner/libraries/pcidevicesscanner.py -@@ -1,7 +1,13 @@ - import re - - from leapp.libraries.stdlib import api, run --from leapp.models import DetectedDeviceOrDriver, DeviceDriverDeprecationData, PCIDevice, PCIDevices -+from leapp.models import ( -+ ActiveKernelModulesFacts, -+ DetectedDeviceOrDriver, -+ DeviceDriverDeprecationData, -+ PCIDevice, -+ PCIDevices -+) - - # Regex to capture Vendor, Device and SVendor and SDevice values - PCI_ID_REG = re.compile(r"(?<=Vendor:\t|Device:\t)\w+") -@@ -82,6 +88,26 @@ def produce_detected_devices(devices): - ]) - - -+def produce_detected_drivers(devices): -+ active_modules = { -+ module.file_name -+ for message in api.consume(ActiveKernelModulesFacts) for module in message.kernel_modules -+ } -+ -+ # Create a lookup by driver_name and filter out the kernel that are active -+ entry_lookup = { -+ entry.driver_name: entry -+ for message in api.consume(DeviceDriverDeprecationData) for entry in message.entries -+ if entry.driver_name and entry.driver_name not in active_modules -+ } -+ -+ drivers = {device.driver for device in devices if device.driver in entry_lookup} -+ api.produce(*[ -+ DetectedDeviceOrDriver(**entry_lookup[driver].dump()) -+ for driver in drivers -+ ]) -+ -+ - def produce_pci_devices(producer, devices): - """ Produce a Leapp message with all PCI devices """ - producer(PCIDevices(devices=devices)) -@@ -93,4 +119,5 @@ def scan_pci_devices(producer): - pci_numeric = run(['lspci', '-vmmkn'], checked=False)['stdout'] - devices = parse_pci_devices(pci_textual, pci_numeric) - produce_detected_devices(devices) -+ produce_detected_drivers(devices) - produce_pci_devices(producer, devices) --- -2.35.3 - diff --git a/SOURCES/0007-Fix-krb5-config-not-found-error.patch b/SOURCES/0007-Fix-krb5-config-not-found-error.patch deleted file mode 100644 index 57ae617..0000000 --- a/SOURCES/0007-Fix-krb5-config-not-found-error.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 787c7144850fd4664c31b88ac734ac8bf75f4b1b Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Thu, 7 Apr 2022 11:55:53 +0200 -Subject: [PATCH 07/39] Fix krb5-config not found error - -copr-cli installation started failing on missing this dependency. ---- - .github/workflows/tmt-tests.yml | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml -index ef68830e..75768e51 100644 ---- a/.github/workflows/tmt-tests.yml -+++ b/.github/workflows/tmt-tests.yml -@@ -15,6 +15,10 @@ jobs: - && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) - runs-on: ubuntu-20.04 - steps: -+ - name: Install necessary deps -+ id: deps_install -+ run: sudo apt-get install -y libkrb5-dev -+ - - name: Get pull request number - id: pr_nr - run: | --- -2.35.3 - diff --git a/SOURCES/0008-pciscanner-Fix-2-issues-in-regards-to-pci-address-ha.patch b/SOURCES/0008-pciscanner-Fix-2-issues-in-regards-to-pci-address-ha.patch deleted file mode 100644 index c8983ef..0000000 --- a/SOURCES/0008-pciscanner-Fix-2-issues-in-regards-to-pci-address-ha.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 53ceded213ae17ca5d27268bc496e736dfea7e64 Mon Sep 17 00:00:00 2001 -From: Vinzenz Feenstra -Date: Thu, 14 Apr 2022 14:50:07 +0200 -Subject: [PATCH 08/39] pciscanner: Fix 2 issues in regards to pci address - handling - -In a previous patch, the introduction of the new handling of deprecation -data, 2 problems slipped through. - -1. The regex replacement for pci ids errornous adds an empty space - instead of empty string -2. Drivers should be matched on lspci output against the driver - deprecation data only if the pci_id is empty - -Signed-off-by: Vinzenz Feenstra ---- - .../actors/pcidevicesscanner/libraries/pcidevicesscanner.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/pcidevicesscanner/libraries/pcidevicesscanner.py b/repos/system_upgrade/common/actors/pcidevicesscanner/libraries/pcidevicesscanner.py -index 0f02bd02..eb063abb 100644 ---- a/repos/system_upgrade/common/actors/pcidevicesscanner/libraries/pcidevicesscanner.py -+++ b/repos/system_upgrade/common/actors/pcidevicesscanner/libraries/pcidevicesscanner.py -@@ -78,7 +78,7 @@ def parse_pci_devices(pci_textual, pci_numeric): - def produce_detected_devices(devices): - prefix_re = re.compile('0x') - entry_lookup = { -- prefix_re.sub(' ', entry.device_id): entry -+ prefix_re.sub('', entry.device_id): entry - for message in api.consume(DeviceDriverDeprecationData) for entry in message.entries - } - api.produce(*[ -@@ -98,7 +98,7 @@ def produce_detected_drivers(devices): - entry_lookup = { - entry.driver_name: entry - for message in api.consume(DeviceDriverDeprecationData) for entry in message.entries -- if entry.driver_name and entry.driver_name not in active_modules -+ if not entry.device_id and entry.driver_name and entry.driver_name not in active_modules - } - - drivers = {device.driver for device in devices if device.driver in entry_lookup} --- -2.35.3 - diff --git a/SOURCES/0009-Ensure-the-right-repositories-are-enabled-on-Satelli.patch b/SOURCES/0009-Ensure-the-right-repositories-are-enabled-on-Satelli.patch deleted file mode 100644 index e16ac59..0000000 --- a/SOURCES/0009-Ensure-the-right-repositories-are-enabled-on-Satelli.patch +++ /dev/null @@ -1,78 +0,0 @@ -From a1fdabea9c00a96ffc1504577f12733e1c1830ee Mon Sep 17 00:00:00 2001 -From: Evgeni Golov -Date: Thu, 7 Apr 2022 14:56:18 +0200 -Subject: [PATCH 09/39] Ensure the right repositories are enabled on Satellite - Capsules - ---- - .../actors/satellite_upgrade_facts/actor.py | 6 +++- - .../unit_test_satellite_upgrade_facts.py | 34 ++++++++++++++++++- - 2 files changed, 38 insertions(+), 2 deletions(-) - -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -index eb87cd68..fb83107e 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -@@ -129,6 +129,10 @@ class SatelliteUpgradeFacts(Actor): - modules_to_enable=modules_to_enable - ) - ) -- repositories_to_enable = ['ansible-2.9-for-rhel-8-x86_64-rpms', 'satellite-6.11-for-rhel-8-x86_64-rpms', -+ repositories_to_enable = ['ansible-2.9-for-rhel-8-x86_64-rpms', - 'satellite-maintenance-6.11-for-rhel-8-x86_64-rpms'] -+ if has_package(InstalledRPM, 'foreman'): -+ repositories_to_enable.append('satellite-6.11-for-rhel-8-x86_64-rpms') -+ else: -+ repositories_to_enable.append('satellite-capsule-6.11-for-rhel-8-x86_64-rpms') - self.produce(RepositoriesSetupTasks(to_enable=repositories_to_enable)) -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -index 5c8e79ff..e77b7b58 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -@@ -1,6 +1,14 @@ - import os - --from leapp.models import DNFWorkaround, InstalledRPM, Module, RPM, RpmTransactionTasks, SatelliteFacts -+from leapp.models import ( -+ DNFWorkaround, -+ InstalledRPM, -+ Module, -+ RepositoriesSetupTasks, -+ RPM, -+ RpmTransactionTasks, -+ SatelliteFacts -+) - from leapp.snactor.fixture import current_actor_context - - RH_PACKAGER = 'Red Hat, Inc. ' -@@ -87,3 +95,27 @@ def test_detects_remote_postgresql(current_actor_context): - assert not satellitemsg.postgresql.local_postgresql - - assert not current_actor_context.consume(DNFWorkaround) -+ -+ -+def test_enables_right_repositories_on_satellite(current_actor_context): -+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM])) -+ current_actor_context.run() -+ -+ rpmmessage = current_actor_context.consume(RepositoriesSetupTasks)[0] -+ -+ assert 'ansible-2.9-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable -+ assert 'satellite-maintenance-6.11-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable -+ assert 'satellite-6.11-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable -+ assert 'satellite-capsule-6.11-for-rhel-8-x86_64-rpms' not in rpmmessage.to_enable -+ -+ -+def test_enables_right_repositories_on_capsule(current_actor_context): -+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_PROXY_RPM])) -+ current_actor_context.run() -+ -+ rpmmessage = current_actor_context.consume(RepositoriesSetupTasks)[0] -+ -+ assert 'ansible-2.9-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable -+ assert 'satellite-maintenance-6.11-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable -+ assert 'satellite-6.11-for-rhel-8-x86_64-rpms' not in rpmmessage.to_enable -+ assert 'satellite-capsule-6.11-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable --- -2.35.3 - diff --git a/SOURCES/0010-IPU-8-9-Migrate-blacklisted-CAs-hotfix.patch b/SOURCES/0010-IPU-8-9-Migrate-blacklisted-CAs-hotfix.patch deleted file mode 100644 index c79f60d..0000000 --- a/SOURCES/0010-IPU-8-9-Migrate-blacklisted-CAs-hotfix.patch +++ /dev/null @@ -1,209 +0,0 @@ -From eeb4f99f57c67937ea562fce11fd5607470ae0a6 Mon Sep 17 00:00:00 2001 -From: Petr Stodulka -Date: Fri, 22 Apr 2022 00:20:15 +0200 -Subject: [PATCH 10/39] [IPU 8 -> 9] Migrate blacklisted CAs (hotfix) - -Preserve blacklisted certificates during the IPU 8 -> 9 - -Path for the blacklisted certificates has been changed on RHEL 9. -The original paths on RHEL 8 and older systems have been: - /etc/pki/ca-trust/source/blacklist/ - /usr/share/pki/ca-trust-source/blacklist/ -However on RHEL 9 the blacklist directory has been renamed to 'blocklist'. -So the paths are: - /etc/pki/ca-trust/source/blocklist/ - /usr/share/pki/ca-trust-source/blocklist/ -This actor moves all blacklisted certificates into the expected directories -and fix symlinks if to point to the new dirs if they originally pointed -to one of obsoleted dirs. - -Covered cases: -- covered situations with missing dirs -- covered both mentioned blacklist directories -- update symlinks in case they point to one of obsoleted directories -- remove obsoleted directories when all files migrated successfully -- execute /usr/bin/update-ca-trust in the end -- remove original a blacklist directory in case all discovered files - inside are migrated successfully -- print error logs in case of any issues so the upgrade does not - crash in case of troubles and users could deal with problems - manually after the upgrade - -The actor is not covered by unit-tests as it's just a hotfix. Follow -up works are expected to extend the problem with reports during -preupgrade phases, improve the test coverage, .... - -BZ: https://bugzilla.redhat.com/show_bug.cgi?id=2077432 -Followup ticket: CRYPTO-7097 ---- - .../actors/migrateblacklistca/actor.py | 28 ++++++ - .../libraries/migrateblacklistca.py | 89 +++++++++++++++++++ - .../tests/unit_test_migrateblacklistca.py | 25 ++++++ - 3 files changed, 142 insertions(+) - create mode 100644 repos/system_upgrade/el8toel9/actors/migrateblacklistca/actor.py - create mode 100644 repos/system_upgrade/el8toel9/actors/migrateblacklistca/libraries/migrateblacklistca.py - create mode 100644 repos/system_upgrade/el8toel9/actors/migrateblacklistca/tests/unit_test_migrateblacklistca.py - -diff --git a/repos/system_upgrade/el8toel9/actors/migrateblacklistca/actor.py b/repos/system_upgrade/el8toel9/actors/migrateblacklistca/actor.py -new file mode 100644 -index 00000000..863a0063 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/migrateblacklistca/actor.py -@@ -0,0 +1,28 @@ -+from leapp.actors import Actor -+from leapp.libraries.actor import migrateblacklistca -+from leapp.tags import ApplicationsPhaseTag, IPUWorkflowTag -+ -+ -+class MigrateBlacklistCA(Actor): -+ """ -+ Preserve blacklisted certificates during the upgrade -+ -+ Path for the blacklisted certificates has been changed on RHEL 9. -+ The original paths on RHEL 8 and older systems have been: -+ /etc/pki/ca-trust/source/blacklist/ -+ /usr/share/pki/ca-trust-source/blacklist/ -+ However on RHEL 9 the blacklist directory has been renamed to 'blocklist'. -+ So the new paths are: -+ /etc/pki/ca-trust/source/blocklist/ -+ /usr/share/pki/ca-trust-source/blocklist/ -+ This actor moves all blacklisted certificates into the expected directories -+ and fix symlinks if needed. -+ """ -+ -+ name = 'migrate_blacklist_ca' -+ consumes = () -+ produces = () -+ tags = (ApplicationsPhaseTag, IPUWorkflowTag) -+ -+ def process(self): -+ migrateblacklistca.process() -diff --git a/repos/system_upgrade/el8toel9/actors/migrateblacklistca/libraries/migrateblacklistca.py b/repos/system_upgrade/el8toel9/actors/migrateblacklistca/libraries/migrateblacklistca.py -new file mode 100644 -index 00000000..73c9d565 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/migrateblacklistca/libraries/migrateblacklistca.py -@@ -0,0 +1,89 @@ -+import os -+import shutil -+ -+from leapp.libraries.stdlib import api, CalledProcessError, run -+ -+# dict(orig_dir: new_dir) -+DIRS_CHANGE = { -+ '/etc/pki/ca-trust/source/blacklist/': '/etc/pki/ca-trust/source/blocklist/', -+ '/usr/share/pki/ca-trust-source/blacklist/': '/usr/share/pki/ca-trust-source/blocklist/' -+} -+ -+ -+def _link_src_path(filepath): -+ """ -+ Return expected target path for the symlink. -+ -+ In case the symlink points to one of dirs supposed to be migrated in this -+ actor, we need to point to the new directory instead. -+ -+ In case the link points anywhere else, keep the target path as it is. -+ """ -+ realpath = os.path.realpath(filepath) -+ for dirname in DIRS_CHANGE: -+ if realpath.startswith(dirname): -+ return realpath.replace(dirname, DIRS_CHANGE[dirname]) -+ -+ # it seems we can keep this path -+ return realpath -+ -+ -+def _migrate_file(filename, src_basedir): -+ dst_path = filename.replace(src_basedir, DIRS_CHANGE[src_basedir]) -+ if os.path.exists(dst_path): -+ api.current_logger().info( -+ 'Skipping migration of the {} certificate. The target file already exists' -+ .format(filename) -+ ) -+ return -+ os.makedirs(os.path.dirname(dst_path), mode=0o755, exist_ok=True) -+ if os.path.islink(filename): -+ # create the new symlink instead of the moving the file -+ # as the target path could be different as well -+ link_src_path = _link_src_path(filename) -+ # TODO: is the broken symlink ok? -+ os.symlink(link_src_path, dst_path) -+ os.unlink(filename) -+ else: -+ # normal file, just move it -+ shutil.move(filename, dst_path) -+ -+ -+def _get_files(dirname): -+ return run(['find', dirname, '-type', 'f,l'], split=True)['stdout'] -+ -+ -+def process(): -+ for dirname in DIRS_CHANGE: -+ if not os.path.exists(dirname): -+ # The directory does not exist; nothing to do here -+ continue -+ try: -+ blacklisted_certs = _get_files(dirname) -+ except (CalledProcessError, OSError) as e: -+ # TODO: create post-upgrade report -+ api.current_logger().error('Cannot get list of files in {}: {}.'.format(dirname, e)) -+ api.current_logger().error('Certificates under {} must be migrated manually.'.format(dirname)) -+ continue -+ failed_files = [] -+ for filename in blacklisted_certs: -+ try: -+ _migrate_file(filename, dirname) -+ except OSError as e: -+ api.current_logger().error( -+ 'Failed migration of blacklisted certificate {}: {}' -+ .format(filename, e) -+ ) -+ failed_files.append(filename) -+ if not failed_files: -+ # the failed removal is not such a big issue here -+ # clean the dir if all files have been migrated successfully -+ shutil.rmtree(dirname, ignore_errors=True) -+ try: -+ run(['/usr/bin/update-ca-trust']) -+ except (CalledProcessError, OSError) as e: -+ api.current_logger().error( -+ 'Cannot update CA trust on the system.' -+ ' It needs to be done manually after the in-place upgrade.' -+ ' Reason: {}'.format(e) -+ ) -diff --git a/repos/system_upgrade/el8toel9/actors/migrateblacklistca/tests/unit_test_migrateblacklistca.py b/repos/system_upgrade/el8toel9/actors/migrateblacklistca/tests/unit_test_migrateblacklistca.py -new file mode 100644 -index 00000000..970dcb97 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/migrateblacklistca/tests/unit_test_migrateblacklistca.py -@@ -0,0 +1,25 @@ -+import os -+ -+from leapp.libraries.actor import migrateblacklistca -+from leapp.libraries.common.testutils import CurrentActorMocked -+from leapp.libraries.stdlib import api -+ -+ -+class MockedGetFiles(): -+ def __init__(self): -+ self.called = 0 -+ -+ def __call__(self): -+ self.called += 1 -+ return [] -+ -+ -+def test_no_dirs_exist(monkeypatch): -+ mocked_files = MockedGetFiles() -+ monkeypatch.setattr(os.path, 'exists', lambda dummy: False) -+ monkeypatch.setattr(migrateblacklistca, '_get_files', mocked_files) -+ monkeypatch.setattr(api, 'current_actor', CurrentActorMocked()) -+ # this is bad mock, but we want to be sure that update-ca-trust is not -+ # called on the testing machine -+ monkeypatch.setattr(migrateblacklistca, 'run', lambda dummy: dummy) -+ assert not mocked_files.called --- -2.35.3 - diff --git a/SOURCES/0011-Skip-comment-lines-when-parsing-grub-configuration-f.patch b/SOURCES/0011-Skip-comment-lines-when-parsing-grub-configuration-f.patch deleted file mode 100644 index fcb960e..0000000 --- a/SOURCES/0011-Skip-comment-lines-when-parsing-grub-configuration-f.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 32702c7c7d1c445b9ab95e0d1bbdfdf8f06d4303 Mon Sep 17 00:00:00 2001 -From: Petr Stodulka -Date: Wed, 27 Apr 2022 11:25:40 +0200 -Subject: [PATCH 11/39] Skip comment lines when parsing grub configuration file - -Added simple unit-test for default grub info to see the valid lines -can be parsed as expected. ---- - .../systemfacts/libraries/systemfacts.py | 21 ++++++++- - .../tests/test_systemfacts_grub.py | 46 +++++++++++++++++++ - 2 files changed, 65 insertions(+), 2 deletions(-) - create mode 100644 repos/system_upgrade/common/actors/systemfacts/tests/test_systemfacts_grub.py - -diff --git a/repos/system_upgrade/common/actors/systemfacts/libraries/systemfacts.py b/repos/system_upgrade/common/actors/systemfacts/libraries/systemfacts.py -index 0de8b383..81aea6f5 100644 ---- a/repos/system_upgrade/common/actors/systemfacts/libraries/systemfacts.py -+++ b/repos/system_upgrade/common/actors/systemfacts/libraries/systemfacts.py -@@ -9,6 +9,7 @@ import re - import six - - from leapp import reporting -+from leapp.exceptions import StopActorExecutionError - from leapp.libraries.common import repofileutils - from leapp.libraries.common.config import architecture - from leapp.libraries.stdlib import api, CalledProcessError, run -@@ -289,9 +290,25 @@ def _default_grub_info(): - ]) - else: - for line in run(['cat', default_grb_fpath], split=True)['stdout']: -- if not line.strip(): -+ line = line.strip() -+ if not line or line[0] == '#': -+ # skip comments and empty lines - continue -- name, value = tuple(map(type(line).strip, line.split('=', 1))) -+ try: -+ name, value = tuple(map(type(line).strip, line.split('=', 1))) -+ except ValueError as e: -+ # we do not want to really continue when we cannot parse this file -+ # TODO(pstodulk): rewrite this in the form we produce inhibitor -+ # with problematic lines. This is improvement just in comparison -+ # to the original hard crash. -+ raise StopActorExecutionError( -+ 'Failed parsing of {}'.format(default_grb_fpath), -+ details={ -+ 'error': str(e), -+ 'problematic line': str(line) -+ } -+ ) -+ - yield DefaultGrub( - name=name, - value=value -diff --git a/repos/system_upgrade/common/actors/systemfacts/tests/test_systemfacts_grub.py b/repos/system_upgrade/common/actors/systemfacts/tests/test_systemfacts_grub.py -new file mode 100644 -index 00000000..08552771 ---- /dev/null -+++ b/repos/system_upgrade/common/actors/systemfacts/tests/test_systemfacts_grub.py -@@ -0,0 +1,46 @@ -+import os -+ -+from leapp.libraries.actor import systemfacts -+from leapp.models import DefaultGrub -+ -+ -+class RunMocked(object): -+ def __init__(self, cmd_result): -+ self.called = 0 -+ self.cmd_result = cmd_result -+ self.split = False -+ self.cmd = None -+ -+ def __call__(self, cmd, split=False): -+ self.cmd = cmd -+ self.split = split -+ self.called += 1 -+ return self.cmd_result -+ -+ -+def test_default_grub_info_valid(monkeypatch): -+ mocked_run = RunMocked({ -+ 'stdout': [ -+ 'line="whatever else here"', -+ 'newline="whatever"', -+ '# comment here', -+ 'why_not=value', -+ ' # whitespaces around comment ', -+ ' ', -+ ' last=last really' -+ ], -+ }) -+ expected_result = [ -+ DefaultGrub(name='line', value='"whatever else here"'), -+ DefaultGrub(name='newline', value='"whatever"'), -+ DefaultGrub(name='why_not', value='value'), -+ DefaultGrub(name='last', value='last really'), -+ ] -+ monkeypatch.setattr(systemfacts, 'run', mocked_run) -+ monkeypatch.setattr(os.path, 'isfile', lambda dummy: True) -+ for msg in systemfacts._default_grub_info(): -+ expected_msg = expected_result.pop(0) -+ assert msg.name == expected_msg.name -+ assert msg.value == expected_msg.value -+ assert mocked_run.called -+ assert not expected_result --- -2.35.3 - diff --git a/SOURCES/0012-Add-actor-that-checks-for-obsolete-.NET-versions.patch b/SOURCES/0012-Add-actor-that-checks-for-obsolete-.NET-versions.patch deleted file mode 100644 index ad00b68..0000000 --- a/SOURCES/0012-Add-actor-that-checks-for-obsolete-.NET-versions.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 8a3a44457524f56daf0ee4b3db7dd7be9d4237c4 Mon Sep 17 00:00:00 2001 -From: Tom Deseyn -Date: Tue, 29 Mar 2022 11:44:28 +0200 -Subject: [PATCH 12/39] Add actor that checks for obsolete .NET versions. - -The actor checks for versions of .NET that are installed on the system, -and which are no longer available after the upgrade. - -The unsupported versions are reported to the user. -This actor does not inhibit the upgrade. ---- - .../el8toel9/actors/dotnet/actor.py | 40 +++++++++++++++++ - .../actors/dotnet/tests/test_dotnet.py | 43 +++++++++++++++++++ - 2 files changed, 83 insertions(+) - create mode 100644 repos/system_upgrade/el8toel9/actors/dotnet/actor.py - create mode 100644 repos/system_upgrade/el8toel9/actors/dotnet/tests/test_dotnet.py - -diff --git a/repos/system_upgrade/el8toel9/actors/dotnet/actor.py b/repos/system_upgrade/el8toel9/actors/dotnet/actor.py -new file mode 100644 -index 00000000..d6e3e465 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/dotnet/actor.py -@@ -0,0 +1,40 @@ -+from leapp import reporting -+from leapp.actors import Actor -+from leapp.libraries.common.rpms import has_package -+from leapp.models import InstalledRedHatSignedRPM, Report -+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag -+ -+UNSUPPORTED_VERSIONS = ['2.1', '3.0', '3.1', '5.0'] -+ -+ -+class DotnetUnsupportedVersionsCheck(Actor): -+ """ -+ Check for installed .NET versions that are no longer supported. -+ """ -+ -+ name = 'dotnet_unsupported_versions_check' -+ consumes = (InstalledRedHatSignedRPM,) -+ produces = (Report,) -+ tags = (ChecksPhaseTag, IPUWorkflowTag) -+ -+ def process(self): -+ unsupported_versions_report_text = '' -+ -+ for unsupported_version in UNSUPPORTED_VERSIONS: -+ runtime_package = f'dotnet-runtime-{unsupported_version}' -+ if has_package(InstalledRedHatSignedRPM, runtime_package): -+ unsupported_versions_report_text += '{0}{1}'.format('\n - ', unsupported_version) -+ -+ if unsupported_versions_report_text: -+ reporting.create_report([ -+ reporting.Title('Unsupported .NET versions installed on the system.'), -+ reporting.Summary( -+ ( -+ 'The following versions of .NET are no longer supported :{0}\n' -+ 'Applications that use these runtimes will no longer work\n' -+ 'and must be updated to target a newer version of .NET.' -+ ).format( -+ unsupported_versions_report_text -+ ) -+ ), -+ reporting.Severity(reporting.Severity.HIGH)]) -diff --git a/repos/system_upgrade/el8toel9/actors/dotnet/tests/test_dotnet.py b/repos/system_upgrade/el8toel9/actors/dotnet/tests/test_dotnet.py -new file mode 100644 -index 00000000..744a4e0b ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/dotnet/tests/test_dotnet.py -@@ -0,0 +1,43 @@ -+import pytest -+ -+from leapp.models import InstalledRedHatSignedRPM, Report, RPM -+ -+ -+def _generate_rpm_with_name(name): -+ return RPM(name=name, -+ version='0.1', -+ release='1.sm01', -+ epoch='1', -+ pgpsig='RSA/SHA256, Mon 01 Jan 1970 00:00:00 AM -03, Key ID 199e2f91fd431d51', -+ packager='Red Hat, Inc. ', -+ arch='noarch') -+ -+ -+@pytest.mark.parametrize('unsupported_versions', [ -+ ([]), # No unsupported versions -+ ([2.1]), # Single unsupported version -+ ([3.0]), # Other unsupported version -+ ([2.1, 3.0]), # Multiple unsupported versions -+]) -+def test_actor_execution(monkeypatch, current_actor_context, unsupported_versions): -+ """ -+ Install one or more dotnet-runtime packages for unsupported versions -+ and verify a report is generated. -+ """ -+ -+ # Couple of random packages -+ rpms = [_generate_rpm_with_name('sed'), -+ _generate_rpm_with_name('htop')] -+ -+ # dotnet-runtime-{version} packages -+ for version in unsupported_versions: -+ rpms += [_generate_rpm_with_name(f'dotnet-runtime-{version}')] -+ -+ # Executed actor feeded with fake RPMs -+ current_actor_context.feed(InstalledRedHatSignedRPM(items=rpms)) -+ current_actor_context.run() -+ -+ if unsupported_versions: -+ assert current_actor_context.consume(Report) -+ else: -+ assert not current_actor_context.consume(Report) --- -2.35.3 - diff --git a/SOURCES/0013-Move-OpenSSH-server-config-Scanner-and-related-model.patch b/SOURCES/0013-Move-OpenSSH-server-config-Scanner-and-related-model.patch deleted file mode 100644 index 8e3596a..0000000 --- a/SOURCES/0013-Move-OpenSSH-server-config-Scanner-and-related-model.patch +++ /dev/null @@ -1,36 +0,0 @@ -From f41767195b7515c86c6070c0b65db035112c6d17 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Wed, 9 Mar 2022 17:10:20 +0100 -Subject: [PATCH 13/39] Move OpenSSH server config Scanner and related model to - the common repository - ---- - .../{el7toel8 => common}/actors/opensshconfigscanner/actor.py | 0 - .../actors/opensshconfigscanner/libraries/readopensshconfig.py | 0 - .../tests/test_readopensshconfig_opensshconfigscanner.py | 0 - repos/system_upgrade/{el7toel8 => common}/models/opensshconfig.py | 0 - 4 files changed, 0 insertions(+), 0 deletions(-) - rename repos/system_upgrade/{el7toel8 => common}/actors/opensshconfigscanner/actor.py (100%) - rename repos/system_upgrade/{el7toel8 => common}/actors/opensshconfigscanner/libraries/readopensshconfig.py (100%) - rename repos/system_upgrade/{el7toel8 => common}/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py (100%) - rename repos/system_upgrade/{el7toel8 => common}/models/opensshconfig.py (100%) - -diff --git a/repos/system_upgrade/el7toel8/actors/opensshconfigscanner/actor.py b/repos/system_upgrade/common/actors/opensshconfigscanner/actor.py -similarity index 100% -rename from repos/system_upgrade/el7toel8/actors/opensshconfigscanner/actor.py -rename to repos/system_upgrade/common/actors/opensshconfigscanner/actor.py -diff --git a/repos/system_upgrade/el7toel8/actors/opensshconfigscanner/libraries/readopensshconfig.py b/repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py -similarity index 100% -rename from repos/system_upgrade/el7toel8/actors/opensshconfigscanner/libraries/readopensshconfig.py -rename to repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py -diff --git a/repos/system_upgrade/el7toel8/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py b/repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py -similarity index 100% -rename from repos/system_upgrade/el7toel8/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py -rename to repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py -diff --git a/repos/system_upgrade/el7toel8/models/opensshconfig.py b/repos/system_upgrade/common/models/opensshconfig.py -similarity index 100% -rename from repos/system_upgrade/el7toel8/models/opensshconfig.py -rename to repos/system_upgrade/common/models/opensshconfig.py --- -2.35.3 - diff --git a/SOURCES/0014-Add-actor-for-updating-OpenSSH-configuration-to-RHEL.patch b/SOURCES/0014-Add-actor-for-updating-OpenSSH-configuration-to-RHEL.patch deleted file mode 100644 index c7eee1c..0000000 --- a/SOURCES/0014-Add-actor-for-updating-OpenSSH-configuration-to-RHEL.patch +++ /dev/null @@ -1,175 +0,0 @@ -From ce1b83fafbbf3b323874fbb363e85a2e5abab4e2 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Wed, 16 Mar 2022 21:48:04 +0100 -Subject: [PATCH 14/39] Add actor for updating OpenSSH configuration to RHEL9 - ---- - .../actors/opensshdropindirectory/actor.py | 29 ++++++++ - .../libraries/opensshdropindirectory.py | 67 +++++++++++++++++++ - .../test_opensshdropindirectory_prepend.py | 44 ++++++++++++ - 3 files changed, 140 insertions(+) - create mode 100644 repos/system_upgrade/el8toel9/actors/opensshdropindirectory/actor.py - create mode 100644 repos/system_upgrade/el8toel9/actors/opensshdropindirectory/libraries/opensshdropindirectory.py - create mode 100644 repos/system_upgrade/el8toel9/actors/opensshdropindirectory/tests/test_opensshdropindirectory_prepend.py - -diff --git a/repos/system_upgrade/el8toel9/actors/opensshdropindirectory/actor.py b/repos/system_upgrade/el8toel9/actors/opensshdropindirectory/actor.py -new file mode 100644 -index 00000000..17a0c01a ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/opensshdropindirectory/actor.py -@@ -0,0 +1,29 @@ -+from leapp.actors import Actor -+from leapp.libraries.actor import opensshdropindirectory -+from leapp.models import InstalledRedHatSignedRPM, OpenSshConfig -+from leapp.tags import ApplicationsPhaseTag, IPUWorkflowTag -+ -+ -+class OpenSshDropInDirectory(Actor): -+ """ -+ The RHEL 9 provides default configuration file with an Include directive. -+ -+ If the configuration file was modified, it will not be replaced by the update -+ and we need to do couple of tweaks: -+ -+ * Insert Include directive as expected by the rest of the OS -+ * Verify the resulting configuration is valid -+ * The only potentially problematic option is "Subsystem", but it is kept in the -+ main sshd_config even in RHEL9 so there is no obvious upgrade path where it -+ could cause issues (unlike the Debian version). -+ -+ [1] https://bugzilla.mindrot.org/show_bug.cgi?id=3236 -+ """ -+ -+ name = 'open_ssh_drop_in_directory' -+ consumes = (OpenSshConfig, InstalledRedHatSignedRPM,) -+ produces = () -+ tags = (IPUWorkflowTag, ApplicationsPhaseTag,) -+ -+ def process(self): -+ opensshdropindirectory.process(self.consume(OpenSshConfig)) -diff --git a/repos/system_upgrade/el8toel9/actors/opensshdropindirectory/libraries/opensshdropindirectory.py b/repos/system_upgrade/el8toel9/actors/opensshdropindirectory/libraries/opensshdropindirectory.py -new file mode 100644 -index 00000000..d55eee1c ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/opensshdropindirectory/libraries/opensshdropindirectory.py -@@ -0,0 +1,67 @@ -+from leapp.exceptions import StopActorExecutionError -+from leapp.libraries.common.rpms import has_package -+from leapp.libraries.stdlib import api -+from leapp.models import InstalledRedHatSignedRPM -+ -+# The main SSHD configuration file -+SSHD_CONFIG = '/etc/ssh/sshd_config' -+ -+# The include directive needed, taken from RHEL9 sshd_config with leapp comment -+INCLUDE = 'Include /etc/ssh/sshd_config.d/*.conf' -+INCLUDE_BLOCK = ''.join(('# Added by leapp during upgrade from RHEL8 to RHEL9\n', INCLUDE, '\n')) -+ -+ -+def prepend_string_if_not_present(f, content, check_string): -+ """ -+ This reads the open file descriptor and checks for presense of the `check_string`. -+ If not present, the `content` is prepended to the original content of the file and -+ result is written. -+ Note, that this requires opened file for both reading and writing, for example with: -+ -+ with open(path, r+') as f: -+ """ -+ lines = f.readlines() -+ for line in lines: -+ if line.lstrip().startswith(check_string): -+ # The directive is present -+ return -+ -+ # prepend it otherwise, also with comment -+ f.seek(0) -+ f.write(''.join((content, ''.join(lines)))) -+ -+ -+def process(openssh_messages): -+ """ -+ The main logic of the actor: -+ * read the configuration file message -+ * skip if no action is needed -+ * package not installed -+ * the configuration file was not modified -+ * insert the include directive if it is not present yet -+ """ -+ config = next(openssh_messages, None) -+ if list(openssh_messages): -+ api.current_logger().warning('Unexpectedly received more than one OpenSshConfig message.') -+ if not config: -+ raise StopActorExecutionError( -+ 'Could not check openssh configuration', details={'details': 'No OpenSshConfig facts found.'} -+ ) -+ -+ # If the package is not installed, there is no need to do anything -+ if not has_package(InstalledRedHatSignedRPM, 'openssh-server'): -+ return -+ -+ # If the configuration file was not modified, the rpm update will bring the new -+ # changes by itself -+ if not config.modified: -+ return -+ -+ # otherwise prepend the Include directive to the main sshd_config -+ api.current_logger().debug('Adding the Include directive to {}.' -+ .format(SSHD_CONFIG)) -+ try: -+ with open(SSHD_CONFIG, 'r+') as f: -+ prepend_string_if_not_present(f, INCLUDE_BLOCK, INCLUDE) -+ except (OSError, IOError) as error: -+ api.current_logger().error('Failed to modify the file {}: {} '.format(SSHD_CONFIG, error)) -diff --git a/repos/system_upgrade/el8toel9/actors/opensshdropindirectory/tests/test_opensshdropindirectory_prepend.py b/repos/system_upgrade/el8toel9/actors/opensshdropindirectory/tests/test_opensshdropindirectory_prepend.py -new file mode 100644 -index 00000000..bccadf4b ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/opensshdropindirectory/tests/test_opensshdropindirectory_prepend.py -@@ -0,0 +1,44 @@ -+import pytest -+ -+from leapp.libraries.actor.opensshdropindirectory import prepend_string_if_not_present -+ -+ -+class MockFile(object): -+ def __init__(self, path, content=None): -+ self.path = path -+ self.content = content -+ self.error = False -+ -+ def readlines(self): -+ return self.content.splitlines(True) -+ -+ def seek(self, n): -+ self.content = '' -+ -+ def write(self, content): -+ self.content = content -+ -+ -+testdata = ( -+ ('', 'Prepend', 'Prepend', -+ 'Prepend'), # only prepend -+ ('Text', '', '', -+ 'Text'), # only text -+ ('Text', 'Prepend', 'Prepend', -+ 'PrependText'), # prepended text -+ ('Prepend\nText\n', 'Prepend', 'Prepend', -+ 'Prepend\nText\n'), # already present -+ ('Text\n', '# Comment\nPrepend\n', 'Prepend', -+ '# Comment\nPrepend\nText\n'), # different prepend than check string -+ ('Prepend\nText\n', '# Comment\nPrepend\n', 'Prepend', -+ 'Prepend\nText\n'), # different prepend than check string, already present -+) -+ -+ -+@pytest.mark.parametrize('file_content,prepend,check_string,expected', testdata) -+def test_prepend_string_if_not_present(file_content, prepend, check_string, expected): -+ f = MockFile('/etc/ssh/sshd_config', file_content) -+ -+ prepend_string_if_not_present(f, prepend, check_string) -+ -+ assert f.content == expected --- -2.35.3 - diff --git a/SOURCES/0015-Add-OpenSSH-Drop-in-directory-check-to-emit-info-rep.patch b/SOURCES/0015-Add-OpenSSH-Drop-in-directory-check-to-emit-info-rep.patch deleted file mode 100644 index 089d7a0..0000000 --- a/SOURCES/0015-Add-OpenSSH-Drop-in-directory-check-to-emit-info-rep.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 25eff3169450888e4afa33df2c4a455f58671fe5 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Wed, 30 Mar 2022 14:30:07 +0200 -Subject: [PATCH 15/39] Add OpenSSH Drop-in directory check to emit info report - about modifying sshd_config - ---- - .../opensshdropindirectorycheck/actor.py | 64 +++++++++++++++++++ - 1 file changed, 64 insertions(+) - create mode 100644 repos/system_upgrade/el8toel9/actors/opensshdropindirectorycheck/actor.py - -diff --git a/repos/system_upgrade/el8toel9/actors/opensshdropindirectorycheck/actor.py b/repos/system_upgrade/el8toel9/actors/opensshdropindirectorycheck/actor.py -new file mode 100644 -index 00000000..e8b0385a ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/opensshdropindirectorycheck/actor.py -@@ -0,0 +1,64 @@ -+from leapp import reporting -+from leapp.actors import Actor -+from leapp.exceptions import StopActorExecutionError -+from leapp.libraries.common.rpms import has_package -+from leapp.libraries.stdlib import api -+from leapp.models import InstalledRedHatSignedRPM, OpenSshConfig, Report -+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag -+ -+ -+class OpenSshDropInDirectoryCheck(Actor): -+ """ -+ Trigger a notice that the main sshd_config will be updated to contain -+ the Include directive so the other configuration files dropped by the -+ RHEL9 packages are effective. -+ -+ This might change the sshd behavior so it is advised to verify by the -+ customer that the updated system behaves as expected. -+ """ -+ -+ name = 'open_ssh_drop_in_directory_check' -+ consumes = (OpenSshConfig, InstalledRedHatSignedRPM,) -+ produces = (Report,) -+ tags = (IPUWorkflowTag, ChecksPhaseTag,) -+ -+ def process(self): -+ openssh_messages = self.consume(OpenSshConfig) -+ config = next(openssh_messages, None) -+ if list(openssh_messages): -+ api.current_logger().warning('Unexpectedly received more than one OpenSshConfig message.') -+ if not config: -+ raise StopActorExecutionError( -+ 'Could not check openssh configuration', details={'details': 'No OpenSshConfig facts found.'} -+ ) -+ -+ # If the package is not installed, there is no need to do anything -+ if not has_package(InstalledRedHatSignedRPM, 'openssh-server'): -+ return -+ -+ # If the configuration file was not modified, the rpm update will bring the new -+ # changes by itself -+ if not config.modified: -+ return -+ -+ # otherwise we will prepend the Include directive to the main sshd_config -+ resources = [ -+ reporting.RelatedResource('package', 'openssh-server'), -+ reporting.RelatedResource('file', '/etc/ssh/sshd_config') -+ ] -+ reporting.create_report([ -+ reporting.Title('The upgrade will prepend the Incude directive to OpenSSH sshd_config'), -+ reporting.Summary( -+ 'OpenSSH server configuration needs to be modified to contain Include directive ' -+ 'for the RHEL9 to work properly and integrate with the other parts of the OS. ' -+ 'The following snippet will be added to the /etc/ssh/sshd_config during the ' -+ 'ApplicationsPhase: `Include /etc/ssh/sshd_config.d/*.conf`' -+ ), -+ reporting.Severity(reporting.Severity.INFO), -+ reporting.Tags([ -+ reporting.Tags.AUTHENTICATION, -+ reporting.Tags.SECURITY, -+ reporting.Tags.NETWORK, -+ reporting.Tags.SERVICES -+ ]), -+ ] + resources) --- -2.35.3 - diff --git a/SOURCES/0016-OpenSSH-Config-Scanner-Record-the-presence-of-subsys.patch b/SOURCES/0016-OpenSSH-Config-Scanner-Record-the-presence-of-subsys.patch deleted file mode 100644 index fe3d4a5..0000000 --- a/SOURCES/0016-OpenSSH-Config-Scanner-Record-the-presence-of-subsys.patch +++ /dev/null @@ -1,165 +0,0 @@ -From 3217ead5c28a55d8eedc400957e05735e0f94db6 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Wed, 9 Mar 2022 20:53:08 +0100 -Subject: [PATCH 16/39] OpenSSH Config Scanner: Record the presence of - subsystem option - ---- - .../common/actors/opensshconfigscanner/actor.py | 1 + - .../libraries/readopensshconfig.py | 6 ++++++ - ...test_readopensshconfig_opensshconfigscanner.py | 15 +++++++++++++++ - .../system_upgrade/common/models/opensshconfig.py | 7 +++++-- - 4 files changed, 27 insertions(+), 2 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/opensshconfigscanner/actor.py b/repos/system_upgrade/common/actors/opensshconfigscanner/actor.py -index df194559..4553f3e8 100644 ---- a/repos/system_upgrade/common/actors/opensshconfigscanner/actor.py -+++ b/repos/system_upgrade/common/actors/opensshconfigscanner/actor.py -@@ -15,6 +15,7 @@ class OpenSshConfigScanner(Actor): - * Protocol - * Ciphers - * MACs -+ * Subsystem sftp - - """ - -diff --git a/repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py b/repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py -index 3b70486a..4a8df194 100644 ---- a/repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py -+++ b/repos/system_upgrade/common/actors/opensshconfigscanner/libraries/readopensshconfig.py -@@ -61,6 +61,12 @@ def parse_config(config): - if not ret.macs: - ret.macs = value - -+ elif el[0].lower() == 'subsystem': -+ # Record only first occurence, which is effective -+ if el[1].lower() == 'sftp' and len(el) > 2 and not ret.subsystem_sftp: -+ # here we need to record all remaining items as command and arguments -+ ret.subsystem_sftp = ' '.join(el[2:]) -+ - elif el[0].lower() in DEPRECATED_DIRECTIVES: - # Filter out duplicit occurences of the same deprecated directive - if el[0].lower() not in ret.deprecated_directives: -diff --git a/repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py b/repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py -index 8fa5837b..48d24b28 100644 ---- a/repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py -+++ b/repos/system_upgrade/common/actors/opensshconfigscanner/tests/test_readopensshconfig_opensshconfigscanner.py -@@ -24,6 +24,8 @@ def test_parse_config(): - "hostkey /etc/ssh/ssh_host_ed25519_key", - "ciphers aes128-ctr", - "macs hmac-md5", -+ "subsystem sftp internal-sftp", -+ "subsystem other internal-other", # this is ignored - ] - - output = parse_config(config) -@@ -34,6 +36,7 @@ def test_parse_config(): - assert output.protocol == "2" - assert output.ciphers == "aes128-ctr" - assert output.macs == "hmac-md5" -+ assert output.subsystem_sftp == "internal-sftp" - - - def test_parse_config_case(): -@@ -41,6 +44,7 @@ def test_parse_config_case(): - "PermitRootLogin prohibit-password", - "UsePrivilegeSeparation yes", - "Protocol 1", -+ "SubSystem sftp sftp-server", - ] - - output = parse_config(config) -@@ -49,6 +53,7 @@ def test_parse_config_case(): - assert output.permit_root_login[0].value == "prohibit-password" - assert output.use_privilege_separation == "yes" - assert output.protocol == "1" -+ assert output.subsystem_sftp == "sftp-server" - - - def test_parse_config_multiple(): -@@ -58,6 +63,8 @@ def test_parse_config_multiple(): - "PermitRootLogin yes", - "Ciphers aes128-cbc", - "Ciphers aes256-cbc", -+ "subsystem sftp internal-sftp", -+ "subsystem sftp internal-sftp2", - ] - - output = parse_config(config) -@@ -69,6 +76,7 @@ def test_parse_config_multiple(): - assert output.use_privilege_separation is None - assert output.protocol is None - assert output.ciphers == 'aes128-cbc' -+ assert output.subsystem_sftp == 'internal-sftp' - - - def test_parse_config_commented(): -@@ -76,6 +84,7 @@ def test_parse_config_commented(): - "#PermitRootLogin no", - "#UsePrivilegeSeparation no", - "#Protocol 12", -+ "#SubSystem sftp internal-sftp", - ] - - output = parse_config(config) -@@ -83,6 +92,7 @@ def test_parse_config_commented(): - assert not output.permit_root_login - assert output.use_privilege_separation is None - assert output.protocol is None -+ assert output.subsystem_sftp is None - - - def test_parse_config_missing_argument(): -@@ -90,6 +100,8 @@ def test_parse_config_missing_argument(): - "PermitRootLogin", - "UsePrivilegeSeparation", - "Protocol" -+ "SubSystem" -+ "SubSystem sftp" - ] - - output = parse_config(config) -@@ -97,6 +109,7 @@ def test_parse_config_missing_argument(): - assert not output.permit_root_login - assert output.use_privilege_separation is None - assert output.protocol is None -+ assert output.subsystem_sftp is None - - - def test_parse_config_match(): -@@ -174,6 +187,7 @@ def test_produce_config(): - use_privilege_separation="yes", - protocol="1", - deprecated_directives=[], -+ subsystem_sftp="internal-sftp", - ) - - produce_config(fake_producer, config) -@@ -183,6 +197,7 @@ def test_produce_config(): - assert cfg.permit_root_login[0].value == "no" - assert cfg.use_privilege_separation == "yes" - assert cfg.protocol == '1' -+ assert cfg.subsystem_sftp == 'internal-sftp' - - - def test_actor_execution(current_actor_context): -diff --git a/repos/system_upgrade/common/models/opensshconfig.py b/repos/system_upgrade/common/models/opensshconfig.py -index 934c9da3..e94c6881 100644 ---- a/repos/system_upgrade/common/models/opensshconfig.py -+++ b/repos/system_upgrade/common/models/opensshconfig.py -@@ -34,7 +34,10 @@ class OpenSshConfig(Model): - """ Value of the Ciphers directive, if present. Ciphers separated by comma. """ - macs = fields.Nullable(fields.String()) - """ Value of the MACs directive, if present. """ -- modified = fields.Boolean(default=False) -- """ True if the configuration file was modified. """ - deprecated_directives = fields.List(fields.String()) - """ Configuration directives that were deprecated in the new version of openssh. """ -+ subsystem_sftp = fields.Nullable(fields.String()) -+ """ The "Subsystem sftp" configuration option, if present """ -+ -+ modified = fields.Boolean(default=False) -+ """ True if the configuration file was modified. """ --- -2.35.3 - diff --git a/SOURCES/0017-Warn-if-the-SSHD-is-not-configured-to-use-SFTP-serve.patch b/SOURCES/0017-Warn-if-the-SSHD-is-not-configured-to-use-SFTP-serve.patch deleted file mode 100644 index ab6d0b8..0000000 --- a/SOURCES/0017-Warn-if-the-SSHD-is-not-configured-to-use-SFTP-serve.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 85e1bd3c9366c6e15f53097ff0cd846739beb611 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Thu, 17 Mar 2022 16:01:12 +0100 -Subject: [PATCH 17/39] Warn if the SSHD is not configured to use SFTP server - ---- - .../actors/opensshsubsystemsftp/actor.py | 22 +++++++++ - .../libraries/opensshsubsystemsftp.py | 47 +++++++++++++++++++ - .../tests/test_opensshsubsystemsftp.py | 33 +++++++++++++ - 3 files changed, 102 insertions(+) - create mode 100644 repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/actor.py - create mode 100644 repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/libraries/opensshsubsystemsftp.py - create mode 100644 repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/tests/test_opensshsubsystemsftp.py - -diff --git a/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/actor.py b/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/actor.py -new file mode 100644 -index 00000000..14d8b882 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/actor.py -@@ -0,0 +1,22 @@ -+from leapp.actors import Actor -+from leapp.libraries.actor import opensshsubsystemsftp -+from leapp.models import InstalledRedHatSignedRPM, OpenSshConfig -+from leapp.reporting import Report -+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag -+ -+ -+class OpenSshSubsystemSftp(Actor): -+ """ -+ The RHEL9 changes the SCP to use SFTP protocol internally. The both RHEL8 and RHEL9 -+ enable SFTP server by default, but if the user disabled the SFTP for some reason, -+ it might make sense to warn that some previously working SCP operations could stop -+ working. -+ """ -+ -+ name = 'open_ssh_subsystem_sftp' -+ consumes = (OpenSshConfig, InstalledRedHatSignedRPM,) -+ produces = (Report,) -+ tags = (IPUWorkflowTag, ChecksPhaseTag) -+ -+ def process(self): -+ opensshsubsystemsftp.process(self.consume(OpenSshConfig)) -diff --git a/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/libraries/opensshsubsystemsftp.py b/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/libraries/opensshsubsystemsftp.py -new file mode 100644 -index 00000000..b60c08ca ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/libraries/opensshsubsystemsftp.py -@@ -0,0 +1,47 @@ -+from leapp import reporting -+from leapp.exceptions import StopActorExecutionError -+from leapp.libraries.stdlib import api -+ -+ -+def process(openssh_messages): -+ config = next(openssh_messages, None) -+ if list(openssh_messages): -+ api.current_logger().warning('Unexpectedly received more than one OpenSshConfig message.') -+ if not config: -+ raise StopActorExecutionError( -+ 'Could not check openssh configuration', details={'details': 'No OpenSshConfig facts found.'} -+ ) -+ -+ # not modified configuration will get updated by RPM automatically -+ if not config.modified: -+ return -+ -+ if not config.subsystem_sftp: -+ resources = [ -+ reporting.RelatedResource('package', 'openssh-server'), -+ reporting.RelatedResource('file', '/etc/ssh/sshd_config'), -+ reporting.ExternalLink( -+ title="SCP support in RHEL", -+ url="https://access.redhat.com/articles/5284081", -+ ), -+ # TODO provide a link to documentation or blog post -+ ] -+ reporting.create_report([ -+ reporting.Title('OpenSSH configured without SFTP subsystem'), -+ reporting.Summary( -+ 'The RHEL9 is changing the default SCP behaviour to use SFTP internally ' -+ 'so not having SFTP server enabled can prevent interoperability and break existing ' -+ 'scripts on other systems updated to RHEL9 to copy files to or from this machine.' -+ ), -+ reporting.Remediation( -+ hint='Add the following line to the /etc/ssh/sshd_config to enable SFTP server: ' -+ 'Subsystem sftp /usr/libexec/openssh/sftp-server' -+ ), -+ reporting.Severity(reporting.Severity.MEDIUM), -+ reporting.Tags([ -+ reporting.Tags.AUTHENTICATION, -+ reporting.Tags.SECURITY, -+ reporting.Tags.NETWORK, -+ reporting.Tags.SERVICES -+ ]), -+ ] + resources) -diff --git a/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/tests/test_opensshsubsystemsftp.py b/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/tests/test_opensshsubsystemsftp.py -new file mode 100644 -index 00000000..4e3c2ace ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/tests/test_opensshsubsystemsftp.py -@@ -0,0 +1,33 @@ -+import pytest -+ -+from leapp.exceptions import StopActorExecutionError -+from leapp.libraries.actor import opensshsubsystemsftp -+from leapp.models import OpenSshConfig, Report -+ -+ -+def test_no_config(current_actor_context): -+ with pytest.raises(StopActorExecutionError): -+ opensshsubsystemsftp.process(iter([])) -+ -+ -+@pytest.mark.parametrize('modified,subsystem,expected_report', [ -+ (False, None, False), # should not happen -+ (False, '/usr/libexec/openssh/sftp-server', False), # Defaults -+ (True, None, True), -+ (True, 'internal-sftp', False), -+ (True, '/usr/libexec/openssh/sftp-server', False) -+]) -+def test_subsystem(current_actor_context, modified, subsystem, expected_report): -+ conf = OpenSshConfig( -+ modified=modified, -+ permit_root_login=[], -+ deprecated_directives=[] -+ ) -+ if subsystem is not None: -+ conf.subsystem_sftp = subsystem -+ current_actor_context.feed(conf) -+ current_actor_context.run() -+ if expected_report: -+ assert current_actor_context.consume(Report) -+ else: -+ assert not current_actor_context.consume(Report) --- -2.35.3 - diff --git a/SOURCES/0018-Fix-actor-tracebacks-for-non-default-lang.patch b/SOURCES/0018-Fix-actor-tracebacks-for-non-default-lang.patch deleted file mode 100644 index f90df59..0000000 --- a/SOURCES/0018-Fix-actor-tracebacks-for-non-default-lang.patch +++ /dev/null @@ -1,41 +0,0 @@ -From e4f733297937847522ecf4b306182c2bcb293676 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Wed, 4 May 2022 13:39:41 +0200 -Subject: [PATCH 18/39] Fix actor tracebacks for non-default lang - -This should fix tracebacks in actors when LANGUAGE -environment variable is set to non utf-8 in test env. - -OAMG-6750 ---- - commands/preupgrade/__init__.py | 1 + - commands/upgrade/__init__.py | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/commands/preupgrade/__init__.py b/commands/preupgrade/__init__.py -index 92038bb6..46812b36 100644 ---- a/commands/preupgrade/__init__.py -+++ b/commands/preupgrade/__init__.py -@@ -62,6 +62,7 @@ def preupgrade(args, breadcrumbs): - logger.info('Executing workflow until phase: %s', until_phase) - - # Set the locale, so that the actors parsing command outputs that might be localized will not fail -+ os.environ['LANGUAGE'] = 'en_US.UTF-8' - os.environ['LC_ALL'] = 'en_US.UTF-8' - os.environ['LANG'] = 'en_US.UTF-8' - workflow.run(context=context, until_phase=until_phase, skip_dialogs=True) -diff --git a/commands/upgrade/__init__.py b/commands/upgrade/__init__.py -index c9c2741c..b64e4d77 100644 ---- a/commands/upgrade/__init__.py -+++ b/commands/upgrade/__init__.py -@@ -91,6 +91,7 @@ def upgrade(args, breadcrumbs): - workflow.load_answers(answerfile_path, userchoices_path) - - # Set the locale, so that the actors parsing command outputs that might be localized will not fail -+ os.environ['LANGUAGE'] = 'en_US.UTF-8' - os.environ['LC_ALL'] = 'en_US.UTF-8' - os.environ['LANG'] = 'en_US.UTF-8' - workflow.run(context=context, skip_phases_until=skip_phases_until, skip_dialogs=True, --- -2.35.3 - diff --git a/SOURCES/0019-Move-the-OpenSSH-PermitRootLogin-check-to-common-rep.patch b/SOURCES/0019-Move-the-OpenSSH-PermitRootLogin-check-to-common-rep.patch deleted file mode 100644 index 69cd0f1..0000000 --- a/SOURCES/0019-Move-the-OpenSSH-PermitRootLogin-check-to-common-rep.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 634cf9e3e336779b2300ce4fc09f7e4740005608 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Mon, 21 Mar 2022 18:54:56 +0100 -Subject: [PATCH 19/39] Move the OpenSSH PermitRootLogin check to common - repository - -Signed-off-by: Jakub Jelen ---- - .../actors/opensshpermitrootlogincheck/actor.py | 0 - .../libraries/opensshpermitrootlogincheck.py | 0 - .../tests/test_library_opensshpermitrootlogincheck.py | 0 - 3 files changed, 0 insertions(+), 0 deletions(-) - rename repos/system_upgrade/{el7toel8 => common}/actors/opensshpermitrootlogincheck/actor.py (100%) - rename repos/system_upgrade/{el7toel8 => common}/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py (100%) - rename repos/system_upgrade/{el7toel8 => common}/actors/opensshpermitrootlogincheck/tests/test_library_opensshpermitrootlogincheck.py (100%) - -diff --git a/repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/actor.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -similarity index 100% -rename from repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/actor.py -rename to repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -diff --git a/repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py -similarity index 100% -rename from repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py -rename to repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py -diff --git a/repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/tests/test_library_opensshpermitrootlogincheck.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/tests/test_library_opensshpermitrootlogincheck.py -similarity index 100% -rename from repos/system_upgrade/el7toel8/actors/opensshpermitrootlogincheck/tests/test_library_opensshpermitrootlogincheck.py -rename to repos/system_upgrade/common/actors/opensshpermitrootlogincheck/tests/test_library_opensshpermitrootlogincheck.py --- -2.35.3 - diff --git a/SOURCES/0020-PermitRootLogin-check-add-new-use-cases-for-8to9.patch b/SOURCES/0020-PermitRootLogin-check-add-new-use-cases-for-8to9.patch deleted file mode 100644 index 182f3dc..0000000 --- a/SOURCES/0020-PermitRootLogin-check-add-new-use-cases-for-8to9.patch +++ /dev/null @@ -1,268 +0,0 @@ -From 1052277e4525b139d24065db576f8bd750b8da36 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Mon, 21 Mar 2022 20:17:52 +0100 -Subject: [PATCH 20/39] PermitRootLogin check: add new use cases for 8to9 - -Signed-off-by: Jakub Jelen ---- - .../opensshpermitrootlogincheck/actor.py | 79 +++++++++++++++++-- - .../libraries/opensshpermitrootlogincheck.py | 8 ++ - ...est_library_opensshpermitrootlogincheck.py | 26 +++++- - 3 files changed, 104 insertions(+), 9 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -index f13a7672..f7ee61da 100644 ---- a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -+++ b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -@@ -1,7 +1,8 @@ - from leapp import reporting - from leapp.actors import Actor - from leapp.exceptions import StopActorExecutionError --from leapp.libraries.actor.opensshpermitrootlogincheck import semantics_changes -+from leapp.libraries.actor.opensshpermitrootlogincheck import global_value, semantics_changes -+from leapp.libraries.common.config.version import get_source_major_version - from leapp.libraries.stdlib import api - from leapp.models import OpenSshConfig, Report - from leapp.reporting import create_report -@@ -14,13 +15,21 @@ COMMON_REPORT_TAGS = [ - reporting.Tags.SERVICES - ] - -+COMMON_RESOURCES = [ -+ reporting.RelatedResource('package', 'openssh-server'), -+ reporting.RelatedResource('file', '/etc/ssh/sshd_config') -+] -+ - - class OpenSshPermitRootLoginCheck(Actor): - """ - OpenSSH no longer allows root logins with password. - - Check the values of PermitRootLogin in OpenSSH server configuration file -- and warn about potential issues after update. -+ and warn about potential issues after upgrade to the next major version of RHEL. -+ -+ The RHEL8 still provided default configuration that allowed root logins, -+ which can lead to possible unwanted changes during the upgrade - """ - name = 'openssh_permit_root_login' - consumes = (OpenSshConfig, ) -@@ -37,10 +46,15 @@ class OpenSshPermitRootLoginCheck(Actor): - 'Could not check openssh configuration', details={'details': 'No OpenSshConfig facts found.'} - ) - -- resources = [ -- reporting.RelatedResource('package', 'openssh-server'), -- reporting.RelatedResource('file', '/etc/ssh/sshd_config') -- ] -+ if get_source_major_version() == '7': -+ self.process7to8(config) -+ elif get_source_major_version() == '8': -+ self.process8to9(config) -+ else: -+ api.current_logger().warning('Unknown source major version: {} (expecting 7 or 8)' -+ .format(get_source_major_version())) -+ -+ def process7to8(self, config): - # When the configuration does not contain the PermitRootLogin directive and - # the configuration file was locally modified, it will not get updated by - # RPM and the user might be locked away from the server. Warn the user here. -@@ -61,7 +75,7 @@ class OpenSshPermitRootLoginCheck(Actor): - '"PermitRootLogin yes" to sshd_config.' - ), - reporting.Flags([reporting.Flags.INHIBITOR]) -- ] + resources) -+ ] + COMMON_RESOURCES) - - # Check if there is at least one PermitRootLogin other than "no" - # in match blocks (other than Match All). -@@ -87,4 +101,53 @@ class OpenSshPermitRootLoginCheck(Actor): - 'in global context if desired.' - ), - reporting.Flags([reporting.Flags.INHIBITOR]) -- ] + resources) -+ ] + COMMON_RESOURCES) -+ -+ def process8to9(self, config): -+ # RHEL8 default sshd configuration file is not modified: It will get replaced by rpm and -+ # root will no longer be able to connect through ssh. This will probably result in many -+ # false positives so it will have to be waived a lot -+ if not config.modified: -+ create_report([ -+ reporting.Title('Possible problems with remote login using root account'), -+ reporting.Summary( -+ 'OpenSSH configuration file will get updated to RHEL9 ' -+ 'version, no longer allowing root login with password. ' -+ 'It is a good practice to use non-root administrative ' -+ 'user and non-password authentications, but if you rely ' -+ 'on the remote root login, this change can lock you out ' -+ 'of this system.' -+ ), -+ reporting.Severity(reporting.Severity.HIGH), -+ reporting.Tags(COMMON_REPORT_TAGS), -+ reporting.Remediation( -+ hint='If you depend on remote root logins using passwords, ' -+ 'consider setting up a different user for remote ' -+ 'administration or adding a comment into the ' -+ 'sshd_config next to the "PermitRootLogin yes" directive ' -+ 'to prevent rpm replacing it during the upgrade.' -+ ), -+ reporting.Flags([reporting.Flags.INHIBITOR]) -+ ] + COMMON_RESOURCES) -+ # If the configuration is modified and contains any directive allowing -+ # root login (which is in default configuration), we are upgrading to -+ # RHEL9 keeping the old "security policy", which might keep the root -+ # login unexpectedly open. This might be just high priority warning -+ if global_value(config, 'prohibit-password') == 'yes': -+ create_report([ -+ reporting.Title('Remote root logins globally allowed using password'), -+ reporting.Summary( -+ 'RHEL9 no longer allows remote root logins, but the ' -+ 'server configuration explicitly overrides this default. ' -+ 'The configuration file will not be updated and root is ' -+ 'still going to be allowed to login with password. ' -+ 'This is not recommended and considered as a security risk.' -+ ), -+ reporting.Severity(reporting.Severity.HIGH), -+ reporting.Tags(COMMON_REPORT_TAGS), -+ reporting.Remediation( -+ hint='If you depend on remote root logins using passwords, ' -+ 'consider setting up a different user for remote ' -+ 'administration. Otherwise you can ignore this message.' -+ ) -+ ] + COMMON_RESOURCES) -diff --git a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py -index 0cb90819..d247b220 100644 ---- a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py -+++ b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py -@@ -1,8 +1,16 @@ -+def global_value(config, default): -+ for opt in config.permit_root_login: -+ if (opt.in_match is None or opt.in_match[0].lower() == 'all'): -+ return opt.value -+ return default - - - def semantics_changes(config): - globally_enabled = False - in_match_disabled = False -+ if not config.permit_root_login: -+ return True -+ - for opt in config.permit_root_login: - if opt.value != "yes" and opt.in_match is not None \ - and opt.in_match[0].lower() != 'all': -diff --git a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/tests/test_library_opensshpermitrootlogincheck.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/tests/test_library_opensshpermitrootlogincheck.py -index 23110839..6ccd5851 100644 ---- a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/tests/test_library_opensshpermitrootlogincheck.py -+++ b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/tests/test_library_opensshpermitrootlogincheck.py -@@ -1,7 +1,20 @@ --from leapp.libraries.actor.opensshpermitrootlogincheck import semantics_changes -+from leapp.libraries.actor.opensshpermitrootlogincheck import global_value, semantics_changes - from leapp.models import OpenSshConfig, OpenSshPermitRootLogin - - -+def test_empty_file(): -+ """ Empty file -+ """ -+ config = OpenSshConfig( -+ permit_root_login=[ -+ ], -+ deprecated_directives=[] -+ ) -+ -+ assert semantics_changes(config) -+ assert global_value(config, "default") == "default" -+ -+ - def test_globally_enabled(): - """ Configuration file in this format: - -@@ -17,6 +30,7 @@ def test_globally_enabled(): - ) - - assert not semantics_changes(config) -+ assert global_value(config, "default") == "yes" - - - def test_globally_disabled(): -@@ -34,6 +48,7 @@ def test_globally_disabled(): - ) - - assert not semantics_changes(config) -+ assert global_value(config, "default") == "no" - - - def test_globally_disabled_password(): -@@ -51,6 +66,7 @@ def test_globally_disabled_password(): - ) - - assert not semantics_changes(config) -+ assert global_value(config, "default") == "prohibit-password" - - - def test_in_match_disabled(): -@@ -70,6 +86,7 @@ def test_in_match_disabled(): - ) - - assert semantics_changes(config) -+ assert global_value(config, "default") == "default" - - - def test_in_match_disabled_password(): -@@ -89,6 +106,7 @@ def test_in_match_disabled_password(): - ) - - assert semantics_changes(config) -+ assert global_value(config, "default") == "default" - - - def test_in_match_enabled(): -@@ -109,6 +127,7 @@ def test_in_match_enabled(): - ) - - assert not semantics_changes(config) -+ assert global_value(config, "default") == "default" - - - def test_in_match_all_disabled(): -@@ -128,6 +147,7 @@ def test_in_match_all_disabled(): - ) - - assert not semantics_changes(config) -+ assert global_value(config, "default") == "no" - - - def test_in_match_all_disabled_password(): -@@ -147,6 +167,7 @@ def test_in_match_all_disabled_password(): - ) - - assert not semantics_changes(config) -+ assert global_value(config, "default") == "prohibit-password" - - - def test_in_match_all_enabled(): -@@ -166,6 +187,7 @@ def test_in_match_all_enabled(): - ) - - assert not semantics_changes(config) -+ assert global_value(config, "default") == "yes" - - - def test_in_match_enabled_globally_disabled(): -@@ -188,6 +210,7 @@ def test_in_match_enabled_globally_disabled(): - ) - - assert not semantics_changes(config) -+ assert global_value(config, "default") == "no" - - - def test_in_match_disabled_globally_enabled(): -@@ -210,3 +233,4 @@ def test_in_match_disabled_globally_enabled(): - ) - - assert not semantics_changes(config) -+ assert global_value(config, "default") == "yes" --- -2.35.3 - diff --git a/SOURCES/0021-If-the-config-is-not-modified-leave-it-up-to-RPM.patch b/SOURCES/0021-If-the-config-is-not-modified-leave-it-up-to-RPM.patch deleted file mode 100644 index 75ffeeb..0000000 --- a/SOURCES/0021-If-the-config-is-not-modified-leave-it-up-to-RPM.patch +++ /dev/null @@ -1,41 +0,0 @@ -From f6588061b85c5b6862ff424fbdab2dc29266c506 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Thu, 5 May 2022 20:06:51 +0200 -Subject: [PATCH 21/39] If the config is not modified, leave it up to RPM - -Neither of the inhibitor are useful if the configuration file was not -modified and the upgrade of the file will be handled by RPM, keeping the -root logins enabled by pulling the new configuration file from new -package. - -Signed-off-by: Jakub Jelen ---- - .../actors/opensshpermitrootlogincheck/actor.py | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -index f7ee61da..ae3b4586 100644 ---- a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -+++ b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -@@ -55,10 +55,15 @@ class OpenSshPermitRootLoginCheck(Actor): - .format(get_source_major_version())) - - def process7to8(self, config): -- # When the configuration does not contain the PermitRootLogin directive and -+ # when the config was not modified, we can pass this check and let the -+ # rpm handle the configuration file update -+ if not config.modified: -+ return -+ -+ # When the configuration does not contain *any* PermitRootLogin directive and - # the configuration file was locally modified, it will not get updated by -- # RPM and the user might be locked away from the server. Warn the user here. -- if not config.permit_root_login and config.modified: -+ # RPM and the user might be locked away from the server with new default -+ if not config.permit_root_login: - create_report([ - reporting.Title('Possible problems with remote login using root account'), - reporting.Summary( --- -2.35.3 - diff --git a/SOURCES/0022-Improve-remediation-do-not-trigger-second-inhibitor.patch b/SOURCES/0022-Improve-remediation-do-not-trigger-second-inhibitor.patch deleted file mode 100644 index 471d0e4..0000000 --- a/SOURCES/0022-Improve-remediation-do-not-trigger-second-inhibitor.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 32605051864e5e7ba16e7582d1a75459c826ef59 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Thu, 5 May 2022 20:08:59 +0200 -Subject: [PATCH 22/39] Improve remediation, do not trigger second inhibitor - -In the past, both of the inhibitors were triggered when the -configuration file did not contain any PermitRootLogin configuration -option. But this really does not make any sense to report the second -inhibitor if the first one is already raised. - -Signed-off-by: Jakub Jelen ---- - .../actors/opensshpermitrootlogincheck/actor.py | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -index ae3b4586..4cc4cbc2 100644 ---- a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -+++ b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/actor.py -@@ -74,13 +74,16 @@ class OpenSshPermitRootLoginCheck(Actor): - reporting.Severity(reporting.Severity.HIGH), - reporting.Tags(COMMON_REPORT_TAGS), - reporting.Remediation( -- hint='If you depend on remote root logins using ' -- 'passwords, consider setting up a different ' -- 'user for remote administration or adding ' -- '"PermitRootLogin yes" to sshd_config.' -+ hint='If you depend on remote root logins using passwords, consider ' -+ 'setting up a different user for remote administration or adding ' -+ '"PermitRootLogin yes" to sshd_config. ' -+ 'If this change is ok for you, add explicit ' -+ '"PermitRootLogin prohibit-password" to your sshd_config ' -+ 'to ignore this inhibitor' - ), - reporting.Flags([reporting.Flags.INHIBITOR]) - ] + COMMON_RESOURCES) -+ return - - # Check if there is at least one PermitRootLogin other than "no" - # in match blocks (other than Match All). --- -2.35.3 - diff --git a/SOURCES/0023-Add-doc-strings-and-improve-code-readability.patch b/SOURCES/0023-Add-doc-strings-and-improve-code-readability.patch deleted file mode 100644 index c491e74..0000000 --- a/SOURCES/0023-Add-doc-strings-and-improve-code-readability.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 5862f8b67f02fad30ec6a067318c876b4dba396f Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Thu, 5 May 2022 20:09:50 +0200 -Subject: [PATCH 23/39] Add doc strings and improve code readability - -The original code was quite confusing. This reuses the global_value -function and checks for the only rare corner case we want to consider -allowing without inhibiting the upgrade. - -The test coverage is still passing with the new code. - -Signed-off-by: Jakub Jelen ---- - .../libraries/opensshpermitrootlogincheck.py | 40 ++++++++++++++----- - 1 file changed, 30 insertions(+), 10 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py -index d247b220..c2237571 100644 ---- a/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py -+++ b/repos/system_upgrade/common/actors/opensshpermitrootlogincheck/libraries/opensshpermitrootlogincheck.py -@@ -1,4 +1,11 @@ - def global_value(config, default): -+ """ -+ Find the global value for PermitRootLogin option in sshd_config. -+ -+ OpenSSH is using the first value found in configuration file, that is not -+ in match block other than "all". If there is no such option, the argument -+ "default" will be returned. -+ """ - for opt in config.permit_root_login: - if (opt.in_match is None or opt.in_match[0].lower() == 'all'): - return opt.value -@@ -6,18 +13,31 @@ def global_value(config, default): - - - def semantics_changes(config): -- globally_enabled = False -- in_match_disabled = False -+ """ -+ Check if the current configuration changes semantics if upgraded from RHEL7 to RHEL8 -+ -+ The case where the configuration does not contain *any* PermitRootLogin option is -+ already covered in the actor and does not need to be handled here. -+ -+ This tries to capture the case, where the root login is enabled in at least one -+ match block. The global default changes so the new configurations will not allow -+ all password root logins, but there is at least some chance to access the system as -+ root with password. -+ -+ Examples: -+ * If the root login is globally set (enabled or disabled), the semantics stays the same. -+ * If the root login is enabled only in match blocks, the semantics changes, but the -+ machine stays accessible at least for clients matching this block. -+ -+ """ -+ config_global_value = global_value(config, None) -+ in_match_enabled = False - if not config.permit_root_login: - return True - - for opt in config.permit_root_login: -- if opt.value != "yes" and opt.in_match is not None \ -- and opt.in_match[0].lower() != 'all': -- in_match_disabled = True -- -- if opt.value == "yes" and (opt.in_match is None or -- opt.in_match[0].lower() == 'all'): -- globally_enabled = True -+ if opt.value == "yes" and opt.in_match is not None and \ -+ opt.in_match[0].lower() != 'all': -+ in_match_enabled = True - -- return not globally_enabled and in_match_disabled -+ return config_global_value is None and not in_match_enabled --- -2.35.3 - diff --git a/SOURCES/0024-Pass-enable-root-auth-post-install-script.patch b/SOURCES/0024-Pass-enable-root-auth-post-install-script.patch deleted file mode 100644 index 6809330..0000000 --- a/SOURCES/0024-Pass-enable-root-auth-post-install-script.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 2bc5a6822b9854eba001df435832a4d240cfe641 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Thu, 28 Apr 2022 11:40:07 +0200 -Subject: [PATCH 24/39] Pass enable root auth post-install-script - -This should allow root auth on every guest, even those that -don't have it enabled by default. - -OAMG-6748 ---- - .github/workflows/tmt-tests.yml | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml -index 75768e51..2b10571d 100644 ---- a/.github/workflows/tmt-tests.yml -+++ b/.github/workflows/tmt-tests.yml -@@ -166,6 +166,7 @@ jobs: - # preparation moved out to a different workflow and the rest split into 2 workflows - 7to8 and 8to9 that are - # triggered on a specific repository dispatch event. - update_pull_request_status: 'false' -+ environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' - - - name: Schedule regression testing for 8to9 - id: run_test_8to9 -@@ -194,3 +195,4 @@ jobs: - # preparation moved out to a different workflow and the rest split into 2 workflows - 7to8 and 8to9 that are - # triggered on a specific repository dispatch event. - update_pull_request_status: 'false' -+ environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' --- -2.35.3 - diff --git a/SOURCES/0025-Pin-version-to-1.2.10.patch b/SOURCES/0025-Pin-version-to-1.2.10.patch deleted file mode 100644 index aa0e07e..0000000 --- a/SOURCES/0025-Pin-version-to-1.2.10.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 85e0cea9d871be12e29c05dcbb485b051325ff98 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Thu, 28 Apr 2022 14:02:27 +0200 -Subject: [PATCH 25/39] Pin version to 1.2.10 - -This version of tft github action should have the support for -environment_settings parameter. ---- - .github/workflows/tmt-tests.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml -index 2b10571d..24334978 100644 ---- a/.github/workflows/tmt-tests.yml -+++ b/.github/workflows/tmt-tests.yml -@@ -144,7 +144,7 @@ jobs: - id: run_test_7to8 - env: - ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0};{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} -- uses: sclorg/testing-farm-as-github-action@v1.2.9 -+ uses: sclorg/testing-farm-as-github-action@v1.2.10 - with: - # required - api_url: ${{ secrets.TF_ENDPOINT }} -@@ -172,7 +172,7 @@ jobs: - id: run_test_8to9 - env: - ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0};{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} -- uses: sclorg/testing-farm-as-github-action@v1.2.9 -+ uses: sclorg/testing-farm-as-github-action@v1.2.10 - with: - # required - api_url: ${{ secrets.TF_ENDPOINT }} --- -2.35.3 - diff --git a/SOURCES/0026-Drop-the-checkcpu-actor-from-the-el8toel9-repo.patch b/SOURCES/0026-Drop-the-checkcpu-actor-from-the-el8toel9-repo.patch deleted file mode 100644 index bd7586e..0000000 --- a/SOURCES/0026-Drop-the-checkcpu-actor-from-the-el8toel9-repo.patch +++ /dev/null @@ -1,168 +0,0 @@ -From f5adf078b700d60e5863e03cb71401e546789f2f Mon Sep 17 00:00:00 2001 -From: Petr Stodulka -Date: Wed, 18 May 2022 10:34:36 +0200 -Subject: [PATCH 26/39] Drop the checkcpu actor from the el8toel9 repo - -The actor has been supposed to be removed a time ago already -as this functionality is handled in generic way by - common/actors/checkdetecteddevicesanddrivers -As this actor still exists it breaks the expectation the CPU check -is driven by the `device_driver_deprecation_data.json` file. Regarding -that, we cannot dynamically react to changes around supported CPUs -on s390x (IBM Z) architecture for IPU 8 -> 9. - -This relates to BZ: https://bugzilla.redhat.com/show_bug.cgi?id=2087664 -The bz is reported for IPU 7 -> 8, however the problem is on IPU 8 -> 9 -as well and we cannot handle via data files due to this actor. -So dropping it. ---- - .../el8toel9/actors/checkcpu/actor.py | 23 -------- - .../el8toel9/actors/checkcpu/libraries/cpu.py | 41 ------------- - .../actors/checkcpu/tests/test_checkcpu.py | 57 ------------------- - 3 files changed, 121 deletions(-) - delete mode 100644 repos/system_upgrade/el8toel9/actors/checkcpu/actor.py - delete mode 100644 repos/system_upgrade/el8toel9/actors/checkcpu/libraries/cpu.py - delete mode 100644 repos/system_upgrade/el8toel9/actors/checkcpu/tests/test_checkcpu.py - -diff --git a/repos/system_upgrade/el8toel9/actors/checkcpu/actor.py b/repos/system_upgrade/el8toel9/actors/checkcpu/actor.py -deleted file mode 100644 -index 7b61bd34..00000000 ---- a/repos/system_upgrade/el8toel9/actors/checkcpu/actor.py -+++ /dev/null -@@ -1,23 +0,0 @@ --from leapp.actors import Actor --from leapp.libraries.actor import cpu --from leapp.models import CPUInfo, Report --from leapp.tags import ChecksPhaseTag, IPUWorkflowTag -- -- --class CheckCPU(Actor): -- """ -- Check whether the CPU is supported by the target system. Inhibit upgrade if not. -- -- Currently we know just about cases with s390x where the set of CPUs supported -- by RHEL 9 is subset of CPUs supported on RHEL 8. We can detect such cases based -- on the machine field inside the /proc/cpuinfo file. expected values of the -- field on supported machines are: 3906, 3907, 8561, 8562. -- """ -- -- name = "checkcpu" -- consumes = (CPUInfo,) -- produces = (Report,) -- tags = (ChecksPhaseTag, IPUWorkflowTag,) -- -- def process(self): -- cpu.process() -diff --git a/repos/system_upgrade/el8toel9/actors/checkcpu/libraries/cpu.py b/repos/system_upgrade/el8toel9/actors/checkcpu/libraries/cpu.py -deleted file mode 100644 -index 79682247..00000000 ---- a/repos/system_upgrade/el8toel9/actors/checkcpu/libraries/cpu.py -+++ /dev/null -@@ -1,41 +0,0 @@ -- --from leapp import reporting --from leapp.exceptions import StopActorExecutionError --from leapp.libraries.common.config import architecture --from leapp.libraries.stdlib import api --from leapp.models import CPUInfo -- --SUPPORTED_MACHINE_TYPES = [3906, 3907, 8561, 8562] -- -- --def process(): -- if not architecture.matches_architecture(architecture.ARCH_S390X): -- return -- cpuinfo = next(api.consume(CPUInfo), None) -- if cpuinfo is None: -- raise StopActorExecutionError(message=("Missing information about CPU.")) -- -- if not cpuinfo.machine_type: -- # this is not expected to happen, but in case... -- api.current_logger().warning("The machine (CPU) type is empty.") -- -- if cpuinfo.machine_type not in SUPPORTED_MACHINE_TYPES: -- summary = ("The system is not possible to upgrade because of unsupported" -- " type of the processor. Based on the official documentation," -- " z14 and z15 processors are supported on the Red Hat Enterprise" -- " Linux 9 system for the IBM Z architecture. The supported processors" -- " have machine types {}. The detected machine type of the CPU is '{}'." -- .format(", ".join([str(i) for i in SUPPORTED_MACHINE_TYPES]), cpuinfo.machine_type)) -- report = [ -- reporting.Title("The processor is not supported by the target system."), -- reporting.Summary(summary), -- reporting.Severity(reporting.Severity.HIGH), -- reporting.Tags([reporting.Tags.SANITY]), -- reporting.Flags([reporting.Flags.INHIBITOR]), -- reporting.ExternalLink( -- title="Considerations in adopting RHEL 8", -- url=("https://access.redhat.com/ecosystem/hardware/#/search?p=1&" -- "c_version=Red%20Hat%20Enterprise%20Linux%208&ch_architecture=s390x")) -- ] -- # FIXME(dhorak): update the URL to the document once it exists -- reporting.create_report(report) -diff --git a/repos/system_upgrade/el8toel9/actors/checkcpu/tests/test_checkcpu.py b/repos/system_upgrade/el8toel9/actors/checkcpu/tests/test_checkcpu.py -deleted file mode 100644 -index 9cb11986..00000000 ---- a/repos/system_upgrade/el8toel9/actors/checkcpu/tests/test_checkcpu.py -+++ /dev/null -@@ -1,57 +0,0 @@ --import logging -- --import pytest -- --from leapp import reporting --from leapp.exceptions import StopActorExecutionError --from leapp.libraries.actor import cpu --from leapp.libraries.common import testutils --from leapp.libraries.common.config import architecture --from leapp.libraries.common.testutils import CurrentActorMocked --from leapp.libraries.stdlib import api --from leapp.models import CPUInfo -- -- --def test_non_ibmz_arch(monkeypatch): -- monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_X86_64)) -- monkeypatch.setattr(reporting, "create_report", testutils.create_report_mocked()) -- cpu.process() -- assert not reporting.create_report.called -- -- --def test_ibmz_arch_missing_cpuinfo(monkeypatch): -- monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_S390X)) -- monkeypatch.setattr(reporting, "create_report", testutils.create_report_mocked()) -- monkeypatch.setattr(api, 'consume', lambda x: iter([])) -- with pytest.raises(StopActorExecutionError): -- cpu.process() -- assert not reporting.create_report.called -- -- --def test_ibmz_cpu_supported(monkeypatch): -- monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_S390X)) -- monkeypatch.setattr(reporting, "create_report", testutils.create_report_mocked()) -- for sup_arch in cpu.SUPPORTED_MACHINE_TYPES: -- monkeypatch.setattr(api, 'consume', lambda x: iter([CPUInfo(machine_type=sup_arch)])) -- cpu.process() -- assert not reporting.create_report.called -- -- --def test_ibmz_cpu_unsupported(monkeypatch): -- title_msg = 'The processor is not supported by the target system.' -- monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_S390X)) -- monkeypatch.setattr(api, 'consume', lambda x: iter([CPUInfo(machine_type=666)])) -- monkeypatch.setattr(reporting, "create_report", testutils.create_report_mocked()) -- cpu.process() -- assert reporting.create_report.called -- assert title_msg == reporting.create_report.report_fields['title'] -- assert reporting.Flags.INHIBITOR in reporting.create_report.report_fields['flags'] -- -- --def test_ibmz_cpu_is_empty(monkeypatch, caplog): -- monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(architecture.ARCH_S390X)) -- monkeypatch.setattr(reporting, "create_report", testutils.create_report_mocked()) -- monkeypatch.setattr(api, 'consume', lambda x: iter([CPUInfo(machine_type=None)])) -- with caplog.at_level(logging.DEBUG): -- cpu.process() -- assert 'The machine (CPU) type is empty.' in caplog.text --- -2.35.3 - diff --git a/SOURCES/0027-BZ-2087144-do-not-enable-Ansible-repository-when-upg.patch b/SOURCES/0027-BZ-2087144-do-not-enable-Ansible-repository-when-upg.patch deleted file mode 100644 index 500f2c5..0000000 --- a/SOURCES/0027-BZ-2087144-do-not-enable-Ansible-repository-when-upg.patch +++ /dev/null @@ -1,51 +0,0 @@ -From ce02fa83a2f3cff089133ed9bb05dbdd6755132d Mon Sep 17 00:00:00 2001 -From: Evgeni Golov -Date: Tue, 17 May 2022 15:01:23 +0200 -Subject: [PATCH 27/39] BZ#2087144 - do not enable Ansible repository when - upgrading Satellite - -Having it enabled, confuses the upgrade as there is now also -ansible-core in RHEL 8.6 and we need to upgrade to that instead of -legacy Ansible from the dedicated repository. ---- - .../el7toel8/actors/satellite_upgrade_facts/actor.py | 3 +-- - .../tests/unit_test_satellite_upgrade_facts.py | 2 -- - 2 files changed, 1 insertion(+), 4 deletions(-) - -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -index fb83107e..12c0fa53 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -@@ -129,8 +129,7 @@ class SatelliteUpgradeFacts(Actor): - modules_to_enable=modules_to_enable - ) - ) -- repositories_to_enable = ['ansible-2.9-for-rhel-8-x86_64-rpms', -- 'satellite-maintenance-6.11-for-rhel-8-x86_64-rpms'] -+ repositories_to_enable = ['satellite-maintenance-6.11-for-rhel-8-x86_64-rpms'] - if has_package(InstalledRPM, 'foreman'): - repositories_to_enable.append('satellite-6.11-for-rhel-8-x86_64-rpms') - else: -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -index e77b7b58..28b9f44b 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -@@ -103,7 +103,6 @@ def test_enables_right_repositories_on_satellite(current_actor_context): - - rpmmessage = current_actor_context.consume(RepositoriesSetupTasks)[0] - -- assert 'ansible-2.9-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable - assert 'satellite-maintenance-6.11-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable - assert 'satellite-6.11-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable - assert 'satellite-capsule-6.11-for-rhel-8-x86_64-rpms' not in rpmmessage.to_enable -@@ -115,7 +114,6 @@ def test_enables_right_repositories_on_capsule(current_actor_context): - - rpmmessage = current_actor_context.consume(RepositoriesSetupTasks)[0] - -- assert 'ansible-2.9-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable - assert 'satellite-maintenance-6.11-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable - assert 'satellite-6.11-for-rhel-8-x86_64-rpms' not in rpmmessage.to_enable - assert 'satellite-capsule-6.11-for-rhel-8-x86_64-rpms' in rpmmessage.to_enable --- -2.35.3 - diff --git a/SOURCES/0028-call-Satellite-installer-with-disable-system-checks-.patch b/SOURCES/0028-call-Satellite-installer-with-disable-system-checks-.patch deleted file mode 100644 index 3fabc2b..0000000 --- a/SOURCES/0028-call-Satellite-installer-with-disable-system-checks-.patch +++ /dev/null @@ -1,135 +0,0 @@ -From f858a2a87edc602c976342e22538bf44249f9d1e Mon Sep 17 00:00:00 2001 -From: Evgeni Golov -Date: Mon, 4 Apr 2022 09:10:45 +0200 -Subject: [PATCH 28/39] call Satellite installer with --disable-system-checks - if possible - -The installer has a set of checks to verify whether the current system -is suitable for running Satellite. The administrator of the system can -choose to ignore those checks with `--disable-system-checks`. - -As the installer invocation inside LEAPP is non-interactive, we should -err on the side of not running checks, so that the upgrade doesn't abort -in the case where the administrator has chosen to ignore the warnings. - -This is in line with other non-interactive invocations of the installer -that other tools (like foreman-maintain) do. - -The "if katello installer" logic is needed, as the checks and the cli -parameter is only present in Katello installations, not plain Foreman. ---- - .../actors/satellite_upgrade_facts/actor.py | 3 +++ - .../tests/unit_test_satellite_upgrade_facts.py | 15 +++++++++++++++ - .../el7toel8/actors/satellite_upgrader/actor.py | 6 +++++- - .../tests/unit_test_satellite_upgrader.py | 11 +++++++++++ - repos/system_upgrade/el7toel8/models/satellite.py | 2 ++ - 5 files changed, 36 insertions(+), 1 deletion(-) - -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -index 12c0fa53..c837b449 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -@@ -32,6 +32,8 @@ class SatelliteUpgradeFacts(Actor): - if not has_foreman: - return - -+ has_katello_installer = has_package(InstalledRPM, 'foreman-installer-katello') -+ - local_postgresql = has_package(InstalledRPM, 'rh-postgresql12-postgresql-server') - postgresql_contrib = has_package(InstalledRPM, 'rh-postgresql12-postgresql-contrib') - postgresql_evr = has_package(InstalledRPM, 'rh-postgresql12-postgresql-evr') -@@ -114,6 +116,7 @@ class SatelliteUpgradeFacts(Actor): - - self.produce(SatelliteFacts( - has_foreman=has_foreman, -+ has_katello_installer=has_katello_installer, - postgresql=SatellitePostgresqlFacts( - local_postgresql=local_postgresql, - old_var_lib_pgsql_data=old_pgsql_data, -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -index 28b9f44b..fceda925 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -@@ -21,6 +21,7 @@ def fake_package(pkg_name): - - FOREMAN_RPM = fake_package('foreman') - FOREMAN_PROXY_RPM = fake_package('foreman-proxy') -+KATELLO_INSTALLER_RPM = fake_package('foreman-installer-katello') - KATELLO_RPM = fake_package('katello') - POSTGRESQL_RPM = fake_package('rh-postgresql12-postgresql-server') - -@@ -46,6 +47,20 @@ def test_satellite_capsule_present(current_actor_context): - assert message.has_foreman - - -+def test_no_katello_installer_present(current_actor_context): -+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM])) -+ current_actor_context.run() -+ message = current_actor_context.consume(SatelliteFacts)[0] -+ assert not message.has_katello_installer -+ -+ -+def test_katello_installer_present(current_actor_context): -+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, KATELLO_INSTALLER_RPM])) -+ current_actor_context.run() -+ message = current_actor_context.consume(SatelliteFacts)[0] -+ assert message.has_katello_installer -+ -+ - def test_enables_ruby_module(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM])) - current_actor_context.run() -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrader/actor.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrader/actor.py -index 28d5edd9..bd1a5d68 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrader/actor.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrader/actor.py -@@ -19,9 +19,13 @@ class SatelliteUpgrader(Actor): - if not facts or not facts.has_foreman: - return - -+ installer_cmd = ['foreman-installer'] -+ if facts.has_katello_installer: -+ installer_cmd.append('--disable-system-checks') -+ - api.current_actor().show_message('Running the installer. This can take a while.') - try: -- run(['foreman-installer']) -+ run(installer_cmd) - except OSError as e: - api.current_logger().error('Failed to run `foreman-installer`: {}'.format(str(e))) - except CalledProcessError: -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py -index 886d6879..d62815ca 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrader/tests/unit_test_satellite_upgrader.py -@@ -21,4 +21,15 @@ def test_run_installer(monkeypatch, current_actor_context): - current_actor_context.run() - assert mocked_run.commands - assert len(mocked_run.commands) == 1 -+ assert mocked_run.commands[0] == ['foreman-installer', '--disable-system-checks'] -+ -+ -+def test_run_installer_without_katello(monkeypatch, current_actor_context): -+ mocked_run = MockedRun() -+ monkeypatch.setattr('leapp.libraries.stdlib.run', mocked_run) -+ current_actor_context.feed(SatelliteFacts(has_foreman=True, has_katello_installer=False, -+ postgresql=SatellitePostgresqlFacts())) -+ current_actor_context.run() -+ assert mocked_run.commands -+ assert len(mocked_run.commands) == 1 - assert mocked_run.commands[0] == ['foreman-installer'] -diff --git a/repos/system_upgrade/el7toel8/models/satellite.py b/repos/system_upgrade/el7toel8/models/satellite.py -index 9f962c7f..b4282790 100644 ---- a/repos/system_upgrade/el7toel8/models/satellite.py -+++ b/repos/system_upgrade/el7toel8/models/satellite.py -@@ -22,5 +22,7 @@ class SatelliteFacts(Model): - - has_foreman = fields.Boolean(default=False) - """Whether or not foreman is installed on this system""" -+ has_katello_installer = fields.Boolean(default=True) -+ """Whether or not the installer supports Katello additions""" - postgresql = fields.Model(SatellitePostgresqlFacts) - """ Foreman related PostgreSQL facts """ --- -2.35.3 - diff --git a/SOURCES/0029-Allow-specifying-report-schema-1.2.0.patch b/SOURCES/0029-Allow-specifying-report-schema-1.2.0.patch deleted file mode 100644 index 6727033..0000000 --- a/SOURCES/0029-Allow-specifying-report-schema-1.2.0.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 87048e486fd7b89609907fce9732d525932f0912 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Fri, 1 Apr 2022 12:40:02 +0200 -Subject: [PATCH 29/39] Allow specifying --report-schema 1.2.0 - -This version will display actors' tags and flags as -groups in the final leapp report. - -OAMG-1429 ---- - commands/preupgrade/__init__.py | 7 ++++--- - commands/upgrade/__init__.py | 7 ++++--- - commands/upgrade/util.py | 8 -------- - 3 files changed, 8 insertions(+), 14 deletions(-) - -diff --git a/commands/preupgrade/__init__.py b/commands/preupgrade/__init__.py -index 46812b36..be2c7be8 100644 ---- a/commands/preupgrade/__init__.py -+++ b/commands/preupgrade/__init__.py -@@ -27,8 +27,8 @@ from leapp.utils.output import beautify_actor_exception, report_errors, report_i - @command_opt('target', choices=command_utils.get_supported_target_versions(), - help='Specify RHEL version to upgrade to for {} detected upgrade flavour'.format( - command_utils.get_upgrade_flavour())) --@command_opt('report-schema', help='Specify report schema version for leapp-report.json', choices=['1.0.0', '1.1.0'], -- default=get_config().get('report', 'schema')) -+@command_opt('report-schema', help='Specify report schema version for leapp-report.json', -+ choices=['1.0.0', '1.1.0', '1.2.0'], default=get_config().get('report', 'schema')) - @breadcrumbs.produces_breadcrumbs - def preupgrade(args, breadcrumbs): - util.disable_database_sync() -@@ -38,7 +38,8 @@ def preupgrade(args, breadcrumbs): - configuration = util.prepare_configuration(args) - answerfile_path = cfg.get('report', 'answerfile') - userchoices_path = cfg.get('report', 'userchoices') -- report_schema = util.process_report_schema(args, cfg) -+ # NOTE(ivasilev) argparse choices and defaults in enough for validation -+ report_schema = args.report_schema - - if os.getuid(): - raise CommandError('This command has to be run under the root user.') -diff --git a/commands/upgrade/__init__.py b/commands/upgrade/__init__.py -index b64e4d77..39bfd525 100644 ---- a/commands/upgrade/__init__.py -+++ b/commands/upgrade/__init__.py -@@ -33,8 +33,8 @@ from leapp.utils.output import beautify_actor_exception, report_errors, report_i - @command_opt('target', choices=command_utils.get_supported_target_versions(), - help='Specify RHEL version to upgrade to for {} detected upgrade flavour'.format( - command_utils.get_upgrade_flavour())) --@command_opt('report-schema', help='Specify report schema version for leapp-report.json', choices=['1.0.0', '1.1.0'], -- default=get_config().get('report', 'schema')) -+@command_opt('report-schema', help='Specify report schema version for leapp-report.json', -+ choices=['1.0.0', '1.1.0', '1.2.0'], default=get_config().get('report', 'schema')) - @breadcrumbs.produces_breadcrumbs - def upgrade(args, breadcrumbs): - skip_phases_until = None -@@ -49,7 +49,8 @@ def upgrade(args, breadcrumbs): - only_with_tags = args.only_with_tags if 'only_with_tags' in args else None - resume_context = args.resume_context if 'resume_context' in args else None - -- report_schema = util.process_report_schema(args, cfg) -+ # NOTE(ivasilev) argparse choices and defaults in enough for validation -+ report_schema = args.report_schema - - if os.getuid(): - raise CommandError('This command has to be run under the root user.') -diff --git a/commands/upgrade/util.py b/commands/upgrade/util.py -index 22466ab7..ce0b5433 100644 ---- a/commands/upgrade/util.py -+++ b/commands/upgrade/util.py -@@ -228,11 +228,3 @@ def process_whitelist_experimental(repositories, workflow, configuration, logger - if logger: - logger.error(msg) - raise CommandError(msg) -- -- --def process_report_schema(args, configuration): -- default_report_schema = configuration.get('report', 'schema') -- if args.report_schema and args.report_schema > default_report_schema: -- raise CommandError('--report-schema version can not be greater that the ' -- 'actual {} one.'.format(default_report_schema)) -- return args.report_schema or default_report_schema --- -2.35.3 - diff --git a/SOURCES/0030-restrict-Satellite-upgrades-to-x86_64.patch b/SOURCES/0030-restrict-Satellite-upgrades-to-x86_64.patch deleted file mode 100644 index b5a12ec..0000000 --- a/SOURCES/0030-restrict-Satellite-upgrades-to-x86_64.patch +++ /dev/null @@ -1,113 +0,0 @@ -From d239a9f64462c7af8aa1d4c9e3484ac647054a4c Mon Sep 17 00:00:00 2001 -From: Evgeni Golov -Date: Fri, 8 Apr 2022 09:15:52 +0200 -Subject: [PATCH 30/39] restrict Satellite upgrades to x86_64 - ---- - .../actors/satellite_upgrade_facts/actor.py | 4 ++++ - .../unit_test_satellite_upgrade_facts.py | 22 +++++++++++++------ - 2 files changed, 19 insertions(+), 7 deletions(-) - -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -index c837b449..8b1f5625 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/actor.py -@@ -1,6 +1,7 @@ - import os - - from leapp.actors import Actor -+from leapp.libraries.common.config import architecture - from leapp.libraries.common.rpms import has_package - from leapp.libraries.stdlib import run - from leapp.models import ( -@@ -28,6 +29,9 @@ class SatelliteUpgradeFacts(Actor): - tags = (IPUWorkflowTag, FactsPhaseTag) - - def process(self): -+ if not architecture.matches_architecture(architecture.ARCH_X86_64): -+ return -+ - has_foreman = has_package(InstalledRPM, 'foreman') or has_package(InstalledRPM, 'foreman-proxy') - if not has_foreman: - return -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -index fceda925..0b6f6c1d 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -@@ -1,5 +1,6 @@ - import os - -+from leapp.libraries.common.config import mock_configs - from leapp.models import ( - DNFWorkaround, - InstalledRPM, -@@ -28,21 +29,28 @@ POSTGRESQL_RPM = fake_package('rh-postgresql12-postgresql-server') - - def test_no_satellite_present(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - message = current_actor_context.consume(SatelliteFacts) - assert not message - - - def test_satellite_present(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - message = current_actor_context.consume(SatelliteFacts)[0] - assert message.has_foreman - - -+def test_wrong_arch(current_actor_context): -+ current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM])) -+ current_actor_context.run(config_model=mock_configs.CONFIG_S390X) -+ message = current_actor_context.consume(SatelliteFacts) -+ assert not message -+ -+ - def test_satellite_capsule_present(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_PROXY_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - message = current_actor_context.consume(SatelliteFacts)[0] - assert message.has_foreman - -@@ -63,14 +71,14 @@ def test_katello_installer_present(current_actor_context): - - def test_enables_ruby_module(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - message = current_actor_context.consume(RpmTransactionTasks)[0] - assert Module(name='ruby', stream='2.7') in message.modules_to_enable - - - def test_enables_pki_modules(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, KATELLO_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - message = current_actor_context.consume(RpmTransactionTasks)[0] - assert Module(name='pki-core', stream='10.6') in message.modules_to_enable - assert Module(name='pki-deps', stream='10.6') in message.modules_to_enable -@@ -88,7 +96,7 @@ def test_detects_local_postgresql(monkeypatch, current_actor_context): - monkeypatch.setattr("os.stat", mock_stat()) - - current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, POSTGRESQL_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - - rpmmessage = current_actor_context.consume(RpmTransactionTasks)[0] - assert Module(name='postgresql', stream='12') in rpmmessage.modules_to_enable -@@ -101,7 +109,7 @@ def test_detects_local_postgresql(monkeypatch, current_actor_context): - - def test_detects_remote_postgresql(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - - rpmmessage = current_actor_context.consume(RpmTransactionTasks)[0] - assert Module(name='postgresql', stream='12') not in rpmmessage.modules_to_enable --- -2.35.3 - diff --git a/SOURCES/0031-Add-missing-documentation-link-to-the-SFTP-deprecati.patch b/SOURCES/0031-Add-missing-documentation-link-to-the-SFTP-deprecati.patch deleted file mode 100644 index 9c0f03b..0000000 --- a/SOURCES/0031-Add-missing-documentation-link-to-the-SFTP-deprecati.patch +++ /dev/null @@ -1,30 +0,0 @@ -From ef967d029a8d3724d187ca4cd558bf4f52f8a295 Mon Sep 17 00:00:00 2001 -From: Jakub Jelen -Date: Wed, 18 May 2022 12:26:57 +0200 -Subject: [PATCH 31/39] Add missing documentation link to the SFTP deprecation - -Related: #863 -Signed-off-by: Jakub Jelen ---- - .../opensshsubsystemsftp/libraries/opensshsubsystemsftp.py | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/libraries/opensshsubsystemsftp.py b/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/libraries/opensshsubsystemsftp.py -index b60c08ca..20af2b39 100644 ---- a/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/libraries/opensshsubsystemsftp.py -+++ b/repos/system_upgrade/el8toel9/actors/opensshsubsystemsftp/libraries/opensshsubsystemsftp.py -@@ -24,7 +24,10 @@ def process(openssh_messages): - title="SCP support in RHEL", - url="https://access.redhat.com/articles/5284081", - ), -- # TODO provide a link to documentation or blog post -+ reporting.ExternalLink( -+ title="OpenSSH SCP deprecation in RHEL 9: What you need to know ", -+ url="https://www.redhat.com/en/blog/openssh-scp-deprecation-rhel-9-what-you-need-know", -+ ), - ] - reporting.create_report([ - reporting.Title('OpenSSH configured without SFTP subsystem'), --- -2.35.3 - diff --git a/SOURCES/0032-Fix-satellite-actor-due-to-some-oversight-of-a-missi.patch b/SOURCES/0032-Fix-satellite-actor-due-to-some-oversight-of-a-missi.patch deleted file mode 100644 index 845f9df..0000000 --- a/SOURCES/0032-Fix-satellite-actor-due-to-some-oversight-of-a-missi.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 2d41d5f9186b642396bbad57ce7e11ebbdf1c52c Mon Sep 17 00:00:00 2001 -From: Vinzenz Feenstra -Date: Thu, 19 May 2022 13:05:03 +0200 -Subject: [PATCH 32/39] Fix satellite actor due to some oversight of a missing - parameter - -Signed-off-by: Vinzenz Feenstra ---- - .../tests/unit_test_satellite_upgrade_facts.py | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -index 0b6f6c1d..e70554a4 100644 ---- a/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -+++ b/repos/system_upgrade/el7toel8/actors/satellite_upgrade_facts/tests/unit_test_satellite_upgrade_facts.py -@@ -57,14 +57,14 @@ def test_satellite_capsule_present(current_actor_context): - - def test_no_katello_installer_present(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - message = current_actor_context.consume(SatelliteFacts)[0] - assert not message.has_katello_installer - - - def test_katello_installer_present(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM, KATELLO_INSTALLER_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - message = current_actor_context.consume(SatelliteFacts)[0] - assert message.has_katello_installer - -@@ -122,7 +122,7 @@ def test_detects_remote_postgresql(current_actor_context): - - def test_enables_right_repositories_on_satellite(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - - rpmmessage = current_actor_context.consume(RepositoriesSetupTasks)[0] - -@@ -133,7 +133,7 @@ def test_enables_right_repositories_on_satellite(current_actor_context): - - def test_enables_right_repositories_on_capsule(current_actor_context): - current_actor_context.feed(InstalledRPM(items=[FOREMAN_PROXY_RPM])) -- current_actor_context.run() -+ current_actor_context.run(config_model=mock_configs.CONFIG) - - rpmmessage = current_actor_context.consume(RepositoriesSetupTasks)[0] - --- -2.35.3 - diff --git a/SOURCES/0033-Drop-the-obsoleted-copr-build-job.patch b/SOURCES/0033-Drop-the-obsoleted-copr-build-job.patch deleted file mode 100644 index fe5fdd5..0000000 --- a/SOURCES/0033-Drop-the-obsoleted-copr-build-job.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 9049c65f73524c34f40f4da0a1f07b3d58d09f60 Mon Sep 17 00:00:00 2001 -From: Petr Stodulka -Date: Thu, 28 Apr 2022 14:28:14 +0200 -Subject: [PATCH 33/39] Drop the obsoleted copr-build job - -This job is already obsoleted as nowadays the builds are delivered -by Packit. - -Also this is only failing recent month. So it seems there is no need -for this. ---- - .github/workflows/copr-build.yml | 35 -------------------------------- - 1 file changed, 35 deletions(-) - delete mode 100644 .github/workflows/copr-build.yml - -diff --git a/.github/workflows/copr-build.yml b/.github/workflows/copr-build.yml -deleted file mode 100644 -index 8252e327..00000000 ---- a/.github/workflows/copr-build.yml -+++ /dev/null -@@ -1,35 +0,0 @@ --name: copr-build -- --on: -- push: -- branches: -- - master -- --jobs: -- copr_build: -- name: Create copr build -- runs-on: ubuntu-20.04 -- if: github.repository_owner == 'oamg' -- steps: -- - name: Checkout -- id: checkout -- uses: actions/checkout@v2 -- with: -- ref: "refs/heads/master" -- -- - name: Trigger fedora copr build -- id: trigger_fedora_build -- env: -- COPR_CONFIG: "copr_fedora.conf" -- COPR_CHROOT: "epel-7-x86_64,epel-8-x86_64" -- run: | -- cat << EOF > $COPR_CONFIG -- [copr-cli] -- login = ${{ secrets.FEDORA_COPR_LOGIN }} -- username = @oamg -- token = ${{ secrets.FEDORA_COPR_TOKEN }} -- copr_url = https://copr.fedorainfracloud.org -- EOF -- -- pip install copr-cli -- COPR_CONFIG=$COPR_CONFIG COPR_CHROOT=$COPR_CHROOT make copr_build --- -2.35.3 - diff --git a/SOURCES/0034-Add-prod-certs-for-8.7-9.1-Beta-GA.patch b/SOURCES/0034-Add-prod-certs-for-8.7-9.1-Beta-GA.patch deleted file mode 100644 index eef24c2..0000000 --- a/SOURCES/0034-Add-prod-certs-for-8.7-9.1-Beta-GA.patch +++ /dev/null @@ -1,701 +0,0 @@ -From 2f747a9baf0ff69e2f1be3809edb2f92e4aba35f Mon Sep 17 00:00:00 2001 -From: Petr Stodulka -Date: Tue, 17 May 2022 16:21:22 +0200 -Subject: [PATCH 34/39] Add prod certs for 8.7 & 9.1 (Beta + GA) - ---- - .../common/files/prod-certs/8.7/279.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/8.7/362.pem | 36 +++++++++++++++++++ - .../common/files/prod-certs/8.7/363.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/8.7/419.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/8.7/433.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/8.7/479.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/8.7/486.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/8.7/72.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/9.1/279.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/9.1/362.pem | 36 +++++++++++++++++++ - .../common/files/prod-certs/9.1/363.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/9.1/419.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/9.1/433.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/9.1/479.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/9.1/486.pem | 35 ++++++++++++++++++ - .../common/files/prod-certs/9.1/72.pem | 35 ++++++++++++++++++ - 16 files changed, 562 insertions(+) - create mode 100644 repos/system_upgrade/common/files/prod-certs/8.7/279.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/8.7/362.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/8.7/363.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/8.7/419.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/8.7/433.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/8.7/479.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/8.7/486.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/8.7/72.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/9.1/279.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/9.1/362.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/9.1/363.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/9.1/419.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/9.1/433.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/9.1/479.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/9.1/486.pem - create mode 100644 repos/system_upgrade/common/files/prod-certs/9.1/72.pem - -diff --git a/repos/system_upgrade/common/files/prod-certs/8.7/279.pem b/repos/system_upgrade/common/files/prod-certs/8.7/279.pem -new file mode 100644 -index 00000000..c4ce4d7f ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/8.7/279.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGJTCCBA2gAwIBAgIJALDxRLt/tU7bMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDExMDEwMDI0NVoXDTQyMDEw -+NTEwMDI0NVowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFs2ZmYyMjVj -+ZC02YjgwLTRlMzEtODNkOC02ZTM4MzY5MmU4OGNdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBrjCBqzAJBgNVHRMEAjAAMEMGDCsGAQQBkggJAYIXAQQzDDFSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIFBvd2VyLCBsaXR0bGUgZW5kaWFuMBUGDCsG -+AQQBkggJAYIXAgQFDAM4LjcwGQYMKwYBBAGSCAkBghcDBAkMB3BwYzY0bGUwJwYM -+KwYBBAGSCAkBghcEBBcMFXJoZWwtOCxyaGVsLTgtcHBjNjRsZTANBgkqhkiG9w0B -+AQsFAAOCAgEAYvHRG1AeXwUHoGeqzzMz9Oo5a/YlWAsc5JIj72Hjggrs1dpvjO1r -+cs2aMNSYjki6QYLrSrJRbhhVT56JtpBSoBtVeh6SncLLzqe9jJsuFRDTPi99vtFL -+9Bo6BqEUgrO9jKEnUmd6Gdntj74CfCJ/QxqgJ/q6uKVKR5YjjfHa8eNcshq12mr7 -+kvjQctWkbUYDkQAwtM7jw62DuOdkHUdvXRr2Uexs98XN41gNrIzMg0yNQpf/rKq5 -+w2oqDr45nNrHkmWtEAAqCQ+gDrZBALpbtrd4CDx/65zj3+ABp8oIZP/hMxV9xf86 -++npHiCtHj6hIXy4zwFMIKCna7w29OZUcTjOZ94dHe7IjO6HLuPdJvnJBgS4mba+C -+zylck/qLyuhT+tO9rb1WhI29oq8elIVpjte1mGqtcaLnLTEBwZ4n8jhIk0Q705UX -+DUhFV+xiD+asQmdeAWO+xzUXYVrJE2tiYfPtY+apLZlW2W6vTvfGhsI28kl7INC4 -+umMiNnRB32bMiIr0wH/zqaqpUUXWlj8zitX2ZUEAaHBhKCpr+etO9oATu/RKz6Io -+OsHXLkBn6l7G3/nPXp3LVJU4D7UgSzY112GFjMibRIHX0L+d7OeP5vxevWaXMnEV -+OnVCsQNu6/haEvADf9IYkPFtS19RCKxkGsGsWrMXeyxF/4CqffjabVA= -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/8.7/362.pem b/repos/system_upgrade/common/files/prod-certs/8.7/362.pem -new file mode 100644 -index 00000000..322c85ca ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/8.7/362.pem -@@ -0,0 +1,36 @@ -+-----BEGIN CERTIFICATE----- -+MIIGNDCCBBygAwIBAgIJALDxRLt/tU7xMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDExMDEwMDgwNFoXDTQyMDEw -+NTEwMDgwNFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFswYjFjZDBm -+My0xMzEwLTQ0ZGItYTNmNS1jNzY4OWE4ZTQyMTBdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBvTCBujAJBgNVHRMEAjAAMEgGDCsGAQQBkggJAYJqAQQ4DDZSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIFBvd2VyLCBsaXR0bGUgZW5kaWFuIEJldGEw -+GgYMKwYBBAGSCAkBgmoCBAoMCDguNyBCZXRhMBkGDCsGAQQBkggJAYJqAwQJDAdw -+cGM2NGxlMCwGDCsGAQQBkggJAYJqBAQcDBpyaGVsLTgscmhlbC04LWJldGEtcHBj -+NjRsZTANBgkqhkiG9w0BAQsFAAOCAgEAnf5WpzbOMFMIAh05C6hjWdEdF24jdSCZ -+z9tdf1VXgYwjVENO3rQqPSSFNOJi7VcCbWZ9IZQKJI+Zb06hdSn1IIVNabWs8jZT -+R+oAjjPmIulnqlnTh17JlF3cecty+GnbjitAW/AeYlql3Y1Lzy+GaAS2kERvCcCA -+yFfc7h0odQDtIyhSCB2MewDX5pVnY8e4SybIvjTSMUOzPKdUs4o0IifqoL/MvvB6 -+3tLt9ezkqoIUWGF/LbEpuvrAa7cx5Fh2JnNQGdsI8071Y8YyL0kjUMtoNf5NBI3l -+1gaFT5U2AzgnoRSlWGF/qCS3NuNZi2j6cvrUEWABrTAQlVi91Oqxhoib+KDFCZkj -+73Xuyg+wFRUiOF+WL0/Jhe3spbynXtHb8PC4E2rRXUioCUZwkqgSo13b/xgcJDML -+FRaUwARNZWfjmc+4Xxt7shzqFheshaHG7WPq8kxE6en4/yoO0imIk03ESSJSx2lB -+CWUHZpFTmIZyjYgXjoeHW0FEeS8E8sQGfoT320McEUN5FS5NX/vYgmFQUOGqniPC -+oiy07G/zdcBPTzxgcAU2CoFfXXYbEebcH14k3YbAeEOva38c+rBUa8siIozrYGyf -+cFXfbyURcRw33M322KfvLesxUhfVaTNMapVR8AbdBYmQXwLZHBmL9dC+CY7kg3W9 -+AcQ+oHoM+eE= -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/8.7/363.pem b/repos/system_upgrade/common/files/prod-certs/8.7/363.pem -new file mode 100644 -index 00000000..24c23cf8 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/8.7/363.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGJjCCBA6gAwIBAgIJALDxRLt/tU7wMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDExMDEwMDgwMFoXDTQyMDEw -+NTEwMDgwMFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFswOTVkNzhj -+OS03NTM0LTQ1YWItOGE0NC04NzA0OWZiOWJiNGJdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBrzCBrDAJBgNVHRMEAjAAMDoGDCsGAQQBkggJAYJrAQQqDChSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIEFSTSA2NCBCZXRhMBoGDCsGAQQBkggJAYJr -+AgQKDAg4LjcgQmV0YTAZBgwrBgEEAZIICQGCawMECQwHYWFyY2g2NDAsBgwrBgEE -+AZIICQGCawQEHAwacmhlbC04LHJoZWwtOC1iZXRhLWFhcmNoNjQwDQYJKoZIhvcN -+AQELBQADggIBAB8682pIKA5WtH83Hb8qNnT2URChEilvPcrFpSlJqtc8BWmcUpMq -+MRB4z3biDaWoXpHMT5FeipOuEtOLANrEcjhbd1tQqgHvlDmkbxD9fT4/aSuABikB -+14oF7o57Ys4s3NqQZ4Dl5DH4LcP9Z3WCBBcqH4SNVbeAT49QdxwI9E3Z4+HgvOgQ -+LtKqiwzOyUsYPUpPXOOOEzCbRAnaWeGX/fIH6PTusM2T/SRScHrsKDidrrobrUVq -+Rnim68FZ1bAxv7g6RHDi0S447CX4Gzy0tRFJTKdivUk9cF32AH7Q1v3cEiaImGYS -+VaznFmOdRg/gU9mV/QPy+N1hhNYf888oDprF2OPzc2tdmbBOUdZdkA5J3CXHZ+f9 -+Q5WuLsZEBeuetwk9LQA+v0gPYCXJfZAsvhdM0mQpUDW9gp2ucnu45Wm8iDmA59zM -+/uhJLRv2z9UtqEySt6OYJEd0linv0RvEwKwBPCZA3L8FKvosuIwcV+x4XTHb9f0E -+kwqRFboioJaER/K5oX0kkCaVlD/8xpuS3Qc8pN3FXD3ZiK3u2plLZh+7LWd6id+E -+VMIUej+kPAfwiXf8MDR/GZZJeIHI27C84thoq6C0AcseaO5LTUSLMaqGSSvU5yoV -+8TJr9HIJw9bFmHroWKPdtLGFCCYO7GhC25+jZn+dUYOCRCsRCaE/J4d0 -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/8.7/419.pem b/repos/system_upgrade/common/files/prod-certs/8.7/419.pem -new file mode 100644 -index 00000000..88315387 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/8.7/419.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGFzCCA/+gAwIBAgIJALDxRLt/tU7aMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDExMDEwMDI0MFoXDTQyMDEw -+NTEwMDI0MFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFs3NDJjODll -+NC0zZjM2LTQ4NTgtOTkxMy04ZTc5OTYxM2Q5NzldMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBoDCBnTAJBgNVHRMEAjAAMDUGDCsGAQQBkggJAYMjAQQlDCNSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIEFSTSA2NDAVBgwrBgEEAZIICQGDIwIEBQwD -+OC43MBkGDCsGAQQBkggJAYMjAwQJDAdhYXJjaDY0MCcGDCsGAQQBkggJAYMjBAQX -+DBVyaGVsLTgscmhlbC04LWFhcmNoNjQwDQYJKoZIhvcNAQELBQADggIBANZE6GPc -+I1/WYEDtvEMts3mLO6+NtKzd8Bt3nmMZEYorN3mZ0WjpbNuBcVlbQX87eoMLA9g2 -+P54gkuPzpY+ea1ZKYJ7zzG6AnKXNprL1RrHNkdEs79r3AM1t/m1CdlZwsSfRlGdX -+hDZR8Gy5tgX9Q75jMK/JuXuQFJiOpLIK2yeD6/9geGWv1NXbV/gkE7U+K8LwvQRa -+gR0FLzJpJlzFIbJXutldvwDm22zgECfzvfoSCFw5E7Sk+5lprVdlDMfW1t9Bj5lF -+FBDYJBT4iAXVcyRj5QBBMG1xcUxh7XEM3XiD9/2albaeTMkiIip7OCsOdPi9uPcs -+wvjgJ6+Uxd33sLnfl/hywrrKc8gZGX+IhkeNph3GMq0CwijLT6/0jA/dbYyusGDO -+OdEilyP4YIe5nltwO8rgW4AytIrX9xKfF56qjdudUNbrzLrbKF8+URwdjQBSJOdh -+q4NS9gRnaCnn6FlrpYW4aUJAjcWfugUj8dpKBIdOCZo55G3AqAAl7lv2MwibGwuw -+XX8wE5EVnr3Wq3UIiqNoGU/Gkz4sdoTXGPSMQQPWYPhJ/nUtC943d/MDZkZ1HF6L -+CwsmLK9fTstiRdm5DF6q7nAUxgXz0dslLln1WYHXi4k/x5gIZmLbLBwqfsbMg53d -+jlJwRkvUou7uq1C4Cc0oH7es4chgkyShYNyR -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/8.7/433.pem b/repos/system_upgrade/common/files/prod-certs/8.7/433.pem -new file mode 100644 -index 00000000..bed65e1c ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/8.7/433.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGKTCCBBGgAwIBAgIJALDxRLt/tU7yMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDExMDEwMDgwOFoXDTQyMDEw -+NTEwMDgwOFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtiYjg0YzZl -+MS03NGE3LTRjOTMtYjViNC01MDYzMzQxN2UxMjNdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBsjCBrzAJBgNVHRMEAjAAMEEGDCsGAQQBkggJAYMxAQQxDC9SZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIElCTSB6IFN5c3RlbXMgQmV0YTAaBgwrBgEE -+AZIICQGDMQIECgwIOC43IEJldGEwFwYMKwYBBAGSCAkBgzEDBAcMBXMzOTB4MCoG -+DCsGAQQBkggJAYMxBAQaDBhyaGVsLTgscmhlbC04LWJldGEtczM5MHgwDQYJKoZI -+hvcNAQELBQADggIBAFHSGH0JiAad8JnEJQxH7JklzxaTxLFlueLc2Q8P1wV2g+ib -+XsdmP+fq9YR56UN/3rYip6MTEwp2tTCZy9FRraLTunscYB19LwBmiYirDBNyyJms -+hCOzIN6itJrfjD7WOJ9DgEDstnEJrTW76a1TV92etWNvW3bwkktKnfHlbv2tgRSj -+44zIWaF5J9P9R4oOD27ArmR0/AK13194U8iRwJi8Tw/z90QznSYj4QGJZyBm9a/d -+alEktaNkdjNYcGczlepOwZ7pHkDyMihBUVBXLBK68j2d6OdZf9qptM5oouaIKMOp -+DBCjecfQ11q3avAjvGPAOoIuAzVlRZE1pDP2VtFPoCohWytP4QMSfvFWgFx2zWjR -+Gc0LEAHkP9iLnkqvSZfAYXdsaZ564Y1H6zv3PbQPSC540edRbWSufSa46LeR0U6+ -+zavOtchYFwZaeTZc4rzxDffMJQhv27C+QOnSth/YR2r9Yg+QfRwfmwR+zPBbbfUP -+t8dL/Es7vi3mMjmshcSvRpka1b8kMemm+xIV7zQPfpcPXGy1+SzC0jbYApE608WG -+kjqttn6qWADc3kpAFGKXf2nozwDhqKXLLVCKPcTRds+IB36wKeH6eTgS/tv6df7x -+U2CVpb5fgHz4TgZaGJPTRkzDRtRnuct6LJ/bokKrGw+9+v4WZvRrWQ4dncS+ -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/8.7/479.pem b/repos/system_upgrade/common/files/prod-certs/8.7/479.pem -new file mode 100644 -index 00000000..c79cdb7c ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/8.7/479.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGFTCCA/2gAwIBAgIJALDxRLt/tU7dMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDExMDEwMDI1M1oXDTQyMDEw -+NTEwMDI1M1owRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFsxN2ZmNWVj -+YS1kM2YyLTQ1NGYtYjliZi01MThiYmM1MDk0NzhdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBnjCBmzAJBgNVHRMEAjAAMDUGDCsGAQQBkggJAYNfAQQlDCNSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIHg4Nl82NDAVBgwrBgEEAZIICQGDXwIEBQwD -+OC43MBgGDCsGAQQBkggJAYNfAwQIDAZ4ODZfNjQwJgYMKwYBBAGSCAkBg18EBBYM -+FHJoZWwtOCxyaGVsLTgteDg2XzY0MA0GCSqGSIb3DQEBCwUAA4ICAQBvy4DLCvm7 -+gH40xQ+oGqaQ49X5dshAyIVhQ8cUhnas283F/qWDOLcPgv4qMDV0uk1GNJ89aIkj -+jDgxCXozgKZmo1AAFuWKtSrKcj0q+mV5iKKBqcc6vV6ud0WoKWNACLeDR+GkZAH8 -+WcpU/077Sv7o5Km09p2kzHDwuDbeucibrirMJ13hYqvWePnp/G149mYlplnVJnsH -+DMtVOO+NG1Z0hRXGFsq63FUBiDgeRFKNc+7lL3GAlTO47RQDkQ05BFh8Guce4LMv -+xnGrY+X0vEUyYPbOxNH6qdys6NrEg8ZxEj0iPJCqyaWFpum1/9f32CHPJ9i2+5Qm -+Sg7CRHiF6iK86DcanaIwrvuqyy+HI3G1N84SnbJilQHwiJSAyNh/7pctroHgQK0b -+K2O89xHJpG2/s0IO9/GlT1ERtBBYDNYXalkuuqaEbbBpBHTcmBmeIBg+njg9VXAv -+MsOtQad8BFl7g+iXO6xEajgt+DpfKPthtwP5vpse00EhYpoRAmCErfvxOlrRriZe -+5NBFi+VBuGTIboiu31LBHfDeTEjFNvRhoqiEY0DQgMBIXNCimfaK/BwuA/HwgL3b -+mVzOoRYeTLfRr+hovdQFrwVJLMAITS1PQReJ4OTfhG3P6ybk8eDIuK9PxV1KPCGr -+MdOPQcr4cqixZyH0ZM/961cOjvKuabHA6Q== -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/8.7/486.pem b/repos/system_upgrade/common/files/prod-certs/8.7/486.pem -new file mode 100644 -index 00000000..fbd26bfe ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/8.7/486.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGJDCCBAygAwIBAgIJALDxRLt/tU7zMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDExMDEwMDgxM1oXDTQyMDEw -+NTEwMDgxM1owRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFsyOWY3NGM1 -+MC04NzE0LTQyNWYtODg2YS03YjgwYzFkZDJmN2VdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBrTCBqjAJBgNVHRMEAjAAMDoGDCsGAQQBkggJAYNmAQQqDChSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIHg4Nl82NCBCZXRhMBoGDCsGAQQBkggJAYNm -+AgQKDAg4LjcgQmV0YTAYBgwrBgEEAZIICQGDZgMECAwGeDg2XzY0MCsGDCsGAQQB -+kggJAYNmBAQbDBlyaGVsLTgscmhlbC04LWJldGEteDg2XzY0MA0GCSqGSIb3DQEB -+CwUAA4ICAQCqoYGO8Ic681iebYurHHMm4ZszBfsG3dPqXvkYCLGIKs8y3eYWHMGt -+8PG6HdLiFuM0klz3WSfbRDFmQ2Lna4HmJSo+kzHkF27eu/4zU6h+CzHN4hI392KK -+TXcsUoAacyXyhcIHg9lZeHNDWitMyYuoJjHURnicCf3GSWvsemmyRSpZiDDMPORp -+RA7OSlfn9jH8vANX4TStbjn2Ptqd/9oowaZVeFQarpNnJjw6+5eCtm8Yp4krEa7X -+u4smSyQWO9U9/i3ITCIln1fAadrLUEg8T9hR2AptAa6QjlIE4PHy+O7BLyfNSM2k -+qVtg+ws1k7io+yz7bJzVt5MtTEmTWviy96aT8DEZm51fRkDoG0HNxtTc15bcfkw1 -+NZQ7Dll1qvn/WTkgoJ32ZR0paI790zqThmouoVRflBC0dmIqjplSzhTOsoSIDeum -+u613P77Xk2km0ll0Aw8BUG5oacoxFGY0C252Y0QMhpI8PSn9d/FUBdLD0SwG0gyd -+1j2O2rwXpoVBYTqJafy6zINGjMMYA3K1UoinL7YE8KdIv0CMewnoNILpCMdeou8g -+DvCVdRMHxlnA8upL1CjjNJeSNMAEaZjWfzdDHSIETAWs4XxFM3flBSqmX2ecspmb -+vTHBwfOYs0iuNCi+sbWCX2lb4XP1r/pvA/T1lH6k7J3ON9XOHOVWRw== -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/8.7/72.pem b/repos/system_upgrade/common/files/prod-certs/8.7/72.pem -new file mode 100644 -index 00000000..63bb2f18 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/8.7/72.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGFjCCA/6gAwIBAgIJALDxRLt/tU7cMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDExMDEwMDI0OVoXDTQyMDEw -+NTEwMDI0OVowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtkNTBkM2Vl -+Zi1iMTI0LTRkNWItYmI1Mi05OTNkNTUzYjU3YTFdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBnzCBnDAJBgNVHRMEAjAAMDsGCysGAQQBkggJAUgBBCwMKlJlZCBIYXQg -+RW50ZXJwcmlzZSBMaW51eCBmb3IgSUJNIHogU3lzdGVtczAUBgsrBgEEAZIICQFI -+AgQFDAM4LjcwFgYLKwYBBAGSCAkBSAMEBwwFczM5MHgwJAYLKwYBBAGSCAkBSAQE -+FQwTcmhlbC04LHJoZWwtOC1zMzkweDANBgkqhkiG9w0BAQsFAAOCAgEAFrbUKzXJ -+odKPWFSsCO29xwbI2udUSQNphjpumtFDgi/8fteWgb7iJtL4iGTVXjoTbS+lJkML -+1d0a20v0GcMk7oULYTzzbgSaDZ/NQmkblo9nQ3tKVb8pBcJDRZJ6OnyG/nm/dH1p -+TMXKWbLfGySlqyGyDe8F3nEQRRkJsbTkQdzC196/C8fjiTBcsS6KASQTOS9t7H8M -+zLeisuCiozMk34Vf1bbgeLNJp33ZhAbKxTble2UfrA/9VYKe/vLP/i4sUY1VcYoF -+ZEbqh3QFaTZ3mBNkENtmivKwxysWW5pa7GUbnfEO23+9flp+BLoElfMqHxmh8sdx -+7UbvdOpWhzvO+i+By26HjRv4wtjY+Wsm8kHeGT0O+dEEB1vfsRWCwHUYhEfpdoxy -+Ivo5/fi6cCETFhzeneJyOWrUsg1PnYIa6EZ7oBRrrOMpcSvgpM+MIQC/NYgwF5lh -+TWQzrSta34HZdtuwqGQ5I6etjp45OyUOcE1ww4YEHYJCoQXyHdiFDpETWYoR9x6Q -+FZ+JvLuzm61Kn3wT/H+kxFSfT8CmSc0nIGR6Fe4MEG5Ly9DH+PoDf3f7XDdIsFoX -+OU81koyfPHejg7J89hzWQh596sc+pv67l/ThfjZxjuhI2RU4P0PzXtMc/5SnQQb5 -+faCsMhoTZWRVvgumW77D0uk7k91BSVYKbkY= -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/9.1/279.pem b/repos/system_upgrade/common/files/prod-certs/9.1/279.pem -new file mode 100644 -index 00000000..23e565f8 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/9.1/279.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGJTCCBA2gAwIBAgIJALDxRLt/tU8gMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDEyNzE2MTQzNloXDTQyMDEy -+MjE2MTQzNlowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFswMjA2OWIw -+NC03ODY3LTQ2OTQtOGFlOS01MDFlMmExMDBjMDddMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBrjCBqzAJBgNVHRMEAjAAMEMGDCsGAQQBkggJAYIXAQQzDDFSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIFBvd2VyLCBsaXR0bGUgZW5kaWFuMBUGDCsG -+AQQBkggJAYIXAgQFDAM5LjEwGQYMKwYBBAGSCAkBghcDBAkMB3BwYzY0bGUwJwYM -+KwYBBAGSCAkBghcEBBcMFXJoZWwtOSxyaGVsLTktcHBjNjRsZTANBgkqhkiG9w0B -+AQsFAAOCAgEAsR3LlRmkKG8hA9H6RKEJwHxZnTb+fGF0gnYMCQYQ5z+J0LLmeP5R -+KgJP62lauRtQwsVCEyKURV8k8SBCDcQ8xpqhC/GkZRqaELo0NNgJ4KS+mmbsee88 -+VW7mU8j91n1h1Dz+7zQVrXyP/uNailjPmDKB/l9LpSTGdHVuEJMBZP9840SjCv/Q -+S2hCN5aLGf8Jg7Vz72LRUINEZW0At36MKX50NenWsD9ME45E8CRzH3Nfg/iQs8wX -+bavUDiHAwTMSHlUZRRtPQf69MIQVfr+EMGBM307GqurNdtrGreOwnRoHmvvXsa0k -+3SRZ+WUwR7ajsCA2nGn4sybYdaB4+DWMWk/ZHvWQazU7Ff0J8F6QdIMfN6g/slBC -+t4YOsmYO46oVcrYAuqIJ2E3IMzZCsz4MODGwbj8brVL5OnZ/DHPzNaKxJ/DN+YqU -+xe3j1ZKts4dRBQIuVrudp2mf8Ergrk8iqAltNpWNEZEPkLH8pNlPV3MmBEtshTWu -+pHskG2WSm+o/qM4aoKwlvROaa9xoHPtck0xYiMujrohnQWgxdlUuiQIl43yAt7m1 -+dmfm085Vgn26UrPLYYoFVOCQLiSPnVtqGIBrsC7Qp1wzNYrUfo9WI1AjTJzxwPaU -+tgsDMdfF3yQJuDw+LwL+8LHnuAGQj94+6pXfmG/n2qXhfgQDrA1uK8I= -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/9.1/362.pem b/repos/system_upgrade/common/files/prod-certs/9.1/362.pem -new file mode 100644 -index 00000000..1bf886e2 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/9.1/362.pem -@@ -0,0 +1,36 @@ -+-----BEGIN CERTIFICATE----- -+MIIGNDCCBBygAwIBAgIJALDxRLt/tU82MA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDEyNzE2MTcwM1oXDTQyMDEy -+MjE2MTcwM1owRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFs4Njc0Yjk5 -+OC1iZmU1LTRjY2MtODg4NC0zNDgwMDlhY2EzMGZdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBvTCBujAJBgNVHRMEAjAAMEgGDCsGAQQBkggJAYJqAQQ4DDZSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIFBvd2VyLCBsaXR0bGUgZW5kaWFuIEJldGEw -+GgYMKwYBBAGSCAkBgmoCBAoMCDkuMSBCZXRhMBkGDCsGAQQBkggJAYJqAwQJDAdw -+cGM2NGxlMCwGDCsGAQQBkggJAYJqBAQcDBpyaGVsLTkscmhlbC05LWJldGEtcHBj -+NjRsZTANBgkqhkiG9w0BAQsFAAOCAgEAQyA3WPkt5NdFxpA60uTkhSCqgsuwDwCZ -+D1iFeSClTqT5WvEZxAacmepILXqFEv7DIP82cRXbAVYLvr24Wlc9LuEe0r+gAMI1 -+SS/IZ/A2kf8yQ4spaPEZ+S8cmtrErM0CqxabaV4E79CTnhxz9Sv0ktG1nIx3e2q9 -+ZbrFfXbrmNzli9xOhIFxLtqxvFIVktW3ak0ugDl7Ah7zlt3gJlf2q3/JeaFYuOAf -+4+93F916ss9skekUwd798FPJN8FMDOm9ClRyHFSitgeDijwYCf+rvWjVYnb0Wpfs -+eCZvTGP8J+VnJxDSUlnFbjTEjuzOXXVTqoPrlvfrqfeSTp1X9bf4r2AvstAswfp2 -+f/HGli3ZAgnIyupb2HE85wTM+qjeescIIIhzo8BjjiFLszOwNdn74ZcoWC/mSftd -+fx6MAXZH3Qygd3BmaGQ4oDoMpqeK1s8wXNAt/xQ9VpHe/WVQLBOZwi0AqB6bw5Cj -+K4k8YMsFq3yfgJFk4LqDELZd9RYOR6/A6zAcoHGmjqkRTmeC1xVt9UB1fChHNjZK -+/ZDT4mS1qwY48laIdkTiKNqdRiAXUUktQNCkqQ/C2SLgsGe23vJfaxwLh/dLht2u -+GcSes7HrzhdwxOUFnoXZSAxoWyWL2uU6V+iHMLyP78TqhpsaZ0vYQcYw4vQyB8LQ -+AuQfqagBINQ= -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/9.1/363.pem b/repos/system_upgrade/common/files/prod-certs/9.1/363.pem -new file mode 100644 -index 00000000..c30db921 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/9.1/363.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGJjCCBA6gAwIBAgIJALDxRLt/tU81MA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDEyNzE2MTY1OFoXDTQyMDEy -+MjE2MTY1OFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtlY2JjYTFi -+Zi1kYWY2LTQ0MjctYThlNC0wNTQzMWE0ZjdmNGVdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBrzCBrDAJBgNVHRMEAjAAMDoGDCsGAQQBkggJAYJrAQQqDChSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIEFSTSA2NCBCZXRhMBoGDCsGAQQBkggJAYJr -+AgQKDAg5LjEgQmV0YTAZBgwrBgEEAZIICQGCawMECQwHYWFyY2g2NDAsBgwrBgEE -+AZIICQGCawQEHAwacmhlbC05LHJoZWwtOS1iZXRhLWFhcmNoNjQwDQYJKoZIhvcN -+AQELBQADggIBAJskY+jnlGF7G1NVA16XYdQkSs0n8BPQElSTibN9XBbEqkEsSHsS -+SOuYaMa6lH46YFqLEMXrbJ1mvwu2BfkeOTEqtwax61D+MnwHBD9ouEwVQVJXwdKz -+aqVa3ppLdds1wOv4B9bBhVVBElE1YU6I6NMdetQI++zEfmXseqlb19yCEPuva/1h -+H5BX/2EJgQJYPnS3+x2hcOKl5lcX40ZuM876BkWPyp9gy79sd/DrWGYhCRyNNfL4 -+9IaPbrEgSxvuhtdIWq4+g5LHU3sRuNuzYSoh+CJU9a0wDaL+PeKmiiuP2FP9Pmbu -+avMO7uQf9hTZQweHePqxVrBfjQM7kgBi2x3oedLGsr2DG6WfOeIa+1J076eChwDQ -+5rYzybyHZwiCu/UKhacGQgEPk35IGDnxNMpSqZOCC8peiKQyq3aSIhZH0rk6J4pV -+SVyhNWmSfCbNboehTB8Qjpt9BAywMPn0jo1JqNWQ9/qEHK95MKu27tU9IqIQvwO5 -+ZF4kuJouuBqoPG/N2edkMp+53wu2LLvdgPYEs6UghDh2Eq33AyCCX27W15taxXeR -+91h0qXibsaAUD7e8bvDy5goSER8bD3UFxLdjCIWkQpp5jgzJyIWjY1Dm4OVPcWoB -+/aIQOe15VyH87eyXMXPiDKRe1cLOsK7MqJs+Iks/QIw0hHaOVNt5MpI5 -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/9.1/419.pem b/repos/system_upgrade/common/files/prod-certs/9.1/419.pem -new file mode 100644 -index 00000000..6acbc763 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/9.1/419.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGFzCCA/+gAwIBAgIJALDxRLt/tU8fMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDEyNzE2MTQzMVoXDTQyMDEy -+MjE2MTQzMVowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFs2YjI1NDIy -+OC03MjZhLTQxMWMtYWJjZS04NDhhNTY0MjBkZTRdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBoDCBnTAJBgNVHRMEAjAAMDUGDCsGAQQBkggJAYMjAQQlDCNSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIEFSTSA2NDAVBgwrBgEEAZIICQGDIwIEBQwD -+OS4xMBkGDCsGAQQBkggJAYMjAwQJDAdhYXJjaDY0MCcGDCsGAQQBkggJAYMjBAQX -+DBVyaGVsLTkscmhlbC05LWFhcmNoNjQwDQYJKoZIhvcNAQELBQADggIBAErSvVD1 -+Rq4PcUUGjVoZxCuNL6gwZmTZyN7KkSHRBXgOcYbxRdUvRHTxBJ2fnA91cMh5wdJf -+TOkYQEekH5iW70jLQUtRW7Ld6d5M6yXGYa54TIZRBFRHn66ltZL8Ub42PkKWb0tu -+icF8gtk2WEx4vm/rLvU1xS2ZEYzX1lyn0fj6UJmqO82EuJOhQW1qeYhTa7sW9SpD -+D58zJiFLovVcNk8Te8A1UVMiajazUMQn7eapyFEqDAOnrhY31oMUuoyon2XLeFQc -+DPtL+NBKh1x9Y1dyHGN0wwYrLzqLbSiGS7van2lzgI4E7niRpJGsTGg9E3A5g7Mu -+FRcp1dWXnP/82/mR4Vln1bLvujNaOdx3VjuJt5GsS7XYZu2AwjpEMwEosWvayzLd -+TqS8MDWilCIVVFScDUYQUaqYDkASweAe/HEpNirKZK01LGsXOeZxVOxUlOXM28eH -+fyVlKT5zM2dhFXnkQR9yRuXvteKXIVFelH5zD7smDmDqwSeSDXqaxETVHyy2igSU -+70l7cx9XsjSbLpgTLBg61PRE9JMKoUrCrA70zphTTAq6cZ0KIkgJMsQH3iAqChL2 -+aY2o2FrOovBWmjqOl6sF1VHU43Io9cJPeNwXNR5UI9jxf8wPy/4mBPDPaUGhHpL2 -+bwJPlJP/516RMFzGXhR5PuCvw1UGzqN8UCmL -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/9.1/433.pem b/repos/system_upgrade/common/files/prod-certs/9.1/433.pem -new file mode 100644 -index 00000000..6bf7a7ce ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/9.1/433.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGKTCCBBGgAwIBAgIJALDxRLt/tU83MA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDEyNzE2MTcwOFoXDTQyMDEy -+MjE2MTcwOFowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtjY2Q5OTA5 -+My01OGY2LTQ5YzQtYWQ0YS0zMGViNjQ3MjA2N2VdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBsjCBrzAJBgNVHRMEAjAAMEEGDCsGAQQBkggJAYMxAQQxDC9SZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIElCTSB6IFN5c3RlbXMgQmV0YTAaBgwrBgEE -+AZIICQGDMQIECgwIOS4xIEJldGEwFwYMKwYBBAGSCAkBgzEDBAcMBXMzOTB4MCoG -+DCsGAQQBkggJAYMxBAQaDBhyaGVsLTkscmhlbC05LWJldGEtczM5MHgwDQYJKoZI -+hvcNAQELBQADggIBALHMRvdZe+o9Q10SomVtnf2i/AKg+APq60JCwBXim7bpZKrz -+GpH5o6FPlUG9mAvrbf14lXq1wQDM4lbpm7NxXzauxf9SF/L/kp9RzCD9MXXze0rv -+zZBPj2gnGrvtyo3jXp5ZB8/BIMxkzOjUooYSVVGtRwI4PDEWStVzUokVHTIr9Aej -+ErJbtY7qGQpCruqD/66UX/8lffbbaPbh148ZNkz0eDmVU97PEnPpzDV8S+ikTayc -+uzXadOrmPP/oMBRMFhw5lCST0J0mWXxyWfZzU3Et9Lm3w9sDd+r8Ed7dlJImLH5N -+FwWv4Yu3ucX4Ww4/nASE5Ag6n7drNRs/+EfSTFNu33uicVqoVwu2kJosekAnZ/EI -+Pof1TvYiVRp2R3XGJQQ4hcOkHLF40kurfqxTLUTyrSk5e80IR10cT/WBUoze7h5y -+SJ098+9NRbMSoRdZ2y/CEOy1CHJQ1RCuj8zGSadhhO0mJC3Bio63boGidVhDZYJR -+k6oIbU8K/DIbPlcvcQ1iuIvRRDH2lHXzC5s9CVzThq43EHk7DtaHisZkHTjRbZDf -+/3kEFiHmEq84id4AQ+c55U8t+OfMcERDfbVF0+R9U9AsdI2TcSsiUt0byLj5R6HJ -+XLz/rDfj13pv5I3nmb2tcTD2dw+c8rbO8WeodVQ3Au9q4X9ggWkTkJ7UJ/Xu -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/9.1/479.pem b/repos/system_upgrade/common/files/prod-certs/9.1/479.pem -new file mode 100644 -index 00000000..daf2a5e5 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/9.1/479.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGFTCCA/2gAwIBAgIJALDxRLt/tU8iMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDEyNzE2MTQ0NloXDTQyMDEy -+MjE2MTQ0NlowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFs4ODA2Yjll -+My00OWRlLTQ4NmQtYTJhYi0wMDk0Mzc0MGRkNDBdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBnjCBmzAJBgNVHRMEAjAAMDUGDCsGAQQBkggJAYNfAQQlDCNSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIHg4Nl82NDAVBgwrBgEEAZIICQGDXwIEBQwD -+OS4xMBgGDCsGAQQBkggJAYNfAwQIDAZ4ODZfNjQwJgYMKwYBBAGSCAkBg18EBBYM -+FHJoZWwtOSxyaGVsLTkteDg2XzY0MA0GCSqGSIb3DQEBCwUAA4ICAQDW03/f7G4a -+DeZ9vW/fmgqk/08PSp0B9eknQJAl4JGSoK6GfIyqlHBlYRd+eiAIJD0CnIAF7mEP -+UBJkdT3OlLtqGzXCHZVU8Cwkuvg/0WVfH6qAr8GRwc8fa5DdC1odkDthz4gCbusm -+Mtkq9rETow1Ub04eEt7mGNE/NaGwUBVnT7jfmrdFMr+SNjQhgH3Tb/ftnQ2vOZn3 -+QRAvpbmUX1YNC/uf00k95XX7Ibsqr3awvTad47L5UKtVxlgxPzuerB5EgUt8XJBK -+NRk9Bz7T8UMvu+8j8cMB2Mxp8X/3XV0aF17mGR7JuG1KUfgoVU23GHtGx5fZtk6F -+/bg53ibXtC9ULmoRP9E+RRG1o/66QMV4DvPig43mP139jq3PohRfYqSowFCZu6aS -+F7Tn1Ceu1LPQdq17DXOlaSdrlFpS4Psf/GLOOh8LtJdDfJMeD9NFF8DB78rnNOVN -+AZ2qAZYxMxxjRamHrg6pnnm08bGNI/aNXNyhssFPxqWcXFzwr3ZGoYCTph35xi0R -++43f9T/Wb0aqa1yyOkDVdtxDllX+spYUwb3IwxBnWq2PYeNqVi5Qy4R4aWlOVGRX -+U8WZGLrkK9w76r882b+z9qhJlpvz9weCikpytj1cD3+ExOMsOPcJS3OfX0Gxdjba -+LOwZVjjsa8cCnK1+wd/QIRhh+IHDdJkG2g== -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/9.1/486.pem b/repos/system_upgrade/common/files/prod-certs/9.1/486.pem -new file mode 100644 -index 00000000..8ffd13a4 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/9.1/486.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGJDCCBAygAwIBAgIJALDxRLt/tU84MA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDEyNzE2MTcxM1oXDTQyMDEy -+MjE2MTcxM1owRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFsxYjdlYzQz -+Ny04ODQ2LTQ2ZWMtYjdmZi03MzQ3MzM3NjAwOTRdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBrTCBqjAJBgNVHRMEAjAAMDoGDCsGAQQBkggJAYNmAQQqDChSZWQgSGF0 -+IEVudGVycHJpc2UgTGludXggZm9yIHg4Nl82NCBCZXRhMBoGDCsGAQQBkggJAYNm -+AgQKDAg5LjEgQmV0YTAYBgwrBgEEAZIICQGDZgMECAwGeDg2XzY0MCsGDCsGAQQB -+kggJAYNmBAQbDBlyaGVsLTkscmhlbC05LWJldGEteDg2XzY0MA0GCSqGSIb3DQEB -+CwUAA4ICAQBy2AguldzCVHFa3C02RoPZu9fIakvyQMqtq+xN9fhbPFJdcDWG6nqZ -+w63Oq6bzYYIkeM1KRfnteVwG54OOPlnhfnSt4AQ2HOjffFgMlZKbiCL1mV2UBsN9 -+TFivspxb88I82X+31sYdqgd7HZP8e+hmhENLOoEwntCsG2bjtRzYlXLF/7JEWGml -+/Dgfx5e2/wyerIQMQ384WfVpAxJBdJrkUe5W/ap8TnmkN/Ct9jKwIJ3JLSe+tbwI -+KUHFLAHcAm/7zZzzNps4M6MC/XrakvG6HiBODzc2QMgxiGNIm+FNhF3sgJVebSyy -+m9qbk8w/OjSCD2cdeZkuoLdi3f26GiJi3QzT5Bojcf/y2GTJzzzy3BaVlbOdwd+T -+Do4AVv5nmF/0HkquJPCM92avLIOIuqbAU7q92y00l8ephPFo7dNorO1jqBSPEOzb -+Ff9EXIqy12xicbAO4ob1WoTjcGwX8qTB16sfcYd+pSucqQnYaIyFaDrH7yYuWCWO -+qDKyi3REbQNtAi7xYsMNLiS+ZA8XO394ijPFNqQgEcaGx20iY4l23y7D2rx+hUQL -+TVMvxWD0eS1ZC3LuGFqF5A1y/MPxT8n0giItWI5ASlp5fzgxsq4aBdQ/Z2QuvtMu -+gstPN2uvybhokLoNseOgEYz+Y5J8EuO1rrVMfRDLeKVqE9/O9z6aXw== -+-----END CERTIFICATE----- -diff --git a/repos/system_upgrade/common/files/prod-certs/9.1/72.pem b/repos/system_upgrade/common/files/prod-certs/9.1/72.pem -new file mode 100644 -index 00000000..2a2e4762 ---- /dev/null -+++ b/repos/system_upgrade/common/files/prod-certs/9.1/72.pem -@@ -0,0 +1,35 @@ -+-----BEGIN CERTIFICATE----- -+MIIGFjCCA/6gAwIBAgIJALDxRLt/tU8hMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD -+VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExFjAUBgNVBAoMDVJlZCBI -+YXQsIEluYy4xGDAWBgNVBAsMD1JlZCBIYXQgTmV0d29yazEuMCwGA1UEAwwlUmVk -+IEhhdCBFbnRpdGxlbWVudCBQcm9kdWN0IEF1dGhvcml0eTEkMCIGCSqGSIb3DQEJ -+ARYVY2Etc3VwcG9ydEByZWRoYXQuY29tMB4XDTIyMDEyNzE2MTQ0MVoXDTQyMDEy -+MjE2MTQ0MVowRDFCMEAGA1UEAww5UmVkIEhhdCBQcm9kdWN0IElEIFtiMjY4OGFl -+MC0xOWRlLTQ4N2EtYjQ3Zi04OTNhZjA3Zjg5YTBdMIICIjANBgkqhkiG9w0BAQEF -+AAOCAg8AMIICCgKCAgEAxj9J04z+Ezdyx1U33kFftLv0ntNS1BSeuhoZLDhs18yk -+sepG7hXXtHh2CMFfLZmTjAyL9i1XsxykQpVQdXTGpUF33C2qBQHB5glYs9+d781x -+8p8m8zFxbPcW82TIJXbgW3ErVh8vk5qCbG1cCAAHb+DWMq0EAyy1bl/JgAghYNGB -+RvKJObTdCrdpYh02KUqBLkSPZHvo6DUJFN37MXDpVeQq9VtqRjpKLLwuEfXb0Y7I -+5xEOrR3kYbOaBAWVt3mYZ1t0L/KfY2jVOdU5WFyyB9PhbMdLi1xE801j+GJrwcLa -+xmqvj4UaICRzcPATP86zVM1BBQa+lilkRQes5HyjZzZDiGYudnXhbqmLo/n0cuXo -+QBVVjhzRTMx71Eiiahmiw+U1vGqkHhQNxb13HtN1lcAhUCDrxxeMvrAjYdWpYlpI -+yW3NssPWt1YUHidMBSAJ4KctIf91dyE93aStlxwC/QnyFsZOmcEsBzVCnz9GmWMl -+1/6XzBS1yDUqByklx0TLH+z/sK9A+O2rZAy1mByCYwVxvbOZhnqGxAuToIS+A81v -+5hCjsCiOScVB+cil30YBu0cH85RZ0ILNkHdKdrLLWW4wjphK2nBn2g2i3+ztf+nQ -+ED2pQqZ/rhuW79jcyCZl9kXqe1wOdF0Cwah4N6/3LzIXEEKyEJxNqQwtNc2IVE8C -+AwEAAaOBnzCBnDAJBgNVHRMEAjAAMDsGCysGAQQBkggJAUgBBCwMKlJlZCBIYXQg -+RW50ZXJwcmlzZSBMaW51eCBmb3IgSUJNIHogU3lzdGVtczAUBgsrBgEEAZIICQFI -+AgQFDAM5LjEwFgYLKwYBBAGSCAkBSAMEBwwFczM5MHgwJAYLKwYBBAGSCAkBSAQE -+FQwTcmhlbC05LHJoZWwtOS1zMzkweDANBgkqhkiG9w0BAQsFAAOCAgEAMrD6Jk+a -+rSI/tW1YXvO++Th/x6+kvYmPTFCSG2h3VyC+PUgsn/Oq+szuSlS6alWOFX2UWjyM -+RI+VxCL0nRWHuqOWJXIxJy/qoqQwAikimsLfS7UgB/TnbP4d5J19jwtkVFlAIqWu -+FEWiMgLBQyjaKuqR0puexD8N5QfAx+++7sh27NU2NPFHOKi0gv4omITny0so5gAJ -+/AvgyU9p0czelRmO7cjtHD37fBMnVWRSfCAd2D5puadoQwAMe5a+YDQ95yQmpRi6 -+FjQYXfuSVxdac1nLHXpK/KzRYP2YlTK7e6GbVTCR5QpTrXKv83hZS8KTZN1oSJ3H -+Q97Ykyyl6xTUv0nGggtkSWlLY1S+LzV5Bs+Jx7M4Vwb9cKQVtWeKB1tt+caLzhlu -+qMW8fELU8cbS2+9W7+wphRx7MUyEihKCMmEyUg5PNIRUxDiVCYgET3fAo38eWqv0 -+By99ZBfzgaSN9N25zVvZd8/iDpNCvz49675nx/o04hbMDFc7b1JE9D6lsnqZc+Po -+voeiQC/AYiyB0cwgEIoJL6VF0crYMOAUdxJlx5pYByrOMxMRkeBhREgtNjZOPMFC -+FUvKuC15Mp6Cnkiu0jtoCRW649R0txxBeKl8oFq4WxAkjYitjk72Mmd6ogFr3BU4 -+6dnEcucOH7d7QQUfdt7iMFSvwjQO02ya4Nk= -+-----END CERTIFICATE----- --- -2.35.3 - diff --git a/SOURCES/0035-Add-upgrade-path-8.7-9.0.patch b/SOURCES/0035-Add-upgrade-path-8.7-9.0.patch deleted file mode 100644 index eeafad2..0000000 --- a/SOURCES/0035-Add-upgrade-path-8.7-9.0.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 5e364e0aedacb93340d7a43ce8b34b84eababa3f Mon Sep 17 00:00:00 2001 -From: Petr Stodulka -Date: Thu, 19 May 2022 10:18:19 +0200 -Subject: [PATCH 35/39] Add upgrade path 8.7 -> 9.0 - -The next supported upgrade path for IPU 8 -> 9 is 8.7 -> 9.0. -As the development and testing are already in progress, enable -8.7 system for the upgrade for non-sap systems. - -With that, we expect in future to drop 8.6 -> 9.0, but keeping it -for now as we want to be able to test the functionality with 8.6 -as well in this phase. ---- - repos/system_upgrade/common/files/upgrade_paths.json | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/repos/system_upgrade/common/files/upgrade_paths.json b/repos/system_upgrade/common/files/upgrade_paths.json -index 30d25353..224d6563 100644 ---- a/repos/system_upgrade/common/files/upgrade_paths.json -+++ b/repos/system_upgrade/common/files/upgrade_paths.json -@@ -3,6 +3,7 @@ - "7.6": ["8.4", "8.6"], - "7.9": ["8.4", "8.6"], - "8.6": ["9.0"], -+ "8.7": ["9.0"], - "7": ["8.4", "8.6"], - "8": ["9.0"] - }, --- -2.35.3 - diff --git a/SOURCES/0036-Handle-7-to-8-IPUs-on-Google-Cloud-897.patch b/SOURCES/0036-Handle-7-to-8-IPUs-on-Google-Cloud-897.patch deleted file mode 100644 index 03577e4..0000000 --- a/SOURCES/0036-Handle-7-to-8-IPUs-on-Google-Cloud-897.patch +++ /dev/null @@ -1,255 +0,0 @@ -From 2958dffb2807e1cae01fc22754f6da4314ebf7a8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michal=20He=C4=8Dko?= -Date: Thu, 26 May 2022 11:30:23 +0200 -Subject: [PATCH 36/39] Handle 7 to 8 IPUs on Google Cloud (#897) - -* Handle upgrades on google cloud - -* Fix "switch" typo - -Co-authored-by: Irina Gulina - -Co-authored-by: Michal Hecko -Co-authored-by: Michal Reznik (mreznik) -Co-authored-by: Irina Gulina ---- - .../common/actors/cloud/checkrhui/actor.py | 28 +++++++++++++++++-- - .../libraries/peseventsscanner_repomap.py | 15 +++++----- - .../actors/redhatsignedrpmscanner/actor.py | 19 ++++++------- - .../libraries/setuptargetrepos_repomap.py | 15 +++++----- - repos/system_upgrade/common/libraries/rhui.py | 24 ++++++++++++++++ - .../common/models/repositoriesmap.py | 9 +++--- - 6 files changed, 78 insertions(+), 32 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/cloud/checkrhui/actor.py b/repos/system_upgrade/common/actors/cloud/checkrhui/actor.py -index df055f94..552cde54 100644 ---- a/repos/system_upgrade/common/actors/cloud/checkrhui/actor.py -+++ b/repos/system_upgrade/common/actors/cloud/checkrhui/actor.py -@@ -1,14 +1,19 @@ -+import os -+ - from leapp import reporting - from leapp.actors import Actor - from leapp.libraries.common import rhsm, rhui - from leapp.libraries.common.rpms import has_package -+from leapp.libraries.stdlib import api - from leapp.models import ( -+ CopyFile, - DNFPluginTask, - InstalledRPM, - KernelCmdlineArg, - RequiredTargetUserspacePackages, - RHUIInfo, -- RpmTransactionTasks -+ RpmTransactionTasks, -+ TargetUserSpacePreupgradeTasks - ) - from leapp.reporting import create_report, Report - from leapp.tags import FactsPhaseTag, IPUWorkflowTag -@@ -28,6 +33,8 @@ class CheckRHUI(Actor): - RequiredTargetUserspacePackages, - Report, DNFPluginTask, - RpmTransactionTasks, -+ TargetUserSpacePreupgradeTasks, -+ CopyFile, - ) - tags = (FactsPhaseTag, IPUWorkflowTag) - -@@ -44,6 +51,16 @@ class CheckRHUI(Actor): - is_azure_sap = True - provider = 'azure-sap' - info = rhui.RHUI_CLOUD_MAP[upg_path]['azure-sap'] -+ -+ if provider.startswith('google'): -+ rhui_dir = api.get_common_folder_path('rhui') -+ repofile = os.path.join(rhui_dir, provider, 'leapp-{}.repo'.format(provider)) -+ api.produce( -+ TargetUserSpacePreupgradeTasks( -+ copy_files=[CopyFile(src=repofile, dst='/etc/yum.repos.d/leapp-google-copied.repo')] -+ ) -+ ) -+ - if not rhsm.skip_rhsm(): - create_report([ - reporting.Title('Upgrade initiated with RHSM on public cloud with RHUI infrastructure'), -@@ -56,7 +73,9 @@ class CheckRHUI(Actor): - reporting.Tags([reporting.Tags.PUBLIC_CLOUD]), - ]) - return -- # AWS RHUI package is provided and signed by RH but the Azure one not -+ -+ # When upgrading with RHUI we cannot switch certs and let RHSM provide us repos for target OS content. -+ # Instead, Leapp's provider-specific package containing target OS certs and repos has to be installed. - if not has_package(InstalledRPM, info['leapp_pkg']): - create_report([ - reporting.Title('Package "{}" is missing'.format(info['leapp_pkg'])), -@@ -71,12 +90,15 @@ class CheckRHUI(Actor): - reporting.Remediation(commands=[['yum', 'install', '-y', info['leapp_pkg']]]) - ]) - return -+ - # there are several "variants" related to the *AWS* provider (aws, aws-sap) - if provider.startswith('aws'): - # We have to disable Amazon-id plugin in the initramdisk phase as the network - # is down at the time - self.produce(DNFPluginTask(name='amazon-id', disable_in=['upgrade'])) -- # if RHEL7 and RHEL8 packages differ, we cannot rely on simply updating them -+ -+ # If source OS and target OS packages differ we must remove the source pkg, and install the target pkg. -+ # If the packages do not differ, it is sufficient to upgrade them during the upgrade - if info['src_pkg'] != info['target_pkg']: - self.produce(RpmTransactionTasks(to_install=[info['target_pkg']])) - self.produce(RpmTransactionTasks(to_remove=[info['src_pkg']])) -diff --git a/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner_repomap.py b/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner_repomap.py -index 22892e4b..567e8475 100644 ---- a/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner_repomap.py -+++ b/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner_repomap.py -@@ -50,13 +50,14 @@ class RepoMapDataHandler(object): - # will be used instead - self.prio_channel = get_target_product_channel(default=None) - -- # Cloud provider might have multiple variants: aws: (aws, aws-sap-es4), azure: (azure, azure-sap) -- if cloud_provider.startswith('aws'): -- self.cloud_provider = 'aws' -- elif cloud_provider.startswith('azure'): -- self.cloud_provider = 'azure' -- else: -- self.cloud_provider = cloud_provider -+ self.cloud_provider = cloud_provider -+ -+ # Cloud provider might have multiple variants, e.g, aws: (aws, aws-sap-es4) - normalize it -+ cloud_providers = ('aws', 'azure', 'google') -+ for provider in cloud_providers: -+ if cloud_provider.startswith(provider): -+ self.cloud_provider = provider -+ break - - def set_default_channels(self, default_channels): - """ -diff --git a/repos/system_upgrade/common/actors/redhatsignedrpmscanner/actor.py b/repos/system_upgrade/common/actors/redhatsignedrpmscanner/actor.py -index 01f6df38..ce6d9985 100644 ---- a/repos/system_upgrade/common/actors/redhatsignedrpmscanner/actor.py -+++ b/repos/system_upgrade/common/actors/redhatsignedrpmscanner/actor.py -@@ -54,15 +54,14 @@ class RedHatSignedRpmScanner(Actor): - """Whitelist the katello package.""" - return pkg.name.startswith('katello-ca-consumer') - -- def is_azure_pkg(pkg): -- """Whitelist Azure config package.""" -- upg_path = rhui.get_upg_path() -- -- src_pkg = rhui.RHUI_CLOUD_MAP[upg_path].get('azure', {}).get('src_pkg') -- src_pkg_sap = rhui.RHUI_CLOUD_MAP[upg_path].get('azure-sap', {}).get('src_pkg') -- target_pkg = rhui.RHUI_CLOUD_MAP[upg_path].get('azure', {}).get('target_pkg') -- target_pkg_sap = rhui.RHUI_CLOUD_MAP[upg_path].get('azure-sap', {}).get('target_pkg') -- return pkg.name in [src_pkg, src_pkg_sap, target_pkg, target_pkg_sap] -+ upg_path = rhui.get_upg_path() -+ whitelisted_cloud_flavours = ('azure', 'azure-sap', 'google', 'google-sap') -+ whitelisted_cloud_pkgs = { -+ rhui.RHUI_CLOUD_MAP[upg_path].get(flavour, {}).get('src_pkg') for flavour in whitelisted_cloud_flavours -+ } -+ whitelisted_cloud_pkgs.update( -+ rhui.RHUI_CLOUD_MAP[upg_path].get(flavour, {}).get('target_pkg') for flavour in whitelisted_cloud_flavours -+ ) - - for rpm_pkgs in self.consume(InstalledRPM): - for pkg in rpm_pkgs.items: -@@ -71,7 +70,7 @@ class RedHatSignedRpmScanner(Actor): - has_rhsig(pkg), - is_gpg_pubkey(pkg), - has_katello_prefix(pkg), -- is_azure_pkg(pkg), -+ pkg.name in whitelisted_cloud_pkgs, - ] - ): - signed_pkgs.items.append(pkg) -diff --git a/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos_repomap.py b/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos_repomap.py -index 22892e4b..567e8475 100644 ---- a/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos_repomap.py -+++ b/repos/system_upgrade/common/actors/setuptargetrepos/libraries/setuptargetrepos_repomap.py -@@ -50,13 +50,14 @@ class RepoMapDataHandler(object): - # will be used instead - self.prio_channel = get_target_product_channel(default=None) - -- # Cloud provider might have multiple variants: aws: (aws, aws-sap-es4), azure: (azure, azure-sap) -- if cloud_provider.startswith('aws'): -- self.cloud_provider = 'aws' -- elif cloud_provider.startswith('azure'): -- self.cloud_provider = 'azure' -- else: -- self.cloud_provider = cloud_provider -+ self.cloud_provider = cloud_provider -+ -+ # Cloud provider might have multiple variants, e.g, aws: (aws, aws-sap-es4) - normalize it -+ cloud_providers = ('aws', 'azure', 'google') -+ for provider in cloud_providers: -+ if cloud_provider.startswith(provider): -+ self.cloud_provider = provider -+ break - - def set_default_channels(self, default_channels): - """ -diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py -index 3d355ff6..194aad98 100644 ---- a/repos/system_upgrade/common/libraries/rhui.py -+++ b/repos/system_upgrade/common/libraries/rhui.py -@@ -78,6 +78,30 @@ RHUI_CLOUD_MAP = { - ('leapp-azure-sap.repo', YUM_REPOS_PATH) - ], - }, -+ 'google': { -+ 'src_pkg': 'google-rhui-client-rhel7', -+ 'target_pkg': 'google-rhui-client-rhel8', -+ 'leapp_pkg': 'leapp-rhui-google', -+ 'leapp_pkg_repo': 'leapp-google.repo', -+ 'files_map': [ -+ ('content.crt', RHUI_PKI_PRODUCT_DIR), -+ ('ca.crt', RHUI_PKI_DIR), -+ ('key.pem', RHUI_PKI_DIR), -+ ('leapp-google.repo', YUM_REPOS_PATH) -+ ], -+ }, -+ 'google-sap': { -+ 'src_pkg': 'google-rhui-client-rhel79-sap', -+ 'target_pkg': 'google-rhui-client-rhel8-sap', -+ 'leapp_pkg': 'leapp-rhui-google-sap', -+ 'leapp_pkg_repo': 'leapp-google-sap.repo', -+ 'files_map': [ -+ ('content.crt', RHUI_PKI_PRODUCT_DIR), -+ ('ca.crt', RHUI_PKI_DIR), -+ ('key.pem', RHUI_PKI_DIR), -+ ('leapp-google-sap.repo', YUM_REPOS_PATH) -+ ], -+ }, - }, - '8to9': { - 'aws': { -diff --git a/repos/system_upgrade/common/models/repositoriesmap.py b/repos/system_upgrade/common/models/repositoriesmap.py -index c1873333..824c4557 100644 ---- a/repos/system_upgrade/common/models/repositoriesmap.py -+++ b/repos/system_upgrade/common/models/repositoriesmap.py -@@ -1,4 +1,4 @@ --from leapp.models import Model, fields -+from leapp.models import fields, Model - from leapp.topics import TransactionTopic - - -@@ -71,12 +71,11 @@ class PESIDRepositoryEntry(Model): - purposes. The other channels indicate premium repositories. - """ - -- rhui = fields.StringEnum(['', 'aws', 'azure']) -+ rhui = fields.StringEnum(['', 'aws', 'azure', 'google']) - """ -- Indicate whether the repository is deliver for RHUI and which one. -+ Specifies what cloud provider (RHUI) is the repository specific to. - -- For non-rhui systems: empty string -- For AWS or Azure: 'aws' / 'azure' -+ Empty string denotes that the repository is not specific to any cloud provider. - """ - - --- -2.35.3 - diff --git a/SOURCES/0037-CheckNFS-actor-should-respect-nfsd-filesystem.patch b/SOURCES/0037-CheckNFS-actor-should-respect-nfsd-filesystem.patch deleted file mode 100644 index 2ecd1bd..0000000 --- a/SOURCES/0037-CheckNFS-actor-should-respect-nfsd-filesystem.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 184dc7be352e5f23d5f85fadb681ddc839dfffbe Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Tue, 10 May 2022 14:41:37 +0200 -Subject: [PATCH 37/39] CheckNFS actor should respect nfsd filesystem - -Check filesystem type for full match with 'nfs' -otherwise false positive fires like in 'nfsd' may -occur. - -OAMG-6355 ---- - .../system_upgrade/common/actors/checknfs/actor.py | 13 ++++++++----- - .../common/actors/checknfs/tests/test_checknfs.py | 11 +++++++++-- - 2 files changed, 17 insertions(+), 7 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/checknfs/actor.py b/repos/system_upgrade/common/actors/checknfs/actor.py -index 2461a83a..cfef3827 100644 ---- a/repos/system_upgrade/common/actors/checknfs/actor.py -+++ b/repos/system_upgrade/common/actors/checknfs/actor.py -@@ -1,7 +1,7 @@ -+from leapp import reporting - from leapp.actors import Actor - from leapp.models import StorageInfo --from leapp.reporting import Report, create_report --from leapp import reporting -+from leapp.reporting import create_report, Report - from leapp.tags import ChecksPhaseTag, IPUWorkflowTag - - -@@ -22,24 +22,27 @@ class CheckNfs(Actor): - "We have found NFS usage at the following locations:\n" - nfs_found = False - -+ def _is_nfs(a_type): -+ return a_type.startswith('nfs') and a_type != 'nfsd' -+ - for storage in self.consume(StorageInfo): - # Check fstab - for fstab in storage.fstab: -- if fstab.fs_vfstype.startswith("nfs"): -+ if _is_nfs(fstab.fs_vfstype): - nfs_found = True - details += "- One or more NFS entries in /etc/fstab\n" - break - - # Check mount - for mount in storage.mount: -- if mount.tp.startswith("nfs"): -+ if _is_nfs(mount.tp): - nfs_found = True - details += "- Currently mounted NFS shares\n" - break - - # Check systemd-mount - for systemdmount in storage.systemdmount: -- if systemdmount.fs_type.startswith("nfs"): -+ if _is_nfs(systemdmount.fs_type): - nfs_found = True - details += "- One or more configured NFS mounts in systemd-mount\n" - break -diff --git a/repos/system_upgrade/common/actors/checknfs/tests/test_checknfs.py b/repos/system_upgrade/common/actors/checknfs/tests/test_checknfs.py -index 4577de46..0d48c491 100644 ---- a/repos/system_upgrade/common/actors/checknfs/tests/test_checknfs.py -+++ b/repos/system_upgrade/common/actors/checknfs/tests/test_checknfs.py -@@ -1,8 +1,8 @@ - import pytest - --from leapp.snactor.fixture import current_actor_context --from leapp.models import StorageInfo, SystemdMountEntry, FstabEntry, MountEntry -+from leapp.models import FstabEntry, MountEntry, StorageInfo, SystemdMountEntry - from leapp.reporting import Report -+from leapp.snactor.fixture import current_actor_context - - - @pytest.mark.parametrize('nfs_fstype', ('nfs', 'nfs4')) -@@ -50,6 +50,13 @@ def test_actor_without_fstab_entry(current_actor_context): - assert not current_actor_context.consume(Report) - - -+def test_actor_with_nfsd(current_actor_context): -+ with_nfsd = [MountEntry(name="nfsd", mount="/proc/fs/nfsd", tp="nfsd", options="rw,relatime")] -+ current_actor_context.feed(StorageInfo(mount=with_nfsd)) -+ current_actor_context.run() -+ assert not current_actor_context.consume(Report) -+ -+ - @pytest.mark.parametrize('nfs_fstype', ('nfs', 'nfs4')) - def test_actor_with_mount_share(current_actor_context, nfs_fstype): - with_mount_share = [MountEntry(name="nfs", mount="/mnt/data", tp=nfs_fstype, --- -2.35.3 - diff --git a/SOURCES/0038-Remove-temporary-leapp-directory-in-root.patch b/SOURCES/0038-Remove-temporary-leapp-directory-in-root.patch deleted file mode 100644 index 485e778..0000000 --- a/SOURCES/0038-Remove-temporary-leapp-directory-in-root.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 1cc680adf1d63028c0b5f79544b6bd9e501b249e Mon Sep 17 00:00:00 2001 -From: Michal Reznik -Date: Fri, 13 May 2022 12:00:15 +0200 -Subject: [PATCH 38/39] Remove temporary leapp directory in /root - -Leaving the directory behind will cause issues during upgrades to -another major verison. E.g in case of RHEL 7 > RHEL 8 > RHEL 9 -upgrade. ---- - .../preparepythonworkround/libraries/workaround.py | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/preparepythonworkround/libraries/workaround.py b/repos/system_upgrade/common/actors/preparepythonworkround/libraries/workaround.py -index f61c78cf..de3079ee 100644 ---- a/repos/system_upgrade/common/actors/preparepythonworkround/libraries/workaround.py -+++ b/repos/system_upgrade/common/actors/preparepythonworkround/libraries/workaround.py -@@ -1,7 +1,9 @@ - import os -+import shutil - import sys - - from leapp.libraries.common.utils import makedirs -+from leapp.libraries.stdlib import api - - LEAPP_HOME = '/root/tmp_leapp_py3' - -@@ -18,10 +20,15 @@ def _get_orig_leapp_path(): - - def apply_python3_workaround(): - py3_leapp = os.path.join(LEAPP_HOME, 'leapp3') -+ if os.path.exists(LEAPP_HOME): -+ try: -+ shutil.rmtree(LEAPP_HOME) -+ except OSError as e: -+ api.current_logger().error('Could not remove {} directory: {}'.format(LEAPP_HOME, str(e))) -+ - makedirs(LEAPP_HOME) - leapp_lib_symlink_path = os.path.join(LEAPP_HOME, 'leapp') -- if not os.path.exists(leapp_lib_symlink_path): -- os.symlink(_get_orig_leapp_path(), leapp_lib_symlink_path) -+ os.symlink(_get_orig_leapp_path(), leapp_lib_symlink_path) - with open(py3_leapp, 'w') as f: - f_content = [ - '#!/usr/bin/python3', --- -2.35.3 - diff --git a/SOURCES/0039-Improve-Leapp-resume-service-cleanup-logging.patch b/SOURCES/0039-Improve-Leapp-resume-service-cleanup-logging.patch deleted file mode 100644 index 11c0378..0000000 --- a/SOURCES/0039-Improve-Leapp-resume-service-cleanup-logging.patch +++ /dev/null @@ -1,90 +0,0 @@ -From ae40cb78af75ff0901280b624e6d633a55023933 Mon Sep 17 00:00:00 2001 -From: Michal Reznik -Date: Thu, 26 May 2022 13:02:31 +0200 -Subject: [PATCH 39/39] Improve Leapp resume service cleanup + logging - ---- - .../actors/createresumeservice/actor.py | 15 ++++++++--- - .../actors/removeresumeservice/actor.py | 25 +++++++++++-------- - 2 files changed, 26 insertions(+), 14 deletions(-) - -diff --git a/repos/system_upgrade/common/actors/createresumeservice/actor.py b/repos/system_upgrade/common/actors/createresumeservice/actor.py -index 3019c611..eae4aa8f 100644 ---- a/repos/system_upgrade/common/actors/createresumeservice/actor.py -+++ b/repos/system_upgrade/common/actors/createresumeservice/actor.py -@@ -1,11 +1,12 @@ --import shutil - import os -+import shutil - --from leapp.exceptions import StopActorExecutionError -+from leapp import reporting - from leapp.actors import Actor -+from leapp.exceptions import StopActorExecutionError -+from leapp.libraries.stdlib import api -+from leapp.reporting import create_report, Report - from leapp.tags import FinalizationPhaseTag, IPUWorkflowTag --from leapp.reporting import Report, create_report --from leapp import reporting - - - class CreateSystemdResumeService(Actor): -@@ -36,6 +37,12 @@ class CreateSystemdResumeService(Actor): - except OSError: - pass - -+ if os.path.exists(symlink_path): -+ api.current_logger().debug( -+ 'Symlink {} already exists (from previous upgrade?). Removing... '.format(symlink_path) -+ ) -+ os.unlink(symlink_path) -+ - try: - os.symlink(service_path, symlink_path) - except OSError as e: -diff --git a/repos/system_upgrade/common/actors/removeresumeservice/actor.py b/repos/system_upgrade/common/actors/removeresumeservice/actor.py -index c69816d5..07e96eae 100644 ---- a/repos/system_upgrade/common/actors/removeresumeservice/actor.py -+++ b/repos/system_upgrade/common/actors/removeresumeservice/actor.py -@@ -1,10 +1,10 @@ --import os - import errno -+import os - --from leapp.actors import Actor --from leapp.libraries.stdlib import run --from leapp.reporting import Report, create_report - from leapp import reporting -+from leapp.actors import Actor -+from leapp.libraries.stdlib import api, run -+from leapp.reporting import create_report, Report - from leapp.tags import FirstBootPhaseTag, IPUWorkflowTag - - -@@ -24,12 +24,17 @@ class RemoveSystemdResumeService(Actor): - service_name = 'leapp_resume.service' - if os.path.isfile('/etc/systemd/system/{}'.format(service_name)): - run(['systemctl', 'disable', service_name]) -- try: -- os.unlink('/etc/systemd/system/{}'.format(service_name)) -- os.unlink('/etc/systemd/system/default.target.wants/{}'.format(service_name)) -- except OSError as e: -- if e.errno != errno.ENOENT: -- raise -+ paths_to_unlink = [ -+ '/etc/systemd/system/{}'.format(service_name), -+ '/etc/systemd/system/default.target.wants/{}'.format(service_name), -+ ] -+ for path in paths_to_unlink: -+ try: -+ os.unlink(path) -+ except OSError as e: -+ api.current_logger().debug('Failed removing {}: {}'.format(path, str(e))) -+ if e.errno != errno.ENOENT: -+ raise - - create_report([ - reporting.Title('"{}" service deleted'.format(service_name)), --- -2.35.3 - diff --git a/SOURCES/0040-Revert-Move-multipathconfread-into-common-repository.patch b/SOURCES/0040-Revert-Move-multipathconfread-into-common-repository.patch deleted file mode 100644 index 4339d7d..0000000 --- a/SOURCES/0040-Revert-Move-multipathconfread-into-common-repository.patch +++ /dev/null @@ -1,125 +0,0 @@ -From e80ee7184cd0d01d81418e5f925d1460fc51f0a6 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Wed, 20 Apr 2022 14:01:43 -0500 -Subject: [PATCH 40/47] Revert "Move "multipathconfread" into common - repository" - -This reverts commit 1c171ec3a5f9260a3c6f84a9b15cad78a875ac61. - -the multipath actors need to do different things in the el8toel9 upgrade -than in the el7toel8 upgrade, so leave the old actors in the el7toel8 -repo. After reverting, the code was relinted. ---- - .../{common => el7toel8}/actors/multipathconfread/actor.py | 0 - .../actors/multipathconfread/libraries/multipathconfread.py | 0 - .../actors/multipathconfread/tests/files/all_the_things.conf | 0 - .../actors/multipathconfread/tests/files/already_updated.conf | 0 - .../actors/multipathconfread/tests/files/conf.d/all_devs.conf | 0 - .../actors/multipathconfread/tests/files/conf.d/empty.conf | 0 - .../actors/multipathconfread/tests/files/default_rhel7.conf | 0 - .../actors/multipathconfread/tests/files/default_rhel8.conf | 0 - .../actors/multipathconfread/tests/files/just_all_devs.conf | 0 - .../actors/multipathconfread/tests/files/just_checker.conf | 0 - .../actors/multipathconfread/tests/files/just_detect.conf | 0 - .../actors/multipathconfread/tests/files/just_exists.conf | 0 - .../actors/multipathconfread/tests/files/just_reassign.conf | 0 - .../actors/multipathconfread/tests/files/ugly1.conf | 0 - .../actors/multipathconfread/tests/files/ugly2.conf | 0 - .../multipathconfread/tests/test_library_multipathconfread.py | 0 - .../{common => el7toel8}/libraries/multipathutil.py | 0 - .../{common => el7toel8}/models/multipathconffacts.py | 0 - 18 files changed, 0 insertions(+), 0 deletions(-) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/actor.py (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/libraries/multipathconfread.py (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/all_the_things.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/already_updated.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/conf.d/all_devs.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/conf.d/empty.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/default_rhel7.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/default_rhel8.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/just_all_devs.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/just_checker.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/just_detect.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/just_exists.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/just_reassign.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/ugly1.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/files/ugly2.conf (100%) - rename repos/system_upgrade/{common => el7toel8}/actors/multipathconfread/tests/test_library_multipathconfread.py (100%) - rename repos/system_upgrade/{common => el7toel8}/libraries/multipathutil.py (100%) - rename repos/system_upgrade/{common => el7toel8}/models/multipathconffacts.py (100%) - -diff --git a/repos/system_upgrade/common/actors/multipathconfread/actor.py b/repos/system_upgrade/el7toel8/actors/multipathconfread/actor.py -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/actor.py -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/actor.py -diff --git a/repos/system_upgrade/common/actors/multipathconfread/libraries/multipathconfread.py b/repos/system_upgrade/el7toel8/actors/multipathconfread/libraries/multipathconfread.py -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/libraries/multipathconfread.py -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/libraries/multipathconfread.py -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/all_the_things.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/all_the_things.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/all_the_things.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/all_the_things.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/already_updated.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/already_updated.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/already_updated.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/already_updated.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/conf.d/all_devs.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/conf.d/all_devs.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/conf.d/all_devs.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/conf.d/all_devs.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/conf.d/empty.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/conf.d/empty.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/conf.d/empty.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/conf.d/empty.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/default_rhel7.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/default_rhel7.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/default_rhel7.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/default_rhel7.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/default_rhel8.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/default_rhel8.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/default_rhel8.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/default_rhel8.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/just_all_devs.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_all_devs.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/just_all_devs.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_all_devs.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/just_checker.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_checker.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/just_checker.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_checker.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/just_detect.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_detect.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/just_detect.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_detect.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/just_exists.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_exists.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/just_exists.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_exists.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/just_reassign.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_reassign.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/just_reassign.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/just_reassign.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/ugly1.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/ugly1.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/ugly1.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/ugly1.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/files/ugly2.conf b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/ugly2.conf -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/files/ugly2.conf -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/files/ugly2.conf -diff --git a/repos/system_upgrade/common/actors/multipathconfread/tests/test_library_multipathconfread.py b/repos/system_upgrade/el7toel8/actors/multipathconfread/tests/test_library_multipathconfread.py -similarity index 100% -rename from repos/system_upgrade/common/actors/multipathconfread/tests/test_library_multipathconfread.py -rename to repos/system_upgrade/el7toel8/actors/multipathconfread/tests/test_library_multipathconfread.py -diff --git a/repos/system_upgrade/common/libraries/multipathutil.py b/repos/system_upgrade/el7toel8/libraries/multipathutil.py -similarity index 100% -rename from repos/system_upgrade/common/libraries/multipathutil.py -rename to repos/system_upgrade/el7toel8/libraries/multipathutil.py -diff --git a/repos/system_upgrade/common/models/multipathconffacts.py b/repos/system_upgrade/el7toel8/models/multipathconffacts.py -similarity index 100% -rename from repos/system_upgrade/common/models/multipathconffacts.py -rename to repos/system_upgrade/el7toel8/models/multipathconffacts.py --- -2.35.3 - diff --git a/SOURCES/0041-add-multipathconf-read-check-update-el8toel9-actors.patch b/SOURCES/0041-add-multipathconf-read-check-update-el8toel9-actors.patch deleted file mode 100644 index 5b95e62..0000000 --- a/SOURCES/0041-add-multipathconf-read-check-update-el8toel9-actors.patch +++ /dev/null @@ -1,14955 +0,0 @@ -From 2f3d8e57f4fdd1e63ae25063247db7d13f4fa88d Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 26 Apr 2022 01:21:33 -0500 -Subject: [PATCH 41/47] add multipathconf(read|check|update) el8toel9 actors - -Check config files and make necessary changes to retain RHEL-8 default -behavior. This involves adding 'enable_foreign ""' and -'allow_usb_devices yes' to the defaults section of /etc/multipath.conf -if these options don't already exist, and changing any regex values of -"*" to ".*" in any multipath config file. Reports are generated for all -changes made. In order to share code with el7toel8, move the -multipathutil library to the system_upgrade/common repo. ---- - .../libraries/multipathutil.py | 0 - .../libraries/tests/test_multipathutil.py | 0 - .../actors/multipathconfcheck/actor.py | 25 + - .../libraries/multipathconfcheck.py | 80 ++ - .../tests/test_multipath_conf_check_8to9.py | 137 ++ - .../actors/multipathconfread/actor.py | 33 + - .../libraries/multipathconfread.py | 129 ++ - .../tests/files/all_the_things.conf | 21 + - .../tests/files/allow_usb.conf | 1078 ++++++++++++++++ - .../tests/files/complicated.conf | 1107 ++++++++++++++++ - .../tests/files/conf1.d/empty.conf | 0 - .../files/conf1.d/nothing_important.conf | 26 + - .../tests/files/conf2.d/all_true.conf | 24 + - .../tests/files/conf3.d/README | 2 + - .../tests/files/converted_the_things.conf | 23 + - .../tests/files/default_rhel8.conf | 22 + - .../multipathconfread/tests/files/empty.conf | 0 - .../tests/files/empty_dir.conf | 26 + - .../tests/files/missing_dir.conf | 27 + - .../tests/files/no_defaults.conf | 1049 ++++++++++++++++ - .../tests/files/no_foreign.conf | 1089 ++++++++++++++++ - .../tests/files/not_set_dir.conf | 27 + - .../tests/files/set_in_dir.conf | 33 + - .../tests/files/two_defaults.conf | 26 + - .../tests/test_multipath_conf_read_8to9.py | 144 +++ - .../actors/multipathconfupdate/actor.py | 27 + - .../libraries/multipathconfupdate.py | 86 ++ - .../tests/files/after/all_the_things.conf | 23 + - .../tests/files/after/allow_usb.conf | 1079 ++++++++++++++++ - .../tests/files/after/complicated.conf | 1108 +++++++++++++++++ - .../tests/files/after/conf2.d/all_true.conf | 24 + - .../tests/files/after/default_rhel8.conf | 23 + - .../tests/files/after/empty.conf | 5 + - .../tests/files/after/empty_dir.conf | 28 + - .../tests/files/after/missing_dir.conf | 29 + - .../tests/files/after/no_defaults.conf | 1054 ++++++++++++++++ - .../tests/files/after/no_foreign.conf | 1090 ++++++++++++++++ - .../tests/files/after/not_set_dir.conf | 29 + - .../tests/files/after/two_defaults.conf | 27 + - .../tests/files/before/all_the_things.conf | 21 + - .../tests/files/before/allow_usb.conf | 1078 ++++++++++++++++ - .../tests/files/before/complicated.conf | 1107 ++++++++++++++++ - .../tests/files/before/conf1.d/empty.conf | 0 - .../before/conf1.d/nothing_important.conf | 26 + - .../tests/files/before/conf2.d/all_true.conf | 24 + - .../tests/files/before/conf3.d/README | 2 + - .../files/before/converted_the_things.conf | 23 + - .../tests/files/before/default_rhel8.conf | 22 + - .../tests/files/before/empty.conf | 0 - .../tests/files/before/empty_dir.conf | 26 + - .../tests/files/before/missing_dir.conf | 27 + - .../tests/files/before/no_defaults.conf | 1049 ++++++++++++++++ - .../tests/files/before/no_foreign.conf | 1089 ++++++++++++++++ - .../tests/files/before/not_set_dir.conf | 27 + - .../tests/files/before/set_in_dir.conf | 33 + - .../tests/files/before/two_defaults.conf | 26 + - .../tests/test_multipath_conf_update_8to9.py | 119 ++ - .../el8toel9/models/multipathconffacts.py | 30 + - 58 files changed, 14489 insertions(+) - rename repos/system_upgrade/{el7toel8 => common}/libraries/multipathutil.py (100%) - rename repos/system_upgrade/{el7toel8 => common}/libraries/tests/test_multipathutil.py (100%) - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfcheck/actor.py - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfcheck/libraries/multipathconfcheck.py - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfcheck/tests/test_multipath_conf_check_8to9.py - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/actor.py - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/libraries/multipathconfread.py - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/all_the_things.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/allow_usb.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/complicated.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf1.d/empty.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf1.d/nothing_important.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf2.d/all_true.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf3.d/README - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/converted_the_things.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/default_rhel8.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/empty.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/empty_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/missing_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/no_defaults.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/no_foreign.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/not_set_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/set_in_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/two_defaults.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfread/tests/test_multipath_conf_read_8to9.py - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/actor.py - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/libraries/multipathconfupdate.py - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/all_the_things.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/allow_usb.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/complicated.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/conf2.d/all_true.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/default_rhel8.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/empty.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/empty_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/missing_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/no_defaults.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/no_foreign.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/not_set_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/two_defaults.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/all_the_things.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/allow_usb.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/complicated.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf1.d/empty.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf1.d/nothing_important.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf2.d/all_true.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf3.d/README - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/converted_the_things.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/default_rhel8.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/empty.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/empty_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/missing_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/no_defaults.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/no_foreign.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/not_set_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/set_in_dir.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/two_defaults.conf - create mode 100644 repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/test_multipath_conf_update_8to9.py - create mode 100644 repos/system_upgrade/el8toel9/models/multipathconffacts.py - -diff --git a/repos/system_upgrade/el7toel8/libraries/multipathutil.py b/repos/system_upgrade/common/libraries/multipathutil.py -similarity index 100% -rename from repos/system_upgrade/el7toel8/libraries/multipathutil.py -rename to repos/system_upgrade/common/libraries/multipathutil.py -diff --git a/repos/system_upgrade/el7toel8/libraries/tests/test_multipathutil.py b/repos/system_upgrade/common/libraries/tests/test_multipathutil.py -similarity index 100% -rename from repos/system_upgrade/el7toel8/libraries/tests/test_multipathutil.py -rename to repos/system_upgrade/common/libraries/tests/test_multipathutil.py -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfcheck/actor.py b/repos/system_upgrade/el8toel9/actors/multipathconfcheck/actor.py -new file mode 100644 -index 00000000..7b89b4f3 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfcheck/actor.py -@@ -0,0 +1,25 @@ -+from leapp.actors import Actor -+from leapp.libraries.actor import multipathconfcheck -+from leapp.models import MultipathConfFacts8to9 -+from leapp.reporting import Report -+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag -+ -+ -+class MultipathConfCheck8to9(Actor): -+ """ -+ Checks if changes to the multipath configuration files are necessary -+ for upgrading to RHEL9, and reports the results. -+ """ -+ -+ name = 'multipath_conf_check_8to9' -+ consumes = (MultipathConfFacts8to9,) -+ produces = (Report,) -+ tags = (ChecksPhaseTag, IPUWorkflowTag) -+ -+ def process(self): -+ facts = next(self.consume(MultipathConfFacts8to9), None) -+ if facts is None: -+ self.log.debug('Skipping execution. No MultipathConfFacts8to9 has ' -+ 'been produced') -+ return -+ multipathconfcheck.check_configs(facts) -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfcheck/libraries/multipathconfcheck.py b/repos/system_upgrade/el8toel9/actors/multipathconfcheck/libraries/multipathconfcheck.py -new file mode 100644 -index 00000000..4fbcdb94 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfcheck/libraries/multipathconfcheck.py -@@ -0,0 +1,80 @@ -+from leapp import reporting -+from leapp.reporting import create_report -+ -+ -+def _report_foreign(): -+ create_report([ -+ reporting.Title( -+ 'device-mapper-multipath now defaults to ignoring foreign devices' -+ ), -+ reporting.Summary( -+ 'In RHEL-9, the default value for the "enable_foreign" option has ' -+ 'changed to "NONE". This means that multipath will no longer list ' -+ 'devices that are not managed by device-mapper. In order to retain ' -+ 'the default RHEL-8 behavior of listing foreign multipath devices, ' -+ '\'enable_foreign ""\' will be added to the defaults section of ' -+ '"/etc/multipath.conf". If you wish to change to the default ' -+ 'RHEL-9 behavior, please remove this line. This option only ' -+ 'effects the devices that multipath lists. It has no impact on ' -+ 'what devices are managed.'), -+ reporting.Severity(reporting.Severity.INFO), -+ reporting.Tags([reporting.Tags.SERVICES]), -+ reporting.RelatedResource('package', 'device-mapper-multipath') -+ ]) -+ -+ -+def _report_allow_usb(): -+ create_report([ -+ reporting.Title( -+ 'device-mapper-multipath now defaults to ignoring USB devices' -+ ), -+ reporting.Summary( -+ 'In RHEL-9, the default multipath configuration has changed to ' -+ 'ignore USB devices. A new config option, "allow_usb_devices" has ' -+ 'been added to control this. In order to retain the RHEL-8 ' -+ 'behavior of treating USB devices like other block devices. ' -+ '"allow_usb_devices yes" will be added to the defaults section ' -+ 'of "/etc/multipath.conf". If you wish to change to the default ' -+ 'RHEL-9 behavior, please remove this line.'), -+ reporting.Severity(reporting.Severity.INFO), -+ reporting.Tags([reporting.Tags.SERVICES]), -+ reporting.RelatedResource('package', 'device-mapper-multipath') -+ ]) -+ -+ -+def _create_paths_str(paths): -+ if len(paths) < 2: -+ return paths[0] -+ return '{} and {}'.format(', '.join(paths[0:-1]), paths[-1]) -+ -+ -+def _report_invalid_regexes(paths): -+ paths_str = _create_paths_str(paths) -+ create_report([ -+ reporting.Title( -+ 'device-mapper-multipath no longer accepts "*" as a valid regular expression' -+ ), -+ reporting.Summary( -+ 'Some options in device-mapper-multipath configuration files ' -+ 'have values that are regular expressions. In RHEL-8, if such an ' -+ 'option had a value of "*", multipath would internally convert it ' -+ 'to ".*". In RHEL-9, values of "*" are no longer accepted. ' -+ 'These regular expression values have been found in {}. They ' -+ 'will be converted to ".*"'.format(paths_str)), -+ reporting.Severity(reporting.Severity.INFO), -+ reporting.Tags([reporting.Tags.SERVICES]), -+ reporting.RelatedResource('package', 'device-mapper-multipath') -+ ]) -+ -+ -+def check_configs(facts): -+ need_foreign = not any(x for x in facts.configs if x.enable_foreign_exists) -+ need_allow_usb = not any(x for x in facts.configs if x.allow_usb_exists) -+ invalid_regexes = [x.pathname for x in facts.configs if x.invalid_regexes_exist] -+ -+ if need_foreign: -+ _report_foreign() -+ if need_allow_usb: -+ _report_allow_usb() -+ if invalid_regexes: -+ _report_invalid_regexes(invalid_regexes) -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfcheck/tests/test_multipath_conf_check_8to9.py b/repos/system_upgrade/el8toel9/actors/multipathconfcheck/tests/test_multipath_conf_check_8to9.py -new file mode 100644 -index 00000000..b91d414c ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfcheck/tests/test_multipath_conf_check_8to9.py -@@ -0,0 +1,137 @@ -+from leapp.models import MultipathConfFacts8to9, MultipathConfig8to9 -+from leapp.reporting import Report -+ -+ -+def _assert_foreign_report(report): -+ assert report['title'] == \ -+ 'device-mapper-multipath now defaults to ignoring foreign devices' -+ assert report['severity'] == 'info' -+ -+ -+def _assert_allow_usb_report(report): -+ assert report['title'] == \ -+ 'device-mapper-multipath now defaults to ignoring USB devices' -+ assert report['severity'] == 'info' -+ -+ -+def _assert_invalid_regexes_report(report, paths_str): -+ assert report['title'] == \ -+ 'device-mapper-multipath no longer accepts "*" as a valid regular expression' -+ assert report['severity'] == 'info' -+ assert paths_str in report['summary'] -+ -+ -+def _build_config(pathname, config_dir, enable_foreign_exists, invalid_regexes_exist, allow_usb_exists): -+ return MultipathConfig8to9( -+ pathname=pathname, -+ config_dir=config_dir, -+ enable_foreign_exists=enable_foreign_exists, -+ invalid_regexes_exist=invalid_regexes_exist, -+ allow_usb_exists=allow_usb_exists, -+ ) -+ -+ -+def _build_facts(confs): -+ return MultipathConfFacts8to9(configs=confs) -+ -+ -+def test_need_everything(current_actor_context): -+ config = _build_config('need_everything.conf', None, False, True, False) -+ facts = _build_facts([config]) -+ current_actor_context.feed(facts) -+ current_actor_context.run() -+ reports = list(current_actor_context.consume(Report)) -+ assert reports and len(reports) == 3 -+ _assert_foreign_report(reports[0].report) -+ _assert_allow_usb_report(reports[1].report) -+ _assert_invalid_regexes_report(reports[2].report, 'need_everything.conf') -+ -+ -+def test_need_nothing(current_actor_context): -+ config = _build_config('need_nothing.conf', '/etc/multipath/conf.d', True, False, True) -+ facts = _build_facts([config]) -+ current_actor_context.feed(facts) -+ current_actor_context.run() -+ reports = current_actor_context.consume(Report) -+ assert not reports -+ -+ -+def test_need_foreign(current_actor_context): -+ config = _build_config('need_foreign.conf', None, False, False, True) -+ facts = _build_facts([config]) -+ current_actor_context.feed(facts) -+ current_actor_context.run() -+ reports = list(current_actor_context.consume(Report)) -+ assert reports and len(reports) == 1 -+ _assert_foreign_report(reports[0].report) -+ -+ -+def test_need_allos_usb(current_actor_context): -+ config = _build_config('need_allow_usb.conf', None, True, False, False) -+ facts = _build_facts([config]) -+ current_actor_context.feed(facts) -+ current_actor_context.run() -+ reports = list(current_actor_context.consume(Report)) -+ assert reports and len(reports) == 1 -+ _assert_allow_usb_report(reports[0].report) -+ -+ -+def test_invalid_regexes(current_actor_context): -+ config1 = _build_config('invalid_regexes1.conf', None, True, True, True) -+ config2 = _build_config('no_invalid_regexes.conf', None, True, False, True) -+ config3 = _build_config('invalid_regexes2.conf', None, True, True, True) -+ facts = _build_facts([config1, config2, config3]) -+ current_actor_context.feed(facts) -+ current_actor_context.run() -+ reports = list(current_actor_context.consume(Report)) -+ assert reports and len(reports) == 1 -+ _assert_invalid_regexes_report(reports[0].report, 'invalid_regexes1.conf and invalid_regexes2.conf') -+ -+ -+def test_not_in_main_conf(current_actor_context): -+ main_conf = _build_config('main.conf', '/etc/multipath/conf.d', False, True, False) -+ other_conf = _build_config('other.conf', None, True, False, True) -+ facts = _build_facts([main_conf, other_conf]) -+ current_actor_context.feed(facts) -+ current_actor_context.run() -+ reports = list(current_actor_context.consume(Report)) -+ assert reports and len(reports) == 1 -+ _assert_invalid_regexes_report(reports[0].report, 'main.conf') -+ -+ -+def test_in_main_conf(current_actor_context): -+ main_conf = _build_config('main.conf', '/etc/multipath/conf.d', True, True, True) -+ other_conf = _build_config('other.conf', None, False, False, False) -+ next_conf = _build_config('next.conf', None, False, True, False) -+ last_conf = _build_config('last.conf', None, False, True, False) -+ facts = _build_facts([main_conf, other_conf, next_conf, last_conf]) -+ current_actor_context.feed(facts) -+ current_actor_context.run() -+ reports = list(current_actor_context.consume(Report)) -+ assert reports and len(reports) == 1 -+ _assert_invalid_regexes_report(reports[0].report, 'main.conf, next.conf and last.conf') -+ -+ -+def test_in_none_conf(current_actor_context): -+ main_conf = _build_config('main.conf', '/etc/multipath/conf.d', False, False, False) -+ other_conf = _build_config('other.conf', None, False, False, False) -+ facts = _build_facts([main_conf, other_conf]) -+ current_actor_context.feed(facts) -+ current_actor_context.run() -+ reports = list(current_actor_context.consume(Report)) -+ assert reports and len(reports) == 2 -+ _assert_foreign_report(reports[0].report) -+ _assert_allow_usb_report(reports[1].report) -+ -+ -+def test_mixed_conf(current_actor_context): -+ main_conf = _build_config('main.conf', None, True, False, False) -+ next_conf = _build_config('next.conf', None, False, True, False) -+ last_conf = _build_config('last.conf', None, True, False, False) -+ facts = _build_facts([main_conf, next_conf, last_conf]) -+ current_actor_context.feed(facts) -+ current_actor_context.run() -+ reports = list(current_actor_context.consume(Report)) -+ assert reports and len(reports) == 2 -+ _assert_allow_usb_report(reports[0].report) -+ _assert_invalid_regexes_report(reports[1].report, 'next.conf') -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/actor.py b/repos/system_upgrade/el8toel9/actors/multipathconfread/actor.py -new file mode 100644 -index 00000000..92184c70 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/actor.py -@@ -0,0 +1,33 @@ -+from leapp.actors import Actor -+from leapp.libraries.actor import multipathconfread -+from leapp.models import InstalledRedHatSignedRPM, MultipathConfFacts8to9, TargetUserSpaceUpgradeTasks -+from leapp.tags import FactsPhaseTag, IPUWorkflowTag -+ -+ -+class MultipathConfRead8to9(Actor): -+ """ -+ Read multipath configuration files and extract the necessary informaton -+ -+ Related files: -+ - /etc/multipath.conf -+ - /etc/multipath/ - any files inside the directory -+ - /etc/xdrdevices.conf -+ -+ As well, create task (msg) to copy all needed multipath files into -+ the target container as the files are needed to create proper initramfs. -+ This covers the files mentioned above. -+ """ -+ -+ name = 'multipath_conf_read_8to9' -+ consumes = (InstalledRedHatSignedRPM,) -+ produces = (MultipathConfFacts8to9, TargetUserSpaceUpgradeTasks) -+ tags = (FactsPhaseTag, IPUWorkflowTag) -+ -+ def process(self): -+ if multipathconfread.is_processable(): -+ res = multipathconfread.get_multipath_conf_facts() -+ if res: -+ self.produce(res) -+ # Create task to copy multipath config files Iff facts -+ # are generated -+ multipathconfread.produce_copy_to_target_task() -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/libraries/multipathconfread.py b/repos/system_upgrade/el8toel9/actors/multipathconfread/libraries/multipathconfread.py -new file mode 100644 -index 00000000..9acd243e ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/libraries/multipathconfread.py -@@ -0,0 +1,129 @@ -+import errno -+import os -+ -+from leapp.libraries.common import multipathutil -+from leapp.libraries.common.rpms import has_package -+from leapp.libraries.stdlib import api -+from leapp.models import ( -+ CopyFile, -+ InstalledRedHatSignedRPM, -+ MultipathConfFacts8to9, -+ MultipathConfig8to9, -+ TargetUserSpaceUpgradeTasks -+) -+ -+_regexes = ('vendor', 'product', 'revision', 'product_blacklist', 'devnode', -+ 'wwid', 'property', 'protocol') -+ -+ -+def _parse_config(path): -+ contents = multipathutil.read_config(path) -+ if contents is None: -+ return None -+ conf = MultipathConfig8to9(pathname=path) -+ section = None -+ in_subsection = False -+ for line in contents.split('\n'): -+ try: -+ data = multipathutil.LineData(line, section, in_subsection) -+ except ValueError: -+ continue -+ if data.type == data.TYPE_BLANK: -+ continue -+ if data.type == data.TYPE_SECTION_END: -+ if in_subsection: -+ in_subsection = False -+ elif section: -+ section = None -+ continue -+ if data.type == data.TYPE_SECTION_START: -+ if not section: -+ section = data.section -+ elif not in_subsection: -+ in_subsection = True -+ continue -+ if data.type != data.TYPE_OPTION: -+ continue -+ if section == 'defaults': -+ if data.option == 'enable_foreign': -+ conf.enable_foreign_exists = True -+ elif data.option == 'allow_usb_devices': -+ conf.allow_usb_exists = True -+ elif data.option == 'config_dir': -+ conf.config_dir = data.value -+ if data.option in _regexes and data.value == '*': -+ conf.invalid_regexes_exist = True -+ return conf -+ -+ -+def _parse_config_dir(config_dir): -+ res = [] -+ try: -+ for config_file in sorted(os.listdir(config_dir)): -+ path = os.path.join(config_dir, config_file) -+ if not path.endswith('.conf'): -+ continue -+ conf = _parse_config(path) -+ if conf: -+ res.append(conf) -+ except OSError as e: -+ if e.errno == errno.ENOENT: -+ api.current_logger().debug('Multipath conf directory ' + -+ '"{}" doesn\'t exist'.format(config_dir)) -+ else: -+ api.current_logger().warning('Failed to read multipath config ' + -+ 'directory ' + -+ '"{}": {}'.format(config_dir, e)) -+ return res -+ -+ -+def is_processable(): -+ res = has_package(InstalledRedHatSignedRPM, 'device-mapper-multipath') -+ if not res: -+ api.current_logger().debug('device-mapper-multipath is not installed.') -+ return res -+ -+ -+def get_multipath_conf_facts(config_file='/etc/multipath.conf'): -+ res_configs = [] -+ conf = _parse_config(config_file) -+ if not conf: -+ return None -+ res_configs.append(conf) -+ if conf.config_dir: -+ res_configs.extend(_parse_config_dir(conf.config_dir)) -+ else: -+ res_configs.extend(_parse_config_dir('/etc/multipath/conf.d')) -+ return MultipathConfFacts8to9(configs=res_configs) -+ -+ -+def produce_copy_to_target_task(): -+ """ -+ Produce task to copy files into the target userspace -+ -+ The multipath configuration files are needed when the upgrade init ramdisk -+ is generated to ensure we are able to boot into the upgrade environment -+ and start the upgrade process itself. By this msg it's told that these -+ files/dirs will be available when the upgrade init ramdisk is generated. -+ -+ See TargetUserSpaceUpgradeTasks and UpgradeInitramfsTasks for more info. -+ """ -+ # TODO(pstodulk): move the function to the multipathconfcheck actor -+ # and get rid of the hardcoded stuff. -+ # - The current behaviour looks from the user POV same as before this -+ # * commit. I am going to keep the proper fix for additional PR as we do -+ # * not want to make the current PR even more complex than now and the solution -+ # * is not so trivial. -+ # - As well, I am missing some information around xDR devices, which are -+ # * possibly not handled correctly (maybe missing some executables?..) -+ # * Update: practically we do not have enough info about xDR drivers, but -+ # * discussed with Ben Marzinski, as the multipath dracut module includes -+ # * the xDR utils stuff, we should handle it in the same way. -+ # * See xdrgetuid, xdrgetinfo (these two utils are now missing in our initramfs) -+ copy_files = [] -+ for fname in ['/etc/multipath.conf', '/etc/multipath', '/etc/xdrdevices.conf']: -+ if os.path.exists(fname): -+ copy_files.append(CopyFile(src=fname)) -+ -+ if copy_files: -+ api.produce(TargetUserSpaceUpgradeTasks(copy_files=copy_files)) -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/all_the_things.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/all_the_things.conf -new file mode 100644 -index 00000000..263cdf9e ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/all_the_things.conf -@@ -0,0 +1,21 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+} -+ -+blacklist { -+ devnode "*" -+} -+ -+blacklist { -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/allow_usb.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/allow_usb.conf -new file mode 100644 -index 00000000..57b6f97b ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/allow_usb.conf -@@ -0,0 +1,1078 @@ -+defaults { -+ verbosity 2 -+ flush_on_last_del "no" -+ user_friendly_names "yes" -+ fast_io_fail_tmo 5 -+ bindings_file "/etc/multipath/bindings" -+ wwids_file "/etc/multipath/wwids" -+ prkeys_file "/etc/multipath/prkeys" -+ log_checker_err always -+ all_tg_pt "no" -+ retain_attached_hw_handler "yes" -+ detect_prio "yes" -+ detect_checker "yes" -+ force_sync "yes" -+ strict_timing "no" -+ deferred_remove "no" -+ find_multipaths "on" -+ uxsock_timeout 4000 -+ retrigger_tries 0 -+ retrigger_delay 10 -+ missing_uev_wait_timeout 30 -+ skip_kpartx "no" -+ disable_changed_wwids ignored -+ remove_retries 0 -+ ghost_delay "no" -+ find_multipaths_timeout -10 -+ marginal_pathgroups "no" -+ recheck_wwid "no" -+ allow_usb_devices yes -+} -+blacklist { -+ devnode ".*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid ".*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol ".*" -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor ".*" -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property ".*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product ".*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product ".*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision ".*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor ".*" -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/complicated.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/complicated.conf -new file mode 100644 -index 00000000..23d93ecf ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/complicated.conf -@@ -0,0 +1,1107 @@ -+defaults { -+ verbosity 2 -+ polling_interval 5 -+ max_polling_interval 20 -+ reassign_maps "no" -+ multipath_dir "/lib64/multipath" -+ path_selector "service-time 0" -+ path_grouping_policy "failover" -+ uid_attribute "ID_SERIAL" -+ prio "const" -+ prio_args "" -+ features "0" -+ path_checker "tur" -+ alias_prefix "mpath" -+ failback "manual" -+ rr_min_io 1000 -+ rr_min_io_rq 1 -+ max_fds "max" -+ rr_weight "uniform" -+ queue_without_daemon "no" -+ flush_on_last_del "no" -+ user_friendly_names "yes" -+ fast_io_fail_tmo 5 -+ bindings_file "/etc/multipath/bindings" -+ wwids_file "/etc/multipath/wwids" -+ prkeys_file "/etc/multipath/prkeys" -+ log_checker_err always -+ all_tg_pt "no" -+ retain_attached_hw_handler "yes" -+ detect_prio "yes" -+ detect_checker "yes" -+ force_sync "yes" -+ strict_timing "no" -+ deferred_remove "no" -+ config_dir "/etc/multipath/conf.d" -+ delay_watch_checks "no" -+ delay_wait_checks "no" -+ san_path_err_threshold "no" -+ san_path_err_forget_rate "no" -+ san_path_err_recovery_time "no" -+ marginal_path_err_sample_time "no" -+ marginal_path_err_rate_threshold "no" -+ marginal_path_err_recheck_gap_time "no" -+ marginal_path_double_failed_time "no" -+ find_multipaths "on" -+ uxsock_timeout 4000 -+ retrigger_tries 0 -+ retrigger_delay 10 -+ missing_uev_wait_timeout 30 -+ skip_kpartx "no" -+ disable_changed_wwids ignored -+ remove_retries 0 -+ ghost_delay "no" -+ find_multipaths_timeout -10 -+ enable_foreign "^$" -+ marginal_pathgroups "no" -+ recheck_wwid "no" -+} -+blacklist { -+ devnode "*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid ".*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol "*" -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor "*" -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property ".*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product "*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product ".*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision "*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "*" -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+ allow_usb_devices yes -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf1.d/empty.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf1.d/empty.conf -new file mode 100644 -index 00000000..e69de29b -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf1.d/nothing_important.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf1.d/nothing_important.conf -new file mode 100644 -index 00000000..70fbc929 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf1.d/nothing_important.conf -@@ -0,0 +1,26 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "this_gets_ignored" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ } -+} -+ -+blacklist { -+ wwid ".*" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf2.d/all_true.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf2.d/all_true.conf -new file mode 100644 -index 00000000..cf606807 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf2.d/all_true.conf -@@ -0,0 +1,24 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ allow_usb_devices no -+ find_multipaths yes -+ enable_foreign "^$" -+} -+ -+blacklist { -+ devnode "*" -+} -+ -+blacklist_exceptions { -+ wwid "^sd[a-z]" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf3.d/README b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf3.d/README -new file mode 100644 -index 00000000..c208af29 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/conf3.d/README -@@ -0,0 +1,2 @@ -+This directory contains not *.conf files. This file exists so that git will -+track the directory. -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/converted_the_things.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/converted_the_things.conf -new file mode 100644 -index 00000000..f549b9b9 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/converted_the_things.conf -@@ -0,0 +1,23 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ enable_foreign "" -+ allow_usb_devices yes -+} -+ -+blacklist { -+ devnode ".*" -+} -+ -+blacklist { -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/default_rhel8.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/default_rhel8.conf -new file mode 100644 -index 00000000..a08fae86 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/default_rhel8.conf -@@ -0,0 +1,22 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ enable_foreign "^$" -+} -+ -+blacklist_exceptions { -+ property "(SCSI_IDENT_|ID_WWN)" -+} -+ -+blacklist { -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/empty.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/empty.conf -new file mode 100644 -index 00000000..e69de29b -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/empty_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/empty_dir.conf -new file mode 100644 -index 00000000..73179b30 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/empty_dir.conf -@@ -0,0 +1,26 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "conf3.d" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ } -+} -+ -+blacklist { -+ wwid ".*" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/missing_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/missing_dir.conf -new file mode 100644 -index 00000000..0b963000 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/missing_dir.conf -@@ -0,0 +1,27 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "missing" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ enable_foreign "" -+ } -+} -+ -+blacklist { -+ wwid "*" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/no_defaults.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/no_defaults.conf -new file mode 100644 -index 00000000..f7885ca8 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/no_defaults.conf -@@ -0,0 +1,1049 @@ -+blacklist { -+ devnode "*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid "*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol "*" -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product "*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor "*" -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property "*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product "*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product "*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision "*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "*" -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+ allow_usb_devices yes -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/no_foreign.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/no_foreign.conf -new file mode 100644 -index 00000000..9525731c ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/no_foreign.conf -@@ -0,0 +1,1089 @@ -+defaults { -+ failback "manual" -+ rr_min_io 1000 -+ rr_min_io_rq 1 -+ max_fds "max" -+ rr_weight "uniform" -+ queue_without_daemon "no" -+ flush_on_last_del "no" -+ user_friendly_names "yes" -+ allow_usb_devices no -+ fast_io_fail_tmo 5 -+ bindings_file "/etc/multipath/bindings" -+ wwids_file "/etc/multipath/wwids" -+ prkeys_file "/etc/multipath/prkeys" -+ log_checker_err always -+ all_tg_pt "no" -+ retain_attached_hw_handler "yes" -+ detect_prio "yes" -+ detect_checker "yes" -+ force_sync "yes" -+ strict_timing "no" -+ deferred_remove "no" -+ delay_watch_checks "no" -+ delay_wait_checks "no" -+ san_path_err_threshold "no" -+ san_path_err_forget_rate "no" -+ san_path_err_recovery_time "no" -+ marginal_path_err_sample_time "no" -+ marginal_path_err_rate_threshold "no" -+ marginal_path_err_recheck_gap_time "no" -+ marginal_path_double_failed_time "no" -+ find_multipaths "on" -+ disable_changed_wwids ignored -+ remove_retries 0 -+ ghost_delay "no" -+ find_multipaths_timeout -10 -+ marginal_pathgroups "no" -+ recheck_wwid "no" -+} -+blacklist { -+ devnode ".*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid "*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol "*" -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor "*" -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property "*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product ".*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ enable_foreign "^$" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product "*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision ".*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "*" -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ enable_foreign "^$" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/not_set_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/not_set_dir.conf -new file mode 100644 -index 00000000..681eb906 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/not_set_dir.conf -@@ -0,0 +1,27 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "conf1.d" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ enable_foreign "" -+ } -+} -+ -+blacklist { -+ wwid "*" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/set_in_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/set_in_dir.conf -new file mode 100644 -index 00000000..acc068c5 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/set_in_dir.conf -@@ -0,0 +1,33 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "conf2.d" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ } -+} -+ -+blacklist { -+ wwid ".*" -+} -+ -+wwids { -+ wwid { -+ wwid "123456789" -+ alias "test" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/two_defaults.conf b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/two_defaults.conf -new file mode 100644 -index 00000000..ae59013a ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/files/two_defaults.conf -@@ -0,0 +1,26 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ enable_foreign "^$" -+} -+ -+blacklist_exceptions { -+ property "(SCSI_IDENT_|ID_WWN)" -+} -+ -+blacklist { -+} -+ -+defaults { -+ no_path_retry queue -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/test_multipath_conf_read_8to9.py b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/test_multipath_conf_read_8to9.py -new file mode 100644 -index 00000000..9134e1d7 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfread/tests/test_multipath_conf_read_8to9.py -@@ -0,0 +1,144 @@ -+import os -+ -+from leapp.libraries.actor import multipathconfread -+from leapp.models import MultipathConfig8to9 -+ -+TEST_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files') -+ -+ -+def build_config(pathname, config_dir, enable_foreign_exists, invalid_regexes_exist, allow_usb_exists): -+ return MultipathConfig8to9( -+ pathname=pathname, -+ config_dir=config_dir, -+ enable_foreign_exists=enable_foreign_exists, -+ invalid_regexes_exist=invalid_regexes_exist, -+ allow_usb_exists=allow_usb_exists, -+ ) -+ -+ -+def assert_config(config, expected): -+ assert config.pathname == expected.pathname -+ assert config.config_dir == expected.config_dir -+ assert config.enable_foreign_exists == expected.enable_foreign_exists -+ assert config.invalid_regexes_exist == expected.invalid_regexes_exist -+ assert config.allow_usb_exists == expected.allow_usb_exists -+ -+ -+default_rhel8_conf = build_config( -+ os.path.join(TEST_DIR, 'default_rhel8.conf'), None, True, False, False) -+ -+all_the_things_conf = build_config( -+ os.path.join(TEST_DIR, 'all_the_things.conf'), None, False, True, False) -+ -+converted_the_things_conf = build_config( -+ os.path.join(TEST_DIR, 'converted_the_things.conf'), None, True, False, True) -+ -+complicated_conf = build_config( -+ os.path.join(TEST_DIR, 'complicated.conf'), "/etc/multipath/conf.d", True, True, False) -+ -+no_foreign_conf = build_config( -+ os.path.join(TEST_DIR, 'no_foreign.conf'), None, False, True, True) -+ -+allow_usb_conf = build_config( -+ os.path.join(TEST_DIR, 'allow_usb.conf'), None, False, False, True) -+ -+empty_conf = build_config( -+ os.path.join(TEST_DIR, 'empty.conf'), None, False, False, False) -+ -+missing_dir_conf = build_config( -+ os.path.join(TEST_DIR, 'missing_dir.conf'), os.path.join(TEST_DIR, 'missing'), False, True, False) -+ -+empty_dir_conf = build_config( -+ os.path.join(TEST_DIR, 'empty_dir.conf'), os.path.join(TEST_DIR, 'conf3.d'), False, False, False) -+ -+not_set_dir_conf = build_config( -+ os.path.join(TEST_DIR, 'not_set_dir.conf'), os.path.join(TEST_DIR, "conf1.d"), False, True, False) -+ -+empty1_conf = build_config( -+ os.path.join(TEST_DIR, 'conf1.d/empty.conf'), None, False, False, False) -+ -+nothing_important_conf = build_config( -+ os.path.join(TEST_DIR, 'conf1.d/nothing_important.conf'), -+ os.path.join(TEST_DIR, 'this_gets_ignored'), False, False, False) -+ -+set_in_dir_conf = build_config( -+ os.path.join(TEST_DIR, 'set_in_dir.conf'), os.path.join(TEST_DIR, "conf2.d"), False, False, False) -+ -+all_true_conf = build_config( -+ os.path.join(TEST_DIR, 'conf2.d/all_true.conf'), None, True, True, True) -+ -+no_defaults_conf = build_config( -+ os.path.join(TEST_DIR, 'no_defaults.conf'), None, False, True, False) -+ -+two_defaults_conf = build_config( -+ os.path.join(TEST_DIR, 'two_defaults.conf'), None, True, False, False) -+ -+ -+def mock_parse_config(path): -+ """Convert config_dir into full pathname""" -+ conf = multipathconfread._parse_config_orig(path) -+ if not conf: -+ return None -+ if conf.config_dir: -+ conf.config_dir = os.path.join(TEST_DIR, conf.config_dir) -+ return conf -+ -+ -+def test_parse_config(): -+ test_map = {'default_rhel8.conf': default_rhel8_conf, -+ 'all_the_things.conf': all_the_things_conf, -+ 'converted_the_things.conf': converted_the_things_conf, -+ 'complicated.conf': complicated_conf, -+ 'no_foreign.conf': no_foreign_conf, -+ 'allow_usb.conf': allow_usb_conf, -+ 'no_defaults.conf': no_defaults_conf, -+ 'two_defaults.conf': two_defaults_conf, -+ 'empty.conf': empty_conf} -+ for config_name, expected_data in test_map.items(): -+ config = multipathconfread._parse_config(os.path.join(TEST_DIR, config_name)) -+ assert config -+ assert_config(config, expected_data) -+ -+ -+def test_get_facts_missing_dir(monkeypatch): -+ monkeypatch.setattr(multipathconfread, '_parse_config_orig', multipathconfread._parse_config, raising=False) -+ monkeypatch.setattr(multipathconfread, '_parse_config', mock_parse_config) -+ -+ facts = multipathconfread.get_multipath_conf_facts(os.path.join(TEST_DIR, 'missing_dir.conf')) -+ assert facts -+ assert len(facts.configs) == 1 -+ assert_config(facts.configs[0], missing_dir_conf) -+ -+ -+def test_get_facts_empty_dir(monkeypatch): -+ monkeypatch.setattr(multipathconfread, '_parse_config_orig', multipathconfread._parse_config, raising=False) -+ monkeypatch.setattr(multipathconfread, '_parse_config', mock_parse_config) -+ -+ facts = multipathconfread.get_multipath_conf_facts(os.path.join(TEST_DIR, 'empty_dir.conf')) -+ assert facts -+ assert len(facts.configs) == 1 -+ assert_config(facts.configs[0], empty_dir_conf) -+ -+ -+def test_get_facts_not_set_dir(monkeypatch): -+ monkeypatch.setattr(multipathconfread, '_parse_config_orig', multipathconfread._parse_config, raising=False) -+ monkeypatch.setattr(multipathconfread, '_parse_config', mock_parse_config) -+ -+ expected_configs = (not_set_dir_conf, empty1_conf, nothing_important_conf) -+ facts = multipathconfread.get_multipath_conf_facts(os.path.join(TEST_DIR, 'not_set_dir.conf')) -+ assert facts -+ assert len(facts.configs) == 3 -+ for i in range(len(facts.configs)): -+ assert_config(facts.configs[i], expected_configs[i]) -+ -+ -+def test_get_facts_set_in_dir(monkeypatch): -+ monkeypatch.setattr(multipathconfread, '_parse_config_orig', multipathconfread._parse_config, raising=False) -+ monkeypatch.setattr(multipathconfread, '_parse_config', mock_parse_config) -+ -+ expected_configs = (set_in_dir_conf, all_true_conf) -+ facts = multipathconfread.get_multipath_conf_facts(os.path.join(TEST_DIR, 'set_in_dir.conf')) -+ assert facts -+ assert len(facts.configs) == 2 -+ for i in range(len(facts.configs)): -+ assert_config(facts.configs[i], expected_configs[i]) -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/actor.py b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/actor.py -new file mode 100644 -index 00000000..6c3ef41b ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/actor.py -@@ -0,0 +1,27 @@ -+from leapp.actors import Actor -+from leapp.libraries.actor import multipathconfupdate -+from leapp.models import MultipathConfFacts8to9 -+from leapp.tags import ApplicationsPhaseTag, IPUWorkflowTag -+ -+ -+class MultipathConfUpdate8to9(Actor): -+ """ -+ Modifies multipath configuration files on the target RHEL-9 system so that -+ they will run properly. This is done in three ways -+ 1. Adding the allow_usb_devices and enable_foreign options to -+ /etc/multipath.conf if they are not present, to retain RHEL-8 behavior -+ 2. Converting any "*" regular expression strings to ".*" -+ """ -+ -+ name = 'multipath_conf_update_8to9' -+ consumes = (MultipathConfFacts8to9,) -+ produces = () -+ tags = (ApplicationsPhaseTag, IPUWorkflowTag) -+ -+ def process(self): -+ facts = next(self.consume(MultipathConfFacts8to9), None) -+ if facts is None: -+ self.log.debug('Skipping execution. No MultipathConfFacts8to9 has ' -+ 'been produced') -+ return -+ multipathconfupdate.update_configs(facts) -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/libraries/multipathconfupdate.py b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/libraries/multipathconfupdate.py -new file mode 100644 -index 00000000..9e49d78f ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/libraries/multipathconfupdate.py -@@ -0,0 +1,86 @@ -+from leapp.libraries.common import multipathutil -+ -+_regexes = ('vendor', 'product', 'revision', 'product_blacklist', 'devnode', -+ 'wwid', 'property', 'protocol') -+ -+ -+def _update_config(need_foreign, need_allow_usb, config): -+ if not (need_foreign or need_allow_usb or config.invalid_regexes_exist): -+ return None -+ contents = multipathutil.read_config(config.pathname) -+ if contents is None: -+ return None -+ lines = contents.split('\n') -+ -+ section = None -+ in_subsection = False -+ updated_file = False -+ defaults_start = -1 -+ for i, line in enumerate(lines): -+ try: -+ data = multipathutil.LineData(line, section, in_subsection) -+ except ValueError: -+ continue -+ if data.type == data.TYPE_SECTION_END: -+ if in_subsection: -+ in_subsection = False -+ elif section is not None: -+ section = None -+ elif data.type == data.TYPE_SECTION_START: -+ if section is None: -+ section = data.section -+ if section == 'defaults': -+ defaults_start = i + 1 -+ elif not in_subsection: -+ in_subsection = True -+ elif data.type == data.TYPE_OPTION: -+ if section == 'defaults': -+ if data.option == 'enable_foreign': -+ need_foreign = False -+ elif data.option == 'allow_usb_devices': -+ need_allow_usb = False -+ if data.option in _regexes and data.value == '*': -+ lines[i] = line.replace('*', '.*', 1) -+ lines[i] += ' # line modified by Leapp' -+ updated_file = True -+ -+ if need_foreign or need_allow_usb: -+ updated_file = True -+ if defaults_start < 0: -+ if in_subsection: -+ lines.append('\t} # line added by Leapp') -+ if section is not None: -+ lines.append('} # line added by Leapp') -+ lines.append('defaults { # section added by Leapp') -+ if need_foreign: -+ lines.append('\tenable_foreign ""') -+ if need_allow_usb: -+ lines.append('\tallow_usb_devices yes') -+ lines.append('}') -+ lines.append('') -+ else: -+ if need_allow_usb: -+ lines.insert(defaults_start, '\tallow_usb_devices yes # line added by Leapp') -+ if need_foreign: -+ lines.insert(defaults_start, '\tenable_foreign "" # line added by Leapp') -+ -+ if not updated_file: -+ return None -+ -+ contents = '\n'.join(lines) -+ return contents -+ -+ -+def update_configs(facts): -+ need_foreign = not any(x for x in facts.configs if x.enable_foreign_exists) -+ need_allow_usb = not any(x for x in facts.configs if x.allow_usb_exists) -+ for config in facts.configs: -+ contents = _update_config(need_foreign, need_allow_usb, config) -+ need_foreign = False -+ need_allow_usb = False -+ """ -+ foreign_exists and allow_usb_exists only matter for the main -+ config file. -+ """ -+ if contents: -+ multipathutil.write_config(config.pathname, contents) -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/all_the_things.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/all_the_things.conf -new file mode 100644 -index 00000000..eb07d503 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/all_the_things.conf -@@ -0,0 +1,23 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ enable_foreign "" # line added by Leapp -+ allow_usb_devices yes # line added by Leapp -+ user_friendly_names yes -+ find_multipaths yes -+} -+ -+blacklist { -+ devnode ".*" # line modified by Leapp -+} -+ -+blacklist { -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/allow_usb.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/allow_usb.conf -new file mode 100644 -index 00000000..e7a9c23e ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/allow_usb.conf -@@ -0,0 +1,1079 @@ -+defaults { -+ enable_foreign "" # line added by Leapp -+ verbosity 2 -+ flush_on_last_del "no" -+ user_friendly_names "yes" -+ fast_io_fail_tmo 5 -+ bindings_file "/etc/multipath/bindings" -+ wwids_file "/etc/multipath/wwids" -+ prkeys_file "/etc/multipath/prkeys" -+ log_checker_err always -+ all_tg_pt "no" -+ retain_attached_hw_handler "yes" -+ detect_prio "yes" -+ detect_checker "yes" -+ force_sync "yes" -+ strict_timing "no" -+ deferred_remove "no" -+ find_multipaths "on" -+ uxsock_timeout 4000 -+ retrigger_tries 0 -+ retrigger_delay 10 -+ missing_uev_wait_timeout 30 -+ skip_kpartx "no" -+ disable_changed_wwids ignored -+ remove_retries 0 -+ ghost_delay "no" -+ find_multipaths_timeout -10 -+ marginal_pathgroups "no" -+ recheck_wwid "no" -+ allow_usb_devices yes -+} -+blacklist { -+ devnode ".*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid ".*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol ".*" -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor ".*" -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property ".*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product ".*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product ".*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision ".*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor ".*" -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/complicated.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/complicated.conf -new file mode 100644 -index 00000000..cbfaf801 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/complicated.conf -@@ -0,0 +1,1108 @@ -+defaults { -+ allow_usb_devices yes # line added by Leapp -+ verbosity 2 -+ polling_interval 5 -+ max_polling_interval 20 -+ reassign_maps "no" -+ multipath_dir "/lib64/multipath" -+ path_selector "service-time 0" -+ path_grouping_policy "failover" -+ uid_attribute "ID_SERIAL" -+ prio "const" -+ prio_args "" -+ features "0" -+ path_checker "tur" -+ alias_prefix "mpath" -+ failback "manual" -+ rr_min_io 1000 -+ rr_min_io_rq 1 -+ max_fds "max" -+ rr_weight "uniform" -+ queue_without_daemon "no" -+ flush_on_last_del "no" -+ user_friendly_names "yes" -+ fast_io_fail_tmo 5 -+ bindings_file "/etc/multipath/bindings" -+ wwids_file "/etc/multipath/wwids" -+ prkeys_file "/etc/multipath/prkeys" -+ log_checker_err always -+ all_tg_pt "no" -+ retain_attached_hw_handler "yes" -+ detect_prio "yes" -+ detect_checker "yes" -+ force_sync "yes" -+ strict_timing "no" -+ deferred_remove "no" -+ config_dir "/etc/multipath/conf.d" -+ delay_watch_checks "no" -+ delay_wait_checks "no" -+ san_path_err_threshold "no" -+ san_path_err_forget_rate "no" -+ san_path_err_recovery_time "no" -+ marginal_path_err_sample_time "no" -+ marginal_path_err_rate_threshold "no" -+ marginal_path_err_recheck_gap_time "no" -+ marginal_path_double_failed_time "no" -+ find_multipaths "on" -+ uxsock_timeout 4000 -+ retrigger_tries 0 -+ retrigger_delay 10 -+ missing_uev_wait_timeout 30 -+ skip_kpartx "no" -+ disable_changed_wwids ignored -+ remove_retries 0 -+ ghost_delay "no" -+ find_multipaths_timeout -10 -+ enable_foreign "^$" -+ marginal_pathgroups "no" -+ recheck_wwid "no" -+} -+blacklist { -+ devnode ".*" # line modified by Leapp -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid ".*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol ".*" # line modified by Leapp -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor ".*" # line modified by Leapp -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property ".*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product ".*" # line modified by Leapp -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product ".*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision ".*" # line modified by Leapp -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor ".*" # line modified by Leapp -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+ allow_usb_devices yes -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/conf2.d/all_true.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/conf2.d/all_true.conf -new file mode 100644 -index 00000000..0e3991ae ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/conf2.d/all_true.conf -@@ -0,0 +1,24 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ allow_usb_devices no -+ find_multipaths yes -+ enable_foreign "^$" -+} -+ -+blacklist { -+ devnode ".*" # line modified by Leapp -+} -+ -+blacklist_exceptions { -+ wwid "^sd[a-z]" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/default_rhel8.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/default_rhel8.conf -new file mode 100644 -index 00000000..ea083d1c ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/default_rhel8.conf -@@ -0,0 +1,23 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ allow_usb_devices yes # line added by Leapp -+ user_friendly_names yes -+ find_multipaths yes -+ enable_foreign "^$" -+} -+ -+blacklist_exceptions { -+ property "(SCSI_IDENT_|ID_WWN)" -+} -+ -+blacklist { -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/empty.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/empty.conf -new file mode 100644 -index 00000000..ecbd72cf ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/empty.conf -@@ -0,0 +1,5 @@ -+ -+defaults { # section added by Leapp -+ enable_foreign "" -+ allow_usb_devices yes -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/empty_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/empty_dir.conf -new file mode 100644 -index 00000000..39e714db ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/empty_dir.conf -@@ -0,0 +1,28 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ enable_foreign "" # line added by Leapp -+ allow_usb_devices yes # line added by Leapp -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "conf3.d" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ } -+} -+ -+blacklist { -+ wwid ".*" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/missing_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/missing_dir.conf -new file mode 100644 -index 00000000..c3e7599e ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/missing_dir.conf -@@ -0,0 +1,29 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ enable_foreign "" # line added by Leapp -+ allow_usb_devices yes # line added by Leapp -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "missing" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ enable_foreign "" -+ } -+} -+ -+blacklist { -+ wwid ".*" # line modified by Leapp -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/no_defaults.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/no_defaults.conf -new file mode 100644 -index 00000000..02d7c1a2 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/no_defaults.conf -@@ -0,0 +1,1054 @@ -+blacklist { -+ devnode ".*" # line modified by Leapp -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid ".*" # line modified by Leapp -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol ".*" # line modified by Leapp -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" # line modified by Leapp -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor ".*" # line modified by Leapp -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property ".*" # line modified by Leapp -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product ".*" # line modified by Leapp -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product ".*" # line modified by Leapp -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision ".*" # line modified by Leapp -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor ".*" # line modified by Leapp -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+ allow_usb_devices yes -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -+ -+defaults { # section added by Leapp -+ enable_foreign "" -+ allow_usb_devices yes -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/no_foreign.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/no_foreign.conf -new file mode 100644 -index 00000000..9abffc40 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/no_foreign.conf -@@ -0,0 +1,1090 @@ -+defaults { -+ enable_foreign "" # line added by Leapp -+ failback "manual" -+ rr_min_io 1000 -+ rr_min_io_rq 1 -+ max_fds "max" -+ rr_weight "uniform" -+ queue_without_daemon "no" -+ flush_on_last_del "no" -+ user_friendly_names "yes" -+ allow_usb_devices no -+ fast_io_fail_tmo 5 -+ bindings_file "/etc/multipath/bindings" -+ wwids_file "/etc/multipath/wwids" -+ prkeys_file "/etc/multipath/prkeys" -+ log_checker_err always -+ all_tg_pt "no" -+ retain_attached_hw_handler "yes" -+ detect_prio "yes" -+ detect_checker "yes" -+ force_sync "yes" -+ strict_timing "no" -+ deferred_remove "no" -+ delay_watch_checks "no" -+ delay_wait_checks "no" -+ san_path_err_threshold "no" -+ san_path_err_forget_rate "no" -+ san_path_err_recovery_time "no" -+ marginal_path_err_sample_time "no" -+ marginal_path_err_rate_threshold "no" -+ marginal_path_err_recheck_gap_time "no" -+ marginal_path_double_failed_time "no" -+ find_multipaths "on" -+ disable_changed_wwids ignored -+ remove_retries 0 -+ ghost_delay "no" -+ find_multipaths_timeout -10 -+ marginal_pathgroups "no" -+ recheck_wwid "no" -+} -+blacklist { -+ devnode ".*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid ".*" # line modified by Leapp -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol ".*" # line modified by Leapp -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor ".*" # line modified by Leapp -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property ".*" # line modified by Leapp -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product ".*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ enable_foreign "^$" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product ".*" # line modified by Leapp -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision ".*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor ".*" # line modified by Leapp -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ enable_foreign "^$" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/not_set_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/not_set_dir.conf -new file mode 100644 -index 00000000..189da997 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/not_set_dir.conf -@@ -0,0 +1,29 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ enable_foreign "" # line added by Leapp -+ allow_usb_devices yes # line added by Leapp -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "conf1.d" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ enable_foreign "" -+ } -+} -+ -+blacklist { -+ wwid ".*" # line modified by Leapp -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/two_defaults.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/two_defaults.conf -new file mode 100644 -index 00000000..29549849 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/after/two_defaults.conf -@@ -0,0 +1,27 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ enable_foreign "^$" -+} -+ -+blacklist_exceptions { -+ property "(SCSI_IDENT_|ID_WWN)" -+} -+ -+blacklist { -+} -+ -+defaults { -+ allow_usb_devices yes # line added by Leapp -+ no_path_retry queue -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/all_the_things.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/all_the_things.conf -new file mode 100644 -index 00000000..263cdf9e ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/all_the_things.conf -@@ -0,0 +1,21 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+} -+ -+blacklist { -+ devnode "*" -+} -+ -+blacklist { -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/allow_usb.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/allow_usb.conf -new file mode 100644 -index 00000000..57b6f97b ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/allow_usb.conf -@@ -0,0 +1,1078 @@ -+defaults { -+ verbosity 2 -+ flush_on_last_del "no" -+ user_friendly_names "yes" -+ fast_io_fail_tmo 5 -+ bindings_file "/etc/multipath/bindings" -+ wwids_file "/etc/multipath/wwids" -+ prkeys_file "/etc/multipath/prkeys" -+ log_checker_err always -+ all_tg_pt "no" -+ retain_attached_hw_handler "yes" -+ detect_prio "yes" -+ detect_checker "yes" -+ force_sync "yes" -+ strict_timing "no" -+ deferred_remove "no" -+ find_multipaths "on" -+ uxsock_timeout 4000 -+ retrigger_tries 0 -+ retrigger_delay 10 -+ missing_uev_wait_timeout 30 -+ skip_kpartx "no" -+ disable_changed_wwids ignored -+ remove_retries 0 -+ ghost_delay "no" -+ find_multipaths_timeout -10 -+ marginal_pathgroups "no" -+ recheck_wwid "no" -+ allow_usb_devices yes -+} -+blacklist { -+ devnode ".*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid ".*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol ".*" -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor ".*" -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property ".*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product ".*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product ".*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision ".*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor ".*" -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/complicated.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/complicated.conf -new file mode 100644 -index 00000000..23d93ecf ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/complicated.conf -@@ -0,0 +1,1107 @@ -+defaults { -+ verbosity 2 -+ polling_interval 5 -+ max_polling_interval 20 -+ reassign_maps "no" -+ multipath_dir "/lib64/multipath" -+ path_selector "service-time 0" -+ path_grouping_policy "failover" -+ uid_attribute "ID_SERIAL" -+ prio "const" -+ prio_args "" -+ features "0" -+ path_checker "tur" -+ alias_prefix "mpath" -+ failback "manual" -+ rr_min_io 1000 -+ rr_min_io_rq 1 -+ max_fds "max" -+ rr_weight "uniform" -+ queue_without_daemon "no" -+ flush_on_last_del "no" -+ user_friendly_names "yes" -+ fast_io_fail_tmo 5 -+ bindings_file "/etc/multipath/bindings" -+ wwids_file "/etc/multipath/wwids" -+ prkeys_file "/etc/multipath/prkeys" -+ log_checker_err always -+ all_tg_pt "no" -+ retain_attached_hw_handler "yes" -+ detect_prio "yes" -+ detect_checker "yes" -+ force_sync "yes" -+ strict_timing "no" -+ deferred_remove "no" -+ config_dir "/etc/multipath/conf.d" -+ delay_watch_checks "no" -+ delay_wait_checks "no" -+ san_path_err_threshold "no" -+ san_path_err_forget_rate "no" -+ san_path_err_recovery_time "no" -+ marginal_path_err_sample_time "no" -+ marginal_path_err_rate_threshold "no" -+ marginal_path_err_recheck_gap_time "no" -+ marginal_path_double_failed_time "no" -+ find_multipaths "on" -+ uxsock_timeout 4000 -+ retrigger_tries 0 -+ retrigger_delay 10 -+ missing_uev_wait_timeout 30 -+ skip_kpartx "no" -+ disable_changed_wwids ignored -+ remove_retries 0 -+ ghost_delay "no" -+ find_multipaths_timeout -10 -+ enable_foreign "^$" -+ marginal_pathgroups "no" -+ recheck_wwid "no" -+} -+blacklist { -+ devnode "*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid ".*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol "*" -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor "*" -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property ".*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product "*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product ".*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision "*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "*" -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+ allow_usb_devices yes -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf1.d/empty.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf1.d/empty.conf -new file mode 100644 -index 00000000..e69de29b -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf1.d/nothing_important.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf1.d/nothing_important.conf -new file mode 100644 -index 00000000..70fbc929 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf1.d/nothing_important.conf -@@ -0,0 +1,26 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "this_gets_ignored" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ } -+} -+ -+blacklist { -+ wwid ".*" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf2.d/all_true.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf2.d/all_true.conf -new file mode 100644 -index 00000000..cf606807 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf2.d/all_true.conf -@@ -0,0 +1,24 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ allow_usb_devices no -+ find_multipaths yes -+ enable_foreign "^$" -+} -+ -+blacklist { -+ devnode "*" -+} -+ -+blacklist_exceptions { -+ wwid "^sd[a-z]" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf3.d/README b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf3.d/README -new file mode 100644 -index 00000000..c208af29 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/conf3.d/README -@@ -0,0 +1,2 @@ -+This directory contains not *.conf files. This file exists so that git will -+track the directory. -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/converted_the_things.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/converted_the_things.conf -new file mode 100644 -index 00000000..f549b9b9 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/converted_the_things.conf -@@ -0,0 +1,23 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ enable_foreign "" -+ allow_usb_devices yes -+} -+ -+blacklist { -+ devnode ".*" -+} -+ -+blacklist { -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/default_rhel8.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/default_rhel8.conf -new file mode 100644 -index 00000000..a08fae86 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/default_rhel8.conf -@@ -0,0 +1,22 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ enable_foreign "^$" -+} -+ -+blacklist_exceptions { -+ property "(SCSI_IDENT_|ID_WWN)" -+} -+ -+blacklist { -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/empty.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/empty.conf -new file mode 100644 -index 00000000..e69de29b -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/empty_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/empty_dir.conf -new file mode 100644 -index 00000000..73179b30 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/empty_dir.conf -@@ -0,0 +1,26 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "conf3.d" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ } -+} -+ -+blacklist { -+ wwid ".*" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/missing_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/missing_dir.conf -new file mode 100644 -index 00000000..0b963000 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/missing_dir.conf -@@ -0,0 +1,27 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "missing" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ enable_foreign "" -+ } -+} -+ -+blacklist { -+ wwid "*" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/no_defaults.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/no_defaults.conf -new file mode 100644 -index 00000000..f7885ca8 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/no_defaults.conf -@@ -0,0 +1,1049 @@ -+blacklist { -+ devnode "*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid "*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol "*" -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product "*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor "*" -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property "*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product "*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product "*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision "*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "*" -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+ allow_usb_devices yes -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/no_foreign.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/no_foreign.conf -new file mode 100644 -index 00000000..9525731c ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/no_foreign.conf -@@ -0,0 +1,1089 @@ -+defaults { -+ failback "manual" -+ rr_min_io 1000 -+ rr_min_io_rq 1 -+ max_fds "max" -+ rr_weight "uniform" -+ queue_without_daemon "no" -+ flush_on_last_del "no" -+ user_friendly_names "yes" -+ allow_usb_devices no -+ fast_io_fail_tmo 5 -+ bindings_file "/etc/multipath/bindings" -+ wwids_file "/etc/multipath/wwids" -+ prkeys_file "/etc/multipath/prkeys" -+ log_checker_err always -+ all_tg_pt "no" -+ retain_attached_hw_handler "yes" -+ detect_prio "yes" -+ detect_checker "yes" -+ force_sync "yes" -+ strict_timing "no" -+ deferred_remove "no" -+ delay_watch_checks "no" -+ delay_wait_checks "no" -+ san_path_err_threshold "no" -+ san_path_err_forget_rate "no" -+ san_path_err_recovery_time "no" -+ marginal_path_err_sample_time "no" -+ marginal_path_err_rate_threshold "no" -+ marginal_path_err_recheck_gap_time "no" -+ marginal_path_double_failed_time "no" -+ find_multipaths "on" -+ disable_changed_wwids ignored -+ remove_retries 0 -+ ghost_delay "no" -+ find_multipaths_timeout -10 -+ marginal_pathgroups "no" -+ recheck_wwid "no" -+} -+blacklist { -+ devnode ".*" -+ device { -+ vendor "SGI" -+ product "Universal Xport" -+ } -+ device { -+ vendor "^DGC" -+ product "LUNZ" -+ } -+ wwid "*" -+ device { -+ vendor "EMC" -+ product "LUNZ" -+ } -+ device { -+ vendor "DELL" -+ product "Universal Xport" -+ } -+ protocol "*" -+ device { -+ vendor "FUJITSU" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "Universal Xport" -+ } -+ device { -+ vendor "IBM" -+ product "S/390" -+ } -+ device { -+ vendor "LENOVO" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "Universal Xport" -+ } -+ device { -+ vendor "STK" -+ product "Universal Xport" -+ } -+ device { -+ vendor "foo" -+ product ".*" -+ } -+ device { -+ vendor "SUN" -+ product "Universal Xport" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "VTrak V-LUN" -+ } -+ device { -+ vendor "Promise" -+ product "Vess V-LUN" -+ } -+ device { -+ vendor "*" -+ product "bar" -+ } -+} -+blacklist_exceptions { -+ devnode "^sd[a-z]" -+ wwid "^3" -+ property "*" -+ protocol "scsi" -+} -+devices { -+ device { -+ vendor "NVME" -+ product ".*" -+ uid_attribute "ID_WWN" -+ path_checker "none" -+ enable_foreign "^$" -+ retain_attached_hw_handler "no" -+ } -+ device { -+ vendor "APPLE" -+ product "Xserve RAID" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "3PARdata" -+ product "VV" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ fast_io_fail_tmo 10 -+ dev_loss_tmo "infinity" -+ vpd_vendor hp3par -+ } -+ device { -+ vendor "DEC" -+ product "HSG80" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HP" -+ product "A6189A" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(MSA|HSV)1[01]0" -+ path_grouping_policy "group_by_prio" -+ path_checker "hp_sw" -+ hardware_handler "1 hp_sw" -+ prio "hp_sw" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "MSA VOLUME" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(COMPAQ|HP)" -+ product "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2[02]12fc|MSA2012i)" -+ path_grouping_policy "multibus" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "MSA [12]0[456]0 SA[NS]" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "HP" -+ product "HSVX700" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "LOGICAL VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "HP" -+ product "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "LEFTHAND" -+ product "(P4000|iSCSIDisk|FCDISK)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 18 -+ } -+ device { -+ vendor "Nimble" -+ product "Server" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "SGI" -+ product "TP9100" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SGI" -+ product "TP9[3457]00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "IS" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SGI" -+ product "^DD[46]A-" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "SAN DataDirector" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "DDN" -+ product "^EF3010" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DDN" -+ product "^(EF3015|S2A|SFA)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NEXENTA" -+ product "COMSTAR" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "TEGILE" -+ product "(ZEBI-(FC|ISCSI)|INTELLIFLASH)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "EMC" -+ product "SYMMETRIX" -+ path_grouping_policy "multibus" -+ no_path_retry 6 -+ } -+ device { -+ vendor "^DGC" -+ product "^(RAID|DISK|VRAID)" -+ product_blacklist "LUNZ" -+ path_grouping_policy "group_by_prio" -+ path_checker "emc_clariion" -+ hardware_handler "1 emc" -+ prio "emc" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "EMC" -+ product "Invista" -+ product_blacklist "LUNZ" -+ path_grouping_policy "multibus" -+ no_path_retry 5 -+ } -+ device { -+ vendor "XtremIO" -+ product "XtremApp" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "COMPELNT" -+ product "Compellent Vol" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DELL" -+ product "^MD3" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NVME" -+ product "^EMC PowerMax_" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FSC" -+ product "CentricStor" -+ path_grouping_policy "group_by_serial" -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_DX(H|L|M|400|8000)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "(EUROLOGC|EuroLogc)" -+ product "FC2502" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[234]000" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "E[68]000" -+ path_grouping_policy "multibus" -+ no_path_retry 10 -+ } -+ device { -+ vendor "FUJITSU" -+ product "ETERNUS_AHB" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(HITACHI|HP)" -+ product "^OPEN-" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF" -+ path_grouping_policy "group_by_prio" -+ prio "hds" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "HITACHI" -+ product "^DF600F" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "ProFibre 4000R" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^1722-600" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1724" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1726" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1742" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1746" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1813" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1814" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1815" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^1818" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^3526" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^(3542|3552)" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "IBM" -+ product "^2105" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^1750500" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2107900" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^2145" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD ECKD" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "S/390 DASD FBA" -+ product_blacklist "S/390" -+ path_grouping_policy "multibus" -+ uid_attribute "ID_UID" -+ path_checker "directio" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "^IPR" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "IBM" -+ product "1820N00" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(XIV|IBM)" -+ product "(NEXTRA|2810XIV)" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(TMS|IBM)" -+ product "(RamSan|FlashSystem)" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "IBM" -+ product "^(DCS9900|2851)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AIX" -+ product "VDASD" -+ path_grouping_policy "multibus" -+ no_path_retry 60 -+ } -+ device { -+ vendor "IBM" -+ product "3303[ ]+NVDISK" -+ no_path_retry 60 -+ } -+ device { -+ vendor "AIX" -+ product "NVDISK" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 60 -+ } -+ device { -+ vendor "LENOVO" -+ product "DE_Series" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "NETAPP" -+ product "LUN" -+ path_grouping_policy "group_by_prio" -+ features "2 pg_init_retries 50" -+ prio "ontap" -+ failback "immediate" -+ no_path_retry "queue" -+ flush_on_last_del "yes" -+ dev_loss_tmo "infinity" -+ user_friendly_names "no" -+ } -+ device { -+ vendor "(NETAPP|LSI|ENGENIO)" -+ product "INF-01-00" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SolidFir" -+ product "SSD SAN" -+ path_grouping_policy "multibus" -+ no_path_retry 24 -+ } -+ device { -+ vendor "NVME" -+ product "^NetApp ONTAP Controller" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "NEC" -+ product "DISK ARRAY" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Pillar" -+ product "^Axiom" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "^Oracle" -+ product "^Oracle FS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "STK" -+ product "BladeCtlr" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "OPENstorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "STK" -+ product "FLEXLINE 380" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "StorEdge 3" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "SUN" -+ product "STK6580_6780" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "CSM[12]00_R" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "LCSM100_[IEFS]" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "SUN_6180" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "ArrayStorage" -+ product_blacklist "Universal Xport" -+ path_grouping_policy "group_by_prio" -+ path_checker "rdac" -+ features "2 pg_init_retries 50" -+ hardware_handler "1 rdac" -+ prio "rdac" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "SUN" -+ product "(Sun Storage|ZFS Storage|COMSTAR)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "PIVOT3" -+ product "RAIGE VOLUME" -+ path_grouping_policy "multibus" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(NexGen|Pivot3)" -+ product "(TierStore|vSTAC)" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(Intel|INTEL)" -+ product "Multi-Flex" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "(LIO-ORG|SUSE)" -+ product "RBD" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 12 -+ } -+ device { -+ vendor "DataCore" -+ product "SANmelody" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "DataCore" -+ product "Virtual Disk" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry "queue" -+ } -+ device { -+ vendor "PURE" -+ product "FlashArray" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ fast_io_fail_tmo 10 -+ } -+ device { -+ vendor "HUAWEI" -+ product "XSG1" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ } -+ device { -+ vendor "KOVE" -+ product "XPD" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NFINIDAT" -+ product "InfiniBox" -+ path_grouping_policy "group_by_prio" -+ path_selector "round-robin 0" -+ prio "alua" -+ failback 30 -+ rr_weight "priorities" -+ no_path_retry "fail" -+ rr_min_io 1 -+ rr_min_io_rq 1 -+ flush_on_last_del "yes" -+ fast_io_fail_tmo 15 -+ dev_loss_tmo 15 -+ } -+ device { -+ vendor "KMNRIO" -+ product "K2" -+ path_grouping_policy "multibus" -+ } -+ device { -+ vendor "NEXSAN" -+ product "NXS-B0" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "NEXSAN" -+ product "SATAB" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 15 -+ } -+ device { -+ vendor "Nexsan" -+ product "(NestOS|NST5000)" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY$" -+ path_grouping_policy "group_by_serial" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "SAN ARRAY ALUA" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "VIOLIN" -+ product "CONCERTO ARRAY" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "ISE" -+ path_grouping_policy "multibus" -+ no_path_retry 12 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "IGLU DISK" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "(XIOTECH|XIOtech)" -+ product "Magnitude" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "VTrak" -+ product_blacklist "VTrak V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "Promise" -+ product "Vess" -+ product_blacklist "Vess V-LUN" -+ path_grouping_policy "group_by_prio" -+ hardware_handler "1 alua" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "^IFT" -+ product "*" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "foo" -+ product "bar" -+ product_blacklist "xyzzy" -+ revision ".*" -+ path_grouping_policy "failover" -+ } -+ device { -+ vendor "DotHill" -+ product "SANnet" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "R/Evo" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "DotHill" -+ product "^DH" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ no_path_retry 30 -+ } -+ device { -+ vendor "AStor" -+ product "NeoSapphire" -+ path_grouping_policy "multibus" -+ no_path_retry 30 -+ } -+ device { -+ vendor "INSPUR" -+ product "MCS" -+ path_grouping_policy "group_by_prio" -+ prio "alua" -+ failback "immediate" -+ } -+ device { -+ vendor "*" -+ product "plugh" -+ no_path_retry 5 -+ } -+} -+overrides { -+ no_path_retry fail -+ dev_loss_tmo 45 -+} -+multipaths { -+ multipath { -+ wwid "333333330000007d0" -+ alias "test" -+ enable_foreign "^$" -+ } -+ multipath { -+ wwid "33333333000001388" -+ alias "foo" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/not_set_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/not_set_dir.conf -new file mode 100644 -index 00000000..681eb906 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/not_set_dir.conf -@@ -0,0 +1,27 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "conf1.d" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ enable_foreign "" -+ } -+} -+ -+blacklist { -+ wwid "*" -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/set_in_dir.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/set_in_dir.conf -new file mode 100644 -index 00000000..acc068c5 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/set_in_dir.conf -@@ -0,0 +1,33 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ config_dir "conf2.d" -+} -+ -+devices { -+ device { -+ vendor "foo" -+ product "bar" -+ } -+} -+ -+blacklist { -+ wwid ".*" -+} -+ -+wwids { -+ wwid { -+ wwid "123456789" -+ alias "test" -+ } -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/two_defaults.conf b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/two_defaults.conf -new file mode 100644 -index 00000000..ae59013a ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/files/before/two_defaults.conf -@@ -0,0 +1,26 @@ -+# device-mapper-multipath configuration file -+ -+# For a complete list of the default configuration values, run either: -+# # multipath -t -+# or -+# # multipathd show config -+ -+# For a list of configuration options with descriptions, see the -+# multipath.conf man page. -+ -+defaults { -+ user_friendly_names yes -+ find_multipaths yes -+ enable_foreign "^$" -+} -+ -+blacklist_exceptions { -+ property "(SCSI_IDENT_|ID_WWN)" -+} -+ -+blacklist { -+} -+ -+defaults { -+ no_path_retry queue -+} -diff --git a/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/test_multipath_conf_update_8to9.py b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/test_multipath_conf_update_8to9.py -new file mode 100644 -index 00000000..c18d6b85 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/multipathconfupdate/tests/test_multipath_conf_update_8to9.py -@@ -0,0 +1,119 @@ -+import os -+ -+from leapp.libraries.actor import multipathconfupdate -+from leapp.libraries.common import multipathutil -+from leapp.models import MultipathConfFacts8to9, MultipathConfig8to9 -+ -+BEFORE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files/before') -+AFTER_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files/after') -+ -+converted_data = {} -+ -+ -+def build_config(pathname, config_dir, enable_foreign_exists, invalid_regexes_exist, allow_usb_exists): -+ return MultipathConfig8to9( -+ pathname=pathname, -+ config_dir=config_dir, -+ enable_foreign_exists=enable_foreign_exists, -+ invalid_regexes_exist=invalid_regexes_exist, -+ allow_usb_exists=allow_usb_exists, -+ ) -+ -+ -+def build_facts(confs): -+ return MultipathConfFacts8to9(configs=confs) -+ -+ -+def mock_read_config(path): -+ """convert to full pathname""" -+ return multipathutil.read_config_orig(os.path.join(BEFORE_DIR, path)) -+ -+ -+def mock_write_config(path, contents): -+ converted_data[path] = contents -+ -+ -+default_rhel8_conf = build_config( -+ 'default_rhel8.conf', None, True, False, False) -+ -+all_the_things_conf = build_config( -+ 'all_the_things.conf', None, False, True, False) -+ -+converted_the_things_conf = build_config( -+ 'converted_the_things.conf', None, True, False, True) -+ -+idempotent_conf = build_config( -+ 'converted_the_things.conf', None, False, True, False) -+ -+complicated_conf = build_config( -+ 'complicated.conf', '/etc/multipath/conf.d', True, True, False) -+ -+no_foreign_conf = build_config( -+ 'no_foreign.conf', None, False, True, True) -+ -+allow_usb_conf = build_config( -+ 'allow_usb.conf', None, False, False, True) -+ -+no_defaults_conf = build_config( -+ 'no_defaults.conf', None, False, True, False) -+ -+two_defaults_conf = build_config( -+ 'two_defaults.conf', None, True, False, False) -+ -+empty_conf = build_config( -+ 'empty.conf', None, False, False, False) -+ -+missing_dir_conf = build_config( -+ 'missing_dir.conf', 'missing', False, True, False) -+ -+not_set_dir_conf = build_config( -+ 'not_set_dir.conf', 'conf1.d', False, True, False) -+ -+empty1_conf = build_config( -+ 'conf1.d/empty.conf', None, False, False, False) -+ -+nothing_important_conf = build_config( -+ 'conf1.d/nothing_important.conf', 'this_gets_ignored', False, False, False) -+ -+set_in_dir_conf = build_config( -+ 'set_in_dir.conf', 'conf2.d', False, False, False) -+ -+all_true_conf = build_config( -+ 'conf2.d/all_true.conf', None, True, True, True) -+ -+empty_dir_conf = build_config( -+ 'empty_dir.conf', 'conf3.d', False, False, False) -+ -+facts_list = [build_facts([default_rhel8_conf]), -+ build_facts([all_the_things_conf]), -+ build_facts([converted_the_things_conf]), -+ build_facts([complicated_conf]), -+ build_facts([no_foreign_conf]), -+ build_facts([allow_usb_conf]), -+ build_facts([no_defaults_conf]), -+ build_facts([two_defaults_conf]), -+ build_facts([empty_conf]), -+ build_facts([missing_dir_conf]), -+ build_facts([empty_dir_conf]), -+ build_facts([not_set_dir_conf, empty1_conf, nothing_important_conf]), -+ build_facts([set_in_dir_conf, all_true_conf]), -+ build_facts([idempotent_conf])] -+ -+ -+def _test_facts(facts): -+ multipathconfupdate.update_configs(facts) -+ for config in facts.configs: -+ expected_data = multipathutil.read_config_orig(os.path.join(AFTER_DIR, config.pathname)) -+ if config.pathname in converted_data: -+ assert converted_data[config.pathname] == expected_data -+ else: -+ assert expected_data is None -+ -+ -+def test_all_facts(monkeypatch): -+ monkeypatch.setattr(multipathutil, 'read_config_orig', multipathutil.read_config, raising=False) -+ monkeypatch.setattr(multipathutil, 'read_config', mock_read_config) -+ monkeypatch.setattr(multipathutil, 'write_config', mock_write_config) -+ for facts in facts_list: -+ _test_facts(facts) -+ converted_data.clear() -diff --git a/repos/system_upgrade/el8toel9/models/multipathconffacts.py b/repos/system_upgrade/el8toel9/models/multipathconffacts.py -new file mode 100644 -index 00000000..91d3ce35 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/models/multipathconffacts.py -@@ -0,0 +1,30 @@ -+from leapp.models import fields, Model -+from leapp.topics import SystemInfoTopic -+ -+ -+class MultipathConfig8to9(Model): -+ """Model representing information about a multipath configuration file""" -+ topic = SystemInfoTopic -+ -+ pathname = fields.String() -+ """Config file path name""" -+ -+ config_dir = fields.Nullable(fields.String()) -+ """Value of config_dir in the defaults section. None if not set""" -+ -+ enable_foreign_exists = fields.Boolean(default=False) -+ """True if enable_foreign is set in the defaults section""" -+ -+ invalid_regexes_exist = fields.Boolean(default=False) -+ """True if any regular expressions have the value of "*" """ -+ -+ allow_usb_exists = fields.Boolean(default=False) -+ """True if allow_usb_devices is set in the defaults section.""" -+ -+ -+class MultipathConfFacts8to9(Model): -+ """Model representing information from multipath configuration files""" -+ topic = SystemInfoTopic -+ -+ configs = fields.List(fields.Model(MultipathConfig8to9), default=[]) -+ """List of multipath configuration files""" --- -2.35.3 - diff --git a/SOURCES/0042-el8toel9-Warn-about-the-NVIDIA-driver-before-upgrade.patch b/SOURCES/0042-el8toel9-Warn-about-the-NVIDIA-driver-before-upgrade.patch deleted file mode 100644 index 3b24d59..0000000 --- a/SOURCES/0042-el8toel9-Warn-about-the-NVIDIA-driver-before-upgrade.patch +++ /dev/null @@ -1,107 +0,0 @@ -From efa3becc424438b3904013310d6a8b7ec675ae6a Mon Sep 17 00:00:00 2001 -From: Niels De Graef -Date: Tue, 12 Apr 2022 13:08:31 +0200 -Subject: [PATCH 42/47] el8toel9: Warn about the NVIDIA driver before upgrade - ---- - .../actors/nvidiaproprietarydriver/actor.py | 47 +++++++++++++++++++ - .../tests/test_nvidiadriver.py | 33 +++++++++++++ - 2 files changed, 80 insertions(+) - create mode 100644 repos/system_upgrade/el8toel9/actors/nvidiaproprietarydriver/actor.py - create mode 100644 repos/system_upgrade/el8toel9/actors/nvidiaproprietarydriver/tests/test_nvidiadriver.py - -diff --git a/repos/system_upgrade/el8toel9/actors/nvidiaproprietarydriver/actor.py b/repos/system_upgrade/el8toel9/actors/nvidiaproprietarydriver/actor.py -new file mode 100644 -index 00000000..7397f3e2 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/nvidiaproprietarydriver/actor.py -@@ -0,0 +1,47 @@ -+from leapp import reporting -+from leapp.actors import Actor -+from leapp.models import ActiveKernelModulesFacts -+from leapp.reporting import create_report, Report -+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag -+ -+ -+class CheckNvidiaProprietaryDriver(Actor): -+ """ -+ Check if NVIDIA proprietary driver is in use. If yes, inhibit the upgrade process. -+ -+ Updating bare metal (or VM) with the binary NVIDIA driver will end up with a blacklisted nouveau. -+ -+ See also https://bugzilla.redhat.com/show_bug.cgi?id=2057026 -+ """ -+ -+ name = 'check_nvidia_proprietary_driver' -+ consumes = (ActiveKernelModulesFacts,) -+ produces = (Report,) -+ tags = (ChecksPhaseTag, IPUWorkflowTag) -+ -+ def process(self): -+ -+ for fact in self.consume(ActiveKernelModulesFacts): -+ nvidia_driver_loaded = any('nvidia' in active_mod.filename for active_mod in fact.kernel_modules) -+ if nvidia_driver_loaded: -+ create_report([ -+ reporting.Title('Proprietary NVIDIA driver detected'), -+ reporting.Summary( -+ 'Leapp has detected that the NVIDIA proprietary driver has been loaded, which also means ' -+ 'the nouveau driver is blacklisted. If you upgrade now, you will end up without a ' -+ 'graphical session, as the newer kernel won\'t be able to load the NVIDIA driver module ' -+ 'and nouveau will still be blacklisted.' -+ '\n\n' -+ 'Please uninstall the NVIDIA graphics driver before upgrading to make sure you have a ' -+ 'graphical session after upgrading.' -+ ), -+ reporting.ExternalLink( -+ title='How to uninstall proprietary NVIDIA graphics driver and switch back to Red Hat ' -+ 'shipped nouveau graphics driver?', -+ url='https://access.redhat.com/solutions/421683' -+ ), -+ reporting.Severity(reporting.Severity.HIGH), -+ reporting.Flags([reporting.Flags.INHIBITOR]), -+ reporting.Tags([reporting.Tags.KERNEL, reporting.Tags.DRIVERS]), -+ ]) -+ break -diff --git a/repos/system_upgrade/el8toel9/actors/nvidiaproprietarydriver/tests/test_nvidiadriver.py b/repos/system_upgrade/el8toel9/actors/nvidiaproprietarydriver/tests/test_nvidiadriver.py -new file mode 100644 -index 00000000..3cd299b0 ---- /dev/null -+++ b/repos/system_upgrade/el8toel9/actors/nvidiaproprietarydriver/tests/test_nvidiadriver.py -@@ -0,0 +1,33 @@ -+from leapp.models import ActiveKernelModule, ActiveKernelModulesFacts -+from leapp.reporting import Report -+ -+ -+def test_actor_with_nvidia_driver(current_actor_context): -+ with_nvidia = [ -+ ActiveKernelModule(filename='nvidia', parameters=[]), -+ ActiveKernelModule(filename='kvm', parameters=[])] -+ -+ current_actor_context.feed(ActiveKernelModulesFacts(kernel_modules=with_nvidia)) -+ current_actor_context.run() -+ report_fields = current_actor_context.consume(Report)[0].report -+ assert 'inhibitor' in report_fields['flags'] -+ -+ -+def test_actor_without_nvidia_driver(current_actor_context): -+ without_nvidia = [ -+ ActiveKernelModule(filename='i915', parameters=[]), -+ ActiveKernelModule(filename='kvm', parameters=[])] -+ -+ current_actor_context.feed(ActiveKernelModulesFacts(kernel_modules=without_nvidia)) -+ current_actor_context.run() -+ assert not current_actor_context.consume(Report) -+ -+ -+def test_actor_with_nouveau_driver(current_actor_context): -+ without_nvidia = [ -+ ActiveKernelModule(filename='nouveau', parameters=[]), -+ ActiveKernelModule(filename='kvm', parameters=[])] -+ -+ current_actor_context.feed(ActiveKernelModulesFacts(kernel_modules=without_nvidia)) -+ current_actor_context.run() -+ assert not current_actor_context.consume(Report) --- -2.35.3 - diff --git a/SOURCES/0043-Fix-unnecessary-dunder-call-violation.patch b/SOURCES/0043-Fix-unnecessary-dunder-call-violation.patch deleted file mode 100644 index 99169a4..0000000 --- a/SOURCES/0043-Fix-unnecessary-dunder-call-violation.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 191865db1725dcdf17d8d2d7c5a75d3d1f7b7d80 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Tue, 7 Jun 2022 17:17:02 +0200 -Subject: [PATCH 43/47] Fix unnecessary-dunder-call violation - -That's an interesting linter check, let's keep it. ---- - .../actors/peseventsscanner/libraries/peseventsscanner.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner.py b/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner.py -index 1be2caa1..03d1bde5 100644 ---- a/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner.py -+++ b/repos/system_upgrade/common/actors/peseventsscanner/libraries/peseventsscanner.py -@@ -470,7 +470,7 @@ def is_event_relevant(event, installed_pkgs, tasks): - def add_packages_to_tasks(tasks, packages, task_type): - if packages: - api.current_logger().debug('{v:7} {p}'.format( -- v=task_type.name, p=', '.join([p.__repr__() for p in packages]))) -+ v=task_type.name, p=', '.join([repr(p) for p in packages]))) - for p in packages: - tasks[task_type][(p.name, p.modulestream)] = p.repository - --- -2.35.3 - diff --git a/SOURCES/0044-Massive-workflow-refactor-split-into-reusable-parts.patch b/SOURCES/0044-Massive-workflow-refactor-split-into-reusable-parts.patch deleted file mode 100644 index 85b2380..0000000 --- a/SOURCES/0044-Massive-workflow-refactor-split-into-reusable-parts.patch +++ /dev/null @@ -1,438 +0,0 @@ -From ef458450bcaf38ee3427eb21a0fd11fef5144fe4 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Mon, 6 Jun 2022 16:16:38 +0200 -Subject: [PATCH 44/47] Massive workflow refactor: split into reusable parts - -1 separate workflow has been introduced - reuse-copr-build; -2 workflows have been reused from leapp project - reuse-tests-7to8 -and reuse-tests-8to9. -This should make adding new tests a bit easier. -Status reporting has been enabled as well. -e2e execution on aws also added as separate test run. - -OAMG-6980 ---- - .github/workflows/reuse-copr-build.yml | 157 ++++++++++++++++ - .github/workflows/tmt-tests.yml | 241 ++++++------------------- - 2 files changed, 212 insertions(+), 186 deletions(-) - create mode 100644 .github/workflows/reuse-copr-build.yml - -diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml -new file mode 100644 -index 00000000..fd59b073 ---- /dev/null -+++ b/.github/workflows/reuse-copr-build.yml -@@ -0,0 +1,157 @@ -+name: reuse-copr-build@TF -+ -+on: -+ workflow_call: -+ secrets: -+ FEDORA_COPR_LOGIN: -+ required: true -+ FEDORA_COPR_TOKEN: -+ required: true -+ outputs: -+ artifacts: -+ description: "A string with test artifacts to install in tft test env" -+ value: ${{ jobs.reusable_workflow_copr_build_job.outputs.artifacts }} -+ -+jobs: -+ reusable_workflow_copr_build_job: -+ # This job only runs for '/rerun' pull request comments by owner, member, or collaborator of the repo/organization. -+ name: Build copr builds for tft tests -+ runs-on: ubuntu-20.04 -+ outputs: -+ artifacts: ${{ steps.gen_artifacts.outputs.artifacts }} -+ if: | -+ github.event.issue.pull_request -+ && startsWith(github.event.comment.body, '/rerun') -+ && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) -+ steps: -+ - name: Install necessary deps -+ id: deps_install -+ run: sudo apt-get install -y libkrb5-dev -+ -+ - name: Get pull request number -+ id: pr_nr -+ run: | -+ PR_URL="${{ github.event.comment.issue_url }}" -+ echo "::set-output name=pr_nr::${PR_URL##*/}" -+ -+ - name: Checkout -+ # TODO: The correct way to checkout would be to use simmilar approach as in get_commit_by_timestamp function of -+ # the github gluetool module (i.e. do not use HEAD but the last commit before comment). -+ id: checkout -+ uses: actions/checkout@v2 -+ with: -+ ref: "refs/pull/${{ steps.pr_nr.outputs.pr_nr }}/head" -+ -+ - name: Get ref and sha -+ id: ref_sha -+ run: | -+ echo "::set-output name=sha::$(git rev-parse --short HEAD)" -+ echo "::set-output name=ref::refs/pull/${{ steps.pr_nr.outputs.pr_nr }}/head" -+ -+ - name: Trigger copr build -+ id: copr_build -+ env: -+ COPR_CONFIG: "copr_fedora.conf" -+ COPR_CHROOT: "epel-7-x86_64,epel-8-x86_64" -+ run: | -+ cat << EOF > $COPR_CONFIG -+ [copr-cli] -+ login = ${{ secrets.FEDORA_COPR_LOGIN }} -+ username = @oamg -+ token = ${{ secrets.FEDORA_COPR_TOKEN }} -+ copr_url = https://copr.fedorainfracloud.org -+ # expiration date: 2030-07-04 -+ EOF -+ -+ pip install copr-cli -+ PR=${{ steps.pr_nr.outputs.pr_nr }} COPR_CONFIG=$COPR_CONFIG COPR_CHROOT=$COPR_CHROOT make copr_build | tee copr.log -+ -+ COPR_URL=$(grep -Po 'https://copr.fedorainfracloud.org/coprs/build/\d+' copr.log) -+ echo "::set-output name=copr_url::${COPR_URL}" -+ echo "::set-output name=copr_id::${COPR_URL##*/}" -+ -+ - name: Add comment with copr build url -+ # TODO: Create comment when copr build fails. -+ id: link_copr -+ uses: actions/github-script@v4 -+ with: -+ script: | -+ github.issues.createComment({ -+ issue_number: context.issue.number, -+ owner: context.repo.owner, -+ repo: context.repo.repo, -+ body: 'Copr build succeeded: ${{ steps.copr_build.outputs.copr_url }}' -+ }) -+ -+ - name: Get dependent leapp pr number from rerun comment -+ uses: actions-ecosystem/action-regex-match@v2 -+ id: leapp_pr_regex_match -+ with: -+ text: ${{ github.event.comment.body }} -+ regex: '^/rerun\s+([0-9]+)\s*$' -+ -+ - name: If leapp_pr was specified in the comment - trigger copr build -+ # TODO: XXX FIXME This should schedule copr build for leapp but for now it will be just setting an env var -+ id: leapp_pr -+ if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -+ run: | -+ echo "::set-output name=leapp_pr::${{ steps.leapp_pr_regex_match.outputs.group1 }}" -+ -+ - name: Checkout leapp -+ id: checkout_leapp -+ if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -+ uses: actions/checkout@v2 -+ with: -+ repository: "oamg/leapp" -+ ref: "refs/pull/${{ steps.leapp_pr.outputs.leapp_pr }}/head" -+ -+ - name: Get ref and sha for leapp -+ id: ref_sha_leapp -+ if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -+ run: | -+ echo "::set-output name=sha::$(git rev-parse --short HEAD)" -+ echo "::set-output name=ref::refs/pull/${{ steps.leapp_pr.outputs.leapp_pr }}/head" -+ -+ - name: Trigger copr build for leapp -+ id: copr_build_leapp -+ if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -+ env: -+ COPR_CONFIG: "copr_fedora.conf" -+ COPR_CHROOT: "epel-7-x86_64,epel-8-x86_64" -+ run: | -+ cat << EOF > $COPR_CONFIG -+ [copr-cli] -+ login = ${{ secrets.FEDORA_COPR_LOGIN }} -+ username = @oamg -+ token = ${{ secrets.FEDORA_COPR_TOKEN }} -+ copr_url = https://copr.fedorainfracloud.org -+ # expiration date: 2030-07-04 -+ EOF -+ -+ pip install copr-cli -+ PR=${{ steps.leapp_pr.outputs.leapp_pr }} COPR_CONFIG=$COPR_CONFIG COPR_CHROOT=$COPR_CHROOT make copr_build | tee copr.log -+ -+ COPR_URL=$(grep -Po 'https://copr.fedorainfracloud.org/coprs/build/\d+' copr.log) -+ echo "::set-output name=copr_url::${COPR_URL}" -+ echo "::set-output name=copr_id::${COPR_URL##*/}" -+ -+ - name: Add comment with copr build url for leapp -+ # TODO: Create comment when copr build fails. -+ id: link_copr_leapp -+ if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -+ uses: actions/github-script@v4 -+ with: -+ script: | -+ github.issues.createComment({ -+ issue_number: context.issue.number, -+ owner: context.repo.owner, -+ repo: context.repo.repo, -+ body: 'Copr build succeeded: ${{ steps.copr_build_leapp.outputs.copr_url }}' -+ }) -+ -+ - name: Generate artifacts output -+ id: gen_artifacts -+ env: -+ ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0};{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} -+ run: | -+ echo "::set-output name=artifacts::${{ env.ARTIFACTS }}" -diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml -index 24334978..a069bd96 100644 ---- a/.github/workflows/tmt-tests.yml -+++ b/.github/workflows/tmt-tests.yml -@@ -6,193 +6,62 @@ on: - - created - - jobs: -- pr_commented: -- # This job only runs for '/rerun' pull request comments by owner, member, or collaborator of the repo/organization. -- name: Run tmt tests on Testing Farm service -+ call_workflow_copr_build: -+ uses: ./.github/workflows/reuse-copr-build.yml -+ secrets: inherit -+ -+ call_workflow_tests_7to8_integration: -+ needs: call_workflow_copr_build -+ uses: oamg/leapp/.github/workflows/reuse-tests-7to8.yml@master -+ secrets: inherit -+ with: -+ copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} -+ tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" -+ -+ call_workflow_tests_7to8_sst: -+ needs: call_workflow_copr_build -+ uses: oamg/leapp/.github/workflows/reuse-tests-7to8.yml@master -+ secrets: inherit -+ with: -+ copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} -+ tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)(.*morf)" -+ pull_request_status_name: "7to8-sst" -+ update_pull_request_status: 'false' - if: | - github.event.issue.pull_request -- && startsWith(github.event.comment.body, '/rerun') -+ && startsWith(github.event.comment.body, '/rerun-all') - && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) -- runs-on: ubuntu-20.04 -- steps: -- - name: Install necessary deps -- id: deps_install -- run: sudo apt-get install -y libkrb5-dev - -- - name: Get pull request number -- id: pr_nr -- run: | -- PR_URL="${{ github.event.comment.issue_url }}" -- echo "::set-output name=pr_nr::${PR_URL##*/}" -- -- - name: Checkout -- # TODO: The correct way to checkout would be to use simmilar approach as in get_commit_by_timestamp function of -- # the github gluetool module (i.e. do not use HEAD but the last commit before comment). -- id: checkout -- uses: actions/checkout@v2 -- with: -- ref: "refs/pull/${{ steps.pr_nr.outputs.pr_nr }}/head" -- -- - name: Get ref and sha -- id: ref_sha -- run: | -- echo "::set-output name=sha::$(git rev-parse --short HEAD)" -- echo "::set-output name=ref::refs/pull/${{ steps.pr_nr.outputs.pr_nr }}/head" -- -- - name: Trigger copr build -- id: copr_build -- env: -- COPR_CONFIG: "copr_fedora.conf" -- COPR_CHROOT: "epel-7-x86_64,epel-8-x86_64" -- run: | -- cat << EOF > $COPR_CONFIG -- [copr-cli] -- login = ${{ secrets.FEDORA_COPR_LOGIN }} -- username = @oamg -- token = ${{ secrets.FEDORA_COPR_TOKEN }} -- copr_url = https://copr.fedorainfracloud.org -- # expiration date: 2030-07-04 -- EOF -- -- pip install copr-cli -- PR=${{ steps.pr_nr.outputs.pr_nr }} COPR_CONFIG=$COPR_CONFIG COPR_CHROOT=$COPR_CHROOT make copr_build | tee copr.log -- -- COPR_URL=$(grep -Po 'https://copr.fedorainfracloud.org/coprs/build/\d+' copr.log) -- echo "::set-output name=copr_url::${COPR_URL}" -- echo "::set-output name=copr_id::${COPR_URL##*/}" -- -- - name: Add comment with copr build url -- # TODO: Create comment when copr build fails. -- id: link_copr -- uses: actions/github-script@v4 -- with: -- script: | -- github.issues.createComment({ -- issue_number: context.issue.number, -- owner: context.repo.owner, -- repo: context.repo.repo, -- body: 'Copr build succeeded: ${{ steps.copr_build.outputs.copr_url }}' -- }) -- -- - name: Get dependent leapp pr number from rerun comment -- uses: actions-ecosystem/action-regex-match@v2 -- id: leapp_pr_regex_match -- with: -- text: ${{ github.event.comment.body }} -- regex: '^/rerun\s+([0-9]+)\s*$' -- -- - name: If leapp_pr was specified in the comment - trigger copr build -- # TODO: XXX FIXME This should schedule copr build for leapp but for now it will be just setting an env var -- id: leapp_pr -- if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -- run: | -- echo "::set-output name=leapp_pr::${{ steps.leapp_pr_regex_match.outputs.group1 }}" -- -- - name: Checkout leapp -- id: checkout_leapp -- if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -- uses: actions/checkout@v2 -- with: -- repository: "oamg/leapp" -- ref: "refs/pull/${{ steps.leapp_pr.outputs.leapp_pr }}/head" -- -- - name: Get ref and sha for leapp -- id: ref_sha_leapp -- if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -- run: | -- echo "::set-output name=sha::$(git rev-parse --short HEAD)" -- echo "::set-output name=ref::refs/pull/${{ steps.leapp_pr.outputs.leapp_pr }}/head" -- -- - name: Trigger copr build for leapp -- id: copr_build_leapp -- if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -- env: -- COPR_CONFIG: "copr_fedora.conf" -- COPR_CHROOT: "epel-7-x86_64,epel-8-x86_64" -- run: | -- cat << EOF > $COPR_CONFIG -- [copr-cli] -- login = ${{ secrets.FEDORA_COPR_LOGIN }} -- username = @oamg -- token = ${{ secrets.FEDORA_COPR_TOKEN }} -- copr_url = https://copr.fedorainfracloud.org -- # expiration date: 2030-07-04 -- EOF -- -- pip install copr-cli -- PR=${{ steps.leapp_pr.outputs.leapp_pr }} COPR_CONFIG=$COPR_CONFIG COPR_CHROOT=$COPR_CHROOT make copr_build | tee copr.log -- -- COPR_URL=$(grep -Po 'https://copr.fedorainfracloud.org/coprs/build/\d+' copr.log) -- echo "::set-output name=copr_url::${COPR_URL}" -- echo "::set-output name=copr_id::${COPR_URL##*/}" -- -- - name: Add comment with copr build url for leapp -- # TODO: Create comment when copr build fails. -- id: link_copr_leapp -- if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} -- uses: actions/github-script@v4 -- with: -- script: | -- github.issues.createComment({ -- issue_number: context.issue.number, -- owner: context.repo.owner, -- repo: context.repo.repo, -- body: 'Copr build succeeded: ${{ steps.copr_build_leapp.outputs.copr_url }}' -- }) -- -- - name: Schedule regression testing for 7to8 -- id: run_test_7to8 -- env: -- ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0};{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} -- uses: sclorg/testing-farm-as-github-action@v1.2.10 -- with: -- # required -- api_url: ${{ secrets.TF_ENDPOINT }} -- api_key: ${{ secrets.TF_API_KEY }} -- git_url: 'https://gitlab.cee.redhat.com/oamg/tmt-plans' -- github_token: ${{ secrets.GITHUB_TOKEN }} -- # optional -- tf_scope: 'private' -- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)" -- compose: ${{ secrets.COMPOSE_RHEL79 }} -- arch: 'x86_64' -- copr: 'epel-7-x86_64' -- copr_artifacts: ${{ env.ARTIFACTS }} -- debug: ${{ secrets.ACTIONS_STEP_DEBUG }} -- tmt_context: 'distro=rhel-7' -- pull_request_status_name: '7to8' -- create_issue_comment: 'true' -- # NOTE(ivasilev) In order to update pr status this workflow has to be massively refactored with artifacts -- # preparation moved out to a different workflow and the rest split into 2 workflows - 7to8 and 8to9 that are -- # triggered on a specific repository dispatch event. -- update_pull_request_status: 'false' -- environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' -- -- - name: Schedule regression testing for 8to9 -- id: run_test_8to9 -- env: -- ARTIFACTS: ${{ steps.leapp_pr_regex_match.outputs.match != '' && format('{0};{1}', steps.copr_build_leapp.outputs.copr_id, steps.copr_build.outputs.copr_id) || steps.copr_build.outputs.copr_id }} -- uses: sclorg/testing-farm-as-github-action@v1.2.10 -- with: -- # required -- api_url: ${{ secrets.TF_ENDPOINT }} -- api_key: ${{ secrets.TF_API_KEY }} -- git_url: 'https://gitlab.cee.redhat.com/oamg/tmt-plans' -- github_token: ${{ secrets.GITHUB_TOKEN }} -- # optional -- tf_scope: 'private' -- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*7to8)" -- compose: ${{ secrets.COMPOSE_RHEL86 }} -- arch: 'x86_64' -- copr: 'epel-8-x86_64' -- copr_artifacts: ${{ env.ARTIFACTS }} -- debug: ${{ secrets.ACTIONS_STEP_DEBUG }} -- variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_SKU=RH00069;RHSM_REPOS=rhel-8-for-x86_64-appstream-beta-rpms,rhel-8-for-x86_64-baseos-beta-rpms;LEAPP_EXEC_ENV_VARS=LEAPP_DEVEL_TARGET_PRODUCT_TYPE=beta' -- tmt_context: 'distro=rhel-8' -- pull_request_status_name: '8to9' -- create_issue_comment: 'true' -- # NOTE(ivasilev) In order to update pr status this workflow has to be massively refactored with artifacts -- # preparation moved out to a different workflow and the rest split into 2 workflows - 7to8 and 8to9 that are -- # triggered on a specific repository dispatch event. -- update_pull_request_status: 'false' -- environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' -+ call_workflow_tests_7to8_aws: -+ needs: call_workflow_copr_build -+ uses: oamg/leapp/.github/workflows/reuse-tests-7to8.yml@master -+ secrets: inherit -+ with: -+ copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} -+ tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)(.*e2e)" -+ compose: "RHEL-7.9-rhui" -+ environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys; echo 42; yum-config-manager --enable rhel-7-server-rhui-optional-rpms"}}' -+ pull_request_status_name: "7to8-aws-e2e" -+ variables: "RHUI=aws" -+ -+ call_workflow_tests_8to9_integration: -+ needs: call_workflow_copr_build -+ uses: oamg/leapp/.github/workflows/reuse-tests-8to9.yml@master -+ secrets: inherit -+ with: -+ copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} -+ tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" -+ -+ call_workflow_tests_8to9_sst: -+ needs: call_workflow_copr_build -+ uses: oamg/leapp/.github/workflows/reuse-tests-8to9.yml@master -+ secrets: inherit -+ with: -+ copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} -+ tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*7to8)(.*morf)" -+ pull_request_status_name: "8to9-sst" -+ update_pull_request_status: 'false' -+ if: | -+ github.event.issue.pull_request -+ && startsWith(github.event.comment.body, '/rerun-all') -+ && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) --- -2.35.3 - diff --git a/SOURCES/0045-Allow-running-all-tests-with-dependent-leapp-pr.patch b/SOURCES/0045-Allow-running-all-tests-with-dependent-leapp-pr.patch deleted file mode 100644 index ff9755d..0000000 --- a/SOURCES/0045-Allow-running-all-tests-with-dependent-leapp-pr.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 92ee19013e02f09ac03bb4f2979fcf4d3d3156cf Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Tue, 7 Jun 2022 16:24:29 +0200 -Subject: [PATCH 45/47] Allow running all tests with dependent leapp pr - -/rerun-all 4242 now would correctly pick leapp pr 4242 instead of master. ---- - .github/workflows/reuse-copr-build.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml -index fd59b073..08d78024 100644 ---- a/.github/workflows/reuse-copr-build.yml -+++ b/.github/workflows/reuse-copr-build.yml -@@ -88,14 +88,14 @@ jobs: - id: leapp_pr_regex_match - with: - text: ${{ github.event.comment.body }} -- regex: '^/rerun\s+([0-9]+)\s*$' -+ regex: '^/(rerun|rerun-all)\s+([0-9]+)\s*$' - - - name: If leapp_pr was specified in the comment - trigger copr build - # TODO: XXX FIXME This should schedule copr build for leapp but for now it will be just setting an env var - id: leapp_pr - if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }} - run: | -- echo "::set-output name=leapp_pr::${{ steps.leapp_pr_regex_match.outputs.group1 }}" -+ echo "::set-output name=leapp_pr::${{ steps.leapp_pr_regex_match.outputs.group2 }}" - - - name: Checkout leapp - id: checkout_leapp --- -2.35.3 - diff --git a/SOURCES/0046-Update-pr-welcome-msg.patch b/SOURCES/0046-Update-pr-welcome-msg.patch deleted file mode 100644 index 77b09d9..0000000 --- a/SOURCES/0046-Update-pr-welcome-msg.patch +++ /dev/null @@ -1,32 +0,0 @@ -From bb4e242af283c58dc8d4d627cac38ff0474dfea9 Mon Sep 17 00:00:00 2001 -From: Inessa Vasilevskaya -Date: Tue, 7 Jun 2022 17:12:23 +0200 -Subject: [PATCH 46/47] Update pr-welcome-msg - -Include information about /rerun-all command that will -schedule all regression tests including sst ones. -Also finally fix formatting issue with asterisks in markdown. ---- - .github/workflows/pr-welcome-msg.yml | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/.github/workflows/pr-welcome-msg.yml b/.github/workflows/pr-welcome-msg.yml -index a259dc55..c4435578 100644 ---- a/.github/workflows/pr-welcome-msg.yml -+++ b/.github/workflows/pr-welcome-msg.yml -@@ -25,8 +25,10 @@ jobs: - - **/packit copr-build** to submit a public copr build using packit - - To launch regression testing public members of oamg organization can leave the following comment: -- - **/rerun** to schedule tests using this pr build and leapp*master* as artifacts -- - **/rerun 42** to schedule tests using this pr build and leapp*PR42* as artifacts -+ - **/rerun** to schedule basic regression tests using this pr build and leapp\*master\* as artifacts -+ - **/rerun 42** to schedule basic regression tests using this pr build and leapp\*PR42\* as artifacts -+ - **/rerun-all** to schedule all tests (including sst) using this pr build and leapp\*master\* as artifacts -+ - **/rerun-all 42** to schedule all tests (including sst) using this pr build and leapp\*PR42\* as artifacts - - Please [open ticket](https://url.corp.redhat.com/oamg-ci-issue) in case you experience technical problem with the CI. (RH internal only) - --- -2.35.3 - diff --git a/SOURCES/0047-Fix-set-of-supported-OS-versions-for-IPU-8-9.patch b/SOURCES/0047-Fix-set-of-supported-OS-versions-for-IPU-8-9.patch deleted file mode 100644 index 6ec3c1d..0000000 --- a/SOURCES/0047-Fix-set-of-supported-OS-versions-for-IPU-8-9.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 7aa0ca5f3673257a6f955eebecc2de86eae2c117 Mon Sep 17 00:00:00 2001 -From: Petr Stodulka -Date: Fri, 10 Jun 2022 08:30:01 +0200 -Subject: [PATCH 47/47] Fix set of supported OS versions for IPU 8 -> 9 - -Previously we have updated the upgrade_paths.json file to create -a mapping 8.7 -> 9.0. However, we have not enabled 8.7 for in-place -upgrades. Also, RHEL for SAP HANA has not been enabled for -IPU 8 -> 9. - -Enable 8.7 for rhel and 8.6 for saphana for IPU 8 -> 9 via -SUPPORT_VERSIONS in the leapp.libraries.common.config.version -library. ---- - repos/system_upgrade/common/libraries/config/version.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/repos/system_upgrade/common/libraries/config/version.py b/repos/system_upgrade/common/libraries/config/version.py -index 03f3cd42..e148932a 100644 ---- a/repos/system_upgrade/common/libraries/config/version.py -+++ b/repos/system_upgrade/common/libraries/config/version.py -@@ -14,7 +14,7 @@ OP_MAP = { - _SUPPORTED_VERSIONS = { - # Note: 'rhel-alt' is detected when on 'rhel' with kernel 4.x - '7': {'rhel': ['7.9'], 'rhel-alt': ['7.6'], 'rhel-saphana': ['7.9']}, -- '8': {'rhel': ['8.5', '8.6']}, -+ '8': {'rhel': ['8.6', '8.7'], 'rhel-saphana': ['8.6']}, - } - - --- -2.35.3 - diff --git a/SPECS/leapp-repository.spec b/SPECS/leapp-repository.spec index 056a07e..a61c852 100644 --- a/SPECS/leapp-repository.spec +++ b/SPECS/leapp-repository.spec @@ -2,7 +2,7 @@ %global repositorydir %{leapp_datadir}/repositories %global custom_repositorydir %{leapp_datadir}/custom-repositories -%define leapp_repo_deps 6 +%define leapp_repo_deps 7 %if 0%{?rhel} == 7 %define leapp_python_sitelib %{python2_sitelib} @@ -41,65 +41,20 @@ py2_byte_compile "%1" "%2"} # RHEL 8+ packages to be consistent with other leapp projects in future. Name: leapp-repository -Version: 0.16.0 -Release: 8%{?dist} +Version: 0.17.0 +Release: 1%{?dist} Summary: Repositories for leapp License: ASL 2.0 URL: https://oamg.github.io/leapp/ -Source0: https://github.com/oamg/leapp-repository/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz -Source1: deps-pkgs-6.tar.gz +Source0: https://github.com/oamg/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source1: deps-pkgs-7.tar.gz + +# NOTE: Our packages must be noarch. Do no drop this in any way. BuildArch: noarch ### PATCHES HERE # Patch0001: filename.patch -Patch0001: 0001-Update-welcome-message.patch -Patch0002: 0002-Fix-linting-violations.patch -Patch0003: 0003-Enable-building-leapp-repository-for-specific-chroot.patch -Patch0004: 0004-Switch-to-the-official-composite-action-for-tft.patch -Patch0005: 0005-Switch-to-semicolon-build-separator-in-tmt-tests-873.patch -Patch0006: 0006-pcidevicesscanner-Also-match-deprecation-data-agains.patch -Patch0007: 0007-Fix-krb5-config-not-found-error.patch -Patch0008: 0008-pciscanner-Fix-2-issues-in-regards-to-pci-address-ha.patch -Patch0009: 0009-Ensure-the-right-repositories-are-enabled-on-Satelli.patch -Patch0010: 0010-IPU-8-9-Migrate-blacklisted-CAs-hotfix.patch -Patch0011: 0011-Skip-comment-lines-when-parsing-grub-configuration-f.patch -Patch0012: 0012-Add-actor-that-checks-for-obsolete-.NET-versions.patch -Patch0013: 0013-Move-OpenSSH-server-config-Scanner-and-related-model.patch -Patch0014: 0014-Add-actor-for-updating-OpenSSH-configuration-to-RHEL.patch -Patch0015: 0015-Add-OpenSSH-Drop-in-directory-check-to-emit-info-rep.patch -Patch0016: 0016-OpenSSH-Config-Scanner-Record-the-presence-of-subsys.patch -Patch0017: 0017-Warn-if-the-SSHD-is-not-configured-to-use-SFTP-serve.patch -Patch0018: 0018-Fix-actor-tracebacks-for-non-default-lang.patch -Patch0019: 0019-Move-the-OpenSSH-PermitRootLogin-check-to-common-rep.patch -Patch0020: 0020-PermitRootLogin-check-add-new-use-cases-for-8to9.patch -Patch0021: 0021-If-the-config-is-not-modified-leave-it-up-to-RPM.patch -Patch0022: 0022-Improve-remediation-do-not-trigger-second-inhibitor.patch -Patch0023: 0023-Add-doc-strings-and-improve-code-readability.patch -Patch0024: 0024-Pass-enable-root-auth-post-install-script.patch -Patch0025: 0025-Pin-version-to-1.2.10.patch -Patch0026: 0026-Drop-the-checkcpu-actor-from-the-el8toel9-repo.patch -Patch0027: 0027-BZ-2087144-do-not-enable-Ansible-repository-when-upg.patch -Patch0028: 0028-call-Satellite-installer-with-disable-system-checks-.patch -Patch0029: 0029-Allow-specifying-report-schema-1.2.0.patch -Patch0030: 0030-restrict-Satellite-upgrades-to-x86_64.patch -Patch0031: 0031-Add-missing-documentation-link-to-the-SFTP-deprecati.patch -Patch0032: 0032-Fix-satellite-actor-due-to-some-oversight-of-a-missi.patch -Patch0033: 0033-Drop-the-obsoleted-copr-build-job.patch -Patch0034: 0034-Add-prod-certs-for-8.7-9.1-Beta-GA.patch -Patch0035: 0035-Add-upgrade-path-8.7-9.0.patch -Patch0036: 0036-Handle-7-to-8-IPUs-on-Google-Cloud-897.patch -Patch0037: 0037-CheckNFS-actor-should-respect-nfsd-filesystem.patch -Patch0038: 0038-Remove-temporary-leapp-directory-in-root.patch -Patch0039: 0039-Improve-Leapp-resume-service-cleanup-logging.patch -Patch0040: 0040-Revert-Move-multipathconfread-into-common-repository.patch -Patch0041: 0041-add-multipathconf-read-check-update-el8toel9-actors.patch -Patch0042: 0042-el8toel9-Warn-about-the-NVIDIA-driver-before-upgrade.patch -Patch0043: 0043-Fix-unnecessary-dunder-call-violation.patch -Patch0044: 0044-Massive-workflow-refactor-split-into-reusable-parts.patch -Patch0045: 0045-Allow-running-all-tests-with-dependent-leapp-pr.patch -Patch0046: 0046-Update-pr-welcome-msg.patch -Patch0047: 0047-Fix-set-of-supported-OS-versions-for-IPU-8-9.patch %description @@ -119,7 +74,7 @@ Requires: python2-leapp Obsoletes: leapp-repository-data <= 0.6.1 Provides: leapp-repository-data <= 0.6.1 -# Former leapp subpackage that is part of the sos package since HEL 7.8 +# Former leapp subpackage that is part of the sos package since RHEL 7.8 Obsoletes: leapp-repository-sos-plugin <= 0.10.0 # Set the conflict to be sure this RPM is not upgraded automatically to @@ -145,7 +100,7 @@ Requires: leapp-repository-dependencies = %{leapp_repo_deps} # IMPORTANT: this is capability provided by the leapp framework rpm. # Check that 'version' instead of the real framework rpm version. -Requires: leapp-framework >= 2.2 +Requires: leapp-framework >= 3.1 # Since we provide sub-commands for the leapp utility, we expect the leapp # tool to be installed as well. @@ -159,6 +114,14 @@ Provides: leapp-repository = %{version}-%{release} # to install "leapp-upgrade" in the official docs. Provides: leapp-upgrade = %{version}-%{release} +# Provide leapp-commands so the framework could refer to them when customers +# do not have installed particular leapp-repositories +Provides: leapp-command(answer) +Provides: leapp-command(preupgrade) +Provides: leapp-command(upgrade) +Provides: leapp-command(rerun) +Provides: leapp-command(list-runs) + %description -n %{lpr_name} Leapp repositories for the in-place upgrade to the next major version @@ -202,6 +165,13 @@ Requires: python3-requests Requires: python3-six # required by SELinux actors Requires: policycoreutils-python-utils +# required by systemfacts, and several other actors +Requires: procps-ng +Requires: kmod +# since RHEL 8+ dracut does not have to be present on the system all the time +# and missing dracut could be killing situation for us :) +Requires: dracut + %endif ################################################## # end requirement @@ -218,57 +188,8 @@ Requires: policycoreutils-python-utils # APPLY PATCHES HERE # %%patch0001 -p1 -%patch0001 -p1 -%patch0002 -p1 -%patch0003 -p1 -%patch0004 -p1 -%patch0005 -p1 -%patch0006 -p1 -%patch0007 -p1 -%patch0008 -p1 -%patch0009 -p1 -%patch0010 -p1 -%patch0011 -p1 -%patch0012 -p1 -%patch0013 -p1 -%patch0014 -p1 -%patch0015 -p1 -%patch0016 -p1 -%patch0017 -p1 -%patch0018 -p1 -%patch0019 -p1 -%patch0020 -p1 -%patch0021 -p1 -%patch0022 -p1 -%patch0023 -p1 -%patch0024 -p1 -%patch0025 -p1 -%patch0026 -p1 -%patch0027 -p1 -%patch0028 -p1 -%patch0029 -p1 -%patch0030 -p1 -%patch0031 -p1 -%patch0032 -p1 -%patch0033 -p1 -%patch0034 -p1 -%patch0035 -p1 -%patch0036 -p1 -%patch0037 -p1 -%patch0038 -p1 -%patch0039 -p1 -%patch0040 -p1 -%patch0041 -p1 -%patch0042 -p1 -%patch0043 -p1 -%patch0044 -p1 -%patch0045 -p1 -%patch0046 -p1 -%patch0047 -p1 -# enforce removal of packages below during the upgrade - %build %if 0%{?rhel} == 7 cp -a leapp*deps-el8*rpm repos/system_upgrade/el7toel8/files/bundled-rpms/ @@ -341,13 +262,48 @@ done; # no files here %changelog -* Mon Jun 13 2022 Petr Stodulka - 0.16.0-8 -- enable RHEL 8.7 for the upgrade -- Resolves: rhbz#2090995 - -* Wed Apr 27 2022 Petr Stodulka - 0.16.0-7 -- CTC 1 build -- Resolves: rhbz#2090995 +* Wed Aug 24 2022 Petr Stodulka - 0.17.0-1 +- Rebase to v0.17.0 +- Support upgrade path RHEL 8.7 -> 9.0 and RHEL SAP 8.6 -> 9.0 +- Provide and require leapp-repository-dependencies 7 +- Provide `leapp-command()` for each CLI command provided by leapp-repository +- Require dracut, kmod, procps-ng on RHEL 8+ +- Require leapp-framework >= 3.1 +- Add actors covering removal of NIS components on RHEL 9 +- Add checks for obsolete .NET versions +- Allow specifying the report schema v1.2.0 +- Check and handle upgrades with custom crypto policies +- Check and migrate OpenSSH configuration +- Check and migrate multipath configuration +- Check minimum memory requirements +- Do not create the upgrade bootloader entry when the dnf dry-run actor stops the upgrade +- Enable Base and SAP in-place upgrades on Azure +- Enable in-place upgrade in case LUKS volumes are Ceph OSDs +- Enable in-place upgrades in Azure RHEL 8 base images using RHUI +- Enable in-place upgrades on IBM z16 machines +- Enable the CRB repository for the upgrade only if enabled on the source system +- Fix cloud provider detection on AWS +- Fix detection of the latest kernel +- Fix issues caused by leapp artifacts from previous in-place upgrades +- Fix issues with false positive switch to emergency console during the upgrade +- Fix swap page size on aarch64 +- Fix the VDO scanner to skip partitions unrelated to VDO and adjust error messages +- Fix the false positive NFS storage detection on NFS servers and improve the report msg +- Fix the issues on systems with the LANGUAGE environment variable +- Fix the root directory scan to deal with non-utf8 filenames +- Handle upgrades of SAP systems on AWS +- Inform about necessary migrations related to bacula-director when installed on the system +- Inhibit the upgrade when /var/lib/leapp being mounted in a non-persistent fashion to prevent failures +- Inhibit the upgrade when /var/lib/leapp mounted with the noexec option to prevent failures +- Inhibit upgrade when NVIDIA driver is detected +- Make the application of custom selinux rules more reliable and do not override changes done by RPM scriptlets +- Migrate the OpenSSL configuration +- PESEventScanner actor has been fully refactored +- Report changes around SCP and SFTP +- Skip comment lines when parsing the GRUB configuration file +- Stop propagating the “debug” and ”enforcing=0” kernel cmdline options into the target kernel cmdline options +- Mass refactoring to be compatible with leapp v0.15.0 +- Resolves: rhbz#2090995, rhbz#2040470, rhbz#2092005, rhbz#2093220, rhbz#2095704, rhbz#2096159, rhbz#2100108, rhbz#2100110, rhbz#2103282, rhbz#2106904, rhbz#2110627 * Wed Apr 27 2022 Petr Stodulka - 0.16.0-6 - Skip comments in /etc/default/grub during the parsing