SHA256
1
0
forked from pool/cloud-init

- Update to version 20.2 (bsc#1174443, bsc#1174444)

+ Remove patches included upstream:
    - 0001-Make-tests-work-with-Python-3.8-139.patch
    - cloud-init-ostack-metadat-dencode.patch
    - cloud-init-use-different-random-src.diff
    - cloud-init-long-pass.patch
    - cloud-init-mix-static-dhcp.patch
  + Remove patches build switched to Python 3 for all distributions
    - cloud-init-python2-sigpipe.patch
    - cloud-init-template-py2.patch
  + Add
    - cloud-init-after-kvp.diff
    - cloud-init-recognize-hpc.patch
  + doc/format: reference make-mime.py instead of an inline script (#334)
  + Add docs about  creating parent folders (#330) [Adrian Wilkins]
  + DataSourceNoCloud/OVF: drop claim to support FTP (#333) (LP: #1875470)
  + schema: ignore spurious pylint error (#332)
  + schema: add json schema for write_files module (#152)
  + BSD: find_devs_with_ refactoring (#298) [Gonéri Le Bouder]
  + nocloud: drop work around for Linux 2.6 (#324) [Gonéri Le Bouder]
  + cloudinit: drop dependencies on unittest2 and contextlib2 (#322)
  + distros: handle a potential mirror filtering error case (#328)
  + log: remove unnecessary import fallback logic (#327)
  + .travis.yml: don't run integration test on ubuntu/* branches (#321)
  + More unit test documentation (#314)
  + conftest: introduce disable_subp_usage autouse fixture (#304)
  + YAML align indent sizes for docs readability  (#323) [Tak Nishigori]
  + network_state: add missing space to log message (#325)
  + tests: add missing mocks for get_interfaces_by_mac (#326) (LP: #1873910)
  + test_mounts: expand happy path test for both happy paths (#319)

OBS-URL: https://build.opensuse.org/package/show/Cloud:Tools/cloud-init?expand=0&rev=173
This commit is contained in:
Robert Schweikert 2020-08-07 16:48:46 +00:00 committed by Git OBS Bridge
parent ba3c773df0
commit 04ac085278
13 changed files with 237 additions and 1966 deletions

View File

@ -1,104 +0,0 @@
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:a2c1f318cbfb28c13b41bbb0de5ab9b21d7cf4b7118551366cd508380124f262
size 1091893

3
cloud-init-20.2.tar.gz Normal file
View File

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

12
cloud-init-after-kvp.diff Normal file
View File

@ -0,0 +1,12 @@
diff --git a/systemd/cloud-init-local.service.tmpl b/systemd/cloud-init-local.service.tmpl
index ff9c644d..7166f640 100644
--- a/systemd/cloud-init-local.service.tmpl
+++ b/systemd/cloud-init-local.service.tmpl
@@ -5,6 +5,7 @@ Description=Initial cloud-init job (pre-networking)
DefaultDependencies=no
{% endif %}
Wants=network-pre.target
+After=hv_kvp_daemon.service
After=systemd-remount-fs.service
Before=NetworkManager.service
Before=network-pre.target

View File

@ -1,11 +0,0 @@
--- cloudinit/config/cc_set_passwords.py.orig
+++ cloudinit/config/cc_set_passwords.py
@@ -236,7 +236,7 @@ def handle(_name, cfg, cloud, log, args)
raise errors[-1]
-def rand_user_password(pwlen=9):
+def rand_user_password(pwlen=20):
return util.rand_str(pwlen, select_from=PW_SET)

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +0,0 @@
--- cloudinit/sources/helpers/openstack.py.orig
+++ cloudinit/sources/helpers/openstack.py
@@ -291,7 +291,10 @@ class BaseReader(object):
if 'random_seed' in metadata:
random_seed = metadata['random_seed']
try:
- metadata['random_seed'] = base64.b64decode(random_seed)
+ metadata['random_seed'] = u'%s' % base64.b64decode(random_seed)
+ except UnicodeDecodeError:
+ # Did not decode as expected, probably utf-8 already
+ metadata['random_seed'] = random_seed
except (ValueError, TypeError) as e:
raise BrokenMetadata("Badly formatted metadata"
" random_seed entry: %s" % e)

View File

@ -1,20 +0,0 @@
--- cloudinit/util.py.orig
+++ cloudinit/util.py
@@ -35,6 +35,7 @@ import time
from errno import ENOENT, ENOEXEC
from base64 import b64decode, b64encode
+from signal import signal, SIGPIPE, SIG_DFL
from six.moves.urllib import parse as urlparse
import six
@@ -2031,7 +2032,8 @@ def subp(args, data=None, rcs=None, env=
try:
sp = subprocess.Popen(bytes_args, stdout=stdout,
stderr=stderr, stdin=stdin,
- env=env, shell=shell)
+ env=env, shell=shell,
+ preexec_fn=lambda: signal(SIGPIPE, SIG_DFL))
(out, err) = sp.communicate(data)
except OSError as e:
if status_cb:

View File

@ -0,0 +1,13 @@
--- cloudinit/util.py.orig
+++ cloudinit/util.py
@@ -656,7 +656,9 @@ def system_info():
elif linux_dist == 'redhat':
var = 'rhel'
elif linux_dist in (
- 'opensuse', 'opensuse-tumbleweed', 'opensuse-leap', 'sles'):
+ 'opensuse', 'opensuse-tumbleweed', 'opensuse-leap',
+ 'sles', 'sle_hpc'
+ ):
var = 'suse'
else:
var = 'linux'

View File

@ -1,8 +0,0 @@
--- tools/render-cloudcfg.orig
+++ tools/render-cloudcfg
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/env python
import argparse
import os

View File

@ -1,16 +0,0 @@
diff --git a/cloudinit/util.py b/cloudinit/util.py
index d99e82fa5..c02b3d9a5 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -397,9 +397,10 @@ def translate_bool(val, addons=None):
def rand_str(strlen=32, select_from=None):
+ r = random.SystemRandom()
if not select_from:
select_from = string.ascii_letters + string.digits
- return "".join([random.choice(select_from) for _x in range(0, strlen)])
+ return "".join([r.choice(select_from) for _x in range(0, strlen)])
def rand_dict_key(dictionary, postfix=None):

View File

@ -1,3 +1,202 @@
-------------------------------------------------------------------
Fri Jul 24 19:55:40 UTC 2020 - Robert Schweikert <rjschwei@suse.com>
- Update to version 20.2 (bsc#1174443, bsc#1174444)
+ Remove patches included upstream:
- 0001-Make-tests-work-with-Python-3.8-139.patch
- cloud-init-ostack-metadat-dencode.patch
- cloud-init-use-different-random-src.diff
- cloud-init-long-pass.patch
- cloud-init-mix-static-dhcp.patch
+ Remove patches build switched to Python 3 for all distributions
- cloud-init-python2-sigpipe.patch
- cloud-init-template-py2.patch
+ Add
- cloud-init-after-kvp.diff
- cloud-init-recognize-hpc.patch
+ doc/format: reference make-mime.py instead of an inline script (#334)
+ Add docs about creating parent folders (#330) [Adrian Wilkins]
+ DataSourceNoCloud/OVF: drop claim to support FTP (#333) (LP: #1875470)
+ schema: ignore spurious pylint error (#332)
+ schema: add json schema for write_files module (#152)
+ BSD: find_devs_with_ refactoring (#298) [Gonéri Le Bouder]
+ nocloud: drop work around for Linux 2.6 (#324) [Gonéri Le Bouder]
+ cloudinit: drop dependencies on unittest2 and contextlib2 (#322)
+ distros: handle a potential mirror filtering error case (#328)
+ log: remove unnecessary import fallback logic (#327)
+ .travis.yml: don't run integration test on ubuntu/* branches (#321)
+ More unit test documentation (#314)
+ conftest: introduce disable_subp_usage autouse fixture (#304)
+ YAML align indent sizes for docs readability (#323) [Tak Nishigori]
+ network_state: add missing space to log message (#325)
+ tests: add missing mocks for get_interfaces_by_mac (#326) (LP: #1873910)
+ test_mounts: expand happy path test for both happy paths (#319)
+ cc_mounts: fix incorrect format specifiers (#316) (LP: #1872836)
+ swap file "size" being used before checked if str (#315) [Eduardo Otubo]
+ HACKING.rst: add pytest version gotchas section (#311)
+ docs: Add steps to re-run cloud-id and cloud-init (#313) [Joshua Powers]
+ readme: OpenBSD is now supported (#309) [Gonéri Le Bouder]
+ net: ignore 'renderer' key in netplan config (#306) (LP: #1870421)
+ Add support for NFS/EFS mounts (#300) [Andrew Beresford] (LP: #1870370)
+ openbsd: set_passwd should not unlock user (#289) [Gonéri Le Bouder]
+ tools/.github-cla-signers: add beezly as CLA signer (#301)
+ util: remove unnecessary lru_cache import fallback (#299)
+ HACKING.rst: reorganise/update CLA signature info (#297)
+ distros: drop leading/trailing hyphens from mirror URL labels (#296)
+ HACKING.rst: add note about variable annotations (#295)
+ CiTestCase: stop using and remove sys_exit helper (#283)
+ distros: replace invalid characters in mirror URLs with hyphens (#291)
(LP: #1868232)
+ rbxcloud: gracefully handle arping errors (#262) [Adam Dobrawy]
+ Fix cloud-init ignoring some misdeclared mimetypes in user-data.
[Kurt Garloff]
+ net: ubuntu focal prioritize netplan over eni even if both present
(#267) (LP: #1867029)
+ cloudinit: refactor util.is_ipv4 to net.is_ipv4_address (#292)
+ net/cmdline: replace type comments with annotations (#294)
+ HACKING.rst: add Type Annotations design section (#293)
+ net: introduce is_ip_address function (#288)
+ CiTestCase: remove now-unneeded parse_and_read helper method (#286)
+ .travis.yml: allow 30 minutes of inactivity in cloud tests (#287)
+ sources/tests/test_init: drop use of deprecated inspect.getargspec (#285)
+ setup.py: drop NIH check_output implementation (#282)
+ Identify SAP Converged Cloud as OpenStack [Silvio Knizek]
+ add Openbsd support (#147) [Gonéri Le Bouder]
+ HACKING.rst: add examples of the two test class types (#278)
+ VMWware: support to update guest info gc status if enabled (#261)
[xiaofengw-vmware]
+ Add lp-to-git mapping for kgarloff (#279)
+ set_passwords: avoid chpasswd on BSD (#268) [Gonéri Le Bouder]
+ HACKING.rst: add Unit Testing design section (#277)
+ util: read_cc_from_cmdline handle urlencoded yaml content (#275)
+ distros/tests/test_init: add tests for _get_package_mirror_info (#272)
+ HACKING.rst: add links to new Code Review Process doc (#276)
+ freebsd: ensure package update works (#273) [Gonéri Le Bouder]
+ doc: introduce Code Review Process documentation (#160)
+ tools: use python3 (#274)
+ cc_disk_setup: fix RuntimeError (#270) (LP: #1868327)
+ cc_apt_configure/util: combine search_for_mirror implementations (#271)
+ bsd: boottime does not depend on the libc soname (#269)
[Gonéri Le Bouder]
+ test_oracle,DataSourceOracle: sort imports (#266)
+ DataSourceOracle: update .network_config docstring (#257)
+ cloudinit/tests: remove unneeded with_logs configuration (#263)
+ .travis.yml: drop stale comment (#255)
+ .gitignore: add more common directories (#258)
+ ec2: render network on all NICs and add secondary IPs as static (#114)
(LP: #1866930)
+ ec2 json validation: fix the reference to the 'merged_cfg' key (#256)
[Paride Legovini]
+ releases.yaml: quote the Ubuntu version numbers (#254) [Paride Legovini]
+ cloudinit: remove six from packaging/tooling (#253)
+ util/netbsd: drop six usage (#252)
+ workflows: introduce stale pull request workflow (#125)
+ cc_resolv_conf: introduce tests and stabilise output across Python
versions (#251)
+ fix minor issue with resolv_conf template (#144) [andreaf74]
+ doc: CloudInit also support NetBSD (#250) [Gonéri Le Bouder]
+ Add Netbsd support (#62) [Gonéri Le Bouder]
+ tox.ini: avoid substition syntax that causes a traceback on xenial (#245)
+ Add pub_key_ed25519 to cc_phone_home (#237) [Daniel Hensby]
+ Introduce and use of a list of GitHub usernames that have signed CLA
(#244)
+ workflows/cla.yml: use correct username for CLA check (#243)
+ tox.ini: use xenial version of jsonpatch in CI (#242)
+ workflows: CLA validation altered to fail status on pull_request (#164)
+ tox.ini: bump pyflakes version to 2.1.1 (#239)
+ cloudinit: move to pytest for running tests (#211)
+ instance-data: add cloud-init merged_cfg and sys_info keys to json
(#214) (LP: #1865969)
+ ec2: Do not fallback to IMDSv1 on EC2 (#216)
+ instance-data: write redacted cfg to instance-data.json (#233)
(LP: #1865947)
+ net: support network-config:disabled on the kernel commandline (#232)
(LP: #1862702)
+ ec2: only redact token request headers in logs, avoid altering request
(#230) (LP: #1865882)
+ docs: typo fixed: dta → data [Alexey Vazhnov]
+ Fixes typo on Amazon Web Services (#217) [Nick Wales]
+ Fix docs for OpenStack DMI Asset Tag (#228)
[Mark T. Voelker] (LP: #1669875)
+ Add physical network type: cascading to openstack helpers (#200)
[sab-systems]
+ tests: add focal integration tests for ubuntu (#225)
- From 20.1 (first vesrion after 19.4)
+ ec2: Do not log IMDSv2 token values, instead use REDACTED (#219)
(LP: #1863943)
+ utils: use SystemRandom when generating random password. (#204)
[Dimitri John Ledkov]
+ docs: mount_default_files is a list of 6 items, not 7 (#212)
+ azurecloud: fix issues with instances not starting (#205) (LP: #1861921)
+ unittest: fix stderr leak in cc_set_password random unittest
output. (#208)
+ cc_disk_setup: add swap filesystem force flag (#207)
+ import sysvinit patches from freebsd-ports tree (#161) [Igor Galić]
+ docs: fix typo (#195) [Edwin Kofler]
+ sysconfig: distro-specific config rendering for BOOTPROTO option (#162)
[Robert Schweikert] (LP: #1800854)
+ cloudinit: replace "from six import X" imports (except in util.py) (#183)
+ run-container: use 'test -n' instead of 'test ! -z' (#202)
[Paride Legovini]
+ net/cmdline: correctly handle static ip= config (#201)
[Dimitri John Ledkov] (LP: #1861412)
+ Replace mock library with unittest.mock (#186)
+ HACKING.rst: update CLA link (#199)
+ Scaleway: Fix DatasourceScaleway to avoid backtrace (#128)
[Louis Bouchard]
+ cloudinit/cmd/devel/net_convert.py: add missing space (#191)
+ tools/run-container: drop support for python2 (#192) [Paride Legovini]
+ Print ssh key fingerprints using sha256 hash (#188) (LP: #1860789)
+ Make the RPM build use Python 3 (#190) [Paride Legovini]
+ cc_set_password: increase random pwlength from 9 to 20 (#189)
(LP: #1860795)
+ .travis.yml: use correct Python version for xenial tests (#185)
+ cloudinit: remove ImportError handling for mock imports (#182)
+ Do not use fallocate in swap file creation on xfs. (#70)
[Eduardo Otubo] (LP: #1781781)
+ .readthedocs.yaml: install cloud-init when building docs (#181)
(LP: #1860450)
+ Introduce an RTD config file, and pin the Sphinx version to the RTD
default (#180)
+ Drop most of the remaining use of six (#179)
+ Start removing dependency on six (#178)
+ Add Rootbox & HyperOne to list of cloud in README (#176) [Adam Dobrawy]
+ docs: add proposed SRU testing procedure (#167)
+ util: rename get_architecture to get_dpkg_architecture (#173)
+ Ensure util.get_architecture() runs only once (#172)
+ Only use gpart if it is the BSD gpart (#131) [Conrad Hoffmann]
+ freebsd: remove superflu exception mapping (#166) [Gonéri Le Bouder]
+ ssh_auth_key_fingerprints_disable test: fix capitalization (#165)
[Paride Legovini]
+ util: move uptime's else branch into its own boottime function (#53)
[Igor Galić] (LP: #1853160)
+ workflows: add contributor license agreement checker (#155)
+ net: fix rendering of 'static6' in network config (#77) (LP: #1850988)
+ Make tests work with Python 3.8 (#139) [Conrad Hoffmann]
+ fixed minor bug with mkswap in cc_disk_setup.py (#143) [andreaf74]
+ freebsd: fix create_group() cmd (#146) [Gonéri Le Bouder]
+ doc: make apt_update example consistent (#154)
+ doc: add modules page toc with links (#153) (LP: #1852456)
+ Add support for the amazon variant in cloud.cfg.tmpl (#119)
[Frederick Lefebvre]
+ ci: remove Python 2.7 from CI runs (#137)
+ modules: drop cc_snap_config config module (#134)
+ migrate-lp-user-to-github: ensure Launchpad repo exists (#136)
+ docs: add initial troubleshooting to FAQ (#104) [Joshua Powers]
+ doc: update cc_set_hostname frequency and descrip (#109)
[Joshua Powers] (LP: #1827021)
+ freebsd: introduce the freebsd renderer (#61) [Gonéri Le Bouder]
+ cc_snappy: remove deprecated module (#127)
+ HACKING.rst: clarify that everyone needs to do the LP->GH dance (#130)
+ freebsd: cloudinit service requires devd (#132) [Gonéri Le Bouder]
+ cloud-init: fix capitalisation of SSH (#126)
+ doc: update cc_ssh clarify host and auth keys
[Joshua Powers] (LP: #1827021)
+ ci: emit names of tests run in Travis (#120)
-------------------------------------------------------------------
Thu Jun 18 12:11:49 UTC 2020 - Robert Schweikert <rjschwei@suse.com>

View File

@ -18,7 +18,7 @@
%global configver 0.7
Name: cloud-init
Version: 19.4
Version: 20.2
Release: 0
License: GPL-3.0
Summary: Cloud node initialization tool
@ -26,35 +26,24 @@ 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 (lp#1801364)
Patch42: cloud-init-ostack-metadat-dencode.patch
# FIXME (lp#1812117)
Patch43: cloud-init-write-routes.patch
# FIXME (lp#1849296)
Patch52: cloud-init-break-resolv-symlink.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
Patch58: cloud-init-use-different-random-src.diff
Patch59: cloud-init-long-pass.patch
Patch58: cloud-init-after-kvp.diff
Patch59: cloud-init-recognize-hpc.patch
BuildRequires: fdupes
BuildRequires: filesystem
# pkg-config is needed to find correct systemd unit dir
BuildRequires: pkg-config
# needed for /lib/udev
BuildRequires: pkgconfig(udev)
%if 0%{?suse_version} > 1320
BuildRequires: python3-devel
BuildRequires: python3-setuptools
# Test requirements
@ -66,16 +55,8 @@ BuildRequires: python3-jsonpatch
BuildRequires: python3-mock
BuildRequires: python3-nose
BuildRequires: python3-oauthlib
BuildRequires: python3-pytest
BuildRequires: python3-requests
#BuildRequires: python3-testtools
%else
BuildRequires: python-devel
BuildRequires: python-Jinja2
BuildRequires: python-PyYAML
BuildRequires: python-requests
BuildRequires: python-setuptools
BuildRequires: python-six
%endif
%if 0%{?is_opensuse}
BuildRequires: openSUSE-release
%else
@ -89,7 +70,6 @@ Requires: growpart
Requires: e2fsprogs
Requires: net-tools
Requires: openssh
%if 0%{?suse_version} > 1320
Requires: python3-configobj >= 5.0.2
Requires: python3-Jinja2
Requires: python3-jsonpatch
@ -101,31 +81,15 @@ Requires: python3-requests
Requires: python3-setuptools
Requires: python3-six
Requires: python3-xml
%else
Requires: python-argparse
Requires: python-configobj >= 5.0.2
Requires: python-Jinja2
Requires: python-jsonpatch
Requires: python-jsonschema
Requires: python-oauthlib
Requires: python-pyserial
Requires: python-PyYAML
Requires: python-requests
Requires: python-setuptools
Requires: python-six
Requires: python-xml
%endif
Requires: sudo
Requires: util-linux
Requires: wicked-service
Requires: cloud-init-config = %configver
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define docdir %{_defaultdocdir}/%{name}
%ifarch %ix86 x86_64
Requires: dmidecode
%endif
%if 0%{?suse_version} && 0%{?suse_version} <= 1210
%define initsys sysvinit_suse
%else
%define initsys systemd
BuildRequires: pkgconfig(systemd)
%{?systemd_requires}
@ -134,12 +98,6 @@ BuildRequires: pkgconfig(systemd)
%else
%define systemd_prefix /usr/lib
%endif
%endif
%if 0%{?suse_version} && 0%{?suse_version} >= 1315
Requires: wicked-service
%else
Requires: sysconfig-network
%endif
%description
Cloud-init is an init script that initializes a cloud node (VM)
@ -147,9 +105,9 @@ according to the fetched configuration data from the admin node.
%package config-suse
Summary: Configuration file for Cloud node initialization tool
Provides: cloud-init-config = %configver
Provides: cloud-init-config = %configver
Group: System/Management
Conflicts: otherproviders(cloud-init-config)
Conflicts: otherproviders(cloud-init-config)
%description config-suse
This package contains the product specific configuration file
@ -166,62 +124,27 @@ according to the fetched configuration data from the admin node.
Documentation and examples for cloud-init tools
#%package test
#Summary: Cloud node initialization tool - Testsuite
#Group: System/Management
#Requires: cloud-init = %{version}
#
#%description test
#Cloud-init is an init script that initializes a cloud node (VM)
#according to the fetched configuration data from the admin node.
#
#Unit tests for the cloud-init tools
%prep
%setup -q
%patch0 -p1
%if 0%{?suse_version} < 1315
%patch20
%patch21
%endif
%patch29 -p0
%patch34
%patch42
%patch43
%patch52
%patch55 -p0
%patch56
%patch57
%patch58 -p1
%patch59
%build
%if 0%{?suse_version} && 0%{?suse_version} <= 1315
python setup.py build
%else
python3 setup.py build
%endif
#%if 0%{?suse_version} > 1320
#%check
## these tests are currently failing due to suse patches
#rm -v tests/unittests/test_distros/test_netconfig.py
#rm -v tests/unittests/test_net.py
%check
## Ignore test failure currently not doing anything with opennebula
#rm -v tests/unittests/test_datasource/test_opennebula.py
## To be investigated
#rm -v tests/unittests/test_handler/test_handler_ntp.py
#make test
#%endif
rm -v tests/unittests/test_datasource/test_opennebula.py
make unittest3
%install
%if 0%{?suse_version} && 0%{?suse_version} <= 1315
python setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python_sitelib} --init-system=%{initsys}
%else
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib} --init-system=%{initsys}
%endif
find %{buildroot} \( -name .gitignore -o -name .placeholder \) -delete
# from debian install script
for x in "%{buildroot}%{_bindir}/"*.py; do
@ -259,30 +182,10 @@ rm %{buildroot}/%{_sysconfdir}/cloud/templates/*.debian.*
rm %{buildroot}/%{_sysconfdir}/cloud/templates/*.redhat.*
rm %{buildroot}/%{_sysconfdir}/cloud/templates/*.ubuntu.*
# move sysvinit scripts into the "right" place
%if 0%{?suse_version} && 0%{?suse_version} <= 1210
mkdir -p %{buildroot}/%{_initddir}
mkdir -p %{buildroot}/%{_sbindir}
pushd "%{buildroot}%{_initddir}"
for iniF in *; do
ln -s "%{_initddir}/${iniF}" "%{buildroot}/%{_sbindir}/rc${iniF}"
done
popd
%endif
# remove duplicate files
%if 0%{?suse_version}
%if 0%{?suse_version} <= 1315
%fdupes %{buildroot}%{python_sitelib}
%else
%fdupes %{buildroot}%{python3_sitelib}
%endif
%endif
%if 0%{?suse_version} && 0%{?suse_version} <= 1210
%postun
%insserv_cleanup
%endif
%files
%defattr(-,root,root)
@ -301,24 +204,9 @@ popd
%dir %{_datadir}/bash-completion/completions
%endif
%{_datadir}/bash-completion/completions/cloud-init
%if 0%{?suse_version} && 0%{?suse_version} <= 1315
%{python_sitelib}/cloudinit
%{python_sitelib}/cloud_init-%{version}-py%{py_ver}.egg-info
%else
%{python3_sitelib}/cloudinit
%{python3_sitelib}/cloud_init-%{version}-py%{py3_ver}.egg-info
%endif
%{_prefix}/lib/cloud-init
%if 0%{?suse_version} && 0%{?suse_version} <= 1210
%{_sbindir}/rccloud-config
%{_sbindir}/rccloud-init
%{_sbindir}/rccloud-init-local
%{_sbindir}/rccloud-final
%attr(0755, root, root) %{_initddir}/cloud-config
%attr(0755, root, root) %{_initddir}/cloud-init
%attr(0755, root, root) %{_initddir}/cloud-init-local
%attr(0755, root, root) %{_initddir}/cloud-final
%else
%{systemd_prefix}/systemd/system-generators/cloud-init-generator
%{systemd_prefix}/systemd/system/cloud-config.service
%{systemd_prefix}/systemd/system/cloud-config.target
@ -326,17 +214,9 @@ popd
%{systemd_prefix}/systemd/system/cloud-init.service
%{systemd_prefix}/systemd/system/cloud-init.target
%{systemd_prefix}/systemd/system/cloud-final.service
%endif
%if 0%{?suse_version} && 0%{?suse_version} > 1110
%dir %{_sysconfdir}/rsyslog.d
%{_sysconfdir}/rsyslog.d/21-cloudinit.conf
/usr/lib/udev/rules.d/66-azure-ephemeral.rules
# This if condition really distinquished between OBS and IBS.
# For SLE 12 builds in OBS owning the directories is not required, while
# SLE 12 builds in IBS require owning the directories
%else
/lib/udev/rules.d/66-azure-ephemeral.rules
%endif
%dir %attr(0755, root, root) %{_localstatedir}/lib/cloud
%dir %{docdir}
%dir /etc/NetworkManager