Search in sources :

Example 1 with ZKServer

use of com.linkedin.d2.discovery.stores.zk.ZKServer in project rest.li by linkedin.

the class LoadBalancerClientCli method getServiceClustersURIsInfo.

public Map<String, UriProperties> getServiceClustersURIsInfo(String zkserver, String d2path, String serviceName) throws IOException, IllegalStateException, URISyntaxException, PropertyStoreException {
    Map<String, UriProperties> map = new HashMap<String, UriProperties>();
    // zk stores
    String scstoreString = zkserver + ZKFSUtil.servicePath(d2path);
    String uristoreString = zkserver + ZKFSUtil.uriPath(d2path);
    ZooKeeperPermanentStore<ServiceProperties> zkServiceRegistry = (ZooKeeperPermanentStore<ServiceProperties>) getStore(_zkclient, scstoreString, new ServicePropertiesJsonSerializer());
    ZooKeeperEphemeralStore<UriProperties> zkUriRegistry = (ZooKeeperEphemeralStore<UriProperties>) getEphemeralStore(_zkclient, uristoreString, new UriPropertiesJsonSerializer(), new UriPropertiesMerger());
    List<String> currentservices = zkServiceRegistry.ls();
    for (String service : currentservices) {
        if (service.equals(serviceName)) {
            String clusterName = zkServiceRegistry.get(serviceName).getClusterName();
            UriProperties uripros = zkUriRegistry.get(clusterName);
            map.put(clusterName, uripros);
        }
    }
    return map;
}
Also used : HashMap(java.util.HashMap) ServicePropertiesJsonSerializer(com.linkedin.d2.balancer.properties.ServicePropertiesJsonSerializer) ZooKeeperPermanentStore(com.linkedin.d2.discovery.stores.zk.ZooKeeperPermanentStore) UriPropertiesMerger(com.linkedin.d2.balancer.properties.UriPropertiesMerger) ZooKeeperEphemeralStore(com.linkedin.d2.discovery.stores.zk.ZooKeeperEphemeralStore) UriPropertiesJsonSerializer(com.linkedin.d2.balancer.properties.UriPropertiesJsonSerializer) ServiceProperties(com.linkedin.d2.balancer.properties.ServiceProperties) UriProperties(com.linkedin.d2.balancer.properties.UriProperties)

Example 2 with ZKServer

use of com.linkedin.d2.discovery.stores.zk.ZKServer in project rest.li by linkedin.

the class LoadBalancerClientCli method printStore.

public static String printStore(ZKConnection zkclient, String zkserver, String d2path, String cluster, String service, String serviceGroup) throws URISyntaxException, IOException, PropertyStoreException {
    StringBuilder sb = new StringBuilder();
    ZooKeeperPermanentStore<ClusterProperties> zkClusterRegistry = null;
    ZooKeeperPermanentStore<ServiceProperties> zkServiceRegistry = null;
    ZooKeeperEphemeralStore<UriProperties> zkUriRegistry = null;
    String clstoreString = zkserver + ZKFSUtil.clusterPath(d2path);
    String uristoreString = zkserver + ZKFSUtil.uriPath(d2path);
    zkClusterRegistry = (ZooKeeperPermanentStore<ClusterProperties>) getStore(zkclient, clstoreString, new ClusterPropertiesJsonSerializer());
    zkUriRegistry = (ZooKeeperEphemeralStore<UriProperties>) getEphemeralStore(zkclient, uristoreString, new UriPropertiesJsonSerializer(), new UriPropertiesMerger());
    if (serviceGroup != null) {
        String scstoreString = zkserver + ZKFSUtil.servicePath(d2path, serviceGroup);
        zkServiceRegistry = (ZooKeeperPermanentStore<ServiceProperties>) getStore(zkclient, scstoreString, new ServicePropertiesJsonSerializer());
    } else {
        String scstoreString = zkserver + ZKFSUtil.servicePath(d2path);
        zkServiceRegistry = (ZooKeeperPermanentStore<ServiceProperties>) getStore(zkclient, scstoreString, new ServicePropertiesJsonSerializer());
    }
    sb.append(printStore(zkClusterRegistry, zkUriRegistry, cluster));
    if (zkServiceRegistry.get(service).getClusterName().equals(cluster)) {
        sb.append(printService(zkServiceRegistry, service));
    }
    return sb.toString();
}
Also used : UriPropertiesJsonSerializer(com.linkedin.d2.balancer.properties.UriPropertiesJsonSerializer) ServiceProperties(com.linkedin.d2.balancer.properties.ServiceProperties) ClusterPropertiesJsonSerializer(com.linkedin.d2.balancer.properties.ClusterPropertiesJsonSerializer) ServicePropertiesJsonSerializer(com.linkedin.d2.balancer.properties.ServicePropertiesJsonSerializer) UriProperties(com.linkedin.d2.balancer.properties.UriProperties) ClusterProperties(com.linkedin.d2.balancer.properties.ClusterProperties) UriPropertiesMerger(com.linkedin.d2.balancer.properties.UriPropertiesMerger)

