15
15
import org .elasticsearch .cluster .service .ClusterService ;
16
16
import org .elasticsearch .common .collect .Tuple ;
17
17
import org .elasticsearch .common .inject .Inject ;
18
+ import org .elasticsearch .license .LicenseUtils ;
19
+ import org .elasticsearch .license .XPackLicenseState ;
18
20
import org .elasticsearch .tasks .Task ;
19
21
import org .elasticsearch .transport .TransportService ;
22
+ import org .elasticsearch .xpack .core .XPackField ;
20
23
import org .elasticsearch .xpack .core .ml .action .ExplainDataFrameAnalyticsAction ;
21
24
import org .elasticsearch .xpack .core .ml .action .PutDataFrameAnalyticsAction ;
22
25
import org .elasticsearch .xpack .core .ml .dataframe .explain .FieldSelection ;
40
43
public class TransportExplainDataFrameAnalyticsAction
41
44
extends HandledTransportAction <PutDataFrameAnalyticsAction .Request , ExplainDataFrameAnalyticsAction .Response > {
42
45
46
+ private final XPackLicenseState licenseState ;
43
47
private final TransportService transportService ;
44
48
private final ClusterService clusterService ;
45
49
private final NodeClient client ;
@@ -50,18 +54,25 @@ public TransportExplainDataFrameAnalyticsAction(TransportService transportServic
50
54
ActionFilters actionFilters ,
51
55
ClusterService clusterService ,
52
56
NodeClient client ,
57
+ XPackLicenseState licenseState ,
53
58
MemoryUsageEstimationProcessManager processManager ) {
54
59
super (ExplainDataFrameAnalyticsAction .NAME , transportService , actionFilters , PutDataFrameAnalyticsAction .Request ::new );
55
60
this .transportService = transportService ;
56
61
this .clusterService = Objects .requireNonNull (clusterService );
57
62
this .client = Objects .requireNonNull (client );
63
+ this .licenseState = licenseState ;
58
64
this .processManager = Objects .requireNonNull (processManager );
59
65
}
60
66
61
67
@ Override
62
68
protected void doExecute (Task task ,
63
69
PutDataFrameAnalyticsAction .Request request ,
64
70
ActionListener <ExplainDataFrameAnalyticsAction .Response > listener ) {
71
+ if (licenseState .isMachineLearningAllowed () == false ) {
72
+ listener .onFailure (LicenseUtils .newComplianceException (XPackField .MACHINE_LEARNING ));
73
+ return ;
74
+ }
75
+
65
76
DiscoveryNode localNode = clusterService .localNode ();
66
77
if (MachineLearning .isMlNode (localNode )) {
67
78
explain (task , request , listener );
0 commit comments