From 6bed1b19a6439d1ae772136b3a198218a234da73 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 13 Nov 2024 13:21:04 +0100 Subject: [PATCH 1/3] add sender type to server api and headers --- ayon_api/server_api.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/ayon_api/server_api.py b/ayon_api/server_api.py index 2e151ffc9..6c75b1a1a 100644 --- a/ayon_api/server_api.py +++ b/ayon_api/server_api.py @@ -393,7 +393,10 @@ class ServerAPI(object): default_settings_variant (Optional[Literal["production", "staging"]]): Settings variant used by default if a method for settings won't get any (by default is 'production'). - sender (Optional[str]): Sender of requests. Used in server logs and + sender_type (Optional[str]): Sender type of requests. Used in server + logs and propagated into events. + sender (Optional[str]): Sender of requests, more specific than + sender type (e.g. machine name). Used in server logs and propagated into events. ssl_verify (Union[bool, str, None]): Verify SSL certificate Looks for env variable value ``AYON_CA_FILE`` by default. If not @@ -419,6 +422,7 @@ def __init__( site_id=NOT_SET, client_version=None, default_settings_variant=None, + sender_type=None, sender=None, ssl_verify=None, cert=None, @@ -445,6 +449,7 @@ def __init__( or get_default_settings_variant() ) self._sender = sender + self._sender_type = sender_type self._timeout = None self._max_retries = None @@ -763,6 +768,31 @@ def set_sender(self, sender): sender = property(get_sender, set_sender) + def get_sender_type(self): + """Sender type used to send requests. + + Sender type is supported since AYON server 1.5.5 . + + Returns: + Union[str, None]: Sender type or None. + + """ + return self._sender_type + + def set_sender_type(self, sender_type): + """Change sender type used for requests. + + Args: + sender_type (Union[str, None]): Sender type or None. + + """ + if sender_type == self._sender_type: + return + self._sender_type = sender_type + self._update_session_headers() + + sender_type = property(get_sender_type, set_sender_type) + def get_default_service_username(self): """Default username used for callbacks when used with service API key. @@ -946,6 +976,7 @@ def _update_session_headers(self): ("X-as-user", self._as_user_stack.username), ("x-ayon-version", self._client_version), ("x-ayon-site-id", self._site_id), + ("x-sender-type", self._sender_type), ("x-sender", self._sender), ): if value is not None: @@ -1157,6 +1188,9 @@ def get_headers(self, content_type=None): if self._client_version is not None: headers["x-ayon-version"] = self._client_version + if self._sender_type is not None: + headers["x-sender-type"] = self._sender_type + if self._sender is not None: headers["x-sender"] = self._sender From 5c525f66c882cf1b12c56f024e8b3654d46d2891 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 13 Nov 2024 13:21:41 +0100 Subject: [PATCH 2/3] added sender type functions to global api --- ayon_api/__init__.py | 4 ++++ ayon_api/_api.py | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/ayon_api/__init__.py b/ayon_api/__init__.py index 2ddbe9e03..46b30d99b 100644 --- a/ayon_api/__init__.py +++ b/ayon_api/__init__.py @@ -48,6 +48,8 @@ set_default_settings_variant, get_sender, set_sender, + get_sender_type, + set_sender_type, get_info, get_server_version, get_server_version_tuple, @@ -280,6 +282,8 @@ "set_default_settings_variant", "get_sender", "set_sender", + "get_sender_type", + "set_sender_type", "get_info", "get_server_version", "get_server_version_tuple", diff --git a/ayon_api/_api.py b/ayon_api/_api.py index 0ece9b708..724e1d945 100644 --- a/ayon_api/_api.py +++ b/ayon_api/_api.py @@ -550,6 +550,30 @@ def set_sender(*args, **kwargs): return con.set_sender(*args, **kwargs) +def get_sender_type(): + """Sender type used to send requests. + + Sender type is supported since AYON server 1.5.5 . + + Returns: + Union[str, None]: Sender type or None. + + """ + con = get_server_api_connection() + return con.get_sender_type() + + +def set_sender_type(*args, **kwargs): + """Change sender type used for requests. + + Args: + sender_type (Union[str, None]): Sender type or None. + + """ + con = get_server_api_connection() + return con.set_sender_type(*args, **kwargs) + + def get_info(): """Get information about current used api key. From 896d66c9c98036857d021e6aab5814357eb900a1 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 13 Nov 2024 14:08:58 +0100 Subject: [PATCH 3/3] added missing filters to enroll job --- ayon_api/_api.py | 4 ++++ ayon_api/server_api.py | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/ayon_api/_api.py b/ayon_api/_api.py index 724e1d945..0acfd7e38 100644 --- a/ayon_api/_api.py +++ b/ayon_api/_api.py @@ -875,6 +875,10 @@ def enroll_event_job(*args, **kwargs): TODO: Add example of filters. max_retries (Optional[int]): How many times can be event retried. Default value is based on server (3 at the time of this PR). + ignore_older_than (Optional[int]): Ignore events older than + given number in days. + ignore_sender_types (Optional[List[str]]): Ignore events triggered + by given sender types. Returns: Union[None, dict[str, Any]]: None if there is no event matching diff --git a/ayon_api/server_api.py b/ayon_api/server_api.py index 6c75b1a1a..b079c3ced 100644 --- a/ayon_api/server_api.py +++ b/ayon_api/server_api.py @@ -1663,6 +1663,8 @@ def enroll_event_job( sequential=None, events_filter=None, max_retries=None, + ignore_older_than=None, + ignore_sender_types=None, ): """Enroll job based on events. @@ -1711,6 +1713,10 @@ def enroll_event_job( TODO: Add example of filters. max_retries (Optional[int]): How many times can be event retried. Default value is based on server (3 at the time of this PR). + ignore_older_than (Optional[int]): Ignore events older than + given number in days. + ignore_sender_types (Optional[List[str]]): Ignore events triggered + by given sender types. Returns: Union[None, dict[str, Any]]: None if there is no event matching @@ -1722,6 +1728,7 @@ def enroll_event_job( "targetTopic": target_topic, "sender": sender, } + major, minor, patch, _, _ = self.server_version_tuple if max_retries is not None: kwargs["maxRetries"] = max_retries if sequential is not None: @@ -1730,6 +1737,16 @@ def enroll_event_job( kwargs["description"] = description if events_filter is not None: kwargs["filter"] = events_filter + if ( + ignore_older_than is not None + and (major, minor, patch) > (1, 5, 1) + ): + kwargs["ignoreOlderThan"] = ignore_older_than + if ( + ignore_sender_types is not None + and (major, minor, patch) > (1, 5, 4) + ): + kwargs["ignoreSenderTypes"] = ignore_sender_types response = self.post("enroll", **kwargs) if response.status_code == 204: