summaryrefslogtreecommitdiff
path: root/cloudinit/net/renderers.py
diff options
context:
space:
mode:
Diffstat (limited to 'cloudinit/net/renderers.py')
-rw-r--r--cloudinit/net/renderers.py51
1 files changed, 35 insertions, 16 deletions
diff --git a/cloudinit/net/renderers.py b/cloudinit/net/renderers.py
index e2de4d55..c755f04c 100644
--- a/cloudinit/net/renderers.py
+++ b/cloudinit/net/renderers.py
@@ -1,27 +1,43 @@
# This file is part of cloud-init. See LICENSE file for license information.
-from . import eni
-from . import freebsd
-from . import netbsd
-from . import netplan
-from . import RendererNotFoundError
-from . import openbsd
-from . import sysconfig
+from typing import List, Tuple, Type
+
+from . import (
+ RendererNotFoundError,
+ eni,
+ freebsd,
+ netbsd,
+ netplan,
+ networkd,
+ openbsd,
+ renderer,
+ sysconfig,
+)
NAME_TO_RENDERER = {
"eni": eni,
"freebsd": freebsd,
"netbsd": netbsd,
"netplan": netplan,
+ "networkd": networkd,
"openbsd": openbsd,
"sysconfig": sysconfig,
}
-DEFAULT_PRIORITY = ["eni", "sysconfig", "netplan", "freebsd",
- "netbsd", "openbsd"]
+DEFAULT_PRIORITY = [
+ "eni",
+ "sysconfig",
+ "netplan",
+ "freebsd",
+ "netbsd",
+ "openbsd",
+ "networkd",
+]
-def search(priority=None, target=None, first=False):
+def search(
+ priority=None, target=None, first=False
+) -> List[Tuple[str, Type[renderer.Renderer]]]:
if priority is None:
priority = DEFAULT_PRIORITY
@@ -30,7 +46,8 @@ def search(priority=None, target=None, first=False):
unknown = [i for i in priority if i not in available]
if unknown:
raise ValueError(
- "Unknown renderers provided in priority list: %s" % unknown)
+ "Unknown renderers provided in priority list: %s" % unknown
+ )
found = []
for name in priority:
@@ -38,13 +55,13 @@ def search(priority=None, target=None, first=False):
if render_mod.available(target):
cur = (name, render_mod.Renderer)
if first:
- return cur
+ return [cur]
found.append(cur)
return found
-def select(priority=None, target=None):
+def select(priority=None, target=None) -> Tuple[str, Type[renderer.Renderer]]:
found = search(priority, target=target, first=True)
if not found:
if priority is None:
@@ -53,8 +70,10 @@ def select(priority=None, target=None):
if target and target != "/":
tmsg = " in target=%s" % target
raise RendererNotFoundError(
- "No available network renderers found%s. Searched "
- "through list: %s" % (tmsg, priority))
- return found
+ "No available network renderers found%s. Searched through list: %s"
+ % (tmsg, priority)
+ )
+ return found[0]
+
# vi: ts=4 expandtab