import cloud-init-18.5-8.el8

This commit is contained in:
CentOS Sources 2020-01-21 10:40:23 -05:00 committed by Stepan Oksanichenko
parent e1288e5c3d
commit e0051c29f6
5 changed files with 490 additions and 2 deletions

View File

@ -0,0 +1,102 @@
From ae0f85f867714009af7d4ec6c58e30c552bab556 Mon Sep 17 00:00:00 2001
From: Eduardo Otubo <otubo@redhat.com>
Date: Wed, 3 Jul 2019 13:06:49 +0200
Subject: [PATCH 2/2] Azure: Return static fallback address as if failed to
find endpoint
RH-Author: Eduardo Otubo <otubo@redhat.com>
Message-id: <20190703130649.14511-1-otubo@redhat.com>
Patchwork-id: 89353
O-Subject: [RHEL-8.0.1/RHEL-8.1.0 cloud-init PATCH] Azure: Return static fallback address as if failed to find endpoint
Bugzilla: 1691986
RH-Acked-by: Bandan Das <bsd@redhat.com>
RH-Acked-by: Mohammed Gamal <mgamal@redhat.com>
commit ade77012c8bbcd215b7e26065981194ce1b6a157
Author: Jason Zions (MSFT) <jasonzio@microsoft.com>
Date: Fri May 10 18:38:55 2019 +0000
Azure: Return static fallback address as if failed to find endpoint
The Azure data source helper attempts to use information in the dhcp
lease to find the Wireserver endpoint (IP address). Under some unusual
circumstances, those attempts will fail. This change uses a static
address, known to be always correct in the Azure public and sovereign
clouds, when the helper fails to locate a valid dhcp lease. This
address is not guaranteed to be correct in Azure Stack environments;
it's still best to use the information from the lease whenever possible.
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
cloudinit/sources/helpers/azure.py | 14 +++++++++++---
tests/unittests/test_datasource/test_azure_helper.py | 9 +++++++--
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/cloudinit/sources/helpers/azure.py b/cloudinit/sources/helpers/azure.py
index d3af05e..82c4c8c 100755
--- a/cloudinit/sources/helpers/azure.py
+++ b/cloudinit/sources/helpers/azure.py
@@ -20,6 +20,9 @@ from cloudinit.reporting import events
LOG = logging.getLogger(__name__)
+# This endpoint matches the format as found in dhcp lease files, since this
+# value is applied if the endpoint can't be found within a lease file
+DEFAULT_WIRESERVER_ENDPOINT = "a8:3f:81:10"
azure_ds_reporter = events.ReportEventStack(
name="azure-ds",
@@ -297,7 +300,12 @@ class WALinuxAgentShim(object):
@azure_ds_telemetry_reporter
def _get_value_from_leases_file(fallback_lease_file):
leases = []
- content = util.load_file(fallback_lease_file)
+ try:
+ content = util.load_file(fallback_lease_file)
+ except IOError as ex:
+ LOG.error("Failed to read %s: %s", fallback_lease_file, ex)
+ return None
+
LOG.debug("content is %s", content)
option_name = _get_dhcp_endpoint_option_name()
for line in content.splitlines():
@@ -372,9 +380,9 @@ class WALinuxAgentShim(object):
fallback_lease_file)
value = WALinuxAgentShim._get_value_from_leases_file(
fallback_lease_file)
-
if value is None:
- raise ValueError('No endpoint found.')
+ LOG.warning("No lease found; using default endpoint")
+ value = DEFAULT_WIRESERVER_ENDPOINT
endpoint_ip_address = WALinuxAgentShim.get_ip_from_lease_value(value)
LOG.debug('Azure endpoint found at %s', endpoint_ip_address)
diff --git a/tests/unittests/test_datasource/test_azure_helper.py b/tests/unittests/test_datasource/test_azure_helper.py
index 0255616..bd006ab 100644
--- a/tests/unittests/test_datasource/test_azure_helper.py
+++ b/tests/unittests/test_datasource/test_azure_helper.py
@@ -67,12 +67,17 @@ class TestFindEndpoint(CiTestCase):
self.networkd_leases.return_value = None
def test_missing_file(self):
- self.assertRaises(ValueError, wa_shim.find_endpoint)
+ """wa_shim find_endpoint uses default endpoint if leasefile not found
+ """
+ self.assertEqual(wa_shim.find_endpoint(), "168.63.129.16")
def test_missing_special_azure_line(self):
+ """wa_shim find_endpoint uses default endpoint if leasefile is found
+ but does not contain DHCP Option 245 (whose value is the endpoint)
+ """
self.load_file.return_value = ''
self.dhcp_options.return_value = {'eth0': {'key': 'value'}}
- self.assertRaises(ValueError, wa_shim.find_endpoint)
+ self.assertEqual(wa_shim.find_endpoint(), "168.63.129.16")
@staticmethod
def _build_lease_content(encoded_address):
--
1.8.3.1

