From 6b39df07da2bed8a80472e6f7dd1de8b2094f70f Mon Sep 17 00:00:00 2001 From: terc1997 <64480693+terc1997@users.noreply.github.com> Date: Thu, 15 May 2025 10:08:55 -0300 Subject: [PATCH 1/9] [patch] add support facilities --- .../templates/pipelinerun-install.yml.j2 | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/mas/devops/templates/pipelinerun-install.yml.j2 b/src/mas/devops/templates/pipelinerun-install.yml.j2 index 8c956bad..1e063315 100644 --- a/src/mas/devops/templates/pipelinerun-install.yml.j2 +++ b/src/mas/devops/templates/pipelinerun-install.yml.j2 @@ -112,6 +112,8 @@ spec: value: "{{ db2_action_system }}" - name: db2_action_manage value: "{{ db2_action_manage }}" + - name: db2_action_facilities + value: "{{ db2_action_facilities}}" # Dependencies - Db2u Operator # ------------------------------------------------------------------------- @@ -814,6 +816,64 @@ spec: value: "{{ mas_aibroker_db_secret_key }}" - name: mas_aibroker_db_secret_value value: "{{ mas_aibroker_db_secret_value }}" +{%- endif %} + +{%- if mas_app_channel_facilities is defined and mas_app_channel_facilities != "" %} + + # Real Estate anda Facilities Application + # ------------------------------------------------------------------------- + - name: mas_app_channel_facilities + value: "{{ mas_app_channel_facilities }}" + +{%- if mas_ws_facilities_size is defined and mas_ws_facilities_size != "" %} + - name: mas_ws_facilities_size + value: "{{ mas_ws_facilities_size }}" +{%- endif %} +{%- if mas_ws_facilities_routes_timeout is defined and mas_ws_facilities_routes_timeout != "" %} + - name: mas_ws_facilities_routes_timeout + value: "{{ mas_ws_facilities_routes_timeout }}" +{%- endif %} +{%- if mas_ws_facilities_liberty_extension_XML is defined and mas_ws_facilities_liberty_extension_XML != "" %} + - name: mas_ws_facilities_liberty_extension_XML + value: "{{ mas_ws_facilities_liberty_extension_XML }}" +{%- endif %} +{%- if mas_ws_facilities_vault_secret is defined and mas_ws_facilities_vault_secret != "" %} + - name: mas_ws_facilities_vault_secret + value: "{{ mas_ws_facilities_vault_secret }}" +{%- endif %} +{%- if mas_ws_facilities_pull_policy is defined and mas_ws_facilities_pull_policy != "" %} + - name: mas_ws_facilities_pull_policy + value: "{{ mas_ws_facilities_pull_policy }}" +{%- endif %} + - name: mas_ws_facilities_storage_log_class + value: "{{ mas_ws_facilities_storage_log_class }}" +{%- if mas_ws_facilities_storage_log_mode is defined and mas_ws_facilities_storage_log_mode != "" %} + - name: mas_ws_facilities_storage_log_mode + value: "{{ mas_ws_facilities_storage_log_mode }}" +{%- endif %} +{%- if mas_ws_facilities_storage_log_size is defined and mas_ws_facilities_storage_log_size != "" %} + - name: mas_ws_facilities_storage_log_size + value: "{{ mas_ws_facilities_storage_log_size }}" +{%- endif %} + - name: mas_ws_facilities_storage_userfiles_class + value: "{{ mas_ws_facilities_storage_userfiles_class }}" +{%- if mas_ws_facilities_storage_userfiles_mode is defined and mas_ws_facilities_storage_userfiles_mode != "" %} + - name: mas_ws_facilities_storage_userfiles_mode + value: "{{ mas_ws_facilities_storage_userfiles_mode }}" +{%- endif %} +{%- if mas_ws_facilities_storage_userfiles_size is defined and mas_ws_facilities_storage_userfiles_size != "" %} + - name: mas_ws_facilities_storage_userfiles_size + value: "{{ mas_ws_facilities_storage_userfiles_size }}" +{%- endif %} +{%- if mas_ws_facilities_dwfagents is defined and mas_ws_facilities_dwfagents != "" %} + - name: mas_ws_facilities_dwfagents + value: "{{ mas_ws_facilities_dwfagents }}" +{%- endif %} +{%- if mas_ws_facilities_db_maxconnpoolsize is defined and mas_ws_facilities_db_maxconnpoolsize != "" %} + - name: mas_ws_facilities_db_maxconnpoolsize + value: "{{ mas_ws_facilities_db_maxconnpoolsize }}" +{%- endif %} + {%- endif %} workspaces: From c40c0bc8a81cdd4497082579c06d1d14a1eead56 Mon Sep 17 00:00:00 2001 From: terc1997 <64480693+terc1997@users.noreply.github.com> Date: Fri, 16 May 2025 14:39:36 -0300 Subject: [PATCH 2/9] [patch] disable integer fields on facilities --- .../templates/pipelinerun-install.yml.j2 | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/mas/devops/templates/pipelinerun-install.yml.j2 b/src/mas/devops/templates/pipelinerun-install.yml.j2 index 1e063315..0a961a0a 100644 --- a/src/mas/devops/templates/pipelinerun-install.yml.j2 +++ b/src/mas/devops/templates/pipelinerun-install.yml.j2 @@ -818,6 +818,7 @@ spec: value: "{{ mas_aibroker_db_secret_value }}" {%- endif %} +# TODO: Fix type for storage sizes and max conn pool size {%- if mas_app_channel_facilities is defined and mas_app_channel_facilities != "" %} # Real Estate anda Facilities Application @@ -851,28 +852,28 @@ spec: - name: mas_ws_facilities_storage_log_mode value: "{{ mas_ws_facilities_storage_log_mode }}" {%- endif %} -{%- if mas_ws_facilities_storage_log_size is defined and mas_ws_facilities_storage_log_size != "" %} - - name: mas_ws_facilities_storage_log_size - value: "{{ mas_ws_facilities_storage_log_size }}" -{%- endif %} +# {%- if mas_ws_facilities_storage_log_size is defined and mas_ws_facilities_storage_log_size != "" %} +# - name: mas_ws_facilities_storage_log_size +# value: "{{ mas_ws_facilities_storage_log_size }}" +# {%- endif %} - name: mas_ws_facilities_storage_userfiles_class value: "{{ mas_ws_facilities_storage_userfiles_class }}" {%- if mas_ws_facilities_storage_userfiles_mode is defined and mas_ws_facilities_storage_userfiles_mode != "" %} - name: mas_ws_facilities_storage_userfiles_mode value: "{{ mas_ws_facilities_storage_userfiles_mode }}" {%- endif %} -{%- if mas_ws_facilities_storage_userfiles_size is defined and mas_ws_facilities_storage_userfiles_size != "" %} - - name: mas_ws_facilities_storage_userfiles_size - value: "{{ mas_ws_facilities_storage_userfiles_size }}" -{%- endif %} +# {%- if mas_ws_facilities_storage_userfiles_size is defined and mas_ws_facilities_storage_userfiles_size != "" %} +# - name: mas_ws_facilities_storage_userfiles_size +# value: "{{ mas_ws_facilities_storage_userfiles_size }}" +# {%- endif %} {%- if mas_ws_facilities_dwfagents is defined and mas_ws_facilities_dwfagents != "" %} - name: mas_ws_facilities_dwfagents value: "{{ mas_ws_facilities_dwfagents }}" {%- endif %} -{%- if mas_ws_facilities_db_maxconnpoolsize is defined and mas_ws_facilities_db_maxconnpoolsize != "" %} - - name: mas_ws_facilities_db_maxconnpoolsize - value: "{{ mas_ws_facilities_db_maxconnpoolsize }}" -{%- endif %} +# {%- if mas_ws_facilities_db_maxconnpoolsize is defined and mas_ws_facilities_db_maxconnpoolsize != "" %} +# - name: mas_ws_facilities_db_maxconnpoolsize +# value: "{{ mas_ws_facilities_db_maxconnpoolsize }}" +# {%- endif %} {%- endif %} From 01be81a54eb27b4242e0edcfc4a8a625876ebcae Mon Sep 17 00:00:00 2001 From: terc1997 <64480693+terc1997@users.noreply.github.com> Date: Fri, 23 May 2025 07:13:37 -0300 Subject: [PATCH 3/9] [patch] move db2_action_facilities into facilities section --- src/mas/devops/templates/pipelinerun-install.yml.j2 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mas/devops/templates/pipelinerun-install.yml.j2 b/src/mas/devops/templates/pipelinerun-install.yml.j2 index 0a961a0a..242270cd 100644 --- a/src/mas/devops/templates/pipelinerun-install.yml.j2 +++ b/src/mas/devops/templates/pipelinerun-install.yml.j2 @@ -112,8 +112,6 @@ spec: value: "{{ db2_action_system }}" - name: db2_action_manage value: "{{ db2_action_manage }}" - - name: db2_action_facilities - value: "{{ db2_action_facilities}}" # Dependencies - Db2u Operator # ------------------------------------------------------------------------- @@ -875,6 +873,9 @@ spec: # value: "{{ mas_ws_facilities_db_maxconnpoolsize }}" # {%- endif %} + - name: db2_action_facilities + value: "{{ db2_action_facilities}}" + {%- endif %} workspaces: From 0e023877b585f8f6c5c6eb3f08c1693768435524 Mon Sep 17 00:00:00 2001 From: terc1997 <64480693+terc1997@users.noreply.github.com> Date: Fri, 23 May 2025 07:15:55 -0300 Subject: [PATCH 4/9] [patch] add version verification functions --- setup.py | 3 ++- src/mas/devops/mas.py | 39 +++++++++++++++++++++++++++++++++++++++ test/src/test_mas.py | 15 +++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 520b4673..1ba27c2e 100644 --- a/setup.py +++ b/setup.py @@ -60,7 +60,8 @@ def get_version(rel_path): 'kubernetes', # Apache Software License 'kubeconfig', # BSD License 'jinja2', # BSD License - 'jinja2-base64-filters' # MIT License + 'jinja2-base64-filters', # MIT License + 'semver' # BSD License ], extras_require={ 'dev': [ diff --git a/src/mas/devops/mas.py b/src/mas/devops/mas.py index ac207574..f580abc4 100644 --- a/src/mas/devops/mas.py +++ b/src/mas/devops/mas.py @@ -18,6 +18,7 @@ from openshift.dynamic import DynamicClient from openshift.dynamic.exceptions import NotFoundError, ResourceNotFoundError, UnauthorizedError from jinja2 import Environment, FileSystemLoader +import semver from .ocp import getStorageClasses from .olm import getSubscription @@ -305,3 +306,41 @@ def patchPendingPVC(dynClient: DynamicClient, namespace: str, pvcName: str, stor except NotFoundError: logger.error(f"PVC {pvcName} does not exist") return False + + +def isVersionBefore(_compare_to_version, _current_version): + """ + The method does a modified semantic version comparison, + as we want to treat any pre-release as == to the real release + but in strict semantic versioning it is < + ie. '8.6.0-pre.m1dev86' is converted to '8.6.0' + """ + if _current_version is None: + print("Version is not informed. Returning False") + return False + + strippedVersion = _current_version.split("-")[0] + if '.x' in strippedVersion: + strippedVersion = strippedVersion.replace('.x', '.0') + current_version = semver.VersionInfo.parse(strippedVersion) + compareToVersion = semver.VersionInfo.parse(_compare_to_version) + return current_version.compare(compareToVersion) < 0 + + +def isVersionAfter(_compare_to_version, _current_version): + """ + The method does a modified semantic version comparison, + as we want to treat any pre-release as == to the real release + but in strict semantic versioning it is < + ie. '8.6.0-pre.m1dev86' is converted to '8.6.0' + """ + if _current_version is None: + print("Version is not informed. Returning False") + return False + + strippedVersion = _current_version.split("-")[0] + if '.x' in strippedVersion: + strippedVersion = strippedVersion.replace('.x', '.0') + current_version = semver.VersionInfo.parse(strippedVersion) + compareToVersion = semver.VersionInfo.parse(_compare_to_version) + return current_version.compare(compareToVersion) >= 0 diff --git a/test/src/test_mas.py b/test/src/test_mas.py index a1d9faf8..8d8e40f4 100644 --- a/test/src/test_mas.py +++ b/test/src/test_mas.py @@ -62,3 +62,18 @@ def test_is_airgap_install(): # The cluster we are using to test with does not have the MAS ICSP or IDMS installed assert mas.isAirgapInstall(dynClient) is False assert mas.isAirgapInstall(dynClient, checkICSP=False) is False + +def test_version_before(): + assert mas.isVersionBefore('9.1.0','9.1.x-feature') is False + assert mas.isVersionBefore('9.1.0','9.0.0') is True + assert mas.isVersionBefore('8.11.1','9.1.0') is False + assert mas.isVersionBefore('9.1.0','9.1.x-stable') is False + +def test_version_before(): + assert mas.isVersionAfter('9.1.0','9.2.x-feature') is True + assert mas.isVersionAfter('9.1.0','9.0.0') is False + assert mas.isVersionAfter('8.11.1','9.1.0') is True + assert mas.isVersionAfter('9.2.0','9.1.x-stable') is False + +if __name__ == '__main__': + test_version_before() \ No newline at end of file From c41a18311b73b1f9171511bf0fb742c554c4fe3b Mon Sep 17 00:00:00 2001 From: terc1997 <64480693+terc1997@users.noreply.github.com> Date: Fri, 23 May 2025 09:37:56 -0300 Subject: [PATCH 5/9] [patch] update version after method name --- src/mas/devops/mas.py | 2 +- test/src/test_mas.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mas/devops/mas.py b/src/mas/devops/mas.py index f580abc4..46419753 100644 --- a/src/mas/devops/mas.py +++ b/src/mas/devops/mas.py @@ -327,7 +327,7 @@ def isVersionBefore(_compare_to_version, _current_version): return current_version.compare(compareToVersion) < 0 -def isVersionAfter(_compare_to_version, _current_version): +def isVersionEqualOrAfter(_compare_to_version, _current_version): """ The method does a modified semantic version comparison, as we want to treat any pre-release as == to the real release diff --git a/test/src/test_mas.py b/test/src/test_mas.py index 8d8e40f4..ec324003 100644 --- a/test/src/test_mas.py +++ b/test/src/test_mas.py @@ -69,11 +69,11 @@ def test_version_before(): assert mas.isVersionBefore('8.11.1','9.1.0') is False assert mas.isVersionBefore('9.1.0','9.1.x-stable') is False -def test_version_before(): - assert mas.isVersionAfter('9.1.0','9.2.x-feature') is True - assert mas.isVersionAfter('9.1.0','9.0.0') is False - assert mas.isVersionAfter('8.11.1','9.1.0') is True - assert mas.isVersionAfter('9.2.0','9.1.x-stable') is False +def test_version_equal_of_after(): + assert mas.isVersionEqualOrAfter('9.1.0','9.2.x-feature') is True + assert mas.isVersionEqualOrAfter('9.1.0','9.0.0') is False + assert mas.isVersionEqualOrAfter('8.11.1','9.1.0') is True + assert mas.isVersionEqualOrAfter('9.2.0','9.1.x-stable') is False if __name__ == '__main__': test_version_before() \ No newline at end of file From 6039c64c127e74c003c932cc1e7f1f9408fd91cd Mon Sep 17 00:00:00 2001 From: terc1997 <64480693+terc1997@users.noreply.github.com> Date: Fri, 23 May 2025 10:37:09 -0300 Subject: [PATCH 6/9] [patch] remove test function --- test/src/test_mas.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/src/test_mas.py b/test/src/test_mas.py index ec324003..c85fb14e 100644 --- a/test/src/test_mas.py +++ b/test/src/test_mas.py @@ -74,6 +74,3 @@ def test_version_equal_of_after(): assert mas.isVersionEqualOrAfter('9.1.0','9.0.0') is False assert mas.isVersionEqualOrAfter('8.11.1','9.1.0') is True assert mas.isVersionEqualOrAfter('9.2.0','9.1.x-stable') is False - -if __name__ == '__main__': - test_version_before() \ No newline at end of file From e09b1a1063ada85b2c5262047a8325fcac10b3b9 Mon Sep 17 00:00:00 2001 From: terc1997 <64480693+terc1997@users.noreply.github.com> Date: Sat, 24 May 2025 06:14:19 -0300 Subject: [PATCH 7/9] [patch] fix linting --- test/src/test_mas.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/test/src/test_mas.py b/test/src/test_mas.py index c85fb14e..79db0ac6 100644 --- a/test/src/test_mas.py +++ b/test/src/test_mas.py @@ -62,15 +62,17 @@ def test_is_airgap_install(): # The cluster we are using to test with does not have the MAS ICSP or IDMS installed assert mas.isAirgapInstall(dynClient) is False assert mas.isAirgapInstall(dynClient, checkICSP=False) is False - + + def test_version_before(): - assert mas.isVersionBefore('9.1.0','9.1.x-feature') is False - assert mas.isVersionBefore('9.1.0','9.0.0') is True - assert mas.isVersionBefore('8.11.1','9.1.0') is False - assert mas.isVersionBefore('9.1.0','9.1.x-stable') is False + assert mas.isVersionBefore('9.1.0', '9.1.x-feature') is False + assert mas.isVersionBefore('9.1.0', '9.0.0') is True + assert mas.isVersionBefore('8.11.1', '9.1.0') is False + assert mas.isVersionBefore('9.1.0', '9.1.x-stable') is False + def test_version_equal_of_after(): - assert mas.isVersionEqualOrAfter('9.1.0','9.2.x-feature') is True - assert mas.isVersionEqualOrAfter('9.1.0','9.0.0') is False - assert mas.isVersionEqualOrAfter('8.11.1','9.1.0') is True - assert mas.isVersionEqualOrAfter('9.2.0','9.1.x-stable') is False + assert mas.isVersionEqualOrAfter('9.1.0', '9.2.x-feature') is True + assert mas.isVersionEqualOrAfter('9.1.0', '9.0.0') is False + assert mas.isVersionEqualOrAfter('8.11.1', '9.1.0') is True + assert mas.isVersionEqualOrAfter('9.2.0', '9.1.x-stable') is False From 400bc2b09c297fd25a194fd23a70d0024da6e9e7 Mon Sep 17 00:00:00 2001 From: terc1997 <64480693+terc1997@users.noreply.github.com> Date: Sat, 24 May 2025 06:17:55 -0300 Subject: [PATCH 8/9] [patch] fix packages in setup --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f1466f39..c46f6a3f 100644 --- a/setup.py +++ b/setup.py @@ -61,7 +61,7 @@ def get_version(rel_path): 'kubeconfig', # BSD License 'jinja2', # BSD License 'jinja2-base64-filters', # MIT License - 'semver' # BSD License + 'semver', # BSD License 'boto3' # Apache Software License ], extras_require={ From 9a85652ac43177f27eeb3d823a5b5d1fc072ae6b Mon Sep 17 00:00:00 2001 From: terc1997 <64480693+terc1997@users.noreply.github.com> Date: Fri, 30 May 2025 15:57:43 -0300 Subject: [PATCH 9/9] [patch] additional params for facilities --- .../templates/pipelinerun-install.yml.j2 | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/mas/devops/templates/pipelinerun-install.yml.j2 b/src/mas/devops/templates/pipelinerun-install.yml.j2 index 242270cd..2864b94c 100644 --- a/src/mas/devops/templates/pipelinerun-install.yml.j2 +++ b/src/mas/devops/templates/pipelinerun-install.yml.j2 @@ -850,28 +850,16 @@ spec: - name: mas_ws_facilities_storage_log_mode value: "{{ mas_ws_facilities_storage_log_mode }}" {%- endif %} -# {%- if mas_ws_facilities_storage_log_size is defined and mas_ws_facilities_storage_log_size != "" %} -# - name: mas_ws_facilities_storage_log_size -# value: "{{ mas_ws_facilities_storage_log_size }}" -# {%- endif %} - name: mas_ws_facilities_storage_userfiles_class value: "{{ mas_ws_facilities_storage_userfiles_class }}" {%- if mas_ws_facilities_storage_userfiles_mode is defined and mas_ws_facilities_storage_userfiles_mode != "" %} - name: mas_ws_facilities_storage_userfiles_mode value: "{{ mas_ws_facilities_storage_userfiles_mode }}" {%- endif %} -# {%- if mas_ws_facilities_storage_userfiles_size is defined and mas_ws_facilities_storage_userfiles_size != "" %} -# - name: mas_ws_facilities_storage_userfiles_size -# value: "{{ mas_ws_facilities_storage_userfiles_size }}" -# {%- endif %} -{%- if mas_ws_facilities_dwfagents is defined and mas_ws_facilities_dwfagents != "" %} - - name: mas_ws_facilities_dwfagents - value: "{{ mas_ws_facilities_dwfagents }}" -{%- endif %} -# {%- if mas_ws_facilities_db_maxconnpoolsize is defined and mas_ws_facilities_db_maxconnpoolsize != "" %} -# - name: mas_ws_facilities_db_maxconnpoolsize -# value: "{{ mas_ws_facilities_db_maxconnpoolsize }}" -# {%- endif %} +{%- if mas_ws_facilities_config_map_name is defined and mas_ws_facilities_config_map_name != "" %} + - name: mas_ws_facilities_config_map_name + value: "{{ mas_ws_facilities_config_map_name }}" +{%- endif %} - name: db2_action_facilities value: "{{ db2_action_facilities}}"