8
8
import org .elasticsearch .action .ActionListener ;
9
9
import org .elasticsearch .action .support .ActionFilters ;
10
10
import org .elasticsearch .action .support .HandledTransportAction ;
11
- import org .elasticsearch .cluster .ClusterState ;
12
- import org .elasticsearch .cluster .service .ClusterService ;
13
11
import org .elasticsearch .common .inject .Inject ;
14
12
import org .elasticsearch .common .settings .Settings ;
15
13
import org .elasticsearch .tasks .Task ;
16
14
import org .elasticsearch .transport .TransportService ;
17
- import org .elasticsearch .xpack .core .ml .MlMetadata ;
18
15
import org .elasticsearch .xpack .core .ml .action .GetCalendarEventsAction ;
19
16
import org .elasticsearch .xpack .core .ml .action .GetCalendarsAction ;
20
17
import org .elasticsearch .xpack .core .ml .action .util .QueryPage ;
21
18
import org .elasticsearch .xpack .core .ml .calendars .ScheduledEvent ;
22
19
import org .elasticsearch .xpack .core .ml .job .config .Job ;
23
20
import org .elasticsearch .xpack .core .ml .utils .ExceptionsHelper ;
21
+ import org .elasticsearch .xpack .ml .job .persistence .JobConfigProvider ;
24
22
import org .elasticsearch .xpack .ml .job .persistence .JobResultsProvider ;
25
23
import org .elasticsearch .xpack .ml .job .persistence .ScheduledEventsQueryBuilder ;
26
24
27
25
import java .util .Collections ;
28
- import java .util .List ;
29
26
import java .util .function .Supplier ;
30
27
31
28
public class TransportGetCalendarEventsAction extends HandledTransportAction <GetCalendarEventsAction .Request ,
32
29
GetCalendarEventsAction .Response > {
33
30
34
31
private final JobResultsProvider jobResultsProvider ;
35
- private final ClusterService clusterService ;
32
+ private final JobConfigProvider jobConfigProvider ;
36
33
37
34
@ Inject
38
35
public TransportGetCalendarEventsAction (Settings settings , TransportService transportService ,
39
- ActionFilters actionFilters , ClusterService clusterService ,
40
- JobResultsProvider jobResultsProvider ) {
36
+ ActionFilters actionFilters , JobResultsProvider jobResultsProvider ,
37
+ JobConfigProvider jobConfigProvider ) {
41
38
super (settings , GetCalendarEventsAction .NAME , transportService , actionFilters ,
42
39
(Supplier <GetCalendarEventsAction .Request >) GetCalendarEventsAction .Request ::new );
43
40
this .jobResultsProvider = jobResultsProvider ;
44
- this .clusterService = clusterService ;
41
+ this .jobConfigProvider = jobConfigProvider ;
45
42
}
46
43
47
44
@ Override
@@ -67,26 +64,28 @@ protected void doExecute(Task task, GetCalendarEventsAction.Request request,
67
64
);
68
65
69
66
if (request .getJobId () != null ) {
70
- ClusterState state = clusterService .state ();
71
- MlMetadata currentMlMetadata = MlMetadata .getMlMetadata (state );
72
67
73
- List <String > jobGroups ;
74
- String requestId = request .getJobId ();
68
+ jobConfigProvider .getJob (request .getJobId (), ActionListener .wrap (
69
+ jobBuiler -> {
70
+ Job job = jobBuiler .build ();
71
+ jobResultsProvider .scheduledEventsForJob (request .getJobId (), job .getGroups (), query , eventsListener );
75
72
76
- Job job = currentMlMetadata .getJobs ().get (request .getJobId ());
77
- if (job == null ) {
78
- // Check if the requested id is a job group
79
- if (currentMlMetadata .isGroupOrJob (request .getJobId ()) == false ) {
80
- listener .onFailure (ExceptionsHelper .missingJobException (request .getJobId ()));
81
- return ;
82
- }
83
- jobGroups = Collections .singletonList (request .getJobId ());
84
- requestId = null ;
85
- } else {
86
- jobGroups = job .getGroups ();
87
- }
88
-
89
- jobResultsProvider .scheduledEventsForJob (requestId , jobGroups , query , eventsListener );
73
+ },
74
+ jobNotFound -> {
75
+ // is the request Id a group?
76
+ jobConfigProvider .groupExists (request .getJobId (), ActionListener .wrap (
77
+ groupExists -> {
78
+ if (groupExists ) {
79
+ jobResultsProvider .scheduledEventsForJob (
80
+ null , Collections .singletonList (request .getJobId ()), query , eventsListener );
81
+ } else {
82
+ listener .onFailure (ExceptionsHelper .missingJobException (request .getJobId ()));
83
+ }
84
+ },
85
+ listener ::onFailure
86
+ ));
87
+ }
88
+ ));
90
89
} else {
91
90
jobResultsProvider .scheduledEvents (query , eventsListener );
92
91
}
0 commit comments