Added LoadBalancerClient.reconstructURI to take an URI with the service as hostname and inject a real host and port.
Added tests for RibbonInterceptor and RibbonLoadBalancerClient.
fixes gh-37
The problem manifests itself as errors in the Eureka server
log (gh-47), but originates in the client because it is sending
requests to /eureka/apps/{NAME}/{ID} with the wrong ID. The
InstanceInfo has an ID that is derived (for preference) from
the EurekaInstanceConfig.dataCenterInfo, so that's the best
way to fix it.
See gh-63, Fixes gh-47
Unfortunately only properties that have been set show up (unlike
/configprops), but possibly better than nothing. You can see some
in the Eureka server or in the customers sample (once it has
tries to contact the stores service and Ribbon is up and running).
Fixes gh-38
/v2/* -> /eureka/api/*
The prefix can't be /eureka because we use that for static
resources. Note that the "api" prefix gets passed to the
Jersey resources as a "version" (and defaults to "v2" when
it can't be parsed).
Fixes gh-41
This makes perfect sense since there is already support in the API.
Unfortunately Eureka also uses that information to set the Server
zones by default (duh?!) - see DiscoveryClient.getZone(InstanceInfo),
so unless you aggressively update them, the zones will all be the same
in all servers.
I fixed that problem by unconditionally applying the "domain as zone"
guess algorithm, which is fine unless you actually want to use
the Amazon metadata. So that's an outstanding problem
See gh-30
A EurekaInstanceConfig can declare a "zone" in its metadataMap, and then
it will be matched by the RibbonLoadBalancerClient. The zone of a server
is derived from the hostname - it is the whole host name or the host name
excluding the least significant subdomain (period separated identifier).
Fixes gh-29