Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
84b451f8e1 | |||
51e0b13f69 |
@ -1,91 +0,0 @@
|
||||
From 397975d6b63ff70755ea41b8ec8fc413966218e4 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Fri, 30 May 2025 14:13:35 +0200
|
||||
Subject: [PATCH 38/43] Makefile: Non-zero exit code on failed tests in
|
||||
container
|
||||
|
||||
Previously all exit codes from execution of tests inside
|
||||
container have been ignored and make command ended with zero always.
|
||||
|
||||
Also drop testing of el7toel8 repository for Python 3.6 on RHEL 8.
|
||||
The test started to fail for unknown reason (changes in pytest or
|
||||
another nonstandard python module?). As we are in the middle of
|
||||
dropping all el7toel8 and python2 related content, let's just drop
|
||||
it. Keeping the full removal of Py2 and el7toel8 content on separate
|
||||
PR.
|
||||
---
|
||||
Makefile | 29 ++++++++++++++++-------------
|
||||
1 file changed, 16 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index ceb013ab..6769b2f3 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -164,9 +164,9 @@ help:
|
||||
@echo " PR=7 SUFFIX='my_additional_suffix' make <target>"
|
||||
@echo " MR=6 COPR_CONFIG='path/to/the/config/copr/file' make <target>"
|
||||
@echo " ACTOR=<actor> TEST_LIBS=y make test"
|
||||
- @echo " BUILD_CONTAINER=el7 make build_container"
|
||||
+ @echo " BUILD_CONTAINER=rhel8 make build_container"
|
||||
@echo " TEST_CONTAINER=f34 make test_container"
|
||||
- @echo " CONTAINER_TOOL=docker TEST_CONTAINER=rhel7 make test_container_no_lint"
|
||||
+ @echo " CONTAINER_TOOL=docker TEST_CONTAINER=rhel8 make test_container_no_lint"
|
||||
@echo ""
|
||||
|
||||
clean:
|
||||
@@ -459,30 +459,33 @@ test_container:
|
||||
$(_CONTAINER_TOOL) ps -q -f name=$$_CONT_NAME && { $(_CONTAINER_TOOL) kill $$_CONT_NAME; $(_CONTAINER_TOOL) rm $$_CONT_NAME; }; \
|
||||
$(_CONTAINER_TOOL) run -di --name $$_CONT_NAME -v "$$PWD":/repo:Z -e PYTHON_VENV=$$_VENV $$TEST_IMAGE && \
|
||||
$(_CONTAINER_TOOL) exec $$_CONT_NAME rsync -aur --delete --exclude "tut*" /repo/ /repocopy && \
|
||||
+ export res=0; \
|
||||
case $$_VENV in \
|
||||
python2.7) \
|
||||
- TEST_CONT_IPU=el7toel8 $(MAKE) _test_container_ipu; \
|
||||
+ TEST_CONT_IPU=el7toel8 $(MAKE) _test_container_ipu || res=1; \
|
||||
;;\
|
||||
python3.6) \
|
||||
- TEST_CONT_IPU=el7toel8 $(MAKE) _test_container_ipu; \
|
||||
- TEST_CONT_IPU=el8toel9 $(MAKE) _test_container_ipu; \
|
||||
+ echo "INFO: Skipping testing of el7toel8 repository. Obsoleted"; \
|
||||
+ TEST_CONT_IPU=el8toel9 $(MAKE) _test_container_ipu || res=1; \
|
||||
;; \
|
||||
python3.9) \
|
||||
- TEST_CONT_IPU=el8toel9 $(MAKE) _test_container_ipu; \
|
||||
- TEST_CONT_IPU=el9toel10 $(MAKE) _test_container_ipu; \
|
||||
+ TEST_CONT_IPU=el8toel9 $(MAKE) _test_container_ipu || res=1; \
|
||||
+ TEST_CONT_IPU=el9toel10 $(MAKE) _test_container_ipu || res=1; \
|
||||
;; \
|
||||
python3.12) \
|
||||
- TEST_CONT_IPU=el9toel10 $(MAKE) _test_container_ipu; \
|
||||
+ TEST_CONT_IPU=el9toel10 $(MAKE) _test_container_ipu || res=1; \
|
||||
;; \
|
||||
*) \
|
||||
- TEST_CONT_IPU=el8toel9 $(MAKE) _test_container_ipu; \
|
||||
- ;;\
|
||||
+ TEST_CONT_IPU=el8toel9 $(MAKE) _test_container_ipu || res=1; \
|
||||
+ ;; \
|
||||
esac; \
|
||||
$(_CONTAINER_TOOL) kill $$_CONT_NAME; \
|
||||
- $(_CONTAINER_TOOL) rm $$_CONT_NAME
|
||||
+ $(_CONTAINER_TOOL) rm $$_CONT_NAME; \
|
||||
+ [ $$res -ne 0 ] && echo "TIP: If you do not see an error in the end of logs, scroll up. Multiple tests could be executed." ; \
|
||||
+ exit $$res
|
||||
|
||||
test_container_all:
|
||||
- @for container in "f34" "rhel7" "rhel8"; do \
|
||||
+ @for container in "f34" "rhel7" "rhel8" "rhel9"; do \
|
||||
TEST_CONTAINER=$$container $(MAKE) test_container || exit 1; \
|
||||
done
|
||||
|
||||
@@ -490,7 +493,7 @@ test_container_no_lint:
|
||||
@_TEST_CONT_TARGET="test_no_lint" $(MAKE) test_container
|
||||
|
||||
test_container_all_no_lint:
|
||||
- @for container in "f34" "rhel7" "rhel8"; do \
|
||||
+ @for container in "f34" "rhel7" "rhel8" "rhel9"; do \
|
||||
TEST_CONTAINER=$$container $(MAKE) test_container_no_lint || exit 1; \
|
||||
done
|
||||
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,82 +0,0 @@
|
||||
From 4e87908b2e17d87b69bcec29ba1e9b777439a0fe Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Fri, 30 May 2025 15:02:53 +0200
|
||||
Subject: [PATCH 39/43] CI: Unit-tests: Rename tasks & tests executions
|
||||
|
||||
Previous name have been very long, repeating, and it has been
|
||||
problem to read the whole informatino about what tests are performed
|
||||
as the description has been shortened in WebUI, e.g.:
|
||||
|
||||
Unit Tests / Run unit tests in containers (Run python linters for el8toel9 and common repositories on p...
|
||||
|
||||
Let's change the name so it's shortened and easier read what test
|
||||
has been actually performed. Also, no need to mention that tests are
|
||||
running in container anymore, as we are not running unit-tests outside
|
||||
of the container in upstream. Example of new style names:
|
||||
|
||||
Unit Tests / Run: Linters (python:3.9; repos:el9toel10,common) (pull_request)
|
||||
Unit Tests / Run: Unit Tests (python:3.9; repos:el9toel10,common) (pull_request)
|
||||
---
|
||||
.github/workflows/unit-tests.yml | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
|
||||
index 37748396..ed82e0e5 100644
|
||||
--- a/.github/workflows/unit-tests.yml
|
||||
+++ b/.github/workflows/unit-tests.yml
|
||||
@@ -9,43 +9,43 @@ on:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
- name: Run unit tests in containers
|
||||
+ name: 'Run: ${{ matrix.scenarios.name }}'
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
scenarios:
|
||||
# 9to10
|
||||
- - name: Run unit tests for el9toel10 and common repositories on python 3.12
|
||||
+ - name: 'Unit tests (python:3.12; repos:el9toel10,common)'
|
||||
python: python3.12
|
||||
repos: 'el9toel10,common'
|
||||
container: ubi9
|
||||
- - name: Run python linters for el9toel10 and common repositories on python 3.12
|
||||
+ - name: 'Linters (python:3.12; repos:el9toel10,common)'
|
||||
python: python3.12
|
||||
repos: 'el9toel10,common'
|
||||
container: ubi9-lint
|
||||
- - name: Run unit tests for el9toel10 and common repositories on python 3.9
|
||||
+ - name: 'Unit tests (python:3.9; repos:el9toel10,common)'
|
||||
python: python3.9
|
||||
repos: 'el9toel10,common'
|
||||
container: ubi9
|
||||
- - name: Run python linters for el9toel10 and common repositories on python 3.9
|
||||
+ - name: 'Linters (python:3.9; repos:el9toel10,common)'
|
||||
python: python3.9
|
||||
repos: 'el9toel10,common'
|
||||
container: ubi9-lint
|
||||
# 8to9
|
||||
- - name: Run unit tests for el8toel9 and common repositories on python 3.9
|
||||
+ - name: 'Unit tests (python:3.9; repos:el8toel9,common)'
|
||||
python: python3.9
|
||||
repos: 'el8toel9,common'
|
||||
container: ubi9
|
||||
- - name: Run python linters for el8toel9 and common repositories on python 3.9
|
||||
+ - name: 'Linters (python:3.9; repos:el8toel9,common)'
|
||||
python: python3.9
|
||||
repos: 'el8toel9,common'
|
||||
container: ubi9-lint
|
||||
- - name: Run unit tests for el8toel9 and common repositories on python 3.6
|
||||
+ - name: 'Unit tests (python:3.6; repos:el8toel9,common)'
|
||||
python: python3.6
|
||||
repos: 'el8toel9,common'
|
||||
container: ubi8
|
||||
- - name: Run python linters for el8toel9 and common repositories on python 3.6
|
||||
+ - name: 'Linters (python:3.6; repos:el8toel9,common)'
|
||||
python: python3.6
|
||||
repos: 'el8toel9,common'
|
||||
container: ubi8-lint
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,166 +0,0 @@
|
||||
From 2646484407bef15688fb4838c2f61d06f2098f81 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Wed, 30 Apr 2025 12:54:22 +0200
|
||||
Subject: [PATCH 40/43] Fix parsing of the kernel cmdline
|
||||
|
||||
Original parsing has been splitting string tokens by "=" without a
|
||||
limit, means that e.g.
|
||||
root=UUID=some-id
|
||||
has been split to
|
||||
(root, UUID, some-id)
|
||||
and and stored just "root" and "UUID" strings in the parsed msg,
|
||||
instead of "root" and "UUID=some-id".
|
||||
|
||||
So split the key=value just based on the first occurence of "="
|
||||
instead.
|
||||
|
||||
JIRA: RHELMISC-12490
|
||||
|
||||
Co-Authored-By: Karolina Kula <kkula@redhat.com>
|
||||
---
|
||||
.../common/actors/scankernelcmdline/actor.py | 16 ++---
|
||||
.../libraries/scankernelcmdline.py | 23 +++++++
|
||||
.../tests/test_scankernelcmdline.py | 67 +++++++++++++++++++
|
||||
3 files changed, 94 insertions(+), 12 deletions(-)
|
||||
create mode 100644 repos/system_upgrade/common/actors/scankernelcmdline/libraries/scankernelcmdline.py
|
||||
create mode 100644 repos/system_upgrade/common/actors/scankernelcmdline/tests/test_scankernelcmdline.py
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/scankernelcmdline/actor.py b/repos/system_upgrade/common/actors/scankernelcmdline/actor.py
|
||||
index 9f8fef30..2f1a5ae2 100644
|
||||
--- a/repos/system_upgrade/common/actors/scankernelcmdline/actor.py
|
||||
+++ b/repos/system_upgrade/common/actors/scankernelcmdline/actor.py
|
||||
@@ -1,12 +1,12 @@
|
||||
from leapp.actors import Actor
|
||||
-from leapp.libraries.stdlib import run
|
||||
-from leapp.models import KernelCmdline, KernelCmdlineArg
|
||||
+from leapp.libraries.actor import scankernelcmdline
|
||||
+from leapp.models import KernelCmdline
|
||||
from leapp.tags import FactsPhaseTag, IPUWorkflowTag
|
||||
|
||||
|
||||
class ScanKernelCmdline(Actor):
|
||||
"""
|
||||
- No documentation has been provided for the scan_kernel_cmdline actor.
|
||||
+ Scan the kernel command line of the booted system.
|
||||
"""
|
||||
|
||||
name = 'scan_kernel_cmdline'
|
||||
@@ -15,12 +15,4 @@ class ScanKernelCmdline(Actor):
|
||||
tags = (FactsPhaseTag, IPUWorkflowTag)
|
||||
|
||||
def process(self):
|
||||
- cmdline = run(['cat', '/proc/cmdline'])['stdout'].strip()
|
||||
- parameters = []
|
||||
- for parameter in cmdline.split(' '):
|
||||
- if '=' in parameter:
|
||||
- kv = parameter.split('=')
|
||||
- parameters.append(KernelCmdlineArg(key=kv[0], value=kv[1]))
|
||||
- else:
|
||||
- parameters.append(KernelCmdlineArg(key=parameter))
|
||||
- self.produce(KernelCmdline(parameters=parameters))
|
||||
+ scankernelcmdline.parse_cmdline_input()
|
||||
diff --git a/repos/system_upgrade/common/actors/scankernelcmdline/libraries/scankernelcmdline.py b/repos/system_upgrade/common/actors/scankernelcmdline/libraries/scankernelcmdline.py
|
||||
new file mode 100644
|
||||
index 00000000..9cffa70e
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scankernelcmdline/libraries/scankernelcmdline.py
|
||||
@@ -0,0 +1,23 @@
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError, run
|
||||
+from leapp.models import KernelCmdline, KernelCmdlineArg
|
||||
+
|
||||
+
|
||||
+def get_cmdline_input():
|
||||
+ try:
|
||||
+ cmdline_input = run(['cat', '/proc/cmdline'])['stdout'].strip()
|
||||
+ return cmdline_input
|
||||
+ except (OSError, CalledProcessError):
|
||||
+ api.current_logger().debug('Executing `cat /proc/cmdline` failed', exc_info=True)
|
||||
+ return ''
|
||||
+
|
||||
+
|
||||
+def parse_cmdline_input():
|
||||
+ cmdline = get_cmdline_input()
|
||||
+ parameters = []
|
||||
+ for parameter in cmdline.split(' '):
|
||||
+ if '=' in parameter:
|
||||
+ kv = parameter.split('=', 1)
|
||||
+ parameters.append(KernelCmdlineArg(key=kv[0], value=kv[1]))
|
||||
+ else:
|
||||
+ parameters.append(KernelCmdlineArg(key=parameter))
|
||||
+ api.produce(KernelCmdline(parameters=parameters))
|
||||
diff --git a/repos/system_upgrade/common/actors/scankernelcmdline/tests/test_scankernelcmdline.py b/repos/system_upgrade/common/actors/scankernelcmdline/tests/test_scankernelcmdline.py
|
||||
new file mode 100644
|
||||
index 00000000..ff79054f
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/common/actors/scankernelcmdline/tests/test_scankernelcmdline.py
|
||||
@@ -0,0 +1,67 @@
|
||||
+import pytest
|
||||
+
|
||||
+from leapp.libraries.actor import scankernelcmdline
|
||||
+from leapp.libraries.common.testutils import CurrentActorMocked, produce_mocked
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError
|
||||
+from leapp.models import KernelCmdline, KernelCmdlineArg
|
||||
+
|
||||
+
|
||||
+def mock_cmd_output():
|
||||
+ expected_cmd_output = (
|
||||
+ 'BOOT_IMAGE=(hd0,msdos1)/vmlinuz-xxx root=UUID=some_uid ro console=tty0'
|
||||
+ ' console=ttyS0,115200 rd_NO_PLYMOUTH biosdevname=0 net.ifnames=0 crashkernel=auto'
|
||||
+ )
|
||||
+ return expected_cmd_output
|
||||
+
|
||||
+
|
||||
+def test_cmdline_output(monkeypatch):
|
||||
+
|
||||
+ monkeypatch.setattr(scankernelcmdline, 'get_cmdline_input', mock_cmd_output)
|
||||
+ current_actor = CurrentActorMocked(src_ver='8.10', dst_ver='9.6')
|
||||
+ monkeypatch.setattr(api, 'current_actor', current_actor)
|
||||
+ monkeypatch.setattr(api, 'produce', produce_mocked())
|
||||
+
|
||||
+ scankernelcmdline.parse_cmdline_input()
|
||||
+
|
||||
+ expected_params = [KernelCmdlineArg(key=k, value=v) for k, v in [
|
||||
+ ('BOOT_IMAGE', '(hd0,msdos1)/vmlinuz-xxx'),
|
||||
+ ('root', 'UUID=some_uid'),
|
||||
+ ('ro', None),
|
||||
+ ('console', 'tty0'),
|
||||
+ ('console', 'ttyS0,115200'),
|
||||
+ ('rd_NO_PLYMOUTH', None),
|
||||
+ ('biosdevname', '0'),
|
||||
+ ('net.ifnames', '0'),
|
||||
+ ('crashkernel', 'auto')]]
|
||||
+
|
||||
+ expected_output_msg = KernelCmdline(parameters=expected_params)
|
||||
+ assert api.produce.model_instances
|
||||
+ assert expected_output_msg == api.produce.model_instances[0]
|
||||
+
|
||||
+
|
||||
+def test_cmdline_content(monkeypatch):
|
||||
+
|
||||
+ def run_mocked(cmd, **kwargs):
|
||||
+ assert cmd == ['cat', '/proc/cmdline']
|
||||
+ output = mock_cmd_output()
|
||||
+ return {'stdout': output}
|
||||
+
|
||||
+ monkeypatch.setattr(scankernelcmdline, 'run', run_mocked)
|
||||
+ cmd_output = scankernelcmdline.get_cmdline_input()
|
||||
+ expected_cmd_output = mock_cmd_output()
|
||||
+
|
||||
+ assert cmd_output == expected_cmd_output
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize('is_os_error', [True, False])
|
||||
+def test_cmdline_run_failed(monkeypatch, is_os_error):
|
||||
+
|
||||
+ def run_mocked_error(cmd, **kwargs):
|
||||
+ assert cmd == ['cat', '/proc/cmdline']
|
||||
+ if is_os_error:
|
||||
+ raise OSError('OSError raised')
|
||||
+ raise CalledProcessError("CalledProcessError raised", cmd, "result")
|
||||
+
|
||||
+ monkeypatch.setattr(scankernelcmdline, 'run', run_mocked_error)
|
||||
+ cmd_output = scankernelcmdline.get_cmdline_input()
|
||||
+ assert cmd_output == ''
|
||||
--
|
||||
2.49.0
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,28 +0,0 @@
|
||||
From 6c205281850c28068edc7fc5ab453c65398b7054 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Stodulka <pstodulk@redhat.com>
|
||||
Date: Fri, 30 May 2025 18:28:25 +0200
|
||||
Subject: [PATCH 43/43] unit-tests: suppress deprecation warning for
|
||||
is_rhel_alt()
|
||||
|
||||
The deprecation warning is not wanted in unit-tests. Supress it.
|
||||
|
||||
Signed-off-by: Petr Stodulka <pstodulk@redhat.com>
|
||||
---
|
||||
.../system_upgrade/common/libraries/config/tests/test_version.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/libraries/config/tests/test_version.py b/repos/system_upgrade/common/libraries/config/tests/test_version.py
|
||||
index 420571c0..d51f8098 100644
|
||||
--- a/repos/system_upgrade/common/libraries/config/tests/test_version.py
|
||||
+++ b/repos/system_upgrade/common/libraries/config/tests/test_version.py
|
||||
@@ -108,6 +108,7 @@ def test_matches_target_version(monkeypatch, result, version_list):
|
||||
(False, '4.14.0-100.8.2.el8.x86_64', 'rhel', '8.1'),
|
||||
(False, '4.14.0-100.8.2.el9.x86_64', 'rhel', '9.1'),
|
||||
])
|
||||
+@suppress_deprecation(version.is_rhel_alt)
|
||||
def test_is_rhel_alt(monkeypatch, result, kernel, release_id, src_ver):
|
||||
monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(src_ver=src_ver, kernel=kernel,
|
||||
release_id=release_id))
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,267 +0,0 @@
|
||||
From c7ea9fc29989a37071bf6355828328910b6b5e1d Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Diblik <ddiblik@redhat.com>
|
||||
Date: Tue, 17 Jun 2025 15:21:15 +0200
|
||||
Subject: [PATCH 44/66] Remove obsolete workflows
|
||||
|
||||
* tmt-tests.yml and reuse-copr-build.yml were replaced by the Packit
|
||||
workflows ages ago
|
||||
* removed the obsolete workflows
|
||||
|
||||
Signed-off-by: Daniel Diblik <ddiblik@redhat.com>
|
||||
---
|
||||
.github/workflows/reuse-copr-build.yml | 163 -------------------------
|
||||
.github/workflows/tmt-tests.yml | 72 -----------
|
||||
2 files changed, 235 deletions(-)
|
||||
delete mode 100644 .github/workflows/reuse-copr-build.yml
|
||||
delete mode 100644 .github/workflows/tmt-tests.yml
|
||||
|
||||
diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml
|
||||
deleted file mode 100644
|
||||
index a772fb64..00000000
|
||||
--- a/.github/workflows/reuse-copr-build.yml
|
||||
+++ /dev/null
|
||||
@@ -1,163 +0,0 @@
|
||||
-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-24.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: Update repository
|
||||
- id: repo_update
|
||||
- run: sudo apt-get update
|
||||
-
|
||||
- - 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 similar 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@v4
|
||||
- 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-8-x86_64"
|
||||
- COPR_REPO: "@oamg/leapp"
|
||||
- run: |
|
||||
- cat << EOF > $COPR_CONFIG
|
||||
- [copr-cli]
|
||||
- login = ${{ secrets.FEDORA_COPR_LOGIN }}
|
||||
- username = oamgbot
|
||||
- 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_REPO="$COPR_REPO" 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@v7
|
||||
- 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|rerun-sst)\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.group2 }}"
|
||||
-
|
||||
- - name: Checkout leapp
|
||||
- id: checkout_leapp
|
||||
- if: ${{ steps.leapp_pr_regex_match.outputs.match != '' }}
|
||||
- uses: actions/checkout@v4
|
||||
- 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-8-x86_64"
|
||||
- COPR_REPO: "@oamg/leapp"
|
||||
- run: |
|
||||
- cat << EOF > $COPR_CONFIG
|
||||
- [copr-cli]
|
||||
- login = ${{ secrets.FEDORA_COPR_LOGIN }}
|
||||
- username = oamgbot
|
||||
- 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_REPO="$COPR_REPO" 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@v7
|
||||
- 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
|
||||
deleted file mode 100644
|
||||
index c9f76ef7..00000000
|
||||
--- a/.github/workflows/tmt-tests.yml
|
||||
+++ /dev/null
|
||||
@@ -1,72 +0,0 @@
|
||||
-name: tmt@TF
|
||||
-
|
||||
-on:
|
||||
- issue_comment:
|
||||
- types:
|
||||
- - created
|
||||
-
|
||||
-jobs:
|
||||
- call_workflow_copr_build:
|
||||
- uses: ./.github/workflows/reuse-copr-build.yml
|
||||
- secrets: inherit
|
||||
-
|
||||
- call_workflow_tests_86to90_integration:
|
||||
- needs: call_workflow_copr_build
|
||||
- uses: oamg/leapp/.github/workflows/reuse-tests-8to9.yml@main
|
||||
- secrets: inherit
|
||||
- with:
|
||||
- copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }}
|
||||
- tmt_plan_regex: "^(?!.*max_sst)(.*tier1)"
|
||||
- variables: 'SOURCE_RELEASE=8.6;TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms;LEAPPDATA_BRANCH=upstream'
|
||||
- pull_request_status_name: "8.6to9.0"
|
||||
- if: |
|
||||
- github.event.issue.pull_request
|
||||
- && ! startsWith(github.event.comment.body, '/rerun-sst')
|
||||
- && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
|
||||
-
|
||||
- call_workflow_tests_88to92_integration:
|
||||
- needs: call_workflow_copr_build
|
||||
- uses: oamg/leapp/.github/workflows/reuse-tests-8to9.yml@main
|
||||
- secrets: inherit
|
||||
- with:
|
||||
- copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }}
|
||||
- tmt_plan_regex: "^(?!.*max_sst)(.*tier1)"
|
||||
- variables: 'SOURCE_RELEASE=8.8;TARGET_RELEASE=9.2;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-rpms,rhel-8-for-x86_64-baseos-rpms;LEAPPDATA_BRANCH=upstream'
|
||||
- compose: "RHEL-8.8.0-Nightly"
|
||||
- pull_request_status_name: "8.8to9.2"
|
||||
- tmt_context: "distro=rhel-8.8"
|
||||
- if: |
|
||||
- github.event.issue.pull_request
|
||||
- && ! startsWith(github.event.comment.body, '/rerun-sst')
|
||||
- && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
|
||||
-
|
||||
- call_workflow_tests_86to90_sst:
|
||||
- needs: call_workflow_copr_build
|
||||
- uses: oamg/leapp/.github/workflows/reuse-tests-8to9.yml@main
|
||||
- secrets: inherit
|
||||
- with:
|
||||
- copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }}
|
||||
- tmt_plan_regex: "^(?!.*tier[2-3].*)(.*max_sst.*)"
|
||||
- variables: 'SOURCE_RELEASE=8.6;TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms;LEAPPDATA_BRANCH=upstream'
|
||||
- pull_request_status_name: "8to9-sst"
|
||||
- update_pull_request_status: 'false'
|
||||
- if: |
|
||||
- github.event.issue.pull_request
|
||||
- && startsWith(github.event.comment.body, '/rerun-sst')
|
||||
- && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
|
||||
-
|
||||
- call_workflow_tests_86to90_aws:
|
||||
- needs: call_workflow_copr_build
|
||||
- uses: oamg/leapp/.github/workflows/reuse-tests-8to9.yml@main
|
||||
- secrets: inherit
|
||||
- with:
|
||||
- copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }}
|
||||
- tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*7to8)(.*e2e)"
|
||||
- compose: "RHEL-8.6-rhui"
|
||||
- environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}'
|
||||
- pull_request_status_name: "8to9-aws-e2e"
|
||||
- variables: 'SOURCE_RELEASE=8.6;TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms;RHUI=aws;LEAPPDATA_BRANCH=upstream'
|
||||
- if: |
|
||||
- github.event.issue.pull_request
|
||||
- && ! startsWith(github.event.comment.body, '/rerun-sst')
|
||||
- && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,24 +0,0 @@
|
||||
From 7c6bb64e550ccfefe4001e79fef44b7d69446c36 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Bocek <mbocek@redhat.com>
|
||||
Date: Thu, 19 Jun 2025 12:46:50 +0200
|
||||
Subject: [PATCH 45/66] README: IRC -> GitHub discussions
|
||||
|
||||
The Leapp team is not available on IRC anymore. We advise the public to
|
||||
talk to us on GitHub instead.
|
||||
---
|
||||
README.md | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/README.md b/README.md
|
||||
index 5ec5f723..6b45b4b7 100644
|
||||
--- a/README.md
|
||||
+++ b/README.md
|
||||
@@ -29,4 +29,4 @@ Then you may attach only the `leapp-logs.tgz` file.
|
||||
We’ll gladly answer your questions and lead you to through any troubles with the
|
||||
actor development.
|
||||
|
||||
-You can reach us at IRC: `#leapp` on Libera.Chat.
|
||||
+You can reach us in the [discussions sections of our GitHub repository](https://github.com/oamg/leapp-repository/discussions).
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,538 +0,0 @@
|
||||
From 9966eb19daca97c18d798080c62af5638c1e0eab Mon Sep 17 00:00:00 2001
|
||||
From: David Kubek <dkubek@redhat.com>
|
||||
Date: Tue, 20 Aug 2024 12:57:42 +0200
|
||||
Subject: [PATCH 46/66] Resolve boot issues in hybrid azure during upgrades
|
||||
from RHEL 7 > 8 > 9.
|
||||
|
||||
This commit addresses the issue where the `/boot/grub2/grub.cfg` file is
|
||||
overwritten during the upgrade process by an old RHEL7 configuration
|
||||
leftover on the system, causing the system to fail to boot.
|
||||
|
||||
The problem occurs on hybrid Azure images, which support both UEFI and
|
||||
Legacy systems and have both `grub-pc` and `grub-efi` packages installed.
|
||||
It is caused by one of the scriplets in `grub-efi` which overwrites the old
|
||||
configuration.
|
||||
|
||||
If old configuration is detected, this actor regenerates the grub
|
||||
configuration using `grub2-mkconfig -o /boot/grub2/grub.cfg` after
|
||||
installing rpms to ensure the correct boot configuration is in place.
|
||||
|
||||
The fix is applied specifically to Azure hybrid cloud systems.
|
||||
|
||||
JIRA: RHEL-38255
|
||||
---
|
||||
.../cloud/ensurevalidgrubcfghybrid/actor.py | 34 +++
|
||||
.../libraries/ensurevalidgrubcfghybrid.py | 66 ++++++
|
||||
.../tests/files/invalid_grub.cfg | 51 +++++
|
||||
.../tests/files/valid_grub.cfg | 195 ++++++++++++++++++
|
||||
.../tests/test_ensurevalidgrubcfghybrid.py | 124 +++++++++++
|
||||
5 files changed, 470 insertions(+)
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/actor.py
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/libraries/ensurevalidgrubcfghybrid.py
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/files/invalid_grub.cfg
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/files/valid_grub.cfg
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/test_ensurevalidgrubcfghybrid.py
|
||||
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/actor.py b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..68de0433
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/actor.py
|
||||
@@ -0,0 +1,34 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.actor import ensurevalidgrubcfghybrid
|
||||
+from leapp.models import HybridImage
|
||||
+from leapp.tags import ApplicationsPhaseTag, IPUWorkflowTag
|
||||
+
|
||||
+
|
||||
+class EnsureValidGrubcfgHybrid(Actor):
|
||||
+ """
|
||||
+ Resolve boot failures in Azure Gen1 VMs during upgrades from RHEL 7 to RHEL 8 to RHEL 9.
|
||||
+
|
||||
+ This actor addresses the issue where the `/boot/grub2/grub.cfg` file is
|
||||
+ overwritten during the upgrade process by an old RHEL7 configuration
|
||||
+ leftover on the system, causing the system to fail to boot.
|
||||
+
|
||||
+ The problem occurs on hybrid Azure images, which support both UEFI and
|
||||
+ Legacy systems and have both `grub-pc` and `grub-efi` packages installed.
|
||||
+ It is caused by one of the scriplets in `grub-efi` which overwrites the old
|
||||
+ configuration.
|
||||
+
|
||||
+ If old configuration is detected, this actor regenerates the grub
|
||||
+ configuration using `grub2-mkconfig -o /boot/grub2/grub.cfg` after
|
||||
+ installing rpms to ensure the correct boot configuration is in place.
|
||||
+
|
||||
+ The fix is applied specifically to Azure hybrid cloud systems.
|
||||
+
|
||||
+ """
|
||||
+
|
||||
+ name = 'ensure_valid_grubcfg_hybrid'
|
||||
+ consumes = (HybridImage,)
|
||||
+ produces = ()
|
||||
+ tags = (ApplicationsPhaseTag, IPUWorkflowTag)
|
||||
+
|
||||
+ def process(self):
|
||||
+ ensurevalidgrubcfghybrid.process()
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/libraries/ensurevalidgrubcfghybrid.py b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/libraries/ensurevalidgrubcfghybrid.py
|
||||
new file mode 100644
|
||||
index 00000000..127eccfc
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/libraries/ensurevalidgrubcfghybrid.py
|
||||
@@ -0,0 +1,66 @@
|
||||
+import re
|
||||
+
|
||||
+from leapp.exceptions import StopActorExecutionError
|
||||
+from leapp.libraries.common.config.architecture import ARCH_ACCEPTED
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError, run
|
||||
+from leapp.models import HybridImage
|
||||
+
|
||||
+GRUB_CFG_PATH = '/boot/grub2/grub.cfg'
|
||||
+
|
||||
+MATCH_ARCH = r'({})'.format('|'.join(ARCH_ACCEPTED))
|
||||
+MATCH_RHEL7_KERNEL_VERSION = r"\d+\.\d+\.\d+-\d+(\.\d+)*\.el7\.{}".format(MATCH_ARCH)
|
||||
+MATCH_RHEL7_KERNEL_DEFINITION = r"vmlinuz-{}".format(MATCH_RHEL7_KERNEL_VERSION)
|
||||
+
|
||||
+
|
||||
+def process():
|
||||
+ if not _is_hybrid_image():
|
||||
+ api.current_logger().info('System is not a hybrid image. Skipping.')
|
||||
+ return
|
||||
+
|
||||
+ grubcfg = _read_grubcfg()
|
||||
+ if _is_grubcfg_invalid(grubcfg):
|
||||
+ _run_grub2_mkconfig()
|
||||
+
|
||||
+
|
||||
+def _is_hybrid_image():
|
||||
+ return next(api.consume(HybridImage), None) is not None
|
||||
+
|
||||
+
|
||||
+def _read_grubcfg():
|
||||
+ api.current_logger().debug('Reading {}:'.format(GRUB_CFG_PATH))
|
||||
+ with open(GRUB_CFG_PATH, 'r') as fin:
|
||||
+ grubcfg = fin.read()
|
||||
+
|
||||
+ api.current_logger().debug(grubcfg)
|
||||
+ return grubcfg
|
||||
+
|
||||
+
|
||||
+def _is_grubcfg_invalid(grubcfg):
|
||||
+ return _contains_rhel7_kernel_definition(grubcfg)
|
||||
+
|
||||
+
|
||||
+def _contains_rhel7_kernel_definition(grubcfg):
|
||||
+ api.current_logger().debug("Looking for RHEL7 kernel version ...")
|
||||
+
|
||||
+ match = re.search(MATCH_RHEL7_KERNEL_DEFINITION, grubcfg)
|
||||
+
|
||||
+ api.current_logger().debug(
|
||||
+ "Matched: {}".format(match.group() if match else "[NO MATCH]")
|
||||
+ )
|
||||
+
|
||||
+ return match is not None
|
||||
+
|
||||
+
|
||||
+def _run_grub2_mkconfig():
|
||||
+ api.current_logger().info("Regenerating {}".format(GRUB_CFG_PATH))
|
||||
+
|
||||
+ try:
|
||||
+ run([
|
||||
+ 'grub2-mkconfig',
|
||||
+ '-o',
|
||||
+ GRUB_CFG_PATH
|
||||
+ ])
|
||||
+ except CalledProcessError as err:
|
||||
+ msg = 'Could not regenerate {}: {}'.format(GRUB_CFG_PATH, str(err))
|
||||
+ api.current_logger().error(msg)
|
||||
+ raise StopActorExecutionError(msg)
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/files/invalid_grub.cfg b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/files/invalid_grub.cfg
|
||||
new file mode 100644
|
||||
index 00000000..58f55c53
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/files/invalid_grub.cfg
|
||||
@@ -0,0 +1,51 @@
|
||||
+
|
||||
+# Created by osbuild
|
||||
+
|
||||
+set timeout=10
|
||||
+
|
||||
+# load the grubenv file
|
||||
+load_env
|
||||
+
|
||||
+# selection of the next boot entry
|
||||
+if [ "${next_entry}" ] ; then
|
||||
+ set default="${next_entry}"
|
||||
+ set next_entry=
|
||||
+ save_env next_entry
|
||||
+ set boot_once=true
|
||||
+else
|
||||
+ set default="${saved_entry}"
|
||||
+fi
|
||||
+
|
||||
+if [ "${prev_saved_entry}" ]; then
|
||||
+ set saved_entry="${prev_saved_entry}"
|
||||
+ save_env saved_entry
|
||||
+ set prev_saved_entry=
|
||||
+ save_env prev_saved_entry
|
||||
+ set boot_once=true
|
||||
+fi
|
||||
+
|
||||
+function savedefault {
|
||||
+ if [ -z "${boot_once}" ]; then
|
||||
+ saved_entry="${chosen}"
|
||||
+ save_env saved_entry
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
+serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
|
||||
+terminal_input serial console
|
||||
+terminal_output serial console
|
||||
+
|
||||
+menuentry 'Red Hat Enterprise Linux Server (3.10.0-1160.119.1.el7.x86_64) 7.9 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted --id 'gnulinux-3.10.0-1160.99.1.el7.x86_64-advanced-76a22bf4-f153-4541-b6c7-0332c0dfaeac' {
|
||||
+ insmod all_video
|
||||
+ set gfxpayload=keep
|
||||
+ search --no-floppy --set=root --fs-uuid 61779359-8d11-49ba-bc9d-8d038ee4b108
|
||||
+ linuxefi /vmlinuz-3.10.0-1160.119.1.el7.x86_64 root=UUID=d3c9a2bd-7ffb-4113-9b8f-234c13b18274 ro crashkernel=auto console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300 scsi_mod.use_blk_mq=y LANG=en_US.UTF-8
|
||||
+ initrdefi /initramfs-3.10.0-1160.119.1.el7.x86_64.img
|
||||
+}
|
||||
+menuentry 'Red Hat Enterprise Linux (3.10.0-1160.99.1.el7.x86_64) 7.9 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted --id 'gnulinux-3.10.0-1160.99.1.el7.x86_64-advanced-76a22bf4-f153-4541-b6c7-0332c0dfaeac' {
|
||||
+ insmod all_video
|
||||
+ set gfxpayload=keep
|
||||
+ search --no-floppy --set=root --fs-uuid 61779359-8d11-49ba-bc9d-8d038ee4b108
|
||||
+ linuxefi /vmlinuz-3.10.0-1160.99.1.el7.x86_64 root=UUID=d3c9a2bd-7ffb-4113-9b8f-234c13b18274 ro crashkernel=auto console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300 scsi_mod.use_blk_mq=y
|
||||
+ initrdefi /initramfs-3.10.0-1160.99.1.el7.x86_64.img
|
||||
+}
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/files/valid_grub.cfg b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/files/valid_grub.cfg
|
||||
new file mode 100644
|
||||
index 00000000..8192665e
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/files/valid_grub.cfg
|
||||
@@ -0,0 +1,195 @@
|
||||
+#
|
||||
+# DO NOT EDIT THIS FILE
|
||||
+#
|
||||
+# It is automatically generated by grub2-mkconfig using templates
|
||||
+# from /etc/grub.d and settings from /etc/default/grub
|
||||
+#
|
||||
+
|
||||
+### BEGIN /etc/grub.d/00_header ###
|
||||
+set pager=1
|
||||
+
|
||||
+if [ -f ${config_directory}/grubenv ]; then
|
||||
+ load_env -f ${config_directory}/grubenv
|
||||
+elif [ -s $prefix/grubenv ]; then
|
||||
+ load_env
|
||||
+fi
|
||||
+if [ "${next_entry}" ] ; then
|
||||
+ set default="${next_entry}"
|
||||
+ set next_entry=
|
||||
+ save_env next_entry
|
||||
+ set boot_once=true
|
||||
+else
|
||||
+ set default="${saved_entry}"
|
||||
+fi
|
||||
+
|
||||
+if [ x"${feature_menuentry_id}" = xy ]; then
|
||||
+ menuentry_id_option="--id"
|
||||
+else
|
||||
+ menuentry_id_option=""
|
||||
+fi
|
||||
+
|
||||
+export menuentry_id_option
|
||||
+
|
||||
+if [ "${prev_saved_entry}" ]; then
|
||||
+ set saved_entry="${prev_saved_entry}"
|
||||
+ save_env saved_entry
|
||||
+ set prev_saved_entry=
|
||||
+ save_env prev_saved_entry
|
||||
+ set boot_once=true
|
||||
+fi
|
||||
+
|
||||
+function savedefault {
|
||||
+ if [ -z "${boot_once}" ]; then
|
||||
+ saved_entry="${chosen}"
|
||||
+ save_env saved_entry
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
+function load_video {
|
||||
+ if [ x$feature_all_video_module = xy ]; then
|
||||
+ insmod all_video
|
||||
+ else
|
||||
+ insmod efi_gop
|
||||
+ insmod efi_uga
|
||||
+ insmod ieee1275_fb
|
||||
+ insmod vbe
|
||||
+ insmod vga
|
||||
+ insmod video_bochs
|
||||
+ insmod video_cirrus
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
+serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
|
||||
+terminal_input serial console
|
||||
+terminal_output serial console
|
||||
+if [ x$feature_timeout_style = xy ] ; then
|
||||
+ set timeout_style=countdown
|
||||
+ set timeout=10
|
||||
+# Fallback hidden-timeout code in case the timeout_style feature is
|
||||
+# unavailable.
|
||||
+elif sleep --interruptible 10 ; then
|
||||
+ set timeout=0
|
||||
+fi
|
||||
+### END /etc/grub.d/00_header ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/00_tuned ###
|
||||
+set tuned_params=""
|
||||
+set tuned_initrd=""
|
||||
+### END /etc/grub.d/00_tuned ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/01_users ###
|
||||
+if [ -f ${prefix}/user.cfg ]; then
|
||||
+ source ${prefix}/user.cfg
|
||||
+ if [ -n "${GRUB2_PASSWORD}" ]; then
|
||||
+ set superusers="root"
|
||||
+ export superusers
|
||||
+ password_pbkdf2 root ${GRUB2_PASSWORD}
|
||||
+ fi
|
||||
+fi
|
||||
+### END /etc/grub.d/01_users ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/08_fallback_counting ###
|
||||
+insmod increment
|
||||
+# Check if boot_counter exists and boot_success=0 to activate this behaviour.
|
||||
+if [ -n "${boot_counter}" -a "${boot_success}" = "0" ]; then
|
||||
+ # if countdown has ended, choose to boot rollback deployment,
|
||||
+ # i.e. default=1 on OSTree-based systems.
|
||||
+ if [ "${boot_counter}" = "0" -o "${boot_counter}" = "-1" ]; then
|
||||
+ set default=1
|
||||
+ set boot_counter=-1
|
||||
+ # otherwise decrement boot_counter
|
||||
+ else
|
||||
+ decrement boot_counter
|
||||
+ fi
|
||||
+ save_env boot_counter
|
||||
+fi
|
||||
+### END /etc/grub.d/08_fallback_counting ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/10_linux ###
|
||||
+insmod part_gpt
|
||||
+insmod xfs
|
||||
+set root='hd0,gpt2'
|
||||
+if [ x$feature_platform_search_hint = xy ]; then
|
||||
+ search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 61779359-8d11-49ba-bc9d-8d038ee4b108
|
||||
+else
|
||||
+ search --no-floppy --fs-uuid --set=root 61779359-8d11-49ba-bc9d-8d038ee4b108
|
||||
+fi
|
||||
+insmod part_gpt
|
||||
+insmod xfs
|
||||
+set boot='hd0,gpt2'
|
||||
+if [ x$feature_platform_search_hint = xy ]; then
|
||||
+ search --no-floppy --fs-uuid --set=boot --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 61779359-8d11-49ba-bc9d-8d038ee4b108
|
||||
+else
|
||||
+ search --no-floppy --fs-uuid --set=boot 61779359-8d11-49ba-bc9d-8d038ee4b108
|
||||
+fi
|
||||
+
|
||||
+# This section was generated by a script. Do not modify the generated file - all changes
|
||||
+# will be lost the next time file is regenerated. Instead edit the BootLoaderSpec files.
|
||||
+#
|
||||
+# The blscfg command parses the BootLoaderSpec files stored in /boot/loader/entries and
|
||||
+# populates the boot menu. Please refer to the Boot Loader Specification documentation
|
||||
+# for the files format: https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/.
|
||||
+
|
||||
+# The kernelopts variable should be defined in the grubenv file. But to ensure that menu
|
||||
+# entries populated from BootLoaderSpec files that use this variable work correctly even
|
||||
+# without a grubenv file, define a fallback kernelopts variable if this has not been set.
|
||||
+#
|
||||
+# The kernelopts variable in the grubenv file can be modified using the grubby tool or by
|
||||
+# executing the grub2-mkconfig tool. For the latter, the values of the GRUB_CMDLINE_LINUX
|
||||
+# and GRUB_CMDLINE_LINUX_DEFAULT options from /etc/default/grub file are used to set both
|
||||
+# the kernelopts variable in the grubenv file and the fallback kernelopts variable.
|
||||
+if [ -z "${kernelopts}" ]; then
|
||||
+ set kernelopts="root=/dev/mapper/rootvg-rootlv ro ro crashkernel=auto console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300 scsi_mod.use_blk_mq=y "
|
||||
+fi
|
||||
+
|
||||
+insmod blscfg
|
||||
+blscfg
|
||||
+### END /etc/grub.d/10_linux ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/10_reset_boot_success ###
|
||||
+# Hiding the menu is ok if last boot was ok or if this is a first boot attempt to boot the entry
|
||||
+if [ "${boot_success}" = "1" -o "${boot_indeterminate}" = "1" ]; then
|
||||
+ set menu_hide_ok=1
|
||||
+else
|
||||
+ set menu_hide_ok=0
|
||||
+fi
|
||||
+# Reset boot_indeterminate after a successful boot
|
||||
+if [ "${boot_success}" = "1" ] ; then
|
||||
+ set boot_indeterminate=0
|
||||
+# Avoid boot_indeterminate causing the menu to be hidden more then once
|
||||
+elif [ "${boot_indeterminate}" = "1" ]; then
|
||||
+ set boot_indeterminate=2
|
||||
+fi
|
||||
+# Reset boot_success for current boot
|
||||
+set boot_success=0
|
||||
+save_env boot_success boot_indeterminate
|
||||
+### END /etc/grub.d/10_reset_boot_success ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/12_menu_auto_hide ###
|
||||
+### END /etc/grub.d/12_menu_auto_hide ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/20_linux_xen ###
|
||||
+### END /etc/grub.d/20_linux_xen ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/20_ppc_terminfo ###
|
||||
+### END /etc/grub.d/20_ppc_terminfo ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/30_os-prober ###
|
||||
+### END /etc/grub.d/30_os-prober ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/30_uefi-firmware ###
|
||||
+### END /etc/grub.d/30_uefi-firmware ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/40_custom ###
|
||||
+# This file provides an easy way to add custom menu entries. Simply type the
|
||||
+# menu entries you want to add after this comment. Be careful not to change
|
||||
+# the 'exec tail' line above.
|
||||
+### END /etc/grub.d/40_custom ###
|
||||
+
|
||||
+### BEGIN /etc/grub.d/41_custom ###
|
||||
+if [ -f ${config_directory}/custom.cfg ]; then
|
||||
+ source ${config_directory}/custom.cfg
|
||||
+elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
|
||||
+ source $prefix/custom.cfg;
|
||||
+fi
|
||||
+### END /etc/grub.d/41_custom ###
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/test_ensurevalidgrubcfghybrid.py b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/test_ensurevalidgrubcfghybrid.py
|
||||
new file mode 100644
|
||||
index 00000000..c0fb0a0d
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/cloud/ensurevalidgrubcfghybrid/tests/test_ensurevalidgrubcfghybrid.py
|
||||
@@ -0,0 +1,124 @@
|
||||
+import os
|
||||
+
|
||||
+import pytest
|
||||
+
|
||||
+from leapp.exceptions import StopActorExecutionError
|
||||
+from leapp.libraries.actor import ensurevalidgrubcfghybrid
|
||||
+from leapp.libraries.common.testutils import CurrentActorMocked, logger_mocked
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError
|
||||
+from leapp.models import HybridImage
|
||||
+
|
||||
+CUR_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
+
|
||||
+
|
||||
+def raise_call_error(args=None):
|
||||
+ raise CalledProcessError(
|
||||
+ message='A Leapp Command Error occurred.',
|
||||
+ command=args,
|
||||
+ result={'signal': None, 'exit_code': 1, 'pid': 0, 'stdout': 'fake', 'stderr': 'fake'}
|
||||
+ )
|
||||
+
|
||||
+
|
||||
+class run_mocked(object):
|
||||
+ def __init__(self, raise_err=False):
|
||||
+ self.called = 0
|
||||
+ self.args = []
|
||||
+ self.raise_err = raise_err
|
||||
+
|
||||
+ def __call__(self, *args):
|
||||
+ self.called += 1
|
||||
+ self.args.append(args)
|
||||
+ if self.raise_err:
|
||||
+ raise_call_error(args)
|
||||
+
|
||||
+
|
||||
+def test_not_hybrid_image(monkeypatch):
|
||||
+ """
|
||||
+ Skip when system is not a hybrid.
|
||||
+ """
|
||||
+
|
||||
+ monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=[]))
|
||||
+ monkeypatch.setattr(api, 'current_logger', logger_mocked())
|
||||
+ monkeypatch.setattr(ensurevalidgrubcfghybrid, 'run', run_mocked(raise_err=False))
|
||||
+
|
||||
+ ensurevalidgrubcfghybrid.process()
|
||||
+
|
||||
+ assert api.current_logger.infomsg[0].startswith('System is not a hybrid image')
|
||||
+ assert ensurevalidgrubcfghybrid.run.called == 0
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize("is_invalid", [True, False])
|
||||
+def test_is_grubcfg_valid(monkeypatch, is_invalid):
|
||||
+
|
||||
+ grubcfg_filename = ('invalid' if is_invalid else 'valid') + '_grub.cfg'
|
||||
+ grubcfg_filepath = os.path.join(CUR_DIR, 'files', grubcfg_filename)
|
||||
+ with open(grubcfg_filepath, 'r') as fin:
|
||||
+ grubcfg = fin.read()
|
||||
+
|
||||
+ assert ensurevalidgrubcfghybrid._is_grubcfg_invalid(grubcfg) == is_invalid
|
||||
+
|
||||
+
|
||||
+def test_valid_grubcfg(monkeypatch):
|
||||
+ """
|
||||
+ Test valid configuration does not trigger grub2-mkconfig
|
||||
+ """
|
||||
+
|
||||
+ monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=[HybridImage()]))
|
||||
+ monkeypatch.setattr(api, 'current_logger', logger_mocked())
|
||||
+ monkeypatch.setattr(ensurevalidgrubcfghybrid, 'run', run_mocked(raise_err=False))
|
||||
+
|
||||
+ grubcfg_filepath = os.path.join(CUR_DIR, 'files', 'valid_grub.cfg')
|
||||
+ with open(grubcfg_filepath, 'r') as fin:
|
||||
+ grubcfg = fin.read()
|
||||
+
|
||||
+ monkeypatch.setattr(ensurevalidgrubcfghybrid, '_read_grubcfg', lambda: grubcfg)
|
||||
+
|
||||
+ ensurevalidgrubcfghybrid.process()
|
||||
+
|
||||
+ assert ensurevalidgrubcfghybrid.run.called == 0
|
||||
+
|
||||
+
|
||||
+def test_invalid_grubcfg(monkeypatch):
|
||||
+ """
|
||||
+ Test invalid configuration triggers grub2-mkconfig
|
||||
+ """
|
||||
+
|
||||
+ monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=[HybridImage()]))
|
||||
+ monkeypatch.setattr(api, 'current_logger', logger_mocked())
|
||||
+ monkeypatch.setattr(ensurevalidgrubcfghybrid, 'run', run_mocked(raise_err=False))
|
||||
+
|
||||
+ grubcfg_filepath = os.path.join(CUR_DIR, 'files', 'invalid_grub.cfg')
|
||||
+ with open(grubcfg_filepath, 'r') as fin:
|
||||
+ grubcfg = fin.read()
|
||||
+
|
||||
+ monkeypatch.setattr(ensurevalidgrubcfghybrid, '_read_grubcfg', lambda: grubcfg)
|
||||
+
|
||||
+ ensurevalidgrubcfghybrid.process()
|
||||
+
|
||||
+ assert ensurevalidgrubcfghybrid.run.called == 1
|
||||
+ assert any(msg.startswith('Regenerating') for msg in api.current_logger.infomsg)
|
||||
+
|
||||
+
|
||||
+def test_run_error(monkeypatch):
|
||||
+ """
|
||||
+ Test invalid configuration triggers grub2-mkconfig
|
||||
+ """
|
||||
+
|
||||
+ monkeypatch.setattr(api, 'current_actor', CurrentActorMocked(msgs=[HybridImage()]))
|
||||
+ monkeypatch.setattr(api, 'current_logger', logger_mocked())
|
||||
+ monkeypatch.setattr(ensurevalidgrubcfghybrid, 'run', run_mocked(raise_err=True))
|
||||
+
|
||||
+ grubcfg_filepath = os.path.join(CUR_DIR, 'files', 'invalid_grub.cfg')
|
||||
+ with open(grubcfg_filepath, 'r') as fin:
|
||||
+ grubcfg = fin.read()
|
||||
+
|
||||
+ monkeypatch.setattr(ensurevalidgrubcfghybrid, '_read_grubcfg', lambda: grubcfg)
|
||||
+
|
||||
+ with pytest.raises(StopActorExecutionError):
|
||||
+ ensurevalidgrubcfghybrid.process()
|
||||
+
|
||||
+ assert ensurevalidgrubcfghybrid.run.called == 1
|
||||
+ assert any(
|
||||
+ msg.startswith('Could not regenerate')
|
||||
+ for msg in api.current_logger.err
|
||||
+ )
|
||||
--
|
||||
2.50.1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,61 +0,0 @@
|
||||
From ba074a40e4297c90cbb8e5e522ec2a154fa2b9b0 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Bocek <mbocek@redhat.com>
|
||||
Date: Tue, 1 Jul 2025 20:38:20 +0200
|
||||
Subject: [PATCH 48/66] Point to leapp-repository contribution guidelines
|
||||
|
||||
Instead of the leapp framework contribution guidelines.
|
||||
|
||||
Also update the leapp-repository contribution guidelines to point to the
|
||||
new place of the leapp framework Python coding guidelines (moved under
|
||||
https://github.com/oamg/leapp/commit/123f2700dc0a354d4357ce325ff61fcb2f53e33b).
|
||||
---
|
||||
CONTRIBUTING.md | 2 +-
|
||||
README.md | 6 +++---
|
||||
docs/source/contrib-and-devel-guidelines.md | 2 +-
|
||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
|
||||
index d4cb2046..7315b693 100644
|
||||
--- a/CONTRIBUTING.md
|
||||
+++ b/CONTRIBUTING.md
|
||||
@@ -1 +1 @@
|
||||
-See the [Contribution guidelines](https://leapp.readthedocs.io/en/latest/contributing.html)
|
||||
+See the [contribution guidelines](https://leapp-repository.readthedocs.io/latest/contrib-and-devel-guidelines.html).
|
||||
diff --git a/README.md b/README.md
|
||||
index 6b45b4b7..43da589e 100644
|
||||
--- a/README.md
|
||||
+++ b/README.md
|
||||
@@ -1,6 +1,6 @@
|
||||
-**Before doing anything, please read the upstream [documentation](https://leapp-repository.readthedocs.io/).**
|
||||
+**Before doing anything, please read the [leapp-repository documentation](https://leapp-repository.readthedocs.io/).**
|
||||
|
||||
-Also, you could find useufl to read [Leapp framework documentation](https://leapp.readthedocs.io/).
|
||||
+Also, you could find the [Leapp framework documentation](https://leapp.readthedocs.io/) useful to read.
|
||||
|
||||
---
|
||||
|
||||
@@ -17,7 +17,7 @@ Also, you could find useufl to read [Leapp framework documentation](https://leap
|
||||
- *All files in /var/log/leapp*
|
||||
- */var/lib/leapp/leapp.db*
|
||||
- *journalctl*
|
||||
- - If you want, you can optionally send anything else would you like to provide (e.g. storage info)
|
||||
+ - If you want, you can optionally send any other relevant information (e.g. storage, network)
|
||||
|
||||
**For your convenience you can pack all logs with this command:**
|
||||
|
||||
diff --git a/docs/source/contrib-and-devel-guidelines.md b/docs/source/contrib-and-devel-guidelines.md
|
||||
index 66bef9b1..f2edf8b7 100644
|
||||
--- a/docs/source/contrib-and-devel-guidelines.md
|
||||
+++ b/docs/source/contrib-and-devel-guidelines.md
|
||||
@@ -1,7 +1,7 @@
|
||||
# Contribution and development guidelines
|
||||
## Code guidelines
|
||||
|
||||
-Your code should follow the [Python Coding Guidelines](https://leapp.readthedocs.io/en/latest/python-coding-guidelines.html) used for the leapp project. On top of these rules follow instructions
|
||||
+Your code should follow the [Python Coding Guidelines](https://leapp.readthedocs.io/en/latest/contributing.html#follow-python-coding-guidelines) used for the leapp project. On top of these rules follow instructions
|
||||
below.
|
||||
|
||||
### Retrieving information about the source system should be separated from its use
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,46 +0,0 @@
|
||||
From be6d23241e6fbe0c42a4f6a2df48efd6f999ed71 Mon Sep 17 00:00:00 2001
|
||||
From: karolinku <kkula@redhat.com>
|
||||
Date: Thu, 3 Jul 2025 13:12:32 +0200
|
||||
Subject: [PATCH 49/66] Read the DNF config by module.py library
|
||||
|
||||
The DNF configuration has not been loaded when trying to get
|
||||
information about available module streams (library module.py).
|
||||
This causes a traceback e.g. on systems which must access DNF
|
||||
repositories via a proxy.
|
||||
This patch introduces loading the DNF configuration before trying
|
||||
to access remote resources.
|
||||
|
||||
Jira: RHEL-39095
|
||||
---
|
||||
.../common/actors/rpmscanner/libraries/rpmscanner.py | 2 ++
|
||||
repos/system_upgrade/common/libraries/module.py | 1 +
|
||||
2 files changed, 3 insertions(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/rpmscanner/libraries/rpmscanner.py b/repos/system_upgrade/common/actors/rpmscanner/libraries/rpmscanner.py
|
||||
index dbe56191..74c4b101 100644
|
||||
--- a/repos/system_upgrade/common/actors/rpmscanner/libraries/rpmscanner.py
|
||||
+++ b/repos/system_upgrade/common/actors/rpmscanner/libraries/rpmscanner.py
|
||||
@@ -25,6 +25,8 @@ except ImportError:
|
||||
|
||||
def _get_package_repository_data_yum():
|
||||
yum_base = yum.YumBase()
|
||||
+ # DNF configuration is not loaded here, since no impact for operations
|
||||
+ # done by the actor is observed here
|
||||
pkg_repos = {}
|
||||
|
||||
try:
|
||||
diff --git a/repos/system_upgrade/common/libraries/module.py b/repos/system_upgrade/common/libraries/module.py
|
||||
index 7d4e8aa4..db725e71 100644
|
||||
--- a/repos/system_upgrade/common/libraries/module.py
|
||||
+++ b/repos/system_upgrade/common/libraries/module.py
|
||||
@@ -38,6 +38,7 @@ def _create_or_get_dnf_base(base=None):
|
||||
conf.substitutions.update_from_etc('/')
|
||||
|
||||
base = dnf.Base(conf=conf)
|
||||
+ base.conf.read()
|
||||
base.init_plugins()
|
||||
base.read_all_repos()
|
||||
# configure plugins after the repositories are loaded
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,34 +0,0 @@
|
||||
From a4d10adb2f432ef09898228c0e2d00288bbcc412 Mon Sep 17 00:00:00 2001
|
||||
From: karolinku <kkula@redhat.com>
|
||||
Date: Mon, 7 Jul 2025 14:52:34 +0200
|
||||
Subject: [PATCH 50/66] Disable localpkg_gpgcheck parameter from plugin data
|
||||
|
||||
This commit is setting the localpkg_gpgcheck DNF option within the
|
||||
rhel-upgrade plugin to 0 (disabled).
|
||||
The upgrade process has been blocked with "Error: GPG check FAILED"
|
||||
when dnf has been configured to apply gpg check also on local packages
|
||||
(localpkg_gpgcheck=1). That's because the bundled leapp*-deps meta
|
||||
packages, which are managing Leapp and leapp-repository dependencies
|
||||
during the transition to the new system, are not signed by the Red
|
||||
Hat key. Therefore, this option needs to be disabled.
|
||||
|
||||
Jira: RHEL-47472
|
||||
---
|
||||
repos/system_upgrade/common/files/rhel_upgrade.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/files/rhel_upgrade.py b/repos/system_upgrade/common/files/rhel_upgrade.py
|
||||
index 34f7b8f9..4f76a61d 100644
|
||||
--- a/repos/system_upgrade/common/files/rhel_upgrade.py
|
||||
+++ b/repos/system_upgrade/common/files/rhel_upgrade.py
|
||||
@@ -116,6 +116,7 @@ class RhelUpgradeCommand(dnf.cli.Command):
|
||||
self.base.conf.best = self.plugin_data['dnf_conf']['best']
|
||||
self.base.conf.assumeyes = True
|
||||
self.base.conf.gpgcheck = self.plugin_data['dnf_conf']['gpgcheck']
|
||||
+ self.base.conf.localpkg_gpgcheck = False
|
||||
self.base.conf.debug_solver = self.plugin_data['dnf_conf']['debugsolver']
|
||||
self.base.conf.module_platform_id = self.plugin_data['dnf_conf']['platform_id']
|
||||
installroot = self.plugin_data['dnf_conf'].get('installroot')
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,37 +0,0 @@
|
||||
From c3bef4d9e89d109aee226f64e54e2eed088e591b Mon Sep 17 00:00:00 2001
|
||||
From: Michal Bocek <mbocek@redhat.com>
|
||||
Date: Tue, 8 Jul 2025 14:09:30 +0200
|
||||
Subject: [PATCH 51/66] PR welcome msg: update link to contrib guidelines
|
||||
(#1399)
|
||||
|
||||
Following the https://github.com/oamg/leapp-repository/pull/1394 where
|
||||
the README was updated to point to the leapp-repository guidelines, this
|
||||
change updates the link to the guidelines in the PR welcome message.
|
||||
---
|
||||
.github/workflows/pr-welcome-msg.yml | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/pr-welcome-msg.yml b/.github/workflows/pr-welcome-msg.yml
|
||||
index 0102c41f..f056fb79 100644
|
||||
--- a/.github/workflows/pr-welcome-msg.yml
|
||||
+++ b/.github/workflows/pr-welcome-msg.yml
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
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 mergeable.
|
||||
+ Please note that every PR needs to comply with the [leapp-repository contribution and development guidelines](https://leapp-repository.readthedocs.io/latest/contrib-and-devel-guidelines.html) and must pass all tests in order to be mergeable.
|
||||
If you want to request a review or rebuild a package in copr, you can use following commands as a comment:
|
||||
- **`review please @oamg/developers`** to notify leapp developers of the review request
|
||||
- **`/packit copr-build`** to submit a public copr build using packit
|
||||
@@ -39,6 +39,6 @@ jobs:
|
||||
|
||||
See other labels for particular jobs defined in the `.packit.yaml` file.
|
||||
|
||||
- Please [open ticket](https://url.corp.redhat.com/oamg-ci-issue) in case you experience technical problem with the CI. (RH internal only)
|
||||
+ Please [open ticket](https://red.ht/rhel-upgrades-ci-issue) in case you experience technical problem with the CI. (RH internal only)
|
||||
|
||||
**Note:** In case there are problems with tests not being triggered automatically on new PR/commit or pending for a long time, please contact leapp-infra.
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 55c885ce7fbf5fd237047d4f1d8e66a043e3a1b3 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Fri, 11 Jul 2025 14:32:57 +0200
|
||||
Subject: [PATCH 52/66] Fix: skip checking ownership of files in
|
||||
.../directory-hash/ dir
|
||||
|
||||
This check has been reintroduced in 87013d25b5aa3, however the "root"
|
||||
directory during traversal is:
|
||||
/var/lib/leapp/el10userspace/etc/pki/ca-trust/extracted/pem/directory-hash.
|
||||
The skip condition looks for '/directory-hash/' which is false.
|
||||
---
|
||||
.../actors/targetuserspacecreator/libraries/userspacegen.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
index 9fc96a52..cbad91fe 100644
|
||||
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
@@ -311,7 +311,7 @@ def _get_files_owned_by_rpms(context, dirpath, pkgs=None, recursive=False):
|
||||
searchdir = context.full_path(dirpath)
|
||||
if recursive:
|
||||
for root, _, files in os.walk(searchdir):
|
||||
- if '/directory-hash/' in root:
|
||||
+ if '/directory-hash' in root:
|
||||
# tl;dr; for the performance improvement
|
||||
# The directory has been relatively recently added to ca-certificates
|
||||
# rpm on EL 9+ systems and the content does not seem to be important
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,35 +0,0 @@
|
||||
From acaed7edcea66f2cef9aabc148a431825f91479e Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Fri, 11 Jul 2025 18:17:51 +0200
|
||||
Subject: [PATCH 53/66] fixup! Fix: skip checking ownership of files in
|
||||
.../directory-hash/ dir
|
||||
|
||||
---
|
||||
.../actors/targetuserspacecreator/libraries/userspacegen.py | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
index cbad91fe..699f1517 100644
|
||||
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
@@ -294,6 +294,8 @@ def _get_files_owned_by_rpms(context, dirpath, pkgs=None, recursive=False):
|
||||
"""
|
||||
Return the list of file names inside dirpath owned by RPMs.
|
||||
|
||||
+ The returned paths are relative to the dirpath.
|
||||
+
|
||||
This is important e.g. in case of RHUI which installs specific repo files
|
||||
in the yum.repos.d directory.
|
||||
|
||||
@@ -334,7 +336,7 @@ def _get_files_owned_by_rpms(context, dirpath, pkgs=None, recursive=False):
|
||||
api.current_logger().debug('SKIP the {} file: not owned by any rpm'.format(fname))
|
||||
continue
|
||||
if pkgs and not [pkg for pkg in pkgs if pkg in result['stdout']]:
|
||||
- api.current_logger().debug('SKIP the {} file: not owned by any searched rpm:'.format(fname))
|
||||
+ api.current_logger().debug('SKIP the {} file: not owned by any searched rpm'.format(fname))
|
||||
continue
|
||||
api.current_logger().debug('Found the file owned by an rpm: {}.'.format(fname))
|
||||
files_owned_by_rpms.append(fname)
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,100 +0,0 @@
|
||||
From 6df858daa7c678d3e951bef3fdf077a0a5b49d36 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Fri, 11 Jul 2025 18:18:07 +0200
|
||||
Subject: [PATCH 54/66] Add test
|
||||
|
||||
---
|
||||
.../tests/unit_test_targetuserspacecreator.py | 73 +++++++++++++++++++
|
||||
1 file changed, 73 insertions(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py b/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
|
||||
index 69ed7040..219cb7c3 100644
|
||||
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
|
||||
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
|
||||
@@ -13,6 +13,7 @@ from leapp.libraries.actor import userspacegen
|
||||
from leapp.libraries.common import overlaygen, repofileutils, rhsm
|
||||
from leapp.libraries.common.config import architecture
|
||||
from leapp.libraries.common.testutils import CurrentActorMocked, logger_mocked, produce_mocked
|
||||
+from leapp.libraries.stdlib import api, CalledProcessError
|
||||
from leapp.utils.deprecation import suppress_deprecation
|
||||
|
||||
if sys.version_info < (2, 8):
|
||||
@@ -1225,3 +1226,75 @@ def test_perform_ok(monkeypatch):
|
||||
assert userspacegen.api.produce.model_instances[1] == msg_target_repos
|
||||
# this one is full of constants, so it's safe to check just the instance
|
||||
assert isinstance(userspacegen.api.produce.model_instances[2], models.TargetUserSpaceInfo)
|
||||
+
|
||||
+
|
||||
+def test__get_files_owned_by_rpms(monkeypatch):
|
||||
+ # this is not necessarily accurate, but close enoguh
|
||||
+ fake_walk = [
|
||||
+ ("/base/dir/etc/pki", ["ca-trust", "tls", "rpm-gpg"], []),
|
||||
+ ("/base/dir/etc/pki/ca-trust", ["extracted", "source"], []),
|
||||
+ ("/base/dir/etc/pki/ca-trust/extracted", ["openssl", "java"], []),
|
||||
+ ("/base/dir/etc/pki/ca-trust/extracted/openssl", [], ["ca-bundle.trust.crt"]),
|
||||
+ ("/base/dir/etc/pki/ca-trust/extracted/java", [], ["cacerts"]),
|
||||
+
|
||||
+ ("/base/dir/etc/pki/ca-trust/source", ["anchors", "directory-hash"], []),
|
||||
+ ("/base/dir/etc/pki/ca-trust/source/anchors", [], ["my-ca.crt"]),
|
||||
+ ("/base/dir/etc/pki/ca-trust/extracted/pem/directory-hash", [], [
|
||||
+ "5931b5bc.0", "a94d09e5.0"
|
||||
+ ]),
|
||||
+ ("/base/dir/etc/pki/tls", ["certs", "private"], []),
|
||||
+ ("/base/dir/etc/pki/tls/certs", [], ["server.crt", "ca-bundle.crt"]),
|
||||
+ ("/base/dir/etc/pki/tls/private", [], ["server.key"]),
|
||||
+ ("/base/dir/etc/pki/rpm-gpg", [], [
|
||||
+ "RPM-GPG-KEY-1",
|
||||
+ "RPM-GPG-KEY-2",
|
||||
+ ]),
|
||||
+ ]
|
||||
+ monkeypatch.setattr(os, 'walk', lambda _: fake_walk)
|
||||
+ logger = logger_mocked()
|
||||
+ monkeypatch.setattr(api, 'current_logger', logger)
|
||||
+
|
||||
+ class _MockContext():
|
||||
+
|
||||
+ def __init__(self, owned):
|
||||
+ self.base_dir = '/base/dir'
|
||||
+ # list of files owned, no base_dir prefixed
|
||||
+ self.owned = owned
|
||||
+
|
||||
+ def full_path(self, path):
|
||||
+ return os.path.join(self.base_dir, os.path.abspath(path).lstrip('/'))
|
||||
+
|
||||
+ def call(self, cmd):
|
||||
+ assert len(cmd) == 3 and cmd[0] == 'rpm' and cmd[1] == '-qf'
|
||||
+ if cmd[2] in self.owned:
|
||||
+ return {'exit_code': 0}
|
||||
+ raise CalledProcessError("Command failed with exit code 1", cmd, 1)
|
||||
+
|
||||
+ search_dir = '/etc/pki'
|
||||
+ owned = [
|
||||
+ 'tls/certs/ca-bundle.crt',
|
||||
+ 'ca-trust/extracted/openssl/ca-bundle.trust.crt',
|
||||
+ 'rpm-gpg/RPM-GPG-KEY-1',
|
||||
+ 'rpm-gpg/RPM-GPG-KEY-2',
|
||||
+ 'ca-trust/extracted/pem/directory-hash/a94d09e5.0',
|
||||
+ 'ca-trust/extracted/pem/directory-hash/a94d09e5.0',
|
||||
+ ]
|
||||
+ # the rpm -qf call happens with the full path
|
||||
+ owned_fullpath = [os.path.join(search_dir, f) for f in owned]
|
||||
+ context = _MockContext(owned_fullpath)
|
||||
+
|
||||
+ out = userspacegen._get_files_owned_by_rpms(context, '/etc/pki', recursive=True)
|
||||
+
|
||||
+ # any directory-hash directory should be skipped
|
||||
+ assert sorted(owned[0:4]) == sorted(out)
|
||||
+
|
||||
+ def has_dbgmsg(substr):
|
||||
+ return any([substr in log for log in logger.dbgmsg])
|
||||
+
|
||||
+ # test a few
|
||||
+ assert has_dbgmsg(
|
||||
+ "SKIP files in the /base/dir/etc/pki/ca-trust/extracted/pem/directory-hash directory:"
|
||||
+ " Not important for the IPU.",
|
||||
+ )
|
||||
+ assert has_dbgmsg('SKIP the tls/certs/server.crt file: not owned by any rpm')
|
||||
+ assert has_dbgmsg('Found the file owned by an rpm: rpm-gpg/RPM-GPG-KEY-2.')
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From b9d7e965ee1e45f93e8250c0eda1e5b4968ecc34 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Fri, 11 Jul 2025 18:25:50 +0200
|
||||
Subject: [PATCH 55/66] fixup! Add test
|
||||
|
||||
---
|
||||
.../tests/unit_test_targetuserspacecreator.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py b/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
|
||||
index 219cb7c3..15db2570 100644
|
||||
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
|
||||
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
|
||||
@@ -1229,7 +1229,7 @@ def test_perform_ok(monkeypatch):
|
||||
|
||||
|
||||
def test__get_files_owned_by_rpms(monkeypatch):
|
||||
- # this is not necessarily accurate, but close enoguh
|
||||
+ # this is not necessarily accurate, but close enough
|
||||
fake_walk = [
|
||||
("/base/dir/etc/pki", ["ca-trust", "tls", "rpm-gpg"], []),
|
||||
("/base/dir/etc/pki/ca-trust", ["extracted", "source"], []),
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,110 +0,0 @@
|
||||
From 803aebd0edffb088181f99d0a4024231a7be942c Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Mon, 14 Jul 2025 11:15:15 +0200
|
||||
Subject: [PATCH 56/66] Add test for non-recursive
|
||||
|
||||
---
|
||||
.../tests/unit_test_targetuserspacecreator.py | 67 +++++++++++++------
|
||||
1 file changed, 47 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py b/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
|
||||
index 15db2570..267c064e 100644
|
||||
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
|
||||
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/tests/unit_test_targetuserspacecreator.py
|
||||
@@ -1228,7 +1228,45 @@ def test_perform_ok(monkeypatch):
|
||||
assert isinstance(userspacegen.api.produce.model_instances[2], models.TargetUserSpaceInfo)
|
||||
|
||||
|
||||
+class _MockContext():
|
||||
+
|
||||
+ def __init__(self, base_dir, owned_by_rpms):
|
||||
+ self.base_dir = base_dir
|
||||
+ # list of files owned, no base_dir prefixed
|
||||
+ self.owned_by_rpms = owned_by_rpms
|
||||
+
|
||||
+ def full_path(self, path):
|
||||
+ return os.path.join(self.base_dir, os.path.abspath(path).lstrip('/'))
|
||||
+
|
||||
+ def call(self, cmd):
|
||||
+ assert len(cmd) == 3 and cmd[0] == 'rpm' and cmd[1] == '-qf'
|
||||
+ if cmd[2] in self.owned_by_rpms:
|
||||
+ return {'exit_code': 0}
|
||||
+ raise CalledProcessError("Command failed with exit code 1", cmd, 1)
|
||||
+
|
||||
+
|
||||
def test__get_files_owned_by_rpms(monkeypatch):
|
||||
+
|
||||
+ def listdir_mocked(path):
|
||||
+ assert path == '/base/dir/some/path'
|
||||
+ return ['fileA', 'fileB.txt', 'test.log', 'script.sh']
|
||||
+
|
||||
+ monkeypatch.setattr(os, 'listdir', listdir_mocked)
|
||||
+ logger = logger_mocked()
|
||||
+ monkeypatch.setattr(api, 'current_logger', logger)
|
||||
+
|
||||
+ search_dir = '/some/path'
|
||||
+ # output doesn't include full paths
|
||||
+ owned = ['fileA', 'script.sh']
|
||||
+ # but the rpm -qf call happens with the full path
|
||||
+ owned_fullpath = [os.path.join(search_dir, f) for f in owned]
|
||||
+ context = _MockContext('/base/dir', owned_fullpath)
|
||||
+
|
||||
+ out = userspacegen._get_files_owned_by_rpms(context, '/some/path', recursive=False)
|
||||
+ assert sorted(owned) == sorted(out)
|
||||
+
|
||||
+
|
||||
+def test__get_files_owned_by_rpms_recursive(monkeypatch):
|
||||
# this is not necessarily accurate, but close enough
|
||||
fake_walk = [
|
||||
("/base/dir/etc/pki", ["ca-trust", "tls", "rpm-gpg"], []),
|
||||
@@ -1250,27 +1288,17 @@ def test__get_files_owned_by_rpms(monkeypatch):
|
||||
"RPM-GPG-KEY-2",
|
||||
]),
|
||||
]
|
||||
- monkeypatch.setattr(os, 'walk', lambda _: fake_walk)
|
||||
- logger = logger_mocked()
|
||||
- monkeypatch.setattr(api, 'current_logger', logger)
|
||||
|
||||
- class _MockContext():
|
||||
+ def walk_mocked(path):
|
||||
+ assert path == '/base/dir/etc/pki'
|
||||
+ return fake_walk
|
||||
|
||||
- def __init__(self, owned):
|
||||
- self.base_dir = '/base/dir'
|
||||
- # list of files owned, no base_dir prefixed
|
||||
- self.owned = owned
|
||||
-
|
||||
- def full_path(self, path):
|
||||
- return os.path.join(self.base_dir, os.path.abspath(path).lstrip('/'))
|
||||
-
|
||||
- def call(self, cmd):
|
||||
- assert len(cmd) == 3 and cmd[0] == 'rpm' and cmd[1] == '-qf'
|
||||
- if cmd[2] in self.owned:
|
||||
- return {'exit_code': 0}
|
||||
- raise CalledProcessError("Command failed with exit code 1", cmd, 1)
|
||||
+ monkeypatch.setattr(os, 'walk', walk_mocked)
|
||||
+ logger = logger_mocked()
|
||||
+ monkeypatch.setattr(api, 'current_logger', logger)
|
||||
|
||||
search_dir = '/etc/pki'
|
||||
+ # output doesn't include full paths
|
||||
owned = [
|
||||
'tls/certs/ca-bundle.crt',
|
||||
'ca-trust/extracted/openssl/ca-bundle.trust.crt',
|
||||
@@ -1281,10 +1309,9 @@ def test__get_files_owned_by_rpms(monkeypatch):
|
||||
]
|
||||
# the rpm -qf call happens with the full path
|
||||
owned_fullpath = [os.path.join(search_dir, f) for f in owned]
|
||||
- context = _MockContext(owned_fullpath)
|
||||
-
|
||||
- out = userspacegen._get_files_owned_by_rpms(context, '/etc/pki', recursive=True)
|
||||
+ context = _MockContext('/base/dir', owned_fullpath)
|
||||
|
||||
+ out = userspacegen._get_files_owned_by_rpms(context, search_dir, recursive=True)
|
||||
# any directory-hash directory should be skipped
|
||||
assert sorted(owned[0:4]) == sorted(out)
|
||||
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,176 +0,0 @@
|
||||
From 7c5d7f711d92fffac5567fd4b31bd6df4d24f1f9 Mon Sep 17 00:00:00 2001
|
||||
From: Ales Nezbeda <anezbeda@redhat.com>
|
||||
Date: Wed, 16 Jul 2025 11:58:47 +0200
|
||||
Subject: [PATCH 57/66] el8to9: actors: mysql: Add MySQL actor with
|
||||
recommendations (#1335)
|
||||
|
||||
Introduce a new mysql_check actor which checks for presence of the
|
||||
mysql_server package and reports related recommendations for upgrade.
|
||||
|
||||
Jira: RHEL-5459
|
||||
---
|
||||
.../el8toel9/actors/mysqlcheck/actor.py | 20 ++++++
|
||||
.../actors/mysqlcheck/libraries/mysqlcheck.py | 51 +++++++++++++++
|
||||
.../mysqlcheck/tests/test_mysqlcheck.py | 65 +++++++++++++++++++
|
||||
3 files changed, 136 insertions(+)
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/mysqlcheck/actor.py
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/mysqlcheck/libraries/mysqlcheck.py
|
||||
create mode 100644 repos/system_upgrade/el8toel9/actors/mysqlcheck/tests/test_mysqlcheck.py
|
||||
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/mysqlcheck/actor.py b/repos/system_upgrade/el8toel9/actors/mysqlcheck/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..d675d75c
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/mysqlcheck/actor.py
|
||||
@@ -0,0 +1,20 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.actor.mysqlcheck import process
|
||||
+from leapp.models import DistributionSignedRPM, Report
|
||||
+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag
|
||||
+
|
||||
+
|
||||
+class MySQLCheck(Actor):
|
||||
+ """
|
||||
+ Actor checking for presence of MySQL installation.
|
||||
+
|
||||
+ Provides user with information related to upgrading systems
|
||||
+ with MySQL installed.
|
||||
+ """
|
||||
+ name = 'mysql_check'
|
||||
+ consumes = (DistributionSignedRPM,)
|
||||
+ produces = (Report,)
|
||||
+ tags = (ChecksPhaseTag, IPUWorkflowTag)
|
||||
+
|
||||
+ def process(self):
|
||||
+ process()
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/mysqlcheck/libraries/mysqlcheck.py b/repos/system_upgrade/el8toel9/actors/mysqlcheck/libraries/mysqlcheck.py
|
||||
new file mode 100644
|
||||
index 00000000..b446d9c4
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/mysqlcheck/libraries/mysqlcheck.py
|
||||
@@ -0,0 +1,51 @@
|
||||
+from leapp import reporting
|
||||
+from leapp.libraries.common.rpms import has_package
|
||||
+from leapp.models import DistributionSignedRPM
|
||||
+
|
||||
+
|
||||
+def _report_server_installed():
|
||||
+ """
|
||||
+ Create report on mysql-server package installation detection.
|
||||
+
|
||||
+ Should remind user about present MySQL server package
|
||||
+ installation, warn them about necessary additional steps, and
|
||||
+ redirect them to online documentation for the upgrade process.
|
||||
+ """
|
||||
+ reporting.create_report([
|
||||
+ reporting.Title('Further action to upgrade MySQL might be needed'),
|
||||
+ reporting.Summary(
|
||||
+ 'The MySQL server component will be reinstalled during the upgrade with a RHEL 9'
|
||||
+ ' version. Since RHEL 9 includes the same MySQL version 8.0 by default, no action'
|
||||
+ ' should be required and there should not be any compatibility issues. However,'
|
||||
+ ' it is still advisable to follow the documentation on this topic for up to date'
|
||||
+ ' recommendations.'
|
||||
+ ' Keep in mind that MySQL 8.0, which is the default in RHEL 9, will reach the end'
|
||||
+ ' of \'Extended Support\' in April 2026. As such it is advisable to upgrade to'
|
||||
+ ' MySQL version 8.4, which is provided via a module. MySQL 8.4 is also the'
|
||||
+ ' default version for RHEL 10, therefore having MySQL 8.4 on the RHEL 9 system'
|
||||
+ ' will make a future upgrade process to RHEL 10 smoother.'
|
||||
+ ),
|
||||
+ reporting.Severity(reporting.Severity.MEDIUM),
|
||||
+ reporting.Groups([reporting.Groups.SERVICES]),
|
||||
+ reporting.ExternalLink(title='Migrating MySQL databases from RHEL 8 to RHEL 9',
|
||||
+ url='https://access.redhat.com/articles/7099753'),
|
||||
+ reporting.RelatedResource('package', 'mysql-server'),
|
||||
+ reporting.Remediation(hint=(
|
||||
+ 'Dump or backup your data before proceeding with the upgrade '
|
||||
+ 'and consult attached article '
|
||||
+ '\'Migrating MySQL databases from RHEL 8 to RHEL 9\' '
|
||||
+ 'with up to date recommended steps before and after the upgrade.'
|
||||
+ )),
|
||||
+ ])
|
||||
+
|
||||
+
|
||||
+def process():
|
||||
+ """
|
||||
+ Create reports according to detected MySQL packages.
|
||||
+
|
||||
+ Create the report if the mysql-server rpm (RH signed) is installed.
|
||||
+ """
|
||||
+ has_server = has_package(DistributionSignedRPM, 'mysql-server')
|
||||
+
|
||||
+ if has_server:
|
||||
+ _report_server_installed()
|
||||
diff --git a/repos/system_upgrade/el8toel9/actors/mysqlcheck/tests/test_mysqlcheck.py b/repos/system_upgrade/el8toel9/actors/mysqlcheck/tests/test_mysqlcheck.py
|
||||
new file mode 100644
|
||||
index 00000000..385f4dfd
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el8toel9/actors/mysqlcheck/tests/test_mysqlcheck.py
|
||||
@@ -0,0 +1,65 @@
|
||||
+import pytest
|
||||
+
|
||||
+from leapp import reporting
|
||||
+from leapp.libraries.actor.mysqlcheck import process
|
||||
+from leapp.libraries.common.testutils import create_report_mocked, CurrentActorMocked
|
||||
+from leapp.libraries.stdlib import api
|
||||
+from leapp.models import DistributionSignedRPM, RPM
|
||||
+
|
||||
+
|
||||
+def _generate_rpm_with_name(name):
|
||||
+ """
|
||||
+ Generate new RPM model item with given name.
|
||||
+
|
||||
+ Parameters:
|
||||
+ name (str): rpm name
|
||||
+
|
||||
+ Returns:
|
||||
+ rpm (RPM): new RPM object with name parameter set
|
||||
+ """
|
||||
+ 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. <http://bugzilla.redhat.com/bugzilla>',
|
||||
+ arch='noarch')
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize('has_server', [
|
||||
+ (True), # with server
|
||||
+ (False), # without server
|
||||
+])
|
||||
+def test_actor_execution(monkeypatch, has_server):
|
||||
+ """
|
||||
+ Parametrized helper function for test_actor_* functions.
|
||||
+
|
||||
+ First generate list of RPM models based on set arguments. Then, run
|
||||
+ the actor fed with our RPM list. Finally, assert Reports
|
||||
+ according to set arguments.
|
||||
+
|
||||
+ Parameters:
|
||||
+ has_server (bool): mysql-server installed
|
||||
+ """
|
||||
+
|
||||
+ # Couple of random packages
|
||||
+ rpms = [_generate_rpm_with_name('sed'),
|
||||
+ _generate_rpm_with_name('htop')]
|
||||
+
|
||||
+ if has_server:
|
||||
+ # Add mysql-server
|
||||
+ rpms += [_generate_rpm_with_name('mysql-server')]
|
||||
+
|
||||
+ curr_actor_mocked = CurrentActorMocked(msgs=[DistributionSignedRPM(items=rpms)])
|
||||
+ monkeypatch.setattr(api, 'current_actor', curr_actor_mocked)
|
||||
+ monkeypatch.setattr(reporting, "create_report", create_report_mocked())
|
||||
+
|
||||
+ # Executed actor fed with fake RPMs
|
||||
+ process()
|
||||
+
|
||||
+ if has_server:
|
||||
+ # Assert for mysql-server package installed
|
||||
+ assert reporting.create_report.called == 1
|
||||
+ else:
|
||||
+ # Assert for no mysql packages installed
|
||||
+ assert not reporting.create_report.called
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,176 +0,0 @@
|
||||
From ce71a44ffd1965330813c15056b5e58e50217108 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Matuska <mmatuska@redhat.com>
|
||||
Date: Wed, 2 Jul 2025 16:36:55 +0200
|
||||
Subject: [PATCH 58/66] Fix target version format checks
|
||||
|
||||
Currently only the format of a version specified by
|
||||
LEAPP_DEVEL_TARGET_RELEASE is checked, when specified via --target
|
||||
cmdline argument it isn't, which is a bug.
|
||||
|
||||
This patch fixes the bug, by enabling the check for --target too.
|
||||
|
||||
NOTE: these are only format checks, the state of support is already
|
||||
checked later in the upgrade process by the checktargetversion actor.
|
||||
|
||||
Jira: RHEL-96238
|
||||
---
|
||||
commands/command_utils.py | 28 +++++++++------
|
||||
commands/tests/test_upgrade_paths.py | 54 +++++++++++++++++++---------
|
||||
commands/upgrade/util.py | 4 +--
|
||||
3 files changed, 57 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/commands/command_utils.py b/commands/command_utils.py
|
||||
index 155bacad..e6ba6ba4 100644
|
||||
--- a/commands/command_utils.py
|
||||
+++ b/commands/command_utils.py
|
||||
@@ -59,7 +59,9 @@ def assert_version_format(version_str, desired_format, version_kind):
|
||||
:raises: CommandError
|
||||
"""
|
||||
if not re.match(desired_format.regex, version_str):
|
||||
- error_str = 'Unexpected format of target version: {0}. The required format is \'{1}\'.'
|
||||
+ error_str = (
|
||||
+ 'Unexpected format of target version: {0}. The required format is \'{1}\'.'
|
||||
+ )
|
||||
raise CommandError(error_str.format(version_str, desired_format.human_readable))
|
||||
|
||||
|
||||
@@ -182,26 +184,32 @@ def get_target_version(flavour):
|
||||
return target_versions[-1] if target_versions else None
|
||||
|
||||
|
||||
-def vet_upgrade_path(args):
|
||||
+def get_target_release(args):
|
||||
"""
|
||||
- Make sure the user requested upgrade_path is a supported one.
|
||||
- If LEAPP_DEVEL_TARGET_RELEASE is set then it's value is not vetted against upgrade_paths_map but used as is.
|
||||
+ Return the user selected target release or choose one from config.
|
||||
+
|
||||
+ A target release can be specified, ordered by priority, by the
|
||||
+ LEAPP_DEVEL_TARGET_RELEASE or args.target (--target cmdline arg) or in the
|
||||
+ config file.
|
||||
+
|
||||
+ NOTE: when specified via the env var or cmdline arg, the version isn't
|
||||
+ checked against supported versions, this is done later by an actor in the
|
||||
+ upgrade process.
|
||||
|
||||
:return: `tuple` (target_release, flavor)
|
||||
"""
|
||||
flavor = get_upgrade_flavour()
|
||||
env_version_override = os.getenv('LEAPP_DEVEL_TARGET_RELEASE')
|
||||
|
||||
- if env_version_override:
|
||||
+ target_ver = env_version_override or args.target
|
||||
+ if target_ver:
|
||||
os_release_contents = _retrieve_os_release_contents()
|
||||
distro_id = os_release_contents.get('ID', '')
|
||||
expected_version_format = _DISTRO_VERSION_FORMATS.get(distro_id, VersionFormats.MAJOR_MINOR).value
|
||||
- assert_version_format(env_version_override, expected_version_format, _VersionKind.TARGET)
|
||||
-
|
||||
- return (env_version_override, flavor)
|
||||
+ assert_version_format(target_ver, expected_version_format, _VersionKind.TARGET)
|
||||
+ return (target_ver, flavor)
|
||||
|
||||
- target_release = args.target or get_target_version(flavor)
|
||||
- return (target_release, flavor)
|
||||
+ return (get_target_version(flavor), flavor)
|
||||
|
||||
|
||||
def set_resource_limits():
|
||||
diff --git a/commands/tests/test_upgrade_paths.py b/commands/tests/test_upgrade_paths.py
|
||||
index c2cb09aa..89b5eb71 100644
|
||||
--- a/commands/tests/test_upgrade_paths.py
|
||||
+++ b/commands/tests/test_upgrade_paths.py
|
||||
@@ -1,3 +1,4 @@
|
||||
+import os
|
||||
import resource
|
||||
|
||||
import mock
|
||||
@@ -29,34 +30,53 @@ def test_get_target_version(mock_open, monkeypatch):
|
||||
assert command_utils.get_target_version('default') == '9.0'
|
||||
|
||||
|
||||
-@mock.patch("leapp.cli.commands.command_utils.get_upgrade_paths_config",
|
||||
- return_value={"default": {"7.9": ["8.4"], "8.6": ["9.0"], "7": ["8.4"], "8": ["9.0"]}})
|
||||
-def test_vet_upgrade_path(mock_open, monkeypatch):
|
||||
+@mock.patch(
|
||||
+ "leapp.cli.commands.command_utils.get_upgrade_paths_config",
|
||||
+ return_value={
|
||||
+ "default": {
|
||||
+ "7.9": ["8.4"],
|
||||
+ "8.6": ["9.0", "9.2"],
|
||||
+ "7": ["8.4"],
|
||||
+ "8": ["9.0", "9.2"],
|
||||
+ }
|
||||
+ },
|
||||
+)
|
||||
+def test_get_target_release(mock_open, monkeypatch): # do not remove mock_open
|
||||
monkeypatch.setattr(command_utils, 'get_os_release_version_id', lambda x: '8.6')
|
||||
|
||||
# make sure env var LEAPP_DEVEL_TARGET_RELEASE takes precedence
|
||||
- # when env var set to a bad version - abort the upgrade
|
||||
- args = mock.Mock(target='9.0')
|
||||
- monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '1.2badsemver')
|
||||
- with pytest.raises(CommandError) as err:
|
||||
- command_utils.vet_upgrade_path(args)
|
||||
- assert 'Unexpected format of target version' in err
|
||||
- # MAJOR.MINOR.PATCH is considered as bad version, only MAJOR.MINOR is accepted
|
||||
args = mock.Mock(target='9.0')
|
||||
+ monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '9.2')
|
||||
+ print(os.getenv('LEAPP_DEVEL_TARGET_RELEASE'))
|
||||
+ assert command_utils.get_target_release(args) == ('9.2', 'default')
|
||||
+
|
||||
+ # when env var set to a bad version, expect an error
|
||||
monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '9.0.0')
|
||||
with pytest.raises(CommandError) as err:
|
||||
- command_utils.vet_upgrade_path(args)
|
||||
+ command_utils.get_target_release(args)
|
||||
assert 'Unexpected format of target version' in err
|
||||
+
|
||||
# when env var set to a version not in upgrade_paths map - go on and use it
|
||||
+ # this is checked by an actor in the IPU
|
||||
monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '1.2')
|
||||
- assert command_utils.vet_upgrade_path(args) == ('1.2', 'default')
|
||||
- # no env var set, --target is set to proper version
|
||||
+ assert command_utils.get_target_release(args) == ('1.2', 'default')
|
||||
+
|
||||
+ # no env var set, --target is set to proper version - use it
|
||||
+ args = mock.Mock(target='9.0')
|
||||
monkeypatch.delenv('LEAPP_DEVEL_TARGET_RELEASE', raising=False)
|
||||
- assert command_utils.vet_upgrade_path(args) == ('9.0', 'default')
|
||||
- # env var is set to proper version, --target is set to a bad one - use env var and go on with the upgrade
|
||||
+ assert command_utils.get_target_release(args) == ('9.0', 'default')
|
||||
+
|
||||
+ # --target set with incorrectly formatted version, env var not set, fail
|
||||
+ args = mock.Mock(target='9.0a')
|
||||
+ with pytest.raises(CommandError) as err:
|
||||
+ command_utils.get_target_release(args)
|
||||
+ assert 'Unexpected format of target version' in err
|
||||
+
|
||||
+ # env var is set to proper version, --target set to a bad one:
|
||||
+ # env var has priority, use it and go on with the upgrade
|
||||
monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '9.0')
|
||||
- args = mock.Mock(target='1.2')
|
||||
- assert command_utils.vet_upgrade_path(args) == ('9.0', 'default')
|
||||
+ args = mock.Mock(target='9.0.0')
|
||||
+ assert command_utils.get_target_release(args) == ('9.0', 'default')
|
||||
|
||||
|
||||
def _mock_getrlimit_factory(nofile_limits=(1024, 4096), fsize_limits=(1024, 4096)):
|
||||
diff --git a/commands/upgrade/util.py b/commands/upgrade/util.py
|
||||
index b54b0b34..7d5b563e 100644
|
||||
--- a/commands/upgrade/util.py
|
||||
+++ b/commands/upgrade/util.py
|
||||
@@ -253,8 +253,8 @@ def prepare_configuration(args):
|
||||
if args.nogpgcheck:
|
||||
os.environ['LEAPP_NOGPGCHECK'] = '1'
|
||||
|
||||
- # Check upgrade path and fail early if it's unsupported
|
||||
- target_version, flavor = command_utils.vet_upgrade_path(args)
|
||||
+ # Check upgrade path and fail early if it's invalid
|
||||
+ target_version, flavor = command_utils.get_target_release(args)
|
||||
os.environ['LEAPP_UPGRADE_PATH_TARGET_RELEASE'] = target_version
|
||||
os.environ['LEAPP_UPGRADE_PATH_FLAVOUR'] = flavor
|
||||
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,67 +0,0 @@
|
||||
From b8d942afba061255b69fa5c41259d418fb000ad8 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Hecko <mhecko@redhat.com>
|
||||
Date: Sun, 15 Jun 2025 17:11:28 +0200
|
||||
Subject: [PATCH 60/66] libs(rhui): add rhel10 targets for upgrades
|
||||
|
||||
---
|
||||
repos/system_upgrade/common/libraries/rhui.py | 30 +++++++++++++++++++
|
||||
1 file changed, 30 insertions(+)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
|
||||
index 30de0275..e1ab7c67 100644
|
||||
--- a/repos/system_upgrade/common/libraries/rhui.py
|
||||
+++ b/repos/system_upgrade/common/libraries/rhui.py
|
||||
@@ -158,6 +158,17 @@ RHUI_SETUPS = {
|
||||
('cdn.redhat.com-chain.crt', RHUI_PKI_DIR),
|
||||
('content-rhel9.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
], os_version='9'),
|
||||
+ mk_rhui_setup(clients={'rh-amazon-rhui-client'}, leapp_pkg='leapp-rhui-aws',
|
||||
+ mandatory_files=[
|
||||
+ ('rhui-client-config-server-10.crt', RHUI_PKI_PRODUCT_DIR),
|
||||
+ ('rhui-client-config-server-10.key', RHUI_PKI_DIR),
|
||||
+ ('leapp-aws.repo', YUM_REPOS_PATH)
|
||||
+ ],
|
||||
+ optional_files=[
|
||||
+ ('content-rhel10.key', RHUI_PKI_DIR),
|
||||
+ ('cdn.redhat.com-chain.crt', RHUI_PKI_DIR),
|
||||
+ ('content-rhel10.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
+ ], os_version='10'),
|
||||
],
|
||||
RHUIFamily(RHUIProvider.AWS, arch=arch.ARCH_ARM64, client_files_folder='aws'): [
|
||||
mk_rhui_setup(clients={'rh-amazon-rhui-client-arm'}, optional_files=[], os_version='7', arch=arch.ARCH_ARM64),
|
||||
@@ -185,6 +196,17 @@ RHUI_SETUPS = {
|
||||
('cdn.redhat.com-chain.crt', RHUI_PKI_DIR),
|
||||
('content-rhel9.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
], os_version='9', arch=arch.ARCH_ARM64),
|
||||
+ mk_rhui_setup(clients={'rh-amazon-rhui-client'}, leapp_pkg='leapp-rhui-aws',
|
||||
+ mandatory_files=[
|
||||
+ ('rhui-client-config-server-10.crt', RHUI_PKI_PRODUCT_DIR),
|
||||
+ ('rhui-client-config-server-10.key', RHUI_PKI_DIR),
|
||||
+ ('leapp-aws.repo', YUM_REPOS_PATH)
|
||||
+ ],
|
||||
+ optional_files=[
|
||||
+ ('content-rhel10.key', RHUI_PKI_DIR),
|
||||
+ ('cdn.redhat.com-chain.crt', RHUI_PKI_DIR),
|
||||
+ ('content-rhel10.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
+ ], os_version='10'),
|
||||
],
|
||||
RHUIFamily(RHUIProvider.AWS, variant=RHUIVariant.SAP, client_files_folder='aws-sap-e4s'): [
|
||||
mk_rhui_setup(clients={'rh-amazon-rhui-client-sap-bundle'}, optional_files=[], os_version='7',
|
||||
@@ -250,6 +272,14 @@ RHUI_SETUPS = {
|
||||
],
|
||||
extra_info={'agent_pkg': 'WALinuxAgent'},
|
||||
os_version='9'),
|
||||
+ mk_rhui_setup(clients={'rhui-azure-rhel10'}, leapp_pkg='leapp-rhui-azure',
|
||||
+ mandatory_files=[('leapp-azure.repo', YUM_REPOS_PATH)],
|
||||
+ optional_files=[
|
||||
+ ('key.pem', RHUI_PKI_DIR),
|
||||
+ ('content.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
+ ],
|
||||
+ extra_info={'agent_pkg': 'WALinuxAgent'},
|
||||
+ os_version='10'),
|
||||
],
|
||||
RHUIFamily(RHUIProvider.AZURE, variant=RHUIVariant.SAP_APPS, client_files_folder='azure-sap-apps'): [
|
||||
mk_rhui_setup(clients={'rhui-azure-rhel7-base-sap-apps'}, os_version='7', content_channel=ContentChannel.EUS),
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,35 +0,0 @@
|
||||
From 7f9df48b0040499c5de3441f56d1f1ed77667526 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Hecko <mhecko@redhat.com>
|
||||
Date: Sun, 15 Jun 2025 23:39:17 +0200
|
||||
Subject: [PATCH 61/66] userspacegen: do not repolist source & debug repos
|
||||
|
||||
Ignore source/debug repositories when running dnf repolist to check what
|
||||
repositories are available for the upgrade. Should prevent needless
|
||||
crashes when the source/debug repositories are malformed, e.g., when the
|
||||
maintainer forgot to sync their content.
|
||||
---
|
||||
.../targetuserspacecreator/libraries/userspacegen.py | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
index 699f1517..9ec4ecac 100644
|
||||
--- a/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
+++ b/repos/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
|
||||
@@ -929,7 +929,13 @@ def _get_rh_available_repoids(context, indata):
|
||||
os.rename(foreign_repofile, '{0}.back'.format(foreign_repofile))
|
||||
|
||||
try:
|
||||
- dnf_cmd = ['dnf', 'repolist', '--releasever', target_ver, '-v', '--enablerepo', '*']
|
||||
+ dnf_cmd = [
|
||||
+ 'dnf', 'repolist',
|
||||
+ '--releasever', target_ver, '-v',
|
||||
+ '--enablerepo', '*',
|
||||
+ '--disablerepo', '*-source-*',
|
||||
+ '--disablerepo', '*-debug-*',
|
||||
+ ]
|
||||
repolist_result = context.call(dnf_cmd)['stdout']
|
||||
repoid_lines = [line for line in repolist_result.split('\n') if line.startswith('Repo-id')]
|
||||
rhui_repoids = {extract_repoid_from_line(line) for line in repoid_lines}
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,46 +0,0 @@
|
||||
From 24714605538d2e197b0d7a5012528129439b4764 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Hecko <mhecko@redhat.com>
|
||||
Date: Tue, 17 Jun 2025 11:18:33 +0200
|
||||
Subject: [PATCH 62/66] actor(checkrhui): do not boostrap client on AWS 9>10
|
||||
|
||||
The current implementation of the checkrhui actor and its modification
|
||||
of rhui-associated target userspace preparation instructions contains
|
||||
too coarse conditions on what should happen on specific upgrade paths.
|
||||
In other words, changes originally intended only for 8>9 are applied
|
||||
also during 9>10. This patch fixes this issue -- when performing 9>10 on
|
||||
AWS, we do not bootstrap the RHUI client, as it has too many
|
||||
dependencies. Instead, the leapp-rhui-aws package contains all
|
||||
repositories, certs and keys that grant repository access.
|
||||
|
||||
Jira-ref: RHEL-64910
|
||||
---
|
||||
.../actors/cloud/checkrhui/libraries/checkrhui.py | 12 +++++++++---
|
||||
1 file changed, 9 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py b/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py
|
||||
index 64e36e08..ea154173 100644
|
||||
--- a/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py
|
||||
+++ b/repos/system_upgrade/common/actors/cloud/checkrhui/libraries/checkrhui.py
|
||||
@@ -254,10 +254,16 @@ def customize_rhui_setup_for_aws(rhui_family, setup_info):
|
||||
# The leapp-rhui-aws will provide all necessary files to access entire RHEL8 content
|
||||
setup_info.bootstrap_target_client = False
|
||||
return
|
||||
+ if target_version == '9':
|
||||
+ amazon_plugin_copy_task = CopyFile(src='/usr/lib/python3.9/site-packages/dnf-plugins/amazon-id.py',
|
||||
+ dst='/usr/lib/python3.6/site-packages/dnf-plugins/')
|
||||
+ setup_info.postinstall_tasks.files_to_copy.append(amazon_plugin_copy_task)
|
||||
+ return
|
||||
|
||||
- amazon_plugin_copy_task = CopyFile(src='/usr/lib/python3.9/site-packages/dnf-plugins/amazon-id.py',
|
||||
- dst='/usr/lib/python3.6/site-packages/dnf-plugins/')
|
||||
- setup_info.postinstall_tasks.files_to_copy.append(amazon_plugin_copy_task)
|
||||
+ # For 9>10 and higher we give up trying to do client swapping since the client has too many dependencies
|
||||
+ # from target system's repositories. Our leapp-rhui-aws package will carry all of the repos provided
|
||||
+ # by the client.
|
||||
+ setup_info.bootstrap_target_client = False
|
||||
|
||||
|
||||
def produce_rhui_info_to_setup_target(rhui_family, source_setup_desc, target_setup_desc):
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,456 +0,0 @@
|
||||
From d0f6c44acfdd8938c7062deae6a16613af2bb4d1 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Hecko <mhecko@redhat.com>
|
||||
Date: Wed, 2 Jul 2025 22:26:23 +0200
|
||||
Subject: [PATCH 63/66] add azure, aws, alibaba client repositories to
|
||||
repomapping
|
||||
|
||||
Co-Authored-By: jinkangkang.jkk <1547182170@qq.com>
|
||||
---
|
||||
etc/leapp/files/repomap.json | 293 ++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 292 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/etc/leapp/files/repomap.json b/etc/leapp/files/repomap.json
|
||||
index fc0c42f1..0cd5601a 100644
|
||||
--- a/etc/leapp/files/repomap.json
|
||||
+++ b/etc/leapp/files/repomap.json
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
- "datetime": "202505201636Z",
|
||||
+ "datetime": "202507171303Z",
|
||||
"version_format": "1.3.0",
|
||||
"provided_data_streams": [
|
||||
"4.0"
|
||||
@@ -294,6 +294,24 @@
|
||||
"target": [
|
||||
"rhel10-HighAvailability"
|
||||
]
|
||||
+ },
|
||||
+ {
|
||||
+ "source": "rhel9-rhui-client-config-server-9",
|
||||
+ "target": [
|
||||
+ "rhel10-rhui-client-config-server-10"
|
||||
+ ]
|
||||
+ },
|
||||
+ {
|
||||
+ "source": "rhel9-rhui-microsoft-azure-rhel9",
|
||||
+ "target": [
|
||||
+ "rhel10-rhui-microsoft-azure-rhel10"
|
||||
+ ]
|
||||
+ },
|
||||
+ {
|
||||
+ "source": "rhel9-rhui-custom-client-at-alibaba",
|
||||
+ "target": [
|
||||
+ "rhel10-rhui-custom-client-at-alibaba"
|
||||
+ ]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -343,6 +361,15 @@
|
||||
"distro": "rhel",
|
||||
"rhui": "aws"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-baseos-rhui-rpms",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "azure"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-baseos-rhui-rpms",
|
||||
@@ -352,6 +379,15 @@
|
||||
"distro": "rhel",
|
||||
"rhui": "aws"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-baseos-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "azure"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-for-aarch64-baseos-beta-rpms",
|
||||
@@ -456,6 +492,15 @@
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-for-x86_64-baseos-e4s-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "e4s",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "aws"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-for-x86_64-baseos-e4s-rpms",
|
||||
@@ -479,6 +524,24 @@
|
||||
"channel": "ga",
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-rhel-10-for-aarch64-baseos-rhui-rpms",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-rhel-10-for-x86_64-baseos-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -526,6 +589,15 @@
|
||||
"distro": "rhel",
|
||||
"rhui": "aws"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-appstream-rhui-rpms",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "azure"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-appstream-rhui-rpms",
|
||||
@@ -535,6 +607,15 @@
|
||||
"distro": "rhel",
|
||||
"rhui": "aws"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-appstream-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "azure"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-for-aarch64-appstream-beta-rpms",
|
||||
@@ -639,6 +720,15 @@
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-for-x86_64-appstream-e4s-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "e4s",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "aws"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-for-x86_64-appstream-e4s-rpms",
|
||||
@@ -662,6 +752,24 @@
|
||||
"channel": "ga",
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-rhel-10-for-aarch64-appstream-rhui-rpms",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-rhel-10-for-x86_64-appstream-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -741,6 +849,15 @@
|
||||
"distro": "rhel",
|
||||
"rhui": "aws"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "codeready-builder-for-rhel-10-rhui-rpms",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "azure"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "codeready-builder-for-rhel-10-rhui-rpms",
|
||||
@@ -750,6 +867,15 @@
|
||||
"distro": "rhel",
|
||||
"rhui": "aws"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "codeready-builder-for-rhel-10-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "azure"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "codeready-builder-for-rhel-10-s390x-eus-rpms",
|
||||
@@ -813,6 +939,24 @@
|
||||
"channel": "ga",
|
||||
"repo_type": "rpm",
|
||||
"distro": "centos"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-codeready-builder-for-rhel-10-aarch64-rhui-rpms",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-codeready-builder-for-rhel-10-x86_64-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -923,6 +1067,33 @@
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel",
|
||||
"rhui": "aws"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-supplementary-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "azure"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-rhel-10-for-aarch64-supplementary-rhui-rpms",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-rhel-10-for-x86_64-supplementary-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1006,6 +1177,14 @@
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-for-aarch64-nfv-e4s-rpms",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "e4s",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-for-aarch64-nfv-rpms",
|
||||
@@ -1115,6 +1294,15 @@
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-for-x86_64-sap-netweaver-e4s-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "e4s",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "aws"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-for-x86_64-sap-netweaver-e4s-rpms",
|
||||
@@ -1160,6 +1348,15 @@
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-for-x86_64-sap-solutions-e4s-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "e4s",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "aws"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-for-x86_64-sap-solutions-e4s-rpms",
|
||||
@@ -1317,6 +1514,15 @@
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhel-10-for-x86_64-highavailability-e4s-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "e4s",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "aws"
|
||||
+ },
|
||||
{
|
||||
"major_version": "10",
|
||||
"repoid": "rhel-10-for-x86_64-highavailability-e4s-rpms",
|
||||
@@ -1340,6 +1546,75 @@
|
||||
"channel": "ga",
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-rhel-10-for-x86_64-highavailability-rhui-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
+ }
|
||||
+ ]
|
||||
+ },
|
||||
+ {
|
||||
+ "pesid": "rhel10-rhui-microsoft-azure-rhel10",
|
||||
+ "entries": [
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-microsoft-azure-rhel10",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "azure"
|
||||
+ }
|
||||
+ ]
|
||||
+ },
|
||||
+ {
|
||||
+ "pesid": "rhel10-rhui-client-config-server-10",
|
||||
+ "entries": [
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-client-config-server-10",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "aws"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-client-config-server-10",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "aws"
|
||||
+ }
|
||||
+ ]
|
||||
+ },
|
||||
+ {
|
||||
+ "pesid": "rhel10-rhui-custom-client-at-alibaba",
|
||||
+ "entries": [
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-custom-rhui_client_at_alibaba-rhel-10",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
+ },
|
||||
+ {
|
||||
+ "major_version": "10",
|
||||
+ "repoid": "rhui-custom-rhui_client_at_alibaba-rhel-10",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "ga",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel",
|
||||
+ "rhui": "alibaba"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -5228,6 +5503,14 @@
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "9",
|
||||
+ "repoid": "rhel-9-for-aarch64-nfv-e4s-rpms",
|
||||
+ "arch": "aarch64",
|
||||
+ "channel": "e4s",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel"
|
||||
+ },
|
||||
{
|
||||
"major_version": "9",
|
||||
"repoid": "rhel-9-for-aarch64-nfv-rpms",
|
||||
@@ -5594,6 +5877,14 @@
|
||||
"repo_type": "rpm",
|
||||
"distro": "rhel"
|
||||
},
|
||||
+ {
|
||||
+ "major_version": "9",
|
||||
+ "repoid": "rhel-9-for-x86_64-highavailability-aus-rpms",
|
||||
+ "arch": "x86_64",
|
||||
+ "channel": "aus",
|
||||
+ "repo_type": "rpm",
|
||||
+ "distro": "rhel"
|
||||
+ },
|
||||
{
|
||||
"major_version": "9",
|
||||
"repoid": "rhel-9-for-x86_64-highavailability-beta-rpms",
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,36 +0,0 @@
|
||||
From 08196d4533c51b9f9d7d45d90ca0bad8b0ef697d Mon Sep 17 00:00:00 2001
|
||||
From: Michal Hecko <mhecko@redhat.com>
|
||||
Date: Fri, 4 Jul 2025 14:05:48 +0200
|
||||
Subject: [PATCH 64/66] rhui(azure): add target client's GPG key to mandatory
|
||||
files
|
||||
|
||||
The RHEL10's Azure RHUI client is signed using a different GPG
|
||||
key than RHEL9 client. Therefore, we need to have the key available
|
||||
when we try to bootstrap the RHEL10 client during the upgrade.
|
||||
|
||||
Jira-ref: RHEL-64911
|
||||
---
|
||||
repos/system_upgrade/common/libraries/rhui.py | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
|
||||
index e1ab7c67..1e3b5359 100644
|
||||
--- a/repos/system_upgrade/common/libraries/rhui.py
|
||||
+++ b/repos/system_upgrade/common/libraries/rhui.py
|
||||
@@ -273,7 +273,12 @@ RHUI_SETUPS = {
|
||||
extra_info={'agent_pkg': 'WALinuxAgent'},
|
||||
os_version='9'),
|
||||
mk_rhui_setup(clients={'rhui-azure-rhel10'}, leapp_pkg='leapp-rhui-azure',
|
||||
- mandatory_files=[('leapp-azure.repo', YUM_REPOS_PATH)],
|
||||
+ mandatory_files=[
|
||||
+ ('leapp-azure.repo', YUM_REPOS_PATH),
|
||||
+ # We need to have the new GPG key ready when we will be bootstrapping
|
||||
+ # target rhui client.
|
||||
+ ('RPM-GPG-KEY-microsoft-azure-release-new', '/etc/pki/rpm-gpg/')
|
||||
+ ],
|
||||
optional_files=[
|
||||
('key.pem', RHUI_PKI_DIR),
|
||||
('content.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,77 +0,0 @@
|
||||
From 7468b10c32367d11a098c4f10390c18ec55720e1 Mon Sep 17 00:00:00 2001
|
||||
From: "jinkangkang.jkk" <jinkangkang.jkk@alibaba-inc.com>
|
||||
Date: Mon, 16 Jun 2025 20:26:45 +0800
|
||||
Subject: [PATCH 65/66] feat(alibaba): support rhel9 upgrade to rhel10 using
|
||||
rhui on alibaba cloud
|
||||
|
||||
---
|
||||
repos/system_upgrade/common/libraries/rhui.py | 32 +++++++++++++++++--
|
||||
1 file changed, 30 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/repos/system_upgrade/common/libraries/rhui.py b/repos/system_upgrade/common/libraries/rhui.py
|
||||
index 1e3b5359..b3225d5f 100644
|
||||
--- a/repos/system_upgrade/common/libraries/rhui.py
|
||||
+++ b/repos/system_upgrade/common/libraries/rhui.py
|
||||
@@ -383,6 +383,13 @@ RHUI_SETUPS = {
|
||||
('content.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
],
|
||||
os_version='9'),
|
||||
+ mk_rhui_setup(clients={'aliyun_rhui_rhel10'}, leapp_pkg='leapp-rhui-alibaba',
|
||||
+ mandatory_files=[('leapp-alibaba.repo', YUM_REPOS_PATH)],
|
||||
+ optional_files=[
|
||||
+ ('key.pem', RHUI_PKI_DIR),
|
||||
+ ('content.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
+ ],
|
||||
+ os_version='10'),
|
||||
],
|
||||
RHUIFamily(RHUIProvider.ALIBABA, arch=arch.ARCH_ARM64, client_files_folder='alibaba'): [
|
||||
mk_rhui_setup(clients={'aliyun_rhui_rhel8'}, leapp_pkg='leapp-rhui-alibaba',
|
||||
@@ -399,6 +406,13 @@ RHUI_SETUPS = {
|
||||
('content.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
],
|
||||
os_version='9'),
|
||||
+ mk_rhui_setup(clients={'aliyun_rhui_rhel10'}, leapp_pkg='leapp-rhui-alibaba',
|
||||
+ mandatory_files=[('leapp-alibaba.repo', YUM_REPOS_PATH)],
|
||||
+ optional_files=[
|
||||
+ ('key.pem', RHUI_PKI_DIR),
|
||||
+ ('content.crt', RHUI_PKI_PRODUCT_DIR)
|
||||
+ ],
|
||||
+ os_version='10'),
|
||||
]
|
||||
}
|
||||
|
||||
@@ -601,15 +615,29 @@ RHUI_CLOUD_MAP = {
|
||||
],
|
||||
},
|
||||
},
|
||||
+ '9to10': {
|
||||
+ 'alibaba': {
|
||||
+ 'src_pkg': 'aliyun_rhui_rhel9',
|
||||
+ 'target_pkg': 'aliyun_rhui_rhel10',
|
||||
+ 'leapp_pkg': 'leapp-rhui-alibaba',
|
||||
+ 'leapp_pkg_repo': 'leapp-alibaba.repo',
|
||||
+ 'files_map': [
|
||||
+ ('content.crt', RHUI_PKI_PRODUCT_DIR),
|
||||
+ ('key.pem', RHUI_PKI_DIR),
|
||||
+ ('leapp-alibaba.repo', YUM_REPOS_PATH)
|
||||
+ ],
|
||||
+ },
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
-# TODO(mmatuska) deprecate or adjust for 9to10?
|
||||
def get_upg_path():
|
||||
"""
|
||||
Get upgrade path in specific string format
|
||||
"""
|
||||
- return '7to8' if get_target_major_version() == '8' else '8to9'
|
||||
+ source_major_version = get_source_major_version()
|
||||
+ target_major_version = get_target_major_version()
|
||||
+ return '{0}to{1}'.format(source_major_version, target_major_version)
|
||||
|
||||
|
||||
@deprecated(since='2023-07-27', message='This functionality has been replaced with the RHUIInfo message.')
|
||||
--
|
||||
2.50.1
|
||||
|
@ -1,203 +0,0 @@
|
||||
From 3356c045fe2982f3a26b26b46258398b490a6d67 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Matej=20Matu=C5=A1ka?= <mmatuska@redhat.com>
|
||||
Date: Thu, 17 Jul 2025 14:33:55 +0200
|
||||
Subject: [PATCH 66/66] Inhibit upgrade on systems with cgroupsv1 on 9to10
|
||||
(#1392)
|
||||
|
||||
* Inhibit upgrade on systems with cgroupsv1 on 9to10
|
||||
|
||||
cgroups-v1 were deprecated in RHEL 9 and are unsupported in RHEL 10. The
|
||||
option to switch to cgroups-v1 is ignored. Users have to migrate to
|
||||
cgroups-v2 in order to upgrade.
|
||||
|
||||
Both legacy and hybrid modes are unsupported. Only unified hierarchy
|
||||
(cgroups-v2) is supported. More info on how the modes are switched is
|
||||
at:
|
||||
https://www.freedesktop.org/software/systemd/man/247/systemd.html#systemd.unified_cgroup_hierarchy
|
||||
and
|
||||
https://www.freedesktop.org/software/systemd/man/247/systemd.html#systemd.legacy_systemd_cgroup_controller.
|
||||
|
||||
Jira: RHEL-81212
|
||||
---
|
||||
.../actors/inhibitcgroupsv1/actor.py | 23 ++++++
|
||||
.../libraries/inhibitcgroupsv1.py | 56 ++++++++++++++
|
||||
.../tests/test_inhibitcgroupsv1.py | 74 +++++++++++++++++++
|
||||
3 files changed, 153 insertions(+)
|
||||
create mode 100644 repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/actor.py
|
||||
create mode 100644 repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/libraries/inhibitcgroupsv1.py
|
||||
create mode 100644 repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/tests/test_inhibitcgroupsv1.py
|
||||
|
||||
diff --git a/repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/actor.py b/repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/actor.py
|
||||
new file mode 100644
|
||||
index 00000000..7a3e4be4
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/actor.py
|
||||
@@ -0,0 +1,23 @@
|
||||
+from leapp.actors import Actor
|
||||
+from leapp.libraries.actor import inhibitcgroupsv1
|
||||
+from leapp.models import KernelCmdline
|
||||
+from leapp.reporting import Report
|
||||
+from leapp.tags import ChecksPhaseTag, IPUWorkflowTag
|
||||
+
|
||||
+
|
||||
+class InhibitCgroupsv1(Actor):
|
||||
+ """
|
||||
+ Inhibit upgrade if cgroups-v1 are enabled
|
||||
+
|
||||
+ Support for cgroups-v1 was deprecated in RHEL 9 and removed in RHEL 10.
|
||||
+ Both legacy and hybrid modes are unsupported, only the unified cgroup
|
||||
+ hierarchy (cgroups-v2) is supported.
|
||||
+ """
|
||||
+
|
||||
+ name = "inhibit_cgroupsv1"
|
||||
+ consumes = (KernelCmdline,)
|
||||
+ produces = (Report,)
|
||||
+ tags = (ChecksPhaseTag, IPUWorkflowTag)
|
||||
+
|
||||
+ def process(self):
|
||||
+ inhibitcgroupsv1.process()
|
||||
diff --git a/repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/libraries/inhibitcgroupsv1.py b/repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/libraries/inhibitcgroupsv1.py
|
||||
new file mode 100644
|
||||
index 00000000..6c891f22
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/libraries/inhibitcgroupsv1.py
|
||||
@@ -0,0 +1,56 @@
|
||||
+from leapp import reporting
|
||||
+from leapp.exceptions import StopActorExecutionError
|
||||
+from leapp.libraries.stdlib import api
|
||||
+from leapp.models import KernelCmdline
|
||||
+
|
||||
+
|
||||
+def process():
|
||||
+ kernel_cmdline = next(api.consume(KernelCmdline), None)
|
||||
+ if not kernel_cmdline:
|
||||
+ # really unlikely
|
||||
+ raise StopActorExecutionError("Did not receive any KernelCmdline messages.")
|
||||
+
|
||||
+ unified_hierarchy = True # default since RHEL 9
|
||||
+ legacy_controller_present = False
|
||||
+ for param in kernel_cmdline.parameters:
|
||||
+ if param.key == "systemd.unified_cgroup_hierarchy":
|
||||
+ if param.value is not None and param.value.lower() in ("0", "false", "no"):
|
||||
+ unified_hierarchy = False
|
||||
+ if param.key == "systemd.legacy_systemd_cgroup_controller":
|
||||
+ # no matter the value, it should be removed
|
||||
+ # it has no effect when unified hierarchy is enabled
|
||||
+ legacy_controller_present = True
|
||||
+
|
||||
+ if unified_hierarchy:
|
||||
+ api.current_logger().debug("cgroups-v2 already in use, nothing to do, skipping.")
|
||||
+ return
|
||||
+
|
||||
+ remediation_cmd_args = ["systemd.unified_cgroup_hierarchy"]
|
||||
+ if legacy_controller_present:
|
||||
+ remediation_cmd_args.append('systemd.legacy_systemd_cgroup_controller')
|
||||
+
|
||||
+ summary = (
|
||||
+ "Leapp detected cgroups-v1 is enabled on the system."
|
||||
+ " The support of cgroups-v1 was deprecated in RHEL 9 and is removed in RHEL 10."
|
||||
+ " Software requiring cgroups-v1 might not work correctly or at all on RHEL 10."
|
||||
+ )
|
||||
+ reporting.create_report(
|
||||
+ [
|
||||
+ reporting.Title("cgroups-v1 enabled on the system"),
|
||||
+ reporting.Summary(summary),
|
||||
+ reporting.Severity(reporting.Severity.HIGH),
|
||||
+ reporting.Groups([reporting.Groups.INHIBITOR, reporting.Groups.KERNEL]),
|
||||
+ reporting.RelatedResource("package", "systemd"),
|
||||
+ reporting.Remediation(
|
||||
+ hint="Make sure no third party software requires cgroups-v1 and switch to cgroups-v2.",
|
||||
+ # remove the args from commandline, the defaults are the desired values
|
||||
+ commands=[
|
||||
+ [
|
||||
+ "grubby",
|
||||
+ "--update-kernel=ALL",
|
||||
+ '--remove-args="{}"'.format(",".join(remediation_cmd_args)),
|
||||
+ ],
|
||||
+ ],
|
||||
+ ),
|
||||
+ ]
|
||||
+ )
|
||||
diff --git a/repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/tests/test_inhibitcgroupsv1.py b/repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/tests/test_inhibitcgroupsv1.py
|
||||
new file mode 100644
|
||||
index 00000000..9b3ec96f
|
||||
--- /dev/null
|
||||
+++ b/repos/system_upgrade/el9toel10/actors/inhibitcgroupsv1/tests/test_inhibitcgroupsv1.py
|
||||
@@ -0,0 +1,74 @@
|
||||
+import pytest
|
||||
+
|
||||
+from leapp import reporting
|
||||
+from leapp.libraries.actor import inhibitcgroupsv1
|
||||
+from leapp.libraries.common.testutils import create_report_mocked, CurrentActorMocked
|
||||
+from leapp.libraries.stdlib import api
|
||||
+from leapp.models import KernelCmdline, KernelCmdlineArg
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ "cmdline_params", (
|
||||
+ ([KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="0")]),
|
||||
+ ([KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="false")]),
|
||||
+ ([KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="False")]),
|
||||
+ ([KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="no")]),
|
||||
+ (
|
||||
+ [
|
||||
+ KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="0"),
|
||||
+ KernelCmdlineArg(key="systemd.legacy_systemd_cgroup_controller", value="0"),
|
||||
+ ]
|
||||
+ ), (
|
||||
+ [
|
||||
+ KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="0"),
|
||||
+ KernelCmdlineArg(key="systemd.legacy_systemd_cgroup_controller", value="1"),
|
||||
+ ]
|
||||
+ )
|
||||
+ )
|
||||
+)
|
||||
+def test_inhibit_should_inhibit(monkeypatch, cmdline_params):
|
||||
+ curr_actor_mocked = CurrentActorMocked(msgs=[KernelCmdline(parameters=cmdline_params)])
|
||||
+ monkeypatch.setattr(api, "current_actor", curr_actor_mocked)
|
||||
+ monkeypatch.setattr(reporting, "create_report", create_report_mocked())
|
||||
+
|
||||
+ inhibitcgroupsv1.process()
|
||||
+
|
||||
+ assert reporting.create_report.called == 1
|
||||
+ report = reporting.create_report.reports[0]
|
||||
+ assert "cgroups-v1" in report["title"]
|
||||
+ assert reporting.Groups.INHIBITOR in report["groups"]
|
||||
+
|
||||
+ command = [r for r in report["detail"]["remediations"] if r["type"] == "command"][0]
|
||||
+ assert "systemd.unified_cgroup_hierarchy" in command['context'][2]
|
||||
+ if len(cmdline_params) == 2:
|
||||
+ assert "systemd.legacy_systemd_cgroup_controller" in command['context'][2]
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize(
|
||||
+ "cmdline_params", (
|
||||
+ ([KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="1")]),
|
||||
+ ([KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="true")]),
|
||||
+ ([KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="True")]),
|
||||
+ ([KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="yes")]),
|
||||
+ ([KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value=None)]),
|
||||
+ (
|
||||
+ [
|
||||
+ KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="1"),
|
||||
+ KernelCmdlineArg(key="systemd.legacy_systemd_cgroup_controller", value="1"),
|
||||
+ ]
|
||||
+ ), (
|
||||
+ [
|
||||
+ KernelCmdlineArg(key="systemd.unified_cgroup_hierarchy", value="1"),
|
||||
+ KernelCmdlineArg(key="systemd.legacy_systemd_cgroup_controller", value="0"),
|
||||
+ ]
|
||||
+ ),
|
||||
+ )
|
||||
+)
|
||||
+def test_inhibit_should_not_inhibit(monkeypatch, cmdline_params):
|
||||
+ curr_actor_mocked = CurrentActorMocked(msgs=[KernelCmdline(parameters=cmdline_params)])
|
||||
+ monkeypatch.setattr(api, "current_actor", curr_actor_mocked)
|
||||
+ monkeypatch.setattr(reporting, "create_report", create_report_mocked())
|
||||
+
|
||||
+ inhibitcgroupsv1.process()
|
||||
+
|
||||
+ assert not reporting.create_report.called
|
||||
--
|
||||
2.50.1
|
||||
|
@ -52,7 +52,7 @@ py2_byte_compile "%1" "%2"}
|
||||
|
||||
Name: leapp-repository
|
||||
Version: 0.22.0
|
||||
Release: 5%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: Repositories for leapp
|
||||
|
||||
License: ASL 2.0
|
||||
@ -104,40 +104,6 @@ Patch0035: 0035-Add-official-Centos-Stream-9-and-10-RPM-GPG-keys.patch
|
||||
Patch0036: 0036-Deprecate-is_rhel_alt-from-share-libraries.patch
|
||||
Patch0037: 0037-data-update-data-files-stream-3.3-1380.patch
|
||||
|
||||
# CTC1 Candidate2
|
||||
Patch0038: 0038-Makefile-Non-zero-exit-code-on-failed-tests-in-conta.patch
|
||||
Patch0039: 0039-CI-Unit-tests-Rename-tasks-tests-executions.patch
|
||||
Patch0040: 0040-Fix-parsing-of-the-kernel-cmdline.patch
|
||||
Patch0041: 0041-repomap-Process-repositories-based-on-distro.patch
|
||||
Patch0042: 0042-Update-the-upgrade-data-files-stream-4.0.patch
|
||||
Patch0043: 0043-unit-tests-suppress-deprecation-warning-for-is_rhel_.patch
|
||||
|
||||
# CTC2 Candidate1
|
||||
Patch0044: 0044-Remove-obsolete-workflows.patch
|
||||
Patch0045: 0045-README-IRC-GitHub-discussions.patch
|
||||
Patch0046: 0046-Resolve-boot-issues-in-hybrid-azure-during-upgrades-.patch
|
||||
Patch0047: 0047-Restructure-hybrid-image-detection.patch
|
||||
Patch0048: 0048-Point-to-leapp-repository-contribution-guidelines.patch
|
||||
Patch0049: 0049-Read-the-DNF-config-by-module.py-library.patch
|
||||
Patch0050: 0050-Disable-localpkg_gpgcheck-parameter-from-plugin-data.patch
|
||||
Patch0051: 0051-PR-welcome-msg-update-link-to-contrib-guidelines-139.patch
|
||||
Patch0052: 0052-Fix-skip-checking-ownership-of-files-in-.-directory-.patch
|
||||
Patch0053: 0053-fixup-Fix-skip-checking-ownership-of-files-in-.-dire.patch
|
||||
Patch0054: 0054-Add-test.patch
|
||||
Patch0055: 0055-fixup-Add-test.patch
|
||||
Patch0056: 0056-Add-test-for-non-recursive.patch
|
||||
Patch0057: 0057-el8to9-actors-mysql-Add-MySQL-actor-with-recommendat.patch
|
||||
Patch0058: 0058-Fix-target-version-format-checks.patch
|
||||
# do not apply this patch, due to error in centpkg tool
|
||||
# it doesn't contain any functional change
|
||||
#Patch0059: 0059-Drop-el7toel8-leapp-repository.patch
|
||||
Patch0060: 0060-libs-rhui-add-rhel10-targets-for-upgrades.patch
|
||||
Patch0061: 0061-userspacegen-do-not-repolist-source-debug-repos.patch
|
||||
Patch0062: 0062-actor-checkrhui-do-not-boostrap-client-on-AWS-9-10.patch
|
||||
Patch0063: 0063-add-azure-aws-alibaba-client-repositories-to-repomap.patch
|
||||
Patch0064: 0064-rhui-azure-add-target-client-s-GPG-key-to-mandatory-.patch
|
||||
Patch0065: 0065-feat-alibaba-support-rhel9-upgrade-to-rhel10-using-r.patch
|
||||
Patch0066: 0066-Inhibit-upgrade-on-systems-with-cgroupsv1-on-9to10-1.patch
|
||||
|
||||
%description
|
||||
%{summary}
|
||||
@ -342,34 +308,6 @@ Requires: libdb-utils
|
||||
%patch -P 0035 -p1
|
||||
%patch -P 0036 -p1
|
||||
%patch -P 0037 -p1
|
||||
%patch -P 0038 -p1
|
||||
%patch -P 0039 -p1
|
||||
%patch -P 0040 -p1
|
||||
%patch -P 0041 -p1
|
||||
%patch -P 0042 -p1
|
||||
%patch -P 0043 -p1
|
||||
%patch -P 0044 -p1
|
||||
%patch -P 0045 -p1
|
||||
%patch -P 0046 -p1
|
||||
%patch -P 0047 -p1
|
||||
%patch -P 0048 -p1
|
||||
%patch -P 0049 -p1
|
||||
%patch -P 0050 -p1
|
||||
%patch -P 0051 -p1
|
||||
%patch -P 0052 -p1
|
||||
%patch -P 0053 -p1
|
||||
%patch -P 0054 -p1
|
||||
%patch -P 0055 -p1
|
||||
%patch -P 0056 -p1
|
||||
%patch -P 0057 -p1
|
||||
%patch -P 0058 -p1
|
||||
%patch -P 0060 -p1
|
||||
%patch -P 0061 -p1
|
||||
%patch -P 0062 -p1
|
||||
%patch -P 0063 -p1
|
||||
%patch -P 0064 -p1
|
||||
%patch -P 0065 -p1
|
||||
%patch -P 0066 -p1
|
||||
|
||||
|
||||
%build
|
||||
@ -451,831 +389,71 @@ done;
|
||||
# no files here
|
||||
|
||||
%changelog
|
||||
* Fri Jul 18 2025 Karolina Kula <kkula@redhat.com> - 0.22.0-5
|
||||
- Fix broken bootloader on Azure hybrid images for systems previously upgraded from RHEL 7
|
||||
- Load DNF configuration correctly when using DNF libraries
|
||||
- Disable localpkg_gpgcheck during the upgrade if set to allow installation of bundled leapp and leapp-repository deps packages
|
||||
- Add actor with recommendations for upgrade of MySQL
|
||||
- The HybridImage model has been replaced by ConvertGrubenvTask
|
||||
- Check the input format of the target version properly
|
||||
- Resolves: RHEL-5459, RHEL-38255, RHEL-39095, RHEL-47472, RHEL-96238
|
||||
|
||||
* Thu Jun 05 2025 Karolina Kula <kkula@redhat.com> - 0.22.0-4
|
||||
- Fix parsing of the kernel cmdline
|
||||
- Require leapp data with provided_data_streams 4.0+
|
||||
- Resolves: RHEL-67627
|
||||
|
||||
|
||||
* Wed May 14 2025 Petr Stodulka <pstodulk@redhat.com> - 0.22.0-3
|
||||
- Rebuild
|
||||
|
||||
* Tue May 13 2025 Petr Stodulka <pstodulk@redhat.com> - 0.22.0-2
|
||||
* Wed May 14 2025 Petr Stodulka <pstodulk@redhat.com> - 0.22.0-2
|
||||
- Require leapp-framework >= 6.1
|
||||
- Simplified use of the LiveMode experimental feature with additional enhancements
|
||||
- Ensure the leapp-upgrade-el9toel10 RPM is not touched during the upgrade transaction
|
||||
- Create proper error message when swap of RHUI clients fails
|
||||
- Fix the check of deprecated PCI devices and drivers
|
||||
- Add RHEL 9.7 product certificates
|
||||
- Add RHEL 10.1 product certificates
|
||||
- Gracefully handle CentOS OS versioning style
|
||||
- Introduced the --enable-experimental-feature to simplify use of experimental features
|
||||
- Manage RPM GPG keys during the upgrade respecting used linux distributions
|
||||
- Minor fixes in reports
|
||||
- Prevent a crach during post-upgrade phases when no custom SELinux modules needs to be migrated
|
||||
- Update leapp upgrade data files
|
||||
- Resolves: RHEL-53801, RHEL-77945, RHEL-84978
|
||||
- Minor fixes in reports
|
||||
- Resolves: RHEL-49402, RHEL-72544, RHEL-77175, RHEL-80334, RHEL-80335, RHEL-80336, RHEL-80550, RHEL-86689
|
||||
|
||||
* Fri Feb 14 2025 Petr Stodulka <pstodulk@redhat.com> - 0.22.0-1
|
||||
- Rebase to new upstream 0.22.0
|
||||
- Minor updates in generated reports
|
||||
- Resolves: RHEL-67621, RHEL-67719, RHEL-16881
|
||||
- Cover upgrades for MySQL and PostgreSQL databases
|
||||
- Detect OpenSSL engines configured in /etc/pki/tls/openssl.cnf
|
||||
- Detect deprecated network-scripts (ifcfg) files
|
||||
- Detect whether subscribed systems are using SCA
|
||||
- Inform user about Libdb removal if present
|
||||
- Check and handle upgrades with custom crypto policies
|
||||
- Update checks for SAP HANA
|
||||
- Resolves: RHEL-57043, RHEL-35618, RHEL-36661, RHEL-62689, RHEL-68309, RHEL-69831, RHEL-77169, RHEL-78396
|
||||
|
||||
* Wed Jan 29 2025 Petr Stodulka <pstodulk@redhat.com> - 0.21.0-6
|
||||
- Detect XFS file systems with problematic parameters
|
||||
- Raise an inhibitor if unsupported target version supplied instead of error
|
||||
- Prevent a possible crash with LiveMode when adding the upgrade boot entry on systems with LVM
|
||||
- Fix the bootloader workaround for upgrades on ARM machines - covering also differences on AWS
|
||||
- Resolves: RHEL-67621, RHEL-51072, RHEL-41193
|
||||
- Resolves: RHEL-57043, RHEL-52309, RHEL-60034
|
||||
|
||||
* Fri Jan 17 2025 Petr Stodulka <pstodulk@redhat.com> - 0.21.0-5
|
||||
- Obsolete RHEL9 GPG key signed with SHA1
|
||||
- Activate LVM VGs with `--sysinit` option to correct the use in the upgrade initramfs
|
||||
- Fix output of commands executed inside systemd-nspawn containers
|
||||
- Fix pes events scanner crashing when there are duplicate packages in the received instructions
|
||||
- Fix pes events scanner not respecting user’s transaction configuration
|
||||
- Fix remediation instructions for deprecated NM configuration
|
||||
- Fix storage scanner crashing when command outputs contain colon character
|
||||
- Activate LVM VGs with `--sysinit` option to correct the use in the upgrade initramfs
|
||||
- Minor improvements in preupgrade reports
|
||||
- Resolves: RHEL-67621, RHEL-34570, RHEL-44596, RHEL-50076
|
||||
- Resolves: RHEL-57043, RHEL-31428, RHEL-33373, RHEL-69829, RHEL-71517
|
||||
|
||||
* Tue Nov 19 2024 Matej Matuska <mmatuska@redhat.com> - 0.21.0-4
|
||||
- Use net.naming-scheme by default
|
||||
- Resolves: RHEL-23473
|
||||
|
||||
* Mon Nov 18 2024 Petr Stodulka <pstodulk@redhat.com> - 0.21.0-3
|
||||
- Introduce upgrade path 8.10 -> 9.6
|
||||
* Mon Nov 18 2024 Matej Matuska <mmatuska@redhat.com> - 0.21.0-4
|
||||
- Require leapp-framework 6.0+
|
||||
- Update leapp-deps package to satisfy leapp-framework-dependencies 6
|
||||
- Add possibility to use net.naming-scheme during the upgrade
|
||||
- Cap max size of the sparse files to 1TiB for storage with large amount of free space
|
||||
- Add dependency on libdb-utils
|
||||
- Enable upgrade for systems with LUKS bound to Clevis with TPM 2.0 token
|
||||
- Adjust resource limitations for leapp to be able to perform the upgrade
|
||||
- Fix problems with the bootloader when upgrading to RHEL 9.6 on ARM
|
||||
- Cap max size of the sparse files to 1TiB for storage with large amount of free space
|
||||
- Check that detected Intel CPU microarchitecture is supported on target system
|
||||
- Fix the report when handling broken parsing of kernel cmdline
|
||||
- Generate proper error message instead of ModelViolationError when parsing invalid repository definition
|
||||
- Handle default kernel cmdline when multiple boot entries for the default kernel are defined
|
||||
- Introduce a possibility to configure leapp actors covering RHUI on clouds
|
||||
- Migrate Ruby IRB during the upgrade
|
||||
- Migrate pam_userdb backend during the upgrade
|
||||
- Skip checking of (PKI) `directory-hash` dir to speedup the upgrade process and clean logs
|
||||
- Update leapp upgrade data files
|
||||
- Resolves: RHEL-67621, RHEL-57064, RHEL-56251, RHEL-50686, RHEL-41193
|
||||
- Resolves: RHEL-34570, RHEL-26459, RHEL-23473, RHEL-16881, RHEL-3294
|
||||
- Resolves: RHEL-57043
|
||||
|
||||
* Thu Sep 19 2024 Petr Stodulka <pstodulk@redhat.com> - 0.21.0-3
|
||||
- Rebuild to apply changes for gating
|
||||
- Resolves: RHEL-57043
|
||||
|
||||
* Mon Aug 19 2024 Petr Stodulka <pstodulk@redhat.com> - 0.21.0-2
|
||||
- Updated SPEC file to drop leapp repositories unrelated to IPU 8 -> 9
|
||||
- Resolves: RHEL-27847
|
||||
|
||||
* Fri Aug 16 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.21.0-1
|
||||
- Rebase to new upstream 0.21.0
|
||||
- Updated leapp data files.
|
||||
- Inhibit the upgrade to RHEL 9.5 on ARM architecture due to
|
||||
incompatibility between the RHEL 8 bootloader and RHEL 9.5 kernel.
|
||||
- Introduce experimental upgrades in 'live' mode for the testing.
|
||||
- Resolves: RHEL-27847, RHEL-52993, RHEL-45280, RHEL-49748, RHEL-52186
|
||||
|
||||
* Wed Jul 24 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.20.0-5
|
||||
- Improve set_systemd_services_states logging
|
||||
- [IPU 7 -> 8] Fix detection of bootable device on RAID
|
||||
- Fix detection of valid sshd config with internal-sftp subsystem in Leapp
|
||||
- Handle a false positive GPG check error when TargetUserSpaceInfo is missing
|
||||
- Fix failing "update-ca-trust" command caused by missing util-linux package
|
||||
- Improve report when a system is unsupported
|
||||
- Fix handling of versions in RHUI configuration for ELS and SAP upgrades
|
||||
- Add missing RHUI GCP config info for RHEL for SAP
|
||||
- Fix upgrade on aarch64 via RHUI on AWS
|
||||
- Resolves: RHEL-33902, RHEL-38909, RHEL-30573, RHEL-43978, RHEL-39046, RHEL-39047, RHEL-39049
|
||||
|
||||
* Thu May 30 2024 Petr Stodulka <pstodulk@redhat.com> - 0.20.0-4
|
||||
- Enable new upgrade path RHEL 8.10 -> 9.5
|
||||
- Minor updates in reports
|
||||
- Add information about leapp invocation to leapp.db
|
||||
- Resolves: RHEL-27847
|
||||
|
||||
* Mon May 13 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.20.0-3
|
||||
- Do not terminate the upgrade dracut module execution if
|
||||
/sysroot/root/tmp_leapp_py3/.leapp_upgrade_failed exists
|
||||
- Several minor improvements in messages printed in console output
|
||||
- Several minor improvements in report and error messages
|
||||
- Fix the parsing of the lscpu output
|
||||
- Fix evaluation of PES data
|
||||
- Target by default always "GA" channel repositories unless a different
|
||||
channel is specified for the leapp execution
|
||||
- Fix creation of the post upgrade report about changes in states of systemd
|
||||
services
|
||||
- Update the device driver deprecation data, fixing invalid fields for some
|
||||
AMD CPUs
|
||||
- Update the default kernel cmdline
|
||||
- Wait for the storage initialization when /usr is on separate file system -
|
||||
covering SAN
|
||||
- Resolves: RHEL-27847, RHEL-35240
|
||||
|
||||
* Tue Feb 20 2024 Petr Stodulka <pstodulk@redhat.com> - 0.20.0-2
|
||||
- Fallback to original RHUI solution on AWS to fix issues caused by changes in RHUI client
|
||||
- Resolves: RHEL-16729
|
||||
|
||||
* Tue Feb 13 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.20.0-1
|
||||
- Rebase to new upstream v0.20.0.
|
||||
- Fix semanage import issue
|
||||
- Fix handling of libvirt's systemd services
|
||||
- Add a dracut breakpoint for the pre-upgrade step.
|
||||
- Drop obsoleted upgrade paths (obsoleted releases: 8.6, 8.9, 9.0, 9.3)
|
||||
- Resolves: RHEL-16729
|
||||
|
||||
* Tue Jan 23 2024 Toshio Kuratomi <toshio@fedoraproject.org> - 0.19.0-10
|
||||
- Print nice error msg when device and driver deprecation data is malformed
|
||||
- Fix another cornercase when preserving symlinks to certificates in /etc/pki
|
||||
- Update the leapp upgrade data files - fixing upgrades with idm-tomcatjss
|
||||
- Resolves: RHEL-16729
|
||||
|
||||
* Fri Jan 19 2024 Petr Stodulka <pstodulk@redhat.com> - 0.19.0-9
|
||||
- Do not try to download data files anymore when missing as the service
|
||||
is obsoleted since the data is part of installed packages
|
||||
- Update error messages and reports when installed upgrade data files
|
||||
are malformed or missing to instruct user how to resolve it
|
||||
- Update the leapp upgrade data files - bump data stream to "3.0"
|
||||
- Resolves: RHEL-16729
|
||||
|
||||
* Fri Jan 12 2024 Petr Stodulka <pstodulk@redhat.com> - 0.19.0-7
|
||||
- Add detection of possible usage of OpenSSL IBMCA engine on IBM Z machines
|
||||
- Add detection of modified /etc/pki/tls/openssl.cnf file
|
||||
- Update the leapp upgrade data files
|
||||
- Fix handling of symlinks under /etc/pki with relative paths specified
|
||||
- Report custom actors and modifications of the upgrade tooling
|
||||
- Requires xfsprogs and e2fsprogs to ensure that Ext4 and XFS tools are installed
|
||||
- Bump leapp-repository-dependencies to 10
|
||||
- Resolves: RHEL-1774, RHEL-16729
|
||||
|
||||
* Thu Nov 16 2023 Petr Stodulka <pstodulk@redhat.com> - 0.19.0-5
|
||||
- Enable new upgrade path for RHEL 8.10 -> RHEL 9.4 (including RHEL with SAP HANA)
|
||||
- Introduce generic transition of systemd services states during the IPU
|
||||
- Introduce possibility to upgrade with local repositories
|
||||
- Improve possibilities of upgrade when a proxy is configured in DNF configutation file
|
||||
- Fix handling of symlinks under /etc/pki when managing certificates
|
||||
- Fix the upgrade with custom https repositories
|
||||
- Default to the NO_RHSM mode when subscription-manager is not installed
|
||||
- Detect customized configuration of dynamic linker
|
||||
- Drop the invalid `tuv` target channel for the --channel option
|
||||
- Fix the issue of going out of bounds in the isccfg parser
|
||||
- Fix traceback when saving the rhsm facts results and the /etc/rhsm/facts directory doesn’t exist yet
|
||||
- Load all rpm repository substitutions that dnf knows about, not just "releasever" only
|
||||
- Simplify handling of upgrades on systems using RHUI, reducing the maintenance burden for cloud providers
|
||||
- Detect possible unexpected RPM GPG keys has been installed during RPM transaction
|
||||
- Resolves: RHEL-16729
|
||||
|
||||
* Thu Nov 02 2023 Petr Stodulka <pstodulk@redhat.com> - 0.19.0-4
|
||||
- Fix the upgrade for systems without subscription-manager package
|
||||
- Resolves: RHEL-14901
|
||||
|
||||
* Tue Oct 31 2023 Petr Stodulka <pstodulk@redhat.com> - 0.19.0-3
|
||||
- Fix the upgrade when the release is locked by new subscription-manager
|
||||
- Resolves: RHEL-14901
|
||||
|
||||
* Wed Aug 23 2023 Petr Stodulka <pstodulk@redhat.com> - 0.19.0-1
|
||||
- Rebase to v0.19.0
|
||||
- Requires leapp-framework 5.0
|
||||
- Handle correctly the installed certificates to allow upgrades with custom repositories using HTTPs with enabled SSL verification
|
||||
- Fix failing upgrades with devtmpfs file systems specified in FSTAB
|
||||
- Do not try to update GRUB core on IBM Z systems
|
||||
- Minor improvements and fixes of various reports and error messages
|
||||
- Redesign handling of information about kernel (booted and target) to reflect changes in RHEL 9.3
|
||||
- Use new leapp CLI API which provides better report summary output
|
||||
- Resolves: rhbz#2215997, rhbz#2222861, rhbz#2232618
|
||||
|
||||
* Tue Jul 18 2023 Petr Stodulka <pstodulk@redhat.com> - 0.18.0-5
|
||||
- Fix the calculation of the required free space on each partitions/volume for the upgrade transactions
|
||||
- Create source overlay images with dynamic sizes to optimize disk space consumption
|
||||
- Update GRUB2 when /boot resides on multiple devices aggregated in RAID
|
||||
- Use new leapp CLI API which provides better report summary output
|
||||
- Introduce possibility to add (custom) kernel drivers to initramfs
|
||||
- Detect and report use of deprecated Xorg drivers
|
||||
- Fix the generation of the report about hybrid images
|
||||
- Inhibit the upgrade when unsupported x86-64 microarchitecture is detected
|
||||
- Minor improvements and fixes of various reports
|
||||
- Requires leapp-framework 4.0
|
||||
- Update leapp data files
|
||||
- Resolves: rhbz#2140011, rhbz#2144304, rhbz#2174095, rhbz#2215997
|
||||
|
||||
* Mon Jun 19 2023 Petr Stodulka <pstodulk@redhat.com> - 0.18.0-4
|
||||
- Introduce new upgrade path RHEL 8.9 -> 9.3
|
||||
- Update leapp data files to reflect new changes between systems
|
||||
- Detect and report use of deprecated Xorg drivers
|
||||
- Minor improvements of generated reports
|
||||
- Fix false positive report about invalid symlinks
|
||||
- Inhibit the upgrade when unsupported x86-64 microarchitecture is detected
|
||||
- Resolves: rhbz#2215997
|
||||
|
||||
* Mon Jun 05 2023 Petr Stodulka <pstodulk@redhat.com> - 0.18.0-3
|
||||
- Update the repomap.json file to address planned changes on RHUI Azure
|
||||
- Resolves: rhbz#2203800
|
||||
|
||||
* Fri May 19 2023 Petr Stodulka <pstodulk@redhat.com> - 0.18.0-2
|
||||
- Include leap data files in the package
|
||||
- Introduce in-place upgrades for systems with enabled FIPS mode
|
||||
- Enable the upgrade path 8.8 -> 9.2 for RHEL with SAP HANA
|
||||
- Fix the upgrade of ruby-irb package
|
||||
- Resolves: rhbz#2030627, rhbz#2097003, rhbz#2203800, rhbz#2203803
|
||||
|
||||
* Tue Feb 21 2023 Petr Stodulka <pstodulk@redhat.com> - 0.18.0-1
|
||||
- Rebase to v0.18.0
|
||||
- Introduce new upgrade path RHEL 8.8 -> 9.2
|
||||
- Requires cpio
|
||||
- Requires python3-gobject-base, NetworkManager-libnm
|
||||
- Bump leapp-repository-dependencies to 9
|
||||
- Add breadcrumbs results to RHSM facts
|
||||
- Add leapp RHUI packages to an allowlist to drop confusing reports
|
||||
- Added checks for RHEL SAP IPU 8.6 -> 9.0
|
||||
- Check RPM signatures during the upgrade
|
||||
- Check only mounted XFS partitions
|
||||
- Check the validity and compatitibility of used leapp data
|
||||
- Detect CIFS also when upgrading from RHEL8 to RHEL9 (PR1035)
|
||||
- Detect RoCE on IBM Z machines and check the configuration is safe for the upgrade
|
||||
- Detect a proxy configuration in YUM/DNF and adjust an error msg on issues caused by the configuration
|
||||
- Detect and report systemd symlinks that are broken before the upgrade
|
||||
- Detect the kernel-core RPM instead of kernel to prevent an error during post-upgrade phases
|
||||
- Disable the amazon-id DNF plugin on AWS during the upgrade stage to omit confusing error messages
|
||||
- Do not create new *pyc files when running leapp after the DNF upgrade transaction
|
||||
- Drop obsoleted upgrade paths
|
||||
- Enable upgrades of RHEL 8 for SAP HANA to RHEL 9 on ppc64le
|
||||
- Enable upgrades on s390x when /boot is part of rootfs
|
||||
- Extend the allow list of RHUI clients by azure-sap-apps to omit confusing report
|
||||
- Filter out PES events unrelated for the used upgrade path and handle overlapping event
|
||||
(fixes upgrades with quagga installed)
|
||||
- Fix scan of ceph volumes on systems without ceph-osd or when ceph-osd container is not found
|
||||
- Fix systemd symlinks that become incorrect during the IPU
|
||||
- Fix the check of memory (RAM) limits and use human readable values in the report
|
||||
- Fix the kernel detection during initramfs creation for new kernel on RHEL 9.2+
|
||||
- Fix the upgrade of IBM Z machines configured with ZFCP
|
||||
- Fix the upgrade on Azure using RHUI for SAP Apps images
|
||||
- Ignore external accounts in /etc/passwd
|
||||
- Improve remediation instructions for packages in unknown repositories
|
||||
- Improve the error message to guide users when discovered more space is needed
|
||||
- Improve the handling of blocklisted certificates
|
||||
- Inhibit the upgrade when entries in /etc/fstab cause overshadowing during the upgrade
|
||||
- Introduced an option to use an ISO file as a target RHEL version content source
|
||||
- Introduced possibility to specify what systemd services should be enabled/disabled on the upgraded system
|
||||
- Introduced the --nogpgcheck option to skip checking of RPM signatures
|
||||
- Map the target repositories also based on the installed content
|
||||
- Prevent re-run of leapp in the upgrade initramfs in case of previous failure
|
||||
- Prevent the upgrade with RHSM when Baseos and Appstream target repositories are not discovered
|
||||
- Provide common information about systemd services
|
||||
- RHUI(Azure) Handle correctly various SAP images
|
||||
- Register subscribed systems automatically to Red Hat Insights unless --no-insights-register is used
|
||||
- Remove obsoleted GPG keys provided by RH after the upgrade to prevent errors
|
||||
- Rework the network configuration handling and parse the configuration data properly
|
||||
- Set the system release lock after the upgrade also for premium channels
|
||||
- Small improvements in various reports
|
||||
- Resolves: rhbz#2088492, rhbz#2111691, rhbz#2127920, rhbz#2129716,rhbz#2139907, rhbz#2139907, rhbz#2141393, rhbz#2143372, rhbz#2155661
|
||||
|
||||
* Wed Sep 07 2022 Petr Stodulka <pstodulk@redhat.com> - 0.17.0-3
|
||||
- Adding back instruction to not install rubygem-irb during the in-place upgrade
|
||||
to prevent conflict between files
|
||||
- Resolves: rhbz#2090995
|
||||
|
||||
* Wed Sep 07 2022 Petr Stodulka <pstodulk@redhat.com> - 0.17.0-2
|
||||
- Update VDO checks to enable user to decide the system state on check failures
|
||||
and undetermined block devices
|
||||
- The VDO dialog and related VDO reports have been properly updated
|
||||
- Resolves: rhbz#2096159
|
||||
|
||||
* Wed Aug 24 2022 Petr Stodulka <pstodulk@redhat.com> - 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(<CMD>)` 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 <pstodulk@redhat.com> - 0.16.0-6
|
||||
- Skip comments in /etc/default/grub during the parsing
|
||||
- Resolves: #1997076
|
||||
|
||||
* Tue Apr 26 2022 Petr Stodulka <pstodulk@redhat.com> - 0.16.0-5
|
||||
- Migrate blacklisted CA certificates during the upgrade
|
||||
- Resolves: #1997076
|
||||
|
||||
* Tue Apr 19 2022 Petr Stodulka <pstodulk@redhat.com> - 0.16.0-4
|
||||
- Extend the check of deprecated or removed PCI drivers
|
||||
- Do not instruct DNF to install rubygem-irb during the in-place upgrade
|
||||
to prevent conflict between files
|
||||
- Resolves: #1997076
|
||||
|
||||
* Fri Mar 18 2022 Petr Stodulka <pstodulk@redhat.com> - 0.16.0-1
|
||||
- Rebase to v0.16.0
|
||||
- Improve the performance of the leapp execution for "pre first reboot" phases
|
||||
- Introduce upgrades for RHEL 8 to RHEL 9
|
||||
- Enabled upgrade paths:
|
||||
- RHEL 8.6 -> 9.0
|
||||
- RHEL with SAP 8.6 -> 9.0
|
||||
- Requires leapp-framework >= 2.2
|
||||
- Bump leapp-framework-dependencies to 5
|
||||
- Add actors for MariaDB and PostgreSQL
|
||||
- Add detection of enabled DNF plugins
|
||||
- Add scan & checks for VDO devices
|
||||
- Bind the /run/lock dir into the container in the upgrade initramfs env
|
||||
- Check Firewalld configuration
|
||||
- Check SSSD configuration for changes in RHEL 9
|
||||
- Check deprecated network settings
|
||||
- Check ifcfg files for change in RHEL 9
|
||||
- Check the existence of the custom network-scripts
|
||||
- Filter out PES data unrelated for the particular IPU path
|
||||
- Fix generating of instructions/data for the leapp DNF plugin during
|
||||
- Fix generating the target initramfs when additional files and dracut modules are requested to be added
|
||||
- Fix getting device attribute through udev on Python 3
|
||||
- Fix parsing of sysctl output during the scan of the system
|
||||
- Fix scanning "/etc/default/grub" with empty lines
|
||||
- Fix scanning information about mounted devices
|
||||
- Fix the execution order for the dnf dry run actor
|
||||
- Handle SELinux during the in-place upgrade
|
||||
- Handle live kernel patching during
|
||||
- Improve and generalize checking of device drivers
|
||||
- Inhibit the upgrade when ipa-server is detected
|
||||
- Introduce DNFWorkarounds to register scripts to be executed before DNF run
|
||||
- Introduce handling of DNF modularity during the upgrade
|
||||
- Introduce the --report-schema option to control the version of the generated report format
|
||||
- Introduce the --target option to specify the version of the target system
|
||||
- Provide the LEAPP_IPU_IN_PROGRESS environment variable for actors during in-place upgrade
|
||||
- Resolves: #1997076
|
||||
|
||||
* Tue Feb 01 2022 Petr Stodulka <pstodulk@redhat.com> - 0.15.0-12
|
||||
- Fix handling of PES data for modularity packages
|
||||
- Resolves: #1997076
|
||||
|
||||
* Thu Jan 27 2022 Petr Stodulka <pstodulk@redhat.com> - 0.15.0-11
|
||||
- Beta version of IPU 8 -> 9
|
||||
- Resolves: #1997076
|
||||
|
||||
* Wed Oct 20 2021 Petr Stodulka <pstodulk@redhat.com> - 0.15.0-10
|
||||
- Bumping the release for the testing purposes.
|
||||
- First build for the IPU 8 -> 9
|
||||
- Resolves: #1997076
|
||||
|
||||
* Wed Oct 20 2021 Petr Stodulka <pstodulk@redhat.com> - 0.15.0-3
|
||||
- Correct the version-release to obsolete previous leapp-repository-deps rpm
|
||||
- Resolves: #2015192
|
||||
|
||||
* Wed Oct 20 2021 Petr Stodulka <pstodulk@redhat.com> - 0.15.0-2
|
||||
- Correct the version-release to obsolete previous leapp-repository rpm
|
||||
- Resolves: #2015192
|
||||
|
||||
* Tue Oct 19 2021 Petr Stodulka <pstodulk@redhat.com> - 0.15.0-1
|
||||
- Rebase to v0.15.0
|
||||
- Changed supported upgrade path for: RHEL with SAP 7.9 -> 8.2
|
||||
- Enable upgrades for SAP on AWS & Azure using RHUI
|
||||
- The leapp-repository rpm has been renamed to leapp-upgrade-el7toel8
|
||||
- Provides the leapp-upgrade capability, so all required packages can be installed
|
||||
by the `yum install leapp-upgrade` command
|
||||
- Added a dependency on leapp as the new rpm provides leapp commands
|
||||
- Bumped leapp-repository-dependencies to 6
|
||||
- Do not exclude repoids enabled via the --enablerepo option (#623)
|
||||
- Enforce the `en_US.utf-8` locale when running leapp to prevent various issues
|
||||
when a different locale is used on the system
|
||||
- Enhance the check of required free space on disk for the upgrade
|
||||
- Fix XFS ftype=0 workaround when "non-XFS" rootfs is present
|
||||
- Fix detection of XFS partitions without ftype
|
||||
- Fix handling of /etc/yum.repos.d directory for RHUI
|
||||
- Fix incorrect mapping of RHEL repositories
|
||||
- Fix the detection of NFS partitions in /etc/fstab (e.g. when nfs3 or nfs4 is specified)
|
||||
- Fix the report message when multiple NICs with ethX names are present (#640)
|
||||
- Fix handling of issues when fetching leapp data files
|
||||
- Introduce the LEAPP_NO_NETWORK_RENAMING environment variable to leave management
|
||||
of NICs names on user when set to '1'; it's wanted e.g. in case a bonding
|
||||
is configured on the system
|
||||
- Add actors to report about PostgresSQL changes
|
||||
- Make generation of targetuserspace container, upgrade initramfs, and target initramfs more dynamic
|
||||
- Require the /etc/dasd.conf file only when DASD is used on s390x
|
||||
- Generate /etc/migration-results upon leapp preupgrade / upgrade execution to inform about status of the upgrade
|
||||
- Improve the report message when BTRFS is detected
|
||||
- Inhibit the upgrade if any CIFS entries found in /etc/fstab
|
||||
- Inhibit the upgrade if any deprecated OpenSSH configuration options / directives are detected
|
||||
- Inhibit the upgrade when multiple rescue boot entries exist on s390x
|
||||
- Inhibit the upgrade when x32b and x64b versions of packages are installed
|
||||
- Introduce hard preservation of leapp packages during the IPU to make the
|
||||
upgrade process more protected
|
||||
- Introduce new system of automatic mapping of RHEL repositories for the in-place
|
||||
upgrade based on the repomap.json data file
|
||||
- Introduce the --channel CLI option to specify the channel (e.g. eus) supposed
|
||||
to be used for the upgrade
|
||||
- Report the problems with target repositories using inhibitors instead of error messages
|
||||
- Update (or create) the /etc/{yum,dnf}/var/releasever file containing the target
|
||||
OS release if exists or RHUI is detected
|
||||
- Introduced the upgrade/common leapp repository: contains fundamental parts
|
||||
generic for all in-place upgrades
|
||||
- The upgrade/el7toel8 leapp repository contains only stuff related to in-place
|
||||
upgrade from RHEL 7 -> RHEL 8
|
||||
- Resolves: #2015192
|
||||
|
||||
* Thu May 13 2021 Petr Stodulka <pstodulk@redhat.com> - 0.14.0-4
|
||||
- Fix the check of removed non-pci drivers
|
||||
Relates: #1952886
|
||||
|
||||
* Tue May 04 2021 Petr Stodulka <pstodulk@redhat.com> - 0.14.0-3
|
||||
- Fix handling of errors when fetching leapp data files from server
|
||||
Relates: #1952886
|
||||
|
||||
* Tue Apr 27 2021 Petr Stodulka <pstodulk@redhat.com> - 0.14.0-2
|
||||
- Improve fetching of leapp data files from server (increase timeouts and
|
||||
retry multiple times in case of error)
|
||||
- Relates: #1952886
|
||||
|
||||
* Fri Apr 23 2021 Petr Stodulka <pstodulk@redhat.com> - 0.14.0-1
|
||||
- Rebase to v0.14.0
|
||||
- Added dependency on python-requests on RHEL 7
|
||||
- Changed supported upgrade paths:
|
||||
RHEL-ALT 7.6 -> 8.4
|
||||
RHEL 7.9 -> 8.4
|
||||
RHEL with SAP 7.7 -> 8.2 (unchanged)
|
||||
- Download the leapp data from cloud.redhat.com automatically
|
||||
when no data are present locally (and system is registered)
|
||||
- Fix migration of Quagga to FRR on RHEL 8.4
|
||||
- Inhibit the upgrade if the system uses any drivers dropped
|
||||
from the RHEL 8 system
|
||||
- Resolves: #1952886
|
||||
|
||||
* Thu Feb 04 2021 Dominik Rehak <drehak@redhat.com> - 0.13.0-2
|
||||
- Rebuild
|
||||
- Relates: #1915509
|
||||
|
||||
* Thu Feb 04 2021 Dominik Rehak <drehak@redhat.com> - 0.13.0-1
|
||||
- Rebase to v0.13.0
|
||||
- Add actors to migrate Quagga to FRR
|
||||
- Add stable uniq Key id for every dialog
|
||||
- Add upgrade support for SAP HANA
|
||||
- Allow upgrade with SCA enabled manifest
|
||||
- Fix comparison of the newest installed and booted kernel
|
||||
- Fix crash due to missing network interfaces during upgrade phases
|
||||
- Fix error with /boot/efi existing on non-EFI systems
|
||||
- Fix false positive detection of issue in /etc/default/grub that led into GRUB
|
||||
prompt
|
||||
- Fix remediation command for ipa-server removal
|
||||
- Fix syntax error in upgrade script
|
||||
- Inhibit upgrade if multiple kernel-debug pkgs are installed
|
||||
- Inhibit upgrade on s390x machines with /boot on a separate partition
|
||||
- Inhibit upgrade with mount options in fstab that break mounting on RHEL 8
|
||||
- Remove the *leapp-resume* service after the *FirstBoot* phase to prevent kill
|
||||
of the leapp process on `systemctl daemon-reload`
|
||||
- Remove the initial-setup package to avoid it asking for EULA acceptance during
|
||||
upgrade
|
||||
- Require the leapp-framework capability 1.4
|
||||
- Respect the *kernel-rt* package
|
||||
- Resolves: #1915509 #1872356 #1873312 #1899455 #1901002 #1905247 #1870813
|
||||
- Relates: #1901440
|
||||
|
||||
* Sun Oct 25 2020 Petr Stodulka <pstodulk@redhat.com> - 0.12.0-2
|
||||
- Add actors to migrate Quagga to FRR
|
||||
- Fixes issues with interrupted leapp during the FirstBoot phase when reload
|
||||
of daemons is required
|
||||
Resolves: #1883218
|
||||
- Relates: #1887912
|
||||
|
||||
* Wed Oct 21 2020 Dominik Rehak <drehak@redhat.com> - 0.12.0-1
|
||||
- Rebase to v0.12.0
|
||||
- Enable upgrades on AWS and Azure
|
||||
- Check usage of removed/deprecated leapp env vars
|
||||
- Do not inhibit if winbind or wins is used in nsswitch.conf
|
||||
(as the issue is fixed in RHEL 8.2)
|
||||
- Do not remove java from the upgrade transaction
|
||||
- Fix handling of events with same initial releases and input packages
|
||||
- Fix mkhomedir issues after authselect conversion
|
||||
- Fix python macro error in spec file
|
||||
- Fix storing of logs from initramfs
|
||||
- Handle migration of authselect and PAM
|
||||
- Improve remediation instructions for HA clusters
|
||||
- Make sure "default.target.wants" dir exists
|
||||
- Resolves: #1887912
|
||||
|
||||
* Tue Sep 15 2020 Dominik Rehak <drehak@redhat.com> - 0.11.0-4
|
||||
- Remove java from the upgrade transaction
|
||||
Relates: #1860375
|
||||
|
||||
* Tue Sep 08 2020 Petr Stodulka <pstodulk@redhat.com> - 0.11.0-3
|
||||
- Set authselect and PAM actors experimental again
|
||||
Relates: #1860375
|
||||
|
||||
* Wed Sep 02 2020 Petr Stodulka <pstodulk@redhat.com> - 0.11.0-2
|
||||
- Make possible upgrade with the java-11-openjdk-headless package
|
||||
- Fix check of local repositories when metalink or mirrorlist is specified
|
||||
- Relates: #1860375
|
||||
|
||||
* Tue Aug 18 2020 Michal Bocek <mbocek@redhat.com> - 0.11.0-1
|
||||
- Rebase to v0.11.0
|
||||
- Do not crash when the /root/temp_leapp_py3 directory exists (when upgrade is executed multiple times)
|
||||
Relates: #1858479
|
||||
- Do not detect grub device on the s390x architecture (ZIPL is used there)
|
||||
- Consider the katello rpm being signed by Red Hat
|
||||
- Omit printing grub binary data on terminal which could break terminal output
|
||||
- Provide just a single remedition command in the pre-upgrade report to be compatible with Satellite and Cockpit
|
||||
- Search repository files only in directories used by DNF
|
||||
- Change supported upgrade paths: RHEL-ALT 7.6 -> 8.2; RHEL 7.9 -> 8.2
|
||||
- Check whether PAM modules, that are not present on RHEL 8, are used
|
||||
- Inhibit upgrade when local repositories (referred by file://) are detected
|
||||
- Introduce actors for migration of Authconfig to Authselect
|
||||
- Support for an in-place upgrade for z15 machines - s390x architecture
|
||||
- Update list of removed drivers on RHEL 8
|
||||
- Resolves: #1860375
|
||||
|
||||
* Mon Apr 20 2020 Michal Bocek <mbocek@redhat.com> - 0.10.0-2
|
||||
- Fixed broken cli output due to printing binary data
|
||||
- Relates: #1821710
|
||||
|
||||
* Thu Apr 16 2020 Petr Stodulka <pstodulk@redhat.com> - 0.10.0-1
|
||||
- Rebase to v0.10.0
|
||||
- Changed upgrade paths: RHEL-ALT 7.6 -> 8.2; RHEL 7.8 -> 8.2
|
||||
- Add initial multipath support (it doesn't handle all cases yet)
|
||||
- Use the new framework mechanism to inhibit the upgrade without reporting errors
|
||||
- Support the upgrade without the use of subscription-manager
|
||||
- Add dependency on leapp-framework
|
||||
- Check if the latest installed kernel is booted before the upgrade
|
||||
- Check that the system satisfies minimum memory requirements
|
||||
for the upgrade (#413)
|
||||
- Do not mount pseudo and unsupposrted FS to overlayfs (e.g. proc)
|
||||
- Drop leapp sos plugin (it's part of the sos rpm in RHEL 7.7+)
|
||||
- Evaluate PES events transitively to create correct data for the upgrade
|
||||
transaction
|
||||
- Fix checking of kernel drivers (#400)
|
||||
- Fix failures caused by local rpms added into the upgrade transaction
|
||||
- Fix getting mount information with mountpoints with spaces in the path
|
||||
- Fix handling of XFS without ftype for every such mounted FS
|
||||
- Fix issue with random booting into old RHEL 7 kernel after the upgrade
|
||||
- Fix issues on systems with statically mapped IPs in /etc/hosts
|
||||
- Fix issues with device mapper and udev in a container
|
||||
- Fix issues with failing rpm transaction calculation because of duplicate
|
||||
instructions for dnf
|
||||
- Fix various issues related to RHSM (including rhbz rhbz#1702691)
|
||||
- Fix yum repository scan in case of repositories with invalid URL
|
||||
- Improved report related to KDE/GNOME
|
||||
- Inhibit the upgrade for ipa-server (#481)
|
||||
- Inhibit the upgrade if multiple kernel-devel rpms are installed
|
||||
- Inhibit the upgrade on FIPS systems
|
||||
- Inhibit the upgrade when links on root dir '/' are not absolute to save the world
|
||||
- Inhibit the upgrade when the raised dialogs are missing answers (#589)
|
||||
- Introduce new ways of using custom repositories during the transaction
|
||||
- Make report messages more explicit about Dialogs (#600)
|
||||
- Migrate SpamAssassin
|
||||
- Migrate cups-filters
|
||||
- Migrate sane-backend
|
||||
- Modify vim configuration to keep the original behaviour
|
||||
- Parse correctly kernel cmdline inside the initrd (#383) (fixes various issues on s390x)
|
||||
- Print warnings instead of a hard failure when expected rpms cannot be found
|
||||
(e.g. python3-nss inside an rpm module) (#405)
|
||||
- Remove java11-openjdk-headless during the upgrade (rhbz#1820172)
|
||||
- Report changes in wireshark
|
||||
- The name and baseurl field in the CustomTargetRepository message are optional now
|
||||
- Throw a nice error when invalid locale is set (#430)
|
||||
- Various texts are improved based on the feedback
|
||||
- Resolves: #1821710
|
||||
|
||||
* Tue Nov 5 2019 Petr Stodulka <pstodulk@redhat.com> - 0.9.0-5
|
||||
- Do not use efibootmgr on non-efi systems
|
||||
Resolves: #1768904
|
||||
|
||||
* Mon Nov 4 2019 Petr Stodulka <pstodulk@redhat.com> - 0.9.0-4
|
||||
- Inhibit upgrade on EFI systems when efibootmgr is not installed
|
||||
Relates: #1753580
|
||||
|
||||
* Fri Nov 1 2019 Petr Stodulka <pstodulk@redhat.com> - 0.9.0-3
|
||||
- Inhibit upgrade on s390x machines with rd.znet in kernel cmdline to prevent
|
||||
troubles with networking (temporary)
|
||||
- Fix issues with failing rpm transaction calculation because of duplicates
|
||||
- Fix boot order on EFI systems
|
||||
Relates: #1753580
|
||||
|
||||
* Wed Oct 30 2019 Michal Bocek <mbocek@redhat.com> - 0.9.0-2
|
||||
- Fixed some remediation instructions
|
||||
- Not trying to make an overlay over /boot/efi
|
||||
Relates: #1753580
|
||||
|
||||
* Thu Oct 24 2019 Petr Stodulka <pstodulk@redhat.com> - 0.9.0-1
|
||||
- Rebase to v0.9.0
|
||||
- Added dependency on policycoreutils-python
|
||||
- Change upgrade path from RHEL(-ALT) 7.6 (EUS) to RHEL 8.1
|
||||
- Changed the title of the upgrade boot entry to be valid for ZIPL
|
||||
- Check NSS configuration for use of wins or winbind
|
||||
- Check SSSD configuration
|
||||
- Check use of removed PAM modules
|
||||
- Check whether CPU on s390x is supported on RHEL 8
|
||||
- Do not remove packages which shall be installed/kept on target system
|
||||
- Do not waste time by downloading of RPMs if upgrade has been inhibited already
|
||||
- Enable and make possible upgrades on all architectures
|
||||
- Enable repositories used for upgrade on the upgraded system
|
||||
- Fix adding of local rpms into the upgrade transaction
|
||||
- Fix check of active kernel modules
|
||||
- Fix handling of XFS filesystems with ftype=0 (rhbz#1746956)
|
||||
- Fix ntp migration: extract configs into the right directories
|
||||
- Fix traceback when RHSM is skipped
|
||||
- Handle possible error when setting release on upgraded system
|
||||
- Handle systems with EFI boot
|
||||
- Handle upgrade on systems with multiple partitions
|
||||
- Improve message on failed subscription-manager and dnf
|
||||
- Improved the reporting capability
|
||||
- Migrate SELinux customizations
|
||||
- No size limit on leapp.db in sosreport
|
||||
- Process new PES data format + process PES events in order of releases
|
||||
- Require the biosdevname dracut module on the intel architecture only
|
||||
- Retry some actions of subscription-manager on failure to reduce number of issues
|
||||
- Update the list of packages supposed to be removed during the upgrade
|
||||
- Upgrade only packages signed by Red Hat
|
||||
Resolves: #1753580
|
||||
|
||||
* Thu Jul 25 2019 Petr Stodulka <pstodulk@redhat.com> - 0.8.1-2
|
||||
- attempt to (un)set rhsm release several times to omit possible problems with
|
||||
server
|
||||
Relates: #1723115
|
||||
|
||||
* Wed Jul 24 2019 Petr Stodulka <pstodulk@redhat.com> - 0.8.1-1
|
||||
- Rebase to v0.8.1
|
||||
Relates: #1723115
|
||||
- enable installation of RPMs that were previously blacklisted due to problems
|
||||
with rich dependencies
|
||||
|
||||
* Mon Jul 15 2019 Petr Stodulka <pstodulk@redhat.com> - 0.8.0-1
|
||||
- Rebase to v0.8.0
|
||||
Relates: #1723115
|
||||
- improve handling of RPM transaction to be able to process RPMs with
|
||||
rich dependencies
|
||||
- add missing dependency on python-udev & python3-udev
|
||||
- fix processing of last phase during the first boot of the upgraded system
|
||||
- set RHSM target release after the upgrade to expected version of the system
|
||||
- enable the CRB repository when the Optional repository is enabled
|
||||
- check tcp wrappers
|
||||
- check OpenSSH configuration
|
||||
- check and handle vftpd configuration
|
||||
- check kernel drivers
|
||||
- improve checks related to subscriptions
|
||||
- improve parsing of /etc/fstab
|
||||
- ensure the new target kernel is default boot entry
|
||||
- handle better cases when no target repositories has been found
|
||||
- migrate NTP to chronyd
|
||||
- migrate brltty configuration
|
||||
- migrate sendmail
|
||||
- avoid removal of /etc/localtime and /etc/resolv.conf during the upgrade
|
||||
- add informational actors for: acpid, chrony, dosfstools, grep, irssi,
|
||||
postfix, powertop
|
||||
|
||||
* Sun Jun 23 2019 Vojtech Sokol <vsokol@redhat.com> - 0.7.0-6
|
||||
- Rebuild
|
||||
Resolves: #1723115
|
||||
|
||||
* Fri Apr 26 2019 Petr Stodulka <pstodulk@redhat.com> - 0.7.0-5
|
||||
- build rhel8 initrd on the fly during the upgrade process
|
||||
- do not bundle initrd and vmlinuz file in the rpm
|
||||
Relates: #1636481
|
||||
|
||||
* Fri Apr 26 2019 Petr Stodulka <pstodulk@redhat.com> - 0.7.0-4
|
||||
- add python2-docs and python3-docs to the list of rpms for removal as
|
||||
currently it causes troubles with RPM transaction
|
||||
Relates: #1636481
|
||||
|
||||
* Fri Apr 26 2019 Petr Stodulka <pstodulk@redhat.com> - 0.7.0-3
|
||||
- set selinux into the permissive mode on RHEL 8 when enforcing was set
|
||||
originally
|
||||
- add python-docs and squid rpms to the list of rpms for removal
|
||||
Relates: #1636481
|
||||
|
||||
* Wed Apr 17 2019 Petr Stodulka <pstodulk@redhat.com> - 0.7.0-2
|
||||
- fix inhibition when ethX network interface exists and more additional NIC
|
||||
exist as well
|
||||
Relates: #1636481
|
||||
|
||||
* Wed Apr 17 2019 Petr Stodulka <pstodulk@redhat.com> - 0.7.0-1
|
||||
- Rebase to v0.7.0
|
||||
Relates: #1636481
|
||||
- new dependencies: python3, python*-pyudev
|
||||
- upgrade process is interrupted after RPMUpgradePhase and resumed with Python3
|
||||
- upgrade of NetworkManager is fixed
|
||||
- upgrade of firewalld is handled
|
||||
- name changes of network interfaces are handled
|
||||
- HTB repositories used for upgrades are replaced with the ones used for GA
|
||||
- tpm2-abrmd and all packages that depend on redhat-rpm-config are removed
|
||||
during upgrade
|
||||
- handling of the upgrade RPM transaction is improved
|
||||
- sync command is used in initrd to avoid issues related to cache
|
||||
- networking naming changes are handled
|
||||
- disable udev's persistent network interface naming scheme when the only NIC
|
||||
is eth0
|
||||
- inhibit upgrade when ethX is detected and more NICs exist
|
||||
- check whether all target upgrade repositories are available
|
||||
- output of dnf tool is always showed during the upgrade
|
||||
- all logs and reports are stored in /var/log/leapp/ directory
|
||||
|
||||
|
||||
* Tue Apr 09 2019 Vojtech Sokol <vsokol@redhat.com> - 0.6.0-4
|
||||
- Remove wrong license for sos subpackage
|
||||
Relates: #1636481
|
||||
|
||||
* Mon Apr 08 2019 Vojtech Sokol <vsokol@redhat.com> - 0.6.0-3
|
||||
- Fix patch
|
||||
Relates: #1636481
|
||||
|
||||
* Mon Apr 08 2019 Vojtech Sokol <vsokol@redhat.com> - 0.6.0-2
|
||||
- Fix specfile
|
||||
Relates: #1636481
|
||||
|
||||
* Mon Apr 08 2019 Vojtech Sokol <vsokol@redhat.com> - 0.6.0-1
|
||||
- Rebase to v0.6.0
|
||||
Relates: #1636481
|
||||
- Change license to Apache 2.0
|
||||
- leapp-repository-data subpackage is removed (it included data files)
|
||||
- data files are required to be delivered by user manually now
|
||||
- udev database is accessible during the upgrade
|
||||
- downtime of some machines is significantly reduced
|
||||
- sos plugin is introduced for collecting data needed for debugging
|
||||
- redhat-rpm-config package is removed during upgrade
|
||||
- system is checked for NFS filesystems usage and upgrade is inhibited when
|
||||
detected
|
||||
- /boot is checked for sufficient free space
|
||||
- upgrade is not inhibited any more when Logic SCSI Controllers are present
|
||||
- repositories used to upgrade the system are based on provided data files
|
||||
- specific syntax errors in grub configuration are handled when detected
|
||||
- SCTP is handled during the upgrade
|
||||
- migration of yum is handled (yum is available after the upgrade)
|
||||
- upgrade of NetworkManager is handled
|
||||
- upgrades with XFS filesystems without ftype is handled better
|
||||
- new reporting functionality is introduced and used
|
||||
- new dependencies: python2-jinja2, pciutils, sos
|
||||
- new directory /etc/leapp/files for data files is introduced
|
||||
- python files are precompiled to avoid left over pyc files
|
||||
|
||||
* Thu Jan 24 2019 Petr Stodulka <pstodulk@redhat.com> - 0.5.0-1
|
||||
- Rebase to v0.5.0
|
||||
Relates: #1636481
|
||||
- Require DNF v4+ and Leapp framework v0.5.0
|
||||
- Improved handling of RPM transaction using own DNF plugin and PES
|
||||
data
|
||||
- Models have been refactored to use new format supported by framework
|
||||
- Handle transaction preparation when release is set through RHSM
|
||||
- Fix failing overlayfs unmounting
|
||||
- Reduce the IPUWorkflo workflow
|
||||
- Include all required directories inside RPMs
|
||||
- Handle repositories using metalink and mirrorlist
|
||||
- Handle better installation of local RPMs
|
||||
- Move system dependencies into the RPM metapackage
|
||||
- Satisfy leapp and leapp-repository RPM dependencies during the
|
||||
upgrade
|
||||
|
||||
* Thu Jan 03 2019 Petr Stodulka <pstodulk@redhat.com> - 0.4.0-4
|
||||
- Activate LVM LVs during upgrade
|
||||
- Resolve file conflict of python-inotify during the RPM transaction
|
||||
Relates: #1636481
|
||||
|
||||
* Thu Nov 29 2018 Petr Stodulka <pstodulk@redhat.com> - 0.4.0-3
|
||||
- Add empty empty events for leapp-repository-data.
|
||||
- Requiring now DNF 2.7.5-19 or higher
|
||||
Relates: #1636481
|
||||
|
||||
* Wed Nov 21 2018 Petr Stodulka <pstodulk@redhat.com> - 0.4.0-2
|
||||
- update leapp-repository-data source
|
||||
Relates: #1636481
|
||||
|
||||
* Wed Nov 21 2018 Petr Stodulka <pstodulk@redhat.com> - 0.4.0-1
|
||||
- Rebase to 0.4.0
|
||||
- change hierarchy of repositories
|
||||
- scan RHEL system for custom and 3rd-party packages
|
||||
- improve error messages
|
||||
Relates: #1636481
|
||||
|
||||
* Fri Nov 09 2018 Petr Stodulka <pstodulk@redhat.com> - 0.3.1-1
|
||||
- Rebase to 0.3.1
|
||||
- move data to separate subpackage
|
||||
Relates: #1636481
|
||||
|
||||
* Wed Nov 07 2018 Petr Stodulka <pstodulk@redhat.com> - 0.3-1
|
||||
- Initial RPM
|
||||
Resolves: #1636481
|
||||
|
||||
- Initial build for EL 9
|
||||
- Resolves: RHEL-57043
|
||||
|
Loading…
Reference in New Issue
Block a user