Revert OL changes

This commit is contained in:
eabdullin 2025-07-15 12:54:45 +03:00
parent ce88843744
commit 1c5c02bc41
12 changed files with 3 additions and 974 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

@ -6,7 +6,7 @@
Name: cloud-init
Version: 24.4
Release: 3.0.1%{?dist}.2
Release: 3%{?dist}.2
Summary: Cloud instance init scripts
License: Apache-2.0 OR GPL-3.0-only
URL: https://github.com/canonical/cloud-init
@ -27,24 +27,9 @@ Patch9: ci-net-sysconfig-do-not-remove-all-existing-settings-of.patch
# For RHEL-81896 - DataSourceNoCloudNet network configuration is ineffective [rhel-10]
Patch10: ci-fix-NM-reload-and-bring-up-individual-network-conns-.patch
# For RHEL-100617 - CVE-2024-6174 cloud-init: From CVEorg collector [rhel-10.1]
Patch12: ci-fix-Don-t-attempt-to-identify-non-x86-OpenStack-inst.patch
Patch11: ci-fix-Don-t-attempt-to-identify-non-x86-OpenStack-inst.patch
# For RHEL-100617 - CVE-2024-6174 cloud-init: From CVEorg collector [rhel-10.1]
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
Patch1005: orabug32183938-009-missing-sshd-services.patch
Patch1006: orabug32183938-010-missing-sshd-services-in-rhel-systemd.patch
Patch1007: orabug34845400-Add-Oracle-to-distro-detection-logic-in-cloud.cfg.tm.patch
Patch1008: orabug37065979-DataSourceOracle-network-getdata-retries.patch
Patch12: ci-fix-strict-disable-in-ds-identify-on-no-datasources-.patch
BuildArch: noarch
@ -192,18 +177,6 @@ elif [ $1 -eq 2 ]; then
# there will be stale systemd config
/bin/systemctl is-enabled cloud-config.service >/dev/null 2>&1 &&
/bin/systemctl reenable cloud-config.service >/dev/null 2>&1 || :
/bin/systemctl is-enabled cloud-final.service >/dev/null 2>&1 &&
/bin/systemctl reenable cloud-final.service >/dev/null 2>&1 || :
/bin/systemctl is-enabled cloud-init.service >/dev/null 2>&1 &&
/bin/systemctl reenable cloud-init.service >/dev/null 2>&1 || :
/bin/systemctl is-enabled cloud-init-local.service >/dev/null 2>&1 &&
/bin/systemctl reenable cloud-init-local.service >/dev/null 2>&1 || :
/bin/systemctl is-enabled cloud-init.target >/dev/null 2>&1 &&
/bin/systemctl reenable cloud-init.target >/dev/null 2>&1 || :
fi
%preun
%systemd_preun cloud-config.service cloud-config.target cloud-final.service cloud-init.service cloud-init.target cloud-init-local.service
@ -262,23 +235,6 @@ fi
%changelog
* Mon Jul 14 2025 Craig Guiller <craig.guiller@oracle.com> - 24.4-3.0.1.2
- NetworkManagerActivator brings up interface failed when using sysconfig renderer [RHEL-18981]
- Include module cc_write_files_deferred in config template [Orabug: 36959464]
- Fix Oracle Datasource network, getdata methods and increase retries [Orabug: 37065979]
- 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]
- 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
* Mon Jul 14 2025 Craig Guiller <craig.guiller@oracle.com> - 24.4-3.2
- ci-fix-Don-t-attempt-to-identify-non-x86-OpenStack-inst.patch [RHEL-100617]
- ci-fix-strict-disable-in-ds-identify-on-no-datasources-.patch [RHEL-100617]
@ -532,4 +488,3 @@ fi
* Wed Feb 16 2022 Charalampos Stratakis <cstratak@redhat.com> - 21.3-6
- Remove redundant dependencies on nose and mock

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,72 +0,0 @@
From c6d9e755b6233e98764678bb86a1bc45df168df2 Mon Sep 17 00:00:00 2001
From: Darren Archibald <darren.archibald@oracle.com>
Date: Thu, 29 Aug 2024 04:00:14 -0700
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>
diff -urN a/cloudinit/cmd/devel/logs.py b/cloudinit/cmd/devel/logs.py
--- a/cloudinit/cmd/devel/logs.py 2025-01-27 15:12:24.357097951 -0800
+++ b/cloudinit/cmd/devel/logs.py 2025-01-27 15:50:44.097173379 -0800
@@ -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,23 @@
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 if dpkg_ver else "not-available"
def _collect_system_logs(
diff -urN a/cloudinit/util.py b/cloudinit/util.py
--- a/cloudinit/util.py 2025-01-27 16:02:32.019230892 -0800
+++ b/cloudinit/util.py 2025-01-27 16:03:05.491012873 -0800
@@ -629,6 +629,7 @@
"suse",
"tencentos",
"virtuozzo",
+ "ol",
):
variant = linux_dist
elif linux_dist in ("ubuntu", "linuxmint", "mint"):

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,51 +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>
diff -urN a/cloudinit/config/cc_spacewalk.py b/cloudinit/config/cc_spacewalk.py
--- a/cloudinit/config/cc_spacewalk.py 2025-01-28 10:51:15.364254013 -0800
+++ b/cloudinit/config/cc_spacewalk.py 2025-01-28 10:53:56.899893366 -0800
@@ -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 -urN cloud-init-24.4/systemd/cloud-init.service.tmpl.orig cloud-init-24.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,267 +0,0 @@
From 1042542db662f362fc74469e1c24df4eb08bf346 Mon Sep 17 00:00:00 2001
From: Darren Archibald <darren.archibald@oracle.com>
Date: Thu, 29 Aug 2024 04:26:17 -0700
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>
---
cloudinit/distros/__init__.py | 1 +
cloudinit/sources/DataSourceRbxCloud.py | 2 +-
config/cloud.cfg.tmpl | 43 +++++++++++++++++--------
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 +
7 files changed, 50 insertions(+), 21 deletions(-)
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
index 9c4d6b2..47629c6 100644
--- a/cloudinit/distros/__init__.py
+++ b/cloudinit/distros/__init__.py
@@ -79,6 +79,7 @@ OSFAMILIES = {
"rhel",
"rocky",
"virtuozzo",
+ "ol",
],
"suse": [
"opensuse",
diff --git a/cloudinit/sources/DataSourceRbxCloud.py b/cloudinit/sources/DataSourceRbxCloud.py
index 6729e84..2265ddb 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 %}
@@ -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
@@ -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 b534a1a..49087ad 100644
--- a/tests/unittests/test_util.py
+++ b/tests/unittests/test_util.py
@@ -1334,6 +1334,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