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 ;
122119import java .util .Map ;
123120import java .util .function .Predicate ;
124121import java .util .function .Supplier ;
122+ import java .util .stream .Collectors ;
125123import java .util .stream .Stream ;
126124
127125import static java .util .Collections .singletonList ;
@@ -155,7 +153,6 @@ public class InferencePlugin extends Plugin implements ActionPlugin, ExtensibleP
155153 private final Settings settings ;
156154 private final SetOnce <HttpRequestSender .Factory > httpFactory = new SetOnce <>();
157155 private final SetOnce <AmazonBedrockRequestSender .Factory > amazonBedrockFactory = new SetOnce <>();
158- private final SetOnce <HttpRequestSender .Factory > elasicInferenceServiceFactory = new SetOnce <>();
159156 private final SetOnce <ServiceComponents > serviceComponents = new SetOnce <>();
160157 private final SetOnce <ElasticInferenceServiceComponents > elasticInferenceServiceComponents = new SetOnce <>();
161158 private final SetOnce <InferenceServiceRegistry > inferenceServiceRegistry = new SetOnce <>();
@@ -238,31 +235,31 @@ public Collection<?> createComponents(PluginServices services) {
238235 var inferenceServices = new ArrayList <>(inferenceServiceExtensions );
239236 inferenceServices .add (this ::getInferenceServiceFactories );
240237
241- if (isElasticInferenceServiceEnabled ()) {
242- // Create a separate instance of HTTPClientManager with its own SSL configuration (`xpack.inference.elastic.http.ssl.*`).
243- var elasticInferenceServiceHttpClientManager = HttpClientManager .create (
244- settings ,
245- services .threadPool (),
246- services .clusterService (),
247- throttlerManager ,
248- getSslService ()
249- );
238+ // Set elasticInferenceUrl based on feature flags to support transitioning to the new Elastic Inference Service URL without exposing
239+ // internal names like "eis" or "gateway".
240+ ElasticInferenceServiceSettings inferenceServiceSettings = new ElasticInferenceServiceSettings (settings );
241+
242+ String elasticInferenceUrl = null ;
250243
251- var elasticInferenceServiceRequestSenderFactory = new HttpRequestSender .Factory (
252- serviceComponents .get (),
253- elasticInferenceServiceHttpClientManager ,
254- services .clusterService ()
244+ if (ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ()) {
245+ elasticInferenceUrl = inferenceServiceSettings .getElasticInferenceServiceUrl ();
246+ } else if (DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ()) {
247+ log .warn (
248+ "Deprecated flag {} detected for enabling {}. Please use {}." ,
249+ ELASTIC_INFERENCE_SERVICE_IDENTIFIER ,
250+ DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG ,
251+ ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG
255252 );
256- elasicInferenceServiceFactory .set (elasticInferenceServiceRequestSenderFactory );
253+ elasticInferenceUrl = inferenceServiceSettings .getEisGatewayUrl ();
254+ }
257255
258- ElasticInferenceServiceSettings inferenceServiceSettings = new ElasticInferenceServiceSettings (settings );
259- String elasticInferenceUrl = this .getElasticInferenceServiceUrl (inferenceServiceSettings );
256+ if (elasticInferenceUrl != null ) {
260257 elasticInferenceServiceComponents .set (new ElasticInferenceServiceComponents (elasticInferenceUrl ));
261258
262259 inferenceServices .add (
263260 () -> List .of (
264261 context -> new ElasticInferenceService (
265- elasicInferenceServiceFactory .get (),
262+ httpFactory .get (),
266263 serviceComponents .get (),
267264 elasticInferenceServiceComponents .get ()
268265 )
@@ -385,21 +382,16 @@ public static ExecutorBuilder<?> inferenceUtilityExecutor(Settings settings) {
385382
386383 @ Override
387384 public List <Setting <?>> getSettings () {
388- ArrayList <Setting <?>> settings = new ArrayList <>();
389- settings .addAll (HttpSettings .getSettingsDefinitions ());
390- settings .addAll (HttpClientManager .getSettingsDefinitions ());
391- settings .addAll (ThrottlerManager .getSettingsDefinitions ());
392- settings .addAll (RetrySettings .getSettingsDefinitions ());
393- settings .addAll (Truncator .getSettingsDefinitions ());
394- settings .addAll (RequestExecutorServiceSettings .getSettingsDefinitions ());
395- settings .add (SKIP_VALIDATE_AND_START );
396-
397- // Register Elastic Inference Service settings definitions if the corresponding feature flag is enabled.
398- if (isElasticInferenceServiceEnabled ()) {
399- settings .addAll (ElasticInferenceServiceSettings .getSettingsDefinitions ());
400- }
401-
402- return settings ;
385+ return Stream .of (
386+ HttpSettings .getSettingsDefinitions (),
387+ HttpClientManager .getSettingsDefinitions (),
388+ ThrottlerManager .getSettingsDefinitions (),
389+ RetrySettings .getSettingsDefinitions (),
390+ ElasticInferenceServiceSettings .getSettingsDefinitions (),
391+ Truncator .getSettingsDefinitions (),
392+ RequestExecutorServiceSettings .getSettingsDefinitions (),
393+ List .of (SKIP_VALIDATE_AND_START )
394+ ).flatMap (Collection ::stream ).collect (Collectors .toList ());
403395 }
404396
405397 @ Override
@@ -447,10 +439,7 @@ public List<QueryRewriteInterceptor> getQueryRewriteInterceptors() {
447439 @ Override
448440 public List <RetrieverSpec <?>> getRetrievers () {
449441 return List .of (
450- new RetrieverSpec <>(
451- new ParseField (TextSimilarityRankBuilder .NAME ),
452- (parser , context ) -> TextSimilarityRankRetrieverBuilder .fromXContent (parser , context , getLicenseState ())
453- ),
442+ new RetrieverSpec <>(new ParseField (TextSimilarityRankBuilder .NAME ), TextSimilarityRankRetrieverBuilder ::fromXContent ),
454443 new RetrieverSpec <>(new ParseField (RandomRankBuilder .NAME ), RandomRankRetrieverBuilder ::fromXContent )
455444 );
456445 }
@@ -459,36 +448,4 @@ public List<RetrieverSpec<?>> getRetrievers() {
459448 public Map <String , Highlighter > getHighlighters () {
460449 return Map .of (SemanticTextHighlighter .NAME , new SemanticTextHighlighter ());
461450 }
462-
463- // Get Elastic Inference service URL based on feature flags to support transitioning
464- // to the new Elastic Inference Service URL.
465- private String getElasticInferenceServiceUrl (ElasticInferenceServiceSettings settings ) {
466- String elasticInferenceUrl = null ;
467-
468- if (ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ()) {
469- elasticInferenceUrl = settings .getElasticInferenceServiceUrl ();
470- } else if (DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ()) {
471- log .warn (
472- "Deprecated flag {} detected for enabling {}. Please use {}." ,
473- ELASTIC_INFERENCE_SERVICE_IDENTIFIER ,
474- DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG ,
475- ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG
476- );
477- elasticInferenceUrl = settings .getEisGatewayUrl ();
478- }
479-
480- return elasticInferenceUrl ;
481- }
482-
483- protected Boolean isElasticInferenceServiceEnabled () {
484- return (ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled () || DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG .isEnabled ());
485- }
486-
487- protected SSLService getSslService () {
488- return XPackPlugin .getSharedSslService ();
489- }
490-
491- protected XPackLicenseState getLicenseState () {
492- return XPackPlugin .getSharedLicenseState ();
493- }
494451}
0 commit comments