From 5154b91855fa1521dbd855e47bffcd1cb7c9b5f3 Mon Sep 17 00:00:00 2001 From: Bill Gray Date: Fri, 4 Sep 2015 15:56:52 -0600 Subject: [PATCH] add support for acl tokens in discovery and config --- .../cloud/consul/config/ConsulConfigProperties.java | 2 ++ .../cloud/consul/config/ConsulPropertySource.java | 12 +++++++++--- .../consul/config/ConsulPropertySourceLocator.java | 2 +- .../consul/discovery/ConsulDiscoveryProperties.java | 2 ++ .../cloud/consul/discovery/ConsulLifecycle.java | 6 +++++- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigProperties.java b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigProperties.java index b50b8c26..e202f8b7 100644 --- a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigProperties.java +++ b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigProperties.java @@ -37,4 +37,6 @@ public class ConsulConfigProperties { @NotEmpty private String profileSeparator = ","; + + private String aclToken; } diff --git a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySource.java b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySource.java index 2df1d3ad..27821e69 100644 --- a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySource.java +++ b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySource.java @@ -37,12 +37,14 @@ import com.ecwid.consul.v1.kv.model.GetValue; public class ConsulPropertySource extends EnumerablePropertySource { private String context; + private String aclToken; private Map properties = new LinkedHashMap<>(); - public ConsulPropertySource(String context, ConsulClient source) { + public ConsulPropertySource(String context, ConsulClient source, String aclToken) { super(context, source); this.context = context; + this.aclToken = aclToken; if (!this.context.endsWith("/")) { this.context = this.context + "/"; @@ -50,8 +52,12 @@ public class ConsulPropertySource extends EnumerablePropertySource } public void init() { - Response> response = source.getKVValues(context, - QueryParams.DEFAULT); + Response> response; + if (aclToken == null) { + response = source.getKVValues(context, QueryParams.DEFAULT); + } else { + response = source.getKVValues(context, aclToken, QueryParams.DEFAULT); + } List values = response.getValue(); if (values != null) { diff --git a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocator.java b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocator.java index f96b8d42..46a529b1 100644 --- a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocator.java +++ b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocator.java @@ -77,7 +77,7 @@ public class ConsulPropertySourceLocator implements PropertySourceLocator { } private ConsulPropertySource create(String context) { - return new ConsulPropertySource(context, consul); + return new ConsulPropertySource(context, consul, properties.getAclToken()); } private void addProfiles(List contexts, String baseContext, diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java index b5ab8fa0..e66df8b8 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java @@ -45,6 +45,8 @@ public class ConsulDiscoveryProperties { @Setter(AccessLevel.PRIVATE) private String[] hostInfo = initHostInfo(); + private String aclToken; + private List tags = new ArrayList<>(); private boolean enabled = true; diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java index ff406602..d73e424c 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java @@ -127,7 +127,11 @@ public class ConsulLifecycle extends AbstractDiscoveryLifecycle { protected void register(NewService newService) { log.info("Registering service with consul: {}", newService.toString()); - client.agentServiceRegister(newService); + if (properties.getAclToken() == null) { + client.agentServiceRegister(newService); + } else { + client.agentServiceRegister(newService, properties.getAclToken()); + } if (ttlConfig.isEnabled() && ttlScheduler != null) { ttlScheduler.add(newService); }