View File

@ -0,0 +1,107 @@
From 4ab5a61c0f8378889d2a6b78710f49b0fb71d3c9 Mon Sep 17 00:00:00 2001
From: Miroslav Rezanina <mrezanin@redhat.com>
Date: Fri, 22 Nov 2019 07:46:38 +0100
Subject: [PATCH 1/2] Fix for network configuration not persisting after reboot
RH-Author: Eduardo Otubo <otubo@redhat.com>
Message-id: <20190906121211.23172-1-otubo@redhat.com>
Patchwork-id: 90300
O-Subject: [RHEL-7.8/RHEL-8.1.0 cloud-init PATCH] Fix for network configuration not persisting after reboot
Bugzilla: 1706482
RH-Acked-by: Mohammed Gamal <mgamal@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
The reasons the configuration does not persist after reboot includes
different aspects and they're all fixed on this patch:
1) The rpm package doesn't include the systemd-generator and
ds-identify. The systemd-generator is called early in the boot process
that calls ds-identify to check if there's any Data Source available in
the current boot. In the current use case, the Data Source is removed
from the VM on the second boot, this means cloud-init should disable
itself in order to keep the configuration it did in the first boot.
2) Even after adding those scripts, cloud-init was still being
executed and the configurations were being lost. The reason for this is
that the cloud-init systemd units had a wrong dependency
WantedBy: multi-user.target
Which would start them every time no matter the return of
ds-identify. The fix is to replace the dependency by the systemd unit to
cloud-init.target, which is the main cloud-init target enabled - or in
this case, disabled by ds-identify. The file cloud-init.target was also
missing on rpm package.
After adding both scripts, the main cloud-init systemd target and
adjusting the systemd dependencies the configuration persists after
reboots and shutdowns.
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
---
redhat/cloud-init.spec.template | 15 +++++++++++++++
rhel/systemd/cloud-config.service | 2 +-
rhel/systemd/cloud-final.service | 2 +-
rhel/systemd/cloud-init-local.service | 2 +-
rhel/systemd/cloud-init.service | 2 +-
rhel/systemd/cloud-init.target | 7 +++++++
6 files changed, 26 insertions(+), 4 deletions(-)
create mode 100644 rhel/systemd/cloud-init.target
diff --git a/rhel/systemd/cloud-config.service b/rhel/systemd/cloud-config.service
index 12ca9df..f3dcd4b 100644
--- a/rhel/systemd/cloud-config.service
+++ b/rhel/systemd/cloud-config.service
@@ -15,4 +15,4 @@ TimeoutSec=0
StandardOutput=journal+console
[Install]
-WantedBy=multi-user.target
+WantedBy=cloud-init.target
diff --git a/rhel/systemd/cloud-final.service b/rhel/systemd/cloud-final.service
index 32a83d8..739b7e3 100644
--- a/rhel/systemd/cloud-final.service
+++ b/rhel/systemd/cloud-final.service
@@ -16,4 +16,4 @@ KillMode=process
StandardOutput=journal+console
[Install]
-WantedBy=multi-user.target
+WantedBy=cloud-init.target
diff --git a/rhel/systemd/cloud-init-local.service b/rhel/systemd/cloud-init-local.service
index 656eddb..8f9f6c9 100644
--- a/rhel/systemd/cloud-init-local.service
+++ b/rhel/systemd/cloud-init-local.service
@@ -28,4 +28,4 @@ TimeoutSec=0
StandardOutput=journal+console
[Install]
-WantedBy=multi-user.target
+WantedBy=cloud-init.target
diff --git a/rhel/systemd/cloud-init.service b/rhel/systemd/cloud-init.service
index 68fc5f1..d0023a0 100644
--- a/rhel/systemd/cloud-init.service
+++ b/rhel/systemd/cloud-init.service
@@ -22,4 +22,4 @@ TimeoutSec=0
StandardOutput=journal+console
[Install]
-WantedBy=multi-user.target
+WantedBy=cloud-init.target
diff --git a/rhel/systemd/cloud-init.target b/rhel/systemd/cloud-init.target
new file mode 100644
index 0000000..083c3b6
--- /dev/null
+++ b/rhel/systemd/cloud-init.target
@@ -0,0 +1,7 @@
+# cloud-init target is enabled by cloud-init-generator
+# To disable it you can either:
+# a.) boot with kernel cmdline of 'cloud-init=disabled'
+# b.) touch a file /etc/cloud/cloud-init.disabled
+[Unit]
+Description=Cloud-init target
+After=multi-user.target
--
1.8.3.1

