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
|
Name: leapp-repository
|
||||||
Version: 0.22.0
|
Version: 0.22.0
|
||||||
Release: 5%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: Repositories for leapp
|
Summary: Repositories for leapp
|
||||||
|
|
||||||
License: ASL 2.0
|
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
|
Patch0036: 0036-Deprecate-is_rhel_alt-from-share-libraries.patch
|
||||||
Patch0037: 0037-data-update-data-files-stream-3.3-1380.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
|
%description
|
||||||
%{summary}
|
%{summary}
|
||||||
@ -342,34 +308,6 @@ Requires: libdb-utils
|
|||||||
%patch -P 0035 -p1
|
%patch -P 0035 -p1
|
||||||
%patch -P 0036 -p1
|
%patch -P 0036 -p1
|
||||||
%patch -P 0037 -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
|
%build
|
||||||
@ -451,831 +389,71 @@ done;
|
|||||||
# no files here
|
# no files here
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Jul 18 2025 Karolina Kula <kkula@redhat.com> - 0.22.0-5
|
* Wed May 14 2025 Petr Stodulka <pstodulk@redhat.com> - 0.22.0-2
|
||||||
- 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
|
|
||||||
- Require leapp-framework >= 6.1
|
- Require leapp-framework >= 6.1
|
||||||
- Simplified use of the LiveMode experimental feature with additional enhancements
|
- 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
|
- 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
|
- Gracefully handle CentOS OS versioning style
|
||||||
- Introduced the --enable-experimental-feature to simplify use of experimental features
|
- Introduced the --enable-experimental-feature to simplify use of experimental features
|
||||||
- Manage RPM GPG keys during the upgrade respecting used linux distributions
|
- 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
|
- Prevent a crach during post-upgrade phases when no custom SELinux modules needs to be migrated
|
||||||
- Update leapp upgrade data files
|
- 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
|
* Fri Feb 14 2025 Petr Stodulka <pstodulk@redhat.com> - 0.22.0-1
|
||||||
- Rebase to new upstream 0.22.0
|
- Rebase to new upstream 0.22.0
|
||||||
- Minor updates in generated reports
|
- 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
|
* 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
|
- 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
|
- 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-57043, RHEL-52309, RHEL-60034
|
||||||
- Resolves: RHEL-67621, RHEL-51072, RHEL-41193
|
|
||||||
|
|
||||||
* Fri Jan 17 2025 Petr Stodulka <pstodulk@redhat.com> - 0.21.0-5
|
* 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 crashing when there are duplicate packages in the received instructions
|
||||||
- Fix pes events scanner not respecting user’s transaction configuration
|
- 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
|
- 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
|
- 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
|
* Mon Nov 18 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
|
|
||||||
- Require leapp-framework 6.0+
|
- Require leapp-framework 6.0+
|
||||||
- Update leapp-deps package to satisfy leapp-framework-dependencies 6
|
- Update leapp-deps package to satisfy leapp-framework-dependencies 6
|
||||||
- Add possibility to use net.naming-scheme during the upgrade
|
- Add dependency on libdb-utils
|
||||||
- Cap max size of the sparse files to 1TiB for storage with large amount of free space
|
|
||||||
- Enable upgrade for systems with LUKS bound to Clevis with TPM 2.0 token
|
- 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
|
- 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
|
- Fix the report when handling broken parsing of kernel cmdline
|
||||||
- Generate proper error message instead of ModelViolationError when parsing invalid repository definition
|
- 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
|
- 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
|
- Skip checking of (PKI) `directory-hash` dir to speedup the upgrade process and clean logs
|
||||||
- Update leapp upgrade data files
|
- Update leapp upgrade data files
|
||||||
- Resolves: RHEL-67621, RHEL-57064, RHEL-56251, RHEL-50686, RHEL-41193
|
- Resolves: RHEL-57043
|
||||||
- Resolves: RHEL-34570, RHEL-26459, RHEL-23473, RHEL-16881, RHEL-3294
|
|
||||||
|
* 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
|
* 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
|
- Initial build for EL 9
|
||||||
- Resolves: RHEL-27847
|
- Resolves: RHEL-57043
|
||||||
|
|
||||||
* 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
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user