2022-10-04 00:15:18 +05:30
# 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 ..plugins.alerting import AlertingClient
2023-06-28 22:56:00 +02:00
from ..plugins.index_management import IndexManagementClient
2022-10-04 00:15:18 +05:30
from .utils import NamespacedClient
class PluginsClient ( NamespacedClient ):
def __init__ ( self , client ):
super ( PluginsClient , self ) . __init__ ( client )
# self.query_workbench = QueryWorkbenchClient(client)
# self.reporting = ReportingClient(client)
# self.notebooks = NotebooksClient(client)
self . alerting = AlertingClient ( client )
# self.anomaly_detection = AnomalyDetectionClient(client)
# self.trace_analytics = TraceAnalyticsClient(client)
2023-06-28 22:56:00 +02:00
self . index_management = IndexManagementClient ( client )
2022-10-04 00:15:18 +05:30
self . _dynamic_lookup ( client )
def _dynamic_lookup ( self , client ):
# Issue : https://github.com/opensearch-project/opensearch-py/issues/90#issuecomment-1003396742
plugins = [
# "query_workbench",
# "reporting",
# "notebooks",
"alerting" ,
# "anomaly_detection",
# "trace_analytics",
2023-06-28 22:56:00 +02:00
"index_management" ,
2022-10-04 00:15:18 +05:30
]
for plugin in plugins :
if not hasattr ( client , plugin ):
setattr ( client , plugin , getattr ( self , plugin ))
else :
warnings . warn (
f "Cannot load ` { plugin } ` directly to AsyncOpenSearch. ` { plugin } ` already exists in AsyncOpenSearch. Please use `AsyncOpenSearch.plugin. { plugin } ` instead." ,
category = RuntimeWarning ,
stacklevel = 2 ,
)