/** Create an external/configured server */ @Override public ServerHeartbeat server( String address, int port, boolean isSSL, String clusterId, String displayName, boolean isDynamic) { Objects.requireNonNull(address); Objects.requireNonNull(clusterId); if (address.isEmpty()) { address = "127.0.0.1"; } /* if (port <= 0) { throw new IllegalArgumentException(); } */ ClusterHeartbeat cluster = createCluster(clusterId); ServerHeartbeat server; if (isDynamic) { server = cluster.createDynamicServer(address, port, isSSL); } else { server = cluster.createServer(address, port, isSSL); } if (displayName != null) { server.setDisplayName(displayName); } if (!isDynamic) { cluster.addSeedServer(server); } return server; }
/** Create an external/configured server */ @Override public ServerHeartbeat serverDyn( String address, int port, boolean isSSL, String clusterId, String displayName) { Objects.requireNonNull(address); Objects.requireNonNull(clusterId); /* if (port <= 0) { throw new IllegalArgumentException(); } */ ClusterHeartbeat cluster = createCluster(clusterId); ServerHeartbeat server = cluster.createServer(address, port, isSSL); if (displayName != null) { server.setDisplayName(displayName); } cluster.addDynamicServer(server); return server; }
/** * Create cluster pods using the configuration as a hint. Both the cluster and cluster_hub pods * use this. */ private ServerPod[] buildClusterServers(ClusterHeartbeat cluster, int serverCount) { ArrayList<ServerPod> serversPod = new ArrayList<>(); for (ServerHeartbeat server : cluster.getServers()) { ServerPod serverPod = new ServerPod(serversPod.size()); serversPod.add(serverPod); // XXX: need to manage seed servers // serverPod.setHintServerId(server.getId()); // XXX: serverPod.setServer(server); } /* if (cluster == _serverSelf.getCluster()) { if (serversPod.size() < serverCount && ! isServerPresent(serversPod)) { ServerPod serverPod = new ServerPod(serversPod.size()); serversPod.add(serverPod); serverPod.setServer(_serverSelf); } } */ while (serversPod.size() < serverCount) { serversPod.add(new ServerPod(serversPod.size())); } ServerPod[] serverArray = new ServerPod[serverCount]; for (int i = 0; i < serverCount; i++) { serverArray[i] = serversPod.get(i); } return serverArray; }
private UpdatePod initClusterPod(ClusterHeartbeat cluster) { ServicesAmp rampManager = AmpSystem.currentManager(); RackHeartbeat rack = cluster.findRack("rack"); if (rack == null) { return null; } String podName = "cluster." + cluster.id(); PodBuilderConfig podConfig = _podMap.get(podName); if (podConfig != null) { return null; } UpdatePodBuilder podBuilder = new UpdatePodBuilder(); podBuilder.name("cluster"); podBuilder.cluster(cluster); List<ServerHeartbeat> seedServers = cluster.getServers(); int count = Math.max(3, seedServers.size()); ServerPod[] servers = buildClusterServers(cluster, count); int index = 0; /* for (ServerHeartbeat server : cluster.getSeedServers()) { // ServerPod server = servers[i]; ServerBartender serverCluster = server; // serversHint.get(i); if (index < servers.length && ! serverCluster.getId().startsWith("127")) { //System.out.println("ZOHP: " + serverCluster.getAddress()); //server.setHintServerId(serverCluster.getHintServerId()); servers[index++].setHintServerId(serverCluster.getId()); } } */ /* for (int i = 0; i < servers.length; i++) { ServerPod server = servers[i]; if (i < seedServers.size()) { String hintId = seedServers.get(i).getId(); if (! hintId.startsWith("127")) { server.setHintServerId(hintId); } } } */ podBuilder.pod(servers); podBuilder.depth(3); podBuilder.primaryCount(count); return podBuilder.build(); }