Revert OL modifications

This commit is contained in:
eabdullin 2025-07-22 11:16:42 +00:00
parent fc3275b885
commit 80e354bc04
12 changed files with 61 additions and 1048 deletions

View File

@ -1,50 +0,0 @@
Enable ec2_utils to stop retrying to get ec2 metadata
Signed-off-by: David Sloboda <david.x.sloboda@oracle.com>
Reviewed-by: Laurence Rochfort <laurence.rochfort@oracle.com>
diff -ruN a/cloudinit/sources/helpers/openstack.py b/cloudinit/sources/helpers/openstack.py
--- a/cloudinit/sources/helpers/openstack.py 2018-04-02 12:51:20.053828637 -0700
+++ b/cloudinit/sources/helpers/openstack.py 2018-04-02 12:33:20.000000000 -0700
@@ -464,6 +464,16 @@
return results
+def should_retry_cb(_request_args, cause):
+ try:
+ code = int(cause.code)
+ if code >= 400:
+ return False
+ except (TypeError, ValueError):
+ # Older versions of requests didn't have a code.
+ pass
+ return True
+
class MetadataReader(BaseReader):
def __init__(self, base_url, ssl_details=None, timeout=5, retries=5):
@@ -489,16 +499,6 @@
return self._versions
def _path_read(self, path, decode=False):
- def should_retry_cb(_request_args, cause):
- try:
- code = int(cause.code)
- if code >= 400:
- return False
- except (TypeError, ValueError):
- # Older versions of requests didn't have a code.
- pass
- return True
-
response = url_helper.readurl(
path,
retries=self.retries,
@@ -519,6 +519,7 @@
ssl_details=self.ssl_details,
timeout=self.timeout,
retries=self.retries,
+ exception_cb=should_retry_cb,
)

View File

