summaryrefslogtreecommitdiff
path: root/cloudinit/cmd
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2022-02-25 23:33:20 +0100
committerGitHub <noreply@github.com>2022-02-25 16:33:20 -0600
commitfeda344e6cf9d37b09bc13cf333a717d1654c26c (patch)
treec1720b2b7adf388a58347acb4ab32fc826bb786a /cloudinit/cmd
parent5c297cffa09f251ea1296d528b81fda678cc2a03 (diff)
downloadcloud-init-git-feda344e6cf9d37b09bc13cf333a717d1654c26c.tar.gz
Add native NetworkManager support (#1224)
Fedora currently relies on sysconfig/ifcfg renderer. This is not too great, because Fedora (also RHEL since version 8) dropped support for the legacy network service that uses ifcfg files long ago. In turn, Fedora ended up patching cloud-init downstream to utilize NetworkManager's ifcfg compatibility mode [1]. This seems to have worked for a while, nevertheless the NetworkManager's ifcfg backend is reaching the end of its useful life too [2]. [1] https://src.fedoraproject.org/rpms/cloud-init/blob/rawhide/f/cloud-init-21.3-nm-controlled.patch [2] https://fedoraproject.org/wiki/Changes/NoIfcfgFiles Let's not mangle things downstream and make vanilla cloud-init work great on Fedora instead. This also means that the sysconfig compatibility with Network Manager was removed. Firstly, this relies upon the fact that you can get ifcfg support by adding it to NetworkManager.conf. That is not guaranteed and certainly will not be case in future. Secondly, cloud-init always generates configuration with NM_CONTROLLED=no, so the generated ifcfg files are no good for NetworkManager. Fedora patches around this by just removing those lines in their cloud-init package.
Diffstat (limited to 'cloudinit/cmd')
-rwxr-xr-xcloudinit/cmd/devel/net_convert.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/cloudinit/cmd/devel/net_convert.py b/cloudinit/cmd/devel/net_convert.py
index 18b1e7ff..647fe07b 100755
--- a/cloudinit/cmd/devel/net_convert.py
+++ b/cloudinit/cmd/devel/net_convert.py
@@ -7,7 +7,14 @@ import os
import sys
from cloudinit import distros, log, safeyaml
-from cloudinit.net import eni, netplan, network_state, networkd, sysconfig
+from cloudinit.net import (
+ eni,
+ netplan,
+ network_manager,
+ network_state,
+ networkd,
+ sysconfig,
+)
from cloudinit.sources import DataSourceAzure as azure
from cloudinit.sources import DataSourceOVF as ovf
from cloudinit.sources.helpers import openstack
@@ -74,7 +81,7 @@ def get_parser(parser=None):
parser.add_argument(
"-O",
"--output-kind",
- choices=["eni", "netplan", "networkd", "sysconfig"],
+ choices=["eni", "netplan", "networkd", "sysconfig", "network-manager"],
required=True,
help="The network config format to emit",
)
@@ -148,6 +155,9 @@ def handle_args(name, args):
elif args.output_kind == "sysconfig":
r_cls = sysconfig.Renderer
config = distro.renderer_configs.get("sysconfig")
+ elif args.output_kind == "network-manager":
+ r_cls = network_manager.Renderer
+ config = distro.renderer_configs.get("network-manager")
else:
raise RuntimeError("Invalid output_kind")