1919import org .elasticsearch .common .settings .Settings ;
2020import org .elasticsearch .common .settings .SettingsFilter ;
2121import org .elasticsearch .common .xcontent .NamedXContentRegistry ;
22+ import org .elasticsearch .license .XPackLicenseState ;
2223import org .elasticsearch .persistent .PersistentTaskParams ;
24+ import org .elasticsearch .persistent .PersistentTaskState ;
2325import org .elasticsearch .persistent .PersistentTasksExecutor ;
2426import org .elasticsearch .plugins .ActionPlugin ;
2527import org .elasticsearch .plugins .PersistentTaskPlugin ;
2628import org .elasticsearch .plugins .Plugin ;
2729import org .elasticsearch .rest .RestController ;
2830import org .elasticsearch .rest .RestHandler ;
31+ import org .elasticsearch .tasks .Task ;
2932import org .elasticsearch .threadpool .ExecutorBuilder ;
3033import org .elasticsearch .threadpool .FixedExecutorBuilder ;
3134import org .elasticsearch .threadpool .ThreadPool ;
3235import org .elasticsearch .xpack .core .XPackPlugin ;
3336import org .elasticsearch .xpack .core .scheduler .SchedulerEngine ;
37+ import org .elasticsearch .xpack .ml .featureindexbuilder .action .DeleteFeatureIndexBuilderJobAction ;
3438import org .elasticsearch .xpack .ml .featureindexbuilder .action .PutFeatureIndexBuilderJobAction ;
3539import org .elasticsearch .xpack .ml .featureindexbuilder .action .StartFeatureIndexBuilderJobAction ;
40+ import org .elasticsearch .xpack .ml .featureindexbuilder .action .StopFeatureIndexBuilderJobAction ;
41+ import org .elasticsearch .xpack .ml .featureindexbuilder .action .TransportDeleteFeatureIndexBuilderJobAction ;
3642import org .elasticsearch .xpack .ml .featureindexbuilder .action .TransportPutFeatureIndexBuilderJobAction ;
3743import org .elasticsearch .xpack .ml .featureindexbuilder .action .TransportStartFeatureIndexBuilderJobAction ;
44+ import org .elasticsearch .xpack .ml .featureindexbuilder .action .TransportStopFeatureIndexBuilderJobAction ;
3845import org .elasticsearch .xpack .ml .featureindexbuilder .job .FeatureIndexBuilderJob ;
3946import org .elasticsearch .xpack .ml .featureindexbuilder .job .FeatureIndexBuilderJobPersistentTasksExecutor ;
47+ import org .elasticsearch .xpack .ml .featureindexbuilder .job .FeatureIndexBuilderJobState ;
48+ import org .elasticsearch .xpack .ml .featureindexbuilder .rest .action .RestDeleteFeatureIndexBuilderJobAction ;
4049import org .elasticsearch .xpack .ml .featureindexbuilder .rest .action .RestPutFeatureIndexBuilderJobAction ;
4150import org .elasticsearch .xpack .ml .featureindexbuilder .rest .action .RestStartFeatureIndexBuilderJobAction ;
51+ import org .elasticsearch .xpack .ml .featureindexbuilder .rest .action .RestStopFeatureIndexBuilderJobAction ;
4252
4353import java .time .Clock ;
4454import java .util .ArrayList ;
@@ -64,22 +74,30 @@ public class FeatureIndexBuilder extends Plugin implements ActionPlugin, Persist
6474
6575 private final boolean enabled ;
6676 private final Settings settings ;
77+ private final boolean transportClientMode ;
6778
6879 public FeatureIndexBuilder (Settings settings ) {
6980 this .settings = settings ;
7081
7182 // todo: XPackSettings.FEATURE_INDEX_BUILDER_ENABLED.get(settings);
7283 this .enabled = true ;
84+ this .transportClientMode = XPackPlugin .transportClientMode (settings );
7385 }
7486
7587 @ Override
7688 public Collection <Module > createGuiceModules () {
7789 List <Module > modules = new ArrayList <>();
7890
91+ if (transportClientMode ) {
92+ return modules ;
93+ }
94+
7995 modules .add (b -> XPackPlugin .bindFeatureSet (b , FeatureIndexBuilderFeatureSet .class ));
8096 return modules ;
8197 }
8298
99+ protected XPackLicenseState getLicenseState () { return XPackPlugin .getSharedLicenseState (); }
100+
83101 @ Override
84102 public List <RestHandler > getRestHandlers (final Settings settings , final RestController restController ,
85103 final ClusterSettings clusterSettings , final IndexScopedSettings indexScopedSettings , final SettingsFilter settingsFilter ,
@@ -91,7 +109,9 @@ public List<RestHandler> getRestHandlers(final Settings settings, final RestCont
91109
92110 return Arrays .asList (
93111 new RestPutFeatureIndexBuilderJobAction (settings , restController ),
94- new RestStartFeatureIndexBuilderJobAction (settings , restController )
112+ new RestStartFeatureIndexBuilderJobAction (settings , restController ),
113+ new RestStopFeatureIndexBuilderJobAction (settings , restController ),
114+ new RestDeleteFeatureIndexBuilderJobAction (settings , restController )
95115 );
96116 }
97117
@@ -103,13 +123,15 @@ public List<RestHandler> getRestHandlers(final Settings settings, final RestCont
103123
104124 return Arrays .asList (
105125 new ActionHandler <>(PutFeatureIndexBuilderJobAction .INSTANCE , TransportPutFeatureIndexBuilderJobAction .class ),
106- new ActionHandler <>(StartFeatureIndexBuilderJobAction .INSTANCE , TransportStartFeatureIndexBuilderJobAction .class )
126+ new ActionHandler <>(StartFeatureIndexBuilderJobAction .INSTANCE , TransportStartFeatureIndexBuilderJobAction .class ),
127+ new ActionHandler <>(StopFeatureIndexBuilderJobAction .INSTANCE , TransportStopFeatureIndexBuilderJobAction .class ),
128+ new ActionHandler <>(DeleteFeatureIndexBuilderJobAction .INSTANCE , TransportDeleteFeatureIndexBuilderJobAction .class )
107129 );
108130 }
109131
110132 @ Override
111133 public List <ExecutorBuilder <?>> getExecutorBuilders (Settings settings ) {
112- if (false == enabled ) {
134+ if (false == enabled || transportClientMode ) {
113135 return emptyList ();
114136 }
115137
@@ -122,22 +144,27 @@ public List<ExecutorBuilder<?>> getExecutorBuilders(Settings settings) {
122144 @ Override
123145 public List <PersistentTasksExecutor <?>> getPersistentTasksExecutor (ClusterService clusterService , ThreadPool threadPool ,
124146 Client client ) {
125- if (enabled == false ) {
147+ if (enabled == false || transportClientMode ) {
126148 return emptyList ();
127149 }
128150
129151 SchedulerEngine schedulerEngine = new SchedulerEngine (settings , Clock .systemUTC ());
130152 return Collections .singletonList (new FeatureIndexBuilderJobPersistentTasksExecutor (settings , client ,
131153 schedulerEngine , threadPool ));
132154 }
155+
133156 @ Override
134157 public List <NamedXContentRegistry .Entry > getNamedXContent () {
135158 if (enabled == false ) {
136159 return emptyList ();
137160 }
138- return Collections . singletonList (
161+ return Arrays . asList (
139162 new NamedXContentRegistry .Entry (PersistentTaskParams .class , new ParseField ("xpack/feature_index_builder/job" ),
140- FeatureIndexBuilderJob ::fromXContent )
163+ FeatureIndexBuilderJob ::fromXContent ),
164+ new NamedXContentRegistry .Entry (Task .Status .class , new ParseField (FeatureIndexBuilderJobState .NAME ),
165+ FeatureIndexBuilderJobState ::fromXContent ),
166+ new NamedXContentRegistry .Entry (PersistentTaskState .class , new ParseField (FeatureIndexBuilderJobState .NAME ),
167+ FeatureIndexBuilderJobState ::fromXContent )
141168 );
142169 }
143170}
0 commit comments