Server IP : 209.38.156.173 / Your IP : 216.73.216.122 [ Web Server : Apache/2.4.52 (Ubuntu) System : Linux lakekumayuhotel 5.15.0-136-generic #147-Ubuntu SMP Sat Mar 15 15:53:30 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.1.2-1ubuntu2.22 Disable Function : NONE Domains : 2 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /lib/python3/dist-packages/cloudinit/config/ |
Upload File : |
# Copyright (C) 2015 Canonical Ltd. # # Author: Scott Moser <scott.moser@canonical.com> # # This file is part of cloud-init. See LICENSE file for license information. """Fan: Configure ubuntu fan networking""" import logging from cloudinit import subp, util from cloudinit.cloud import Cloud from cloudinit.config import Config from cloudinit.config.schema import MetaSchema from cloudinit.settings import PER_INSTANCE meta: MetaSchema = { "id": "cc_fan", "distros": ["ubuntu"], "frequency": PER_INSTANCE, "activate_by_schema_keys": ["fan"], } LOG = logging.getLogger(__name__) BUILTIN_CFG = { "config": None, "config_path": "/etc/network/fan", } def stop_update_start(distro, service, config_file, content): try: distro.manage_service("stop", service) stop_failed = False except subp.ProcessExecutionError as e: stop_failed = True LOG.warning("failed to stop %s: %s", service, e) if not content.endswith("\n"): content += "\n" util.write_file(config_file, content, omode="w") try: distro.manage_service("start", service) if stop_failed: LOG.warning("success: %s started", service) except subp.ProcessExecutionError as e: LOG.warning("failed to start %s: %s", service, e) distro.manage_service("enable", service) def handle(name: str, cfg: Config, cloud: Cloud, args: list) -> None: cfgin = cfg.get("fan") if not cfgin: cfgin = {} mycfg = util.mergemanydict([cfgin, BUILTIN_CFG]) if not mycfg.get("config"): LOG.debug("%s: no 'fan' config entry. disabling", name) return util.write_file(mycfg.get("config_path"), mycfg.get("config"), omode="w") distro = cloud.distro if not subp.which("fanctl"): distro.install_packages(["ubuntu-fan"]) stop_update_start( distro, service="ubuntu-fan", config_file=mycfg.get("config_path"), content=mycfg.get("config"), )