@@ -73,6 +73,7 @@ public class MachineLearningUsageTransportAction extends XPackUsageFeatureTransp
7373 private final Client client ;
7474 private final XPackLicenseState licenseState ;
7575 private final JobManagerHolder jobManagerHolder ;
76+ private final MachineLearningExtension machineLearningExtension ;
7677 private final boolean enabled ;
7778
7879 @ Inject
@@ -85,7 +86,8 @@ public MachineLearningUsageTransportAction(
8586 Environment environment ,
8687 Client client ,
8788 XPackLicenseState licenseState ,
88- JobManagerHolder jobManagerHolder
89+ JobManagerHolder jobManagerHolder ,
90+ MachineLearningExtensionHolder machineLearningExtensionHolder
8991 ) {
9092 super (
9193 XPackUsageFeatureAction .MACHINE_LEARNING .name (),
@@ -98,6 +100,11 @@ public MachineLearningUsageTransportAction(
98100 this .client = new OriginSettingClient (client , ML_ORIGIN );
99101 this .licenseState = licenseState ;
100102 this .jobManagerHolder = jobManagerHolder ;
103+ if (machineLearningExtensionHolder .isEmpty ()) {
104+ this .machineLearningExtension = new DefaultMachineLearningExtension ();
105+ } else {
106+ this .machineLearningExtension = machineLearningExtensionHolder .getMachineLearningExtension ();
107+ }
101108 this .enabled = XPackSettings .MACHINE_LEARNING_ENABLED .get (environment .settings ());
102109 }
103110
@@ -187,10 +194,18 @@ protected void masterOperation(
187194 dataframeAnalyticsStatsRequest .setPageParams (new PageParams (0 , 10_000 ));
188195 ActionListener <GetDatafeedsStatsAction .Response > datafeedStatsListener = ActionListener .wrap (response -> {
189196 addDatafeedsUsage (response , datafeedsUsage );
190- client .execute (GetDataFrameAnalyticsStatsAction .INSTANCE , dataframeAnalyticsStatsRequest , dataframeAnalyticsStatsListener );
197+ if (machineLearningExtension .isDataFrameAnalyticsEnabled ()) {
198+ client .execute (GetDataFrameAnalyticsStatsAction .INSTANCE , dataframeAnalyticsStatsRequest , dataframeAnalyticsStatsListener );
199+ } else {
200+ addInferenceUsage (inferenceUsageListener );
201+ }
191202 }, e -> {
192203 logger .warn ("Failed to get datafeed stats to include in ML usage" , e );
193- client .execute (GetDataFrameAnalyticsStatsAction .INSTANCE , dataframeAnalyticsStatsRequest , dataframeAnalyticsStatsListener );
204+ if (machineLearningExtension .isDataFrameAnalyticsEnabled ()) {
205+ client .execute (GetDataFrameAnalyticsStatsAction .INSTANCE , dataframeAnalyticsStatsRequest , dataframeAnalyticsStatsListener );
206+ } else {
207+ addInferenceUsage (inferenceUsageListener );
208+ }
194209 });
195210
196211 // Step 1. Extract usage from jobs stats and then request stats for all datafeeds
@@ -210,8 +225,14 @@ protected void masterOperation(
210225 );
211226
212227 // Step 0. Kick off the chain of callbacks by requesting jobs stats
213- GetJobsStatsAction .Request jobStatsRequest = new GetJobsStatsAction .Request (Metadata .ALL );
214- client .execute (GetJobsStatsAction .INSTANCE , jobStatsRequest , jobStatsListener );
228+ if (machineLearningExtension .isAnomalyDetectionEnabled ()) {
229+ GetJobsStatsAction .Request jobStatsRequest = new GetJobsStatsAction .Request (Metadata .ALL );
230+ client .execute (GetJobsStatsAction .INSTANCE , jobStatsRequest , jobStatsListener );
231+ } else if (machineLearningExtension .isDataFrameAnalyticsEnabled ()) {
232+ client .execute (GetDataFrameAnalyticsStatsAction .INSTANCE , dataframeAnalyticsStatsRequest , dataframeAnalyticsStatsListener );
233+ } else {
234+ addInferenceUsage (inferenceUsageListener );
235+ }
215236 }
216237
217238 private void addJobsUsage (GetJobsStatsAction .Response response , List <Job > jobs , Map <String , Object > jobsUsage ) {
@@ -361,23 +382,27 @@ private void addDataFrameAnalyticsUsage(GetDataFrameAnalyticsAction.Response res
361382 }
362383
363384 private void addInferenceUsage (ActionListener <Map <String , Object >> listener ) {
364- GetTrainedModelsAction .Request getModelsRequest = new GetTrainedModelsAction .Request (
365- "*" ,
366- Collections .emptyList (),
367- Collections .emptySet ()
368- );
369- getModelsRequest .setPageParams (new PageParams (0 , 10_000 ));
370- client .execute (GetTrainedModelsAction .INSTANCE , getModelsRequest , ActionListener .wrap (getModelsResponse -> {
371- GetTrainedModelsStatsAction .Request getStatsRequest = new GetTrainedModelsStatsAction .Request ("*" );
372- getStatsRequest .setPageParams (new PageParams (0 , 10_000 ));
373- client .execute (GetTrainedModelsStatsAction .INSTANCE , getStatsRequest , ActionListener .wrap (getStatsResponse -> {
374- Map <String , Object > inferenceUsage = new LinkedHashMap <>();
375- addInferenceIngestUsage (getStatsResponse , inferenceUsage );
376- addTrainedModelStats (getModelsResponse , getStatsResponse , inferenceUsage );
377- addDeploymentStats (getStatsResponse , inferenceUsage );
378- listener .onResponse (inferenceUsage );
385+ if (machineLearningExtension .isDataFrameAnalyticsEnabled () || machineLearningExtension .isNlpEnabled ()) {
386+ GetTrainedModelsAction .Request getModelsRequest = new GetTrainedModelsAction .Request (
387+ "*" ,
388+ Collections .emptyList (),
389+ Collections .emptySet ()
390+ );
391+ getModelsRequest .setPageParams (new PageParams (0 , 10_000 ));
392+ client .execute (GetTrainedModelsAction .INSTANCE , getModelsRequest , ActionListener .wrap (getModelsResponse -> {
393+ GetTrainedModelsStatsAction .Request getStatsRequest = new GetTrainedModelsStatsAction .Request ("*" );
394+ getStatsRequest .setPageParams (new PageParams (0 , 10_000 ));
395+ client .execute (GetTrainedModelsStatsAction .INSTANCE , getStatsRequest , ActionListener .wrap (getStatsResponse -> {
396+ Map <String , Object > inferenceUsage = new LinkedHashMap <>();
397+ addInferenceIngestUsage (getStatsResponse , inferenceUsage );
398+ addTrainedModelStats (getModelsResponse , getStatsResponse , inferenceUsage );
399+ addDeploymentStats (getStatsResponse , inferenceUsage );
400+ listener .onResponse (inferenceUsage );
401+ }, listener ::onFailure ));
379402 }, listener ::onFailure ));
380- }, listener ::onFailure ));
403+ } else {
404+ listener .onResponse (Map .of ());
405+ }
381406 }
382407
383408 private void addDeploymentStats (GetTrainedModelsStatsAction .Response statsResponse , Map <String , Object > inferenceUsage ) {
0 commit comments