diff --git a/spring-cloud-consul-binder/src/main/java/org/springframework/cloud/consul/binder/ConsulSendingHandler.java b/spring-cloud-consul-binder/src/main/java/org/springframework/cloud/consul/binder/ConsulSendingHandler.java index becc4f3d0..89d6885a9 100644 --- a/spring-cloud-consul-binder/src/main/java/org/springframework/cloud/consul/binder/ConsulSendingHandler.java +++ b/spring-cloud-consul-binder/src/main/java/org/springframework/cloud/consul/binder/ConsulSendingHandler.java @@ -53,7 +53,7 @@ protected void handleMessageInternal(Message message) { // TODO: support headers // TODO: support consul event filters: NodeFilter, ServiceFilter, TagFilter - ResponseEntity event = this.consul.eventFire(this.eventName, (String) payload); + ResponseEntity event = this.consul.eventFire(this.eventName, (String) payload, null); // TODO: return event? } diff --git a/spring-cloud-consul-binder/src/main/java/org/springframework/cloud/consul/binder/EventService.java b/spring-cloud-consul-binder/src/main/java/org/springframework/cloud/consul/binder/EventService.java index fa6973dd8..827c007ba 100644 --- a/spring-cloud-consul-binder/src/main/java/org/springframework/cloud/consul/binder/EventService.java +++ b/spring-cloud-consul-binder/src/main/java/org/springframework/cloud/consul/binder/EventService.java @@ -68,12 +68,12 @@ private void setLastIndex(ResponseEntity response) { } public Event fire(String name, String payload) { - ResponseEntity response = this.consul.eventFire(name, payload); + ResponseEntity response = this.consul.eventFire(name, payload, null); return response.getBody(); } public ResponseEntity> getEventsResponse() { - return this.consul.eventList(); + return this.consul.eventList(null, null, null, null, null); } public List getEvents() { @@ -98,7 +98,8 @@ public List watch(Long lastIndex) { if (this.properties != null) { eventTimeout = this.properties.getEventTimeout(); } - ResponseEntity> watch = this.consul.eventList((long) eventTimeout, index); + ResponseEntity> watch = this.consul.eventList((long) eventTimeout, index, null, null, null, null, + null); return filterEvents(readEvents(watch), lastIndex); } diff --git a/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulClient.java b/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulClient.java index 369a5effb..0761c9e30 100644 --- a/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulClient.java +++ b/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulClient.java @@ -131,15 +131,24 @@ ResponseEntity> getKVValues(@PathVariable String context, @PutExchange(url = "/v1/kv/{context}", contentType = MediaType.TEXT_PLAIN_VALUE) ResponseEntity setKVValue(@PathVariable String context, @RequestBody String value); - @GetExchange("/v1/events") - ResponseEntity> eventList(); + @GetExchange("/v1/event/list") + ResponseEntity> eventList(@RequestParam(name = "name", required = false) String name, + @RequestParam(name = "node", required = false) String node, + @RequestParam(name = "service", required = false) String service, + @RequestParam(name = "tag", required = false) String tag, + @RequestHeader(name = ACL_TOKEN_HEADER, required = false) String aclToken); - @GetExchange("/v1/events") + @GetExchange("/v1/event/list") ResponseEntity> eventList(@RequestParam("wait") @WaitTimeFormat Long eventTimeout, - @RequestParam("index") long index); + @RequestParam("index") long index, @RequestParam(name = "name", required = false) String name, + @RequestParam(name = "node", required = false) String node, + @RequestParam(name = "service", required = false) String service, + @RequestParam(name = "tag", required = false) String tag, + @RequestHeader(name = ACL_TOKEN_HEADER, required = false) String aclToken); @PostExchange("/v1/event/fire/{name}") - ResponseEntity eventFire(@PathVariable String name, @RequestBody String payload); + ResponseEntity eventFire(@PathVariable String name, @RequestBody String payload, + @RequestHeader(name = ACL_TOKEN_HEADER, required = false) String aclToken); class QueryParams { diff --git a/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulClientIntegrationTests.java b/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulClientIntegrationTests.java index d2aec3689..41f5511c1 100644 --- a/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulClientIntegrationTests.java +++ b/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulClientIntegrationTests.java @@ -154,7 +154,7 @@ void getKVValues_WithWaitTimeAndIndexAndAclToken() { @Test void eventListWithWaitTimeAndIndex() { - mockServerClient.when(request().withMethod("GET").withPath("/v1/events")) + mockServerClient.when(request().withMethod("GET").withPath("/v1/event/list")) .respond(response().withStatusCode(200) .withHeaders(new Header("Content-Type", "application/json")) .withBody(json("[\n" + " {\n" + " \"ID\": \"5548d61d-9e97-8e0e-e2b3-1f5f0af5b1a2\",\n" @@ -163,12 +163,12 @@ void eventListWithWaitTimeAndIndex() { + " \"TagFilter\": \"\",\n" + " \"Version\": 1,\n" + " \"LTime\": 19\n" + " }\n" + "]\n"))); - ResponseEntity> response = client.eventList(5L, 2); + ResponseEntity> response = client.eventList(5L, 2, "deploy", null, null, null, null); - mockServerClient.verify( - request().withMethod("GET") - .withPath("/v1/events") - .withQueryStringParameters(Parameter.param("wait", "5s"), Parameter.param("index", "2")), + mockServerClient.verify(request().withMethod("GET") + .withPath("/v1/event/list") + .withQueryStringParameters(Parameter.param("name", "deploy"), Parameter.param("wait", "5s"), + Parameter.param("index", "2")), VerificationTimes.exactly(1)); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);