/** * Returns the instances in the cluster with the given tag. * * TODO: refactor code to use this method over {@link #getInstancesWithTag(HelixManager, String)} if applicable to * reuse instance configs in order to reduce ZK accesses */ public static List<String> getInstancesWithTag(List<InstanceConfig> instanceConfigs, String tag) { List<String> instancesWithTag = new ArrayList<>(); for (InstanceConfig instanceConfig : instanceConfigs) { if (instanceConfig.containsTag(tag)) { instancesWithTag.add(instanceConfig.getInstanceName()); } } return instancesWithTag; }
/** * Returns the enabled instances in the cluster with the given tag. * * TODO: refactor code to use this method over {@link #getEnabledInstancesWithTag(HelixManager, String)} if applicable * to reuse instance configs in order to reduce ZK accesses */ public static List<String> getEnabledInstancesWithTag(List<InstanceConfig> instanceConfigs, String tag) { List<String> enabledInstancesWithTag = new ArrayList<>(); for (InstanceConfig instanceConfig : instanceConfigs) { if (instanceConfig.getInstanceEnabled() && instanceConfig.containsTag(tag)) { enabledInstancesWithTag.add(instanceConfig.getInstanceName()); } } return enabledInstancesWithTag; }
/** * Return all the nodes that are tagged with given instance tag. * @param instanceTag The instance group tag. */ public Set<String> getInstancesWithTag(String instanceTag) { Set<String> taggedInstances = new HashSet<>(); for (String instance : _instanceConfigMap.keySet()) { InstanceConfig instanceConfig = _instanceConfigMap.get(instance); if (instanceConfig != null && instanceConfig.containsTag(instanceTag)) { taggedInstances.add(instance); } } return taggedInstances; }
/** * Return all the nodes that are tagged with given instance tag. * @param instanceTag The instance group tag. */ public Set<String> getInstancesWithTag(String instanceTag) { Set<String> taggedInstances = new HashSet<>(); for (String instance : _instanceConfigMap.keySet()) { InstanceConfig instanceConfig = _instanceConfigMap.get(instance); if (instanceConfig != null && instanceConfig.containsTag(instanceTag)) { taggedInstances.add(instance); } } return taggedInstances; }
@Override public List<String> getInstancesInClusterWithTag(String clusterName, String tag) { String memberInstancesPath = PropertyPathBuilder.instance(clusterName); List<String> instances = _zkClient.getChildren(memberInstancesPath); List<String> result = new ArrayList<String>(); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); for (String instanceName : instances) { InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); if (config == null) { throw new IllegalStateException(String .format("Instance %s does not have a config, cluster might be in bad state", instanceName)); } if (config.containsTag(tag)) { result.add(instanceName); } } return result; }
@Override public List<String> getInstancesInClusterWithTag(String clusterName, String tag) { String memberInstancesPath = PropertyPathBuilder.instance(clusterName); List<String> instances = _zkClient.getChildren(memberInstancesPath); List<String> result = new ArrayList<String>(); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); for (String instanceName : instances) { InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); if (config == null) { throw new IllegalStateException(String .format("Instance %s does not have a config, cluster might be in bad state", instanceName)); } if (config.containsTag(tag)) { result.add(instanceName); } } return result; }
for (String instanceName : allNodes) { if (clusterData.getInstanceConfigMap().get(instanceName) .containsTag(currentIdealState.getInstanceGroupTag())) { taggedNodes.add(instanceName); if (liveInstance.containsKey(instanceName)) {
for (String instanceName : allNodes) { if (clusterData.getInstanceConfigMap().get(instanceName) .containsTag(currentIdealState.getInstanceGroupTag())) { taggedNodes.add(instanceName); if (liveInstance.containsKey(instanceName)) {
/** * Validate instances for each partition is on different zone and with necessary tagged instances. */ private void validateZoneAndTagIsolation(IdealState is, ExternalView ev, int expectedReplica) { String tag = is.getInstanceGroupTag(); for (String partition : is.getPartitionSet()) { Set<String> assignedZones = new HashSet<String>(); Map<String, String> assignmentMap = ev.getRecord().getMapField(partition); Set<String> instancesInEV = assignmentMap.keySet(); // TODO: preference List is not persisted in IS. //Assert.assertEquals(instancesInEV, instancesInIs); for (String instance : instancesInEV) { assignedZones.add(_nodeToZoneMap.get(instance)); if (tag != null) { InstanceConfig config = _gSetupTool.getClusterManagementTool().getInstanceConfig(CLUSTER_NAME, instance); Assert.assertTrue(config.containsTag(tag)); } } Assert.assertEquals(assignedZones.size(), expectedReplica); } }
/** * Validate each partition is different instances and with necessary tagged instances. */ private void validateIsolation(IdealState is, ExternalView ev, int expectedReplica) { String tag = is.getInstanceGroupTag(); for (String partition : is.getPartitionSet()) { Map<String, String> assignmentMap = ev.getRecord().getMapField(partition); Set<String> instancesInEV = assignmentMap.keySet(); Assert.assertEquals(instancesInEV.size(), expectedReplica); for (String instance : instancesInEV) { if (tag != null) { InstanceConfig config = _gSetupTool.getClusterManagementTool().getInstanceConfig(CLUSTER_NAME, instance); Assert.assertTrue(config.containsTag(tag)); } } } }
InstanceConfig config = accessor.getProperty(accessor.keyBuilder().instanceConfig(hostName)); Assert.assertTrue(config.containsTag("tag1")); hosts.add(hostName); InstanceConfig config = accessor.getProperty(accessor.keyBuilder().instanceConfig(hostName)); Assert.assertTrue(config.containsTag("tag2")); hosts.add(hostName); InstanceConfig config = accessor.getProperty(accessor.keyBuilder().instanceConfig(hostName)); Assert.assertTrue(config.containsTag("tag2")); hosts.add(hostName);
InstanceConfig config = accessor.getProperty(accessor.keyBuilder().instanceConfig(hostName)); Assert.assertTrue(config.containsTag(DB2tag)); hosts.add(hostName); InstanceConfig config = accessor.getProperty(accessor.keyBuilder().instanceConfig(hostName)); Assert.assertTrue(config.containsTag(DB3Tag)); hosts.add(hostName);
int instances = 0; for (String liveInstanceName : cache.getLiveInstances().keySet()) { if (cache.getInstanceConfigMap().get(liveInstanceName).containsTag(instanceGroupTag)) { instances++;
int instances = 0; for (String liveInstanceName : cache.getLiveInstances().keySet()) { if (cache.getInstanceConfigMap().get(liveInstanceName).containsTag(instanceGroupTag)) { instances++;