# This file is part of naxalnet. # Copyright (C) 2021 The naxalnet Authors # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . """ network.py ---------- This submodule manages the systemd-networkd configuration. TODO: Add more details """ from pathlib import Path from shutil import copy from dasbus.connection import SystemMessageBus NETWORKD_BUS = "org.freedesktop.network1" NETWORKD_PATH = "/org/freedesktop/network1" def copy_glob(directory: str, glob: str, destination: str) -> None: """copy files in directory matching the glob to destination""" match = Path(directory).glob(glob) for i in match: copy(i, destination) class Networkd: """control systemd-networkd""" def __init__(self, bus=SystemMessageBus()): self._bus = bus self.proxy_reload() def proxy_reload(self): """reload the proxy""" self.proxy = self._bus.get_proxy(NETWORKD_BUS, NETWORKD_PATH) def add_config(self, path: str): """add config file to runtime directory and reload networkd"""