in helix-core/src/main/java/org/apache/helix/PropertyPathBuilder.java [57:182]
static {
typeToClassMapping.put(PropertyType.LIVEINSTANCES, LiveInstance.class);
typeToClassMapping.put(PropertyType.IDEALSTATES, IdealState.class);
typeToClassMapping.put(PropertyType.CONFIGS, InstanceConfig.class);
typeToClassMapping.put(PropertyType.EXTERNALVIEW, ExternalView.class);
typeToClassMapping.put(PropertyType.CUSTOMIZEDVIEW, CustomizedView.class);
typeToClassMapping.put(PropertyType.STATEMODELDEFS, StateModelDefinition.class);
typeToClassMapping.put(PropertyType.MESSAGES, Message.class);
typeToClassMapping.put(PropertyType.CURRENTSTATES, CurrentState.class);
typeToClassMapping.put(PropertyType.STATUSUPDATES, StatusUpdate.class);
typeToClassMapping.put(PropertyType.HISTORY, ControllerHistory.class);
typeToClassMapping.put(PropertyType.PAUSE, PauseSignal.class);
typeToClassMapping.put(PropertyType.MAINTENANCE, MaintenanceSignal.class);
typeToClassMapping.put(PropertyType.STATUS, ClusterStatus.class);
// TODO: Below must handle the case for future versions of Task Framework with a different path
// structure
typeToClassMapping.put(PropertyType.WORKFLOWCONTEXT, WorkflowContext.class);
// @formatter:off
addEntry(PropertyType.CONFIGS, 1, "/{clusterName}/CONFIGS");
addEntry(PropertyType.CONFIGS, 2, "/{clusterName}/CONFIGS/{scope}");
addEntry(PropertyType.CONFIGS, 3, "/{clusterName}/CONFIGS/{scope}/{scopeKey}");
// addEntry(PropertyType.CONFIGS,2,"/{clusterName}/CONFIGS/{instanceName}");
addEntry(PropertyType.LIVEINSTANCES, 1, "/{clusterName}/LIVEINSTANCES");
addEntry(PropertyType.LIVEINSTANCES, 2, "/{clusterName}/LIVEINSTANCES/{instanceName}");
addEntry(PropertyType.INSTANCES, 1, "/{clusterName}/INSTANCES");
addEntry(PropertyType.INSTANCES, 2, "/{clusterName}/INSTANCES/{instanceName}");
addEntry(PropertyType.IDEALSTATES, 1, "/{clusterName}/IDEALSTATES");
addEntry(PropertyType.IDEALSTATES, 2, "/{clusterName}/IDEALSTATES/{resourceName}");
addEntry(PropertyType.EXTERNALVIEW, 1, "/{clusterName}/EXTERNALVIEW");
addEntry(PropertyType.EXTERNALVIEW, 2, "/{clusterName}/EXTERNALVIEW/{resourceName}");
addEntry(PropertyType.CUSTOMIZEDVIEW, 1, "/{clusterName}/CUSTOMIZEDVIEW");
addEntry(PropertyType.CUSTOMIZEDVIEW, 2, "/{clusterName}/CUSTOMIZEDVIEW/{customizedStateType}");
addEntry(PropertyType.CUSTOMIZEDVIEW, 3, "/{clusterName}/CUSTOMIZEDVIEW/{customizedStateType}/{resourceName}");
addEntry(PropertyType.STATUS, 1, "/{clusterName}/STATUS");
addEntry(PropertyType.STATUS, 2, "/{clusterName}/STATUS/{clusterName}");
addEntry(PropertyType.TARGETEXTERNALVIEW, 1, "/{clusterName}/TARGETEXTERNALVIEW");
addEntry(PropertyType.TARGETEXTERNALVIEW, 2,
"/{clusterName}/TARGETEXTERNALVIEW/{resourceName}");
addEntry(PropertyType.CUSTOMIZEDVIEW, 1, "/{clusterName}/CUSTOMIZEDVIEW");
addEntry(PropertyType.CUSTOMIZEDVIEW, 2, "/{clusterName}/CUSTOMIZEDVIEW/{resourceName}");
addEntry(PropertyType.CUSTOMIZEDVIEW, 3,
"/{clusterName}/CUSTOMIZEDVIEW/{resourceName}/{customizedStateName}");
addEntry(PropertyType.STATEMODELDEFS, 1, "/{clusterName}/STATEMODELDEFS");
addEntry(PropertyType.STATEMODELDEFS, 2, "/{clusterName}/STATEMODELDEFS/{stateModelName}");
addEntry(PropertyType.CONTROLLER, 1, "/{clusterName}/CONTROLLER");
addEntry(PropertyType.PROPERTYSTORE, 1, "/{clusterName}/PROPERTYSTORE");
// INSTANCE
addEntry(PropertyType.MESSAGES, 2, "/{clusterName}/INSTANCES/{instanceName}/MESSAGES");
addEntry(PropertyType.MESSAGES, 3, "/{clusterName}/INSTANCES/{instanceName}/MESSAGES/{msgId}");
addEntry(PropertyType.CURRENTSTATES, 2,
"/{clusterName}/INSTANCES/{instanceName}/CURRENTSTATES");
addEntry(PropertyType.CURRENTSTATES, 3,
"/{clusterName}/INSTANCES/{instanceName}/CURRENTSTATES/{sessionId}");
addEntry(PropertyType.CURRENTSTATES, 4,
"/{clusterName}/INSTANCES/{instanceName}/CURRENTSTATES/{sessionId}/{resourceName}");
addEntry(PropertyType.CURRENTSTATES, 5,
"/{clusterName}/INSTANCES/{instanceName}/CURRENTSTATES/{sessionId}/{resourceName}/{bucketName}");
addEntry(PropertyType.TASKCURRENTSTATES, 2,
"/{clusterName}/INSTANCES/{instanceName}/TASKCURRENTSTATES");
addEntry(PropertyType.TASKCURRENTSTATES, 3,
"/{clusterName}/INSTANCES/{instanceName}/TASKCURRENTSTATES/{sessionId}");
addEntry(PropertyType.TASKCURRENTSTATES, 4,
"/{clusterName}/INSTANCES/{instanceName}/TASKCURRENTSTATES/{sessionId}/{resourceName}");
addEntry(PropertyType.TASKCURRENTSTATES, 5,
"/{clusterName}/INSTANCES/{instanceName}/TASKCURRENTSTATES/{sessionId}/{resourceName}/{bucketName}");
addEntry(PropertyType.CUSTOMIZEDSTATES, 2,
"/{clusterName}/INSTANCES/{instanceName}/CUSTOMIZEDSTATES");
addEntry(PropertyType.CUSTOMIZEDSTATES, 3,
"/{clusterName}/INSTANCES/{instanceName}/CUSTOMIZEDSTATES/{customizedStateName}");
addEntry(PropertyType.CUSTOMIZEDSTATES, 4,
"/{clusterName}/INSTANCES/{instanceName}/CUSTOMIZEDSTATES/{customizedStateName}/{resourceName}");
addEntry(PropertyType.STATUSUPDATES, 2,
"/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES");
addEntry(PropertyType.STATUSUPDATES, 3,
"/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES/{sessionId}");
addEntry(PropertyType.STATUSUPDATES, 4,
"/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES/{sessionId}/{subPath}");
addEntry(PropertyType.STATUSUPDATES, 5,
"/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES/{sessionId}/{subPath}/{recordName}");
addEntry(PropertyType.ERRORS, 2, "/{clusterName}/INSTANCES/{instanceName}/ERRORS");
addEntry(PropertyType.ERRORS, 3, "/{clusterName}/INSTANCES/{instanceName}/ERRORS/{sessionId}");
addEntry(PropertyType.ERRORS, 4,
"/{clusterName}/INSTANCES/{instanceName}/ERRORS/{sessionId}/{subPath}");
addEntry(PropertyType.ERRORS, 5,
"/{clusterName}/INSTANCES/{instanceName}/ERRORS/{sessionId}/{subPath}/{recordName}");
addEntry(PropertyType.INSTANCE_HISTORY, 2, "/{clusterName}/INSTANCES/{instanceName}/HISTORY");
addEntry(PropertyType.HEALTHREPORT, 2, "/{clusterName}/INSTANCES/{instanceName}/HEALTHREPORT");
addEntry(PropertyType.HEALTHREPORT, 3,
"/{clusterName}/INSTANCES/{instanceName}/HEALTHREPORT/{reportName}");
// CONTROLLER
addEntry(PropertyType.MESSAGES_CONTROLLER, 1, "/{clusterName}/CONTROLLER/MESSAGES");
addEntry(PropertyType.MESSAGES_CONTROLLER, 2, "/{clusterName}/CONTROLLER/MESSAGES/{msgId}");
addEntry(PropertyType.ERRORS_CONTROLLER, 1, "/{clusterName}/CONTROLLER/ERRORS");
addEntry(PropertyType.ERRORS_CONTROLLER, 2, "/{clusterName}/CONTROLLER/ERRORS/{errorId}");
addEntry(PropertyType.STATUSUPDATES_CONTROLLER, 1, "/{clusterName}/CONTROLLER/STATUSUPDATES");
addEntry(PropertyType.STATUSUPDATES_CONTROLLER, 2,
"/{clusterName}/CONTROLLER/STATUSUPDATES/{subPath}");
addEntry(PropertyType.STATUSUPDATES_CONTROLLER, 3,
"/{clusterName}/CONTROLLER/STATUSUPDATES/{subPath}/{recordName}");
addEntry(PropertyType.LEADER, 1, "/{clusterName}/CONTROLLER/LEADER");
addEntry(PropertyType.HISTORY, 1, "/{clusterName}/CONTROLLER/HISTORY");
addEntry(PropertyType.PAUSE, 1, "/{clusterName}/CONTROLLER/PAUSE");
addEntry(PropertyType.MAINTENANCE, 1, "/{clusterName}/CONTROLLER/MAINTENANCE");
// @formatter:on
// RESOURCE
addEntry(PropertyType.WORKFLOWCONTEXT, 2,
"/{clusterName}/PROPERTYSTORE/TaskRebalancer/{workflowName}/Context"); // Old
// TODO: These are the current task framework related paths. In the future, if we decide to use
// a different structure such as a non-flatten ZNode structure, these paths need to be changed
// accordingly.
addEntry(PropertyType.TASK_CONFIG_ROOT, 1, "/{clusterName}/CONFIGS/RESOURCE");
addEntry(PropertyType.WORKFLOW_CONFIG, 2, "/{clusterName}/CONFIGS/RESOURCE/{workflowName}");
addEntry(PropertyType.JOB_CONFIG, 3,
"/{clusterName}/CONFIGS/RESOURCE/{workflowName}" + "_" + "{jobName}");
addEntry(PropertyType.TASK_CONTEXT_ROOT, 1,
"/{clusterName}/PROPERTYSTORE" + TaskConstants.REBALANCER_CONTEXT_ROOT);
addEntry(PropertyType.WORKFLOW_CONTEXT, 2, "/{clusterName}/PROPERTYSTORE"
+ TaskConstants.REBALANCER_CONTEXT_ROOT + "/{workflowName}/Context");
addEntry(PropertyType.JOB_CONTEXT, 3, "/{clusterName}/PROPERTYSTORE"
+ TaskConstants.REBALANCER_CONTEXT_ROOT + "/{workflowName}" + "_" + "{jobName}/Context");
}