Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package monitoring-plugins-http_json for 
openSUSE:Factory checked in at 2024-06-04 12:51:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/monitoring-plugins-http_json (Old)
 and      /work/SRC/openSUSE:Factory/.monitoring-plugins-http_json.new.24587 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "monitoring-plugins-http_json"

Tue Jun  4 12:51:16 2024 rev:4 rq:1178354 version:2.2.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/monitoring-plugins-http_json/monitoring-plugins-http_json.changes
        2023-03-16 22:58:23.407471921 +0100
+++ 
/work/SRC/openSUSE:Factory/.monitoring-plugins-http_json.new.24587/monitoring-plugins-http_json.changes
     2024-06-04 12:51:44.709163484 +0200
@@ -1,0 +2,11 @@
+Thu May 16 18:25:45 UTC 2024 - Martin Hauke <[email protected]>
+
+- Update to version 2.2.0
+  * Bugfix: Disabled check_hostname to prevent error message when
+    setting CERT_NONE.
+  * Feature: Add flag to increase verbosity and flag to override
+    unreachable state.
+  * Feature: Add flag to override unreachable state.
+  * Extend tests for array syntax.
+
+-------------------------------------------------------------------

Old:
----
  nagios-http-json-2.1.2.tar.gz

New:
----
  nagios-http-json-2.2.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ monitoring-plugins-http_json.spec ++++++
--- /var/tmp/diff_new_pack.CqOKYC/_old  2024-06-04 12:51:45.121178435 +0200
+++ /var/tmp/diff_new_pack.CqOKYC/_new  2024-06-04 12:51:45.121178435 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package monitoring-plugins-http_json
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %define modname monitoring-plugins-http_json
 %define pythons python3
 Name:           monitoring-plugins-http_json
-Version:        2.1.2
+Version:        2.2.0
 Release:        0
 Summary:        Plugin for Nagios which checks json values from a given HTTP 
endpoint
 License:        Apache-2.0

++++++ nagios-http-json-2.1.2.tar.gz -> nagios-http-json-2.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nagios-http-json-2.1.2/.github/workflows/unittest.yml 
new/nagios-http-json-2.2.0/.github/workflows/unittest.yml
--- old/nagios-http-json-2.1.2/.github/workflows/unittest.yml   2022-09-15 
15:25:38.000000000 +0200
+++ new/nagios-http-json-2.2.0/.github/workflows/unittest.yml   2024-05-16 
10:24:10.000000000 +0200
@@ -7,7 +7,7 @@
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [3.8, 3,9]
+        python-version: [3.8, 3.11, 3.12]
     name: GitHub Action
     steps:
     - name: Checkout
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/.gitignore 
new/nagios-http-json-2.2.0/.gitignore
--- old/nagios-http-json-2.1.2/.gitignore       2022-09-15 15:25:38.000000000 
+0200
+++ new/nagios-http-json-2.2.0/.gitignore       2024-05-16 10:24:10.000000000 
+0200
@@ -25,6 +25,7 @@
 .installed.cfg
 *.egg
 .venv/
+venv/
 
 # PyInstaller
 #  Usually these files are written by a python script from a template
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/Makefile 
new/nagios-http-json-2.2.0/Makefile
--- old/nagios-http-json-2.1.2/Makefile 2022-09-15 15:25:38.000000000 +0200
+++ new/nagios-http-json-2.2.0/Makefile 2024-05-16 10:24:10.000000000 +0200
@@ -1,9 +1,11 @@
 .PHONY: lint test coverage
 
+PYTHON_PATH?=python3
+
 lint:
-       python -m pylint check_http_json.py
+       $(PYTHON_PATH) -m pylint check_http_json.py
 test:
-       python -m unittest discover
+       $(PYTHON_PATH) -m unittest discover
 coverage:
-       python -m coverage run -m unittest discover
-       python -m coverage report -m --include check_http_json.py
+       $(PYTHON_PATH) -m coverage run -m unittest discover
+       $(PYTHON_PATH) -m coverage report -m --include check_http_json.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/README.md 
new/nagios-http-json-2.2.0/README.md
--- old/nagios-http-json-2.1.2/README.md        2022-09-15 15:25:38.000000000 
+0200
+++ new/nagios-http-json-2.2.0/README.md        2024-05-16 10:24:10.000000000 
+0200
@@ -38,11 +38,12 @@
 argument specified rules and determines the status and performance data for
 that service.
 
-Version: 2.1.2 (2022-09-15)
+Version: 2.2.0 (2024-05-14)
 
-optional arguments:
+options:
   -h, --help            show this help message and exit
   -d, --debug           debug mode
+  -v, --verbose         Verbose mode. Multiple -v options increase the 
verbosity
   -s, --ssl             use TLS to connect to remote host
   -H HOST, --host HOST  remote host to query
   -k, --insecure        do not check server SSL certificate