View File

@ -0,0 +1,86 @@
From a00bafbfc54b010d7bbe95536929c678288d4c80 Mon Sep 17 00:00:00 2001
From: Eduardo Otubo <otubo@redhat.com>
Date: Mon, 1 Jul 2019 11:22:52 +0200
Subject: [PATCH 1/2] Revert: azure: ensure that networkmanager hook script
runs
RH-Author: Eduardo Otubo <otubo@redhat.com>
Message-id: <20190701112252.32674-1-otubo@redhat.com>
Patchwork-id: 89162
O-Subject: [rhel-8.1.0 cloud-init PATCH] Revert: azure: ensure that networkmanager hook script runs
Bugzilla: 1692914
RH-Acked-by: Mohammed Gamal <mgamal@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
This patch reverts the commit:
commit c48497435e8195dbd87262c2f00e484e63fe3343
Author: Lars Kellogg-Stedman <lars@redhat.com>
Date: Thu Jun 15 12:20:39 2017 -0400
azure: ensure that networkmanager hook script runs
The networkmanager hook script was failing to run due to the changes
we made to resolve rhbz#1440831. This corrects the regression by
allowing the NM hook script to run regardless of whether or not
cloud-init is "enabled".
Resolves: rhbz#1460206
X-downstream-only: true
Resolves: rhbz#1692914
X-downstream-only: true
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
tools/hook-dhclient | 3 ++-
tools/hook-network-manager | 3 ++-
tools/hook-rhel.sh | 3 ++-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/tools/hook-dhclient b/tools/hook-dhclient
index 181cd51..02122f3 100755
--- a/tools/hook-dhclient
+++ b/tools/hook-dhclient
@@ -13,7 +13,8 @@ is_azure() {
}
is_enabled() {
- # only execute hooks if cloud-init is running on azure
+ # only execute hooks if cloud-init is enabled and on azure
+ [ -e /run/cloud-init/enabled ] || return 1
is_azure
}
diff --git a/tools/hook-network-manager b/tools/hook-network-manager
index 1d52cad..67d9044 100755
--- a/tools/hook-network-manager
+++ b/tools/hook-network-manager
@@ -13,7 +13,8 @@ is_azure() {
}
is_enabled() {
- # only execute hooks if cloud-init running on azure
+ # only execute hooks if cloud-init is enabled and on azure
+ [ -e /run/cloud-init/enabled ] || return 1
is_azure
}
diff --git a/tools/hook-rhel.sh b/tools/hook-rhel.sh
index d75767e..513a551 100755
--- a/tools/hook-rhel.sh
+++ b/tools/hook-rhel.sh
@@ -13,7 +13,8 @@ is_azure() {
}
is_enabled() {
- # only execute hooks if cloud-init is running on azure
+ # only execute hooks if cloud-init is enabled and on azure
+ [ -e /run/cloud-init/enabled ] || return 1
is_azure
}
--
1.8.3.1

