diff --git a/docs/changelog.md b/docs/changelog.md index 334ddddd..6900f6cb 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,10 @@ ## Latest +## 2026.1.22.0 + +- fix: base/dsc.py - add missing parameters for Docker DSC config (#468) + ## 2026.1.19.0 - fix: base/remote_syslog/forwarder.py - bugfix for v11.0.2 diff --git a/ibmsecurity/isam/base/dsc.py b/ibmsecurity/isam/base/dsc.py index db77bbad..402c02a5 100644 --- a/ibmsecurity/isam/base/dsc.py +++ b/ibmsecurity/isam/base/dsc.py @@ -20,7 +20,11 @@ def get(isamAppliance, check_mode=False, force=False): def set(isamAppliance, service_port=443, replication_port=444, worker_threads=64, max_session_lifetime=3600, max_session_list=None, - client_grace=600, servers=[], check_mode=False, force=False): + client_grace=600, servers=[], + connection_idle_timeout=None, + trace_level=None, + ssl_ciphers=None, + check_mode=False, force=False): """ Update the current distributed session cache policy """ @@ -34,6 +38,12 @@ def set(isamAppliance, service_port=443, replication_port=444, worker_threads=64 "servers": servers } + # connection_idle_timeout + if connection_idle_timeout is not None: + dsc_json["connection_idle_timeout"] = connection_idle_timeout + # trace_level + if trace_level is not None: + dsc_json["trace_level"] = trace_level # max_session_list if max_session_list is not None: if ibmsecurity.utilities.tools.version_compare(isamAppliance.facts['version'], "11.0.2.0") < 0: @@ -42,6 +52,14 @@ def set(isamAppliance, service_port=443, replication_port=444, worker_threads=64 else: # The default limit for a session query is 1024 dsc_json["max_session_list"] = max_session_list + # ssl_ciphers + if ssl_ciphers is not None: + if ibmsecurity.utilities.tools.version_compare(isamAppliance.facts['version'], "11.0.2.0") < 0: + warnings.append( + f"Appliance at version: {isamAppliance.facts['version']}, ssl_ciphers: {ssl_ciphers} is not supported. Needs 11.0.2.0 or higher. Ignoring ssl_ciphers for this call.") + else: + # Comma separated list + dsc_json["ssl_ciphers"] = ssl_ciphers obj = _check(isamAppliance, dsc_json) if force or not obj['value']: diff --git a/pyproject.toml b/pyproject.toml index 28c050b4..8ae74113 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta" [project] name = "ibmsecurity" -version = "2026.1.19.0" +version = "2026.1.22.0" authors = [ { name="IBM", email="secorch@wwpdl.vnet.ibm.com" }, ] diff --git a/setup.py b/setup.py index b73a4b11..154e21f0 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ packages=find_packages(exclude=["test.*","test"]), # Date of release used for version - please be sure to use YYYY.MM.DD.seq#, MM and DD should be two digits e.g. 2017.02.05.0 # seq# will be zero unless there are multiple release on a given day - then increment by one for additional release for that date - version="2026.1.19.0", + version="2026.1.22.0", description="Idempotent functions for IBM Verify Appliance REST APIs", author="IBM", author_email="secorch@wwpdl.vnet.ibm.com", @@ -18,6 +18,7 @@ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Development Status :: 5 - Production/Stable", diff --git a/test/test_0_docker_7_dsc.py b/test/test_0_docker_7_dsc.py new file mode 100644 index 00000000..9198f88b --- /dev/null +++ b/test/test_0_docker_7_dsc.py @@ -0,0 +1,56 @@ +import logging + +import ibmsecurity.isam.base.dsc +import ibmsecurity.isam.appliance + +import pytest + + +def getTestData(): + testdata = [ + { + "worker_threads": 64, + "max_session_lifetime": 3600, + "client_grace": 600, + "connection_idle_timeout": 10, + "service_port": 443, + "replication_port": 444, + "servers": [ + { + "ip": "10.0.0.1", + "service_port": 6443, + "replication_port": 6444 + }, + { + "ip": "10.0.0.1", + "service_port": 7443, + "replication_port": 7444 + }, + ] + } + ] + return testdata + + +@pytest.mark.parametrize("items", getTestData()) +def test_set_dsc_configuration(iviaServer, caplog, items) -> None: + """Set admin ssh keys""" + caplog.set_level(logging.DEBUG) + # items is a key-value pair + logging.log(logging.INFO, items) + arg = {} + for k, v in items.items(): + #if k == 'name': + # name = v + # continue + #if k == 'key': + # key = v + # continue + arg[k] = v + + returnValue = ibmsecurity.isam.base.dsc.set(iviaServer, **arg) + + logging.log(logging.INFO, returnValue) + + if returnValue is not None: + assert not returnValue.failed()