From 818740c359b336925fe4b8e662ca610c75fbfe75 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 13 Dec 2021 19:23:59 +0100 Subject: [PATCH 1/7] use default components in log mongo --- openpype/lib/log.py | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/openpype/lib/log.py b/openpype/lib/log.py index 85cbc733ba..a34cb898e3 100644 --- a/openpype/lib/log.py +++ b/openpype/lib/log.py @@ -27,7 +27,7 @@ import copy from . import Terminal from .mongo import ( MongoEnvNotSet, - decompose_url, + get_default_components, OpenPypeMongoConnection ) try: @@ -202,10 +202,6 @@ class PypeLogger: use_mongo_logging = None mongo_process_id = None - # Information about mongo url - log_mongo_url = None - log_mongo_url_components = None - # Database name in Mongo log_database_name = os.environ["OPENPYPE_DATABASE_NAME"] # Collection name under database in Mongo @@ -282,9 +278,9 @@ class PypeLogger: if not cls.use_mongo_logging: return - components = cls.log_mongo_url_components + components = get_default_components() kwargs = { - "host": cls.log_mongo_url, + "host": components["host"], "database_name": cls.log_database_name, "collection": cls.log_collection_name, "username": components["username"], @@ -354,14 +350,8 @@ class PypeLogger: # Define if is in OPENPYPE_DEBUG mode cls.pype_debug = int(os.getenv("OPENPYPE_DEBUG") or "0") - # Mongo URL where logs will be stored - cls.log_mongo_url = os.environ.get("OPENPYPE_MONGO") - - if not cls.log_mongo_url: + if not os.environ.get("OPENPYPE_MONGO"): cls.use_mongo_logging = False - else: - # Decompose url - cls.log_mongo_url_components = decompose_url(cls.log_mongo_url) # Mark as initialized cls.initialized = True @@ -474,7 +464,7 @@ class PypeLogger: if not cls.initialized: cls.initialize() - return OpenPypeMongoConnection.get_mongo_client(cls.log_mongo_url) + return OpenPypeMongoConnection.get_mongo_client() def timeit(method): From f712b207f20456621511052da6c6a2d7bd706102 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 13 Dec 2021 19:25:08 +0100 Subject: [PATCH 2/7] removed compose_url and decompose_url from api and lib functions --- openpype/api.py | 4 ---- openpype/lib/__init__.py | 4 ---- 2 files changed, 8 deletions(-) diff --git a/openpype/api.py b/openpype/api.py index a6529202ff..51854492ab 100644 --- a/openpype/api.py +++ b/openpype/api.py @@ -31,8 +31,6 @@ from .lib import ( ) from .lib.mongo import ( - decompose_url, - compose_url, get_default_components ) @@ -84,8 +82,6 @@ __all__ = [ "Anatomy", "config", "execute", - "decompose_url", - "compose_url", "get_default_components", "ApplicationManager", "BuildWorkfile", diff --git a/openpype/lib/__init__.py b/openpype/lib/__init__.py index efd2cddf7e..c99e3bc28d 100644 --- a/openpype/lib/__init__.py +++ b/openpype/lib/__init__.py @@ -32,8 +32,6 @@ from .execute import ( ) from .log import PypeLogger, timeit from .mongo import ( - decompose_url, - compose_url, get_default_components, validate_mongo_connection, OpenPypeMongoConnection @@ -276,8 +274,6 @@ __all__ = [ "get_datetime_data", "PypeLogger", - "decompose_url", - "compose_url", "get_default_components", "validate_mongo_connection", "OpenPypeMongoConnection", From 975f0a1c6857fb950e176fc70560bd7929feb8cb Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 13 Dec 2021 19:25:17 +0100 Subject: [PATCH 3/7] removed unused compose_url --- openpype/lib/mongo.py | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/openpype/lib/mongo.py b/openpype/lib/mongo.py index 0fd4517b5b..9f2463eb89 100644 --- a/openpype/lib/mongo.py +++ b/openpype/lib/mongo.py @@ -48,35 +48,6 @@ def decompose_url(url): return components -def compose_url(scheme=None, - host=None, - username=None, - password=None, - port=None, - auth_db=None): - - url = "{scheme}://" - - if username and password: - url += "{username}:{password}@" - - url += "{host}" - if port: - url += ":{port}" - - if auth_db: - url += "?authSource={auth_db}" - - return url.format(**{ - "scheme": scheme, - "host": host, - "username": username, - "password": password, - "port": port, - "auth_db": auth_db - }) - - def get_default_components(): mongo_url = os.environ.get("OPENPYPE_MONGO") if mongo_url is None: From 432c9f8f15377f506b5895d7f4433c2946c6ca9f Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 13 Dec 2021 19:27:31 +0100 Subject: [PATCH 4/7] decompose_url is now private function _decompose_url --- openpype/lib/mongo.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/openpype/lib/mongo.py b/openpype/lib/mongo.py index 9f2463eb89..fb4eb76f28 100644 --- a/openpype/lib/mongo.py +++ b/openpype/lib/mongo.py @@ -15,7 +15,14 @@ class MongoEnvNotSet(Exception): pass -def decompose_url(url): +def _decompose_url(url): + """Decompose mongo url to basic components. + + Used for creation of MongoHandler which expect mongo url components as + separated kwargs. Components are at the end not used as we're setting + connection directly this is just a dumb components for MongoHandler + validation pass. + """ components = { "scheme": None, "host": None, @@ -54,7 +61,7 @@ def get_default_components(): raise MongoEnvNotSet( "URL for Mongo logging connection is not set." ) - return decompose_url(mongo_url) + return _decompose_url(mongo_url) def should_add_certificate_path_to_mongo_url(mongo_url): From d83989c9b31be293d52de4e8a210d6e5f09a6c6d Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 13 Dec 2021 19:28:14 +0100 Subject: [PATCH 5/7] use first part of url for replica set urls --- openpype/lib/mongo.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/openpype/lib/mongo.py b/openpype/lib/mongo.py index fb4eb76f28..7e0bd4f796 100644 --- a/openpype/lib/mongo.py +++ b/openpype/lib/mongo.py @@ -23,6 +23,11 @@ def _decompose_url(url): connection directly this is just a dumb components for MongoHandler validation pass. """ + # Use first url from passed url + # - this is beacuse it is possible to pass multiple urls for multiple + # replica sets which would crash on urlparse otherwise + # - please don't use comma in username of password + url = url.split(",")[0] components = { "scheme": None, "host": None, From 5efef322a6415aa0ebb4c985a00e26d1341ab9e0 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 22 Dec 2021 11:37:31 +0100 Subject: [PATCH 6/7] added attribute log_mongo_url_components back for older builds --- openpype/lib/log.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/openpype/lib/log.py b/openpype/lib/log.py index a34cb898e3..a42faef008 100644 --- a/openpype/lib/log.py +++ b/openpype/lib/log.py @@ -202,6 +202,11 @@ class PypeLogger: use_mongo_logging = None mongo_process_id = None + # Backwards compatibility - was used in start.py + # TODO remove when all old builds are replaced with new one + # not using 'log_mongo_url_components' + log_mongo_url_components = None + # Database name in Mongo log_database_name = os.environ["OPENPYPE_DATABASE_NAME"] # Collection name under database in Mongo @@ -320,6 +325,7 @@ class PypeLogger: # Change initialization state to prevent runtime changes # if is executed during runtime cls.initialized = False + cls.log_mongo_url_components = get_default_components() # Define if should logging to mongo be used use_mongo_logging = bool(log4mongo is not None) From 1914c144cd2998dc40c5253f8ea9597648d51ad5 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 22 Dec 2021 11:38:43 +0100 Subject: [PATCH 7/7] uses get_default_components for log components --- start.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/start.py b/start.py index ae6aefe34e..b5a8d95fd0 100644 --- a/start.py +++ b/start.py @@ -1109,15 +1109,15 @@ def get_info(use_staging=None) -> list: # Reinitialize PypeLogger.initialize() - log_components = PypeLogger.log_mongo_url_components - if log_components["host"]: - inf.append(("Logging to MongoDB", log_components["host"])) - inf.append((" - port", log_components["port"] or "")) + mongo_components = get_default_components() + if mongo_components["host"]: + inf.append(("Logging to MongoDB", mongo_components["host"])) + inf.append((" - port", mongo_components["port"] or "")) inf.append((" - database", PypeLogger.log_database_name)) inf.append((" - collection", PypeLogger.log_collection_name)) - inf.append((" - user", log_components["username"] or "")) - if log_components["auth_db"]: - inf.append((" - auth source", log_components["auth_db"])) + inf.append((" - user", mongo_components["username"] or "")) + if mongo_components["auth_db"]: + inf.append((" - auth source", mongo_components["auth_db"])) maximum = max(len(i[0]) for i in inf) formatted = []