diff --git a/client/ayon_core/__init__.py b/client/ayon_core/__init__.py index 1a21da9735..7d95587e8a 100644 --- a/client/ayon_core/__init__.py +++ b/client/ayon_core/__init__.py @@ -1,4 +1,5 @@ import os +from .version import __version__ AYON_CORE_ROOT = os.path.dirname(os.path.abspath(__file__)) diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py index f0763649ca..bbd5a486fe 100644 --- a/client/ayon_core/addon/base.py +++ b/client/ayon_core/addon/base.py @@ -14,9 +14,9 @@ from abc import ABCMeta, abstractmethod import six import appdirs +import ayon_api from ayon_core.lib import Logger, is_dev_mode_enabled -from ayon_core.client import get_ayon_server_api_connection from ayon_core.settings import get_studio_settings from .interfaces import ( @@ -147,8 +147,7 @@ def load_addons(force=False): def _get_ayon_bundle_data(): - con = get_ayon_server_api_connection() - bundles = con.get_bundles()["bundles"] + bundles = ayon_api.get_bundles()["bundles"] bundle_name = os.getenv("AYON_BUNDLE_NAME") @@ -176,8 +175,7 @@ def _get_ayon_addons_information(bundle_info): output = [] bundle_addons = bundle_info["addons"] - con = get_ayon_server_api_connection() - addons = con.get_addons_info()["addons"] + addons = ayon_api.get_addons_info()["addons"] for addon in addons: name = addon["name"] versions = addon.get("versions") diff --git a/client/ayon_core/cli.py b/client/ayon_core/cli.py index 88b574da76..0ad4364bcd 100644 --- a/client/ayon_core/cli.py +++ b/client/ayon_core/cli.py @@ -11,6 +11,7 @@ import acre from ayon_core import AYON_CORE_ROOT from ayon_core.addon import AddonsManager from ayon_core.settings import get_general_environments +from ayon_core.lib import initialize_ayon_connection from .cli_commands import Commands @@ -243,6 +244,7 @@ def _set_addons_environments(): def main(*args, **kwargs): + initialize_ayon_connection() python_path = os.getenv("PYTHONPATH", "") split_paths = python_path.split(os.pathsep) diff --git a/client/ayon_core/client/__init__.py b/client/ayon_core/client/__init__.py deleted file mode 100644 index ea651ba8db..0000000000 --- a/client/ayon_core/client/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .utils import get_ayon_server_api_connection - - -__all__ = ( - "get_ayon_server_api_connection", -) diff --git a/client/ayon_core/client/utils.py b/client/ayon_core/client/utils.py deleted file mode 100644 index bf73da5234..0000000000 --- a/client/ayon_core/client/utils.py +++ /dev/null @@ -1,9 +0,0 @@ -import ayon_api - - -class _GlobalCache: - initialized = False - - -def get_ayon_server_api_connection(): - return ayon_api.get_server_api_connection() diff --git a/client/ayon_core/lib/__init__.py b/client/ayon_core/lib/__init__.py index ab6a604adc..6f76506dd8 100644 --- a/client/ayon_core/lib/__init__.py +++ b/client/ayon_core/lib/__init__.py @@ -15,7 +15,18 @@ python_version_dir = os.path.join( sys.path.insert(0, python_version_dir) site.addsitedir(python_version_dir) - +from .local_settings import ( + IniSettingRegistry, + JSONSettingRegistry, + AYONSecureRegistry, + AYONSettingsRegistry, + OpenPypeSecureRegistry, + OpenPypeSettingsRegistry, + get_local_site_id, + get_ayon_username, + get_openpype_username, +) +from .ayon_connection import initialize_ayon_connection from .events import ( emit_event, register_event_callback @@ -112,18 +123,6 @@ from .transcoding import ( get_rescaled_command_arguments, ) -from .local_settings import ( - IniSettingRegistry, - JSONSettingRegistry, - AYONSecureRegistry, - AYONSettingsRegistry, - OpenPypeSecureRegistry, - OpenPypeSettingsRegistry, - get_local_site_id, - get_ayon_username, - get_openpype_username, -) - from .applications import ( ApplicationLaunchFailed, ApplictionExecutableNotFound, @@ -170,6 +169,18 @@ from .connections import ( terminal = Terminal __all__ = [ + "IniSettingRegistry", + "JSONSettingRegistry", + "AYONSecureRegistry", + "AYONSettingsRegistry", + "OpenPypeSecureRegistry", + "OpenPypeSettingsRegistry", + "get_local_site_id", + "get_ayon_username", + "get_openpype_username", + + "initialize_ayon_connection", + "emit_event", "register_event_callback", @@ -228,16 +239,6 @@ __all__ = [ "convert_ffprobe_fps_to_float", "get_rescaled_command_arguments", - "IniSettingRegistry", - "JSONSettingRegistry", - "AYONSecureRegistry", - "AYONSettingsRegistry", - "OpenPypeSecureRegistry", - "OpenPypeSettingsRegistry", - "get_local_site_id", - "get_ayon_username", - "get_openpype_username", - "ApplicationLaunchFailed", "ApplictionExecutableNotFound", "ApplicationNotFound", diff --git a/client/ayon_core/lib/ayon_connection.py b/client/ayon_core/lib/ayon_connection.py new file mode 100644 index 0000000000..aaa7dd3b4d --- /dev/null +++ b/client/ayon_core/lib/ayon_connection.py @@ -0,0 +1,34 @@ +import os + +import ayon_api + +from .local_settings import get_local_site_id + + +class _Cache: + initialized = False + + +def initialize_ayon_connection(force=False): + """Initialize global AYON api connection. + + Create global connection in ayon_api module and set site id + and client version. + Is silently skipped if already happened. + + Args: + force (Optional[bool]): Force reinitialize connection. + Defaults to False. + + """ + if not force and _Cache.initialized: + return + _Cache.initialized = True + site_id = get_local_site_id() + version = os.getenv("AYON_VERSION") + if ayon_api.is_connection_created(): + con = ayon_api.get_server_api_connection() + con.set_site_id(site_id) + con.set_client_version(version) + else: + ayon_api.create_connection(site_id, version) diff --git a/client/ayon_core/lib/local_settings.py b/client/ayon_core/lib/local_settings.py index 022f63a618..9eba3d1ed1 100644 --- a/client/ayon_core/lib/local_settings.py +++ b/client/ayon_core/lib/local_settings.py @@ -26,8 +26,7 @@ except ImportError: import six import appdirs - -from ayon_core.client import get_ayon_server_api_connection +import ayon_api _PLACEHOLDER = object() @@ -556,10 +555,9 @@ def get_ayon_username(): Returns: str: Username. - """ - con = get_ayon_server_api_connection() - return con.get_user()["name"] + """ + return ayon_api.get_user()["name"] def get_openpype_username(): diff --git a/client/ayon_core/pipeline/context_tools.py b/client/ayon_core/pipeline/context_tools.py index b314e02998..1ad80694bf 100644 --- a/client/ayon_core/pipeline/context_tools.py +++ b/client/ayon_core/pipeline/context_tools.py @@ -13,8 +13,7 @@ from pyblish.lib import MessageHandler from ayon_core import AYON_CORE_ROOT from ayon_core.host import HostBase from ayon_core.client import get_ayon_server_api_connection -from ayon_core.lib import is_in_tests -from ayon_core.lib.events import emit_event +from ayon_core.lib import is_in_tests, initialize_ayon_connection, emit_event from ayon_core.addon import load_addons, AddonsManager from ayon_core.settings import get_project_settings @@ -157,6 +156,7 @@ def install_host(host): def install_ayon_plugins(project_name=None, host_name=None): # Make sure modules are loaded + initialize_ayon_connection() load_addons() log.info("Registering global plug-ins..") diff --git a/client/ayon_core/settings/lib.py b/client/ayon_core/settings/lib.py index 69525d5b86..d72e4f357a 100644 --- a/client/ayon_core/settings/lib.py +++ b/client/ayon_core/settings/lib.py @@ -5,7 +5,7 @@ import collections import copy import time -from ayon_core.client import get_ayon_server_api_connection +import ayon_api log = logging.getLogger(__name__) @@ -46,8 +46,7 @@ class _AyonSettingsCache: @classmethod def _use_bundles(cls): if _AyonSettingsCache.use_bundles is None: - con = get_ayon_server_api_connection() - major, minor, _, _, _ = con.get_server_version_tuple() + major, minor, _, _, _ = ayon_api.get_server_version_tuple() use_bundles = True if (major, minor) < (0, 3): use_bundles = False @@ -69,8 +68,7 @@ class _AyonSettingsCache: _AyonSettingsCache.variant = variant # Set the variant to global ayon api connection - con = get_ayon_server_api_connection() - con.set_default_settings_variant(variant) + ayon_api.set_default_settings_variant(variant) return _AyonSettingsCache.variant @classmethod @@ -81,23 +79,21 @@ class _AyonSettingsCache: def get_value_by_project(cls, project_name): cache_item = _AyonSettingsCache.cache_by_project_name[project_name] if cache_item.is_outdated: - con = get_ayon_server_api_connection() if cls._use_bundles(): - value = con.get_addons_settings( + value = ayon_api.get_addons_settings( bundle_name=cls._get_bundle_name(), project_name=project_name, variant=cls._get_variant() ) else: - value = con.get_addons_settings(project_name) + value = ayon_api.get_addons_settings(project_name) cache_item.update_value(value) return cache_item.get_value() @classmethod def _get_addon_versions_from_bundle(cls): - con = get_ayon_server_api_connection() expected_bundle = cls._get_bundle_name() - bundles = con.get_bundles()["bundles"] + bundles = ayon_api.get_bundles()["bundles"] bundle = next( ( bundle @@ -117,8 +113,7 @@ class _AyonSettingsCache: if cls._use_bundles(): addons = cls._get_addon_versions_from_bundle() else: - con = get_ayon_server_api_connection() - settings_data = con.get_addons_settings( + settings_data = ayon_api.get_addons_settings( only_values=False, variant=cls._get_variant() )