View File

@ -0,0 +1,144 @@
From 4f1c3f5be0306da485135544ced4a676753a9373 Mon Sep 17 00:00:00 2001
From: Eduardo Otubo <otubo@redhat.com>
Date: Wed, 16 Oct 2019 12:10:24 +0200
Subject: [PATCH 2/2] util: json.dumps on python 2.7 will handle
UnicodeDecodeError on binary
RH-Author: Eduardo Otubo <otubo@redhat.com>
Message-id: <20191016121024.23694-1-otubo@redhat.com>
Patchwork-id: 91812
O-Subject: [RHEL-7.8/RHEL-8.1.0 cloud-init PATCH] util: json.dumps on python 2.7 will handle UnicodeDecodeError on binary
Bugzilla: 1744718
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
RH-Acked-by: Mohammed Gamal <mgamal@redhat.com>
commit 067516d7bc917e4921b9f1424b7a64e92cae0ad2
Author: Chad Smith <chad.smith@canonical.com>
Date: Fri Sep 27 20:46:00 2019 +0000
util: json.dumps on python 2.7 will handle UnicodeDecodeError on binary
Since python 2.7 doesn't handle UnicodeDecodeErrors with the default
handler
LP: #1801364
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
cloudinit/sources/tests/test_init.py | 12 +++++-------
cloudinit/tests/test_util.py | 20 ++++++++++++++++++++
cloudinit/util.py | 27 +++++++++++++++++++++++++--
3 files changed, 50 insertions(+), 9 deletions(-)
diff --git a/cloudinit/sources/tests/test_init.py b/cloudinit/sources/tests/test_init.py
index 6378e98..9698261 100644
--- a/cloudinit/sources/tests/test_init.py
+++ b/cloudinit/sources/tests/test_init.py
@@ -457,19 +457,17 @@ class TestDataSource(CiTestCase):
instance_json['ds']['meta_data'])
@skipIf(not six.PY2, "Only python2 hits UnicodeDecodeErrors on non-utf8")
- def test_non_utf8_encoding_logs_warning(self):
- """When non-utf-8 values exist in py2 instance-data is not written."""
+ def test_non_utf8_encoding_gets_b64encoded(self):
+ """When non-utf-8 values exist in py2 instance-data is b64encoded."""
tmp = self.tmp_dir()
datasource = DataSourceTestSubclassNet(
self.sys_cfg, self.distro, Paths({'run_dir': tmp}),
custom_metadata={'key1': 'val1', 'key2': {'key2.1': b'ab\xaadef'}})
self.assertTrue(datasource.get_data())
json_file = self.tmp_path(INSTANCE_JSON_FILE, tmp)
- self.assertFalse(os.path.exists(json_file))
- self.assertIn(
- "WARNING: Error persisting instance-data.json: 'utf8' codec can't"
- " decode byte 0xaa in position 2: invalid start byte",
- self.logs.getvalue())
+ instance_json = util.load_json(util.load_file(json_file))
+ key21_value = instance_json['ds']['meta_data']['key2']['key2.1']
+ self.assertEqual('ci-b64:' + util.b64e(b'ab\xaadef'), key21_value)
def test_get_hostname_subclass_support(self):
"""Validate get_hostname signature on all subclasses of DataSource."""
diff --git a/cloudinit/tests/test_util.py b/cloudinit/tests/test_util.py
index e3d2dba..f4f95e9 100644
--- a/cloudinit/tests/test_util.py
+++ b/cloudinit/tests/test_util.py
@@ -2,7 +2,9 @@
"""Tests for cloudinit.util"""
+import base64
import logging
+import json
import platform
import cloudinit.util as util
@@ -528,6 +530,24 @@ class TestGetLinuxDistro(CiTestCase):
self.assertEqual(('foo', '1.1', 'aarch64'), dist)
+class TestJsonDumps(CiTestCase):
+ def test_is_str(self):
+ """json_dumps should return a string."""
+ self.assertTrue(isinstance(util.json_dumps({'abc': '123'}), str))
+
+ def test_utf8(self):
+ smiley = '\\ud83d\\ude03'
+ self.assertEqual(
+ {'smiley': smiley},
+ json.loads(util.json_dumps({'smiley': smiley})))
+
+ def test_non_utf8(self):
+ blob = b'\xba\x03Qx-#y\xea'
+ self.assertEqual(
+ {'blob': 'ci-b64:' + base64.b64encode(blob).decode('utf-8')},
+ json.loads(util.json_dumps({'blob': blob})))
+
+
@mock.patch('os.path.exists')
class TestIsLXD(CiTestCase):
diff --git a/cloudinit/util.py b/cloudinit/util.py
index a84112a..2c9ac66 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -1590,10 +1590,33 @@ def json_serialize_default(_obj):
return 'Warning: redacted unserializable type {0}'.format(type(_obj))
+def json_preserialize_binary(data):
+ """Preserialize any discovered binary values to avoid json.dumps issues.
+
+ Used only on python 2.7 where default type handling is not honored for
+ failure to encode binary data. LP: #1801364.
+ TODO(Drop this function when py2.7 support is dropped from cloud-init)
+ """
+ data = obj_copy.deepcopy(data)
+ for key, value in data.items():
+ if isinstance(value, (dict)):
+ data[key] = json_preserialize_binary(value)
+ if isinstance(value, bytes):
+ data[key] = 'ci-b64:{0}'.format(b64e(value))
+ return data
+
+
def json_dumps(data):
"""Return data in nicely formatted json."""
- return json.dumps(data, indent=1, sort_keys=True,
- separators=(',', ': '), default=json_serialize_default)
+ try:
+ return json.dumps(
+ data, indent=1, sort_keys=True, separators=(',', ': '),
+ default=json_serialize_default)
+ except UnicodeDecodeError:
+ if sys.version_info[:2] == (2, 7):
+ data = json_preserialize_binary(data)
+ return json.dumps(data)
+ raise
def yaml_dumps(obj, explicit_start=True, explicit_end=True):
--
1.8.3.1

View File

@ -6,7 +6,7 @@
Name: cloud-init Name: cloud-init
Version: 18.5 Version: 18.5
Release: 4%{?dist} Release: 8%{?dist}
Summary: Cloud instance init scripts Summary: Cloud instance init scripts
Group: System Environment/Base Group: System Environment/Base
@ -37,6 +37,14 @@ Patch15: ci-Azure-Changes-to-the-Hyper-V-KVP-Reporter.patch
Patch16: ci-DataSourceAzure-Adjust-timeout-for-polling-IMDS.patch Patch16: ci-DataSourceAzure-Adjust-timeout-for-polling-IMDS.patch
# For bz#1691986 - [Azure] [RHEL 8.1] Cloud-init fixes to support fast provisioning for Azure # For bz#1691986 - [Azure] [RHEL 8.1] Cloud-init fixes to support fast provisioning for Azure
Patch17: ci-cc_mounts-check-if-mount-a-on-no-change-fstab-path.patch Patch17: ci-cc_mounts-check-if-mount-a-on-no-change-fstab-path.patch
# For bz#1692914 - [8.1] [WALA][cloud] cloud-init dhclient-hook script has some unexpected side-effects on Azure
Patch18: ci-Revert-azure-ensure-that-networkmanager-hook-script-.patch
# For bz#1691986 - [Azure] [RHEL 8.1] Cloud-init fixes to support fast provisioning for Azure
Patch19: ci-Azure-Return-static-fallback-address-as-if-failed-to.patch
# For bz#1706482 - [cloud-init][RHVM]cloud-init network configuration does not persist reboot [RHEL 8.2.0]
Patch20: ci-Fix-for-network-configuration-not-persisting-after-r.patch
# For bz#1744718 - [cloud-init][RHEL8][OpenStack] cloud-init can't persist instance-data.json
Patch21: ci-util-json.dumps-on-python-2.7-will-handle-UnicodeDec.patch
BuildArch: noarch BuildArch: noarch
@ -131,6 +139,12 @@ mv $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/hook-network-manager \
mkdir -p $RPM_BUILD_ROOT%{_unitdir} mkdir -p $RPM_BUILD_ROOT%{_unitdir}
cp rhel/systemd/* $RPM_BUILD_ROOT%{_unitdir}/ cp rhel/systemd/* $RPM_BUILD_ROOT%{_unitdir}/
[ ! -d $RPM_BUILD_ROOT/usr/lib/systemd/system-generators ] && mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system-generators
cp -p systemd/cloud-init-generator $RPM_BUILD_ROOT/usr/lib/systemd/system-generators
[ ! -d $RPM_BUILD_ROOT/usr/lib/%{name} ] && mkdir -p $RPM_BUILD_ROOT/usr/lib/%{name}
cp -p tools/ds-identify $RPM_BUILD_ROOT/usr/lib/%{name}/ds-identify
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
@ -144,6 +158,7 @@ if [ $1 -eq 1 ] ; then
/bin/systemctl enable cloud-final.service >/dev/null 2>&1 || : /bin/systemctl enable cloud-final.service >/dev/null 2>&1 || :
/bin/systemctl enable cloud-init.service >/dev/null 2>&1 || : /bin/systemctl enable cloud-init.service >/dev/null 2>&1 || :
/bin/systemctl enable cloud-init-local.service >/dev/null 2>&1 || : /bin/systemctl enable cloud-init-local.service >/dev/null 2>&1 || :
/bin/systemctl enable cloud-init.target >/dev/null 2>&1 || :
elif [ $1 -eq 2 ]; then elif [ $1 -eq 2 ]; then
# Upgrade. If the upgrade is from a version older than 0.7.9-8, # Upgrade. If the upgrade is from a version older than 0.7.9-8,
# there will be stale systemd config # there will be stale systemd config
@ -158,6 +173,9 @@ elif [ $1 -eq 2 ]; then
/bin/systemctl is-enabled cloud-init-local.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 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 fi
%preun %preun
@ -167,6 +185,7 @@ if [ $1 -eq 0 ] ; then
/bin/systemctl --no-reload disable cloud-final.service >/dev/null 2>&1 || : /bin/systemctl --no-reload disable cloud-final.service >/dev/null 2>&1 || :
/bin/systemctl --no-reload disable cloud-init.service >/dev/null 2>&1 || : /bin/systemctl --no-reload disable cloud-init.service >/dev/null 2>&1 || :
/bin/systemctl --no-reload disable cloud-init-local.service >/dev/null 2>&1 || : /bin/systemctl --no-reload disable cloud-init-local.service >/dev/null 2>&1 || :
/bin/systemctl --no-reload disable cloud-init.target >/dev/null 2>&1 || :
# One-shot services -> no need to stop # One-shot services -> no need to stop
fi fi
@ -188,22 +207,52 @@ fi
%{_unitdir}/cloud-final.service %{_unitdir}/cloud-final.service
%{_unitdir}/cloud-init-local.service %{_unitdir}/cloud-init-local.service
%{_unitdir}/cloud-init.service %{_unitdir}/cloud-init.service
%{_unitdir}/cloud-init.target
%{_tmpfilesdir}/%{name}.conf %{_tmpfilesdir}/%{name}.conf
%{python3_sitelib}/* %{python3_sitelib}/*
%{_libexecdir}/%{name} %{_libexecdir}/%{name}
%{_bindir}/cloud-init* %{_bindir}/cloud-init*
%doc %{_datadir}/doc/%{name} %doc %{_datadir}/doc/%{name}
%dir /run/cloud-init %dir %verify(not mode) /run/cloud-init
%dir /var/lib/cloud %dir /var/lib/cloud
/etc/NetworkManager/dispatcher.d/cloud-init-azure-hook /etc/NetworkManager/dispatcher.d/cloud-init-azure-hook
%{_udevrulesdir}/66-azure-ephemeral.rules %{_udevrulesdir}/66-azure-ephemeral.rules
%{_sysconfdir}/bash_completion.d/cloud-init %{_sysconfdir}/bash_completion.d/cloud-init
%{_bindir}/cloud-id %{_bindir}/cloud-id
/usr/lib/%{name}/ds-identify
/usr/lib/systemd/system-generators/cloud-init-generator
%dir %{_sysconfdir}/rsyslog.d %dir %{_sysconfdir}/rsyslog.d
%config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf %config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf
%changelog %changelog
* Fri Nov 22 2019 Miroslav Rezanina <mrezanin@redhat.com> - 18.5-8.el8
- ci-Fix-for-network-configuration-not-persisting-after-r.patch [bz#1706482]
- ci-util-json.dumps-on-python-2.7-will-handle-UnicodeDec.patch [bz#1744718]
- Resolves: bz#1706482
([cloud-init][RHVM]cloud-init network configuration does not persist reboot [RHEL 8.2.0])
- Resolves: bz#1744718
([cloud-init][RHEL8][OpenStack] cloud-init can't persist instance-data.json)
* Mon Jul 15 2019 Miroslav Rezanina <mrezanin@redhat.com> - 18.5-7.el8
- Fixing TPS [bz#1729864]
- Resolves: bz#1729864
(cloud-init tps fail)
* Thu Jul 04 2019 Miroslav Rezanina <mrezanin@redhat.com> - 18.5-6.el8
- ci-Revert-azure-ensure-that-networkmanager-hook-script-.patch [bz#1692914]
- ci-Azure-Return-static-fallback-address-as-if-failed-to.patch [bz#1691986]
- Resolves: bz#1691986
([Azure] [RHEL 8.1] Cloud-init fixes to support fast provisioning for Azure)
- Resolves: bz#1692914
([8.1] [WALA][cloud] cloud-init dhclient-hook script has some unexpected side-effects on Azure)
* Mon Jun 10 2019 Miroslav Rezanina <mrezanin@redhat.com> - 18.5-5.el8
- Improved gating testing [bz#1682786]
- Resolves: bz#1682786
(cloud-init changes blocked until gating tests are added)
* Mon Jun 03 2019 Miroslav Rezanina <mrezanin@redhat.com> - 18.5-4.el8 * Mon Jun 03 2019 Miroslav Rezanina <mrezanin@redhat.com> - 18.5-4.el8
- ci-Azure-Ensure-platform-random_seed-is-always-serializ.patch [bz#1691986] - ci-Azure-Ensure-platform-random_seed-is-always-serializ.patch [bz#1691986]
- ci-DatasourceAzure-add-additional-logging-for-azure-dat.patch [bz#1691986] - ci-DatasourceAzure-add-additional-logging-for-azure-dat.patch [bz#1691986]