Source code for saltext.salt_describe.runners.salt_describe_sysctl

# Copyright 2023 VMware, Inc.
# SPDX-License-Identifier: Apache-2.0
"""
Module for building state file

.. versionadded:: 3006

"""
import logging
import sys

import yaml
from saltext.salt_describe.utils.init import generate_files
from saltext.salt_describe.utils.init import parse_salt_ret
from saltext.salt_describe.utils.init import ret_info


__virtualname__ = "describe"


log = logging.getLogger(__name__)


def __virtual__():
    return __virtualname__


[docs]def sysctl(tgt, sysctl_items, tgt_type="glob", config_system="salt"): """ read sysctl on the minions and build a state file to managed the sysctl settings. CLI Example: .. code-block:: bash salt-run describe.sysctl minion-tgt '[vm.swappiness,vm.dirty_ratio]' """ mod_name = sys._getframe().f_code.co_name log.info("Attempting to generate SLS file for %s", mod_name) sysctls = __salt__["salt.execute"]( tgt, "sysctl.show", tgt_type=tgt_type, ) state_contents = {} sls_files = [] if not parse_salt_ret(ret=sysctls, tgt=tgt): return ret_info(sls_files, mod=mod_name) for minion in list(sysctls.keys()): for current in sysctl_items: if current in sysctls[minion].keys(): payload = [{"name": current}, {"value": sysctls[minion][current]}] state_contents[f"sysctl-{current}"] = {"sysctl.present": payload} else: log.error("%s not found in sysctl", current) state = yaml.dump(state_contents) sls_files.append( generate_files(__opts__, minion, state, sls_name="sysctl", config_system=config_system) ) return ret_info(sls_files, mod=mod_name)