PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/freebsd_update.py |
""" Support for freebsd-update utility on FreeBSD. .. versionadded:: 2017.7.0 :maintainer: George Mamalakis <mamalos@gmail.com> :maturity: new :platform: FreeBSD """ import logging import salt.utils.path from salt.exceptions import CommandNotFoundError log = logging.getLogger(__name__) # Define the module's virtual name __virtualname__ = "freebsd_update" __virtual_aliases__ = ("freebsd-update",) def __virtual__(): """ .. versionadded:: 2016.3.4 Only work on FreeBSD RELEASEs >= 6.2, where freebsd-update was introduced. """ if __grains__["os"] != "FreeBSD": return ( False, "The freebsd_update execution module cannot be loaded: only available on" " FreeBSD systems.", ) if float(__grains__["osrelease"]) < 6.2: return ( False, "freebsd_update is only available on FreeBSD versions >= 6.2-RELESE", ) if "release" not in __grains__["kernelrelease"].lower(): return (False, "freebsd_update is only available on FreeBSD RELEASES") return __virtualname__ def _cmd(**kwargs): """ .. versionadded:: 2016.3.4 Private function that returns the freebsd-update command string to be executed. It checks if any arguments are given to freebsd-update and appends them accordingly. """ update_cmd = salt.utils.path.which("freebsd-update") if not update_cmd: raise CommandNotFoundError('"freebsd-update" command not found') params = [] if "basedir" in kwargs: params.append("-b {}".format(kwargs["basedir"])) if "workdir" in kwargs: params.append("-d {}".format(kwargs["workdir"])) if "conffile" in kwargs: params.append("-f {}".format(kwargs["conffile"])) if "force" in kwargs: params.append("-F") if "key" in kwargs: params.append("-k {}".format(kwargs["key"])) if "newrelease" in kwargs: params.append("-r {}".format(kwargs["newrelease"])) if "server" in kwargs: params.append("-s {}".format(kwargs["server"])) if "address" in kwargs: params.append("-t {}".format(kwargs["address"])) if params: return "{} {}".format(update_cmd, " ".join(params)) return update_cmd def _wrapper(orig, pre="", post="", err_=None, run_args=None, **kwargs): """ Helper function that wraps the execution of freebsd-update command. orig: Originating function that called _wrapper(). pre: String that will be prepended to freebsd-update command. post: String that will be appended to freebsd-update command. err_: Dictionary on which return codes and stout/stderr are copied. run_args: Arguments to be passed on cmd.run_all. kwargs: Parameters of freebsd-update command. """ ret = "" # the message to be returned cmd = _cmd(**kwargs) cmd_str = " ".join([x for x in (pre, cmd, post, orig)]) if run_args and isinstance(run_args, dict): res = __salt__["cmd.run_all"](cmd_str, **run_args) else: res = __salt__["cmd.run_all"](cmd_str) if isinstance(err_, dict): # copy return values if asked to for k, v in res.items(): err_[k] = v if "retcode" in res and res["retcode"] != 0: msg = " ".join([x for x in (res["stdout"], res["stderr"]) if x]) ret = 'Unable to run "{}" with run_args="{}". Error: {}'.format( cmd_str, run_args, msg ) log.error(ret) else: try: ret = res["stdout"] except KeyError: log.error( "cmd.run_all did not return a dictionary with a key named 'stdout'" ) return ret def fetch(**kwargs): """ .. versionadded:: 2016.3.4 freebsd-update fetch wrapper. Based on the currently installed world and the configuration options set, fetch all available binary updates. kwargs: Parameters of freebsd-update command. """ # fetch continues when no controlling terminal is present pre = "" post = "" run_args = {} if float(__grains__["osrelease"]) >= 10.2: post += "--not-running-from-cron" else: pre += " env PAGER=cat" run_args["python_shell"] = True return _wrapper("fetch", pre=pre, post=post, run_args=run_args, **kwargs) def install(**kwargs): """ .. versionadded:: 2016.3.4 freebsd-update install wrapper. Install the most recently fetched updates or upgrade. kwargs: Parameters of freebsd-update command. """ return _wrapper("install", **kwargs) def rollback(**kwargs): """ .. versionadded:: 2016.3.4 freebsd-update rollback wrapper. Uninstalls the most recently installed updates. kwargs: Parameters of freebsd-update command. """ return _wrapper("rollback", **kwargs) def update(**kwargs): """ .. versionadded:: 2016.3.4 Command that simplifies freebsd-update by running freebsd-update fetch first and then freebsd-update install. kwargs: Parameters of freebsd-update command. """ stdout = {} for mode in ("fetch", "install"): err_ = {} ret = _wrapper(mode, err_=err_, **kwargs) if "retcode" in err_ and err_["retcode"] != 0: return ret if "stdout" in err_: stdout[mode] = err_["stdout"] return "\n".join([f"{k}: {v}" for (k, v) in stdout.items()]) def ids(**kwargs): """ .. versionadded:: 2016.3.4 freebsd-update IDS wrapper function. Compares the system against a "known good" index of the installed release. kwargs: Parameters of freebsd-update command. """ return _wrapper("IDS", **kwargs) def upgrade(**kwargs): """ .. versionadded:: 2016.3.4 Dummy function used only to print a message that upgrade is not available. The reason is that upgrade needs manual intervention and reboot, so even if used with: yes | freebsd-upgrade -r VERSION the additional freebsd-update install that needs to run after the reboot cannot be implemented easily. kwargs: Parameters of freebsd-update command. """ msg = "freebsd-update upgrade not yet implemented." log.warning(msg) return msg