SHA256
1
0
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:
Dominique Leuenberger 2020-01-23 15:08:30 +00:00 committed by Git OBS Bridge
commit e8539a971b
14 changed files with 2020 additions and 195 deletions

View 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

View File

@ -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
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a2c1f318cbfb28c13b41bbb0de5ab9b21d7cf4b7118551366cd508380124f262
size 1091893

View File

@ -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

File diff suppressed because it is too large Load Diff

View 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']

View File

@ -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'

View File

@ -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':

View File

@ -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:

View File

@ -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

View File

@ -1,13 +1,13 @@
--- cloudinit/net/sysconfig.py.orig
+++ 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):
return False
- expected_paths = [
- 'etc/sysconfig/network-scripts/network-functions',
- 'etc/sysconfig/network-scripts/ifdown-eth']
- 'etc/sysconfig/config']
+ expected_paths = ['etc/sysconfig/network/scripts/functions.netconfig']
for p in expected_paths:
if not os.path.isfile(util.target_path(target, p)):
return False
if os.path.isfile(util.target_path(target, p)):
return True

View File

@ -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)

View File

@ -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>

View File

@ -18,40 +18,33 @@
%global configver 0.7
Name: cloud-init
Version: 19.2
Version: 19.4
Release: 0
License: GPL-3.0 and AGPL-3.0
License: GPL-3.0
Summary: Cloud node initialization tool
Url: http://launchpad.net/cloud-init/
Group: System/Management
Source0: %{name}-%{version}.tar.gz
Source1: rsyslog-cloud-init.cfg
Patch0: 0001-Make-tests-work-with-Python-3.8-139.patch
# FIXME
# python2 disables SIGPIPE, causing broken pipe errors in shell scripts (bsc#903449)
Patch20: cloud-init-python2-sigpipe.patch
Patch21: cloud-init-template-py2.patch
Patch29: datasourceLocalDisk.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)
Patch42: cloud-init-ostack-metadat-dencode.patch
# FIXME (lp#1812117)
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)
Patch52: cloud-init-break-resolv-symlink.patch
# FIXME (lp#1849378) expected in 19.3
Patch53: cloud-init-renderer-detect.patch
Patch54: cloud-init-proper-ipv6-setting.patch
# FIXME (lp#1858808)
Patch55: cloud-init-mix-static-dhcp.patch
# FIXME no proposed solution
Patch56: cloud-init-sysconf-path.patch
# FIXME (lp#1860164)
Patch57: cloud-init-no-tempnet-oci.patch
BuildRequires: fdupes
BuildRequires: filesystem
@ -184,22 +177,19 @@ Documentation and examples for cloud-init tools
%prep
%setup -q
%patch0 -p1
%if 0%{?suse_version} < 1315
%patch20
%patch21
%endif
%patch29 -p0
%patch34
%patch38
%patch41
%patch42
%patch43
%patch47
%patch50 -p1
%patch51 -p1
%patch52
%patch53
%patch54
%patch55 -p0
%patch56
%patch57
%build
%if 0%{?suse_version} && 0%{?suse_version} <= 1315
@ -236,9 +226,14 @@ done
mkdir -p %{buildroot}%{_localstatedir}/lib/cloud
# move documentation
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
cp LICENSE %{buildroot}%{docdir}
mkdir -p %{buildroot}%{_defaultlicensedir}/%{name}
cp LICENSE %{buildroot}%{_defaultlicensedir}/%{name}
cp LICENSE-GPLv3 %{buildroot}%{_defaultlicensedir}/%{name}
# Set the distribution indicator
%if 0%{?suse_version}
%if 0%{?is_opensuse}
@ -287,8 +282,7 @@ popd
%files
%defattr(-,root,root)
# do not mark as doc or we get conflicts with the doc package
%{docdir}/LICENSE
%license LICENSE LICENSE-GPLv3
%{_bindir}/cloud-id
%{_bindir}/cloud-init
%{_bindir}/cloud-init-per
@ -297,6 +291,7 @@ popd
%config(noreplace) %{_sysconfdir}/cloud/templates
%{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient
%{_sysconfdir}/NetworkManager/dispatcher.d/hook-network-manager
%{_mandir}/man*/*
%if 0%{?suse_version} && 0%{?suse_version} < 1500
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
@ -352,9 +347,7 @@ popd
%files doc
%defattr(-,root,root)
%{docdir}/examples/*
%{docdir}/README
%{docdir}/*.txt
#%{docdir}/*.rst
%dir %{docdir}/examples
#%files test