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