@GET @Path("{clusterId}") public Response getClusterInfo(@PathParam("clusterId") String clusterId) { if (!isClusterExist(clusterId)) { return notFound(); } HelixDataAccessor dataAccessor = getDataAccssor(clusterId); PropertyKey.Builder keyBuilder = dataAccessor.keyBuilder(); Map<String, Object> clusterInfo = new HashMap<>(); clusterInfo.put(Properties.id.name(), clusterId); LiveInstance controller = dataAccessor.getProperty(keyBuilder.controllerLeader()); if (controller != null) { clusterInfo.put(ClusterProperties.controller.name(), controller.getInstanceName()); } else { clusterInfo.put(ClusterProperties.controller.name(), "No Lead Controller!"); } boolean paused = (dataAccessor.getProperty(keyBuilder.pause()) == null ? false : true); clusterInfo.put(ClusterProperties.paused.name(), paused); boolean maintenance = (dataAccessor.getProperty(keyBuilder.maintenance()) == null ? false : true); clusterInfo.put(ClusterProperties.maintenance.name(), maintenance); List<String> idealStates = dataAccessor.getChildNames(keyBuilder.idealStates()); clusterInfo.put(ClusterProperties.resources.name(), idealStates); List<String> instances = dataAccessor.getChildNames(keyBuilder.instanceConfigs()); clusterInfo.put(ClusterProperties.instances.name(), instances); List<String> liveInstances = dataAccessor.getChildNames(keyBuilder.liveInstances()); clusterInfo.put(ClusterProperties.liveInstances.name(), liveInstances); return JSONRepresentation(clusterInfo); }
StringRepresentation getControllerRepresentation(String clusterName) throws JsonGenerationException, JsonMappingException, IOException { Builder keyBuilder = new PropertyKey.Builder(clusterName); ZkClient zkClient = ResourceUtil.getAttributeFromCtx(getContext(), ResourceUtil.ContextKey.ZKCLIENT); ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(zkClient)); ZNRecord record = null; LiveInstance leader = accessor.getProperty(keyBuilder.controllerLeader()); if (leader != null) { record = leader.getRecord(); } else { record = new ZNRecord(""); DateFormat formatter = new SimpleDateFormat("yyyyMMdd-HHmmss.SSSSSS"); String time = formatter.format(new Date()); Map<String, String> contentMap = new TreeMap<String, String>(); contentMap.put("AdditionalInfo", "No leader exists"); record.setMapField(Level.HELIX_INFO + "-" + time, contentMap); } boolean paused = (accessor.getProperty(keyBuilder.pause()) == null ? false : true); record.setSimpleField(PropertyType.PAUSE.toString(), "" + paused); String retVal = ClusterRepresentationUtil.ZNRecordToJson(record); StringRepresentation representation = new StringRepresentation(retVal, MediaType.APPLICATION_JSON); return representation; }
ClusterSetup.processCommandLineArgs(cmd.split(" ")); tmpAccessor.setProperty(tmpAccessor.keyBuilder().pause(), new PauseSignal("pause"));
HelixDataAccessor accessor = manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); PauseSignal pauseSignal = accessor.getProperty(keyBuilder.pause()); MaintenanceSignal maintenanceSignal = accessor.getProperty(keyBuilder.maintenance()); _paused = updateControllerState(changeContext, pauseSignal, _paused);
HelixDataAccessor accessor = manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); PauseSignal pauseSignal = accessor.getProperty(keyBuilder.pause()); MaintenanceSignal maintenanceSignal = accessor.getProperty(keyBuilder.maintenance()); _paused = updateControllerState(changeContext, pauseSignal, _paused);
/** * @param clusterName * @param enabled * @param reason set additional string description on why the cluster is disabled when * <code>enabled</code> is false. */ @Override public void enableCluster(String clusterName, boolean enabled, String reason) { logger.info("{} cluster {} for reason {}.", enabled ? "Enable" : "Disable", clusterName, reason == null ? "NULL" : reason); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); if (enabled) { accessor.removeProperty(keyBuilder.pause()); } else { PauseSignal pauseSignal = new PauseSignal("pause"); if (reason != null) { pauseSignal.setReason(reason); } if (!accessor.createPause(pauseSignal)) { throw new HelixException("Failed to create pause signal"); } } }
/** * @param clusterName * @param enabled * @param reason set additional string description on why the cluster is disabled when * <code>enabled</code> is false. */ @Override public void enableCluster(String clusterName, boolean enabled, String reason) { logger.info("{} cluster {} for reason {}.", enabled ? "Enable" : "Disable", clusterName, reason == null ? "NULL" : reason); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); if (enabled) { accessor.removeProperty(keyBuilder.pause()); } else { PauseSignal pauseSignal = new PauseSignal("pause"); if (reason != null) { pauseSignal.setReason(reason); } if (!accessor.createPause(pauseSignal)) { throw new HelixException("Failed to create pause signal"); } } }