From a8ee4dc8e55fdc9948b0c1fa2c415a89534430e7 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 30 Jun 2017 10:36:36 +0200 Subject: [PATCH 01/13] Upgrade various dependencies to latest stable versions. --- fixed-requirements.txt | 49 +++++++++++++++++++++--------------------- requirements.txt | 46 +++++++++++++++++++-------------------- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/fixed-requirements.txt b/fixed-requirements.txt index 20050da893..bf78d1bbd9 100644 --- a/fixed-requirements.txt +++ b/fixed-requirements.txt @@ -1,40 +1,41 @@ # Packages versions fixed for the whole st2 stack # Note: greenlet is used by eventlet greenlet>=0.4.10,<0.5 -eventlet>=0.18.4,<0.19 +# Note: Eventlet 0.20.0 removes select.poll() which we rely on +eventlet==0.19.0 gunicorn==19.6.0 -kombu==3.0.37 +kombu==4.0.2 # Note: amqp is used by kombu -amqp==1.4.9 +amqp==2.1.4 oslo.config>=1.12.1,<1.13 oslo.utils<3.1.0 six==1.10.0 pyyaml>=3.12,<4.0 -requests[security]>=2.14.1,<2.15 +requests[security]>=2.18.1,<2.19 apscheduler==3.3.1 -gitpython==2.1.3 -jsonschema>=2.5.0,<2.6 -mongoengine==0.11.0 +gitpython==2.1.5 +jsonschema==2.6.0 +mongoengine==0.13.0 pymongo==3.4.0 -passlib==1.6.5 -lockfile>=0.10.2,<0.11 -python-gnupg==0.3.9 -jsonpath-rw>=1.3.0 -pyinotify>=0.9.5,<=0.10 -semver==2.7.2 -stevedore>=1.7.0,<1.8 +passlib==1.7.1 +lockfile==0.12.2 +python-gnupg==0.4.0 +jsonpath-rw==1.4.0 +pyinotify==0.9.6 +semver==2.7.7 +stevedore==1.23.0 paramiko>=2.1.2,<2.2 -networkx==1.10 +networkx==1.11 python-keyczar==0.716 -retrying>=1.3,<1.4 +retrying==1.3.3 # Note: We use latest version of virtualenv which uses pip 9.0 virtualenv==15.1.0 -sseclient==0.0.12 -python-editor==1.0.1 -prompt-toolkit==1.0.7 -tooz>=1.55.0,<1.56.0 +sseclient==0.0.18 +python-editor==1.0.3 +prompt-toolkit==1.0.14 +tooz==1.57.2 zake==0.2.2 -routes==2.3.1 -flex==6.5.0 -webob==1.6.0 -prance==0.5.1 +routes==2.4.1 +flex==6.10.0 +webob==1.7.2 +prance==0.6.1 diff --git a/requirements.txt b/requirements.txt index e27206d428..883be3d23b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,50 +2,50 @@ apscheduler==3.3.1 argcomplete bcrypt -eventlet<0.19,>=0.18.4 -flex==6.5.0 +eventlet==0.19.0 +flex==6.10.0 git+https://github.com/Kami/entrypoints.git@dont_use_backports#egg=entrypoints git+https://github.com/Kami/logshipper.git@stackstorm_patched#egg=logshipper git+https://github.com/StackStorm/python-mistralclient.git#egg=python-mistralclient git+https://github.com/StackStorm/st2-auth-backend-flat-file.git@master#egg=st2-auth-backend-flat-file -gitpython==2.1.3 +gitpython==2.1.5 gunicorn==19.6.0 ipaddr jinja2 -jsonpath-rw>=1.3.0 -jsonschema<2.6,>=2.5.0 -kombu==3.0.37 -lockfile<0.11,>=0.10.2 +jsonpath-rw==1.4.0 +jsonschema==2.6.0 +kombu==4.0.2 +lockfile==0.12.2 mock -mongoengine==0.11.0 -networkx==1.10 +mongoengine==0.13.0 +networkx==1.11 nose oslo.config<1.13,>=1.12.1 oslo.utils<3.1.0 paramiko<2.2,>=2.1.2 -passlib==1.6.5 -prance==0.5.1 +passlib==1.7.1 +prance==0.6.1 prettytable -prompt-toolkit==1.0.7 +prompt-toolkit==1.0.14 psutil -pyinotify<=0.10,>=0.9.5 +pyinotify==0.9.6 pymongo==3.4.0 python-dateutil -python-editor==1.0.1 -python-gnupg==0.3.9 +python-editor==1.0.3 +python-gnupg==0.4.0 python-json-logger python-keyczar==0.716 pytz pyyaml<4.0,>=3.12 rednose -requests[security]<2.15,>=2.14.1 -retrying<1.4,>=1.3 -routes==2.3.1 -semver==2.7.2 +requests[security]<2.19,>=2.18.1 +retrying==1.3.3 +routes==2.4.1 +semver==2.7.7 six==1.10.0 -sseclient==0.0.12 -stevedore<1.8,>=1.7.0 -tooz<1.56.0,>=1.55.0 +sseclient==0.0.18 +stevedore==1.23.0 +tooz==1.57.2 unittest2 -webob==1.6.0 +webob==1.7.2 zake==0.2.2 From e313b316d33fa3674e492a0a8f6e26d0ad9099ea Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 30 Jun 2017 10:56:49 +0200 Subject: [PATCH 02/13] Update affected code so it works with the latest version of jsonschema. --- st2common/st2common/bootstrap/actionsregistrar.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/st2common/st2common/bootstrap/actionsregistrar.py b/st2common/st2common/bootstrap/actionsregistrar.py index 16d9d56376..d39cef128a 100644 --- a/st2common/st2common/bootstrap/actionsregistrar.py +++ b/st2common/st2common/bootstrap/actionsregistrar.py @@ -133,11 +133,16 @@ def _register_action(self, pack, action): # We throw a more user-friendly exception on invalid parameter name msg = str(e) - is_invalid_parameter_name = 'Additional properties are not allowed' in msg - is_invalid_parameter_name &= 'in schema[\'properties\'][\'parameters\']' in msg + is_invalid_parameter_name = 'does not match any of the regexes: ' in msg if is_invalid_parameter_name: - parameter_name = re.search('\'(.+?)\' was unexpected', msg).groups()[0] + match = re.search('\'(.+?)\' does not match any of the regexes', msg) + + if match: + parameter_name = match.groups()[0] + else: + parameter_name = 'unknown' + new_msg = ('Parameter name "%s" is invalid. Valid characters for parameter name ' 'are [a-zA-Z0-0_].' % (parameter_name)) new_msg += '\n\n' + msg From 64a134e469b7f5e52f01f3cdc8f9481f69bb738b Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 30 Jun 2017 11:39:19 +0200 Subject: [PATCH 03/13] Update affected code. --- st2client/st2client/base.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/st2client/st2client/base.py b/st2client/st2client/base.py index 0ec895ae33..faa4842702 100644 --- a/st2client/st2client/base.py +++ b/st2client/st2client/base.py @@ -22,6 +22,9 @@ import six import requests +import urllib3 + +from urllib3.exceptions import InsecureRequestWarning from st2client import models from st2client.config_parser import CLIConfigParser @@ -98,7 +101,9 @@ def get_client(self, args, debug=False): # Silence SSL warnings silence_ssl_warnings = rc_config.get('general', {}).get('silence_ssl_warnings', False) if silence_ssl_warnings: - requests.packages.urllib3.disable_warnings() + # pylint: disable=no-member + urllib3.disable_warnings(InsecureRequestWarning) + requests.packages.urllib3.disable_warnings(InsecureRequestWarning) # We skip automatic authentication for some commands such as auth try: From 581619faa8378481b7e2423d86a14ec12e4fa56b Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 30 Jun 2017 11:56:57 +0200 Subject: [PATCH 04/13] Also upgrade eventlet. --- fixed-requirements.txt | 3 +-- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/fixed-requirements.txt b/fixed-requirements.txt index bf78d1bbd9..ca82117188 100644 --- a/fixed-requirements.txt +++ b/fixed-requirements.txt @@ -1,8 +1,7 @@ # Packages versions fixed for the whole st2 stack # Note: greenlet is used by eventlet greenlet>=0.4.10,<0.5 -# Note: Eventlet 0.20.0 removes select.poll() which we rely on -eventlet==0.19.0 +eventlet==0.21.0 gunicorn==19.6.0 kombu==4.0.2 # Note: amqp is used by kombu diff --git a/requirements.txt b/requirements.txt index 883be3d23b..cc26568900 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ apscheduler==3.3.1 argcomplete bcrypt -eventlet==0.19.0 +eventlet==0.21.0 flex==6.10.0 git+https://github.com/Kami/entrypoints.git@dont_use_backports#egg=entrypoints git+https://github.com/Kami/logshipper.git@stackstorm_patched#egg=logshipper From 1ed102f2549be7e1099f8196ce24b6761037d01a Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 30 Jun 2017 11:57:05 +0200 Subject: [PATCH 05/13] Update affected code so it works with latest version of eventlet. --- st2common/st2common/util/shell.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/st2common/st2common/util/shell.py b/st2common/st2common/util/shell.py index e8d64f0c8e..80e144509e 100644 --- a/st2common/st2common/util/shell.py +++ b/st2common/st2common/util/shell.py @@ -16,11 +16,13 @@ import os import shlex import signal -import subprocess from subprocess import list2cmdline from ctypes import cdll import six +# NOTE: eventlet 0.19.0 removed support for sellect.poll() so we not only provide green version of +# subprocess functionality and run_command +from eventlet.green import subprocess from st2common import log as logging From e5ca3f69c926d517156c757e8e9aeec33b0c4682 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 30 Jun 2017 13:36:09 +0200 Subject: [PATCH 06/13] Also upgrade paramiko. --- fixed-requirements.txt | 2 +- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fixed-requirements.txt b/fixed-requirements.txt index ca82117188..5c0b4483eb 100644 --- a/fixed-requirements.txt +++ b/fixed-requirements.txt @@ -23,7 +23,7 @@ jsonpath-rw==1.4.0 pyinotify==0.9.6 semver==2.7.7 stevedore==1.23.0 -paramiko>=2.1.2,<2.2 +paramiko==2.2.1 networkx==1.11 python-keyczar==0.716 retrying==1.3.3 diff --git a/requirements.txt b/requirements.txt index cc26568900..bb40cbb69c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -22,7 +22,7 @@ networkx==1.11 nose oslo.config<1.13,>=1.12.1 oslo.utils<3.1.0 -paramiko<2.2,>=2.1.2 +paramiko==2.2.1 passlib==1.7.1 prance==0.6.1 prettytable From 1ec43d294e6770e56ec8f9990c805cb9dffe98c5 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 30 Jun 2017 15:23:13 +0200 Subject: [PATCH 07/13] Revert eventlet change, the removal of select.poll() breaks gitpython tests. --- fixed-requirements.txt | 4 +++- requirements.txt | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fixed-requirements.txt b/fixed-requirements.txt index 5c0b4483eb..07f08709dd 100644 --- a/fixed-requirements.txt +++ b/fixed-requirements.txt @@ -1,7 +1,9 @@ # Packages versions fixed for the whole st2 stack # Note: greenlet is used by eventlet greenlet>=0.4.10,<0.5 -eventlet==0.21.0 +# Note: 0.20.0 removed select.poll() on which some of our code and libraries we +# depend on rely +eventlet==0.19.0 gunicorn==19.6.0 kombu==4.0.2 # Note: amqp is used by kombu diff --git a/requirements.txt b/requirements.txt index bb40cbb69c..55cda26a69 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ apscheduler==3.3.1 argcomplete bcrypt -eventlet==0.21.0 +eventlet==0.19.0 flex==6.10.0 git+https://github.com/Kami/entrypoints.git@dont_use_backports#egg=entrypoints git+https://github.com/Kami/logshipper.git@stackstorm_patched#egg=logshipper From e21ae0498cfbf10a48363f7cf1329f599f917d56 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 30 Jun 2017 16:35:03 +0200 Subject: [PATCH 08/13] Also upgrade gunicorn and greenlet. --- fixed-requirements.txt | 4 ++-- requirements.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fixed-requirements.txt b/fixed-requirements.txt index 07f08709dd..99705f7090 100644 --- a/fixed-requirements.txt +++ b/fixed-requirements.txt @@ -1,10 +1,10 @@ # Packages versions fixed for the whole st2 stack # Note: greenlet is used by eventlet -greenlet>=0.4.10,<0.5 +greenlet==0.4.12 # Note: 0.20.0 removed select.poll() on which some of our code and libraries we # depend on rely eventlet==0.19.0 -gunicorn==19.6.0 +gunicorn==19.7.1 kombu==4.0.2 # Note: amqp is used by kombu amqp==2.1.4 diff --git a/requirements.txt b/requirements.txt index 55cda26a69..5ce91827cd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ git+https://github.com/Kami/logshipper.git@stackstorm_patched#egg=logshipper git+https://github.com/StackStorm/python-mistralclient.git#egg=python-mistralclient git+https://github.com/StackStorm/st2-auth-backend-flat-file.git@master#egg=st2-auth-backend-flat-file gitpython==2.1.5 -gunicorn==19.6.0 +gunicorn==19.7.1 ipaddr jinja2 jsonpath-rw==1.4.0 From 60a9dde458ed472799df0205098312ba0196e948 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 30 Jun 2017 17:50:21 +0200 Subject: [PATCH 09/13] Also register internal trigger types in bootstrap phase of st2-register-content script. This should resolve the weird race issue @arma spotted on Ubuntu 16.04. --- st2common/st2common/content/bootstrap.py | 3 ++- st2common/st2common/script_setup.py | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/st2common/st2common/content/bootstrap.py b/st2common/st2common/content/bootstrap.py index 0160648e09..1221590a63 100644 --- a/st2common/st2common/content/bootstrap.py +++ b/st2common/st2common/content/bootstrap.py @@ -375,7 +375,8 @@ def register_content(): def setup(argv): - common_setup(config=config, setup_db=True, register_mq_exchanges=True) + common_setup(config=config, setup_db=True, register_mq_exchanges=True, + register_internal_trigger_types=True) def teardown(): diff --git a/st2common/st2common/script_setup.py b/st2common/st2common/script_setup.py index 1e540158e7..c192578fb0 100644 --- a/st2common/st2common/script_setup.py +++ b/st2common/st2common/script_setup.py @@ -29,6 +29,7 @@ from st2common import log as logging from st2common.database_setup import db_setup from st2common.database_setup import db_teardown +from st2common import triggers from st2common.logging.filters import LogLevelFilter from st2common.transport.bootstrap_utils import register_exchanges_with_retry @@ -50,7 +51,8 @@ def register_common_cli_options(): cfg.CONF.register_cli_opt(cfg.BoolOpt('verbose', short='v', default=False)) -def setup(config, setup_db=True, register_mq_exchanges=True): +def setup(config, setup_db=True, register_mq_exchanges=True, + register_internal_trigger_types=False): """ Common setup function. @@ -91,6 +93,9 @@ def setup(config, setup_db=True, register_mq_exchanges=True): if register_mq_exchanges: register_exchanges_with_retry() + if register_internal_trigger_types: + triggers.register_internal_trigger_types() + def teardown(): """ From a19c35ee98a57e2a7bdd432d953ce27786bb4d03 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Wed, 19 Jul 2017 16:33:49 +0200 Subject: [PATCH 10/13] Update more dependencies. --- fixed-requirements.txt | 10 +++++----- requirements.txt | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/fixed-requirements.txt b/fixed-requirements.txt index 99705f7090..d8e3f1ffd2 100644 --- a/fixed-requirements.txt +++ b/fixed-requirements.txt @@ -7,7 +7,7 @@ eventlet==0.19.0 gunicorn==19.7.1 kombu==4.0.2 # Note: amqp is used by kombu -amqp==2.1.4 +amqp==2.2.1 oslo.config>=1.12.1,<1.13 oslo.utils<3.1.0 six==1.10.0 @@ -20,11 +20,11 @@ mongoengine==0.13.0 pymongo==3.4.0 passlib==1.7.1 lockfile==0.12.2 -python-gnupg==0.4.0 +python-gnupg==0.4.1 jsonpath-rw==1.4.0 pyinotify==0.9.6 semver==2.7.7 -stevedore==1.23.0 +stevedore==1.22.0 paramiko==2.2.1 networkx==1.11 python-keyczar==0.716 @@ -34,9 +34,9 @@ virtualenv==15.1.0 sseclient==0.0.18 python-editor==1.0.3 prompt-toolkit==1.0.14 -tooz==1.57.2 +tooz==1.57.4 zake==0.2.2 routes==2.4.1 flex==6.10.0 -webob==1.7.2 +webob==1.7.3 prance==0.6.1 diff --git a/requirements.txt b/requirements.txt index 5ce91827cd..0280aa6db7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,7 +32,7 @@ pyinotify==0.9.6 pymongo==3.4.0 python-dateutil python-editor==1.0.3 -python-gnupg==0.4.0 +python-gnupg==0.4.3 python-json-logger python-keyczar==0.716 pytz @@ -44,8 +44,8 @@ routes==2.4.1 semver==2.7.7 six==1.10.0 sseclient==0.0.18 -stevedore==1.23.0 -tooz==1.57.2 +stevedore==1.22.0 +tooz==1.57.4 unittest2 -webob==1.7.2 +webob==1.7.3 zake==0.2.2 From cdb86a90785726db34b01dba7e2414e50cd5a381 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Wed, 19 Jul 2017 17:02:55 +0200 Subject: [PATCH 11/13] Fail if process is none. --- st2tests/st2tests/base.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/st2tests/st2tests/base.py b/st2tests/st2tests/base.py index 07223e2a32..f3f8208495 100644 --- a/st2tests/st2tests/base.py +++ b/st2tests/st2tests/base.py @@ -436,11 +436,22 @@ def assertProcessIsRunning(self, process): Assert that a long running process provided Process object as returned by subprocess.Popen has succesfuly started and is running. """ + if not process: + raise ValueError('process is None') + return_code = process.poll() if return_code is not None: - stdout = process.stdout.read() - stderr = process.stderr.read() + if process.stdout: + stdout = process.stdout.read() + else: + stdout = '' + + if process.stderr: + stderr = process.stderr.read() + else: + stderr = '' + msg = ('Process exited with code=%s.\nStdout:\n%s\n\nStderr:\n%s' % (return_code, stdout, stderr)) self.fail(msg) From 6db3f6e8d664d28a55ff8ab5d370b553f4b85e41 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Wed, 19 Jul 2017 17:07:18 +0200 Subject: [PATCH 12/13] Re-generate requirements.txt. --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 0280aa6db7..50bfd81ae4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,7 +32,7 @@ pyinotify==0.9.6 pymongo==3.4.0 python-dateutil python-editor==1.0.3 -python-gnupg==0.4.3 +python-gnupg==0.4.1 python-json-logger python-keyczar==0.716 pytz From af39289ebd69e61644a48318b4bdd120d216f167 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Wed, 19 Jul 2017 17:07:28 +0200 Subject: [PATCH 13/13] Update affected NoOp tooz coordination driver so it works with latest version of tooz. --- st2common/st2common/services/coordination.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/st2common/st2common/services/coordination.py b/st2common/st2common/services/coordination.py index eb4c434f78..3993b6f933 100644 --- a/st2common/st2common/services/coordination.py +++ b/st2common/st2common/services/coordination.py @@ -55,8 +55,8 @@ class NoOpDriver(coordination.CoordinationDriver): This driver is used if coordination service is not configured. """ - def __init__(self, member_id): - super(NoOpDriver, self).__init__(member_id) + def __init__(self, member_id, parsed_url=None, options=None): + super(NoOpDriver, self).__init__(member_id, parsed_url, options) def watch_join_group(self, group_id, callback): self._hooks_join_group[group_id].append(callback)