@ -1,136 +0,0 @@
From 37a6837813e418486af8cbef436ab82a8be3e3fa Mon Sep 17 00:00:00 2001
From: Darren Archibald <darren.archibald@oracle.com>
Date: Fri, 23 Feb 2024 06:06:30 -0800
Subject: [PATCH] tests/unittests: add a new unit test for network manager net
activator (#4672)
Some changes in behavior in network manager net activator was brought in with
the commit
d1d5166895da ("net/nm: check for presence of ifcfg files when nm connection files are absent")
This change adds some unit tests that exercizes network manager activator's
bring_up_interface() method that tests failure scenarios as well as cases
where an ifcfg file is used to bring the interface up.
Signed-off-by: Ani Sinha <anisinha@redhat.com>
(cherry picked from commit bb474df78bfe45ea5f05907eb710e8d5de764fc8)
Signed-off-by: Darren Archibald <darren.archibald@oracle.com>
---
tests/unittests/test_net_activators.py | 101 +++++++++++++++++++++++++
1 file changed, 101 insertions(+)
diff --git a/tests/unittests/test_net_activators.py b/tests/unittests/test_net_activators.py
index 2a363ec..f95c8a7 100644
--- a/tests/unittests/test_net_activators.py
+++ b/tests/unittests/test_net_activators.py
@@ -288,6 +288,107 @@ class TestActivatorsBringUp:
for call in m_subp.call_args_list:
assert call in expected_call_list
+class TestNetworkManagerActivatorBringUp:
+ @patch("cloudinit.subp.subp", return_value=("", ""))
+ @patch(
+ "cloudinit.net.network_manager.available_nm_ifcfg_rh",
+ return_value=True,
+ )
+ @patch("os.path.isfile")
+ @patch("os.path.exists", return_value=True)
+ def test_bring_up_interface_no_nm_conn(
+ self, m_exists, m_isfile, m_plugin, m_subp
+ ):
+ """
+ There is no network manager connection file but ifcfg-rh plugin is
+ present and ifcfg interface config files are also present. In this
+ case, we should use ifcfg files.
+ """
+
+ def fake_isfile_no_nmconn(filename):
+ return False if filename.endswith(".nmconnection") else True
+
+ m_isfile.side_effect = fake_isfile_no_nmconn
+
+ expected_call_list = [
+ (
+ (
+ [
+ "nmcli",
+ "connection",
+ "load",
+ "".join(
+ [
+ "/etc/sysconfig/network-scripts/ifcfg-eth0",
+ ]
+ ),
+ ],
+ ),
+ {},
+ ),
+ (
+ (
+ [
+ "nmcli",
+ "connection",
+ "up",
+ "filename",
+ "".join(
+ [
+ "/etc/sysconfig/network-scripts/ifcfg-eth0",
+ ]
+ ),
+ ],
+ ),
+ {},
+ ),
+ ]
+
+ index = 0
+ assert NetworkManagerActivator.bring_up_interface("eth0")
+ for call in m_subp.call_args_list:
+ assert call == expected_call_list[index]
+ index += 1
+
+ @patch("cloudinit.subp.subp", return_value=("", ""))
+ @patch(
+ "cloudinit.net.network_manager.available_nm_ifcfg_rh",
+ return_value=False,
+ )
+ @patch("os.path.isfile")
+ @patch("os.path.exists", return_value=True)
+ def test_bring_up_interface_no_plugin_no_nm_conn(
+ self, m_exists, m_isfile, m_plugin, m_subp
+ ):
+ """
+ The ifcfg-rh plugin is absent and nmconnection file is also
+ not present. In this case, we can't use ifcfg file and the
+ interface bring up should fail.
+ """
+
+ def fake_isfile_no_nmconn(filename):
+ return False if filename.endswith(".nmconnection") else True
+
+ m_isfile.side_effect = fake_isfile_no_nmconn
+ assert not NetworkManagerActivator.bring_up_interface("eth0")
+
+ @patch("cloudinit.subp.subp", return_value=("", ""))
+ @patch(
+ "cloudinit.net.network_manager.available_nm_ifcfg_rh",
+ return_value=True,
+ )
+ @patch("os.path.isfile", return_value=False)
+ @patch("os.path.exists", return_value=True)
+ def test_bring_up_interface_no_conn_file(
+ self, m_exists, m_isfile, m_plugin, m_subp
+ ):
+ """
+ Neither network manager connection files are present nor
+ ifcfg files are present. Even if ifcfg-rh plugin is present,
+ we can not bring up the interface. So bring_up_interface()
+ should fail.
+ """
+ assert not NetworkManagerActivator.bring_up_interface("eth0")
IF_UP_DOWN_BRING_DOWN_CALL_LIST: list = [
((["ifdown", "eth0"],), {}),
--
2.31.1

View File

@ -1,44 +0,0 @@
From e7aba0f0ccd6f023667f41385f25044a94428ed3 Mon Sep 17 00:00:00 2001
From: Darren Archibald <darren.archibald@oracle.com>
Date: Fri, 23 Feb 2024 05:56:06 -0800
Subject: [PATCH] ignore enslaved interface
Changes to ignore all enslaved interfaces.
https://jira.oci.oraclecorp.com/browse/LINUX-1947
Orabug: 30092148
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
Signed-off-by: Darren Archibald <darren.archibald@oracle.com>
---
cloudinit/net/__init__.py | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/cloudinit/net/__init__.py b/cloudinit/net/__init__.py
index c0888f5..b093796 100644
--- a/cloudinit/net/__init__.py
+++ b/cloudinit/net/__init__.py
@@ -335,6 +335,10 @@ def is_netfail_standby(devname, driver=None):
return True
+def is_slave(devname):
+ return os.path.exists(sys_dev_path(devname, "master"))
+
+
def is_renamed(devname):
"""
/* interface name assignment types (sysfs name_assign_type attribute) */
@@ -1054,6 +1058,9 @@ def get_interfaces(
if is_bridge(name):
filtered_logger("Ignoring bridge interface: %s", name)
continue
+ if is_slave(name):
+ filtered_logger("Ignoring bridge interface: %s", name)
+ continue
if filter_vlan and is_vlan(name):
continue
if is_bond(name):
--
2.31.1

View File

@ -1,26 +0,0 @@
From 8735577c8a683407e94abed0cfccc3aacbb9aa47 Mon Sep 17 00:00:00 2001
From: Si-Wei Liu <si-wei.liu@oracle.com>
Date: Wed, 10 Jun 2020 20:59:29 -0400
Subject: [PATCH] sysconfig: add Oracle Linux variant to known distros
otherwise anything sysconfig breaks on Oracle Linux.
JIRA: https://jira.oci.oraclecorp.com/browse/LINUX-6128
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
---
cloudinit/net/sysconfig.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
index e94590f..55b7db5 100644
--- a/cloudinit/net/sysconfig.py
+++ b/cloudinit/net/sysconfig.py
@@ -35,6 +35,7 @@
"suse",
"TencentOS",
"virtuozzo",
+ "ol",
]

View File

@ -1,77 +0,0 @@
From 51cdd87ad861d5d47c212258bf00402a4dec2198 Mon Sep 17 00:00:00 2001
From: Darren Archibald <darren.archibald@oracle.com>
Date: Fri, 23 Feb 2024 06:17:54 -0800
Subject: [PATCH] Update cloud-init collect-logs for Oracle Linux
Updating the code to collect triage logs with OL distro specic methods.
Orabug: 30435672
Signed-off-by: Vijay Balakrishna <vijay.balakrishna@oracle.com>
Reviewed-by: Si-Wei Liu <si-wei.liu@oracle.com>
Acked-by: Joe Kennedy <joe.kennedy@oracle.com>
Reviewed-by: Laurence Rochfort <laurence.rochfort@oracle.com
Signed-off-by: Darren Archibald <darren.archibald@oracle.com>
Signed-off-by: Rajesh Harekal <rajesh.harekal@oracle.com>
---
cloudinit/cmd/devel/logs.py | 26 ++++++++++++++++----------
cloudinit/util.py | 1 +
2 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/cloudinit/cmd/devel/logs.py b/cloudinit/cmd/devel/logs.py
index 8312218..85d976a 100755
--- a/cloudinit/cmd/devel/logs.py
+++ b/cloudinit/cmd/devel/logs.py
@@ -21,7 +21,7 @@
from cloudinit.stages import Init
from cloudinit.subp import ProcessExecutionError, subp
from cloudinit.temp_utils import tempdir
-from cloudinit.util import copy, get_config_logfiles, write_file
+from cloudinit.util import copy, get_config_logfiles, write_file, system_info
LOG = cast(loggers.CustomLoggerType, logging.getLogger(__name__))
@@ -214,13 +214,21 @@
file_path=log_dir / "version",
msg="cloud-init --version",
)
- dpkg_ver = _write_command_output_to_file(
- cmd=["dpkg-query", "--show", "-f=${Version}\n", "cloud-init"],
- file_path=log_dir / "dpkg-version",
- msg="dpkg version",
- )
- if not version:
- version = dpkg_ver or "not-available"
+ if system_info()['variant'] == "ol":
+ rpm_ver = _write_command_output_to_file(
+ cmd=["rpm", "-q", "--queryformat",
+ "[%{VERSION}-%{RELEASE}.%{ARCH}]\n", "cloud-init"],
+ file_path=log_dir / "rpm-version",
+ msg="rpm version")
+ if not version:
+ version = rpm_ver if rpm_ver else "not-available"
+ else:
+ dpkg_ver = _write_command_output_to_file(
+ cmd=["dpkg-query", "--show", "-f=${Version}\n", "cloud-init"],
+ file_path=log_dir / "dpkg-version",
+ msg="dpkg version")
+ if not version:
+ version = dpkg_ver or "not-available"
def _collect_system_logs(
diff --git a/cloudinit/util.py b/cloudinit/util.py
index 3295735..db7bb97 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -660,6 +660,7 @@ def _get_variant(info):
"suse",
"tencentos",
"virtuozzo",
+ "ol",
):
variant = linux_dist
elif linux_dist in ("ubuntu", "linuxmint", "mint"):
--
2.31.1

View File

@ -1,112 +0,0 @@
From 250aa45f74e29b95f81b24811c972369605bd24e Mon Sep 17 00:00:00 2001
From: Vijay Balakrishna <vijay.balakrishna@oracle.com>
Date: Tue, 5 Nov 2019 16:00:21 -0500
Subject: [PATCH] Add static cloud.cfg file for OL7.
Adding OL specific cloud.cfg file to enable updates cloud-init
config file independently, adding newly verified ntp module.
Orabug: 30435672
Signed-off-by: Vijay Balakrishna <vijay.balakrishna@oracle.com>
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
Acked-by: Joe Kennedy <joe.kennedy@oracle.com>
Reviewed-by: Laurence Rochfort <laurence.rochfort@oracle.com>
---
ol/README.ol | 6 ++++++
ol/cloud.cfg | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+)
create mode 100644 ol/README.ol
create mode 100644 ol/cloud.cfg
diff --git a/ol/README.ol b/ol/README.ol
new file mode 100644
index 0000000..f59d559
--- /dev/null
+++ b/ol/README.ol
@@ -0,0 +1,6 @@
+The following cloud-init modules are currently unsupported on this OS:
+ - apt_update_upgrade ('apt_update', 'apt_upgrade', 'apt_mirror', 'apt_preserve_sources_list', 'apt_old_mirror', 'apt_sources', 'debconf_selections', 'packages' options)
+ - byobu ('byobu_by_default' option)
+ - chef
+ - grub_dpkg
+ - rh_subscription
diff --git a/ol/cloud.cfg b/ol/cloud.cfg
new file mode 100644
index 0000000..2ee1fb3
--- /dev/null
+++ b/ol/cloud.cfg
@@ -0,0 +1,69 @@
+users:
+ - default
+
+disable_root: 1
+ssh_pwauth: 0
+
+mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
+resize_rootfs_tmp: /dev
+ssh_deletekeys: 0
+ssh_genkeytypes: ~
+syslog_fix_perms: ~
+disable_vmware_customization: false
+
+cloud_init_modules:
+ - disk_setup
+ - migrator
+ - bootcmd
+ - write-files
+ - growpart
+ - resizefs
+ - set_hostname
+ - update_hostname
+ - update_etc_hosts
+ - rsyslog
+ - users-groups
+ - ssh
+
+cloud_config_modules:
+ - mounts
+ - locale
+ - set-passwords
+ - ntp
+ - yum-add-repo
+ - package-update-upgrade-install
+ - timezone
+ - puppet
+ - chef
+ - salt-minion
+ - mcollective
+ - disable-ec2-metadata
+ - runcmd
+
+cloud_final_modules:
+ - rightscale_userdata
+ - scripts-per-once
+ - scripts-per-boot
+ - scripts-per-instance
+ - scripts-user
+ - ssh-authkey-fingerprints
+ - keys-to-console
+ - phone-home
+ - final-message
+ - power-state-change
+
+system_info:
+ default_user:
+ name: cloud-user
+ lock_passwd: true
+ gecos: Cloud User
+ groups: [adm, systemd-journal]
+ sudo: ["ALL=(ALL) NOPASSWD:ALL"]
+ shell: /bin/bash
+ distro: rhel
+ paths:
+ cloud_dir: /var/lib/cloud
+ templates_dir: /etc/cloud/templates
+ ssh_svcname: sshd
+
+# vim:syntax=yaml
--
1.8.3.1

View File

@ -1,55 +0,0 @@
From 2b92e042bb8a4510abec38fcfc302d8de1e28f37 Mon Sep 17 00:00:00 2001
From: Darren Archibald <darren.archibald@oracle.com>
Date: Fri, 23 Feb 2024 06:55:32 -0800
Subject: [PATCH] spacewalk: fix CA cert file path for Oracle Linux
Update the CA cert file that is available in Oracle Linux to register with ULN.
Orabug: 30435672
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
Signed-off-by: Vijay Balakrishna <vijay.balakrishna@oracle.com>
Acked-by: Joe Kennedy <joe.kennedy@oracle.com>
Reviewed-by: Laurence Rochfort <laurence.rochfort@oracle.com>
Signed-off-by: Darren Archibald <darren.archibald@oracle.com>
Signed-off-by: Rajesh Harekal <rajesh.harekal@oracle.com>
---
cloudinit/config/cc_spacewalk.py | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/cloudinit/config/cc_spacewalk.py b/cloudinit/config/cc_spacewalk.py
index 08514f2..7248cce 100644
--- a/cloudinit/config/cc_spacewalk.py
+++ b/cloudinit/config/cc_spacewalk.py
@@ -3,7 +3,7 @@
import logging
-from cloudinit import subp
+from cloudinit import subp, util
from cloudinit.cloud import Cloud
from cloudinit.config import Config
from cloudinit.config.schema import MetaSchema
@@ -21,6 +21,7 @@
distros = ["redhat", "fedora", "openeuler"]
required_packages = ["rhn-setup"]
def_ca_cert_path = "/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT"
+ol_ca_cert_path = "/usr/share/rhn/ULN-CA-CERT"
def is_registered():
@@ -74,9 +75,14 @@
# Need to have this installed before further things will work.
cloud.distro.install_packages(required_packages)
if not is_registered():
+ if util.system_info()['variant'] == "ol":
+ cert = ol_ca_cert_path
+ else:
+ cert = def_ca_cert_path
do_register(
spacewalk_server,
cloud.datasource.get_hostname(fqdn=True).hostname,
+ ca_cert_path=cert,
proxy=cfg.get("proxy"),
activation_key=cfg.get("activation_key"),
)

View File

@ -1,31 +0,0 @@
cloud-init service file is missing sshd required services
Orabug: 32183938
in the systemd sshd-keygen.target file, the following services are listed:
[Unit]
Wants=sshd-keygen@rsa.service
Wants=sshd-keygen@ecdsa.service
Wants=sshd-keygen@ed25519.service
Need to add the following to the cloud-init service file:
Before=sshd-keygen@rsa.service
Before=sshd-keygen@ecdsa.service
Before=sshd-keygen@ed25519.service
Signed-off-by: Isaac Chen <isaac.chen@oracle.com>
Signed-off-by: Rajesh Harekal <rajesh.harekal@oracle.com>
diff -up cloud-init-19.4/systemd/cloud-init.service.tmpl.orig cloud-init-19.4/systemd/cloud-init.service.tmpl
--- cloud-init-24.4/systemd/cloud-init.service.tmpl 2025-01-28 11:13:57.339346352 -0800
+++ cloud-init-24.4/systemd/cloud-init.service.tmpl 2025-01-28 11:14:31.587669418 -0800
@@ -28,7 +28,9 @@
After=dbus.service
{% endif %}
Before=network-online.target
-Before=sshd-keygen.service
+Before=sshd-keygen@rsa.service
+Before=sshd-keygen@ecdsa.service
+Before=sshd-keygen@ed25519.service
Before=sshd.service
Before=systemd-user-sessions.service
{% if variant in ["ubuntu", "unknown", "debian"] %}

View File

@ -1,22 +0,0 @@
cloud-init service file is missing sshd required services
Orabug: 32183938
This patch is the supplement of patch orabug32183938-009, where changes
to cloud-init.service also need to be added to files in rhel/systemd.
Signed-off-by: Isaac Chen <isaac.chen@oracle.com>
diff -up cloud-init-19.4/systemd/cloud-init.service.tmpl.orig cloud-init-19.4/systemd/cloud-init.service.tmpl
--- cloud-init-19.4/systemd/cloud-init.service.tmpl.orig 2020-12-11 19:59:37.331277979 -0800
+++ cloud-init-19.4/systemd/cloud-init.service.tmpl 2020-12-11 20:00:38.867459043 -0800
@@ -5,7 +5,9 @@
DefaultDependencies=no
{% endif %}
Wants=cloud-init-local.service
-Wants=sshd-keygen.service
+Wants=sshd-keygen@rsa.service
+Wants=sshd-keygen@ecdsa.service
+Wants=sshd-keygen@ed25519.service
Wants=sshd.service
After=cloud-init-local.service
After=systemd-networkd-wait-online.service

View File

@ -1,287 +0,0 @@
From e921be03f802ee154ed1ddf044e276b23af0d2b6 Mon Sep 17 00:00:00 2001
From: Darren Archibald <darren.archibald@oracle.com>
Date: Fri, 23 Feb 2024 07:52:25 -0800
Subject: [PATCH] Add Oracle to distro detection logic in cloud.cfg.tmpl
Oracle Linux is being detected as "ol" variant by cloud-init.
This patch adds "ol" to the list of supported variants, and applies needed settings to it.
You can notice that variant "ol" is being set as distro "rhel" in a couple of places,
that is expected as this designated that base distro for "ol" is "rhel" ( which is true )
The main reason for this change is that cloud-init package dropped hardcoded configs that set OL as rhel
and to make cloud-init behave on OL systems as expected we need to add "ol" designation to supported list.
Orabug: 34845400
Signed-off-by: Alex Burmashev <alexander.burmashev@oracle.com>
Signed-off-by: Darren Archibald <darren.archibald@oracle.com>
Signed-off-by: Rajesh Harekal <rajesh.harekal@oracle.com>
---
cloudinit/distros/__init__.py | 1 +
cloudinit/sources/DataSourceRbxCloud.py | 2 +-
config/cloud.cfg.tmpl | 33 ++++++++++++++++++-------
systemd/cloud-final.service | 4 ++-
systemd/cloud-init-local.service.tmpl | 12 ++++++---
systemd/cloud-init.service.tmpl | 8 ++++--
systemd/cloud-init-generator.tmpl | 1 +++--
tests/unittests/test_util.py | 1 +
8 files changed, 48 insertions(+), 17 deletions(-)
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
index 79e2623..8f1381b 100644
--- a/cloudinit/distros/__init__.py
+++ b/cloudinit/distros/__init__.py
@@ -78,6 +78,7 @@ OSFAMILIES = {
"rhel",
"rocky",
"virtuozzo",
+ "ol",
],
"suse": [
"opensuse",
diff --git a/cloudinit/sources/DataSourceRbxCloud.py b/cloudinit/sources/DataSourceRbxCloud.py
index 9214f1b..5379132 100644
--- a/cloudinit/sources/DataSourceRbxCloud.py
+++ b/cloudinit/sources/DataSourceRbxCloud.py
@@ -60,7 +60,7 @@ def _sub_arp(cmd):
def gratuitous_arp(items, distro):
source_param = "-S"
- if distro.name in ["fedora", "centos", "rhel"]:
+ if distro.name in ["fedora", "centos", "rhel", "ol"]:
source_param = "-s"
for item in items:
try:
diff --git a/config/cloud.cfg.tmpl b/config/cloud.cfg.tmpl
index a470120..f440830 100644
--- a/config/cloud.cfg.tmpl
+++ b/config/cloud.cfg.tmpl
@@ -59,10 +59,10 @@
{% endif %}
{%- if variant in ["alpine", "amazon", "fedora", "OpenCloudOS", "openeuler",
- "openmandriva", "photon", "TencentOS"] or is_rhel %}
+ "openmandriva", "photon", "TencentOS", "ol"] or is_rhel %}
-{% if is_rhel %}
-mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.after=cloud-init-network.service,_netdev', '0', '2']
+{% if variant in ["ol"] or is_rhel %}
+mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.after=cloud-init.service,_netdev', '0', '2']
{% else %}
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
{% endif %}
@@ -101,7 +101,7 @@
{% endif -%}
-{% if is_rhel %}
+{% if variant in ["ol"] or is_rhel %}
# Default redhat settings:
ssh_deletekeys: true
ssh_genkeytypes: ['rsa', 'ecdsa', 'ed25519']
@@ -166,18 +166,20 @@
- ubuntu_pro
{% endif %}
{% elif variant in ["azurelinux", "fedora", "mariner", "openeuler",
- "openmandriva", "photon"] or is_rhel %}
+ "openmandriva", "photon", "ol"] or is_rhel %}
{% if is_rhel %}
- rh_subscription
{% endif %}
-{% if variant not in ["azurelinux", "mariner", "photon"] %}
+{% if variant not in ["azurelinux", "mariner", "photon", "ol"] %}
- spacewalk
{% endif %}
- yum_add_repo
{% elif variant == "suse" %}
- zypper_add_repo
{% endif %}
+{% if variant not in ["ol"] %}
- ntp
+{% endif %}
- timezone
{% if variant not in ["azurelinux"] %}
- disable_ec2_metadata
@@ -207,6 +209,8 @@
{% if variant not in ["azurelinux"] %}
- mcollective
- salt_minion
+{% endif %}
+{% if variant not in ["azurelinux", "ol"] %}
- reset_rmc
{% endif %}
- scripts_vendor
@@ -230,6 +234,8 @@
"OpenCloudOS", "openeuler", "openmandriva", "photon", "suse",
"TencentOS", "ubuntu"] or is_rhel %}
distro: {{ variant }}
+{% elif variant == "ol" %}
+ distro: rhel
{% elif variant == "dragonfly" %}
distro: dragonflybsd
{% else %}
@@ -238,7 +244,9 @@
{% endif %}
# Default user name + that default users groups (if added/used)
default_user:
-{% if variant in usernames %}
+{% if variant == "ol" %}
+ name: cloud-user
+{% elif variant in usernames %}
name: {{ usernames[variant] }}
{% else %}
name: {{ variant }}
@@ -246,11 +254,13 @@
{% if variant in ["alpine", "amazon", "aosc", "arch", "azurelinux", "debian", "fedora",
"gentoo", "mariner", "OpenCloudOS", "openeuler",
"openmandriva", "photon", "suse", "TencentOS", "ubuntu",
- "unknown"]
+ "unknown", "ol"]
or is_bsd or is_rhel %}
lock_passwd: True
{% endif %}
-{% if variant in gecos %}
+{% if variant == "ol" %}
+ gecos: Cloud User
+{% elif variant in gecos %}
gecos: {{ gecos[variant] }}
{% else %}
gecos: {{ variant }} Cloud User
@@ -259,7 +269,7 @@
groups: [{{ groups[variant] }}]
{% elif is_bsd %}
groups: [wheel]
-{% elif is_rhel %}
+{% elif variant in ["ol"] or is_rhel %}
groups: [adm, systemd-journal]
{% else %}
groups: [wheel, adm, systemd-journal]
@@ -328,7 +338,7 @@
{% if variant in ["alpine", "amazon", "aosc", "arch", "azurelinux", "debian", "fedora",
"gentoo", "mariner", "OpenCloudOS", "openeuler",
"openmandriva", "photon", "suse", "TencentOS", "ubuntu",
- "unknown"]
+ "unknown", "ol"]
or is_rhel %}
# Other config here will be given to the distro class and/or path classes
paths:
@@ -375,7 +385,7 @@
ssh_svcname: ssh
{% elif variant in ["alpine", "amazon", "aosc", "arch", "azurelinux", "fedora",
"gentoo", "mariner", "OpenCloudOS", "openeuler",
- "openmandriva", "photon", "suse", "TencentOS"]
+ "openmandriva", "photon", "suse", "TencentOS", "ol"]
or is_rhel %}
ssh_svcname: sshd
{% endif %}
diff --git a/systemd/cloud-final.service b/systemd/cloud-final.service
index ab3daed..1c69dde 100644
--- a/systemd/cloud-final.service
+++ b/systemd/cloud-final.service
@@ -3,7 +3,6 @@
Description=Cloud-init: Final Stage
After=network-online.target time-sync.target cloud-config.service rc-local.service
After=multi-user.target
-Before=apt-daily.service
Wants=network-online.target cloud-config.service
ConditionPathExists=!/etc/cloud/cloud-init.disabled
ConditionKernelCommandLine=!cloud-init=disabled
diff --git a/systemd/cloud-init-local.service.tmpl b/systemd/cloud-init-local.service.tmpl
index 3a1ca7f..4750c36 100644
--- a/systemd/cloud-init-local.service.tmpl
+++ b/systemd/cloud-init-local.service.tmpl
@@ -2,19 +2,21 @@
[Unit]
# https://docs.cloud-init.io/en/latest/explanation/boot.html
Description=Cloud-init: Local Stage (pre-network)
-{% if variant in ["almalinux", "cloudlinux", "ubuntu", "unknown", "debian", "rhel"] %}
+{% if variant in ["almalinux", "cloudlinux", "ubuntu", "unknown", "debian", "rhel", "ol"] %}
DefaultDependencies=no
{% endif %}
Wants=network-pre.target
+{% if variant not in ["ol"] %}
After=hv_kvp_daemon.service
-{% if variant in ["almalinux", "cloudlinux", "rhel"] %}
+{% endif %}
+{% if variant in ["almalinux", "cloudlinux", "rhel", "ol"] %}
Requires=dbus.socket
After=dbus.socket
{% endif %}
After=systemd-remount-fs.service
Before=network-pre.target
Before=shutdown.target
-{% if variant in ["almalinux", "cloudlinux", "rhel"] %}
+{% if variant in ["almalinux", "cloudlinux", "rhel", "ol"] %}
Before=firewalld.target
{% endif %}
{% if variant in ["ubuntu", "unknown", "debian"] %}
@@ -28,7 +30,7 @@
[Service]
Type=oneshot
-{% if variant in ["almalinux", "cloudlinux", "rhel"] %}
+{% if variant in ["almalinux", "cloudlinux", "rhel", "ol"] %}
ExecStartPre=/sbin/restorecon /run/cloud-init
{% endif %}
ExecStart=/usr/bin/cloud-init init --local
diff --git a/systemd/cloud-init.service.tmpl b/systemd/cloud-init.service.tmpl
index 90d45f2..2e1ce48 100644
--- a/systemd/cloud-init.service.tmpl
+++ b/systemd/cloud-init.service.tmpl
@@ -2,7 +2,7 @@
[Unit]
# https://docs.cloud-init.io/en/latest/explanation/boot.html
Description=Cloud-init: Network Stage
-{% if variant not in ["almalinux", "cloudlinux", "photon", "rhel"] %}
+{% if variant not in ["almalinux", "cloudlinux", "photon", "rhel", "ol"] %}
DefaultDependencies=no
{% endif %}
Wants=cloud-init-local.service
@@ -11,13 +11,15 @@
Wants=sshd-keygen@ed25519.service
Wants=sshd.service
After=cloud-init-local.service
+{% if variant not in ["ol"] %}
After=systemd-networkd-wait-online.service
+{% endif %}
{% if variant in ["ubuntu", "unknown", "debian"] %}
After=networking.service
{% endif %}
{% if variant in ["almalinux", "centos", "cloudlinux", "eurolinux", "fedora",
"miraclelinux", "openeuler", "OpenCloudOS", "openmandriva", "rhel", "rocky",
- "suse", "TencentOS", "virtuozzo"] %}
+ "suse", "TencentOS", "virtuozzo", "ol"] %}
After=NetworkManager.service
After=NetworkManager-wait-online.service
diff --git a/systemd/cloud-init-generator.tmpl b/systemd/cloud-init-generator.tmpl
--- a/systemd/cloud-init-generator.tmpl
+++ b/systemd/cloud-init-generator.tmpl
@@ -21,7 +21,7 @@
CLOUD_SYSTEM_TARGET="/lib/systemd/system/cloud-init.target"
{% endif %}
{% if variant in ["almalinux", "centos", "cloudlinux", "eurolinux", "fedora",
- "miraclelinux", "openeuler", "OpenCloudOS", "openmandriva", "rhel", "rocky", "TencentOS", "virtuozzo"] %}
+ "miraclelinux", "openeuler", "OpenCloudOS", "openmandriva", "rhel", "rocky", "TencentOS", "virtuozzo", "ol"] %}
dsidentify="/usr/libexec/cloud-init/ds-identify"
{% elif variant == "benchmark" %}
dsidentify="/bin/true"
diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py
index 519ef63..323e7f6 100644
--- a/tests/unittests/test_util.py
+++ b/tests/unittests/test_util.py
@@ -1311,6 +1311,7 @@ class TestGetVariant:
({"system": "linux", "dist": ("sles",)}, "suse"),
({"system": "linux", "dist": ("sle_hpc",)}, "suse"),
({"system": "linux", "dist": ("my_distro",)}, "linux"),
+ ({"system": "linux", "dist": ("ol",)}, "ol"),
({"system": "Windows", "dist": ("dontcare",)}, "windows"),
({"system": "Darwin", "dist": ("dontcare",)}, "darwin"),
({"system": "Freebsd", "dist": ("dontcare",)}, "freebsd"),
--
2.31.1

View File

@ -1,115 +0,0 @@
Patch to adapt DataSourceOracle and make it functional for OCI.
Also includes setting for retries and timeouts previously provided by
a separate patch to help PCA instances get IMDS data.
Orabug: 37065979
Signed-off-by: Rajesh Harekal <rajesh.harekal@oracle.com>
---
diff -git a/cloudinit/sources/DataSourceOracle.py b/cloudinit/sources/DataSourceOracle.py
--- a/cloudinit/sources/DataSourceOracle.py 2025-03-07 16:04:37.773216485 -0800
+++ a/cloudinit/sources/DataSourceOracle.py 2025-03-07 16:32:33.174574170 -0800
@@ -15,6 +15,7 @@
import base64
import ipaddress
+import os
import json
import logging
import time
@@ -32,6 +33,8 @@
LOG = logging.getLogger(__name__)
+ISCSI_IBFT_PATH='/sys/firmware/acpi/tables/iBFT'
+
BUILTIN_DS_CONFIG = {
# Don't use IMDS to configure secondary NICs by default
"configure_secondary_nics": False,
@@ -135,8 +138,8 @@
perform_dhcp_setup = True
# Careful...these can be overridden in __init__
- url_max_wait = 30
- url_timeout = 5
+ url_max_wait = 180
+ url_timeout = 20
def __init__(self, sys_cfg, *args, **kwargs):
super(DataSourceOracle, self).__init__(sys_cfg, *args, **kwargs)
@@ -149,7 +152,7 @@
]
)
self._network_config_source = KlibcOracleNetworkConfigSource()
- self._network_config: dict = {"config": [], "version": 1}
+ self._network_config = sources.UNSET
url_params = self.get_url_params()
self.url_max_wait = url_params.max_wait_seconds
@@ -274,7 +277,7 @@
def _is_iscsi_root(self) -> bool:
"""Return whether we are on a iscsi machine."""
- return self._network_config_source.is_applicable()
+ return self._network_config_source.is_applicable() or bool(os.path.exists(ISCSI_IBFT_PATH))
def _get_iscsi_config(self) -> dict:
return self._network_config_source.render_config()
@@ -294,34 +297,31 @@
set_primary = False
# this is v1
- if self._is_iscsi_root():
- self._network_config = self._get_iscsi_config()
- if not self._has_network_config():
- LOG.warning(
- "Could not obtain network configuration from initramfs. "
- "Falling back to IMDS."
+ if self._network_config == sources.UNSET:
+ # this is v1
+ if not self._has_network_config():
+ self._network_config = self.distro.generate_fallback_config()
+ set_primary = True
+
+ set_secondary = self.ds_cfg.get(
+ "configure_secondary_nics",
+ BUILTIN_DS_CONFIG["configure_secondary_nics"],
)
- set_primary = True
-
- set_secondary = self.ds_cfg.get(
- "configure_secondary_nics",
- BUILTIN_DS_CONFIG["configure_secondary_nics"],
- )
- if set_primary or set_secondary:
- try:
- # Mutate self._network_config to include primary and/or
- # secondary VNICs
- self._add_network_config_from_opc_imds(set_primary)
- except Exception:
- util.logexc(
- LOG,
- "Failed to parse IMDS network configuration!",
- )
+ if set_primary or set_secondary:
+ try:
+ # Mutate self._network_config to include primary and/or
+ # secondary VNICs
+ self._add_network_config_from_opc_imds(set_primary)
+ except Exception:
+ util.logexc(
+ LOG,
+ "Failed to parse IMDS network configuration!",
+ )
- # we need to verify that the nic selected is not a netfail over
- # device and, if it is a netfail master, then we need to avoid
- # emitting any match by mac
- _ensure_netfailover_safe(self._network_config)
+ # we need to verify that the nic selected is not a netfail over
+ # device and, if it is a netfail master, then we need to avoid
+ # emitting any match by mac
+ _ensure_netfailover_safe(self._network_config)
return self._network_config

View File

@ -1,96 +1,82 @@
Name: cloud-init
Version: 24.4
Release: 4.0.1%{?dist}.3
Summary: Cloud instance init scripts
License: ASL 2.0 or GPLv3
URL: http://launchpad.net/cloud-init
Source0: https://github.com/canonical/cloud-init/archive/refs/tags/%{version}.tar.gz
Source1: cloud-init-tmpfiles.conf
Name: cloud-init
Version: 24.4
Release: 4%{?dist}.3
Summary: Cloud instance init scripts
License: ASL 2.0 or GPLv3
URL: http://launchpad.net/cloud-init
Source0: https://github.com/canonical/cloud-init/archive/refs/tags/%{version}.tar.gz
Source1: cloud-init-tmpfiles.conf
# Source-git patches
Patch1: 0001-downstream-Add-initial-redhat-changes.patch
Patch2: 0002-downstream-Setting-autoconnect-priority-setting-for-.patch
Patch3: 0004-downstream-Revert-chore-eliminate-redundant-ordering.patch
Patch4: 0005-downstream-remove-single-process-optimization.patch
Patch5: 0006-fix-don-t-deadlock-when-starting-network-service-wit.patch
Patch1: 0001-downstream-Add-initial-redhat-changes.patch
Patch2: 0002-downstream-Setting-autoconnect-priority-setting-for-.patch
Patch3: 0004-downstream-Revert-chore-eliminate-redundant-ordering.patch
Patch4: 0005-downstream-remove-single-process-optimization.patch
Patch5: 0006-fix-don-t-deadlock-when-starting-network-service-wit.patch
# For RHEL-74334 - [rhel-9.6] Suggest to continue using sysconfig as the default network renderer in rhel-9.6
Patch6: ci-downstream-Revert-feat-Use-NetworkManager-renderer-b.patch
Patch6: ci-downstream-Revert-feat-Use-NetworkManager-renderer-b.patch
# For RHEL-71122 - Suggest to change some log messages from warning to info after rebase cloud-init-24.4 [RHEL-9.6]
Patch7: ci-Use-log_with_downgradable_level-for-user-password-wa.patch
Patch7: ci-Use-log_with_downgradable_level-for-user-password-wa.patch
# For RHEL-71122 - Suggest to change some log messages from warning to info after rebase cloud-init-24.4 [RHEL-9.6]
Patch8: ci-downstream-set-deprecation-boundary-version.patch
Patch8: ci-downstream-set-deprecation-boundary-version.patch
# For RHEL-76361 - [c9s] cloud-init remove 'NOZEROCONF=yes' from /etc/sysconfig/network
Patch9: ci-net-sysconfig-do-not-remove-all-existing-settings-of.patch
Patch9: ci-net-sysconfig-do-not-remove-all-existing-settings-of.patch
# For RHEL-83636 - DataSourceNoCloudNet network configuration is ineffective [rhel-9.6.z]
Patch10: ci-fix-NM-reload-and-bring-up-individual-network-conns-.patch
Patch11: 0003-downstream-Retain-exit-code-in-cloud-init-status-for.patch
Patch10: ci-fix-NM-reload-and-bring-up-individual-network-conns-.patch
Patch11: 0003-downstream-Retain-exit-code-in-cloud-init-status-for.patch
# For RHEL-100611 - CVE-2024-6174 cloud-init: From CVEorg collector [rhel-9.6.z]
Patch12: ci-fix-Don-t-attempt-to-identify-non-x86-OpenStack-inst.patch
Patch12: ci-fix-Don-t-attempt-to-identify-non-x86-OpenStack-inst.patch
# For RHEL-100611 - CVE-2024-6174 cloud-init: From CVEorg collector [rhel-9.6.z]
Patch13: ci-fix-strict-disable-in-ds-identify-on-no-datasources-.patch
Patch13: ci-fix-strict-disable-in-ds-identify-on-no-datasources-.patch
# Oracle patches
Patch100: 0041-enable-ec2_utils-to-stop-retrying-to-get-ec2-metadata.patch
Patch101: ignore-enslaved-interface.patch
Patch102: ol-sysconfig-add-Oracle-Linux-variant-to-known-distros.patch
Patch103: 0106-tests-unittests-add-a-new-unit-test-for-network-mana.patch
# Oracle specific patches (preferred prefix: "ol" or "orabugNNNNNNNN")
Patch1001: orabug30435672-003-cloud-init-collect-logs.patch
Patch1002: orabug30435672-004-ol-cloud-config.patch
Patch1003: orabug30435672-006-cc_spacewalk.py.patch
Patch1004: orabug32183938-009-missing-sshd-services.patch
Patch1005: orabug32183938-010-missing-sshd-services-in-rhel-systemd.patch
Patch1006: orabug34845400-Add-Oracle-to-distro-detection-logic-in-cloud.cfg.tm.patch
Patch1007: orabug35950168-DataSourceOracle-network-getdata-updates.patch
BuildArch: noarch
BuildArch: noarch
BuildRequires: pkgconfig(systemd)
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: systemd
BuildRequires: pkgconfig(systemd)
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: systemd
# For tests
BuildRequires: iproute
BuildRequires: python3-configobj
BuildRequires: iproute
BuildRequires: python3-configobj
# https://bugzilla.redhat.com/show_bug.cgi?id=1695953
BuildRequires: python3-distro
BuildRequires: python3-jinja2
BuildRequires: python3-jsonpatch
BuildRequires: python3-oauthlib
BuildRequires: python3-prettytable
BuildRequires: python3-pyserial
BuildRequires: python3-PyYAML
BuildRequires: python3-requests
BuildRequires: python3-six
BuildRequires: python3-distro
BuildRequires: python3-jinja2
BuildRequires: python3-jsonpatch
BuildRequires: python3-oauthlib
BuildRequires: python3-prettytable
BuildRequires: python3-pyserial
BuildRequires: python3-PyYAML
BuildRequires: python3-requests
BuildRequires: python3-six
# dnf is needed to make cc_ntp unit tests work
# https://bugs.launchpad.net/cloud-init/+bug/1721573
BuildRequires: /usr/bin/dnf
BuildRequires: /usr/bin/dnf
Requires: e2fsprogs
Requires: iproute
Requires: libselinux-python3
Requires: policycoreutils-python3
Requires: procps
Requires: python3-configobj
Requires: e2fsprogs
Requires: iproute
Requires: libselinux-python3
Requires: policycoreutils-python3
Requires: procps
Requires: python3-configobj
# https://bugzilla.redhat.com/show_bug.cgi?id=1695953
Requires: python3-distro
Requires: python3-jinja2
Requires: python3-jsonpatch
Requires: python3-oauthlib
Requires: python3-prettytable
Requires: python3-pyserial
Requires: python3-PyYAML
Requires: python3-requests
Requires: python3-six
Requires: shadow-utils
Requires: util-linux
Requires: xfsprogs
Requires: dhcp-client
Requires: python3-distro
Requires: python3-jinja2
Requires: python3-jsonpatch
Requires: python3-oauthlib
Requires: python3-prettytable
Requires: python3-pyserial
Requires: python3-PyYAML
Requires: python3-requests
Requires: python3-six
Requires: shadow-utils
Requires: util-linux
Requires: xfsprogs
Requires: dhcp-client
# https://bugzilla.redhat.com/show_bug.cgi?id=2032524
Requires: gdisk
Requires: openssl
Requires: python3-netifaces
Requires: gdisk
Requires: openssl
Requires: python3-netifaces
%{?systemd_requires}
@ -256,24 +242,6 @@ fi
%config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf
%changelog
* Mon Jul 14 2025 Craig Guiller <craig.guiller@oracle.com> - 24.4-4.0.1.el9_6.3
- Fix Oracle Datasource network and getdata methods for OCI OL [Orabug: 35950168]
- Fix log file permission [Orabug: 35302969]
- Update detection logic for OL distros in config template [Orabug: 34845400]
- Added missing services in rhel/systemd/cloud-init.service [Orabug: 32183938]
- Added missing services in cloud-init.service.tmpl for sshd [Orabug: 32183938]
- Forward port applicable cloud-init 18.4-2.0.3 changes to cloud-init-18-5 [Orabug: 30435672]
- limit permissions [Orabug: 31352433]
- Changes to ignore all enslaved interfaces [Orabug: 30092148]
- Make Oracle datasource detect dracut based config files [Orabug: 29956753]
- add modified version of enable-ec2_utils-to-stop-retrying-to-get-ec2-metadata.patch:
1. Enable ec2_utils.py having a way to stop retrying to get ec2 metadata
2. Apply stop retrying to get ec2 metadata to helper/openstack.py MetadataReader
Resolves: Oracle-Bug:41660 (Bugzilla)
- added OL to list of known distros
Resolves: rhbz#1427280
Resolves: rhbz#1427280
* Thu Jul 03 2025 Miroslav Rezanina <mrezanin@redhat.com> - 24.4-4.el9_6.3
- ci-fix-Don-t-attempt-to-identify-non-x86-OpenStack-inst.patch [RHEL-100611]
- ci-fix-strict-disable-in-ds-identify-on-no-datasources-.patch [RHEL-100611]
@ -821,7 +789,7 @@ Resolves: rhbz#1427280
* Thu Apr 13 2017 Charalampos Stratakis <cstratak@redhat.com> 0.7.9-4
- Import to RHEL 7
Resolves: rhbz#1427280
Resolves: rhbz#1427280
* Tue Mar 07 2017 Lars Kellogg-Stedman <lars@redhat.com> 0.7.9-3
- fixes for network config generation