2023-10-26 13:34:34 -04:00
# -*- coding: utf-8 -*-
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
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 )
# 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 ,
)