Commit f3deb045 by Ryan Baxter Committed by Spencer Gibb

Pass along client config in RibbonCommand.run (#1573)

Pass along client config in RibbonCommand.run. Fixes gh-1530
parent ab454f1e
...@@ -131,7 +131,12 @@ public abstract class AbstractLoadBalancingClient<S extends ContextAwareRequest, ...@@ -131,7 +131,12 @@ public abstract class AbstractLoadBalancingClient<S extends ContextAwareRequest,
} }
protected boolean isSecure(final IClientConfig config) { protected boolean isSecure(final IClientConfig config) {
return (config != null) ? config.get(CommonClientConfigKey.IsSecure) if(config != null) {
: this.secure; Boolean result = config.get(CommonClientConfigKey.IsSecure);
if(result != null) {
return result;
}
}
return this.secure;
} }
} }
...@@ -23,6 +23,7 @@ import java.util.List; ...@@ -23,6 +23,7 @@ import java.util.List;
import org.springframework.cloud.netflix.zuul.filters.ZuulProperties; import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
import org.springframework.cloud.netflix.zuul.filters.route.support.AbstractRibbonCommand; import org.springframework.cloud.netflix.zuul.filters.route.support.AbstractRibbonCommand;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import com.netflix.client.config.IClientConfig;
import com.netflix.client.http.HttpRequest; import com.netflix.client.http.HttpRequest;
import com.netflix.client.http.HttpResponse; import com.netflix.client.http.HttpResponse;
import com.netflix.niws.client.http.RestClient; import com.netflix.niws.client.http.RestClient;
...@@ -48,6 +49,12 @@ public class RestClientRibbonCommand extends AbstractRibbonCommand<RestClient, H ...@@ -48,6 +49,12 @@ public class RestClientRibbonCommand extends AbstractRibbonCommand<RestClient, H
super(commandKey, client, context, zuulProperties, zuulFallbackProvider); super(commandKey, client, context, zuulProperties, zuulFallbackProvider);
} }
public RestClientRibbonCommand(String commandKey, RestClient client,
RibbonCommandContext context, ZuulProperties zuulProperties,
ZuulFallbackProvider zuulFallbackProvider, IClientConfig config) {
super(commandKey, client, context, zuulProperties, zuulFallbackProvider, config);
}
@Deprecated @Deprecated
public RestClientRibbonCommand(String commandKey, RestClient restClient, public RestClientRibbonCommand(String commandKey, RestClient restClient,
HttpRequest.Verb verb, String uri, Boolean retryable, HttpRequest.Verb verb, String uri, Boolean retryable,
......
...@@ -57,7 +57,7 @@ public class RestClientRibbonCommandFactory extends AbstractRibbonCommandFactory ...@@ -57,7 +57,7 @@ public class RestClientRibbonCommandFactory extends AbstractRibbonCommandFactory
RestClient restClient = this.clientFactory.getClient(serviceId, RestClient restClient = this.clientFactory.getClient(serviceId,
RestClient.class); RestClient.class);
return new RestClientRibbonCommand(context.getServiceId(), restClient, context, return new RestClientRibbonCommand(context.getServiceId(), restClient, context,
this.zuulProperties, fallbackProvider); this.zuulProperties, fallbackProvider, clientFactory.getClientConfig(serviceId));
} }
public SpringClientFactory getClientFactory() { public SpringClientFactory getClientFactory() {
......
...@@ -24,6 +24,7 @@ import org.springframework.cloud.netflix.zuul.filters.ZuulProperties; ...@@ -24,6 +24,7 @@ import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
import org.springframework.cloud.netflix.zuul.filters.route.RibbonCommandContext; import org.springframework.cloud.netflix.zuul.filters.route.RibbonCommandContext;
import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider; import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider;
import org.springframework.cloud.netflix.zuul.filters.route.support.AbstractRibbonCommand; import org.springframework.cloud.netflix.zuul.filters.route.support.AbstractRibbonCommand;
import com.netflix.client.config.IClientConfig;
/** /**
* @author Spencer Gibb * @author Spencer Gibb
...@@ -46,6 +47,15 @@ public class HttpClientRibbonCommand extends AbstractRibbonCommand<RibbonLoadBal ...@@ -46,6 +47,15 @@ public class HttpClientRibbonCommand extends AbstractRibbonCommand<RibbonLoadBal
super(commandKey, client, context, zuulProperties, zuulFallbackProvider); super(commandKey, client, context, zuulProperties, zuulFallbackProvider);
} }
public HttpClientRibbonCommand(final String commandKey,
final RibbonLoadBalancingHttpClient client,
final RibbonCommandContext context,
final ZuulProperties zuulProperties,
final ZuulFallbackProvider zuulFallbackProvider,
final IClientConfig config) {
super(commandKey, client, context, zuulProperties, zuulFallbackProvider, config);
}
@Override @Override
protected RibbonApacheHttpRequest createRequest() throws Exception { protected RibbonApacheHttpRequest createRequest() throws Exception {
return new RibbonApacheHttpRequest(this.context); return new RibbonApacheHttpRequest(this.context);
......
...@@ -55,7 +55,8 @@ public class HttpClientRibbonCommandFactory extends AbstractRibbonCommandFactory ...@@ -55,7 +55,8 @@ public class HttpClientRibbonCommandFactory extends AbstractRibbonCommandFactory
serviceId, RibbonLoadBalancingHttpClient.class); serviceId, RibbonLoadBalancingHttpClient.class);
client.setLoadBalancer(this.clientFactory.getLoadBalancer(serviceId)); client.setLoadBalancer(this.clientFactory.getLoadBalancer(serviceId));
return new HttpClientRibbonCommand(serviceId, client, context, zuulProperties, zuulFallbackProvider); return new HttpClientRibbonCommand(serviceId, client, context, zuulProperties, zuulFallbackProvider,
clientFactory.getClientConfig(serviceId));
} }
} }
...@@ -24,6 +24,7 @@ import org.springframework.cloud.netflix.zuul.filters.ZuulProperties; ...@@ -24,6 +24,7 @@ import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
import org.springframework.cloud.netflix.zuul.filters.route.RibbonCommandContext; import org.springframework.cloud.netflix.zuul.filters.route.RibbonCommandContext;
import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider; import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider;
import org.springframework.cloud.netflix.zuul.filters.route.support.AbstractRibbonCommand; import org.springframework.cloud.netflix.zuul.filters.route.support.AbstractRibbonCommand;
import com.netflix.client.config.IClientConfig;
/** /**
* @author Spencer Gibb * @author Spencer Gibb
...@@ -46,6 +47,15 @@ public class OkHttpRibbonCommand extends AbstractRibbonCommand<OkHttpLoadBalanci ...@@ -46,6 +47,15 @@ public class OkHttpRibbonCommand extends AbstractRibbonCommand<OkHttpLoadBalanci
super(commandKey, client, context, zuulProperties, zuulFallbackProvider); super(commandKey, client, context, zuulProperties, zuulFallbackProvider);
} }
public OkHttpRibbonCommand(final String commandKey,
final OkHttpLoadBalancingClient client,
final RibbonCommandContext context,
final ZuulProperties zuulProperties,
final ZuulFallbackProvider zuulFallbackProvider,
final IClientConfig config) {
super(commandKey, client, context, zuulProperties, zuulFallbackProvider, config);
}
@Override @Override
protected OkHttpRibbonRequest createRequest() throws Exception { protected OkHttpRibbonRequest createRequest() throws Exception {
return new OkHttpRibbonRequest(this.context); return new OkHttpRibbonRequest(this.context);
......
...@@ -55,7 +55,8 @@ public class OkHttpRibbonCommandFactory extends AbstractRibbonCommandFactory { ...@@ -55,7 +55,8 @@ public class OkHttpRibbonCommandFactory extends AbstractRibbonCommandFactory {
serviceId, OkHttpLoadBalancingClient.class); serviceId, OkHttpLoadBalancingClient.class);
client.setLoadBalancer(this.clientFactory.getLoadBalancer(serviceId)); client.setLoadBalancer(this.clientFactory.getLoadBalancer(serviceId));
return new OkHttpRibbonCommand(serviceId, client, context, zuulProperties, fallbackProvider); return new OkHttpRibbonCommand(serviceId, client, context, zuulProperties, fallbackProvider,
clientFactory.getClientConfig(serviceId));
} }
} }
...@@ -25,6 +25,7 @@ import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider ...@@ -25,6 +25,7 @@ import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider
import org.springframework.http.client.ClientHttpResponse; import org.springframework.http.client.ClientHttpResponse;
import com.netflix.client.AbstractLoadBalancerAwareClient; import com.netflix.client.AbstractLoadBalancerAwareClient;
import com.netflix.client.ClientRequest; import com.netflix.client.ClientRequest;
import com.netflix.client.config.IClientConfig;
import com.netflix.client.http.HttpResponse; import com.netflix.client.http.HttpResponse;
import com.netflix.config.DynamicIntProperty; import com.netflix.config.DynamicIntProperty;
import com.netflix.config.DynamicPropertyFactory; import com.netflix.config.DynamicPropertyFactory;
...@@ -45,6 +46,7 @@ public abstract class AbstractRibbonCommand<LBC extends AbstractLoadBalancerAwar ...@@ -45,6 +46,7 @@ public abstract class AbstractRibbonCommand<LBC extends AbstractLoadBalancerAwar
protected final LBC client; protected final LBC client;
protected RibbonCommandContext context; protected RibbonCommandContext context;
protected ZuulFallbackProvider zuulFallbackProvider; protected ZuulFallbackProvider zuulFallbackProvider;
protected IClientConfig config;
public AbstractRibbonCommand(LBC client, RibbonCommandContext context, public AbstractRibbonCommand(LBC client, RibbonCommandContext context,
ZuulProperties zuulProperties) { ZuulProperties zuulProperties) {
...@@ -59,10 +61,17 @@ public abstract class AbstractRibbonCommand<LBC extends AbstractLoadBalancerAwar ...@@ -59,10 +61,17 @@ public abstract class AbstractRibbonCommand<LBC extends AbstractLoadBalancerAwar
public AbstractRibbonCommand(String commandKey, LBC client, public AbstractRibbonCommand(String commandKey, LBC client,
RibbonCommandContext context, ZuulProperties zuulProperties, RibbonCommandContext context, ZuulProperties zuulProperties,
ZuulFallbackProvider fallbackProvider) { ZuulFallbackProvider fallbackProvider) {
this(commandKey, client, context, zuulProperties, fallbackProvider, null);
}
public AbstractRibbonCommand(String commandKey, LBC client,
RibbonCommandContext context, ZuulProperties zuulProperties,
ZuulFallbackProvider fallbackProvider, IClientConfig config) {
super(getSetter(commandKey, zuulProperties)); super(getSetter(commandKey, zuulProperties));
this.client = client; this.client = client;
this.context = context; this.context = context;
this.zuulFallbackProvider = fallbackProvider; this.zuulFallbackProvider = fallbackProvider;
this.config = config;
} }
protected static Setter getSetter(final String commandKey, protected static Setter getSetter(final String commandKey,
...@@ -93,7 +102,7 @@ public abstract class AbstractRibbonCommand<LBC extends AbstractLoadBalancerAwar ...@@ -93,7 +102,7 @@ public abstract class AbstractRibbonCommand<LBC extends AbstractLoadBalancerAwar
final RequestContext context = RequestContext.getCurrentContext(); final RequestContext context = RequestContext.getCurrentContext();
RQ request = createRequest(); RQ request = createRequest();
RS response = this.client.executeWithLoadBalancer(request); RS response = this.client.executeWithLoadBalancer(request, config);
context.set("ribbonResponse", response); context.set("ribbonResponse", response);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment