D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
saltstack
/
salt
/
lib
/
python3.10
/
site-packages
/
salt
/
modules
/
Filename :
apcups.py
back
Copy
""" Module for apcupsd """ import logging import salt.utils.decorators as decorators import salt.utils.path log = logging.getLogger(__name__) # Define the module's virtual name __virtualname__ = "apcups" @decorators.memoize def _check_apcaccess(): """ Looks to see if apcaccess is present on the system """ return salt.utils.path.which("apcaccess") def __virtual__(): """ Provides apcupsd only if apcaccess is present """ if _check_apcaccess(): return __virtualname__ return ( False, "{} module can only be loaded on when apcupsd is installed".format( __virtualname__ ), ) def status(): """ Return apcaccess output CLI Example: .. code-block:: bash salt '*' apcups.status """ ret = {} apcaccess = _check_apcaccess() res = __salt__["cmd.run_all"](apcaccess) retcode = res["retcode"] if retcode != 0: ret["Error"] = "Something with wrong executing apcaccess, is apcupsd running?" return ret for line in res["stdout"].splitlines(): line = line.split(":") ret[line[0].strip()] = line[1].strip() return ret def status_load(): """ Return load CLI Example: .. code-block:: bash salt '*' apcups.status_load """ data = status() if "LOADPCT" in data: load = data["LOADPCT"].split() if load[1].lower() == "percent": return float(load[0]) return {"Error": "Load not available."} def status_charge(): """ Return battery charge CLI Example: .. code-block:: bash salt '*' apcups.status_charge """ data = status() if "BCHARGE" in data: charge = data["BCHARGE"].split() if charge[1].lower() == "percent": return float(charge[0]) return {"Error": "Load not available."} def status_battery(): """ Return true if running on battery power CLI Example: .. code-block:: bash salt '*' apcups.status_battery """ data = status() if "TONBATT" in data: return not data["TONBATT"] == "0 Seconds" return {"Error": "Battery status not available."}