20
20
import org .elasticsearch .rest .XContentRestResponse ;
21
21
import org .elasticsearch .rest .XContentThrowableRestResponse ;
22
22
import org .elasticsearch .rest .action .support .RestXContentBuilder ;
23
+ import org .elasticsearch .river .RiverIndexName ;
24
+ import org .elasticsearch .river .RiverSettings ;
23
25
import org .elasticsearch .river .mongodb .MongoDBRiver ;
26
+ import org .elasticsearch .river .mongodb .MongoDBRiverDefinition ;
27
+ import org .elasticsearch .river .mongodb .Status ;
24
28
import org .elasticsearch .river .mongodb .util .MongoDBRiverHelper ;
25
29
import org .elasticsearch .search .SearchHit ;
26
30
27
31
public class RestMongoDBRiverAction extends BaseRestHandler {
28
32
29
- private static final String BASE_URL = "/_river/" + MongoDBRiver . TYPE ;
33
+ private final String riverIndexName ;
30
34
31
35
@ Inject
32
- public RestMongoDBRiverAction (Settings settings , Client client , RestController controller ) {
36
+ public RestMongoDBRiverAction (Settings settings , Client client , RestController controller , @ RiverIndexName String riverIndexName ) {
33
37
super (settings , client );
34
- controller .registerHandler (RestRequest .Method .GET , BASE_URL + "/{action}" , this );
35
- controller .registerHandler (RestRequest .Method .POST , BASE_URL + "/{river}/{action}" , this );
38
+ this .riverIndexName = riverIndexName ;
39
+ String baseUrl = "/" + riverIndexName + "/" + MongoDBRiver .TYPE ;
40
+ controller .registerHandler (RestRequest .Method .GET , baseUrl + "/{action}" , this );
41
+ controller .registerHandler (RestRequest .Method .POST , baseUrl + "/{river}/{action}" , this );
36
42
}
37
43
38
44
@ Override
@@ -61,7 +67,7 @@ private void start(RestRequest request, RestChannel channel) {
61
67
respondError (request , channel , "Parameter 'river' is required" , RestStatus .BAD_REQUEST );
62
68
return ;
63
69
}
64
- MongoDBRiverHelper .setRiverEnabled (client , river , true );
70
+ MongoDBRiverHelper .setRiverStatus (client , river , Status . RUNNING );
65
71
respondSuccess (request , channel , RestStatus .OK );
66
72
}
67
73
@@ -71,7 +77,7 @@ private void stop(RestRequest request, RestChannel channel) {
71
77
respondError (request , channel , "Parameter 'river' is required" , RestStatus .BAD_REQUEST );
72
78
return ;
73
79
}
74
- MongoDBRiverHelper .setRiverEnabled (client , river , false );
80
+ MongoDBRiverHelper .setRiverStatus (client , river , Status . STOPPED );
75
81
respondSuccess (request , channel , RestStatus .OK );
76
82
}
77
83
@@ -120,16 +126,23 @@ private void errorResponse(RestRequest request, RestChannel channel, Throwable e
120
126
}
121
127
122
128
private List <Map <String , Object >> getRivers () {
123
- SearchResponse searchResponse = client .prepareSearch ("_river" ).setQuery (new FieldQueryBuilder ("type" , "mongodb" )).execute ()
124
- .actionGet ();
129
+ SearchResponse searchResponse = client .prepareSearch ("_river" )
130
+ .setQuery (new FieldQueryBuilder ("type" , "mongodb" ))
131
+ .execute ().actionGet ();
125
132
long totalHits = searchResponse .getHits ().totalHits ();
126
133
logger .trace ("totalHits: {}" , totalHits );
127
134
List <Map <String , Object >> rivers = new ArrayList <Map <String , Object >>();
128
135
for (SearchHit hit : searchResponse .getHits ().hits ()) {
129
136
Map <String , Object > source = new HashMap <String , Object >();
130
- source .put ("name" , hit .getType ());
131
- source .put ("enabled" , MongoDBRiverHelper .isRiverEnabled (client , hit .getType ()));
137
+ String riverName = hit .getType ();
138
+ RiverSettings riverSettings = new RiverSettings (null , hit .getSource ());
139
+ MongoDBRiverDefinition definition = MongoDBRiverDefinition .parseSettings (riverName , riverIndexName , riverSettings , null );
140
+
141
+ source .put ("name" , riverName );
142
+ source .put ("status" , MongoDBRiverHelper .getRiverStatus (client , hit .getType ()));
132
143
source .put ("settings" , hit .getSource ());
144
+ source .put ("lastTimestamp" , MongoDBRiver .getLastTimestamp (client , definition ));
145
+ source .put ("indexCount" , MongoDBRiver .getIndexCount (client , definition ));
133
146
logger .trace ("source: {}" , hit .getSourceAsString ());
134
147
rivers .add (source );
135
148
}
0 commit comments