Files
opensearch-pyd/opensearchpy/client/plugins.py
T
Daniel (dB.) Doubrovkine 2d6ae74211 Updated dependencies, generated API. (#793)
* Updated dependencies.

Signed-off-by: dblock <dblock@amazon.com>

* Lock setuptools at 71.1.0.

Newer version seems to cause UserWarning: Unknown distribution option: 'test_suite'.

Signed-off-by: dblock <dblock@amazon.com>

* Updated opensearch-py APIs to reflect opensearch-api-specification@9d3bc34.

Signed-off-by: dblock <dblock@amazon.com>

* Do not test against flaky 2.0.

Signed-off-by: dblock <dblock@amazon.com>

* Reduce test matrix and add 2.16.

Signed-off-by: dblock <dblock@amazon.com>

* Fix missing spaces in generated descriptions.

Signed-off-by: dblock <dblock@amazon.com>

* Removed 2.2.1.

Signed-off-by: dblock <dblock@amazon.com>

---------

Signed-off-by: dblock <dblock@amazon.com>
2024-08-14 15:25:01 -07:00

70 lines
2.4 KiB
Python

# SPDX-License-Identifier: Apache-2.0
#
# The OpenSearch Contributors require contributions made to
# this file be licensed under the Apache-2.0 license or a
# compatible open source license.
#
# Modifications Copyright OpenSearch Contributors. See
# GitHub history for details.
import warnings
from typing import Any
from ..plugins.alerting import AlertingClient
from ..plugins.index_management import IndexManagementClient
from ..plugins.knn import KnnClient
from ..plugins.ml import MlClient
from ..plugins.notifications import NotificationsClient
from ..plugins.observability import ObservabilityClient
from ..plugins.ppl import PplClient
from ..plugins.query import QueryClient
from ..plugins.rollups import RollupsClient
from ..plugins.sql import SqlClient
from ..plugins.transforms import TransformsClient
from .client import Client
from .utils import NamespacedClient
class PluginsClient(NamespacedClient):
alerting: Any
index_management: Any
def __init__(self, client: Client) -> None:
super().__init__(client)
self.alerting = AlertingClient(client)
self.index_management = IndexManagementClient(client)
self.knn = KnnClient(client)
self.ml = MlClient(client)
self.notifications = NotificationsClient(client)
self.observability = ObservabilityClient(client)
self.ppl = PplClient(client)
self.query = QueryClient(client)
self.rollups = RollupsClient(client)
self.sql = SqlClient(client)
self.transforms = TransformsClient(client)
self._dynamic_lookup(client)
def _dynamic_lookup(self, client: Any) -> None:
# Issue : https://github.com/opensearch-project/opensearch-py/issues/90#issuecomment-1003396742
plugins = [
# "query_workbench",
# "reporting",
# "notebooks",
"alerting",
# "anomaly_detection",
# "trace_analytics",
"index_management",
]
for plugin in plugins:
if not hasattr(client, plugin):
setattr(client, plugin, getattr(self, plugin))
else:
warnings.warn(
f"Cannot load `{plugin}` directly to {self.client.__class__.__name__} as it already exists. Use `{self.client.__class__.__name__}.plugin.{plugin}` instead.",
category=RuntimeWarning,
stacklevel=2,
)