forked from pool/cloud-init
Accepting request 765394 from Cloud:Tools
- Add cloud-init-no-tempnet-oci.patch (bsc#1161132, bsc#1161133) + Do not attempt to configure an ephemeral network on OCI. We boot off iSCSI and the network is up. Just read the data. - Add patch to build properly with python 3.8: * 0001-Make-tests-work-with-Python-3.8-139.patch - Update to version 19.4 + Remove patches included upstream: - cloud-init-after-wicked.patch - cloud-init-noresolv-merge-no-dns-data.diff - cloud-init-renderer-detect.patch - cloud-init-trigger-udev.patch + Removed patches merged with cloud-init-mix-static-dhcp.patch - cloud-init-proper-ipv6-setting.patch - cloud-init-static-net.patch + Added cloud-init-mix-static-dhcp.patch (bsc#1157894) + Forward port cloud-init-sysconf-path.patch + doc: specify _ over - in cloud config modules + [Joshua Powers] (LP: #1293254) + tools: Detect python to use via env in migrate-lp-user-to-github + [Adam Dobrawy] + Partially revert "fix unlocking method on FreeBSD" (#116) + tests: mock uid when running as root (#113) + [Joshua Powers] (LP: #1856096) + cloudinit/netinfo: remove unused getgateway (#111) + docs: clear up apt config sections (#107) [Joshua Powers] (LP: #1832823) + doc: add kernel command line option to user data (#105) + [Joshua Powers] (LP: #1846524) + config/cloud.cfg.d: update README [Joshua Powers] (LP: #1855006) OBS-URL: https://build.opensuse.org/request/show/765394 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/cloud-init?expand=0&rev=66
This commit is contained in:
commit
e8539a971b
104
0001-Make-tests-work-with-Python-3.8-139.patch
Normal file
104
0001-Make-tests-work-with-Python-3.8-139.patch
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
From c5a7d7979c036f6dc6823f429c6b6820f7f74241 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Conrad Hoffmann <1226676+bitfehler@users.noreply.github.com>
|
||||||
|
Date: Wed, 8 Jan 2020 15:18:48 +0100
|
||||||
|
Subject: [PATCH] Make tests work with Python 3.8 (#139)
|
||||||
|
|
||||||
|
* Make DistroChecker test work with Python 3.8
|
||||||
|
|
||||||
|
In Python 3.8, `platform.linux_distribution` has been removed. This was
|
||||||
|
anticipated, and the cloud-init code uses its own
|
||||||
|
`util.get_linux_distro` instead, which works fine w/o
|
||||||
|
`platform.linux_distribution`. However, these tests still try to mock
|
||||||
|
the platform function, which fails if it doesn't exist (Python 3.8).
|
||||||
|
Instead, mock the new function here, as this is a test for code that
|
||||||
|
depends on it rather than the function itself.
|
||||||
|
|
||||||
|
* Make GetLinuxDistro tests work with Python 3.8
|
||||||
|
|
||||||
|
In Python 3.8, `platform.dist` was removed, so allow mock to create the
|
||||||
|
function by setting `create=True`.
|
||||||
|
|
||||||
|
* Make linter happy in Python 3.8
|
||||||
|
|
||||||
|
Suppress E1101(no-member) as this function was removed.
|
||||||
|
---
|
||||||
|
cloudinit/analyze/tests/test_boot.py | 8 ++++----
|
||||||
|
cloudinit/tests/test_util.py | 6 +++---
|
||||||
|
cloudinit/util.py | 4 ++--
|
||||||
|
3 files changed, 9 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/cloudinit/analyze/tests/test_boot.py b/cloudinit/analyze/tests/test_boot.py
|
||||||
|
index 706e2cc0..f4001c14 100644
|
||||||
|
--- a/cloudinit/analyze/tests/test_boot.py
|
||||||
|
+++ b/cloudinit/analyze/tests/test_boot.py
|
||||||
|
@@ -12,17 +12,17 @@ class TestDistroChecker(CiTestCase):
|
||||||
|
@mock.patch('cloudinit.util.system_info', return_value={'dist': ('', '',
|
||||||
|
''),
|
||||||
|
'system': ''})
|
||||||
|
- @mock.patch('platform.linux_distribution', return_value=('', '', ''))
|
||||||
|
+ @mock.patch('cloudinit.util.get_linux_distro', return_value=('', '', ''))
|
||||||
|
@mock.patch('cloudinit.util.is_FreeBSD', return_value=False)
|
||||||
|
- def test_blank_distro(self, m_sys_info, m_linux_distribution, m_free_bsd):
|
||||||
|
+ def test_blank_distro(self, m_sys_info, m_get_linux_distro, m_free_bsd):
|
||||||
|
self.assertEqual(err_code, dist_check_timestamp())
|
||||||
|
|
||||||
|
@mock.patch('cloudinit.util.system_info', return_value={'dist': ('', '',
|
||||||
|
'')})
|
||||||
|
- @mock.patch('platform.linux_distribution', return_value=('', '', ''))
|
||||||
|
+ @mock.patch('cloudinit.util.get_linux_distro', return_value=('', '', ''))
|
||||||
|
@mock.patch('cloudinit.util.is_FreeBSD', return_value=True)
|
||||||
|
def test_freebsd_gentoo_cant_find(self, m_sys_info,
|
||||||
|
- m_linux_distribution, m_is_FreeBSD):
|
||||||
|
+ m_get_linux_distro, m_is_FreeBSD):
|
||||||
|
self.assertEqual(err_code, dist_check_timestamp())
|
||||||
|
|
||||||
|
@mock.patch('cloudinit.util.subp', return_value=(0, 1))
|
||||||
|
diff --git a/cloudinit/tests/test_util.py b/cloudinit/tests/test_util.py
|
||||||
|
index 64ed82ea..be100646 100644
|
||||||
|
--- a/cloudinit/tests/test_util.py
|
||||||
|
+++ b/cloudinit/tests/test_util.py
|
||||||
|
@@ -523,7 +523,7 @@ class TestGetLinuxDistro(CiTestCase):
|
||||||
|
self.assertEqual(
|
||||||
|
('opensuse-tumbleweed', '20180920', platform.machine()), dist)
|
||||||
|
|
||||||
|
- @mock.patch('platform.dist')
|
||||||
|
+ @mock.patch('platform.dist', create=True)
|
||||||
|
def test_get_linux_distro_no_data(self, m_platform_dist, m_path_exists):
|
||||||
|
"""Verify we get no information if os-release does not exist"""
|
||||||
|
m_platform_dist.return_value = ('', '', '')
|
||||||
|
@@ -531,7 +531,7 @@ class TestGetLinuxDistro(CiTestCase):
|
||||||
|
dist = util.get_linux_distro()
|
||||||
|
self.assertEqual(('', '', ''), dist)
|
||||||
|
|
||||||
|
- @mock.patch('platform.dist')
|
||||||
|
+ @mock.patch('platform.dist', create=True)
|
||||||
|
def test_get_linux_distro_no_impl(self, m_platform_dist, m_path_exists):
|
||||||
|
"""Verify we get an empty tuple when no information exists and
|
||||||
|
Exceptions are not propagated"""
|
||||||
|
@@ -540,7 +540,7 @@ class TestGetLinuxDistro(CiTestCase):
|
||||||
|
dist = util.get_linux_distro()
|
||||||
|
self.assertEqual(('', '', ''), dist)
|
||||||
|
|
||||||
|
- @mock.patch('platform.dist')
|
||||||
|
+ @mock.patch('platform.dist', create=True)
|
||||||
|
def test_get_linux_distro_plat_data(self, m_platform_dist, m_path_exists):
|
||||||
|
"""Verify we get the correct platform information"""
|
||||||
|
m_platform_dist.return_value = ('foo', '1.1', 'aarch64')
|
||||||
|
diff --git a/cloudinit/util.py b/cloudinit/util.py
|
||||||
|
index 9d9d5c72..830c8e54 100644
|
||||||
|
--- a/cloudinit/util.py
|
||||||
|
+++ b/cloudinit/util.py
|
||||||
|
@@ -635,8 +635,8 @@ def get_linux_distro():
|
||||||
|
else:
|
||||||
|
dist = ('', '', '')
|
||||||
|
try:
|
||||||
|
- # Will be removed in 3.7
|
||||||
|
- dist = platform.dist() # pylint: disable=W1505
|
||||||
|
+ # Was removed in 3.8
|
||||||
|
+ dist = platform.dist() # pylint: disable=W1505,E1101
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
finally:
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:f5ead1b3c782c159669f8f8779c45d16a986c7405425d75f915ec55301d83a07
|
|
||||||
size 1028832
|
|
3
cloud-init-19.4.tar.gz
Normal file
3
cloud-init-19.4.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:a2c1f318cbfb28c13b41bbb0de5ab9b21d7cf4b7118551366cd508380124f262
|
||||||
|
size 1091893
|
@ -1,13 +0,0 @@
|
|||||||
Index: cloud-init-19.1/systemd/cloud-init.service.tmpl
|
|
||||||
===================================================================
|
|
||||||
--- cloud-init-19.1.orig/systemd/cloud-init.service.tmpl
|
|
||||||
+++ cloud-init-19.1/systemd/cloud-init.service.tmpl
|
|
||||||
@@ -14,7 +14,7 @@ After=networking.service
|
|
||||||
After=network.service
|
|
||||||
{% endif %}
|
|
||||||
{% if variant in ["suse"] %}
|
|
||||||
-Before=wicked.service
|
|
||||||
+After=wicked.service
|
|
||||||
# setting hostname via hostnamectl depends on dbus, which otherwise
|
|
||||||
# would not be guaranteed at this point.
|
|
||||||
After=dbus.service
|
|
1660
cloud-init-mix-static-dhcp.patch
Normal file
1660
cloud-init-mix-static-dhcp.patch
Normal file
File diff suppressed because it is too large
Load Diff
25
cloud-init-no-tempnet-oci.patch
Normal file
25
cloud-init-no-tempnet-oci.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
--- cloudinit/sources/DataSourceOracle.py.orig
|
||||||
|
+++ cloudinit/sources/DataSourceOracle.py
|
||||||
|
@@ -189,11 +189,17 @@ class DataSourceOracle(sources.DataSourc
|
||||||
|
|
||||||
|
# network may be configured if iscsi root. If that is the case
|
||||||
|
# then read_initramfs_config will return non-None.
|
||||||
|
- if _is_iscsi_root():
|
||||||
|
- data = self.crawl_metadata()
|
||||||
|
- else:
|
||||||
|
- with dhcp.EphemeralDHCPv4(net.find_fallback_nic()):
|
||||||
|
- data = self.crawl_metadata()
|
||||||
|
+ #if _is_iscsi_root():
|
||||||
|
+ # data = self.crawl_metadata()
|
||||||
|
+ #else:
|
||||||
|
+ # with dhcp.EphemeralDHCPv4(net.find_fallback_nic()):
|
||||||
|
+ # data = self.crawl_metadata()
|
||||||
|
+ #
|
||||||
|
+ # The detection of the configured network for iscsi boot is
|
||||||
|
+ # distribution dependent and of course only implemented for
|
||||||
|
+ # Debian/Ubuntu. We know the network is up as we are booting from
|
||||||
|
+ # iscsi. Skip the BS and just read the damn data
|
||||||
|
+ data = self.crawl_metadata()
|
||||||
|
|
||||||
|
self._crawled_metadata = data
|
||||||
|
vdata = data['2013-10-17']
|
@ -1,68 +0,0 @@
|
|||||||
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
|
|
||||||
index be5dede..1708990 100644
|
|
||||||
--- a/cloudinit/net/sysconfig.py
|
|
||||||
+++ b/cloudinit/net/sysconfig.py
|
|
||||||
@@ -578,6 +578,10 @@ class Renderer(renderer.Renderer):
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _render_dns(network_state, existing_dns_path=None):
|
|
||||||
+ # skip writing resolv.conf if network_state doesn't include any input.
|
|
||||||
+ if not any([len(network_state.dns_nameservers),
|
|
||||||
+ len(network_state.dns_searchdomains)]):
|
|
||||||
+ return None
|
|
||||||
content = resolv_conf.ResolvConf("")
|
|
||||||
if existing_dns_path and os.path.isfile(existing_dns_path):
|
|
||||||
content = resolv_conf.ResolvConf(util.load_file(existing_dns_path))
|
|
||||||
@@ -585,8 +589,6 @@ class Renderer(renderer.Renderer):
|
|
||||||
content.add_nameserver(nameserver)
|
|
||||||
for searchdomain in network_state.dns_searchdomains:
|
|
||||||
content.add_search_domain(searchdomain)
|
|
||||||
- if not str(content):
|
|
||||||
- return None
|
|
||||||
header = _make_header(';')
|
|
||||||
content_str = str(content)
|
|
||||||
if not content_str.startswith(header):
|
|
||||||
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
|
|
||||||
index e578992..82eb18f 100644
|
|
||||||
--- a/tests/unittests/test_net.py
|
|
||||||
+++ b/tests/unittests/test_net.py
|
|
||||||
@@ -2701,6 +2701,10 @@ USERCTL=no
|
|
||||||
ns = network_state.parse_net_config_data(CONFIG_V1_EXPLICIT_LOOPBACK)
|
|
||||||
render_dir = self.tmp_path("render")
|
|
||||||
os.makedirs(render_dir)
|
|
||||||
+ # write an etc/resolv.conf and expect it to not be modified
|
|
||||||
+ resolvconf = os.path.join(render_dir, 'etc/resolv.conf')
|
|
||||||
+ content = "# Original Content"
|
|
||||||
+ util.write_file(resolvconf, content)
|
|
||||||
renderer = self._get_renderer()
|
|
||||||
renderer.render_network_state(ns, target=render_dir)
|
|
||||||
found = dir2dict(render_dir)
|
|
||||||
@@ -2718,6 +2722,8 @@ TYPE=Ethernet
|
|
||||||
USERCTL=no
|
|
||||||
"""
|
|
||||||
self.assertEqual(expected, found[nspath + 'ifcfg-eth0'])
|
|
||||||
+ # a dhcp only config should not modify resolv.conf
|
|
||||||
+ self.assertEqual(content, found['/etc/resolv.conf'])
|
|
||||||
|
|
||||||
def test_bond_config(self):
|
|
||||||
expected_name = 'expected_sysconfig_rhel'
|
|
||||||
@@ -3202,6 +3208,10 @@ USERCTL=no
|
|
||||||
ns = network_state.parse_net_config_data(CONFIG_V1_EXPLICIT_LOOPBACK)
|
|
||||||
render_dir = self.tmp_path("render")
|
|
||||||
os.makedirs(render_dir)
|
|
||||||
+ # write an etc/resolv.conf and expect it to not be modified
|
|
||||||
+ resolvconf = os.path.join(render_dir, 'etc/resolv.conf')
|
|
||||||
+ content = "# Original Content"
|
|
||||||
+ util.write_file(resolvconf, content)
|
|
||||||
renderer = self._get_renderer()
|
|
||||||
renderer.render_network_state(ns, target=render_dir)
|
|
||||||
found = dir2dict(render_dir)
|
|
||||||
@@ -3219,6 +3229,8 @@ TYPE=Ethernet
|
|
||||||
USERCTL=no
|
|
||||||
"""
|
|
||||||
self.assertEqual(expected, found[nspath + 'ifcfg-eth0'])
|
|
||||||
+ # a dhcp only config should not modify resolv.conf
|
|
||||||
+ self.assertEqual(content, found['/etc/resolv.conf'])
|
|
||||||
|
|
||||||
def test_bond_config(self):
|
|
||||||
expected_name = 'expected_sysconfig_opensuse'
|
|
@ -1,10 +0,0 @@
|
|||||||
--- cloudinit/net/sysconfig.py.orig
|
|
||||||
+++ cloudinit/net/sysconfig.py
|
|
||||||
@@ -349,6 +349,7 @@ class Renderer(renderer.Renderer):
|
|
||||||
# TODO need to set BOOTPROTO to dhcp6 on SUSE
|
|
||||||
iface_cfg['IPV6INIT'] = True
|
|
||||||
iface_cfg['DHCPV6C'] = True
|
|
||||||
+ iface_cfg['DHCLIENT6_MODE'] = 'managed'
|
|
||||||
elif subnet_type in ['dhcp4', 'dhcp']:
|
|
||||||
iface_cfg['BOOTPROTO'] = 'dhcp'
|
|
||||||
elif subnet_type == 'static':
|
|
@ -1,20 +0,0 @@
|
|||||||
--- cloudinit/net/sysconfig.py.orig
|
|
||||||
+++ cloudinit/net/sysconfig.py
|
|
||||||
@@ -748,7 +748,7 @@ class Renderer(renderer.Renderer):
|
|
||||||
def available(target=None):
|
|
||||||
sysconfig = available_sysconfig(target=target)
|
|
||||||
nm = available_nm(target=target)
|
|
||||||
- return (util.get_linux_distro()[0] in KNOWN_DISTROS
|
|
||||||
+ return (util.system_info()['variant'] in KNOWN_DISTROS
|
|
||||||
and any([nm, sysconfig]))
|
|
||||||
|
|
||||||
|
|
||||||
@@ -758,6 +758,8 @@ def available_sysconfig(target=None):
|
|
||||||
for p in expected:
|
|
||||||
if not util.which(p, search=search, target=target):
|
|
||||||
return False
|
|
||||||
+ else:
|
|
||||||
+ return True
|
|
||||||
|
|
||||||
expected_paths = ['etc/sysconfig/network/scripts/functions.netconfig']
|
|
||||||
for p in expected_paths:
|
|
@ -1,12 +0,0 @@
|
|||||||
--- cloudinit/net/sysconfig.py.orig
|
|
||||||
+++ cloudinit/net/sysconfig.py
|
|
||||||
@@ -314,7 +314,8 @@ class Renderer(renderer.Renderer):
|
|
||||||
# ==> the following should not be set to 'static'
|
|
||||||
# but should remain 'none'
|
|
||||||
# if iface_cfg['BOOTPROTO'] == 'none':
|
|
||||||
- # iface_cfg['BOOTPROTO'] = 'static'
|
|
||||||
+ # For SUSE this is different set to "static"
|
|
||||||
+ iface_cfg['BOOTPROTO'] = 'static'
|
|
||||||
if subnet_is_ipv6(subnet):
|
|
||||||
mtu_key = 'IPV6_MTU'
|
|
||||||
iface_cfg['IPV6INIT'] = True
|
|
@ -1,13 +1,13 @@
|
|||||||
--- cloudinit/net/sysconfig.py.orig
|
--- cloudinit/net/sysconfig.py.orig
|
||||||
+++ cloudinit/net/sysconfig.py
|
+++ cloudinit/net/sysconfig.py
|
||||||
@@ -660,9 +660,7 @@ def available(target=None):
|
@@ -891,9 +891,7 @@ def available_sysconfig(target=None):
|
||||||
if not util.which(p, search=search, target=target):
|
if not util.which(p, search=search, target=target):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
- expected_paths = [
|
- expected_paths = [
|
||||||
- 'etc/sysconfig/network-scripts/network-functions',
|
- 'etc/sysconfig/network-scripts/network-functions',
|
||||||
- 'etc/sysconfig/network-scripts/ifdown-eth']
|
- 'etc/sysconfig/config']
|
||||||
+ expected_paths = ['etc/sysconfig/network/scripts/functions.netconfig']
|
+ expected_paths = ['etc/sysconfig/network/scripts/functions.netconfig']
|
||||||
for p in expected_paths:
|
for p in expected_paths:
|
||||||
if not os.path.isfile(util.target_path(target, p)):
|
if os.path.isfile(util.target_path(target, p)):
|
||||||
return False
|
return True
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
--- cloudinit/distros/opensuse.py.orig
|
|
||||||
+++ cloudinit/distros/opensuse.py
|
|
||||||
@@ -38,6 +38,8 @@ class Distro(distros.Distro):
|
|
||||||
'sysconfig': {
|
|
||||||
'control': 'etc/sysconfig/network/config',
|
|
||||||
'iface_templates': '%(base)s/network/ifcfg-%(name)s',
|
|
||||||
+ 'netrules_path': (
|
|
||||||
+ 'etc/udev/rules.d/85-persistent-net-cloud-init.rules'),
|
|
||||||
'route_templates': {
|
|
||||||
'ipv4': '%(base)s/network/ifroute-%(name)s',
|
|
||||||
'ipv6': '%(base)s/network/ifroute-%(name)s',
|
|
||||||
--- cloudinit/net/sysconfig.py.orig
|
|
||||||
+++ cloudinit/net/sysconfig.py
|
|
||||||
@@ -8,6 +8,7 @@ import six
|
|
||||||
from cloudinit.distros.parsers import networkmanager_conf
|
|
||||||
from cloudinit.distros.parsers import resolv_conf
|
|
||||||
from cloudinit import log as logging
|
|
||||||
+from cloudinit import net
|
|
||||||
from cloudinit import util
|
|
||||||
|
|
||||||
from configobj import ConfigObj
|
|
||||||
@@ -699,6 +700,14 @@ class Renderer(renderer.Renderer):
|
|
||||||
if nm_conf_content:
|
|
||||||
util.write_file(nm_conf_path, nm_conf_content, file_mode)
|
|
||||||
if self.netrules_path:
|
|
||||||
+ # When many interfaces are present it can happen that we get here
|
|
||||||
+ # before they are all setup. Settle if that is the case.
|
|
||||||
+ for iface in network_state.iter_interfaces(
|
|
||||||
+ renderer.filter_by_physical):
|
|
||||||
+ path = net.sys_dev_path(iface.get('name'))
|
|
||||||
+ if not os.path.exists(path):
|
|
||||||
+ util.udevadm_settle(path, 5)
|
|
||||||
+ break
|
|
||||||
netrules_content = self._render_persistent_net(network_state)
|
|
||||||
netrules_path = util.target_path(target, self.netrules_path)
|
|
||||||
util.write_file(netrules_path, netrules_content, file_mode)
|
|
@ -1,3 +1,205 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jan 17 18:55:41 UTC 2020 - Robert Schweikert <rjschwei@suse.com>
|
||||||
|
|
||||||
|
- Add cloud-init-no-tempnet-oci.patch (bsc#1161132, bsc#1161133)
|
||||||
|
+ Do not attempt to configure an ephemeral network on OCI. We
|
||||||
|
boot off iSCSI and the network is up. Just read the data.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jan 14 15:14:52 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
|
||||||
|
|
||||||
|
- Add patch to build properly with python 3.8:
|
||||||
|
* 0001-Make-tests-work-with-Python-3.8-139.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jan 9 18:56:26 UTC 2020 - Robert Schweikert <rjschwei@suse.com>
|
||||||
|
|
||||||
|
- Update to version 19.4
|
||||||
|
+ Remove patches included upstream:
|
||||||
|
- cloud-init-after-wicked.patch
|
||||||
|
- cloud-init-noresolv-merge-no-dns-data.diff
|
||||||
|
- cloud-init-renderer-detect.patch
|
||||||
|
- cloud-init-trigger-udev.patch
|
||||||
|
+ Removed patches merged with cloud-init-mix-static-dhcp.patch
|
||||||
|
- cloud-init-proper-ipv6-setting.patch
|
||||||
|
- cloud-init-static-net.patch
|
||||||
|
+ Added cloud-init-mix-static-dhcp.patch (bsc#1157894)
|
||||||
|
+ Forward port cloud-init-sysconf-path.patch
|
||||||
|
+ doc: specify _ over - in cloud config modules
|
||||||
|
+ [Joshua Powers] (LP: #1293254)
|
||||||
|
+ tools: Detect python to use via env in migrate-lp-user-to-github
|
||||||
|
+ [Adam Dobrawy]
|
||||||
|
+ Partially revert "fix unlocking method on FreeBSD" (#116)
|
||||||
|
+ tests: mock uid when running as root (#113)
|
||||||
|
+ [Joshua Powers] (LP: #1856096)
|
||||||
|
+ cloudinit/netinfo: remove unused getgateway (#111)
|
||||||
|
+ docs: clear up apt config sections (#107) [Joshua Powers] (LP: #1832823)
|
||||||
|
+ doc: add kernel command line option to user data (#105)
|
||||||
|
+ [Joshua Powers] (LP: #1846524)
|
||||||
|
+ config/cloud.cfg.d: update README [Joshua Powers] (LP: #1855006)
|
||||||
|
+ azure: avoid re-running cloud-init when instance-id is byte-swapped
|
||||||
|
+ (#84) [AOhassan]
|
||||||
|
+ fix unlocking method on FreeBSD [Igor Galić] (LP: #1854594)
|
||||||
|
+ debian: add reference to the manpages [Joshua Powers]
|
||||||
|
+ ds_identify: if /sys is not available use dmidecode (#42)
|
||||||
|
+ [Igor Galić] (LP: #1852442)
|
||||||
|
+ docs: add cloud-id manpage [Joshua Powers]
|
||||||
|
+ docs: add cloud-init-per manpage [Joshua Powers]
|
||||||
|
+ docs: add cloud-init manpage [Joshua Powers]
|
||||||
|
+ docs: add additional details to per-instance/once [Joshua Powers]
|
||||||
|
+ Update doc-requirements.txt [Joshua Powers]
|
||||||
|
+ doc-requirements: add missing dep [Joshua Powers]
|
||||||
|
+ dhcp: Support RedHat dhcp rfc3442 lease format for option 121 (#76)
|
||||||
|
+ [Eric Lafontaine] (LP: #1850642)
|
||||||
|
+ network_state: handle empty v1 config (#45) (LP: #1852496)
|
||||||
|
+ docs: Add document on how to report bugs [Joshua Powers]
|
||||||
|
+ Add an Amazon distro in the redhat OS family [Frederick Lefebvre]
|
||||||
|
+ removed a couple of "the"s [gaughen]
|
||||||
|
+ docs: fix line length and remove highlighting [Joshua Powers]
|
||||||
|
+ docs: Add security.md to readthedocs [Joshua Powers]
|
||||||
|
+ Multiple file fix for AuthorizedKeysFile config (#60) [Eduardo Otubo]
|
||||||
|
+ Revert "travis: only run CI on pull requests"
|
||||||
|
+ doc: update links on README.md [Joshua Powers]
|
||||||
|
+ doc: Updates to wording of README.md [Joshua Powers]
|
||||||
|
+ Add security.md [Joshua Powers]
|
||||||
|
+ setup.py: Amazon Linux sets libexec to /usr/libexec (#52)
|
||||||
|
+ [Frederick Lefebvre]
|
||||||
|
+ Fix linting failure in test_url_helper (#83) [Eric Lafontaine]
|
||||||
|
+ url_helper: read_file_or_url should pass headers param into readurl
|
||||||
|
+ (#66) (LP: #1854084)
|
||||||
|
+ dmidecode: log result *after* stripping n [Igor Galić]
|
||||||
|
+ cloud_tests: add azure platform support to integration tests
|
||||||
|
+ [ahosmanmsft]
|
||||||
|
+ set_passwords: support for FreeBSD (#46) [Igor Galić]
|
||||||
|
+ tools: migrate-lp-user-to-github removes repo_dir if created (#35)
|
||||||
|
+ Correct jumbled documentation for cc_set_hostname module (#64)
|
||||||
|
+ [do3meli] (LP: #1853543)
|
||||||
|
+ FreeBSD: fix for get_linux_distro() and lru_cache (#59)
|
||||||
|
+ [Igor Galić] (LP: #1815030)
|
||||||
|
+ ec2: Add support for AWS IMDS v2 (session-oriented) (#55)
|
||||||
|
+ tests: Fix cloudsigma tests when no dmidecode data is present. (#57)
|
||||||
|
+ [Scott Moser]
|
||||||
|
+ net: IPv6, accept_ra, slaac, stateless (#51)
|
||||||
|
+ [Harald] (LP: #1806014, #1808647)
|
||||||
|
+ docs: Update the configdrive datasource links (#44)
|
||||||
|
+ [Joshua Powers] (LP: #1852461)
|
||||||
|
+ distro: correctly set usr_lib_exec path for FreeBSD distro (#40)
|
||||||
|
+ [Igor Galić] (LP: #1852491)
|
||||||
|
+ azure: support secondary ipv6 addresses (#33)
|
||||||
|
+ Fix metadata check when local-hostname is null (#32)
|
||||||
|
+ [Mark Goddard] (LP: #1852100)
|
||||||
|
+ switch default FreeBSD salt minion pkg from py27 to py36
|
||||||
|
+ [Dominic Schlegel]
|
||||||
|
+ travis: only run CI on pull requests
|
||||||
|
+ add data-server dns entry as new metadata server detection [Joshua Hügli]
|
||||||
|
+ pycodestyle: remove unused local variable
|
||||||
|
+ reporting: Using a uuid to enforce uniqueness on the KVP keys. [momousta]
|
||||||
|
+ docs: touchups in rtd intro and README.md
|
||||||
|
+ doc: update launchpad git refs to github
|
||||||
|
+ github: drop pull-request template to prepare for migration
|
||||||
|
+ tools: add migrate-lp-user-to-github script to link LP to github
|
||||||
|
+ github: new basic project readme
|
||||||
|
|
||||||
|
- From 19.3
|
||||||
|
+ azure: support matching dhcp route-metrics for dual-stack ipv4 ipv6
|
||||||
|
+ (LP: #1850308)
|
||||||
|
+ configdrive: fix subplatform config-drive for /config-drive source
|
||||||
|
+ [David Kindred] (LP: #1849731)
|
||||||
|
+ DataSourceSmartOS: reconfigure network on each boot
|
||||||
|
+ [Mike Gerdts] (LP: #1765801)
|
||||||
|
+ Add config for ssh-key import and consuming user-data [Pavel Zakharov]
|
||||||
|
+ net: fix subnet_is_ipv6() for stateless|stateful
|
||||||
|
+ [Harald Jensås] (LP: #1848690)
|
||||||
|
+ OVF: disable custom script execution by default [Xiaofeng Wang]
|
||||||
|
+ cc_puppet: Implement csr_attributes.yaml support [Matthias Baur]
|
||||||
|
+ cloud-init.service: on centos/fedora/redhat wait on NetworkManager.service
|
||||||
|
+ (LP: #1843334)
|
||||||
|
+ azure: Do not lock user on instance id change [Sam Eiderman] (LP: #1849677)
|
||||||
|
+ net/netplan: use ipv6-mtu key for specifying ipv6 mtu values
|
||||||
|
+ Fix usages of yaml, and move yaml_dump to safeyaml.dumps. (LP: #1849640)
|
||||||
|
+ exoscale: Increase url_max_wait to 120s. [Chris Glass]
|
||||||
|
+ net/sysconfig: fix available check on SUSE distros
|
||||||
|
+ [Robert Schweikert] (LP: #1849378)
|
||||||
|
+ docs: Fix incorrect Azure IMDS IP address [Joshua Powers] (LP: #1849508)
|
||||||
|
+ introduce .travis.yml
|
||||||
|
+ net: enable infiniband support in eni and sysconfig renderers
|
||||||
|
+ [Darren Birkett] (LP: #1847114)
|
||||||
|
+ guestcust_util: handle special characters in config file [Xiaofeng Wang]
|
||||||
|
+ fix some more typos in comments [Dominic Schlegel]
|
||||||
|
+ replace any deprecated log.warn with log.warning
|
||||||
|
+ [Dominic Schlegel] (LP: #1508442)
|
||||||
|
+ net: handle openstack dhcpv6-stateless configuration
|
||||||
|
+ [Harald Jensås] (LP: #1847517)
|
||||||
|
+ Add .venv/ to .gitignore [Dominic Schlegel]
|
||||||
|
+ Small typo fixes in code comments. [Dominic Schlegel]
|
||||||
|
+ cloud_test/lxd: Retry container delete a few times
|
||||||
|
+ Add Support for e24cloud to Ec2 datasource. (LP: #1696476)
|
||||||
|
+ Add RbxCloud datasource [Adam Dobrawy]
|
||||||
|
+ get_interfaces: don't exclude bridge and bond members (LP: #1846535)
|
||||||
|
+ Add support for Arch Linux in render-cloudcfg [Conrad Hoffmann]
|
||||||
|
+ util: json.dumps on python 2.7 will handle UnicodeDecodeError on binary
|
||||||
|
+ (LP: #1801364)
|
||||||
|
+ debian/ubuntu: add missing word to netplan/ENI header (LP: #1845669)
|
||||||
|
+ ovf: do not generate random instance-id for IMC customization path
|
||||||
|
+ sysconfig: only write resolv.conf if network_state has DNS values
|
||||||
|
+ (LP: #1843634)
|
||||||
|
+ sysconfig: use distro variant to check if available (LP: #1843584)
|
||||||
|
+ systemd/cloud-init.service.tmpl: start after wicked.service
|
||||||
|
+ [Robert Schweikert]
|
||||||
|
+ docs: fix zstack documentation lints
|
||||||
|
+ analyze/show: remove trailing space in output
|
||||||
|
+ Add missing space in warning: "not avalid seed" [Brian Candler]
|
||||||
|
+ pylintrc: add 'enter_context' to generated-members list
|
||||||
|
+ Add datasource for ZStack platform. [Shixin Ruan] (LP: #1841181)
|
||||||
|
+ docs: organize TOC and update summary of project [Joshua Powers]
|
||||||
|
+ tools: make clean now cleans the dev directory, not the system
|
||||||
|
+ docs: create cli specific page [Joshua Powers]
|
||||||
|
+ docs: added output examples to analyze.rst [Joshua Powers]
|
||||||
|
+ docs: doc8 fixes for instancedata page [Joshua Powers]
|
||||||
|
+ docs: clean up formatting, organize boot page [Joshua Powers]
|
||||||
|
+ net: add is_master check for filtering device list (LP: #1844191)
|
||||||
|
+ docs: more complete list of availability [Joshua Powers]
|
||||||
|
+ docs: start FAQ page [Joshua Powers]
|
||||||
|
+ docs: cleanup output & order of datasource page [Joshua Powers]
|
||||||
|
+ Brightbox: restrict detection to require full domain match .brightbox.com
|
||||||
|
+ VMWware: add option into VMTools config to enable/disable custom script.
|
||||||
|
+ [Xiaofeng Wang]
|
||||||
|
+ net,Oracle: Add support for netfailover detection
|
||||||
|
+ atomic_helper: add DEBUG logging to write_file (LP: #1843276)
|
||||||
|
+ doc: document doc, create makefile and tox target [Joshua Powers]
|
||||||
|
+ .gitignore: ignore files produced by package builds
|
||||||
|
+ docs: fix whitespace, spelling, and line length [Joshua Powers]
|
||||||
|
+ docs: remove unnecessary file in doc directory [Joshua Powers]
|
||||||
|
+ Oracle: Render secondary vnic IP and MTU values only
|
||||||
|
+ exoscale: fix sysconfig cloud_config_modules overrides (LP: #1841454)
|
||||||
|
+ net/cmdline: refactor to allow multiple initramfs network config sources
|
||||||
|
+ ubuntu-drivers: call db_x_loadtemplatefile to accept NVIDIA EULA
|
||||||
|
+ (LP: #1840080)
|
||||||
|
+ Add missing #cloud-config comment on first example in documentation.
|
||||||
|
+ [Florian Müller]
|
||||||
|
+ ubuntu-drivers: emit latelink=true debconf to accept nvidia eula
|
||||||
|
+ (LP: #1840080)
|
||||||
|
+ DataSourceOracle: prefer DS network config over initramfs
|
||||||
|
+ format.rst: add text/jinja2 to list of content types (+ cleanups)
|
||||||
|
+ Add GitHub pull request template to point people at hacking doc
|
||||||
|
+ cloudinit/distros/parsers/sys_conf: add docstring to SysConf
|
||||||
|
+ pyflakes: remove unused variable [Joshua Powers]
|
||||||
|
+ Azure: Record boot timestamps, system information, and diagnostic events
|
||||||
|
+ [Anh Vo]
|
||||||
|
+ DataSourceOracle: configure secondary NICs on Virtual Machines
|
||||||
|
+ distros: fix confusing variable names
|
||||||
|
+ azure/net: generate_fallback_nic emits network v2 config instead of v1
|
||||||
|
+ Add support for publishing host keys to GCE guest attributes [Rick Wright]
|
||||||
|
+ New data source for the Exoscale.com cloud platform [Chris Glass]
|
||||||
|
+ doc: remove intersphinx extension
|
||||||
|
+ cc_set_passwords: rewrite documentation (LP: #1838794)
|
||||||
|
+ net/cmdline: split interfaces_by_mac and init network config determination
|
||||||
|
+ stages: allow data sources to override network config source order
|
||||||
|
+ cloud_tests: updates and fixes
|
||||||
|
+ Fix bug rendering MTU on bond or vlan when input was netplan. (LP: #1836949)
|
||||||
|
+ net: update net sequence, include wait on netdevs, opensuse netrules path
|
||||||
|
(LP: #1817368)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Nov 25 19:34:52 UTC 2019 - Robert Schweikert <rjschwei@suse.com>
|
Mon Nov 25 19:34:52 UTC 2019 - Robert Schweikert <rjschwei@suse.com>
|
||||||
|
|
||||||
|
@ -18,40 +18,33 @@
|
|||||||
%global configver 0.7
|
%global configver 0.7
|
||||||
|
|
||||||
Name: cloud-init
|
Name: cloud-init
|
||||||
Version: 19.2
|
Version: 19.4
|
||||||
Release: 0
|
Release: 0
|
||||||
License: GPL-3.0 and AGPL-3.0
|
License: GPL-3.0
|
||||||
Summary: Cloud node initialization tool
|
Summary: Cloud node initialization tool
|
||||||
Url: http://launchpad.net/cloud-init/
|
Url: http://launchpad.net/cloud-init/
|
||||||
Group: System/Management
|
Group: System/Management
|
||||||
Source0: %{name}-%{version}.tar.gz
|
Source0: %{name}-%{version}.tar.gz
|
||||||
Source1: rsyslog-cloud-init.cfg
|
Source1: rsyslog-cloud-init.cfg
|
||||||
|
Patch0: 0001-Make-tests-work-with-Python-3.8-139.patch
|
||||||
# FIXME
|
# FIXME
|
||||||
# python2 disables SIGPIPE, causing broken pipe errors in shell scripts (bsc#903449)
|
# python2 disables SIGPIPE, causing broken pipe errors in shell scripts (bsc#903449)
|
||||||
Patch20: cloud-init-python2-sigpipe.patch
|
Patch20: cloud-init-python2-sigpipe.patch
|
||||||
Patch21: cloud-init-template-py2.patch
|
Patch21: cloud-init-template-py2.patch
|
||||||
Patch29: datasourceLocalDisk.patch
|
Patch29: datasourceLocalDisk.patch
|
||||||
Patch34: cloud-init-tests-set-exec.patch
|
Patch34: cloud-init-tests-set-exec.patch
|
||||||
# FIXME no proposed solution
|
|
||||||
Patch38: cloud-init-sysconf-path.patch
|
|
||||||
# FIXME (lp# 1800854)
|
|
||||||
Patch41: cloud-init-static-net.patch
|
|
||||||
# FIXME (lp#1801364)
|
# FIXME (lp#1801364)
|
||||||
Patch42: cloud-init-ostack-metadat-dencode.patch
|
Patch42: cloud-init-ostack-metadat-dencode.patch
|
||||||
# FIXME (lp#1812117)
|
# FIXME (lp#1812117)
|
||||||
Patch43: cloud-init-write-routes.patch
|
Patch43: cloud-init-write-routes.patch
|
||||||
# FIXME (lp#1817368) expected in 19.3
|
|
||||||
Patch47: cloud-init-trigger-udev.patch
|
|
||||||
# FIXME (lp#1843634) expected in 19.3
|
|
||||||
Patch50: cloud-init-noresolv-merge-no-dns-data.diff
|
|
||||||
# FIXME expected in 19.3
|
|
||||||
Patch51: cloud-init-after-wicked.patch
|
|
||||||
# FIXME (lp#1849296)
|
# FIXME (lp#1849296)
|
||||||
Patch52: cloud-init-break-resolv-symlink.patch
|
Patch52: cloud-init-break-resolv-symlink.patch
|
||||||
# FIXME (lp#1849378) expected in 19.3
|
# FIXME (lp#1858808)
|
||||||
Patch53: cloud-init-renderer-detect.patch
|
Patch55: cloud-init-mix-static-dhcp.patch
|
||||||
Patch54: cloud-init-proper-ipv6-setting.patch
|
# FIXME no proposed solution
|
||||||
|
Patch56: cloud-init-sysconf-path.patch
|
||||||
|
# FIXME (lp#1860164)
|
||||||
|
Patch57: cloud-init-no-tempnet-oci.patch
|
||||||
|
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: filesystem
|
BuildRequires: filesystem
|
||||||
@ -184,22 +177,19 @@ Documentation and examples for cloud-init tools
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch0 -p1
|
||||||
%if 0%{?suse_version} < 1315
|
%if 0%{?suse_version} < 1315
|
||||||
%patch20
|
%patch20
|
||||||
%patch21
|
%patch21
|
||||||
%endif
|
%endif
|
||||||
%patch29 -p0
|
%patch29 -p0
|
||||||
%patch34
|
%patch34
|
||||||
%patch38
|
|
||||||
%patch41
|
|
||||||
%patch42
|
%patch42
|
||||||
%patch43
|
%patch43
|
||||||
%patch47
|
|
||||||
%patch50 -p1
|
|
||||||
%patch51 -p1
|
|
||||||
%patch52
|
%patch52
|
||||||
%patch53
|
%patch55 -p0
|
||||||
%patch54
|
%patch56
|
||||||
|
%patch57
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%if 0%{?suse_version} && 0%{?suse_version} <= 1315
|
%if 0%{?suse_version} && 0%{?suse_version} <= 1315
|
||||||
@ -236,9 +226,14 @@ done
|
|||||||
mkdir -p %{buildroot}%{_localstatedir}/lib/cloud
|
mkdir -p %{buildroot}%{_localstatedir}/lib/cloud
|
||||||
# move documentation
|
# move documentation
|
||||||
mkdir -p %{buildroot}%{_defaultdocdir}
|
mkdir -p %{buildroot}%{_defaultdocdir}
|
||||||
mv %{buildroot}%{_datadir}/doc/%{name} %{buildroot}%{docdir}
|
mv %{buildroot}%{_datadir}/doc/%{name} %{buildroot}%{_defaultdocdir}
|
||||||
|
# man pages
|
||||||
|
mkdir -p %{buildroot}%{_mandir}/man1
|
||||||
|
mv doc/man/* %{buildroot}%{_mandir}/man1
|
||||||
# copy the LICENSE
|
# copy the LICENSE
|
||||||
cp LICENSE %{buildroot}%{docdir}
|
mkdir -p %{buildroot}%{_defaultlicensedir}/%{name}
|
||||||
|
cp LICENSE %{buildroot}%{_defaultlicensedir}/%{name}
|
||||||
|
cp LICENSE-GPLv3 %{buildroot}%{_defaultlicensedir}/%{name}
|
||||||
# Set the distribution indicator
|
# Set the distribution indicator
|
||||||
%if 0%{?suse_version}
|
%if 0%{?suse_version}
|
||||||
%if 0%{?is_opensuse}
|
%if 0%{?is_opensuse}
|
||||||
@ -287,8 +282,7 @@ popd
|
|||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
# do not mark as doc or we get conflicts with the doc package
|
%license LICENSE LICENSE-GPLv3
|
||||||
%{docdir}/LICENSE
|
|
||||||
%{_bindir}/cloud-id
|
%{_bindir}/cloud-id
|
||||||
%{_bindir}/cloud-init
|
%{_bindir}/cloud-init
|
||||||
%{_bindir}/cloud-init-per
|
%{_bindir}/cloud-init-per
|
||||||
@ -297,6 +291,7 @@ popd
|
|||||||
%config(noreplace) %{_sysconfdir}/cloud/templates
|
%config(noreplace) %{_sysconfdir}/cloud/templates
|
||||||
%{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient
|
%{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient
|
||||||
%{_sysconfdir}/NetworkManager/dispatcher.d/hook-network-manager
|
%{_sysconfdir}/NetworkManager/dispatcher.d/hook-network-manager
|
||||||
|
%{_mandir}/man*/*
|
||||||
%if 0%{?suse_version} && 0%{?suse_version} < 1500
|
%if 0%{?suse_version} && 0%{?suse_version} < 1500
|
||||||
%dir %{_datadir}/bash-completion
|
%dir %{_datadir}/bash-completion
|
||||||
%dir %{_datadir}/bash-completion/completions
|
%dir %{_datadir}/bash-completion/completions
|
||||||
@ -352,9 +347,7 @@ popd
|
|||||||
%files doc
|
%files doc
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%{docdir}/examples/*
|
%{docdir}/examples/*
|
||||||
%{docdir}/README
|
|
||||||
%{docdir}/*.txt
|
%{docdir}/*.txt
|
||||||
#%{docdir}/*.rst
|
|
||||||
%dir %{docdir}/examples
|
%dir %{docdir}/examples
|
||||||
|
|
||||||
#%files test
|
#%files test
|
||||||
|
Loading…
Reference in New Issue
Block a user