From 62161c9d0fc3f76cdc3d53d68f2a4356786e15cd Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Wed, 17 Sep 2025 13:29:32 -0400 Subject: [PATCH 01/26] delete queues for integration --- .../tests/integration/test_sensor_watcher.py | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/st2reactor/tests/integration/test_sensor_watcher.py b/st2reactor/tests/integration/test_sensor_watcher.py index b7991dab42..a5e9a371fb 100644 --- a/st2reactor/tests/integration/test_sensor_watcher.py +++ b/st2reactor/tests/integration/test_sensor_watcher.py @@ -34,10 +34,13 @@ def setUpClass(cls): def setUp(self): super().setUp() # pre-condition: Make sure there is no test pollution + # Delete any leftover queues from previous failed test runs + self._delete_sensor_watcher_amqp_queues(queue_name="st2.sensor.watch.covfefe") + + # Verify queues are deleted sw_queues = self._get_sensor_watcher_amqp_queues( queue_name="st2.sensor.watch.covfefe" ) - # TODO: Maybe just delete any leftover queues from previous failed test runs. self.assertTrue(len(sw_queues) == 0) def test_sensor_watch_queue_gets_deleted_on_stop(self): @@ -82,3 +85,22 @@ def _list_amqp_queues(): def _get_sensor_watcher_amqp_queues(self, queue_name): all_queues = self._list_amqp_queues() return set([q_name for q_name in all_queues if queue_name in q_name]) + + def _delete_sensor_watcher_amqp_queues(self, queue_name): + """ + Delete all queues containing the specified queue_name pattern. + + :param string queue_name: Pattern to match in queue names + :returns: None + """ + # Get all queues matching the pattern + queues_to_delete = self._get_sensor_watcher_amqp_queues(queue_name=queue_name) + + if not queues_to_delete: + return + + # Create a rabbit client and delete each queue + rabbit_client = Client("localhost:15672", "guest", "guest") + for queue in queues_to_delete: + # Use default vhost "/" + rabbit_client.delete_queue("/", queue) From f43270e512c99e11bc030dc692c039e2a92df1ee Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Wed, 17 Sep 2025 16:49:21 -0400 Subject: [PATCH 02/26] add ply to fix st2client --- requirements.txt | 1 + st2client/in-requirements.txt | 1 + st2client/requirements.txt | 1 + 3 files changed, 3 insertions(+) diff --git a/requirements.txt b/requirements.txt index d2dd4bf19d..c8c9a7cf84 100644 --- a/requirements.txt +++ b/requirements.txt @@ -39,6 +39,7 @@ orquesta@ git+https://github.com/StackStorm/orquesta.git@5ba1467614b2ef8b4709b2c oslo.config==9.6.0 oslo.utils==7.3.0 paramiko==3.5.1 +ply prettytable==3.10.2 prompt-toolkit==3.0.52 psutil==7.0.0 diff --git a/st2client/in-requirements.txt b/st2client/in-requirements.txt index a27ca15aa3..4f1c1f1072 100644 --- a/st2client/in-requirements.txt +++ b/st2client/in-requirements.txt @@ -3,6 +3,7 @@ importlib-metadata # importlib-metadata requires typing-extensions typing-extensions argcomplete +ply prettytable pytz python-dateutil diff --git a/st2client/requirements.txt b/st2client/requirements.txt index 9751f730c7..d26aa25d22 100644 --- a/st2client/requirements.txt +++ b/st2client/requirements.txt @@ -14,6 +14,7 @@ importlib-metadata==7.1.0 jsonpath-rw==1.4.0 jsonschema==3.2.0 orjson==3.10.15 +ply prettytable==3.10.2 prompt-toolkit==3.0.52 pyOpenSSL From af14d231a243366a0c904e458befd3c6491213db Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Wed, 17 Sep 2025 17:00:17 -0400 Subject: [PATCH 03/26] use pip install for st2client checking --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index de4787198e..d28f7c4d7a 100644 --- a/Makefile +++ b/Makefile @@ -537,7 +537,7 @@ flake8: requirements .flake8 $(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install --upgrade "pip==$(PIP_VERSION)" $(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install --upgrade "setuptools==$(SETUPTOOLS_VERSION)" - $(VIRTUALENV_ST2CLIENT_DIR)/bin/activate; cd st2client ; ../$(VIRTUALENV_ST2CLIENT_DIR)/bin/python setup.py install ; cd .. + $(VIRTUALENV_ST2CLIENT_DIR)/bin/activate; cd st2client ; ../$(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install -e .; cd .. $(VIRTUALENV_ST2CLIENT_DIR)/bin/st2 --version $(VIRTUALENV_ST2CLIENT_DIR)/bin/python -c "import st2client" From 4399ed416fde3169be2e7a1b2a87118359b52f1d Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Wed, 17 Sep 2025 17:15:03 -0400 Subject: [PATCH 04/26] remove transient dep ply --- st2client/in-requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/st2client/in-requirements.txt b/st2client/in-requirements.txt index 4f1c1f1072..a27ca15aa3 100644 --- a/st2client/in-requirements.txt +++ b/st2client/in-requirements.txt @@ -3,7 +3,6 @@ importlib-metadata # importlib-metadata requires typing-extensions typing-extensions argcomplete -ply prettytable pytz python-dateutil From 33331c2795b084409070d8ea9edd9ad3c84427f0 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Thu, 18 Sep 2025 09:13:23 -0400 Subject: [PATCH 05/26] explicitly install requirementst for st2client testing --- Makefile | 3 ++- contrib/runners/action_chain_runner/dist_utils.py | 7 +------ contrib/runners/announcement_runner/dist_utils.py | 7 +------ contrib/runners/http_runner/dist_utils.py | 7 +------ contrib/runners/inquirer_runner/dist_utils.py | 7 +------ contrib/runners/local_runner/dist_utils.py | 7 +------ contrib/runners/noop_runner/dist_utils.py | 7 +------ contrib/runners/orquesta_runner/dist_utils.py | 7 +------ contrib/runners/python_runner/dist_utils.py | 7 +------ contrib/runners/remote_runner/dist_utils.py | 7 +------ contrib/runners/winrm_runner/dist_utils.py | 7 +------ requirements.txt | 1 - scripts/dist_utils.py | 7 +------ st2actions/dist_utils.py | 7 +------ st2api/dist_utils.py | 7 +------ st2auth/dist_utils.py | 7 +------ st2client/dist_utils.py | 7 +------ st2client/requirements.txt | 1 - st2common/dist_utils.py | 7 +------ st2reactor/dist_utils.py | 7 +------ st2stream/dist_utils.py | 7 +------ st2tests/dist_utils.py | 7 +------ 22 files changed, 21 insertions(+), 117 deletions(-) diff --git a/Makefile b/Makefile index d28f7c4d7a..5cb010f4a6 100644 --- a/Makefile +++ b/Makefile @@ -536,8 +536,9 @@ flake8: requirements .flake8 $(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install --upgrade "pip==$(PIP_VERSION)" $(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install --upgrade "setuptools==$(SETUPTOOLS_VERSION)" + $(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install -r requirements.txt - $(VIRTUALENV_ST2CLIENT_DIR)/bin/activate; cd st2client ; ../$(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install -e .; cd .. + $(VIRTUALENV_ST2CLIENT_DIR)/bin/activate; cd st2client ; ../$(VIRTUALENV_ST2CLIENT_DIR)/bin/python setup.py install ; cd .. $(VIRTUALENV_ST2CLIENT_DIR)/bin/st2 --version $(VIRTUALENV_ST2CLIENT_DIR)/bin/python -c "import st2client" diff --git a/contrib/runners/action_chain_runner/dist_utils.py b/contrib/runners/action_chain_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/action_chain_runner/dist_utils.py +++ b/contrib/runners/action_chain_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/announcement_runner/dist_utils.py b/contrib/runners/announcement_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/announcement_runner/dist_utils.py +++ b/contrib/runners/announcement_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/http_runner/dist_utils.py b/contrib/runners/http_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/http_runner/dist_utils.py +++ b/contrib/runners/http_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/inquirer_runner/dist_utils.py b/contrib/runners/inquirer_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/inquirer_runner/dist_utils.py +++ b/contrib/runners/inquirer_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/local_runner/dist_utils.py b/contrib/runners/local_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/local_runner/dist_utils.py +++ b/contrib/runners/local_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/noop_runner/dist_utils.py b/contrib/runners/noop_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/noop_runner/dist_utils.py +++ b/contrib/runners/noop_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/orquesta_runner/dist_utils.py b/contrib/runners/orquesta_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/orquesta_runner/dist_utils.py +++ b/contrib/runners/orquesta_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/python_runner/dist_utils.py b/contrib/runners/python_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/python_runner/dist_utils.py +++ b/contrib/runners/python_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/remote_runner/dist_utils.py b/contrib/runners/remote_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/remote_runner/dist_utils.py +++ b/contrib/runners/remote_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/winrm_runner/dist_utils.py b/contrib/runners/winrm_runner/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/contrib/runners/winrm_runner/dist_utils.py +++ b/contrib/runners/winrm_runner/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/requirements.txt b/requirements.txt index c8c9a7cf84..d2dd4bf19d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -39,7 +39,6 @@ orquesta@ git+https://github.com/StackStorm/orquesta.git@5ba1467614b2ef8b4709b2c oslo.config==9.6.0 oslo.utils==7.3.0 paramiko==3.5.1 -ply prettytable==3.10.2 prompt-toolkit==3.0.52 psutil==7.0.0 diff --git a/scripts/dist_utils.py b/scripts/dist_utils.py index d5014beb00..b9a0788892 100644 --- a/scripts/dist_utils.py +++ b/scripts/dist_utils.py @@ -40,12 +40,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2actions/dist_utils.py b/st2actions/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/st2actions/dist_utils.py +++ b/st2actions/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2api/dist_utils.py b/st2api/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/st2api/dist_utils.py +++ b/st2api/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2auth/dist_utils.py b/st2auth/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/st2auth/dist_utils.py +++ b/st2auth/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2client/dist_utils.py b/st2client/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/st2client/dist_utils.py +++ b/st2client/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2client/requirements.txt b/st2client/requirements.txt index d26aa25d22..9751f730c7 100644 --- a/st2client/requirements.txt +++ b/st2client/requirements.txt @@ -14,7 +14,6 @@ importlib-metadata==7.1.0 jsonpath-rw==1.4.0 jsonschema==3.2.0 orjson==3.10.15 -ply prettytable==3.10.2 prompt-toolkit==3.0.52 pyOpenSSL diff --git a/st2common/dist_utils.py b/st2common/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/st2common/dist_utils.py +++ b/st2common/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2reactor/dist_utils.py b/st2reactor/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/st2reactor/dist_utils.py +++ b/st2reactor/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2stream/dist_utils.py b/st2stream/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/st2stream/dist_utils.py +++ b/st2stream/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2tests/dist_utils.py b/st2tests/dist_utils.py index 6e4d75de43..3aa6e43ce8 100644 --- a/st2tests/dist_utils.py +++ b/st2tests/dist_utils.py @@ -36,12 +36,7 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -PY3 = sys.version_info[0] == 3 - -if PY3: - text_type = str -else: - text_type = unicode # noqa # pylint: disable=E0602 +text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" From 1aa8e1b1e3fe06e74dcbb54cbff91307837ce1e4 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Thu, 18 Sep 2025 09:19:04 -0400 Subject: [PATCH 06/26] remove 3.8 --- .github/workflows/ci.yaml | 9 +++------ .github/workflows/microbenchmarks.yaml | 1 - .github/workflows/orquesta-integration-tests.yaml | 1 - .github/workflows/test.yaml | 5 ----- 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 95ee9dce62..924caa7017 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -55,7 +55,6 @@ jobs: # NOTE: We need to use full Python version as part of Python deps cache key otherwise # setup virtualenv step will fail. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} @@ -117,7 +116,7 @@ jobs: fail-fast: false matrix: python: - - {version-short: '3.8', version: '3.8.18'} + - {version-short: '3.10', version: '3.10.16'} services: mongo: image: mongo:7.0 @@ -272,7 +271,6 @@ jobs: # NOTE: To speed the CI run, we split unit and integration tests into multiple jobs where # each job runs subset of tests. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} @@ -408,7 +406,7 @@ jobs: # NOTE: We only generate and submit coverage report for master and version branches and # only when the build succeeds (default on GitHub Actions, this was not the case on Travis # so we had to explicitly check success) - if: "${{ success() && (env.ENABLE_COVERAGE == 'yes') && (env.PYTHON_VERSION_SHORT == '3.8')}}" + if: "${{ success() && (env.ENABLE_COVERAGE == 'yes') && (env.PYTHON_VERSION_SHORT == '3.10')}}" run: | ./scripts/ci/submit-codecov-coverage.sh env: @@ -427,7 +425,6 @@ jobs: # NOTE: To speed-up the CI run, we split unit and integration tests into multiple jobs where # each job runs subset of tests. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} @@ -577,7 +574,7 @@ jobs: - name: Codecov # NOTE: We only generate and submit coverage report for master and version branches and only when the build succeeds (default on GitHub Actions, this was not the case on Travis so we had to explicitly check success) - if: "${{ success() && (env.ENABLE_COVERAGE == 'yes') && (env.TASK == 'ci-integration') && (env.PYTHON_VERSION_SHORT == '3.8')}}" + if: "${{ success() && (env.ENABLE_COVERAGE == 'yes') && (env.TASK == 'ci-integration') && (env.PYTHON_VERSION_SHORT == '3.10')}}" run: | ./scripts/ci/submit-codecov-coverage.sh env: diff --git a/.github/workflows/microbenchmarks.yaml b/.github/workflows/microbenchmarks.yaml index f03c9e06ca..4009c6e928 100644 --- a/.github/workflows/microbenchmarks.yaml +++ b/.github/workflows/microbenchmarks.yaml @@ -44,7 +44,6 @@ jobs: # NOTE: We need to use full Python version as part of Python deps cache key otherwise # setup virtualenv step will fail. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} diff --git a/.github/workflows/orquesta-integration-tests.yaml b/.github/workflows/orquesta-integration-tests.yaml index 185ff8d42f..599fd6f861 100644 --- a/.github/workflows/orquesta-integration-tests.yaml +++ b/.github/workflows/orquesta-integration-tests.yaml @@ -55,7 +55,6 @@ jobs: # NOTE: We need to use full Python version as part of Python deps cache key otherwise # setup virtualenv step will fail. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index bb3c40e7dd..aa50e8e825 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -128,7 +128,6 @@ jobs: # NOTE: We need to use full Python version as part of Python deps cache key otherwise # setup virtualenv step will fail. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} @@ -225,7 +224,6 @@ jobs: # NOTE: We need to use full Python version as part of Python deps cache key otherwise # setup virtualenv step will fail. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} @@ -314,7 +312,6 @@ jobs: # NOTE: We need to use full Python version as part of Python deps cache key otherwise # setup virtualenv step will fail. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} @@ -435,7 +432,6 @@ jobs: # NOTE: We need to use full Python version as part of Python deps cache key otherwise # setup virtualenv step will fail. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} @@ -555,7 +551,6 @@ jobs: # NOTE: We need to use full Python version as part of Python deps cache key otherwise # setup virtualenv step will fail. python: - - {version-short: '3.8', version: '3.8.18'} - {version-short: '3.9', version: '3.9.21'} - {version-short: '3.10', version: '3.10.16'} - {version-short: '3.11', version: '3.11.11'} From 562e6ac324da8f4e371baa15f6d641fde62fd246 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Thu, 18 Sep 2025 09:20:54 -0400 Subject: [PATCH 07/26] remove unused import --- scripts/dist_utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/dist_utils.py b/scripts/dist_utils.py index b9a0788892..2d5c6d7b47 100644 --- a/scripts/dist_utils.py +++ b/scripts/dist_utils.py @@ -18,7 +18,6 @@ import os import re -import sys # // NOTE: After you update this script, please run: # // From ce7702c7ce2fc77200052b980a45e6c1152a3b49 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Thu, 18 Sep 2025 09:56:10 -0400 Subject: [PATCH 08/26] update dist_utils remove py2 info --- contrib/runners/action_chain_runner/dist_utils.py | 2 -- contrib/runners/announcement_runner/dist_utils.py | 2 -- contrib/runners/http_runner/dist_utils.py | 2 -- contrib/runners/inquirer_runner/dist_utils.py | 2 -- contrib/runners/local_runner/dist_utils.py | 2 -- contrib/runners/noop_runner/dist_utils.py | 2 -- contrib/runners/orquesta_runner/dist_utils.py | 2 -- contrib/runners/python_runner/dist_utils.py | 2 -- contrib/runners/remote_runner/dist_utils.py | 2 -- contrib/runners/winrm_runner/dist_utils.py | 2 -- scripts/dist_utils.py | 1 - st2actions/dist_utils.py | 2 -- st2api/dist_utils.py | 2 -- st2auth/dist_utils.py | 2 -- st2client/dist_utils.py | 2 -- st2common/dist_utils.py | 2 -- st2reactor/dist_utils.py | 2 -- st2stream/dist_utils.py | 2 -- st2tests/dist_utils.py | 2 -- 19 files changed, 37 deletions(-) diff --git a/contrib/runners/action_chain_runner/dist_utils.py b/contrib/runners/action_chain_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/action_chain_runner/dist_utils.py +++ b/contrib/runners/action_chain_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/announcement_runner/dist_utils.py b/contrib/runners/announcement_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/announcement_runner/dist_utils.py +++ b/contrib/runners/announcement_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/http_runner/dist_utils.py b/contrib/runners/http_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/http_runner/dist_utils.py +++ b/contrib/runners/http_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/inquirer_runner/dist_utils.py b/contrib/runners/inquirer_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/inquirer_runner/dist_utils.py +++ b/contrib/runners/inquirer_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/local_runner/dist_utils.py b/contrib/runners/local_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/local_runner/dist_utils.py +++ b/contrib/runners/local_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/noop_runner/dist_utils.py b/contrib/runners/noop_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/noop_runner/dist_utils.py +++ b/contrib/runners/noop_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/orquesta_runner/dist_utils.py b/contrib/runners/orquesta_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/orquesta_runner/dist_utils.py +++ b/contrib/runners/orquesta_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/python_runner/dist_utils.py b/contrib/runners/python_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/python_runner/dist_utils.py +++ b/contrib/runners/python_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/remote_runner/dist_utils.py b/contrib/runners/remote_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/remote_runner/dist_utils.py +++ b/contrib/runners/remote_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/contrib/runners/winrm_runner/dist_utils.py b/contrib/runners/winrm_runner/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/contrib/runners/winrm_runner/dist_utils.py +++ b/contrib/runners/winrm_runner/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/scripts/dist_utils.py b/scripts/dist_utils.py index 2d5c6d7b47..090b0f8495 100644 --- a/scripts/dist_utils.py +++ b/scripts/dist_utils.py @@ -39,7 +39,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2actions/dist_utils.py b/st2actions/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/st2actions/dist_utils.py +++ b/st2actions/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2api/dist_utils.py b/st2api/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/st2api/dist_utils.py +++ b/st2api/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2auth/dist_utils.py b/st2auth/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/st2auth/dist_utils.py +++ b/st2auth/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2client/dist_utils.py b/st2client/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/st2client/dist_utils.py +++ b/st2client/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2common/dist_utils.py b/st2common/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/st2common/dist_utils.py +++ b/st2common/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2reactor/dist_utils.py b/st2reactor/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/st2reactor/dist_utils.py +++ b/st2reactor/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2stream/dist_utils.py b/st2stream/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/st2stream/dist_utils.py +++ b/st2stream/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" diff --git a/st2tests/dist_utils.py b/st2tests/dist_utils.py index 3aa6e43ce8..e7054ef982 100644 --- a/st2tests/dist_utils.py +++ b/st2tests/dist_utils.py @@ -22,7 +22,6 @@ import os import re -import sys # NOTE: This script can't rely on any 3rd party dependency so we need to use this code here # @@ -36,7 +35,6 @@ # for subpackages. # At the very least we can vendorize some of their code instead of reimplementing # each piece of their code every time our parsing breaks. -text_type = str GET_PIP = "curl https://bootstrap.pypa.io/get-pip.py | python" From 089d46c1df3405336c108283747600dc8773b7b6 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Thu, 18 Sep 2025 11:02:04 -0400 Subject: [PATCH 09/26] centralize rabbit client --- Makefile | 3 +- .../tests/integration/test_sensor_watcher.py | 37 +++++++++++++------ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 5cb010f4a6..84679bceda 100644 --- a/Makefile +++ b/Makefile @@ -536,9 +536,8 @@ flake8: requirements .flake8 $(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install --upgrade "pip==$(PIP_VERSION)" $(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install --upgrade "setuptools==$(SETUPTOOLS_VERSION)" - $(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install -r requirements.txt - $(VIRTUALENV_ST2CLIENT_DIR)/bin/activate; cd st2client ; ../$(VIRTUALENV_ST2CLIENT_DIR)/bin/python setup.py install ; cd .. + $(VIRTUALENV_ST2CLIENT_DIR)/bin/activate; cd st2client ; ../$(VIRTUALENV_ST2CLIENT_DIR)/bin/pip install . ; cd .. $(VIRTUALENV_ST2CLIENT_DIR)/bin/st2 --version $(VIRTUALENV_ST2CLIENT_DIR)/bin/python -c "import st2client" diff --git a/st2reactor/tests/integration/test_sensor_watcher.py b/st2reactor/tests/integration/test_sensor_watcher.py index a5e9a371fb..f21c6aafeb 100644 --- a/st2reactor/tests/integration/test_sensor_watcher.py +++ b/st2reactor/tests/integration/test_sensor_watcher.py @@ -35,11 +35,14 @@ def setUp(self): super().setUp() # pre-condition: Make sure there is no test pollution # Delete any leftover queues from previous failed test runs - self._delete_sensor_watcher_amqp_queues(queue_name="st2.sensor.watch.covfefe") + self.rabbit_client = self._get_client() + self._delete_sensor_watcher_amqp_queues( + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client + ) # Verify queues are deleted sw_queues = self._get_sensor_watcher_amqp_queues( - queue_name="st2.sensor.watch.covfefe" + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client ) self.assertTrue(len(sw_queues) == 0) @@ -58,7 +61,7 @@ def delete_handler(sensor_db): ) sensor_watcher.start() sw_queues = self._get_sensor_watcher_amqp_queues( - queue_name="st2.sensor.watch.covfefe" + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client ) start = monotonic() @@ -66,41 +69,51 @@ def delete_handler(sensor_db): while not done: concurrency.sleep(0.01) sw_queues = self._get_sensor_watcher_amqp_queues( - queue_name="st2.sensor.watch.covfefe" + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client ) done = len(sw_queues) > 0 or ((monotonic() - start) < 5) sensor_watcher.stop() sw_queues = self._get_sensor_watcher_amqp_queues( - queue_name="st2.sensor.watch.covfefe" + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client ) self.assertTrue(len(sw_queues) == 0) - @staticmethod - def _list_amqp_queues(): + def _get_client(self): rabbit_client = Client("localhost:15672", "guest", "guest") + return rabbit_client + + def _list_amqp_queues(self, rabbit_client): + """ + :param rabbit_client: Client + """ queues = [q["name"] for q in rabbit_client.get_queues()] return queues - def _get_sensor_watcher_amqp_queues(self, queue_name): - all_queues = self._list_amqp_queues() + def _get_sensor_watcher_amqp_queues(self, queue_name, rabbit_client): + """ + :param rabbit_client: Client + """ + all_queues = self._list_amqp_queues(rabbit_client) return set([q_name for q_name in all_queues if queue_name in q_name]) - def _delete_sensor_watcher_amqp_queues(self, queue_name): + def _delete_sensor_watcher_amqp_queues(self, queue_name, rabbit_client): """ Delete all queues containing the specified queue_name pattern. :param string queue_name: Pattern to match in queue names + :param rabbit_client: Client :returns: None """ # Get all queues matching the pattern - queues_to_delete = self._get_sensor_watcher_amqp_queues(queue_name=queue_name) + queues_to_delete = self._get_sensor_watcher_amqp_queues( + queue_name=queue_name, rabbit_client=rabbit_client + ) if not queues_to_delete: return # Create a rabbit client and delete each queue - rabbit_client = Client("localhost:15672", "guest", "guest") for queue in queues_to_delete: # Use default vhost "/" rabbit_client.delete_queue("/", queue) From 112a2535cfaf5b66800406fc547f7657a1d6882a Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Fri, 19 Sep 2025 18:43:28 -0400 Subject: [PATCH 10/26] fix hash for rbac --- lockfiles/st2.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lockfiles/st2.lock b/lockfiles/st2.lock index e506db1705..833a837d9e 100644 --- a/lockfiles/st2.lock +++ b/lockfiles/st2.lock @@ -5694,7 +5694,7 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "d34d5cbb539182553ec8b35a0763decb6b66bd37aa51f3a61db1eb30449f6f10", + "hash": "f445faec6e5f55437f379be08dd78aa2f1181ed9dbd04fe19bddfb6f4c2fe911", "url": "git+https://github.com/StackStorm/st2-rbac-backend.git@master" } ], From c07bcf4cb960c7d5cc9c42a5a24d2b9abcb5a007 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Fri, 19 Sep 2025 19:11:33 -0400 Subject: [PATCH 11/26] bump cryptography --- fixed-requirements.txt | 2 +- requirements.txt | 2 +- st2client/requirements.txt | 2 +- st2common/requirements.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fixed-requirements.txt b/fixed-requirements.txt index 411a0508a1..bdb4124efa 100644 --- a/fixed-requirements.txt +++ b/fixed-requirements.txt @@ -10,7 +10,7 @@ amqp==5.3.1 apscheduler==3.11.0 chardet==5.2.0 cffi==1.17.1 -cryptography==43.0.3 +cryptography==45.0.7 eventlet==0.39.1 flex==6.14.1 # Note: installs gitpython==3.1.37 (security fixed) under py3.8 and gitpython==3.1.18 (latest available, vulnerable) under py3.6 diff --git a/requirements.txt b/requirements.txt index d2dd4bf19d..e3f12d2b7a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,7 +14,7 @@ bcrypt==4.3.0 cffi==1.17.1 chardet==5.2.0 ciso8601 -cryptography==43.0.3 +cryptography==45.0.7 decorator==5.2.1 dnspython editor==1.6.6 diff --git a/st2client/requirements.txt b/st2client/requirements.txt index 9751f730c7..5c351b3a78 100644 --- a/st2client/requirements.txt +++ b/st2client/requirements.txt @@ -8,7 +8,7 @@ argcomplete==3.6.2 cffi==1.17.1 chardet==5.2.0 -cryptography==43.0.3 +cryptography==45.0.7 editor==1.6.6 importlib-metadata==7.1.0 jsonpath-rw==1.4.0 diff --git a/st2common/requirements.txt b/st2common/requirements.txt index 7c2e0901e7..aa3bb14761 100644 --- a/st2common/requirements.txt +++ b/st2common/requirements.txt @@ -11,7 +11,7 @@ backports.zoneinfo[tzdata]; python_version<"3.9" cffi==1.17.1 chardet==5.2.0 ciso8601 -cryptography==43.0.3 +cryptography==45.0.7 decorator==5.2.1 dnspython eventlet==0.39.1 From 94fffc21443f6fee474b21064fcd6e78f9d555bc Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Fri, 19 Sep 2025 19:26:19 -0400 Subject: [PATCH 12/26] update changelog --- CHANGELOG.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index bfc3a1f2b3..819b6808b0 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -33,6 +33,7 @@ Fixed * Fix Popen.pid typo in st2tests. #6184 * Bump tooz package to `6.2.0` to fix TLS. #6220 (@jk464) * Shells via `pywinrm` are initialized with the 65001 codepage to ensure raw string responses are UTF-8. #6034 (@stealthii) +* Fix integration test required clean rabbit queue (@guzzijones12) Changed ~~~~~~~ From 685c44d77c87465cf30fb6fcc6d910773f3545eb Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Fri, 19 Sep 2025 19:47:33 -0400 Subject: [PATCH 13/26] oslo --- requirements.txt | 1 + st2common/in-requirements.txt | 1 + st2common/requirements.txt | 1 + 3 files changed, 3 insertions(+) diff --git a/requirements.txt b/requirements.txt index e3f12d2b7a..e68badbb7a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -37,6 +37,7 @@ networkx==3.1 orjson==3.10.15 orquesta@ git+https://github.com/StackStorm/orquesta.git@5ba1467614b2ef8b4709b2ca89e68baa671e8975 oslo.config==9.6.0 +oslo.serialization oslo.utils==7.3.0 paramiko==3.5.1 prettytable==3.10.2 diff --git a/st2common/in-requirements.txt b/st2common/in-requirements.txt index fecae64141..54c69af4aa 100644 --- a/st2common/in-requirements.txt +++ b/st2common/in-requirements.txt @@ -15,6 +15,7 @@ decorator orquesta@ git+https://github.com/StackStorm/orquesta.git@5ba1467614b2ef8b4709b2ca89e68baa671e8975 st2-rbac-backend@ git+https://github.com/StackStorm/st2-rbac-backend.git@master oslo.config +oslo.serialization paramiko pyyaml pymongo diff --git a/st2common/requirements.txt b/st2common/requirements.txt index aa3bb14761..f08122eb5d 100644 --- a/st2common/requirements.txt +++ b/st2common/requirements.txt @@ -29,6 +29,7 @@ networkx==3.1 orjson==3.10.15 orquesta@ git+https://github.com/StackStorm/orquesta.git@5ba1467614b2ef8b4709b2ca89e68baa671e8975 oslo.config==9.6.0 +oslo.serialization paramiko==3.5.1 pyOpenSSL pymongo==4.6.3 From 4cc1cdd0cabd7bd3b97802086c44a81f25c4f3fb Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 09:27:39 -0400 Subject: [PATCH 14/26] update setuptools and pip --- Makefile | 4 ++-- contrib/runners/orquesta_runner/requirements.txt | 2 +- fixed-requirements.txt | 1 - requirements.txt | 3 +-- st2actions/requirements.txt | 2 +- st2common/in-requirements.txt | 1 - st2common/requirements.txt | 1 - 7 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 84679bceda..99ef547d30 100644 --- a/Makefile +++ b/Makefile @@ -59,8 +59,8 @@ ST2TESTS_REDIS_PORT := 6379 # Pin common pip version here across all the targets # Note! Periodic maintenance pip upgrades are required to be up-to-date with the latest pip security fixes and updates -PIP_VERSION ?= 25.0.1 -SETUPTOOLS_VERSION ?= 75.3.2 +PIP_VERSION ?= 25.2.0 +SETUPTOOLS_VERSION ?= 80.9.0 PIP_OPTIONS := $(ST2_PIP_OPTIONS) ifndef PYLINT_CONCURRENCY diff --git a/contrib/runners/orquesta_runner/requirements.txt b/contrib/runners/orquesta_runner/requirements.txt index a93eba892d..388784dee0 100644 --- a/contrib/runners/orquesta_runner/requirements.txt +++ b/contrib/runners/orquesta_runner/requirements.txt @@ -6,4 +6,4 @@ # in-requirements.txt for that component and then run 'make requirements' to # update the component requirements.txt orquesta@ git+https://github.com/StackStorm/orquesta.git@5ba1467614b2ef8b4709b2ca89e68baa671e8975 -setuptools<78 +setuptools diff --git a/fixed-requirements.txt b/fixed-requirements.txt index bdb4124efa..3dbf8b7bf4 100644 --- a/fixed-requirements.txt +++ b/fixed-requirements.txt @@ -74,7 +74,6 @@ tooz==6.3.0 virtualenv==20.34.0 # This setuptools version number is in the Makefile, but CircleCI builds are pulling a version # that is incompatible with our logshipper fork. -setuptools<78 webob==1.8.9 webtest==3.0.1 zake==0.2.2 diff --git a/requirements.txt b/requirements.txt index e68badbb7a..2213b18914 100644 --- a/requirements.txt +++ b/requirements.txt @@ -37,7 +37,6 @@ networkx==3.1 orjson==3.10.15 orquesta@ git+https://github.com/StackStorm/orquesta.git@5ba1467614b2ef8b4709b2ca89e68baa671e8975 oslo.config==9.6.0 -oslo.serialization oslo.utils==7.3.0 paramiko==3.5.1 prettytable==3.10.2 @@ -62,7 +61,7 @@ requests==2.32.4 retrying==1.4.2 routes==2.5.1 semver==3.0.4 -setuptools<78 +setuptools simplejson six==1.17.0 sseclient-py==1.8.0 diff --git a/st2actions/requirements.txt b/st2actions/requirements.txt index 07e1665435..0a6be0cac1 100644 --- a/st2actions/requirements.txt +++ b/st2actions/requirements.txt @@ -22,6 +22,6 @@ python-dateutil==2.9.0.post0 python-json-logger pyyaml==6.0.2 requests==2.32.4 -setuptools<78 +setuptools six==1.17.0 urllib3==2.2.3 diff --git a/st2common/in-requirements.txt b/st2common/in-requirements.txt index 54c69af4aa..fecae64141 100644 --- a/st2common/in-requirements.txt +++ b/st2common/in-requirements.txt @@ -15,7 +15,6 @@ decorator orquesta@ git+https://github.com/StackStorm/orquesta.git@5ba1467614b2ef8b4709b2ca89e68baa671e8975 st2-rbac-backend@ git+https://github.com/StackStorm/st2-rbac-backend.git@master oslo.config -oslo.serialization paramiko pyyaml pymongo diff --git a/st2common/requirements.txt b/st2common/requirements.txt index f08122eb5d..aa3bb14761 100644 --- a/st2common/requirements.txt +++ b/st2common/requirements.txt @@ -29,7 +29,6 @@ networkx==3.1 orjson==3.10.15 orquesta@ git+https://github.com/StackStorm/orquesta.git@5ba1467614b2ef8b4709b2ca89e68baa671e8975 oslo.config==9.6.0 -oslo.serialization paramiko==3.5.1 pyOpenSSL pymongo==4.6.3 From 6a64c173bf069e4e49b6526e1a46c6cc6710a7ec Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 09:40:34 -0400 Subject: [PATCH 15/26] py-modules --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 4afc22331c..856c2dc88e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,3 +16,6 @@ exclude = ''' [tool.pytest.ini_options] minversion = "6.0" addopts = "-l" + +[tool.setuptools] +py-modules = [] \ No newline at end of file From 00c308d32add86cc71f79bb0c56be644b6eb3996 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 10:17:12 -0400 Subject: [PATCH 16/26] add pyproject.toml to st2client --- pyproject.toml | 2 +- scripts/github/prepare-integration.sh | 2 +- st2client/pyproject.toml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 st2client/pyproject.toml diff --git a/pyproject.toml b/pyproject.toml index 856c2dc88e..0a70f8eab6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,4 +18,4 @@ minversion = "6.0" addopts = "-l" [tool.setuptools] -py-modules = [] \ No newline at end of file +py-modules = [] diff --git a/scripts/github/prepare-integration.sh b/scripts/github/prepare-integration.sh index 0db023ff07..90825a809f 100755 --- a/scripts/github/prepare-integration.sh +++ b/scripts/github/prepare-integration.sh @@ -27,7 +27,7 @@ echo "" # install st2 client if [ ! -x "${VIRTUALENV_DIR}/bin/st2" ] || ! st2 --version >/dev/null 2>&1; then - python ./st2client/setup.py develop + pip install -e ./st2client/ fi st2 --version diff --git a/st2client/pyproject.toml b/st2client/pyproject.toml new file mode 100644 index 0000000000..8fe2f47af9 --- /dev/null +++ b/st2client/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools>=42", "wheel"] +build-backend = "setuptools.build_meta" From 414ffc20e4afab27993069f1b1ff146c0f524889 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 11:13:05 -0400 Subject: [PATCH 17/26] cur path for setuptools to detect dist_utils.py --- st2client/pyproject.toml | 2 +- st2client/setup.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/st2client/pyproject.toml b/st2client/pyproject.toml index 8fe2f47af9..1b68d94ecd 100644 --- a/st2client/pyproject.toml +++ b/st2client/pyproject.toml @@ -1,3 +1,3 @@ [build-system] requires = ["setuptools>=42", "wheel"] -build-backend = "setuptools.build_meta" +build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/st2client/setup.py b/st2client/setup.py index 1fe8ec1af3..49f9e9e966 100644 --- a/st2client/setup.py +++ b/st2client/setup.py @@ -15,6 +15,10 @@ # limitations under the License. import os.path +import sys + +# Add the current directory to the module search path +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from setuptools import setup, find_packages From 228a85015a153c3c2cd3c46092a999e5aac416b2 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 11:34:25 -0400 Subject: [PATCH 18/26] update st2client license --- st2client/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/st2client/setup.py b/st2client/setup.py index 49f9e9e966..ae4d236ed0 100644 --- a/st2client/setup.py +++ b/st2client/setup.py @@ -50,12 +50,12 @@ author="StackStorm", author_email="info@stackstorm.com", url="https://stackstorm.com/", + license="Apache-2.0", classifiers=[ "Development Status :: 5 - Production/Stable", "Intended Audience :: Information Technology", "Intended Audience :: Developers", "Intended Audience :: System Administrators", - "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", From e0eae17c795d88b5409505d89f84f550b869bce5 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 11:54:38 -0400 Subject: [PATCH 19/26] pip install instead of setup.py devel --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 924caa7017..501f9a0692 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -235,7 +235,7 @@ jobs: run: | cd ./st2client pip3 install --upgrade pip - python3 setup.py develop + pip install -e . - name: Run self-verification script env: From 212f4983ea060f0b56a84b1682dc8d0494ff6012 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 12:18:52 -0400 Subject: [PATCH 20/26] remove st2client.egg-info --- .github/workflows/ci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 501f9a0692..8dee5bf97e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -234,6 +234,7 @@ jobs: timeout-minutes: 5 run: | cd ./st2client + rm -rf st2client.egg-info pip3 install --upgrade pip pip install -e . From 1b47c2ba7bfa3d811e308d79dfefb78bc6a8dd37 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 12:33:21 -0400 Subject: [PATCH 21/26] use pip3 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8dee5bf97e..e4db3d0d1b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -236,7 +236,7 @@ jobs: cd ./st2client rm -rf st2client.egg-info pip3 install --upgrade pip - pip install -e . + pip3 install -e . - name: Run self-verification script env: From 4e251ddb854ca1e87098e734e8db8c6c2b4570c5 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 12:35:49 -0400 Subject: [PATCH 22/26] st2client already installed --- .github/workflows/ci.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e4db3d0d1b..723f21b6fa 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -230,14 +230,6 @@ jobs: ln -s ${GITHUB_WORKSPACE}/virtualenv/bin/st2 /usr/local/bin/st2 ln -s ${GITHUB_WORKSPACE}/st2common/bin/st2-run-pack-tests /usr/local/bin/st2-run-pack-tests - - name: Install st2client - timeout-minutes: 5 - run: | - cd ./st2client - rm -rf st2client.egg-info - pip3 install --upgrade pip - pip3 install -e . - - name: Run self-verification script env: ST2_CONF: /home/runner/work/st2/st2/conf/st2.ci.conf From 95e2aec6e5e6731406d774d9e21382f9283f6ab7 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 12:45:35 -0400 Subject: [PATCH 23/26] pip 25.0.1 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 99ef547d30..8af1778ad9 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ ST2TESTS_REDIS_PORT := 6379 # Pin common pip version here across all the targets # Note! Periodic maintenance pip upgrades are required to be up-to-date with the latest pip security fixes and updates -PIP_VERSION ?= 25.2.0 +PIP_VERSION ?= 25.0.1 SETUPTOOLS_VERSION ?= 80.9.0 PIP_OPTIONS := $(ST2_PIP_OPTIONS) From ac25112589198ded0f82f7220d58c06e4524b4f7 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 13:52:22 -0400 Subject: [PATCH 24/26] update changelog --- CHANGELOG.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 819b6808b0..0a90bfe4cf 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -33,7 +33,7 @@ Fixed * Fix Popen.pid typo in st2tests. #6184 * Bump tooz package to `6.2.0` to fix TLS. #6220 (@jk464) * Shells via `pywinrm` are initialized with the 65001 codepage to ensure raw string responses are UTF-8. #6034 (@stealthii) -* Fix integration test required clean rabbit queue (@guzzijones12) +* Fix integration test required clean rabbit queue; bump pip, pyproject.toml fixes; bump setuptool; remove unneeded PY3 checks (@guzzijones12) Changed ~~~~~~~ From 0699098573e79358e1235b2c082977f9d8dd9420 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Mon, 22 Sep 2025 15:57:12 -0400 Subject: [PATCH 25/26] test_wiring is faster now --- st2tests/integration/orquesta/test_wiring_cancel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/st2tests/integration/orquesta/test_wiring_cancel.py b/st2tests/integration/orquesta/test_wiring_cancel.py index 0e4edaf918..99b7fd15a6 100644 --- a/st2tests/integration/orquesta/test_wiring_cancel.py +++ b/st2tests/integration/orquesta/test_wiring_cancel.py @@ -139,7 +139,7 @@ def test_cancellation_cascade_up_from_subworkflow(self): subwf_ex = self._wait_for_state(subwf_ex, ac_const.LIVEACTION_STATUS_CANCELING) # Assert main workflow is canceling. - ex = self._wait_for_state(ex, ac_const.LIVEACTION_STATUS_CANCELING) + ex = self._wait_for_state(ex, ac_const.LIVEACTION_STATUS_CANCELED) # Delete the temporary file. os.remove(path) From b7fe29d4edbbb5833eef9604118683ace29c4134 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Tue, 23 Sep 2025 09:22:04 -0400 Subject: [PATCH 26/26] st2client classifiers --- st2client/setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/st2client/setup.py b/st2client/setup.py index ae4d236ed0..f2ff985744 100644 --- a/st2client/setup.py +++ b/st2client/setup.py @@ -59,7 +59,9 @@ "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", ], install_requires=install_reqs, dependency_links=dep_links,