Example 3 with ZKServer

use of com.linkedin.d2.discovery.stores.zk.ZKServer in project rest.li by linkedin.

the class LoadBalancerClientCli method getServiceURIsProps.

public Set<UriProperties> getServiceURIsProps(String zkserver, String d2path, String serviceName) throws IOException, IllegalStateException, URISyntaxException, PropertyStoreException {
    Set<UriProperties> uriprops = new HashSet<UriProperties>();
    // zk stores
    String scstoreString = zkserver + ZKFSUtil.servicePath(d2path);
    String uristoreString = zkserver + ZKFSUtil.uriPath(d2path);
    ZooKeeperPermanentStore<ServiceProperties> zkServiceRegistry = (ZooKeeperPermanentStore<ServiceProperties>) getStore(_zkclient, scstoreString, new ServicePropertiesJsonSerializer());
    ZooKeeperEphemeralStore<UriProperties> zkUriRegistry = (ZooKeeperEphemeralStore<UriProperties>) getEphemeralStore(_zkclient, uristoreString, new UriPropertiesJsonSerializer(), new UriPropertiesMerger());
    String clusterName = zkServiceRegistry.get(serviceName).getClusterName();
    UriProperties uripros = zkUriRegistry.get(clusterName);
    uriprops.add(uripros);
    return uriprops;
}
Also used : UriPropertiesJsonSerializer(com.linkedin.d2.balancer.properties.UriPropertiesJsonSerializer) ServiceProperties(com.linkedin.d2.balancer.properties.ServiceProperties) ServicePropertiesJsonSerializer(com.linkedin.d2.balancer.properties.ServicePropertiesJsonSerializer) UriProperties(com.linkedin.d2.balancer.properties.UriProperties) ZooKeeperPermanentStore(com.linkedin.d2.discovery.stores.zk.ZooKeeperPermanentStore) UriPropertiesMerger(com.linkedin.d2.balancer.properties.UriPropertiesMerger) ZooKeeperEphemeralStore(com.linkedin.d2.discovery.stores.zk.ZooKeeperEphemeralStore) HashSet(java.util.HashSet)

Example 4 with ZKServer

use of com.linkedin.d2.discovery.stores.zk.ZKServer in project rest.li by linkedin.

the class LoadBalancerClientCli method printStores.

public static String printStores(ZKConnection zkclient, String zkserver, String d2path) throws IOException, IllegalStateException, URISyntaxException, PropertyStoreException, Exception {
    int serviceCount = 0;
    String zkstr = "\nZKServer:" + zkserver;
    StringBuilder sb = new StringBuilder();
    Set<String> currentservices = new HashSet<String>();
    Map<String, ZooKeeperPermanentStore<ServiceProperties>> zkServiceRegistryMap = new HashMap<String, ZooKeeperPermanentStore<ServiceProperties>>();
    Map<String, List<String>> servicesGroupMap = new HashMap<String, List<String>>();
    // zk stores
    String clstoreString = zkserver + ZKFSUtil.clusterPath(d2path);
    String uristoreString = zkserver + ZKFSUtil.uriPath(d2path);
    ZooKeeperPermanentStore<ClusterProperties> zkClusterRegistry = (ZooKeeperPermanentStore<ClusterProperties>) getStore(zkclient, clstoreString, new ClusterPropertiesJsonSerializer());
    ZooKeeperEphemeralStore<UriProperties> zkUriRegistry = (ZooKeeperEphemeralStore<UriProperties>) getEphemeralStore(zkclient, uristoreString, new UriPropertiesJsonSerializer(), new UriPropertiesMerger());
    List<String> currentclusters = zkClusterRegistry.ls();
    List<String> currenturis = zkUriRegistry.ls();
    List<String> servicesGroups = getServicesGroups(zkclient, d2path);
    for (String serviceGroup : servicesGroups) {
        String scstoreString = zkserver + ZKFSUtil.servicePath(d2path, serviceGroup);
        ZooKeeperPermanentStore<ServiceProperties> zkServiceRegistry = (ZooKeeperPermanentStore<ServiceProperties>) getStore(zkclient, scstoreString, new ServicePropertiesJsonSerializer());
        zkServiceRegistryMap.put(serviceGroup, zkServiceRegistry);
        List<String> services = zkServiceRegistry.ls();
        currentservices.addAll(services);
        servicesGroupMap.put(serviceGroup, services);
        serviceCount += services.size();
    }
    sb.append(zkstr);
    sb.append(" Total Clusters:");
    sb.append(currentclusters.size());
    sb.append(zkstr);
    sb.append(" Total Services:");
    sb.append(serviceCount);
    sb.append(zkstr);
    sb.append(" Total URIs:");
    sb.append(currenturis.size());
    sb.append("\n============================================================");
    sb.append("\nSERVICE GROUPS");
    for (String serviceGroup : servicesGroupMap.keySet()) {
        sb.append("\nGROUP:" + serviceGroup + "           Services:" + servicesGroupMap.get(serviceGroup));
    }
    for (String cluster : currentclusters) {
        int count = 0;
        sb.append("\n============================================================");
        sb.append("\nCLUSTER '");
        sb.append(cluster);
        sb.append("':");
        for (String service : currentservices) {
            for (String serviceGroup : servicesGroupMap.keySet()) {
                ZooKeeperPermanentStore<ServiceProperties> zkStorePropsForSerivceGroup = zkServiceRegistryMap.get(serviceGroup);
                if (zkStorePropsForSerivceGroup != null) {
                    ServiceProperties serviceProps = zkStorePropsForSerivceGroup.get(service);
                    if (serviceProps != null) {
                        if (cluster.equals(serviceProps.getClusterName())) {
                            sb.append("\n-------------------");
                            sb.append("\nSERVICE '" + service + "':");
                            sb.append(printStore(zkClusterRegistry, zkUriRegistry, zkServiceRegistryMap.get(serviceGroup), cluster, service));
                            count++;
                            break;
                        }
                    }
                }
            }
        }
        if (count == 0) {
            sb.append(printStore(zkClusterRegistry, zkUriRegistry, cluster));
            sb.append("\nNo services were found in this cluster.");
        }
    }
    return sb.toString();
}
Also used : HashMap(java.util.HashMap) ServicePropertiesJsonSerializer(com.linkedin.d2.balancer.properties.ServicePropertiesJsonSerializer) ZooKeeperPermanentStore(com.linkedin.d2.discovery.stores.zk.ZooKeeperPermanentStore) UriPropertiesMerger(com.linkedin.d2.balancer.properties.UriPropertiesMerger) ZooKeeperEphemeralStore(com.linkedin.d2.discovery.stores.zk.ZooKeeperEphemeralStore) UriPropertiesJsonSerializer(com.linkedin.d2.balancer.properties.UriPropertiesJsonSerializer) ServiceProperties(com.linkedin.d2.balancer.properties.ServiceProperties) ClusterPropertiesJsonSerializer(com.linkedin.d2.balancer.properties.ClusterPropertiesJsonSerializer) UriProperties(com.linkedin.d2.balancer.properties.UriProperties) ClusterProperties(com.linkedin.d2.balancer.properties.ClusterProperties) List(java.util.List) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet)

