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
2023-11-06 13:08:19 -05:00
from typing import Any
2022-10-04 00:15:18 +05:30
from ..plugins.alerting import AlertingClient
2023-06-28 22:56:00 +02:00
from ..plugins.index_management import IndexManagementClient
2024-03-22 16:40:18 -04:00
from ..plugins.knn import KnnClient
2024-04-17 16:22:14 -07:00
from ..plugins.notifications import NotificationsClient
2023-11-06 13:08:19 -05:00
from .client import Client
2022-10-04 00:15:18 +05:30
from .utils import NamespacedClient
class PluginsClient ( NamespacedClient ):
2023-11-06 13:08:19 -05:00
alerting : Any
index_management : Any
def __init__ ( self , client : Client ) -> None :
2022-10-04 00:15:18 +05:30
super ( PluginsClient , self ) . __init__ ( client )
2024-04-17 16:22:14 -07:00
self . notifications = NotificationsClient ( client )
2024-03-22 16:40:18 -04:00
self . knn = KnnClient ( client )
2022-10-04 00:15:18 +05:30
# 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 )
2023-11-06 13:08:19 -05:00
def _dynamic_lookup ( self , client : Any ) -> None :
2022-10-04 00:15:18 +05:30
# 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 (
2023-10-26 12:30:23 -04:00
f "Cannot load ` { plugin } ` directly to { self . client . __class__ . __name__ } as it already exists. Use ` { self . client . __class__ . __name__ } .plugin. { plugin } ` instead." ,
2022-10-04 00:15:18 +05:30
category = RuntimeWarning ,
stacklevel = 2 ,
)