/** * Get IdealState rules defined in the cluster config. * * @return */ public Map<String, Map<String, String>> getIdealStateRules() { Map<String, Map<String, String>> idealStateRuleMap = new HashMap<>(); for (String simpleKey : getRecord().getSimpleFields().keySet()) { if (simpleKey.startsWith(IDEAL_STATE_RULE_PREFIX)) { String simpleValue = getRecord().getSimpleField(simpleKey); String[] rules = simpleValue.split("(?<!\\\\),"); Map<String, String> singleRule = Maps.newHashMap(); for (String rule : rules) { String[] keyValue = rule.split("(?<!\\\\)="); if (keyValue.length >= 2) { singleRule.put(keyValue[0], keyValue[1]); } } idealStateRuleMap.put(simpleKey, singleRule); } } return idealStateRuleMap; }
/** * Get IdealState rules defined in the cluster config. * * @return */ public Map<String, Map<String, String>> getIdealStateRules() { Map<String, Map<String, String>> idealStateRuleMap = new HashMap<>(); for (String simpleKey : getRecord().getSimpleFields().keySet()) { if (simpleKey.startsWith(IDEAL_STATE_RULE_PREFIX)) { String simpleValue = getRecord().getSimpleField(simpleKey); String[] rules = simpleValue.split("(?<!\\\\),"); Map<String, String> singleRule = Maps.newHashMap(); for (String rule : rules) { String[] keyValue = rule.split("(?<!\\\\)="); if (keyValue.length >= 2) { singleRule.put(keyValue[0], keyValue[1]); } } idealStateRuleMap.put(simpleKey, singleRule); } } return idealStateRuleMap; }
@GET @Path("{clusterId}/configs") public Response getClusterConfig(@PathParam("clusterId") String clusterId) { ConfigAccessor accessor = getConfigAccessor(); ClusterConfig config = null; try { config = accessor.getClusterConfig(clusterId); } catch (HelixException ex) { // cluster not found. _logger.info("Failed to get cluster config for cluster " + clusterId + ", cluster not found, Exception: " + ex); } catch (Exception ex) { _logger.error("Failed to get cluster config for cluster " + clusterId + " Exception: " + ex); return serverError(ex); } if (config == null) { return notFound(); } return JSONRepresentation(config.getRecord()); }
@Override public ZNRecord update(ZNRecord currentData) { if (currentData == null) { throw new HelixException("Cluster: " + clusterName + ": cluster config is null"); } ClusterConfig clusterConfig = new ClusterConfig(currentData); Map<String, String> disabledInstances = new TreeMap<>(); if (clusterConfig.getDisabledInstances() != null) { disabledInstances.putAll(clusterConfig.getDisabledInstances()); } if (enabled) { disabledInstances.keySet().removeAll(instances); } else { for (String disabledInstance : instances) { if (!disabledInstances.containsKey(disabledInstance)) { disabledInstances.put(disabledInstance, String.valueOf(System.currentTimeMillis())); } } } clusterConfig.setDisabledInstances(disabledInstances); return clusterConfig.getRecord(); } }, AccessOption.PERSISTENT);
@Override public ZNRecord update(ZNRecord currentData) { if (currentData == null) { throw new HelixException("Cluster: " + clusterName + ": cluster config is null"); } ClusterConfig clusterConfig = new ClusterConfig(currentData); Map<String, String> disabledInstances = new TreeMap<>(); if (clusterConfig.getDisabledInstances() != null) { disabledInstances.putAll(clusterConfig.getDisabledInstances()); } if (enabled) { disabledInstances.keySet().removeAll(instances); } else { for (String disabledInstance : instances) { if (!disabledInstances.containsKey(disabledInstance)) { disabledInstances.put(disabledInstance, String.valueOf(System.currentTimeMillis())); } } } clusterConfig.setDisabledInstances(disabledInstances); return clusterConfig.getRecord(); } }, AccessOption.PERSISTENT);
/** * Whether P2P state transition message is enabled. * * @return */ public boolean isP2PMessageEnabled() { String enabledInResource = _resourceConfig != null ? _resourceConfig.getRecord().getSimpleField(HelixConfigProperty.P2P_MESSAGE_ENABLED.name()) : null; if (enabledInResource != null) { return Boolean.valueOf(enabledInResource); } String enabledInCluster = _clusterConfig != null ? _clusterConfig.getRecord().getSimpleField(HelixConfigProperty.P2P_MESSAGE_ENABLED.name()) : null; return enabledInCluster != null ? Boolean.valueOf(enabledInCluster) : false; }
/** * Whether P2P state transition message is enabled. * * @return */ public boolean isP2PMessageEnabled() { String enabledInResource = _resourceConfig != null ? _resourceConfig.getRecord().getSimpleField(HelixConfigProperty.P2P_MESSAGE_ENABLED.name()) : null; if (enabledInResource != null) { return Boolean.valueOf(enabledInResource); } String enabledInCluster = _clusterConfig != null ? _clusterConfig.getRecord().getSimpleField(HelixConfigProperty.P2P_MESSAGE_ENABLED.name()) : null; return enabledInCluster != null ? Boolean.valueOf(enabledInCluster) : false; }
private void updateClusterConfig(String clusterName, ClusterConfig clusterConfig, boolean overwrite) { if (!ZKUtil.isClusterSetup(clusterName, zkClient)) { throw new HelixException("fail to update config. cluster: " + clusterName + " is NOT setup."); } HelixConfigScope scope = new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER).forCluster(clusterName).build(); String zkPath = scope.getZkPath(); if (overwrite) { ZKUtil.createOrReplace(zkClient, zkPath, clusterConfig.getRecord(), true); } else { ZKUtil.createOrUpdate(zkClient, zkPath, clusterConfig.getRecord(), true, true); } }
private void updateClusterConfig(String clusterName, ClusterConfig clusterConfig, boolean overwrite) { if (!ZKUtil.isClusterSetup(clusterName, zkClient)) { throw new HelixException("fail to update config. cluster: " + clusterName + " is NOT setup."); } HelixConfigScope scope = new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER).forCluster(clusterName).build(); String zkPath = scope.getZkPath(); if (overwrite) { ZKUtil.createOrReplace(zkClient, zkPath, clusterConfig.getRecord(), true); } else { ZKUtil.createOrUpdate(zkClient, zkPath, clusterConfig.getRecord(), true, true); } }
new HelixConfigScopeBuilder(HelixConfigScope.ConfigScopeProperty.CLUSTER) .forCluster(clusterId).build(); configAccessor.remove(clusterScope, config.getRecord());
protected void enableP2PInCluster(String clusterName, ConfigAccessor configAccessor, boolean enable) { // enable p2p message in cluster. if (enable) { ClusterConfig clusterConfig = configAccessor.getClusterConfig(clusterName); clusterConfig.enableP2PMessage(true); configAccessor.setClusterConfig(clusterName, clusterConfig); } else { ClusterConfig clusterConfig = configAccessor.getClusterConfig(clusterName); clusterConfig.getRecord().getSimpleFields() .remove(HelixConfigProperty.P2P_MESSAGE_ENABLED.name()); configAccessor.setClusterConfig(clusterName, clusterConfig); } }
_baseDataAccessor.create(path, new ClusterConfig(clusterName).getRecord(), 0);