Example 5 with ZKServer

use of com.linkedin.d2.discovery.stores.zk.ZKServer in project rest.li by linkedin.

the class TestD2Config method testSetup.

@BeforeMethod
public void testSetup() throws IOException, Exception {
    // Startup zookeeper server
    try {
        _zkServer = new ZKServer(ZK_PORT);
        _zkServer.startup();
    } catch (IOException e) {
        fail("unable to instantiate real zk server on port " + ZK_PORT);
        e.printStackTrace();
    }
    // Client
    try {
        _zkclient = ZKTestUtil.getConnection(_zkHosts, 10000);
    } catch (Exception e) {
        fail("unable to startup zk client.");
        e.printStackTrace();
    }
}
Also used : ZKServer(com.linkedin.d2.discovery.stores.zk.ZKServer) IOException(java.io.IOException) URISyntaxException(java.net.URISyntaxException) PartitionAccessException(com.linkedin.d2.balancer.util.partitions.PartitionAccessException) PropertyStoreException(com.linkedin.d2.discovery.stores.PropertyStoreException) KeeperException(org.apache.zookeeper.KeeperException) IOException(java.io.IOException) BeforeMethod(org.testng.annotations.BeforeMethod)

Aggregations

ServiceProperties (com.linkedin.d2.balancer.properties.ServiceProperties)6 ServicePropertiesJsonSerializer (com.linkedin.d2.balancer.properties.ServicePropertiesJsonSerializer)6 ZKServer (com.linkedin.d2.discovery.stores.zk.ZKServer)6 IOException (java.io.IOException)6 UriProperties (com.linkedin.d2.balancer.properties.UriProperties)5 UriPropertiesJsonSerializer (com.linkedin.d2.balancer.properties.UriPropertiesJsonSerializer)5 UriPropertiesMerger (com.linkedin.d2.balancer.properties.UriPropertiesMerger)5 ZooKeeperEphemeralStore (com.linkedin.d2.discovery.stores.zk.ZooKeeperEphemeralStore)4 ZooKeeperPermanentStore (com.linkedin.d2.discovery.stores.zk.ZooKeeperPermanentStore)4 BeforeMethod (org.testng.annotations.BeforeMethod)4 ClusterProperties (com.linkedin.d2.balancer.properties.ClusterProperties)3 ClusterPropertiesJsonSerializer (com.linkedin.d2.balancer.properties.ClusterPropertiesJsonSerializer)3 HashMap (java.util.HashMap)3 PartitionAccessException (com.linkedin.d2.balancer.util.partitions.PartitionAccessException)2 PropertyStoreException (com.linkedin.d2.discovery.stores.PropertyStoreException)2 URISyntaxException (java.net.URISyntaxException)2 HashSet (java.util.HashSet)2 KeeperException (org.apache.zookeeper.KeeperException)2 FutureCallback (com.linkedin.common.callback.FutureCallback)1 None (com.linkedin.common.util.None)1