@@ -56,61 +57,44 @@
   -p PATH, --path PATH  Path
   -t TIMEOUT, --timeout TIMEOUT
                         Connection timeout (seconds)
+  --unreachable-state UNREACHABLE_STATE
+                        Exit with specified code if URL unreachable. Examples: 
1 for Warning, 2 for Critical, 3 for Unknown (default: 3)
   -B AUTH, --basic-auth AUTH
                         Basic auth string "username:password"
   -D DATA, --data DATA  The http payload to send as a POST
   -A HEADERS, --headers HEADERS
                         The http headers in JSON format.
   -f SEPARATOR, --field_separator SEPARATOR
-                        JSON Field separator, defaults to "."; Select element
-                        in an array with "(" ")"
-  -F SEPARATOR, --value_separator SEPARATOR
-                        JSON Value separator, defaults to ":";
-  -w [KEY_THRESHOLD_WARNING [KEY_THRESHOLD_WARNING ...]], --warning 
[KEY_THRESHOLD_WARNING [KEY_THRESHOLD_WARNING ...]]
-                        Warning threshold for these values
-                        (key1[>alias],WarnRange key2[>alias],WarnRange).
-                        WarnRange is in the format [@]start:end, more
-                        information at nagios-plugins.org/doc/guidelines.html.
-  -c [KEY_THRESHOLD_CRITICAL [KEY_THRESHOLD_CRITICAL ...]], --critical 
[KEY_THRESHOLD_CRITICAL [KEY_THRESHOLD_CRITICAL ...]]
-                        Critical threshold for these values
-                        (key1[>alias],CriticalRange
-                        key2[>alias],CriticalRange. CriticalRange is in the
-                        format [@]start:end, more information at nagios-
-                        plugins.org/doc/guidelines.html.
-  -e [KEY_LIST [KEY_LIST ...]], --key_exists [KEY_LIST [KEY_LIST ...]]
-                        Checks existence of these keys to determine status.
-                        Return warning if key is not present.
-  -E [KEY_LIST_CRITICAL [KEY_LIST_CRITICAL ...]], --key_exists_critical 
[KEY_LIST_CRITICAL [KEY_LIST_CRITICAL ...]]
+                        JSON Field separator, defaults to "."; Select element 
in an array with "(" ")"
+  -F VALUE_SEPARATOR, --value_separator VALUE_SEPARATOR
+                        JSON Value separator, defaults to ":"
+  -w [KEY_THRESHOLD_WARNING ...], --warning [KEY_THRESHOLD_WARNING ...]
+                        Warning threshold for these values 
(key1[>alias],WarnRange key2[>alias],WarnRange). WarnRange is in the format
+                        [@]start:end, more information at 
nagios-plugins.org/doc/guidelines.html.
+  -c [KEY_THRESHOLD_CRITICAL ...], --critical [KEY_THRESHOLD_CRITICAL ...]
+                        Critical threshold for these values 
(key1[>alias],CriticalRange key2[>alias],CriticalRange. CriticalRange is in
+                        the format [@]start:end, more information at 
nagios-plugins.org/doc/guidelines.html.
+  -e [KEY_LIST ...], --key_exists [KEY_LIST ...]
+                        Checks existence of these keys to determine status. 
Return warning if key is not present.
+  -E [KEY_LIST_CRITICAL ...], --key_exists_critical [KEY_LIST_CRITICAL ...]
                         Same as -e but return critical if key is not present.
-  -q [KEY_VALUE_LIST [KEY_VALUE_LIST ...]], --key_equals [KEY_VALUE_LIST 
[KEY_VALUE_LIST ...]]
-                        Checks equality of these keys and values
-                        (key[>alias],value key2,value2) to determine status.
-                        Multiple key values can be delimited with colon
-                        (key,value1:value2). Return warning if equality check
-                        fails
-  -Q [KEY_VALUE_LIST_CRITICAL [KEY_VALUE_LIST_CRITICAL ...]], 
--key_equals_critical [KEY_VALUE_LIST_CRITICAL [KEY_VALUE_LIST_CRITICAL ...]]
-                        Same as -q but return critical if equality check
-                        fails.
-  -u [KEY_VALUE_LIST_UNKNOWN [KEY_VALUE_LIST_UNKNOWN ...]], 
--key_equals_unknown [KEY_VALUE_LIST_UNKNOWN [KEY_VALUE_LIST_UNKNOWN ...]]
+  -q [KEY_VALUE_LIST ...], --key_equals [KEY_VALUE_LIST ...]
+                        Checks equality of these keys and values 
(key[>alias],value key2,value2) to determine status. Multiple key values
+                        can be delimited with colon (key,value1:value2). 
Return warning if equality check fails
+  -Q [KEY_VALUE_LIST_CRITICAL ...], --key_equals_critical 
[KEY_VALUE_LIST_CRITICAL ...]
+                        Same as -q but return critical if equality check fails.
+  -u [KEY_VALUE_LIST_UNKNOWN ...], --key_equals_unknown 
[KEY_VALUE_LIST_UNKNOWN ...]
                         Same as -q but return unknown if equality check fails.
-  -y [KEY_VALUE_LIST_NOT [KEY_VALUE_LIST_NOT ...]], --key_not_equals 
[KEY_VALUE_LIST_NOT [KEY_VALUE_LIST_NOT ...]]
-                        Checks equality of these keys and values
-                        (key[>alias],value key2,value2) to determine status.
-                        Multiple key values can be delimited with colon
-                        (key,value1:value2). Return warning if equality check
-                        succeeds
-  -Y [KEY_VALUE_LIST_NOT_CRITICAL [KEY_VALUE_LIST_NOT_CRITICAL ...]], 
--key_not_equals_critical [KEY_VALUE_LIST_NOT_CRITICAL 
[KEY_VALUE_LIST_NOT_CRITICAL ...]]
-                        Same as -q but return critical if equality check
-                        succeeds.
-  -m [METRIC_LIST [METRIC_LIST ...]], --key_metric [METRIC_LIST [METRIC_LIST 
...]]
-                        Gathers the values of these keys (key[>alias],
-                        UnitOfMeasure,WarnRange,CriticalRange,Min,Max) for
-                        Nagios performance data. More information about Range
-                        format and units of measure for nagios can be found at
-                        nagios-plugins.org/doc/guidelines.html Additional
-                        formats for this parameter are: (key[>alias]),
-                        (key[>alias],UnitOfMeasure),
-                        (key[>alias],UnitOfMeasure,WarnRange, CriticalRange).
+  -y [KEY_VALUE_LIST_NOT ...], --key_not_equals [KEY_VALUE_LIST_NOT ...]
+                        Checks equality of these keys and values 
(key[>alias],value key2,value2) to determine status. Multiple key values
+                        can be delimited with colon (key,value1:value2). 
Return warning if equality check succeeds
+  -Y [KEY_VALUE_LIST_NOT_CRITICAL ...], --key_not_equals_critical 
[KEY_VALUE_LIST_NOT_CRITICAL ...]
+                        Same as -q but return critical if equality check 
succeeds.
+  -m [METRIC_LIST ...], --key_metric [METRIC_LIST ...]
+                        Gathers the values of these keys (key[>alias], 
UnitOfMeasure,WarnRange,CriticalRange,Min,Max) for Nagios
+                        performance data. More information about Range format 
and units of measure for nagios can be found at nagios-
+                        plugins.org/doc/guidelines.html Additional formats for 
this parameter are: (key[>alias]),
+                        (key[>alias],UnitOfMeasure), 
(key[>alias],UnitOfMeasure,WarnRange, CriticalRange).
 ```
 
 ## Examples
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/check_http_json.py 
new/nagios-http-json-2.2.0/check_http_json.py
--- old/nagios-http-json-2.1.2/check_http_json.py       2022-09-15 
15:25:38.000000000 +0200
+++ new/nagios-http-json-2.2.0/check_http_json.py       2024-05-16 
10:24:10.000000000 +0200
@@ -6,7 +6,6 @@
 import argparse
 import sys
 import ssl
-from pprint import pprint
 from urllib.error import HTTPError
 from urllib.error import URLError
 
@@ -24,8 +23,8 @@
 CRITICAL_CODE = 2
 UNKNOWN_CODE = 3
 
-__version__ = '2.1.2'
-__version_date__ = '2022-09-15'
+__version__ = '2.2.0'
+__version_date__ = '2024-05-14'
 
 class NagiosHelper:
     """
@@ -69,20 +68,19 @@
             code = UNKNOWN_CODE
         return code
 
-    def append_warning(self, warning_message):
-        self.warning_message += warning_message
-
-    def append_critical(self, critical_message):
-        self.critical_message += critical_message
-
-    def append_unknown(self, unknown_message):
-        self.unknown_message += unknown_message
+    def append_message(self, code, msg):
+        if code > 2 or code < 0:
+            self.unknown_message += msg
+        if code == 1:
+            self.warning_message += msg
+        if code == 2:
+            self.critical_message += msg
 
     def append_metrics(self, metrics):
         (performance_data, warning_message, critical_message) = metrics
         self.performance_data += performance_data
-        self.append_warning(warning_message)
-        self.append_critical(critical_message)
+        self.append_message(WARNING_CODE, warning_message)
+        self.append_message(CRITICAL_CODE, critical_message)
 
 
 class JsonHelper:
@@ -423,6 +421,9 @@
 
     parser.add_argument('-d', '--debug', action='store_true',
                         help='debug mode')
+    parser.add_argument('-v', '--verbose', action='count', default=0,
+                        help='Verbose mode. Multiple -v options increase the 
verbosity')
+
     parser.add_argument('-s', '--ssl', action='store_true',
                         help='use TLS to connect to remote host')
     parser.add_argument('-H', '--host', dest='host',
@@ -444,6 +445,8 @@
     parser.add_argument('-p', '--path', dest='path', help='Path')
     parser.add_argument('-t', '--timeout', type=int,
                         help='Connection timeout (seconds)')
+    parser.add_argument('--unreachable-state', type=int, default=3,
+                        help='Exit with specified code if URL unreachable. 
Examples: 1 for Warning, 2 for Critical, 3 for Unknown (default: 3)')
     parser.add_argument('-B', '--basic-auth', dest='auth',
                         help='Basic auth string "username:password"')
     parser.add_argument('-D', '--data', dest='data',
@@ -516,16 +519,92 @@
     return parser.parse_args(args)
 
 
-def debugPrint(debug_flag, message, pretty_flag=False):
+def debugPrint(debug_flag, message):
     """
-    Print debug messages if -d (debug_flat ) is set.
+    Print debug messages if -d is set.
     """
+    if not debug_flag:
+        return
 
-    if debug_flag:
-        if pretty_flag:
-            pprint(message)
-        else:
-            print(message)
+    print(message)
+
+def verbosePrint(verbose_flag, when, message):
+    """
+    Print verbose messages if -v is set.
+    Since -v can be used multiple times, the when parameter sets the required 
amount before printing
+    """
+    if not verbose_flag:
+        return
+    if verbose_flag >= when:
+        print(message)
+
+def prepare_context(args):
+    """
+    Prepare TLS Context
+    """
+    nagios = NagiosHelper()
+
+    context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
+    context.options |= ssl.OP_NO_SSLv2
+    context.options |= ssl.OP_NO_SSLv3
+
+    if args.insecure:
+        context.check_hostname = False
+        context.verify_mode = ssl.CERT_NONE
+    else:
+        context.verify_mode = ssl.CERT_OPTIONAL
+        context.load_default_certs()
+        if args.cacert:
+            try:
+                context.load_verify_locations(args.cacert)
+            except ssl.SSLError:
+                nagios.append_message(UNKNOWN_CODE, 'Error loading SSL CA cert 
"%s"!' % args.cacert)
+        if args.cert:
+            try:
+                context.load_cert_chain(args.cert, keyfile=args.key)
+            except ssl.SSLError:
+                if args.key:
+                    nagios.append_message(UNKNOWN_CODE, 'Error loading SSL 
cert. Make sure key "%s" belongs to cert "%s"!' % (args.key, args.cert))
+                else:
+                    nagios.append_message(UNKNOWN_CODE, 'Error loading SSL 
cert. Make sure "%s" contains the key as well!' % (args.cert))
+
+    if nagios.getCode() != OK_CODE:
+        print(nagios.getMessage())
+        sys.exit(nagios.getCode())
+
+    return context
+
+
+def make_request(args, url, context):
+    """
+    Performs the actual request to the given URL
+    """
+    req = urllib.request.Request(url, method=args.method)
+    req.add_header("User-Agent", "check_http_json")
+    if args.auth:
+        authbytes = str(args.auth).encode()
+        base64str = base64.encodebytes(authbytes).decode().replace('\n', '')
+        req.add_header('Authorization', 'Basic %s' % base64str)
+    if args.headers:
+        headers = json.loads(args.headers)
+        debugPrint(args.debug, "Headers:\n %s" % headers)
+        for header in headers:
+            req.add_header(header, headers[header])
+    if args.timeout and args.data:
+        databytes = str(args.data).encode()
+        response = urllib.request.urlopen(req, timeout=args.timeout,
+                                          data=databytes, context=context)
+    elif args.timeout:
+        response = urllib.request.urlopen(req, timeout=args.timeout,
+                                          context=context)
+    elif args.data:
+        databytes = str(args.data).encode()
+        response = urllib.request.urlopen(req, data=databytes, context=context)
+    else:
+        # pylint: disable=consider-using-with
+        response = urllib.request.urlopen(req, context=context)
+
+    return response.read()
 
 
 def main(cliargs):
@@ -543,41 +622,7 @@
 
     if args.ssl:
         url = "https://%s"; % args.host
-
-        context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
-        context.options |= ssl.OP_NO_SSLv2
-        context.options |= ssl.OP_NO_SSLv3
-
-        if args.insecure:
-            context.verify_mode = ssl.CERT_NONE
-        else:
-            context.verify_mode = ssl.CERT_OPTIONAL
-            context.load_default_certs()
-            if args.cacert:
-                try:
-                    context.load_verify_locations(args.cacert)
-                except ssl.SSLError:
-                    nagios.append_unknown(
-                        'Error loading SSL CA cert "%s"!'
-                        % args.cacert)
-
-            if args.cert:
-                try:
-                    context.load_cert_chain(args.cert, keyfile=args.key)
-                except ssl.SSLError:
-                    if args.key:
-                        nagios.append_unknown(
-                            'Error loading SSL cert. Make sure key "%s" 
belongs to cert "%s"!'
-                            % (args.key, args.cert))
-                    else:
-                        nagios.append_unknown(
-                            'Error loading SSL cert. Make sure "%s" contains 
the key as well!'
-                            % (args.cert))
-
-        if nagios.getCode() != OK_CODE:
-            print(nagios.getMessage())
-            sys.exit(nagios.getCode())
-
+        context = prepare_context(args)
     else:
         url = "http://%s"; % args.host
     if args.port:
@@ -585,60 +630,37 @@
     if args.path:
         url += "/%s" % args.path
 
-    debugPrint(args.debug, "url:%s" % url)
+    debugPrint(args.debug, "url: %s" % url)
     json_data = ''
 
     try:
-        req = urllib.request.Request(url, method=args.method)
-        req.add_header("User-Agent", "check_http_json")
-        if args.auth:
-            authbytes = str(args.auth).encode()
-            base64str = base64.encodebytes(authbytes).decode().replace('\n', 
'')
-            req.add_header('Authorization', 'Basic %s' % base64str)
-        if args.headers:
-            headers = json.loads(args.headers)
-            debugPrint(args.debug, "Headers:\n %s" % headers)
-            for header in headers:
-                req.add_header(header, headers[header])
-        if args.timeout and args.data:
-            databytes = str(args.data).encode()
-            response = urllib.request.urlopen(req, timeout=args.timeout,
-                                              data=databytes, context=context)
-        elif args.timeout:
-            response = urllib.request.urlopen(req, timeout=args.timeout,
-                                              context=context)
-        elif args.data:
-            databytes = str(args.data).encode()
-            response = urllib.request.urlopen(req, data=databytes, 
context=context)
-        else:
-            # pylint: disable=consider-using-with
-            response = urllib.request.urlopen(req, context=context)
-
-        json_data = response.read()
-
+        json_data = make_request(args, url, context)
     except HTTPError as e:
         # Try to recover from HTTP Error, if there is JSON in the response
         if "json" in e.info().get_content_subtype():
             json_data = e.read()
         else:
-            nagios.append_unknown(" HTTPError[%s], url:%s" % (str(e.code), 
url))
+            nagios.append_message(UNKNOWN_CODE, " Could not find JSON in HTTP 
body. HTTPError[%s], url:%s" % (str(e.code), url))
     except URLError as e:
-        nagios.append_critical(" URLError[%s], url:%s" % (str(e.reason), url))
+        # Some users might prefer another exit code if the URL wasn't reached
+        exit_code = args.unreachable_state
+        nagios.append_message(exit_code, " URLError[%s], url:%s" % 
(str(e.reason), url))
+        # Since we don't got any data, we can simply exit
+        print(nagios.getMessage())
+        sys.exit(nagios.getCode())
 
     try:
         data = json.loads(json_data)
     except ValueError as e:
-        nagios.append_unknown(" Parser error: %s" % str(e))
-
+        nagios.append_message(UNKNOWN_CODE, " JSON Parser error: %s" % str(e))
     else:
-        debugPrint(args.debug, 'json:')
-        debugPrint(args.debug, data, True)
+        verbosePrint(args.verbose, 1, json.dumps(data, indent=2))
         # Apply rules to returned JSON data
         processor = JsonRuleProcessor(data, args)
-        nagios.append_warning(processor.checkWarning())
-        nagios.append_critical(processor.checkCritical())
+        nagios.append_message(WARNING_CODE, processor.checkWarning())
+        nagios.append_message(CRITICAL_CODE, processor.checkCritical())
         nagios.append_metrics(processor.checkMetrics())
-        nagios.append_unknown(processor.checkUnknown())
+        nagios.append_message(UNKNOWN_CODE, processor.checkUnknown())
 
     # Print Nagios specific string and exit appropriately
     print(nagios.getMessage())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/requirements-dev.txt 
new/nagios-http-json-2.2.0/requirements-dev.txt
--- old/nagios-http-json-2.1.2/requirements-dev.txt     2022-09-15 
15:25:38.000000000 +0200
+++ new/nagios-http-json-2.2.0/requirements-dev.txt     2024-05-16 
10:24:10.000000000 +0200
@@ -1,2 +1,2 @@
-coverage==6.4.4
-pylint==2.15.2
+coverage==6.5.0
+pylint==2.17.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/test/test_check_http_json.py 
new/nagios-http-json-2.2.0/test/test_check_http_json.py
--- old/nagios-http-json-2.1.2/test/test_check_http_json.py     2022-09-15 
15:25:38.000000000 +0200
+++ new/nagios-http-json-2.2.0/test/test_check_http_json.py     2024-05-16 
10:24:10.000000000 +0200
@@ -84,10 +84,10 @@
         data = json.loads(jsondata)
         nagios = NagiosHelper()
         processor = JsonRuleProcessor(data, args)
-        nagios.append_warning(processor.checkWarning())
-        nagios.append_critical(processor.checkCritical())
+        nagios.append_message(WARNING_CODE, processor.checkWarning())
+        nagios.append_message(CRITICAL_CODE, processor.checkCritical())
         nagios.append_metrics(processor.checkMetrics())
-        nagios.append_unknown(processor.checkUnknown())
+        nagios.append_message(UNKNOWN_CODE, processor.checkUnknown())
         self.assertEqual(code, nagios.getCode())
 
     def test_metrics(self):
@@ -110,6 +110,14 @@
         self.check_data(RulesHelper().dash_U(['metric,0']),
                         '{"metric": 3}', UNKNOWN_CODE)
 
+    def test_array(self):
+        self.check_data(RulesHelper().dash_q(['foo(0),bar']),
+                        '{"foo": ["bar"]}', OK_CODE)
+        self.check_data(RulesHelper().dash_q(['foo(0),foo']),
+                        '{"foo": ["bar"]}', WARNING_CODE)
+        self.check_data(RulesHelper().dash_Q(['foo(1),bar']),
+                        '{"foo": ["bar"]}', CRITICAL_CODE)
+
     def test_exists(self):
         self.check_data(RulesHelper().dash_e(['nothere']),
                         '{"metric": 5}', WARNING_CODE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/test/test_cli.py 
new/nagios-http-json-2.2.0/test/test_cli.py
--- old/nagios-http-json-2.1.2/test/test_cli.py 2022-09-15 15:25:38.000000000 
+0200
+++ new/nagios-http-json-2.2.0/test/test_cli.py 2024-05-16 10:24:10.000000000 
+0200
@@ -9,6 +9,7 @@
 sys.path.append('..')
 
 from check_http_json import debugPrint
+from check_http_json import verbosePrint
 
 
 class CLITest(unittest.TestCase):
@@ -31,10 +32,13 @@
             debugPrint(True, 'debug')
             mock_print.assert_called_once_with('debug')
 
-    def test_debugprint_pprint(self):
-        with mock.patch('check_http_json.pprint') as mock_pprint:
-            debugPrint(True, 'debug', True)
-            mock_pprint.assert_called_once_with('debug')
+    def test_verbose(self):
+        with mock.patch('builtins.print') as mock_print:
+            verbosePrint(0, 3, 'verbose')
+            mock_print.assert_not_called()
+
+            verbosePrint(3, 3, 'verbose')
+            mock_print.assert_called_once_with('verbose')
 
     def test_cli_without_params(self):
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/test/test_main.py 
new/nagios-http-json-2.2.0/test/test_main.py
--- old/nagios-http-json-2.1.2/test/test_main.py        2022-09-15 
15:25:38.000000000 +0200
+++ new/nagios-http-json-2.2.0/test/test_main.py        2024-05-16 
10:24:10.000000000 +0200
@@ -95,3 +95,37 @@
             main(args)
 
         self.assertEqual(test.exception.code, 0)
+
+    @mock.patch('builtins.print')
+    def test_main_with_tls(self, mock_print):
+        args = ['-H', 'localhost',
+                '--ssl',
+                '--cacert',
+                'test/tls/ca-root.pem',
+                '--cert',
+                'test/tls/cert.pem',
+                '--key',
+                'test/tls/key.pem']
+
+        with self.assertRaises(SystemExit) as test:
+            main(args)
+
+        self.assertTrue('https://localhost' in str(mock_print.call_args))
+        self.assertEqual(test.exception.code, 3)
+
+    @mock.patch('builtins.print')
+    def test_main_with_tls_wrong_ca(self, mock_print):
+        args = ['-H', 'localhost',
+                '--ssl',
+                '--cacert',
+                'test/tls/key.pem',
+                '--cert',
+                'test/tls/cert.pem',
+                '--key',
+                'test/tls/key.pem']
+
+        with self.assertRaises(SystemExit) as test:
+            main(args)
+
+        self.assertTrue('Error loading SSL CA' in str(mock_print.call_args))
+        self.assertEqual(test.exception.code, 3)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/test/tls/ca-root.pem 
new/nagios-http-json-2.2.0/test/tls/ca-root.pem
--- old/nagios-http-json-2.1.2/test/tls/ca-root.pem     1970-01-01 
01:00:00.000000000 +0100
+++ new/nagios-http-json-2.2.0/test/tls/ca-root.pem     2024-05-16 
10:24:10.000000000 +0200
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDbTCCAlWgAwIBAgIUB6EZDl3ajJgJsoLzyC9DrOQQpKowDQYJKoZIhvcNAQEN
+BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
+GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAgFw0yNDAzMTgwODE5MDhaGA8yMDUx
+MDgwMzA4MTkwOFowRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
+ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALVxioj+6zw6Snr+B1JOivC8Of6YptVYym5ICiHX
+wjpbSVVe+Py/P2LDb/uQ1QkAENlpvChFqSaRBZU5keXYS/DaFb2Evb2/zf5qIdWU
+2ju8B5V13gXSeaNNetyEn1Ivvk0lOCQo2RwEZXuStpLS4Q32rkRBvkoL+RXDc1NX
+c3RwcU1p9ybgBqAC7FYdV82sgHGugIrbzkjfFREJXp1AnqvKAdk39b1CnPxfmPZC
+nzPPetfr3iivH8yVO5rodU/LDtQNph22JR94YvPB89QO+bZ9bw2GHtPdAKFew9HF
+UxM1fmy381Mq2iS3KUq5vsC1jMe8slUAIFYEDzoPvOz+MpcCAwEAAaNTMFEwHQYD
+VR0OBBYEFOmCb+JnMzX29hwgtXSzrN+m6mTDMB8GA1UdIwQYMBaAFOmCb+JnMzX2
+9hwgtXSzrN+m6mTDMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQENBQADggEB
+AAkTD8K4UO4uO4i6p2BCofbhVm9LYA0ulmLO8Uro0U491TeEDOQpgMFAK+b2gZIU
+zvDHoCMn3UPVxHKl7XzDgLZVkYYEc2s9vArxk5vSnFmh3XvlDu2SO5gSLB2sf68A
+2+Jz2x6z9tjWWdZCGJWU/iwMbG2Y3JMHyv1NMF8cyOclJaSDNBAwF5c5sdlGTLKb
+WHGXzVqHSAFlGcHtQrcEKclHiuzw2G3LZzwghGk0XzxwvyKrnAEy408RY0mfNLtz
+32KHqYtrip0RYlGWKP7/7q6i0D8muEFW/I4emFI0z0I/1CcYZZS8tQkWaPf/wCN0
+llTD1kKJACsIMaqkkyy+EZM=
+-----END CERTIFICATE-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/test/tls/cert.pem 
new/nagios-http-json-2.2.0/test/tls/cert.pem
--- old/nagios-http-json-2.1.2/test/tls/cert.pem        1970-01-01 
01:00:00.000000000 +0100
+++ new/nagios-http-json-2.2.0/test/tls/cert.pem        2024-05-16 
10:24:10.000000000 +0200
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDDzCCAfcCFBOrBcHIH2x9xcUyUeDid0cvBxWtMA0GCSqGSIb3DQEBDQUAMEUx
+CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl
+cm5ldCBXaWRnaXRzIFB0eSBMdGQwIBcNMjQwMzE4MDgxOTM1WhgPMjA1MTA4MDMw
+ODE5MzVaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
+VQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEeMA0GCSqGSIb3DQEBAQUA
+A4IBCwAwggEGAoH+ALuzyIhEATF5YyAOsXKfr2mttF2HyJvEscGcoA7YetT57bjJ
+5lg944kc3QH/wTEdrGda3cwh3OXdUuyR7Wrm9jPw38hMArx/fWPkiISOShrUSHGd
+Qyy2bT+zxBaUo+pomyrlqlgwGlbxuwTAlTSFcI+i7yXrckl2HRj40EW4FNsYpPzv
+maxRXs0kg0J2JLTYF+fHlqlYbSX/hRU9wz2DYfkRSS0+OYJNSmqK0jayUsdZYurG
+gbPwOCgQ0QxLLh7P8z4sOanRowqUzqTI77cyUugEJRyoi+LJr4r0EwMTBX3STgPh
+S9B78+LNvwOrLrZFUhr144RfO9QPLnz0uWcCAwEAATANBgkqhkiG9w0BAQ0FAAOC
+AQEAeIR21PfLzgpL7WDBE2KgwI78nVc1wY9nwoAxSBzHjS0Olve3r9MaVzAKn5ZS
+xHtv8oroXjhTcczCIzxii6Imp6u0iIr3QVBIceofxrH3aWmICURcC9l+dIiY6sk9
+Ct8P8gm/Erv2iF/7bnsARwDnw0f41fC9eXtHZ7WLRQrc7tLHpjL0Z7bT77ysQJVK
+C1SWtBnq3afmwH3R1wVHENn0JVFQpBp+vqWU5KIlvjcz49yPU+aNODk1rJsHMlgS
+x2iddwF31GNOxNfXtw8fdw4UDUl2wYoZ45w2e2pXt4pbN43m0Wys1eQZdk3tyR6G
+AZOLP05073mLtbVlFRmcTdXIGg==
+-----END CERTIFICATE-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nagios-http-json-2.1.2/test/tls/key.pem 
new/nagios-http-json-2.2.0/test/tls/key.pem
--- old/nagios-http-json-2.1.2/test/tls/key.pem 1970-01-01 01:00:00.000000000 
+0100
+++ new/nagios-http-json-2.2.0/test/tls/key.pem 2024-05-16 10:24:10.000000000 
+0200
@@ -0,0 +1,27 @@
+-----BEGIN PRIVATE KEY-----
+MIIEqAIBADANBgkqhkiG9w0BAQEFAASCBJIwggSOAgEAAoH+ALuzyIhEATF5YyAO
+sXKfr2mttF2HyJvEscGcoA7YetT57bjJ5lg944kc3QH/wTEdrGda3cwh3OXdUuyR
+7Wrm9jPw38hMArx/fWPkiISOShrUSHGdQyy2bT+zxBaUo+pomyrlqlgwGlbxuwTA
+lTSFcI+i7yXrckl2HRj40EW4FNsYpPzvmaxRXs0kg0J2JLTYF+fHlqlYbSX/hRU9
+wz2DYfkRSS0+OYJNSmqK0jayUsdZYurGgbPwOCgQ0QxLLh7P8z4sOanRowqUzqTI
+77cyUugEJRyoi+LJr4r0EwMTBX3STgPhS9B78+LNvwOrLrZFUhr144RfO9QPLnz0
+uWcCAwEAAQKB/UQAYzMy5/fDkWzoxdLQFV3E56ZG7h+4x+lr0/Ts6rtD/KLIyqHH
+ciqXgV4bCSPBK1eabOZqkjvYzhUU3R2wpRu2NWy8VPVzfrr07ZyQbDqCE+jNX6vQ
+P44nk2/W0/e1hBmrcOZYLwK2utmC58tKWLhBAEENpq8EkpAcfF/1y9aRHKYwNnH7
+vouoQibN5NTs5m8s0VyjRTDwRZja98eWnn5NfU3orqYO8fSlF6CyzDtoyhMco6zR
+0skBgMzRYCRTuJpV+KekC7XFYyiJ6XZN5DKLbbqP6Y7YR8wjyFEruoGCS0mZH2H0
+9/rhTsJram1B2zohXHPsHJGGGv12/7kCfw5C7yda+8Yv0NmRp1F+EJYb75SCAWIP
+kzN/xvjP2bMKa6oSzU0DOga3Wc4ijJHDaND8rqdPqQe3zXFr1nPdBrybLSJ6k5CN
+4Dd6ENJWVWino0L460kpLtlBG6TsgmB8bkwhjWVE6Vgt4Vila+a3TGRXeniaRzdw
+icNOtMrjYlUCfw0pWEvO2uFq0DbNZbmzC2j5ClFcU96CAl4AqKG2PiGnuSy9TKVZ
+c5OiXFmyoig7v4LJzaKLSqVIN4hVBU80/MlhvG+dpeimvLaQKNtlZQethIs5hXlB
+R1XfaPhq6BQiYmQ3tufyS/0Es2OY+Cs3LU1uDB8qVzonlmnIi69OwMsCfwRPISfJ
+C+4UIIy8v8uVxbk1c6xxo61Xe2jCIQKo+uRoL6PRzoqIgQ3qdI4eTk70tkT/NF6F
+aVNVrBOrO78Cd7ihQn/6fX/d/nOExHRpdaELlf70a1NNyEQIsiug8rvonQMP2ENT
+ERZ9tmssgG/Tzpc6/1xVcVNFA7spmuL61YkCfwnu2zGTc0PO7kd96rkktIbL9YqD
+6NQ0QH8bdildtjSGNc3bLB5ajUytq48Sryk4NogJr8Vt5K8q+qZMrE4kCmgd+C4w
+x4b3V9Ncp0k1k/MgdLjyd5aUurbHfpyFapPPg3xpRAR3q/vP8WdIintrECiw1jsr
+JFvChtVdQnbTM9MCfw41RcjNwCaIG+uXc8bD6Yf+NyXD8zP6ZDywmBlkMWlGSzx4
+xM8J+wQiQsNWthDBbF7inJc+lbtJiEe4YOPkbjCYVZRHribL65HKJlEUv6M9bvQo
+3P1DS5tDrwo6z9UPs4tD1SgF9fDu/xA7fwPF1RTvuW07MhFJWlDo4FSWS9c=
+-----END PRIVATE KEY-----

Reply via email to