import cloud-init-20.3-10.el8
This commit is contained in:
parent
836d75c274
commit
f375bcc21d
@ -1 +1 @@
|
||||
5f4de38850f9691dc9789bd4db4be512c9717d7b SOURCES/cloud-init-19.4.tar.gz
|
||||
cbde66f717b7883c4ab64b145042de54f131afab SOURCES/cloud-init-20.3.tar.gz
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/cloud-init-19.4.tar.gz
|
||||
SOURCES/cloud-init-20.3.tar.gz
|
||||
|
@ -1,12 +1,16 @@
|
||||
From 4114343d0cd2fc3e5566eed27272480e003c89cc Mon Sep 17 00:00:00 2001
|
||||
From: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
Date: Thu, 31 May 2018 16:45:23 +0200
|
||||
From 25ea7a28d69518319ae1ed1b3cd510147868fd29 Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon, 5 Oct 2020 13:49:36 +0200
|
||||
Subject: Add initial redhat setup
|
||||
|
||||
Rebase notes (18.5):
|
||||
- added bash_completition file
|
||||
- added cloud-id file
|
||||
|
||||
Merged patches (20.3):
|
||||
- 01900d0 changing ds-identify patch from /usr/lib to /usr/libexec
|
||||
- 7f47ca3 Render the generator from template instead of cp
|
||||
|
||||
Merged patches (19.4):
|
||||
- 4ab5a61 Fix for network configuration not persisting after reboot
|
||||
- 84cf125 Removing cloud-user from wheel
|
||||
@ -17,38 +21,48 @@ Merged patches (18.5):
|
||||
- 764159f Adding systemd mount options to wait for cloud-init
|
||||
- da4d99e Adding disk_setup to rhel/cloud.cfg
|
||||
- f5c6832 Enable cloud-init by default on vmware
|
||||
|
||||
Conflicts:
|
||||
cloudinit/config/cc_chef.py:
|
||||
- Updated header documentation text
|
||||
- Replacing double quotes by simple quotes
|
||||
|
||||
setup.py:
|
||||
- Adding missing cmdclass info
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
---
|
||||
.gitignore | 1 +
|
||||
cloudinit/config/cc_chef.py | 6 +-
|
||||
cloudinit/config/cc_chef.py | 67 ++++-
|
||||
cloudinit/settings.py | 7 +-
|
||||
redhat/.gitignore | 1 +
|
||||
redhat/Makefile | 71 ++++++
|
||||
redhat/Makefile | 71 +++++
|
||||
redhat/Makefile.common | 37 +++
|
||||
redhat/cloud-init-tmpfiles.conf | 1 +
|
||||
redhat/cloud-init.spec.template | 438 ++++++++++++++++++++++++++++++++++
|
||||
redhat/cloud-init.spec.template | 517 ++++++++++++++++++++++++++++++++++
|
||||
redhat/gating.yaml | 9 +
|
||||
redhat/rpmbuild/BUILD/.gitignore | 3 +
|
||||
redhat/rpmbuild/RPMS/.gitignore | 3 +
|
||||
redhat/rpmbuild/SOURCES/.gitignore | 3 +
|
||||
redhat/rpmbuild/SPECS/.gitignore | 3 +
|
||||
redhat/rpmbuild/SRPMS/.gitignore | 3 +
|
||||
redhat/scripts/frh.py | 27 +++
|
||||
redhat/scripts/git-backport-diff | 327 +++++++++++++++++++++++++
|
||||
redhat/scripts/git-compile-check | 215 +++++++++++++++++
|
||||
redhat/scripts/process-patches.sh | 73 ++++++
|
||||
redhat/scripts/frh.py | 27 ++
|
||||
redhat/scripts/git-backport-diff | 327 +++++++++++++++++++++
|
||||
redhat/scripts/git-compile-check | 215 ++++++++++++++
|
||||
redhat/scripts/process-patches.sh | 77 +++++
|
||||
redhat/scripts/tarball_checksum.sh | 3 +
|
||||
rhel/README.rhel | 5 +
|
||||
rhel/cloud-init-tmpfiles.conf | 1 +
|
||||
rhel/cloud.cfg | 69 ++++++
|
||||
rhel/cloud.cfg | 69 +++++
|
||||
rhel/systemd/cloud-config.service | 18 ++
|
||||
rhel/systemd/cloud-config.target | 11 +
|
||||
rhel/systemd/cloud-final.service | 19 ++
|
||||
rhel/systemd/cloud-init-local.service | 31 +++
|
||||
rhel/systemd/cloud-init-local.service | 31 ++
|
||||
rhel/systemd/cloud-init.service | 25 ++
|
||||
rhel/systemd/cloud-init.target | 7 +
|
||||
setup.py | 70 +-----
|
||||
tools/read-version | 28 +--
|
||||
30 files changed, 1417 insertions(+), 98 deletions(-)
|
||||
setup.py | 23 +-
|
||||
tools/read-version | 28 +-
|
||||
30 files changed, 1562 insertions(+), 50 deletions(-)
|
||||
create mode 100644 redhat/.gitignore
|
||||
create mode 100644 redhat/Makefile
|
||||
create mode 100644 redhat/Makefile.common
|
||||
@ -76,19 +90,82 @@ Merged patches (18.5):
|
||||
create mode 100644 rhel/systemd/cloud-init.target
|
||||
|
||||
diff --git a/cloudinit/config/cc_chef.py b/cloudinit/config/cc_chef.py
|
||||
index 0ad6b7f..e4408a4 100644
|
||||
index aaf7136..97ef649 100644
|
||||
--- a/cloudinit/config/cc_chef.py
|
||||
+++ b/cloudinit/config/cc_chef.py
|
||||
@@ -33,7 +33,7 @@ file).
|
||||
@@ -6,7 +6,70 @@
|
||||
#
|
||||
# This file is part of cloud-init. See LICENSE file for license information.
|
||||
|
||||
chef:
|
||||
directories: (defaulting to /etc/chef, /var/log/chef, /var/lib/chef,
|
||||
- /var/cache/chef, /var/backups/chef, /var/run/chef)
|
||||
-"""Chef: module that configures, starts and installs chef."""
|
||||
+"""
|
||||
+Chef
|
||||
+----
|
||||
+**Summary:** module that configures, starts and installs chef.
|
||||
+
|
||||
+This module enables chef to be installed (from packages or
|
||||
+from gems, or from omnibus). Before this occurs chef configurations are
|
||||
+written to disk (validation.pem, client.pem, firstboot.json, client.rb),
|
||||
+and needed chef folders/directories are created (/etc/chef and /var/log/chef
|
||||
+and so-on). Then once installing proceeds correctly if configured chef will
|
||||
+be started (in daemon mode or in non-daemon mode) and then once that has
|
||||
+finished (if ran in non-daemon mode this will be when chef finishes
|
||||
+converging, if ran in daemon mode then no further actions are possible since
|
||||
+chef will have forked into its own process) then a post run function can
|
||||
+run that can do finishing activities (such as removing the validation pem
|
||||
+file).
|
||||
+
|
||||
+**Internal name:** ``cc_chef``
|
||||
+
|
||||
+**Module frequency:** per always
|
||||
+
|
||||
+**Supported distros:** all
|
||||
+
|
||||
+**Config keys**::
|
||||
+
|
||||
+ chef:
|
||||
+ directories: (defaulting to /etc/chef, /var/log/chef, /var/lib/chef,
|
||||
+ /var/cache/chef, /var/backups/chef, /run/chef)
|
||||
validation_cert: (optional string to be written to file validation_key)
|
||||
special value 'system' means set use existing file
|
||||
validation_key: (optional the path for validation_cert. default
|
||||
@@ -89,7 +89,7 @@ CHEF_DIRS = tuple([
|
||||
+ validation_cert: (optional string to be written to file validation_key)
|
||||
+ special value 'system' means set use existing file
|
||||
+ validation_key: (optional the path for validation_cert. default
|
||||
+ /etc/chef/validation.pem)
|
||||
+ firstboot_path: (path to write run_list and initial_attributes keys that
|
||||
+ should also be present in this configuration, defaults
|
||||
+ to /etc/chef/firstboot.json)
|
||||
+ exec: boolean to run or not run chef (defaults to false, unless
|
||||
+ a gem installed is requested
|
||||
+ where this will then default
|
||||
+ to true)
|
||||
+
|
||||
+ chef.rb template keys (if falsey, then will be skipped and not
|
||||
+ written to /etc/chef/client.rb)
|
||||
+
|
||||
+ chef:
|
||||
+ client_key:
|
||||
+ encrypted_data_bag_secret:
|
||||
+ environment:
|
||||
+ file_backup_path:
|
||||
+ file_cache_path:
|
||||
+ json_attribs:
|
||||
+ log_level:
|
||||
+ log_location:
|
||||
+ node_name:
|
||||
+ omnibus_url:
|
||||
+ omnibus_url_retries:
|
||||
+ omnibus_version:
|
||||
+ pid_file:
|
||||
+ server_url:
|
||||
+ show_time:
|
||||
+ ssl_verify_mode:
|
||||
+ validation_cert:
|
||||
+ validation_key:
|
||||
+ validation_name:
|
||||
+"""
|
||||
|
||||
import itertools
|
||||
import json
|
||||
@@ -31,7 +94,7 @@ CHEF_DIRS = tuple([
|
||||
'/var/lib/chef',
|
||||
'/var/cache/chef',
|
||||
'/var/backups/chef',
|
||||
@ -97,15 +174,6 @@ index 0ad6b7f..e4408a4 100644
|
||||
])
|
||||
REQUIRED_CHEF_DIRS = tuple([
|
||||
'/etc/chef',
|
||||
@@ -113,7 +113,7 @@ CHEF_RB_TPL_DEFAULTS = {
|
||||
'json_attribs': CHEF_FB_PATH,
|
||||
'file_cache_path': "/var/cache/chef",
|
||||
'file_backup_path': "/var/backups/chef",
|
||||
- 'pid_file': "/var/run/chef/client.pid",
|
||||
+ 'pid_file': "/run/chef/client.pid",
|
||||
'show_time': True,
|
||||
'encrypted_data_bag_secret': None,
|
||||
}
|
||||
diff --git a/cloudinit/settings.py b/cloudinit/settings.py
|
||||
index ca4ffa8..3a04a58 100644
|
||||
--- a/cloudinit/settings.py
|
||||
@ -370,10 +438,10 @@ index 0000000..083c3b6
|
||||
+Description=Cloud-init target
|
||||
+After=multi-user.target
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 01a67b9..b2ac9bb 100755
|
||||
index cbacf48..d5cd01a 100755
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -139,14 +139,6 @@ INITSYS_FILES = {
|
||||
@@ -125,14 +125,6 @@ INITSYS_FILES = {
|
||||
'sysvinit_deb': [f for f in glob('sysvinit/debian/*') if is_f(f)],
|
||||
'sysvinit_openrc': [f for f in glob('sysvinit/gentoo/*') if is_f(f)],
|
||||
'sysvinit_suse': [f for f in glob('sysvinit/suse/*') if is_f(f)],
|
||||
@ -388,7 +456,7 @@ index 01a67b9..b2ac9bb 100755
|
||||
'upstart': [f for f in glob('upstart/*') if is_f(f)],
|
||||
}
|
||||
INITSYS_ROOTS = {
|
||||
@@ -155,9 +147,6 @@ INITSYS_ROOTS = {
|
||||
@@ -142,9 +134,6 @@ INITSYS_ROOTS = {
|
||||
'sysvinit_deb': 'etc/init.d',
|
||||
'sysvinit_openrc': 'etc/init.d',
|
||||
'sysvinit_suse': 'etc/init.d',
|
||||
@ -398,55 +466,7 @@ index 01a67b9..b2ac9bb 100755
|
||||
'upstart': 'etc/init/',
|
||||
}
|
||||
INITSYS_TYPES = sorted([f.partition(".")[0] for f in INITSYS_ROOTS.keys()])
|
||||
@@ -208,47 +197,6 @@ class MyEggInfo(egg_info):
|
||||
return ret
|
||||
|
||||
|
||||
-# TODO: Is there a better way to do this??
|
||||
-class InitsysInstallData(install):
|
||||
- init_system = None
|
||||
- user_options = install.user_options + [
|
||||
- # This will magically show up in member variable 'init_sys'
|
||||
- ('init-system=', None,
|
||||
- ('init system(s) to configure (%s) [default: None]' %
|
||||
- (", ".join(INITSYS_TYPES)))),
|
||||
- ]
|
||||
-
|
||||
- def initialize_options(self):
|
||||
- install.initialize_options(self)
|
||||
- self.init_system = ""
|
||||
-
|
||||
- def finalize_options(self):
|
||||
- install.finalize_options(self)
|
||||
-
|
||||
- if self.init_system and isinstance(self.init_system, str):
|
||||
- self.init_system = self.init_system.split(",")
|
||||
-
|
||||
- if len(self.init_system) == 0:
|
||||
- self.init_system = ['systemd']
|
||||
-
|
||||
- bad = [f for f in self.init_system if f not in INITSYS_TYPES]
|
||||
- if len(bad) != 0:
|
||||
- raise DistutilsArgError(
|
||||
- "Invalid --init-system: %s" % (','.join(bad)))
|
||||
-
|
||||
- for system in self.init_system:
|
||||
- # add data files for anything that starts with '<system>.'
|
||||
- datakeys = [k for k in INITSYS_ROOTS
|
||||
- if k.partition(".")[0] == system]
|
||||
- for k in datakeys:
|
||||
- if not INITSYS_FILES[k]:
|
||||
- continue
|
||||
- self.distribution.data_files.append(
|
||||
- (INITSYS_ROOTS[k], INITSYS_FILES[k]))
|
||||
- # Force that command to reinitalize (with new file list)
|
||||
- self.distribution.reinitialize_command('install_data', True)
|
||||
-
|
||||
-
|
||||
if not in_virtualenv():
|
||||
USR = "/" + USR
|
||||
ETC = "/" + ETC
|
||||
@@ -258,14 +206,11 @@ if not in_virtualenv():
|
||||
@@ -245,14 +234,11 @@ if not in_virtualenv():
|
||||
INITSYS_ROOTS[k] = "/" + INITSYS_ROOTS[k]
|
||||
|
||||
data_files = [
|
||||
@ -463,7 +483,7 @@ index 01a67b9..b2ac9bb 100755
|
||||
(USR + '/share/doc/cloud-init', [f for f in glob('doc/*') if is_f(f)]),
|
||||
(USR + '/share/doc/cloud-init/examples',
|
||||
[f for f in glob('doc/examples/*') if is_f(f)]),
|
||||
@@ -276,15 +221,8 @@ if os.uname()[0] != 'FreeBSD':
|
||||
@@ -263,8 +249,7 @@ if not platform.system().endswith('BSD'):
|
||||
data_files.extend([
|
||||
(ETC + '/NetworkManager/dispatcher.d/',
|
||||
['tools/hook-network-manager']),
|
||||
@ -471,16 +491,9 @@ index 01a67b9..b2ac9bb 100755
|
||||
- (LIB + '/udev/rules.d', [f for f in glob('udev/*.rules')])
|
||||
+ ('/usr/lib/udev/rules.d', [f for f in glob('udev/*.rules')])
|
||||
])
|
||||
-# Use a subclass for install that handles
|
||||
-# adding on the right init system configuration files
|
||||
-cmdclass = {
|
||||
- 'install': InitsysInstallData,
|
||||
- 'egg_info': MyEggInfo,
|
||||
-}
|
||||
|
||||
requirements = read_requires()
|
||||
|
||||
@@ -299,8 +237,6 @@ setuptools.setup(
|
||||
# Use a subclass for install that handles
|
||||
# adding on the right init system configuration files
|
||||
@@ -286,8 +271,6 @@ setuptools.setup(
|
||||
scripts=['tools/cloud-init-per'],
|
||||
license='Dual-licensed under GPLv3 or Apache 2.0',
|
||||
data_files=data_files,
|
||||
@ -490,14 +503,14 @@ index 01a67b9..b2ac9bb 100755
|
||||
'console_scripts': [
|
||||
'cloud-init = cloudinit.cmd.main:main',
|
||||
diff --git a/tools/read-version b/tools/read-version
|
||||
index 6dca659..d43cc8f 100755
|
||||
index 02c9064..79755f7 100755
|
||||
--- a/tools/read-version
|
||||
+++ b/tools/read-version
|
||||
@@ -65,32 +65,8 @@ output_json = '--json' in sys.argv
|
||||
src_version = ci_version.version_string()
|
||||
version_long = None
|
||||
|
||||
-if is_gitdir(_tdir) and which("git"):
|
||||
@@ -71,32 +71,8 @@ version_long = None
|
||||
is_release_branch_ci = (
|
||||
os.environ.get("TRAVIS_PULL_REQUEST_BRANCH", "").startswith("upstream/")
|
||||
)
|
||||
-if is_gitdir(_tdir) and which("git") and not is_release_branch_ci:
|
||||
- flags = []
|
||||
- if use_tags:
|
||||
- flags = ['--tags']
|
||||
|
@ -1,271 +1,278 @@
|
||||
From aa7ae9da7e10a5bcf190f8df3072e3864b2d8fb3 Mon Sep 17 00:00:00 2001
|
||||
From: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
Date: Thu, 31 May 2018 19:37:55 +0200
|
||||
From d9024cd3bd3bf09b05eb75ba3d81bd15f519c9f8 Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon, 5 Oct 2020 13:49:46 +0200
|
||||
Subject: Do not write NM_CONTROLLED=no in generated interface config files
|
||||
|
||||
Conflicts 20.3:
|
||||
- Not appplying patch on cloudinit/net/sysconfig.py since it now has a
|
||||
mechanism to identify if cloud-init is running on RHEL, having the
|
||||
correct settings for NM_CONTROLLED.
|
||||
|
||||
X-downstream-only: true
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
Signed-off-by: Ryan McCabe <rmccabe@redhat.com>
|
||||
---
|
||||
cloudinit/net/sysconfig.py | 1 -
|
||||
cloudinit/net/sysconfig.py | 2 +-
|
||||
tests/unittests/test_net.py | 30 ------------------------------
|
||||
2 files changed, 31 deletions(-)
|
||||
2 files changed, 1 insertion(+), 31 deletions(-)
|
||||
|
||||
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
|
||||
index 310cdf0..8bd7e88 100644
|
||||
index 0a5d481..23e467d 100644
|
||||
--- a/cloudinit/net/sysconfig.py
|
||||
+++ b/cloudinit/net/sysconfig.py
|
||||
@@ -272,7 +272,6 @@ class Renderer(renderer.Renderer):
|
||||
iface_defaults = tuple([
|
||||
('ONBOOT', True),
|
||||
('USERCTL', False),
|
||||
- ('NM_CONTROLLED', False),
|
||||
('BOOTPROTO', 'none'),
|
||||
('STARTMODE', 'auto'),
|
||||
])
|
||||
@@ -277,7 +277,7 @@ class Renderer(renderer.Renderer):
|
||||
# details about this)
|
||||
|
||||
iface_defaults = {
|
||||
- 'rhel': {'ONBOOT': True, 'USERCTL': False, 'NM_CONTROLLED': False,
|
||||
+ 'rhel': {'ONBOOT': True, 'USERCTL': False,
|
||||
'BOOTPROTO': 'none'},
|
||||
'suse': {'BOOTPROTO': 'static', 'STARTMODE': 'auto'},
|
||||
}
|
||||
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
|
||||
index 01119e0..a931a3e 100644
|
||||
index 54cc846..9985a97 100644
|
||||
--- a/tests/unittests/test_net.py
|
||||
+++ b/tests/unittests/test_net.py
|
||||
@@ -530,7 +530,6 @@ GATEWAY=172.19.3.254
|
||||
@@ -535,7 +535,6 @@ GATEWAY=172.19.3.254
|
||||
HWADDR=fa:16:3e:ed:9a:59
|
||||
IPADDR=172.19.1.34
|
||||
NETMASK=255.255.252.0
|
||||
-NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -636,7 +635,6 @@ IPADDR=172.19.1.34
|
||||
USERCTL=no
|
||||
@@ -633,7 +632,6 @@ IPADDR=172.19.1.34
|
||||
IPADDR1=10.0.0.10
|
||||
NETMASK=255.255.252.0
|
||||
NETMASK1=255.255.255.0
|
||||
-NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -772,7 +770,6 @@ IPV6ADDR_SECONDARIES="2001:DB9::10/64 2001:DB10::10/64"
|
||||
USERCTL=no
|
||||
@@ -754,7 +752,6 @@ IPV6ADDR_SECONDARIES="2001:DB9::10/64 2001:DB10::10/64"
|
||||
IPV6INIT=yes
|
||||
IPV6_DEFAULTGW=2001:DB8::1
|
||||
NETMASK=255.255.252.0
|
||||
-NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -889,7 +886,6 @@ NETWORK_CONFIGS = {
|
||||
USERCTL=no
|
||||
@@ -882,7 +879,6 @@ NETWORK_CONFIGS = {
|
||||
BOOTPROTO=none
|
||||
DEVICE=eth1
|
||||
HWADDR=cf:d6:af:48:e8:80
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -907,7 +903,6 @@ NETWORK_CONFIGS = {
|
||||
USERCTL=no"""),
|
||||
@@ -899,7 +895,6 @@ NETWORK_CONFIGS = {
|
||||
IPADDR=192.168.21.3
|
||||
NETMASK=255.255.255.0
|
||||
METRIC=10000
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -1022,7 +1017,6 @@ NETWORK_CONFIGS = {
|
||||
USERCTL=no"""),
|
||||
@@ -1028,7 +1023,6 @@ NETWORK_CONFIGS = {
|
||||
IPV6ADDR=2001:1::1/64
|
||||
IPV6INIT=yes
|
||||
NETMASK=255.255.255.0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -1491,7 +1485,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
USERCTL=no
|
||||
@@ -1622,7 +1616,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
DHCPV6C=yes
|
||||
IPV6INIT=yes
|
||||
MACADDR=aa:bb:cc:dd:ee:ff
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Bond
|
||||
@@ -1500,7 +1493,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
USERCTL=no"""),
|
||||
@@ -1630,7 +1623,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
BOOTPROTO=dhcp
|
||||
DEVICE=bond0.200
|
||||
DHCLIENT_SET_DEFAULT_ROUTE=no
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
PHYSDEV=bond0
|
||||
STARTMODE=auto
|
||||
@@ -1519,7 +1511,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
TYPE=Ethernet
|
||||
@@ -1647,7 +1639,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
IPV6_DEFAULTGW=2001:4800:78ff:1b::1
|
||||
MACADDR=bb:bb:bb:bb:bb:aa
|
||||
NETMASK=255.255.255.0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
PRIO=22
|
||||
STARTMODE=auto
|
||||
@@ -1530,7 +1521,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
STP=no
|
||||
@@ -1657,7 +1648,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
BOOTPROTO=none
|
||||
DEVICE=eth0
|
||||
HWADDR=c0:d6:9f:2c:e8:80
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -1548,7 +1538,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
USERCTL=no"""),
|
||||
@@ -1674,7 +1664,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
MTU=1500
|
||||
NETMASK=255.255.255.0
|
||||
NETMASK1=255.255.255.0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
PHYSDEV=eth0
|
||||
STARTMODE=auto
|
||||
@@ -1560,7 +1549,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
TYPE=Ethernet
|
||||
@@ -1685,7 +1674,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
DEVICE=eth1
|
||||
HWADDR=aa:d6:9f:2c:e8:80
|
||||
MASTER=bond0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
SLAVE=yes
|
||||
@@ -1571,7 +1559,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
TYPE=Ethernet
|
||||
@@ -1695,7 +1683,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
DEVICE=eth2
|
||||
HWADDR=c0:bb:9f:2c:e8:80
|
||||
MASTER=bond0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
SLAVE=yes
|
||||
@@ -1582,7 +1569,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
TYPE=Ethernet
|
||||
@@ -1705,7 +1692,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
BRIDGE=br0
|
||||
DEVICE=eth3
|
||||
HWADDR=66:bb:9f:2c:e8:80
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -1592,7 +1578,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
USERCTL=no"""),
|
||||
@@ -1714,7 +1700,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
BRIDGE=br0
|
||||
DEVICE=eth4
|
||||
HWADDR=98:bb:9f:2c:e8:80
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -1602,7 +1587,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
USERCTL=no"""),
|
||||
@@ -1723,7 +1708,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
DEVICE=eth5
|
||||
DHCLIENT_SET_DEFAULT_ROUTE=no
|
||||
HWADDR=98:bb:9f:2c:e8:8a
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=no
|
||||
STARTMODE=manual
|
||||
TYPE=Ethernet
|
||||
@@ -2088,7 +2072,6 @@ iface bond0 inet6 static
|
||||
USERCTL=no"""),
|
||||
@@ -2177,7 +2161,6 @@ iface bond0 inet6 static
|
||||
MTU=9000
|
||||
NETMASK=255.255.255.0
|
||||
NETMASK1=255.255.255.0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Bond
|
||||
@@ -2099,7 +2082,6 @@ iface bond0 inet6 static
|
||||
USERCTL=no
|
||||
@@ -2187,7 +2170,6 @@ iface bond0 inet6 static
|
||||
DEVICE=bond0s0
|
||||
HWADDR=aa:bb:cc:dd:e8:00
|
||||
MASTER=bond0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
SLAVE=yes
|
||||
STARTMODE=auto
|
||||
@@ -2122,7 +2104,6 @@ iface bond0 inet6 static
|
||||
TYPE=Ethernet
|
||||
@@ -2209,7 +2191,6 @@ iface bond0 inet6 static
|
||||
DEVICE=bond0s1
|
||||
HWADDR=aa:bb:cc:dd:e8:01
|
||||
MASTER=bond0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
SLAVE=yes
|
||||
STARTMODE=auto
|
||||
@@ -2161,7 +2142,6 @@ iface bond0 inet6 static
|
||||
TYPE=Ethernet
|
||||
@@ -2266,7 +2247,6 @@ iface bond0 inet6 static
|
||||
BOOTPROTO=none
|
||||
DEVICE=en0
|
||||
HWADDR=aa:bb:cc:dd:e8:00
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -2180,7 +2160,6 @@ iface bond0 inet6 static
|
||||
USERCTL=no"""),
|
||||
@@ -2283,7 +2263,6 @@ iface bond0 inet6 static
|
||||
MTU=2222
|
||||
NETMASK=255.255.255.0
|
||||
NETMASK1=255.255.255.0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
PHYSDEV=en0
|
||||
STARTMODE=auto
|
||||
@@ -2222,7 +2201,6 @@ iface bond0 inet6 static
|
||||
TYPE=Ethernet
|
||||
@@ -2349,7 +2328,6 @@ iface bond0 inet6 static
|
||||
DEVICE=br0
|
||||
IPADDR=192.168.2.2
|
||||
NETMASK=255.255.255.0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
PRIO=22
|
||||
STARTMODE=auto
|
||||
@@ -2238,7 +2216,6 @@ iface bond0 inet6 static
|
||||
IPADDR6=2001:1::100/96
|
||||
STP=no
|
||||
@@ -2363,7 +2341,6 @@ iface bond0 inet6 static
|
||||
HWADDR=52:54:00:12:34:00
|
||||
IPV6ADDR=2001:1::100/96
|
||||
IPV6INIT=yes
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -2252,7 +2229,6 @@ iface bond0 inet6 static
|
||||
IPADDR6=2001:1::101/96
|
||||
USERCTL=no
|
||||
@@ -2375,7 +2352,6 @@ iface bond0 inet6 static
|
||||
HWADDR=52:54:00:12:34:01
|
||||
IPV6ADDR=2001:1::101/96
|
||||
IPV6INIT=yes
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -2327,7 +2303,6 @@ iface bond0 inet6 static
|
||||
USERCTL=no
|
||||
@@ -2469,7 +2445,6 @@ iface bond0 inet6 static
|
||||
HWADDR=52:54:00:12:34:00
|
||||
IPADDR=192.168.1.2
|
||||
NETMASK=255.255.255.0
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=no
|
||||
STARTMODE=manual
|
||||
TYPE=Ethernet
|
||||
@@ -2338,7 +2313,6 @@ iface bond0 inet6 static
|
||||
USERCTL=no
|
||||
@@ -2479,7 +2454,6 @@ iface bond0 inet6 static
|
||||
DEVICE=eth1
|
||||
HWADDR=52:54:00:12:34:aa
|
||||
MTU=1480
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -2348,7 +2322,6 @@ iface bond0 inet6 static
|
||||
USERCTL=no
|
||||
@@ -2488,7 +2462,6 @@ iface bond0 inet6 static
|
||||
BOOTPROTO=none
|
||||
DEVICE=eth2
|
||||
HWADDR=52:54:00:12:34:ff
|
||||
- NM_CONTROLLED=no
|
||||
ONBOOT=no
|
||||
STARTMODE=manual
|
||||
TYPE=Ethernet
|
||||
@@ -2766,7 +2739,6 @@ class TestRhelSysConfigRendering(CiTestCase):
|
||||
USERCTL=no
|
||||
@@ -2905,7 +2878,6 @@ class TestRhelSysConfigRendering(CiTestCase):
|
||||
BOOTPROTO=dhcp
|
||||
DEVICE=eth1000
|
||||
HWADDR=07-1c-c6-75-a4-be
|
||||
-NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -2888,7 +2860,6 @@ GATEWAY=10.0.2.2
|
||||
USERCTL=no
|
||||
@@ -3026,7 +2998,6 @@ GATEWAY=10.0.2.2
|
||||
HWADDR=52:54:00:12:34:00
|
||||
IPADDR=10.0.2.15
|
||||
NETMASK=255.255.255.0
|
||||
-NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
@@ -2961,7 +2932,6 @@ USERCTL=no
|
||||
USERCTL=no
|
||||
@@ -3096,7 +3067,6 @@ USERCTL=no
|
||||
#
|
||||
BOOTPROTO=dhcp
|
||||
DEVICE=eth0
|
||||
-NM_CONTROLLED=no
|
||||
ONBOOT=yes
|
||||
STARTMODE=auto
|
||||
TYPE=Ethernet
|
||||
USERCTL=no
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
From f15946568fe731dc9bf477f3f06c9c4e0f74f7c1 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Kellogg-Stedman <lars@redhat.com>
|
||||
Date: Fri, 7 Apr 2017 18:50:54 -0400
|
||||
From de22eafc9046b8ea6fddda7440df5a05f5a40607 Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon, 5 Oct 2020 13:49:53 +0200
|
||||
Subject: limit permissions on def_log_file
|
||||
|
||||
This sets a default mode of 0600 on def_log_file, and makes this
|
||||
@ -9,6 +9,8 @@ configurable via the def_log_file_mode option in cloud.cfg.
|
||||
LP: #1541196
|
||||
Resolves: rhbz#1424612
|
||||
X-approved-upstream: true
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
---
|
||||
cloudinit/settings.py | 1 +
|
||||
cloudinit/stages.py | 3 ++-
|
||||
@ -28,10 +30,10 @@ index 3a04a58..439eee0 100644
|
||||
'mount_default_fields': [None, None, 'auto', 'defaults,nofail', '0', '2'],
|
||||
'ssh_deletekeys': False,
|
||||
diff --git a/cloudinit/stages.py b/cloudinit/stages.py
|
||||
index 71f3a49..68b83af 100644
|
||||
index 765f4aa..d769375 100644
|
||||
--- a/cloudinit/stages.py
|
||||
+++ b/cloudinit/stages.py
|
||||
@@ -149,8 +149,9 @@ class Init(object):
|
||||
@@ -147,8 +147,9 @@ class Init(object):
|
||||
def _initialize_filesystem(self):
|
||||
util.ensure_dirs(self._initial_subdirs())
|
||||
log_file = util.get_cfg_option_str(self.cfg, 'def_log_file')
|
||||
@ -43,10 +45,10 @@ index 71f3a49..68b83af 100644
|
||||
if not perms:
|
||||
perms = {}
|
||||
diff --git a/doc/examples/cloud-config.txt b/doc/examples/cloud-config.txt
|
||||
index eb84dcf..0e82b83 100644
|
||||
index f3ae5e6..b5b1fdd 100644
|
||||
--- a/doc/examples/cloud-config.txt
|
||||
+++ b/doc/examples/cloud-config.txt
|
||||
@@ -413,10 +413,14 @@ timezone: US/Eastern
|
||||
@@ -414,10 +414,14 @@ timezone: US/Eastern
|
||||
# if syslog_fix_perms is a list, it will iterate through and use the
|
||||
# first pair that does not raise error.
|
||||
#
|
||||
|
@ -1,6 +1,6 @@
|
||||
From e2b22710db558df261883eaf5dde866c69ba17dd Mon Sep 17 00:00:00 2001
|
||||
From: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
Date: Thu, 31 May 2018 20:00:32 +0200
|
||||
From bb87d9a83ddbc5bf84fbdab9c58dedc0c9629eea Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon, 5 Oct 2020 13:51:34 +0200
|
||||
Subject: sysconfig: Don't write BOOTPROTO=dhcp for ipv6 dhcp
|
||||
|
||||
Don't write BOOTPROTO=dhcp for ipv6 dhcp, as BOOTPROTO applies
|
||||
@ -13,15 +13,17 @@ Signed-off-by: Ryan McCabe <rmccabe@redhat.com>
|
||||
|
||||
Merged patches (19.4):
|
||||
- 6444df4 sysconfig: Don't disable IPV6_AUTOCONF
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
---
|
||||
tests/unittests/test_net.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
|
||||
index a931a3e..1306a0f 100644
|
||||
index 9985a97..2cc57fe 100644
|
||||
--- a/tests/unittests/test_net.py
|
||||
+++ b/tests/unittests/test_net.py
|
||||
@@ -1483,6 +1483,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
@@ -1614,6 +1614,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
BOOTPROTO=none
|
||||
DEVICE=bond0
|
||||
DHCPV6C=yes
|
||||
|
@ -1,6 +1,6 @@
|
||||
From 9a09efb49c2d7cade1f0ac309293166c3c2d8d7b Mon Sep 17 00:00:00 2001
|
||||
From: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
Date: Tue, 17 Apr 2018 13:07:54 +0200
|
||||
From 9c6562c6d3516df8d11aa7cf7cd9cc62e5c91a70 Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon, 5 Oct 2020 13:51:37 +0200
|
||||
Subject: DataSourceAzure.py: use hostnamectl to set hostname
|
||||
|
||||
RH-Author: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
@ -32,6 +32,7 @@ Resolves: rhbz#1434109
|
||||
|
||||
X-downstream-only: yes
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
---
|
||||
@ -39,14 +40,14 @@ Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py
|
||||
index 24f448c..6fb889c 100755
|
||||
index f3c6452..1c214db 100755
|
||||
--- a/cloudinit/sources/DataSourceAzure.py
|
||||
+++ b/cloudinit/sources/DataSourceAzure.py
|
||||
@@ -256,7 +256,7 @@ def get_hostname(hostname_command='hostname'):
|
||||
@@ -258,7 +258,7 @@ def get_hostname(hostname_command='hostname'):
|
||||
|
||||
|
||||
def set_hostname(hostname, hostname_command='hostname'):
|
||||
- util.subp([hostname_command, hostname])
|
||||
- subp.subp([hostname_command, hostname])
|
||||
+ util.subp(['hostnamectl', 'set-hostname', str(hostname)])
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
From 13ee71a3add0dd2e7c60fc672134e696bd7f6a77 Mon Sep 17 00:00:00 2001
|
||||
From bdcad981ac530277529d1c77fb5e9e6f89409bd8 Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Wed, 20 Mar 2019 11:45:59 +0100
|
||||
Date: Mon, 5 Oct 2020 13:51:44 +0200
|
||||
Subject: include 'NOZEROCONF=yes' in /etc/sysconfig/network
|
||||
|
||||
RH-Author: Eduardo Otubo <otubo@redhat.com>
|
||||
@ -27,10 +27,10 @@ Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
|
||||
index 8bd7e88..810b283 100644
|
||||
index 23e467d..af093dd 100644
|
||||
--- a/cloudinit/net/sysconfig.py
|
||||
+++ b/cloudinit/net/sysconfig.py
|
||||
@@ -754,7 +754,16 @@ class Renderer(renderer.Renderer):
|
||||
@@ -888,7 +888,16 @@ class Renderer(renderer.Renderer):
|
||||
# Distros configuring /etc/sysconfig/network as a file e.g. Centos
|
||||
if sysconfig_path.endswith('network'):
|
||||
util.ensure_dir(os.path.dirname(sysconfig_path))
|
||||
@ -49,10 +49,10 @@ index 8bd7e88..810b283 100644
|
||||
netcfg.append('NETWORKING_IPV6=yes')
|
||||
netcfg.append('IPV6_AUTOCONF=no')
|
||||
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
|
||||
index 1306a0f..a931a3e 100644
|
||||
index 2cc57fe..9985a97 100644
|
||||
--- a/tests/unittests/test_net.py
|
||||
+++ b/tests/unittests/test_net.py
|
||||
@@ -1483,7 +1483,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
@@ -1614,7 +1614,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true
|
||||
BOOTPROTO=none
|
||||
DEVICE=bond0
|
||||
DHCPV6C=yes
|
||||
|
@ -1,6 +1,6 @@
|
||||
From 9d951d55a1be44bbeb5df485d14d4f84ddf01142 Mon Sep 17 00:00:00 2001
|
||||
From a52c7b659c6569c78aad4b92303f289009da476c Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon, 2 Mar 2020 10:46:35 +0100
|
||||
Date: Mon, 5 Oct 2020 13:51:50 +0200
|
||||
Subject: Remove race condition between cloud-init and NetworkManager
|
||||
|
||||
Message-id: <20200302104635.11648-1-otubo@redhat.com>
|
||||
@ -32,25 +32,131 @@ start up so it won't erase resolv.conf upon first shutdown.
|
||||
x-downstream-only: yes
|
||||
resolves: rhbz#1748015, rhbz#1807797 and rhbz#1804780
|
||||
|
||||
Signed-off-by: Eduardo Otubo otubo@redhat.com
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
---
|
||||
rhel/systemd/cloud-final.service | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
This commit is a squash and also includes the folloowing commits:
|
||||
|
||||
commit 316a17b7c02a87fa9b2981535be0b20d165adc46
|
||||
Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon Jun 1 11:58:06 2020 +0200
|
||||
|
||||
Make cloud-init.service execute after network is up
|
||||
|
||||
RH-Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Message-id: <20200526090804.2047-1-otubo@redhat.com>
|
||||
Patchwork-id: 96809
|
||||
O-Subject: [RHEL-8.2.1 cloud-init PATCH] Make cloud-init.service execute after network is up
|
||||
Bugzilla: 1803928
|
||||
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
|
||||
cloud-init.service needs to wait until network is fully up before
|
||||
continuing executing and configuring its service.
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
|
||||
x-downstream-only: yes
|
||||
Resolves: rhbz#1831646
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
|
||||
commit 0422ba0e773d1a8257a3f2bf3db05f3bc7917eb7
|
||||
Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Thu May 28 08:44:08 2020 +0200
|
||||
|
||||
Remove race condition between cloud-init and NetworkManager
|
||||
|
||||
RH-Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Message-id: <20200327121911.17699-1-otubo@redhat.com>
|
||||
Patchwork-id: 94453
|
||||
O-Subject: [RHEL-7.9/RHEL-8.2.0 cloud-init PATCHv2] Remove race condition between cloud-init and NetworkManager
|
||||
Bugzilla: 1840648
|
||||
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
RH-Acked-by: Cathy Avery <cavery@redhat.com>
|
||||
|
||||
cloud-init service is set to start before NetworkManager service starts,
|
||||
but this does not avoid a race condition between them. NetworkManager
|
||||
starts before cloud-init can write `dns=none' to the file:
|
||||
/etc/NetworkManager/conf.d/99-cloud-init.conf. This way NetworkManager
|
||||
doesn't read the configuration and erases all resolv.conf values upon
|
||||
shutdown. On the next reboot neither cloud-init or NetworkManager will
|
||||
write anything to resolv.conf, leaving it blank.
|
||||
|
||||
This patch introduces a NM reload (try-reload-or-restart) at the end of cloud-init
|
||||
start up so it won't erase resolv.conf upon first shutdown.
|
||||
|
||||
x-downstream-only: yes
|
||||
|
||||
Signed-off-by: Eduardo Otubo otubo@redhat.com
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
|
||||
commit e0b48a936433faea7f56dbc29dda35acf7d375f7
|
||||
Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Thu May 28 08:44:06 2020 +0200
|
||||
|
||||
Enable ssh_deletekeys by default
|
||||
|
||||
RH-Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Message-id: <20200317091705.15715-1-otubo@redhat.com>
|
||||
Patchwork-id: 94365
|
||||
O-Subject: [RHEL-7.9/RHEL-8.2.0 cloud-init PATCH] Enable ssh_deletekeys by default
|
||||
Bugzilla: 1814152
|
||||
RH-Acked-by: Mohammed Gamal <mgamal@redhat.com>
|
||||
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
|
||||
The configuration option ssh_deletekeys will trigger the generation
|
||||
of new ssh keys for every new instance deployed.
|
||||
|
||||
x-downstream-only: yes
|
||||
resolves: rhbz#1814152
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
---
|
||||
rhel/cloud.cfg | 2 +-
|
||||
rhel/systemd/cloud-final.service | 2 ++
|
||||
rhel/systemd/cloud-init.service | 1 +
|
||||
3 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/rhel/cloud.cfg b/rhel/cloud.cfg
|
||||
index 82e8bf6..9ecba21 100644
|
||||
--- a/rhel/cloud.cfg
|
||||
+++ b/rhel/cloud.cfg
|
||||
@@ -6,7 +6,7 @@ ssh_pwauth: 0
|
||||
|
||||
mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
|
||||
resize_rootfs_tmp: /dev
|
||||
-ssh_deletekeys: 0
|
||||
+ssh_deletekeys: 1
|
||||
ssh_genkeytypes: ~
|
||||
syslog_fix_perms: ~
|
||||
disable_vmware_customization: false
|
||||
diff --git a/rhel/systemd/cloud-final.service b/rhel/systemd/cloud-final.service
|
||||
index 739b7e3..f303483 100644
|
||||
index 739b7e3..05add07 100644
|
||||
--- a/rhel/systemd/cloud-final.service
|
||||
+++ b/rhel/systemd/cloud-final.service
|
||||
@@ -11,6 +11,8 @@ ExecStart=/usr/bin/cloud-init modules --mode=final
|
||||
RemainAfterExit=yes
|
||||
TimeoutSec=0
|
||||
KillMode=process
|
||||
+ExecStartPost=/bin/echo "try restart NetworkManager.service"
|
||||
+ExecStartPost=/usr/bin/systemctl try-restart NetworkManager.service
|
||||
+ExecStartPost=/bin/echo "trying to reload or restart NetworkManager.service"
|
||||
+ExecStartPost=/usr/bin/systemctl try-reload-or-restart NetworkManager.service
|
||||
|
||||
# Output needs to appear in instance console output
|
||||
StandardOutput=journal+console
|
||||
diff --git a/rhel/systemd/cloud-init.service b/rhel/systemd/cloud-init.service
|
||||
index d0023a0..0b3d796 100644
|
||||
--- a/rhel/systemd/cloud-init.service
|
||||
+++ b/rhel/systemd/cloud-init.service
|
||||
@@ -5,6 +5,7 @@ Wants=sshd-keygen.service
|
||||
Wants=sshd.service
|
||||
After=cloud-init-local.service
|
||||
After=NetworkManager.service network.service
|
||||
+After=NetworkManager-wait-online.service
|
||||
Before=network-online.target
|
||||
Before=sshd-keygen.service
|
||||
Before=sshd.service
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
From ec14b8ed9cb4264333b80b4361171b1b529c58f3 Mon Sep 17 00:00:00 2001
|
||||
From c3a1b3a5d7abe51a1facbdae71aca4b2bca7d6aa Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Tue, 3 Nov 2020 12:11:45 +0100
|
||||
Subject: [PATCH 3/5] Add config modules for controlling IBM PowerVM RMC.
|
||||
Date: Wed, 28 Oct 2020 20:43:33 +0100
|
||||
Subject: [PATCH 2/3] Add config modules for controlling IBM PowerVM RMC.
|
||||
(#584)
|
||||
|
||||
RH-Author: Eduardo Terrell Ferrari Otubo (eterrell)
|
||||
RH-MergeRequest: 16: Add config modules for controlling IBM PowerVM RMC. (#584)
|
||||
RH-Commit: [1/1] 734e2c48d323af31aa36abefae346ef62ba3ef5d (eterrell/cloud-init)
|
||||
RH-Bugzilla: 1894014
|
||||
RH-MergeRequest: 12: Support for cloud-init config modules for PowerVM Hypervisor in Red Hat cloud-init
|
||||
RH-Commit: [1/1] d175c3607a8d4f473573ba0ce42e0f311dbc31ed (eterrell/cloud-init)
|
||||
RH-Bugzilla: 1886430
|
||||
|
||||
commit f99d4f96b00a9cfec1c721d364cbfd728674e5dc
|
||||
commit f99d4f96b00a9cfec1c721d364cbfd728674e5dc (upstream/master)
|
||||
Author: Aman306 <45781773+Aman306@users.noreply.github.com>
|
||||
Date: Wed Oct 28 23:36:09 2020 +0530
|
||||
|
||||
@ -27,28 +27,24 @@ Date: Wed Oct 28 23:36:09 2020 +0530
|
||||
|
||||
Co-authored-by: Scott Moser <smoser@brickies.net>
|
||||
|
||||
Conflicts:
|
||||
* Calls to module subp.* are replaced by old calls to util.* since the
|
||||
patch that groups subp.* calls into its own module are introduced after
|
||||
19.4 release - and it's a huge reafctoring not worth the cherry-pick.
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
---
|
||||
cloudinit/config/cc_refresh_rmc_and_interface.py | 158 +++++++++++++++++++++
|
||||
cloudinit/config/cc_reset_rmc.py | 142 ++++++++++++++++++
|
||||
cloudinit/config/cc_refresh_rmc_and_interface.py | 159 +++++++++++++++++++++
|
||||
cloudinit/config/cc_reset_rmc.py | 143 ++++++++++++++++++
|
||||
config/cloud.cfg.tmpl | 2 +
|
||||
.../test_handler_refresh_rmc_and_interface.py | 109 ++++++++++++++
|
||||
4 files changed, 411 insertions(+)
|
||||
tools/.github-cla-signers | 1 +
|
||||
5 files changed, 414 insertions(+)
|
||||
create mode 100644 cloudinit/config/cc_refresh_rmc_and_interface.py
|
||||
create mode 100644 cloudinit/config/cc_reset_rmc.py
|
||||
create mode 100644 tests/unittests/test_handler/test_handler_refresh_rmc_and_interface.py
|
||||
|
||||
diff --git a/cloudinit/config/cc_refresh_rmc_and_interface.py b/cloudinit/config/cc_refresh_rmc_and_interface.py
|
||||
new file mode 100644
|
||||
index 0000000..07050c4
|
||||
index 0000000..146758a
|
||||
--- /dev/null
|
||||
+++ b/cloudinit/config/cc_refresh_rmc_and_interface.py
|
||||
@@ -0,0 +1,158 @@
|
||||
@@ -0,0 +1,159 @@
|
||||
+# (c) Copyright IBM Corp. 2020 All Rights Reserved
|
||||
+#
|
||||
+# Author: Aman Kumar Sinha <amansi26@in.ibm.com>
|
||||
@ -88,6 +84,7 @@ index 0000000..07050c4
|
||||
+from cloudinit import log as logging
|
||||
+from cloudinit.settings import PER_ALWAYS
|
||||
+from cloudinit import util
|
||||
+from cloudinit import subp
|
||||
+from cloudinit import netinfo
|
||||
+
|
||||
+import errno
|
||||
@ -101,7 +98,7 @@ index 0000000..07050c4
|
||||
+
|
||||
+
|
||||
+def handle(name, _cfg, _cloud, _log, _args):
|
||||
+ if not util.which(RMCCTRL):
|
||||
+ if not subp.which(RMCCTRL):
|
||||
+ LOG.debug("No '%s' in path, disabled", RMCCTRL)
|
||||
+ return
|
||||
+
|
||||
@ -142,8 +139,8 @@ index 0000000..07050c4
|
||||
+ # IPv6 interface is explicitly brought up, subsequent to which the
|
||||
+ # RMC services are restarted to re-establish the communication with
|
||||
+ # the hypervisor.
|
||||
+ util.subp(['ip', 'link', 'set', interface, 'down'])
|
||||
+ util.subp(['ip', 'link', 'set', interface, 'up'])
|
||||
+ subp.subp(['ip', 'link', 'set', interface, 'down'])
|
||||
+ subp.subp(['ip', 'link', 'set', interface, 'up'])
|
||||
+
|
||||
+
|
||||
+def sysconfig_path(iface):
|
||||
@ -151,7 +148,7 @@ index 0000000..07050c4
|
||||
+
|
||||
+
|
||||
+def restart_network_manager():
|
||||
+ util.subp(['systemctl', 'restart', 'NetworkManager'])
|
||||
+ subp.subp(['systemctl', 'restart', 'NetworkManager'])
|
||||
+
|
||||
+
|
||||
+def disable_ipv6(iface_file):
|
||||
@ -202,17 +199,17 @@ index 0000000..07050c4
|
||||
+ # until the subsystem and all resource managers are stopped.
|
||||
+ # -s : start Resource Monitoring & Control subsystem.
|
||||
+ try:
|
||||
+ util.subp([RMCCTRL, '-z'])
|
||||
+ util.subp([RMCCTRL, '-s'])
|
||||
+ subp.subp([RMCCTRL, '-z'])
|
||||
+ subp.subp([RMCCTRL, '-s'])
|
||||
+ except Exception:
|
||||
+ util.logexc(LOG, 'Failed to refresh the RMC subsystem.')
|
||||
+ raise
|
||||
diff --git a/cloudinit/config/cc_reset_rmc.py b/cloudinit/config/cc_reset_rmc.py
|
||||
new file mode 100644
|
||||
index 0000000..68373ad
|
||||
index 0000000..1cd7277
|
||||
--- /dev/null
|
||||
+++ b/cloudinit/config/cc_reset_rmc.py
|
||||
@@ -0,0 +1,142 @@
|
||||
@@ -0,0 +1,143 @@
|
||||
+# (c) Copyright IBM Corp. 2020 All Rights Reserved
|
||||
+#
|
||||
+# Author: Aman Kumar Sinha <amansi26@in.ibm.com>
|
||||
@ -256,6 +253,7 @@ index 0000000..68373ad
|
||||
+from cloudinit import log as logging
|
||||
+from cloudinit.settings import PER_INSTANCE
|
||||
+from cloudinit import util
|
||||
+from cloudinit import subp
|
||||
+
|
||||
+frequency = PER_INSTANCE
|
||||
+
|
||||
@ -298,10 +296,10 @@ index 0000000..68373ad
|
||||
+ # under the /var/ct directory, generating a new node ID, and making it
|
||||
+ # appear as if the RSCT components were just installed
|
||||
+ try:
|
||||
+ out = util.subp([RECFGCT])[0]
|
||||
+ out = subp.subp([RECFGCT])[0]
|
||||
+ LOG.debug(out.strip())
|
||||
+ return out
|
||||
+ except util.ProcessExecutionError:
|
||||
+ except subp.ProcessExecutionError:
|
||||
+ util.logexc(LOG, 'Failed to reconfigure the RSCT subsystems.')
|
||||
+ raise
|
||||
+
|
||||
@ -329,7 +327,7 @@ index 0000000..68373ad
|
||||
+ # Stop the RMC subsystem and all resource managers so that we can make
|
||||
+ # some changes to it
|
||||
+ try:
|
||||
+ return util.subp([RMCCTRL, '-z'])
|
||||
+ return subp.subp([RMCCTRL, '-z'])
|
||||
+ except Exception:
|
||||
+ util.logexc(LOG, 'Failed to stop the RMC subsystem.')
|
||||
+ raise
|
||||
@ -356,12 +354,12 @@ index 0000000..68373ad
|
||||
+ LOG.error(msg)
|
||||
+ raise Exception(msg)
|
||||
diff --git a/config/cloud.cfg.tmpl b/config/cloud.cfg.tmpl
|
||||
index 87c37ba..52a259c 100644
|
||||
index 2beb9b0..7171aaa 100644
|
||||
--- a/config/cloud.cfg.tmpl
|
||||
+++ b/config/cloud.cfg.tmpl
|
||||
@@ -121,6 +121,8 @@ cloud_final_modules:
|
||||
@@ -135,6 +135,8 @@ cloud_final_modules:
|
||||
- chef
|
||||
- mcollective
|
||||
{% endif %}
|
||||
- salt-minion
|
||||
+ - reset_rmc
|
||||
+ - refresh_rmc_and_interface
|
||||
@ -370,7 +368,7 @@ index 87c37ba..52a259c 100644
|
||||
- scripts-per-once
|
||||
diff --git a/tests/unittests/test_handler/test_handler_refresh_rmc_and_interface.py b/tests/unittests/test_handler/test_handler_refresh_rmc_and_interface.py
|
||||
new file mode 100644
|
||||
index 0000000..0c35710
|
||||
index 0000000..e13b779
|
||||
--- /dev/null
|
||||
+++ b/tests/unittests/test_handler/test_handler_refresh_rmc_and_interface.py
|
||||
@@ -0,0 +1,109 @@
|
||||
@ -452,7 +450,7 @@ index 0000000..0c35710
|
||||
+ @mock.patch(MPATH + '.disable_ipv6')
|
||||
+ @mock.patch(MPATH + '.refresh_ipv6')
|
||||
+ @mock.patch(MPATH + '.netinfo.netdev_info')
|
||||
+ @mock.patch(MPATH + '.util.which')
|
||||
+ @mock.patch(MPATH + '.subp.which')
|
||||
+ def test_handle(self, m_refresh_rmc,
|
||||
+ m_netdev_info, m_refresh_ipv6, m_disable_ipv6,
|
||||
+ m_restart_nm, m_which):
|
||||
@ -475,7 +473,7 @@ index 0000000..0c35710
|
||||
+ found = ccrmci.find_ipv6_ifaces()
|
||||
+ self.assertEqual(['env5'], found)
|
||||
+
|
||||
+ @mock.patch(MPATH + '.util.subp')
|
||||
+ @mock.patch(MPATH + '.subp.subp')
|
||||
+ def test_refresh_ipv6(self, m_subp):
|
||||
+ """refresh_ipv6 should ip down and up the interface."""
|
||||
+ iface = "myeth0"
|
||||
@ -483,6 +481,16 @@ index 0000000..0c35710
|
||||
+ m_subp.assert_has_calls([
|
||||
+ mock.call(['ip', 'link', 'set', iface, 'down']),
|
||||
+ mock.call(['ip', 'link', 'set', iface, 'up'])])
|
||||
diff --git a/tools/.github-cla-signers b/tools/.github-cla-signers
|
||||
index c67db43..802a35b 100644
|
||||
--- a/tools/.github-cla-signers
|
||||
+++ b/tools/.github-cla-signers
|
||||
@@ -1,4 +1,5 @@
|
||||
AlexBaranowski
|
||||
+Aman306
|
||||
beezly
|
||||
bipinbachhao
|
||||
BirknerAlex
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
@ -0,0 +1,58 @@
|
||||
From 8a7d21fa739901bad847294004266dba76c027af Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Tue, 1 Dec 2020 15:51:47 +0100
|
||||
Subject: [PATCH 2/4] Adding BOOTPROTO = dhcp to render sysconfig dhcp6
|
||||
stateful on RHEL (#685)
|
||||
|
||||
RH-Author: Eduardo Terrell Ferrari Otubo (eterrell)
|
||||
RH-MergeRequest: 25: Adding BOOTPROTO = dhcp to render sysconfig dhcp6 stateful on RHEL (#685)
|
||||
RH-Commit: [1/1] b7304323096b1e40287950e44cf7aa3cdb4ba99e (eterrell/cloud-init)
|
||||
RH-Bugzilla: 1859695
|
||||
|
||||
BOOTPROTO needs to be set to 'dhcp' on RHEL so NetworkManager can
|
||||
properly acquire ipv6 address.
|
||||
|
||||
rhbz: #1859695
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
|
||||
Co-authored-by: Daniel Watkins <oddbloke@ubuntu.com>
|
||||
Co-authored-by: Scott Moser <smoser@brickies.net>
|
||||
---
|
||||
cloudinit/net/sysconfig.py | 6 ++++++
|
||||
tests/unittests/test_net.py | 2 +-
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
|
||||
index 078636a4..94801a93 100644
|
||||
--- a/cloudinit/net/sysconfig.py
|
||||
+++ b/cloudinit/net/sysconfig.py
|
||||
@@ -391,6 +391,12 @@ class Renderer(renderer.Renderer):
|
||||
# Only IPv6 is DHCP, IPv4 may be static
|
||||
iface_cfg['BOOTPROTO'] = 'dhcp6'
|
||||
iface_cfg['DHCLIENT6_MODE'] = 'managed'
|
||||
+ # only if rhel AND dhcpv6 stateful
|
||||
+ elif (flavor == 'rhel' and
|
||||
+ subnet_type == 'ipv6_dhcpv6-stateful'):
|
||||
+ iface_cfg['BOOTPROTO'] = 'dhcp'
|
||||
+ iface_cfg['DHCPV6C'] = True
|
||||
+ iface_cfg['IPV6INIT'] = True
|
||||
else:
|
||||
iface_cfg['IPV6INIT'] = True
|
||||
# Configure network settings using DHCPv6
|
||||
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
|
||||
index c0337459..bcd261db 100644
|
||||
--- a/tests/unittests/test_net.py
|
||||
+++ b/tests/unittests/test_net.py
|
||||
@@ -1359,7 +1359,7 @@ NETWORK_CONFIGS = {
|
||||
},
|
||||
'expected_sysconfig_rhel': {
|
||||
'ifcfg-iface0': textwrap.dedent("""\
|
||||
- BOOTPROTO=none
|
||||
+ BOOTPROTO=dhcp
|
||||
DEVICE=iface0
|
||||
DHCPV6C=yes
|
||||
IPV6INIT=yes
|
||||
--
|
||||
2.18.4
|
||||
|
@ -1,46 +0,0 @@
|
||||
From 65b26a20b550ae301ca33eafe062a873f53969de Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Wed, 24 Jun 2020 07:34:32 +0200
|
||||
Subject: [PATCH 3/4] Change from redhat to rhel in systemd generator tmpl
|
||||
(#450)
|
||||
|
||||
RH-Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Message-id: <20200623154034.28563-3-otubo@redhat.com>
|
||||
Patchwork-id: 97783
|
||||
O-Subject: [RHEL-8.3.0/RHEL-8.2.1 cloud-init PATCH 2/3] Change from redhat to rhel in systemd generator tmpl (#450)
|
||||
Bugzilla: 1834173
|
||||
RH-Acked-by: Cathy Avery <cavery@redhat.com>
|
||||
RH-Acked-by: Mohammed Gamal <mgamal@redhat.com>
|
||||
|
||||
commit 650d53d656b612442773453813d8417b234d3752
|
||||
Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Tue Jun 23 14:41:15 2020 +0200
|
||||
|
||||
Change from redhat to rhel in systemd generator tmpl (#450)
|
||||
|
||||
The name `redhat' is not used but rather `rhel' to identify the distro.
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
---
|
||||
systemd/cloud-init-generator.tmpl | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/systemd/cloud-init-generator.tmpl b/systemd/cloud-init-generator.tmpl
|
||||
index 45efa24..0773356 100755
|
||||
--- a/systemd/cloud-init-generator.tmpl
|
||||
+++ b/systemd/cloud-init-generator.tmpl
|
||||
@@ -83,7 +83,7 @@ default() {
|
||||
|
||||
check_for_datasource() {
|
||||
local ds_rc=""
|
||||
-{% if variant in ["redhat", "fedora", "centos"] %}
|
||||
+{% if variant in ["rhel", "fedora", "centos"] %}
|
||||
local dsidentify="/usr/libexec/cloud-init/ds-identify"
|
||||
{% else %}
|
||||
local dsidentify="/usr/lib/cloud-init/ds-identify"
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,47 +0,0 @@
|
||||
From d210f4b6c23d2739f76f9ab348090bcf350c5177 Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon, 31 Aug 2020 09:44:05 +0200
|
||||
Subject: [PATCH] Changing notation of subp call
|
||||
|
||||
RH-Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Message-id: <20200824142252.16298-1-otubo@redhat.com>
|
||||
Patchwork-id: 98215
|
||||
O-Subject: [RHEL-7.9.z/RHEL-8.2.1/RHEL-8.3.0 cloud-init PATCH] Changing notation of subp call
|
||||
Bugzilla: 1839662
|
||||
RH-Acked-by: Cathy Avery <cavery@redhat.com>
|
||||
RH-Acked-by: Mohammed Gamal <mgamal@redhat.com>
|
||||
|
||||
The previous patch was applied upstream on top of a refactoring that moves subp
|
||||
to its own module (3c551f6e, Move subp into its own module. (#416), release
|
||||
20.2).
|
||||
|
||||
Downstream we're not there yet, in order to avoid applying the above
|
||||
commit and add a huge refactoring, I'll just change this call and we can
|
||||
benefit of this changes in a future rebase.
|
||||
|
||||
x-downstream-only: yes
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
---
|
||||
cloudinit/sources/helpers/vmware/imc/guestcust_util.py | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/cloudinit/sources/helpers/vmware/imc/guestcust_util.py b/cloudinit/sources/helpers/vmware/imc/guestcust_util.py
|
||||
index a270d9f..816f52e 100644
|
||||
--- a/cloudinit/sources/helpers/vmware/imc/guestcust_util.py
|
||||
+++ b/cloudinit/sources/helpers/vmware/imc/guestcust_util.py
|
||||
@@ -136,8 +136,8 @@ def get_tools_config(section, key, defaultVal):
|
||||
cmd = ['vmware-toolbox-cmd', 'config', 'get', section, key]
|
||||
|
||||
try:
|
||||
- (outText, _) = subp.subp(cmd)
|
||||
- except subp.ProcessExecutionError as e:
|
||||
+ (outText, _) = util.subp(cmd)
|
||||
+ except util.ProcessExecutionError as e:
|
||||
if e.exit_code == 69:
|
||||
logger.debug(
|
||||
"vmware-toolbox-cmd returned 69 (unavailable) for cmd: %s."
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,115 +0,0 @@
|
||||
From 94753da021d0849f4858e2c2cb98b3276842b665 Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon, 24 Aug 2020 15:34:24 +0200
|
||||
Subject: [PATCH 1/5] DHCP sandboxing failing on noexec mounted /var/tmp (#521)
|
||||
|
||||
RH-Author: Eduardo Terrell Ferrari Otubo (eterrell)
|
||||
RH-MergeRequest: 1: DHCP sandboxing failing on noexec mounted /var/tmp (#521)
|
||||
RH-Commit: [1/1] 4971d742aa1de27dff61b07ef9d6d478c0889ded (eterrell/cloud-init)
|
||||
RH-Bugzilla: 1879989
|
||||
|
||||
commit db86753f81af73826158c9522f2521f210300e2b
|
||||
Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon Aug 24 15:34:24 2020 +0200
|
||||
|
||||
DHCP sandboxing failing on noexec mounted /var/tmp (#521)
|
||||
|
||||
* DHCP sandboxing failing on noexec mounted /var/tmp
|
||||
|
||||
If /var/tmp is mounted with noexec option the DHCP sandboxing will fail
|
||||
with Permission Denied. This patch simply avoids this error by checking
|
||||
the exec permission updating the dhcp path in negative case.
|
||||
|
||||
rhbz: https://bugzilla.redhat.com/show_bug.cgi?id=1879989
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
|
||||
* Replacing with os.* calls
|
||||
|
||||
* Adding test and removing isfile() useless call.
|
||||
|
||||
Co-authored-by: Rick Harding <rharding@mitechie.com>
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
---
|
||||
cloudinit/net/dhcp.py | 6 ++++++
|
||||
cloudinit/net/tests/test_dhcp.py | 46 ++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 52 insertions(+)
|
||||
|
||||
diff --git a/cloudinit/net/dhcp.py b/cloudinit/net/dhcp.py
|
||||
index c033cc8..841e72e 100644
|
||||
--- a/cloudinit/net/dhcp.py
|
||||
+++ b/cloudinit/net/dhcp.py
|
||||
@@ -215,6 +215,12 @@ def dhcp_discovery(dhclient_cmd_path, interface, cleandir):
|
||||
pid_file = os.path.join(cleandir, 'dhclient.pid')
|
||||
lease_file = os.path.join(cleandir, 'dhcp.leases')
|
||||
|
||||
+ # In some cases files in /var/tmp may not be executable, launching dhclient
|
||||
+ # from there will certainly raise 'Permission denied' error. Try launching
|
||||
+ # the original dhclient instead.
|
||||
+ if not os.access(sandbox_dhclient_cmd, os.X_OK):
|
||||
+ sandbox_dhclient_cmd = dhclient_cmd_path
|
||||
+
|
||||
# ISC dhclient needs the interface up to send initial discovery packets.
|
||||
# Generally dhclient relies on dhclient-script PREINIT action to bring the
|
||||
# link up before attempting discovery. Since we are using -sf /bin/true,
|
||||
diff --git a/cloudinit/net/tests/test_dhcp.py b/cloudinit/net/tests/test_dhcp.py
|
||||
index c3fa1e0..08e2cfb 100644
|
||||
--- a/cloudinit/net/tests/test_dhcp.py
|
||||
+++ b/cloudinit/net/tests/test_dhcp.py
|
||||
@@ -406,6 +406,52 @@ class TestDHCPDiscoveryClean(CiTestCase):
|
||||
'eth9', '-sf', '/bin/true'], capture=True)])
|
||||
m_kill.assert_has_calls([mock.call(my_pid, signal.SIGKILL)])
|
||||
|
||||
+ @mock.patch('cloudinit.net.dhcp.util.get_proc_ppid')
|
||||
+ @mock.patch('cloudinit.net.dhcp.os.kill')
|
||||
+ @mock.patch('cloudinit.net.dhcp.subp.subp')
|
||||
+ def test_dhcp_discovery_outside_sandbox(self, m_subp, m_kill, m_getppid):
|
||||
+ """dhcp_discovery brings up the interface and runs dhclient.
|
||||
+
|
||||
+ It also returns the parsed dhcp.leases file generated in the sandbox.
|
||||
+ """
|
||||
+ m_subp.return_value = ('', '')
|
||||
+ tmpdir = self.tmp_dir()
|
||||
+ dhclient_script = os.path.join(tmpdir, 'dhclient.orig')
|
||||
+ script_content = '#!/bin/bash\necho fake-dhclient'
|
||||
+ write_file(dhclient_script, script_content, mode=0o755)
|
||||
+ lease_content = dedent("""
|
||||
+ lease {
|
||||
+ interface "eth9";
|
||||
+ fixed-address 192.168.2.74;
|
||||
+ option subnet-mask 255.255.255.0;
|
||||
+ option routers 192.168.2.1;
|
||||
+ }
|
||||
+ """)
|
||||
+ lease_file = os.path.join(tmpdir, 'dhcp.leases')
|
||||
+ write_file(lease_file, lease_content)
|
||||
+ pid_file = os.path.join(tmpdir, 'dhclient.pid')
|
||||
+ my_pid = 1
|
||||
+ write_file(pid_file, "%d\n" % my_pid)
|
||||
+ m_getppid.return_value = 1 # Indicate that dhclient has daemonized
|
||||
+
|
||||
+ with mock.patch('os.access', return_value=False):
|
||||
+ self.assertCountEqual(
|
||||
+ [{'interface': 'eth9', 'fixed-address': '192.168.2.74',
|
||||
+ 'subnet-mask': '255.255.255.0', 'routers': '192.168.2.1'}],
|
||||
+ dhcp_discovery(dhclient_script, 'eth9', tmpdir))
|
||||
+ # dhclient script got copied
|
||||
+ with open(os.path.join(tmpdir, 'dhclient.orig')) as stream:
|
||||
+ self.assertEqual(script_content, stream.read())
|
||||
+ # Interface was brought up before dhclient called from sandbox
|
||||
+ m_subp.assert_has_calls([
|
||||
+ mock.call(
|
||||
+ ['ip', 'link', 'set', 'dev', 'eth9', 'up'], capture=True),
|
||||
+ mock.call(
|
||||
+ [os.path.join(tmpdir, 'dhclient.orig'), '-1', '-v', '-lf',
|
||||
+ lease_file, '-pf', os.path.join(tmpdir, 'dhclient.pid'),
|
||||
+ 'eth9', '-sf', '/bin/true'], capture=True)])
|
||||
+ m_kill.assert_has_calls([mock.call(my_pid, signal.SIGKILL)])
|
||||
+
|
||||
|
||||
class TestSystemdParseLeases(CiTestCase):
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -1,12 +1,13 @@
|
||||
From 5691fd1ce3eb430c8da19538b5988eba7da6d2be Mon Sep 17 00:00:00 2001
|
||||
From bcbd6be99d8317793aff905c4222c351a1bf5c46 Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Thu, 21 Jan 2021 09:57:53 +0100
|
||||
Subject: [PATCH] DataSourceAzure: update password for defuser if exists (#671)
|
||||
Date: Thu, 21 Jan 2021 10:08:49 +0100
|
||||
Subject: [PATCH 1/2] DataSourceAzure: update password for defuser if exists
|
||||
(#671)
|
||||
|
||||
RH-Author: Eduardo Terrell Ferrari Otubo (eterrell)
|
||||
RH-MergeRequest: 36: DataSourceAzure: update password for defuser if exists (#671)
|
||||
RH-Commit: [1/1] a834a44ca127480512137b4258ff01e993fbee41 (eterrell/cloud-init)
|
||||
RH-Bugzilla: 1916839
|
||||
RH-MergeRequest: 37: DataSourceAzure: update password for defuser if exists (#671)
|
||||
RH-Commit: [1/1] 264092a68a3771cc4ed99dad5b93f7a1433e143a (eterrell/cloud-init)
|
||||
RH-Bugzilla: 1900892
|
||||
|
||||
commit eea754492f074e00b601cf77aa278e3623857c5a
|
||||
Author: Anh Vo <anhvo@microsoft.com>
|
||||
@ -28,10 +29,10 @@ Signed-off-by: Eduardo Otubo <otubo@redhat.com>
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py
|
||||
index 6fb889c4..69454c40 100755
|
||||
index 1c214db9..d4a2d60f 100755
|
||||
--- a/cloudinit/sources/DataSourceAzure.py
|
||||
+++ b/cloudinit/sources/DataSourceAzure.py
|
||||
@@ -1206,7 +1206,7 @@ def read_azure_ovf(contents):
|
||||
@@ -1231,7 +1231,7 @@ def read_azure_ovf(contents):
|
||||
if password:
|
||||
defuser['lock_passwd'] = False
|
||||
if DEF_PASSWD_REDACTION != password:
|
||||
@ -41,10 +42,10 @@ index 6fb889c4..69454c40 100755
|
||||
if defuser:
|
||||
cfg['system_info'] = {'default_user': defuser}
|
||||
diff --git a/tests/unittests/test_datasource/test_azure.py b/tests/unittests/test_datasource/test_azure.py
|
||||
index a809fd87..f141dc6c 100644
|
||||
index 47e03bd1..2059990a 100644
|
||||
--- a/tests/unittests/test_datasource/test_azure.py
|
||||
+++ b/tests/unittests/test_datasource/test_azure.py
|
||||
@@ -899,6 +899,9 @@ scbus-1 on xpt0 bus 0
|
||||
@@ -919,6 +919,9 @@ scbus-1 on xpt0 bus 0
|
||||
crypt.crypt(odata['UserPassword'],
|
||||
defuser['passwd'][0:pos]))
|
||||
|
||||
|
@ -1,230 +0,0 @@
|
||||
From 17f972b6fb172fe19d6e115a20664eefdbd3838d Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Mon, 24 Aug 2020 15:25:38 +0200
|
||||
Subject: [PATCH 3/3] Detect kernel version before swap file creation (#428)
|
||||
|
||||
RH-Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Message-id: <20200820092042.5418-4-otubo@redhat.com>
|
||||
Patchwork-id: 98191
|
||||
O-Subject: [RHEL-8.3.0 cloud-init PATCH 3/3] Detect kernel version before swap file creation (#428)
|
||||
Bugzilla: 1794664
|
||||
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
RH-Acked-by: Mohammed Gamal <mgamal@redhat.com>
|
||||
|
||||
commit b749548a9eb43b34cce64f8688107645411abc8c
|
||||
Author: Eduardo Otubo <otubo@redhat.com>
|
||||
Date: Tue Aug 18 23:12:02 2020 +0200
|
||||
|
||||
Detect kernel version before swap file creation (#428)
|
||||
|
||||
According to man page `man 8 swapon', "Preallocated swap files are
|
||||
supported on XFS since Linux 4.18". This patch checks for kernel version
|
||||
before attepting to create swapfile, using dd for XFS only on kernel
|
||||
versions <= 4.18 or btrfs.
|
||||
|
||||
Add new func util.kernel_version which returns a tuple of ints (major, minor)
|
||||
|
||||
Signed-off-by: Eduardo Otubo otubo@redhat.com
|
||||
|
||||
Signed-off-by: Eduardo Otubo otubo@redhat.com
|
||||
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
---
|
||||
cloudinit/config/cc_mounts.py | 8 +-
|
||||
cloudinit/util.py | 4 +
|
||||
.../unittests/test_handler/test_handler_mounts.py | 107 +++++++++++++++++++++
|
||||
tests/unittests/test_util.py | 15 +++
|
||||
4 files changed, 131 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/cloudinit/config/cc_mounts.py b/cloudinit/config/cc_mounts.py
|
||||
index 0573026..e1c43e3 100644
|
||||
--- a/cloudinit/config/cc_mounts.py
|
||||
+++ b/cloudinit/config/cc_mounts.py
|
||||
@@ -65,7 +65,7 @@ swap file is created.
|
||||
from string import whitespace
|
||||
|
||||
import logging
|
||||
-import os.path
|
||||
+import os
|
||||
import re
|
||||
|
||||
from cloudinit import type_utils
|
||||
@@ -249,7 +249,8 @@ def create_swapfile(fname, size):
|
||||
|
||||
fstype = util.get_mount_info(swap_dir)[1]
|
||||
|
||||
- if fstype in ("xfs", "btrfs"):
|
||||
+ if (fstype == "xfs" and
|
||||
+ util.kernel_version() < (4, 18)) or fstype == "btrfs":
|
||||
create_swap(fname, size, "dd")
|
||||