226 lines
5.2 KiB
Python
226 lines
5.2 KiB
Python
import sys
|
|
import json
|
|
|
|
####
|
|
# Define some global variables
|
|
#########################################################################################
|
|
|
|
_ERROR_LEVEL = 0
|
|
_SUMMARY = {}
|
|
_INFO = ""
|
|
_MONITORING_DATA = []
|
|
|
|
####
|
|
# Internal: Alias for output.print_debug function
|
|
#########################################################################################
|
|
|
|
def _print_debug(
|
|
var = "",
|
|
print_errors: bool = False
|
|
):
|
|
"""
|
|
Print the variable as a JSON-like representation for debugging purposes.
|
|
|
|
Args:
|
|
var (any): The variable to be printed.
|
|
print_errors (bool): A flag indicating whether to print errors during debugging.
|
|
"""
|
|
from .output import print_debug
|
|
print_debug(var, print_errors)
|
|
|
|
####
|
|
# Set error level to value
|
|
#########################################################################################
|
|
def set_disco_error_level(
|
|
value: int = 0
|
|
)-> None:
|
|
"""
|
|
Sets the error level to the specified value.
|
|
|
|
Args:
|
|
value (int, optional): The error level value. Default is 0.
|
|
"""
|
|
global _ERROR_LEVEL
|
|
|
|
_ERROR_LEVEL = value
|
|
|
|
####
|
|
# Set fixed value to summary dict
|
|
#########################################################################################
|
|
def set_disco_summary(
|
|
data: dict = {}
|
|
)-> None:
|
|
"""
|
|
Sets the disk summary data in the internal summary dictionary.
|
|
|
|
This function updates the summary dictionary with the provided disk summary data.
|
|
|
|
Args:
|
|
data (dict): A dictionary containing disk summary data.
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
global _SUMMARY
|
|
|
|
_SUMMARY = {}
|
|
|
|
####
|
|
# Set fixed value to summary key
|
|
#########################################################################################
|
|
def set_disco_summary_value(
|
|
key: str = "",
|
|
value = None
|
|
)-> None:
|
|
"""
|
|
Sets a fixed value for a key in the '_SUMMARY' dictionary.
|
|
|
|
Args:
|
|
key (str): Key to set the value for.
|
|
value (any): Value to assign to the key.
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
global _SUMMARY
|
|
|
|
_SUMMARY[key] = value
|
|
|
|
####
|
|
# Add value to summary key
|
|
#########################################################################################
|
|
def add_disco_summary_value(
|
|
key: str = "",
|
|
value = None
|
|
)-> None:
|
|
"""
|
|
Adds a value to a key in the 'SUMMARY' dictionary.
|
|
|
|
If the key already exists, the value will be incremented. Otherwise, a new key will be created.
|
|
|
|
Args:
|
|
key (str): Key to add the value to.
|
|
value (any): Value to add to the key.
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
global _SUMMARY
|
|
|
|
if key in _SUMMARY:
|
|
_SUMMARY[key] += value
|
|
else:
|
|
set_disco_summary_value(key, value)
|
|
|
|
####
|
|
# Set fixed value to info
|
|
#########################################################################################
|
|
def set_disco_info_value(
|
|
value: str = ""
|
|
)-> None:
|
|
"""
|
|
Sets a fixed value to the '_INFO' variable.
|
|
|
|
Args:
|
|
data (str, optional): The value to set in the '_INFO' variable. Default is an empty string.
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
global _INFO
|
|
|
|
_INFO = value
|
|
|
|
####
|
|
# Add data to info
|
|
#########################################################################################
|
|
def add_disco_info_value(
|
|
value: str = ""
|
|
)-> None:
|
|
"""
|
|
Adds data to the '_INFO' variable.
|
|
|
|
Args:
|
|
data (str, optional): The data to add to the '_INFO' variable. Default is an empty string.
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
global _INFO
|
|
|
|
_INFO += value
|
|
|
|
####
|
|
# Set fixed value to monitoring data
|
|
#########################################################################################
|
|
def set_disco_monitoring_data(
|
|
data: list = []
|
|
)-> None:
|
|
"""
|
|
Set the monitoring data for disk usage.
|
|
|
|
Args:
|
|
data (list): A list containing disk monitoring data.
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
global _MONITORING_DATA
|
|
|
|
_MONITORING_DATA = data
|
|
|
|
####
|
|
# Add value to monitoring data
|
|
#########################################################################################
|
|
def add_disco_monitoring_data(
|
|
data: dict = {}
|
|
)-> None:
|
|
"""
|
|
Add disk monitoring data to the global monitoring dataset.
|
|
|
|
Args:
|
|
data (dict): A dictionary containing disk monitoring data.
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
global _MONITORING_DATA
|
|
|
|
_MONITORING_DATA.append(data)
|
|
|
|
####
|
|
# Print JSON output and exit script
|
|
#########################################################################################
|
|
def disco_output()-> None:
|
|
"""
|
|
Prints the JSON output and exits the script.
|
|
|
|
The function uses the global variables '_ERROR_LEVEL', '_SUMMARY', '_INFO' and '_MONITORING_DATA'
|
|
to create the JSON output. It then prints the JSON string and exits the script with
|
|
the '_ERROR_LEVEL' as the exit code.
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
from .output import print_stdout
|
|
|
|
global _ERROR_LEVEL
|
|
global _SUMMARY
|
|
global _INFO
|
|
global _MONITORING_DATA
|
|
|
|
output={}
|
|
if _SUMMARY:
|
|
output["summary"] = _SUMMARY
|
|
|
|
if _INFO:
|
|
output["info"] = _INFO
|
|
|
|
if _MONITORING_DATA:
|
|
output["monitoring_data"] = _MONITORING_DATA
|
|
|
|
json_string = json.dumps(output)
|
|
|
|
print_stdout(json_string)
|
|
sys.exit(_ERROR_LEVEL)
|