95070c535c
- ci-fix-Clean-cache-if-no-datasource-fallback-5499.patch [RHEL-49736] - ci-Support-setting-mirrorlist-in-yum-repository-config-.patch [RHEL-49674] - Resolves: RHEL-49736 ([Cloud-init] [RHEL-9] Password reset feature broken with CloudstackDataSource) - Resolves: RHEL-49674 (Support setting mirrorlist in yum repository config)
146 lines
6.3 KiB
Diff
146 lines
6.3 KiB
Diff
From d27ac077dac3474fea3c7bb1a19afe50ecbcc64d Mon Sep 17 00:00:00 2001
|
|
From: Ani Sinha <anisinha@redhat.com>
|
|
Date: Thu, 18 Jul 2024 13:36:39 +0530
|
|
Subject: [PATCH 2/2] Support setting mirrorlist in yum repository config
|
|
(#5522)
|
|
|
|
RH-Author: xiachen <xiachen@redhat.com>
|
|
RH-MergeRequest: 104: Support setting mirrorlist in yum repository config (#5522)
|
|
RH-Jira: RHEL-49674
|
|
RH-Acked-by: Ani Sinha <anisinha@redhat.com>
|
|
RH-Acked-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
|
|
RH-Commit: [1/1] 4605a0304c6bed6614990b7194465230afa79778 (xiachen/cloud-init-centos)
|
|
|
|
'mirrorlist' config can be specified instead or along with 'baseurl' in the yum
|
|
repository config. Add support for specifying mirrorlist instead of 'baseurl'.
|
|
|
|
Fixes GH-5520
|
|
Signed-off-by: Ani Sinha <anisinha@redhat.com>
|
|
(cherry picked from commit 0b4084374440d2a5a9968129e0460a1a009d9830)
|
|
Signed-off-by: Amy Chen <xiachen@redhat.com>
|
|
---
|
|
cloudinit/config/cc_yum_add_repo.py | 2 +-
|
|
.../schemas/schema-cloud-config-v1.json | 10 +++++
|
|
doc/examples/cloud-config-yum-repo.txt | 3 +-
|
|
.../unittests/config/test_cc_yum_add_repo.py | 40 ++++++++++++++++++-
|
|
4 files changed, 52 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/cloudinit/config/cc_yum_add_repo.py b/cloudinit/config/cc_yum_add_repo.py
|
|
index 4fd66250..3870d24e 100644
|
|
--- a/cloudinit/config/cc_yum_add_repo.py
|
|
+++ b/cloudinit/config/cc_yum_add_repo.py
|
|
@@ -210,7 +210,7 @@ def handle(name: str, cfg: Config, cloud: Cloud, args: list) -> None:
|
|
n_repo_config[k] = v
|
|
repo_config = n_repo_config
|
|
missing_required = 0
|
|
- req_fields = ["baseurl", "metalink"]
|
|
+ req_fields = ["baseurl", "metalink", "mirrorlist"]
|
|
for req_field in req_fields:
|
|
if req_field not in repo_config:
|
|
missing_required += 1
|
|
diff --git a/cloudinit/config/schemas/schema-cloud-config-v1.json b/cloudinit/config/schemas/schema-cloud-config-v1.json
|
|
index 4fb7fd93..c5f46f37 100644
|
|
--- a/cloudinit/config/schemas/schema-cloud-config-v1.json
|
|
+++ b/cloudinit/config/schemas/schema-cloud-config-v1.json
|
|
@@ -3447,6 +3447,11 @@
|
|
"format": "uri",
|
|
"description": "Specifies a URL to a metalink file for the repomd.xml"
|
|
},
|
|
+ "mirrorlist": {
|
|
+ "type": "string",
|
|
+ "format": "uri",
|
|
+ "description": "Specifies a URL to a file containing a baseurls list"
|
|
+ },
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Optional human-readable name of the yum repo."
|
|
@@ -3484,6 +3489,11 @@
|
|
"required": [
|
|
"metalink"
|
|
]
|
|
+ },
|
|
+ {
|
|
+ "required": [
|
|
+ "mirrorlist"
|
|
+ ]
|
|
}
|
|
]
|
|
}
|
|
diff --git a/doc/examples/cloud-config-yum-repo.txt b/doc/examples/cloud-config-yum-repo.txt
|
|
index 6a4037e2..cee26677 100644
|
|
--- a/doc/examples/cloud-config-yum-repo.txt
|
|
+++ b/doc/examples/cloud-config-yum-repo.txt
|
|
@@ -11,9 +11,10 @@ yum_repos:
|
|
# Any repository configuration options
|
|
# See: man yum.conf
|
|
#
|
|
- # At least one of 'baseurl' or 'metalink' is required!
|
|
+ # At least one of 'baseurl' or 'metalink' or 'mirrorlist' is required!
|
|
baseurl: http://download.fedoraproject.org/pub/epel/testing/5/$basearch
|
|
metalink: https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
|
|
+ mirrorlist: https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&
|
|
enabled: false
|
|
failovermethod: priority
|
|
gpgcheck: true
|
|
diff --git a/tests/unittests/config/test_cc_yum_add_repo.py b/tests/unittests/config/test_cc_yum_add_repo.py
|
|
index 1f27d1fb..000792b4 100644
|
|
--- a/tests/unittests/config/test_cc_yum_add_repo.py
|
|
+++ b/tests/unittests/config/test_cc_yum_add_repo.py
|
|
@@ -31,7 +31,8 @@ class TestConfig(helpers.FilesystemMockingTestCase):
|
|
"yum_repos": {
|
|
"epel-testing": {
|
|
"name": "Extra Packages for Enterprise Linux 5 - Testing",
|
|
- # At least one of baseurl or metalink must be present.
|
|
+ # At least one of baseurl or metalink or mirrorlist
|
|
+ # must be present.
|
|
# Missing this should cause the repo not to be written
|
|
# 'baseurl': 'http://blah.org/pub/epel/testing/5/$barch',
|
|
"enabled": False,
|
|
@@ -84,6 +85,43 @@ class TestConfig(helpers.FilesystemMockingTestCase):
|
|
for k, v in expected[section].items():
|
|
self.assertEqual(parser.get(section, k), v)
|
|
|
|
+ def test_mirrorlist_config(self):
|
|
+ cfg = {
|
|
+ "yum_repos": {
|
|
+ "epel-testing": {
|
|
+ "name": "Extra Packages for Enterprise Linux 5 - Testing",
|
|
+ "mirrorlist": "http://mirrors.blah.org/metalink?repo=rhel-$releasever",
|
|
+ "enabled": False,
|
|
+ "gpgcheck": True,
|
|
+ "gpgkey": "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL",
|
|
+ "failovermethod": "priority",
|
|
+ },
|
|
+ },
|
|
+ }
|
|
+ self.patchUtils(self.tmp)
|
|
+ self.patchOS(self.tmp)
|
|
+ cc_yum_add_repo.handle("yum_add_repo", cfg, None, [])
|
|
+ contents = util.load_file("/etc/yum.repos.d/epel-testing.repo")
|
|
+ parser = configparser.ConfigParser()
|
|
+ parser.read_string(contents)
|
|
+ expected = {
|
|
+ "epel-testing": {
|
|
+ "name": "Extra Packages for Enterprise Linux 5 - Testing",
|
|
+ "failovermethod": "priority",
|
|
+ "gpgkey": "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL",
|
|
+ "enabled": "0",
|
|
+ "mirrorlist": "http://mirrors.blah.org/metalink?repo=rhel-$releasever",
|
|
+ "gpgcheck": "1",
|
|
+ }
|
|
+ }
|
|
+ for section in expected:
|
|
+ self.assertTrue(
|
|
+ parser.has_section(section),
|
|
+ "Contains section {0}".format(section),
|
|
+ )
|
|
+ for k, v in expected[section].items():
|
|
+ self.assertEqual(parser.get(section, k), v)
|
|
+
|
|
def test_write_config(self):
|
|
cfg = {
|
|
"yum_repos": {
|
|
--
|
|
2.39.3
|
|
|