2828import org .elasticsearch .indices .SystemIndexDescriptor ;
2929import org .elasticsearch .inference .InferenceServiceExtension ;
3030import org .elasticsearch .inference .InferenceServiceRegistry ;
31- import org .elasticsearch .license .XPackLicenseState ;
3231import org .elasticsearch .node .PluginComponentBinding ;
3332import org .elasticsearch .plugins .ActionPlugin ;
3433import org .elasticsearch .plugins .ExtensiblePlugin ;
4645import org .elasticsearch .threadpool .ScalingExecutorBuilder ;
4746import org .elasticsearch .xcontent .ParseField ;
4847import org .elasticsearch .xpack .core .ClientHelper ;
49- import org .elasticsearch .xpack .core .XPackPlugin ;
5048import org .elasticsearch .xpack .core .action .XPackUsageFeatureAction ;
5149import org .elasticsearch .xpack .core .inference .action .DeleteInferenceEndpointAction ;
5250import org .elasticsearch .xpack .core .inference .action .GetInferenceDiagnosticsAction ;
5654import org .elasticsearch .xpack .core .inference .action .PutInferenceModelAction ;
5755import org .elasticsearch .xpack .core .inference .action .UnifiedCompletionAction ;
5856import org .elasticsearch .xpack .core .inference .action .UpdateInferenceModelAction ;
59- import org .elasticsearch .xpack .core .ssl .SSLService ;
6057import org .elasticsearch .xpack .inference .action .TransportDeleteInferenceEndpointAction ;
6158import org .elasticsearch .xpack .inference .action .TransportGetInferenceDiagnosticsAction ;
6259import org .elasticsearch .xpack .inference .action .TransportGetInferenceModelAction ;
121118import java .util .Map ;
122119import java .util .function .Predicate ;
123120import java .util .function .Supplier ;
121+ import java .util .stream .Collectors ;
124122import java .util .stream .Stream ;
125123
126124import static java .util .Collections .singletonList ;
@@ -154,7 +152,6 @@ public class InferencePlugin extends Plugin implements ActionPlugin, ExtensibleP
154152 private final Settings settings ;
155153 private final SetOnce <HttpRequestSender .Factory > httpFactory = new SetOnce <>();
156154 private final SetOnce <AmazonBedrockRequestSender .Factory > amazonBedrockFactory = new SetOnce <>();
157- private final SetOnce <HttpRequestSender .Factory > elasicInferenceServiceFactory = new SetOnce <>();
158155 private final SetOnce <ServiceComponents > serviceComponents = new SetOnce <>();
159156 private final SetOnce <ElasticInferenceServiceComponents > elasticInferenceServiceComponents = new SetOnce <>();
160157 private final SetOnce <InferenceServiceRegistry > inferenceServiceRegistry = new SetOnce <>();
@@ -237,31 +234,31 @@ public Collection<?> createComponents(PluginServices services) {
237234 var inferenceServices = new ArrayList <>(inferenceServiceExtensions );
238235 inferenceServices .add (this ::getInferenceServiceFactories );
239236
240- if (isElasticInferenceServiceEnabled ()) {
241- // Create a separate instance of HTTPClientManager with its own SSL configuration (`xpack.inference.elastic.http.ssl.*`).
242- var elasticInferenceServiceHttpClientManager = HttpClientManager .create (
243- settings ,
244- services .threadPool (),
245- services .clusterService (),
246- throttlerManager ,
247- getSslService ()
248- );
237+ // Set elasticInferenceUrl based on feature flags to support transitioning to the new Elastic Inference Service URL without exposing
238+ // internal names like "eis" or "gateway".
239+ ElasticInferenceServiceSettings inferenceServiceSettings = new ElasticInferenceServiceSettings (settings );
240+
241+ String elasticInferenceUrl = null ;
249242
250- var elasticInferenceServiceRequestSenderFactory = new HttpRequestSender .Factory (
251- serviceComponents .get (),
252- elasticInferenceServiceHttpClientManager ,
253- services .clusterService ()
243+ if (ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ()) {
244+ elasticInferenceUrl = inferenceServiceSettings .getElasticInferenceServiceUrl ();
245+ } else if (DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ()) {
246+ log .warn (
247+ "Deprecated flag {} detected for enabling {}. Please use {}." ,
248+ ELASTIC_INFERENCE_SERVICE_IDENTIFIER ,
249+ DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG ,
250+ ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG
254251 );
255- elasicInferenceServiceFactory .set (elasticInferenceServiceRequestSenderFactory );
252+ elasticInferenceUrl = inferenceServiceSettings .getEisGatewayUrl ();
253+ }
256254
257- ElasticInferenceServiceSettings inferenceServiceSettings = new ElasticInferenceServiceSettings (settings );
258- String elasticInferenceUrl = this .getElasticInferenceServiceUrl (inferenceServiceSettings );
255+ if (elasticInferenceUrl != null ) {
259256 elasticInferenceServiceComponents .set (new ElasticInferenceServiceComponents (elasticInferenceUrl ));
260257
261258 inferenceServices .add (
262259 () -> List .of (
263260 context -> new ElasticInferenceService (
264- elasicInferenceServiceFactory .get (),
261+ httpFactory .get (),
265262 serviceComponents .get (),
266263 elasticInferenceServiceComponents .get ()
267264 )
@@ -384,21 +381,16 @@ public static ExecutorBuilder<?> inferenceUtilityExecutor(Settings settings) {
384381
385382 @ Override
386383 public List <Setting <?>> getSettings () {
387- ArrayList <Setting <?>> settings = new ArrayList <>();
388- settings .addAll (HttpSettings .getSettingsDefinitions ());
389- settings .addAll (HttpClientManager .getSettingsDefinitions ());
390- settings .addAll (ThrottlerManager .getSettingsDefinitions ());
391- settings .addAll (RetrySettings .getSettingsDefinitions ());
392- settings .addAll (Truncator .getSettingsDefinitions ());
393- settings .addAll (RequestExecutorServiceSettings .getSettingsDefinitions ());
394- settings .add (SKIP_VALIDATE_AND_START );
395-
396- // Register Elastic Inference Service settings definitions if the corresponding feature flag is enabled.
397- if (isElasticInferenceServiceEnabled ()) {
398- settings .addAll (ElasticInferenceServiceSettings .getSettingsDefinitions ());
399- }
400-
401- return settings ;
384+ return Stream .of (
385+ HttpSettings .getSettingsDefinitions (),
386+ HttpClientManager .getSettingsDefinitions (),
387+ ThrottlerManager .getSettingsDefinitions (),
388+ RetrySettings .getSettingsDefinitions (),
389+ ElasticInferenceServiceSettings .getSettingsDefinitions (),
390+ Truncator .getSettingsDefinitions (),
391+ RequestExecutorServiceSettings .getSettingsDefinitions (),
392+ List .of (SKIP_VALIDATE_AND_START )
393+ ).flatMap (Collection ::stream ).collect (Collectors .toList ());
402394 }
403395
404396 @ Override
@@ -446,10 +438,7 @@ public List<QueryRewriteInterceptor> getQueryRewriteInterceptors() {
446438 @ Override
447439 public List <RetrieverSpec <?>> getRetrievers () {
448440 return List .of (
449- new RetrieverSpec <>(
450- new ParseField (TextSimilarityRankBuilder .NAME ),
451- (parser , context ) -> TextSimilarityRankRetrieverBuilder .fromXContent (parser , context , getLicenseState ())
452- ),
441+ new RetrieverSpec <>(new ParseField (TextSimilarityRankBuilder .NAME ), TextSimilarityRankRetrieverBuilder ::fromXContent ),
453442 new RetrieverSpec <>(new ParseField (RandomRankBuilder .NAME ), RandomRankRetrieverBuilder ::fromXContent )
454443 );
455444 }
@@ -458,36 +447,4 @@ public List<RetrieverSpec<?>> getRetrievers() {
458447 public Map <String , Highlighter > getHighlighters () {
459448 return Map .of (SemanticTextHighlighter .NAME , new SemanticTextHighlighter ());
460449 }
461-
462- // Get Elastic Inference service URL based on feature flags to support transitioning
463- // to the new Elastic Inference Service URL.
464- private String getElasticInferenceServiceUrl (ElasticInferenceServiceSettings settings ) {
465- String elasticInferenceUrl = null ;
466-
467- if (ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ()) {
468- elasticInferenceUrl = settings .getElasticInferenceServiceUrl ();
469- } else if (DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ()) {
470- log .warn (
471- "Deprecated flag {} detected for enabling {}. Please use {}." ,
472- ELASTIC_INFERENCE_SERVICE_IDENTIFIER ,
473- DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG ,
474- ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG
475- );
476- elasticInferenceUrl = settings .getEisGatewayUrl ();
477- }
478-
479- return elasticInferenceUrl ;
480- }
481-
482- protected Boolean isElasticInferenceServiceEnabled () {
483- return (ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled () || DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ());
484- }
485-
486- protected SSLService getSslService () {
487- return XPackPlugin .getSharedSslService ();
488- }
489-
490- protected XPackLicenseState getLicenseState () {
491- return XPackPlugin .getSharedLicenseState ();
492- }
493450}
0 commit comments