All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project does NOT adhere to Semantic Versioning.
Not a breaking change, but a behavior change in db_sqlite.py: The functions
- create_index()
- cut()
- delete()
- insert()
- replace()
- select()
now delete the underlying sqlite db file by default when they encounter an OperationalError
. For example, you get this error when you run new SQL code that references columns in an older, existing db file that don't exist there. With this change, it is not necessary to manually delete db files after upgrading to new versions of your software that use newer db layouts. This behavior can be disabled with delete_db_on_operational_error=False
.
- librenms.py:
get_state()
returns STATE_OK instead of STATE_UNKNOWN
Minor improvements, barely any changes.
- librenms.py: get_state() now expects numeric status codes
- args.py: Add
help()
- base.py: lookup_lod() never uses the default parameter (#82)
- base.py: oao() replaces
|
character in output with!
, because it is reserved to separate plugin output from performance data (and there is no way to escape it). - base.py: Add str2bool()
- db_mysql.py: Fix select() and providing data
- db_sqlite.py: connect(): Increase connect timeout to 5 secs; close(): return false on failure
- disk.py: Add
get_real_disks()
,udevadm()
- grassfish.py: Add
insecure=False, no_proxy=False, timeout=8
tofetch_json()
- huawei.py: No more hardcoded
insecure
parameter inget_creds()
andget_data()
- human.py: Add human2seconds()
- icinga.py: No more hardcoded
insecure
parameter; addinsecure=False, no_proxy=False, timeout=3
to all functions - infomaniak.py: add
insecure=False, no_proxy=False, timeout=8
to all functions - jitsi.py: No more hardcoded
insecure
and evaluateno_proxy
inget_data()
- librenms.py: Improve get_data() parameter handling
- net.py: Add
insecure=False, no_proxy=False, timeout=3
toget_public_ip()
- nodebb.py: Evaluate
no_proxy
inget_data()
- rocket.py: add
insecure=False, no_proxy=False, timeout=3
to all functions - txt.py: Add
get_dm_name(dm_device)
,match_regex(regex, string, key='')
- veeam.py: No more hardcoded
insecure
and also evaluateno_proxy
inget_token()
- version.py: Add
insecure=False, no_proxy=False, timeout=8
tocheck_eol()
- wildfly.py: Evaluate
insecure
andno_proxy
inget_data()
- feed.py: Incompatible with Azure status RSS (#756)
- qts.py: A library for interacting with the QNAP QTS API
- endoflifedate.py (built automatically; version string only changes when products are added or deleted)
- Published on PyPI, you may now use
pip install linuxfabrik-lib
- tools/update-endoflifedate, which - like its name says - can be used to update endoflifedate.py
- base.py: cu() appends an optional message, making it a true errormsg function
- base.py: oao() prints/suffixes ' (always ok)' if
always_ok=True
- shell.py: shell_exec() merges the OS environment variables with the ones set by the env parameter
- version.py: check_eol() also fetches and caches info from https://endoflife.date/api
- Remove all Python 2 based plugins and libraries from the project, and therefore remove the "3" suffix from all Python3-based plugins and libraries as well (#589)
- db_mysql.py: Change from username/password authentication to option file authentication in
connect()
- args.py: Add
number_unit_method
type (used indisk-usage
monitoring plugin) - disk.py: Add read_env()
- version.py
- base.py: Improve str2state()
- smb.py: Type object 'SMBDirEntry' has no attribute 'from_filename'
- db_mysql3: Change from username/password authentication to option file authentication in connect()
- net3: Rename get_ip_public() to get_public_ip()
- net3: Rename ip_to_cdir() to netmask_to_cdir()
- dmidecode3.py
- grassfish3.py
- base3.py: Make get_worst() more robust
- human3.py: human2bytes() is now also able to interpret "3.0M"
- infomaniak3.py: Apply new API version
- shell3.py: shell_exec() also handles timeouts
- wildfly3.py: Update
- distro3.py
- cache3.py: Use more unique default names for sqlite databases
- db_mysql3.py: Enhanced for new mysql-checks
- db_mysql3.py: Switch from mysql.connector to PyMySQL (#570)
- db_mysql3.py: Use more unique default names for sqlite databases
- disk3.py: Add file_exists() function
- Revert Python 3.6+
f
-strings to use.format()
to be more conservative
- human3.py: Collects functions to convert raw numbers, times etc. to a human readable representation.
- shell3.py: Communicates with the Shell.
- time3.py: Provides date/time functions.
- txt3.py: Text-related functions, handles stable encoding and decoding.
- Added "get_systems*()" functions for Systems collection
- base3: Move "x2human" and "human2x" Functions to a new "human.py" Library (#49)
- base3: Move Date/Time-related Functions to a new "time3.py" Library (#55)
- base3: Move filter_str() to db_sqlite3.py (#52)
- base3: Move get_owner() to nextcloud-version3 (#53)
- base3: Move sha1sum() to db_sqlite3.py (#50)
- base3: Move Shell-related Functions to a new "shell3.py" Library (#56)
- base3: Move Text-related Functions to a new "txt3.py" Library (#51)
- base3: Remove function yesterday() - not needed anywhere (#54)
- base: tuple object does not support item assignment (#43)
- bugfixing after pylinting
- extended fetch_json() to make fetch_json_ext() obsolete
- hashlib.md5() on FIPS compliant systems (#30)
- Let the new txt3 library do all encoding and decoding (#59)
- librenms-alerts2: --lengthy causes error (#61)
- nginx-status: TypeError: a bytes-like object is required, not 'str' (#47)
- pylint all Libraries (#57)
- renamed function and added exception handling
- Standardize the try-except import statements if checking for "do I have the lib?" (#60)
- Support PowerShell (#40)
- url3.py: AttributeError: 'str' object has no attribute 'to_bytes' (#62)
- url3: TypeError: a bytes-like object is required, not str (#44)
- veeam.py: ValueError: need more than 2 values to unpack (x45)
- veeam3.py, huawei3.py: In Python 3, getheader() should be get() (#46)
- veeam: Use new fetch_json() instead of fetch_json_ext() (#42)
- winrm: Add function to run shell commands (#41)
- nodebb
- jitsi
- test (to improve unit testing)
- veeam
- base2 (the Python 2 variant): Now handles Unicode, UTF-8 and ASCII better than before.
- db_sqlite: Supports
LIKE
statements using a regexp.
- base2: AttributeError: 'exceptions.ValueError' object has no attribute 'encode' (#37)
- base2: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 25: ordinal not in range(128) (#38)
- base: Add UTC Offset information function utc_offset() (#35)
- base: get_state() should be able to get the state against a range (#34)
- base: get_table() does not handle length of utf-8 correctly (#8)
- base: improve line drawing in get_table() (#7)
- base: make version() more robust (#28)
- base: version2float() - replace everything except numbers and a decimal point (#26)
- cache3: NameError: name 'base' is not defined (#29)
- cache: Make filename for cache configurable (#21)
- db_sqlite: Add REGEXP function (#36)
- db_sqlite: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (#20)
- disk: Problems with read_csv() (#25)
- Error in librenms3.py (#27)
- get_table(): Just use ASCII chars, as this is the lowest common denominator across all terminals (#33)
- net: chunk = s.recv(1024) timeout: timed out (#23)
- net: in fetch(), port and timeout must be of type integer (#22)
- url: Identify as Linuxfabrik Monitoring-Plugin (#24)
- url: if needed, make fetch() and fetch_json() also return HTTP status code and response headers (#32)
- db_mysql
- feedparser
- icinga
- base.py: Added shell_exec().
- net.py
- url.py
- args.py
- base.py
- cache.py
- db_sqlite.py
- disk.py
- net.py
- rocket.py
- url.py
Initial release.