diff --git a/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java b/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java index 0482e39..efafe3b 100644 --- a/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java +++ b/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java @@ -16,6 +16,7 @@ package com.comcast.tvx.cloud; +import java.util.Map; import java.util.UUID; import org.codehaus.jackson.annotate.JsonProperty; @@ -43,6 +44,10 @@ public final class MetaData { @JsonProperty private String serviceName; + /** The parameter map. */ + @JsonProperty + private Map parameters; + /** * Instantiates a new worker metadata. */ @@ -106,4 +111,24 @@ public int getListenPort() { public String getServiceName() { return serviceName; } + + /** + * Gets the parameter map. + * + * @return the parameter map + */ + @JsonProperty + public Map getParameters() { + return parameters; + } + + /** + * Sets the parameter map. + * @param parameters - The parameter map + * @return void + */ + @JsonProperty + public void setParameters(Map parameters) { + this.parameters = parameters; + } } diff --git a/discovery-client/src/main/java/com/comcast/tvx/cloud/RegistrationClient.java b/discovery-client/src/main/java/com/comcast/tvx/cloud/RegistrationClient.java index e012eff..4fd6b5c 100644 --- a/discovery-client/src/main/java/com/comcast/tvx/cloud/RegistrationClient.java +++ b/discovery-client/src/main/java/com/comcast/tvx/cloud/RegistrationClient.java @@ -65,6 +65,27 @@ public final class RegistrationClient { /** The log. */ private Logger log = LoggerFactory.getLogger(this.getClass()); + /** Payload parameters." */ + private Map parameters; + + /** + * Instantiates a new registration client. + * + * @param curatorFramework the curator framework + * @param basePath Zookeeper registration path + * @param flavor Application flavor of this client. + * @param listenAddress Local IP address + * @param serviceSpec A list of services and corresponding ports. + * @param parameters A map of optional payload parameters. + */ + public RegistrationClient(CuratorFramework curatorFramework, String basePath, + String flavor, String listenAddress, + String serviceSpec, + Map parameters) { + this(curatorFramework, basePath, flavor, listenAddress, serviceSpec); + this.parameters = parameters; + } + /** * Instantiates a new registration client. * @@ -80,6 +101,7 @@ public RegistrationClient(CuratorFramework curatorFramework, String basePath, this(curatorFramework, basePath, flavor, listenAddress, ServiceUtil.parseServiceSpec(serviceSpec)); } + /** * Instantiates a new registration client. * @@ -120,7 +142,7 @@ public RegistrationClient advertiseAvailability() { String regPath = constructRegistrationPath(basePath, flavor); int port = entry.getValue().intValue(); ServiceDiscovery discovery = ServiceUtil.getDiscovery(regPath, curatorFramework); - ServiceInstance service = ServiceUtil.getServiceInstance(serviceName, port, listenAddress); + ServiceInstance service = ServiceUtil.getServiceInstance(serviceName, port, listenAddress, parameters); /* * Having >1 instance with of the same name with same listenAddress + listPort is diff --git a/discovery-client/src/main/java/com/comcast/tvx/cloud/ServiceUtil.java b/discovery-client/src/main/java/com/comcast/tvx/cloud/ServiceUtil.java index 52d7d74..6826145 100644 --- a/discovery-client/src/main/java/com/comcast/tvx/cloud/ServiceUtil.java +++ b/discovery-client/src/main/java/com/comcast/tvx/cloud/ServiceUtil.java @@ -73,8 +73,11 @@ protected static Map parseServiceSpec(String serviceSpec) { * @return single instance of RegistrationClient * @throws Exception the exception */ - protected static ServiceInstance getServiceInstance(String serviceName, int servicePort, - String serviceAddress) throws Exception { + protected static ServiceInstance getServiceInstance( + String serviceName, + int servicePort, + String serviceAddress, + Map parameters) throws Exception { ServiceInstanceBuilder builder = ServiceInstance.builder(); @@ -82,9 +85,11 @@ protected static ServiceInstance getServiceInstance(String serviceName // ethernet device String registerAddress = (serviceAddress == null) ? builder.build().getAddress() : serviceAddress; - builder.name(serviceName).payload(new MetaData(UUID.randomUUID(), registerAddress, servicePort, serviceName)).id( - registerAddress + ":" + String.valueOf(servicePort)).serviceType(ServiceType.DYNAMIC).address( - registerAddress).port(servicePort); + MetaData metadata = new MetaData(UUID.randomUUID(), registerAddress, servicePort, serviceName); + metadata.setParameters(parameters); + + builder.name(serviceName).payload(metadata).id(registerAddress + ":" + + String.valueOf(servicePort)).serviceType(ServiceType.DYNAMIC).address(registerAddress).port(servicePort); return builder.build(); }