You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by zz...@apache.org on 2013/08/30 00:34:50 UTC

git commit: [HELIX-109] Review Helix model package, more accessor changes, rb=13878

Updated Branches:
  refs/heads/helix-logical-model 433b00116 -> becfda1c3


[HELIX-109] Review Helix model package, more accessor changes, rb=13878


Project: http://git-wip-us.apache.org/repos/asf/incubator-helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-helix/commit/becfda1c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-helix/tree/becfda1c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-helix/diff/becfda1c

Branch: refs/heads/helix-logical-model
Commit: becfda1c3a5014fe6da67b280885909841e4953a
Parents: 433b001
Author: zzhang <zz...@apache.org>
Authored: Thu Aug 29 15:33:58 2013 -0700
Committer: zzhang <zz...@apache.org>
Committed: Thu Aug 29 15:33:58 2013 -0700

----------------------------------------------------------------------
 .../main/java/org/apache/helix/PropertyKey.java |   2 +-
 .../org/apache/helix/api/ClusterAccessor.java   |  46 ++++--
 .../apache/helix/api/ControllerAccessor.java    |   2 +-
 .../apache/helix/api/ParticipantAccessor.java   | 161 ++++++++++++-------
 .../org/apache/helix/api/ResourceAccessor.java  |  20 ++-
 .../stages/ExternalViewComputeStage.java        |   2 +-
 .../DefaultSchedulerMessageHandlerFactory.java  |   4 +-
 .../apache/helix/manager/zk/ZKHelixAdmin.java   |  10 +-
 .../participant/HelixCustomCodeRunner.java      |   2 +-
 .../org/apache/helix/tools/ClusterSetup.java    |   2 +-
 .../java/org/apache/helix/TestZKCallback.java   |   2 +-
 .../java/org/apache/helix/ZkUnitTestBase.java   |   4 +-
 .../helix/controller/stages/BaseStageTest.java  |   2 +-
 .../TestBestPossibleCalcStageCompatibility.java |   2 +-
 .../stages/TestCompatibilityCheckStage.java     |   2 +-
 .../stages/TestResourceComputationStage.java    |   4 +-
 .../TestAddStateModelFactoryAfterConnect.java   |   4 +-
 .../helix/integration/TestAutoRebalance.java    |   2 +-
 .../TestAutoRebalancePartitionLimit.java        |   2 +-
 .../helix/integration/TestBatchMessage.java     |  12 +-
 .../integration/TestBatchMessageWrapper.java    |   4 +-
 .../integration/TestBucketizedResource.java     |   4 +-
 .../TestCustomizedIdealStateRebalancer.java     |   4 +-
 .../apache/helix/integration/TestDisable.java   |   8 +-
 .../org/apache/helix/integration/TestDrop.java  |   2 +-
 .../helix/integration/TestRenamePartition.java  |   8 +-
 .../helix/integration/TestSchemataSM.java       |   2 +-
 .../helix/integration/TestSwapInstance.java     |   8 +-
 .../helix/manager/zk/TestZNRecordSizeLimit.java |  22 +--
 .../helix/manager/zk/TestZkHelixAdmin.java      |   4 +-
 .../monitoring/mbeans/TestResourceMonitor.java  |   2 +-
 .../apache/helix/tools/TestHelixAdminCli.java   |  10 +-
 32 files changed, 222 insertions(+), 143 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/PropertyKey.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/PropertyKey.java b/helix-core/src/main/java/org/apache/helix/PropertyKey.java
index 2f20319..0d276d1 100644
--- a/helix-core/src/main/java/org/apache/helix/PropertyKey.java
+++ b/helix-core/src/main/java/org/apache/helix/PropertyKey.java
@@ -156,7 +156,7 @@ public class PropertyKey {
      * @param resourceName
      * @return {@link PropertyKey}
      */
-    public PropertyKey idealStates(String resourceName) {
+    public PropertyKey idealState(String resourceName) {
       return new PropertyKey(IDEALSTATES, IdealState.class, _clusterName, resourceName);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/api/ClusterAccessor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/api/ClusterAccessor.java b/helix-core/src/main/java/org/apache/helix/api/ClusterAccessor.java
index ac3b715..5902a24 100644
--- a/helix-core/src/main/java/org/apache/helix/api/ClusterAccessor.java
+++ b/helix-core/src/main/java/org/apache/helix/api/ClusterAccessor.java
@@ -33,8 +33,11 @@ import org.apache.helix.model.InstanceConfig;
 import org.apache.helix.model.LiveInstance;
 import org.apache.helix.model.Message;
 import org.apache.helix.model.PauseSignal;
+import org.apache.log4j.Logger;
 
 public class ClusterAccessor {
+  private static Logger LOG = Logger.getLogger(ClusterAccessor.class);
+
   private final HelixDataAccessor _accessor;
   private final PropertyKey.Builder _keyBuilder;
   private final ClusterId _clusterId;
@@ -67,6 +70,27 @@ public class ClusterAccessor {
   }
 
   /**
+   * drop a cluster
+   */
+  public void dropCluster() {
+    LOG.info("Dropping cluster: " + _clusterId);
+    List<String> liveInstanceNames =_accessor.getChildNames(_keyBuilder.liveInstances());
+    if (liveInstanceNames.size() > 0) {
+      throw new HelixException("Can't drop cluster: " + _clusterId
+          + " because there are running participant: " + liveInstanceNames
+          + ", shutdown participants first.");
+    }
+
+    LiveInstance leader = _accessor.getProperty(_keyBuilder.controllerLeader());
+    if (leader != null) {
+      throw new HelixException("Can't drop cluster: " + _clusterId + ", because leader: "
+          + leader.getId() + " are running, shutdown leader first.");
+    }
+
+    // TODO remove cluster structure from zookeeper
+  }
+
+  /**
    * read entire cluster data
    * @return cluster
    */
@@ -103,14 +127,14 @@ public class ClusterAccessor {
      */
     Map<String, Map<String, CurrentState>> currentStateMap =
         new HashMap<String, Map<String, CurrentState>>();
-    for (String participantId : liveInstanceMap.keySet()) {
-      LiveInstance liveInstance = liveInstanceMap.get(participantId);
+    for (String participantName : liveInstanceMap.keySet()) {
+      LiveInstance liveInstance = liveInstanceMap.get(participantName);
       SessionId sessionId = liveInstance.getSessionId();
       Map<String, CurrentState> instanceCurStateMap =
-          _accessor.getChildValuesMap(_keyBuilder.currentStates(participantId,
+          _accessor.getChildValuesMap(_keyBuilder.currentStates(participantName,
               sessionId.stringify()));
 
-      currentStateMap.put(participantId, instanceCurStateMap);
+      currentStateMap.put(participantName, instanceCurStateMap);
     }
 
     LiveInstance leader = _accessor.getProperty(_keyBuilder.controllerLeader());
@@ -130,12 +154,10 @@ public class ClusterAccessor {
       LiveInstance liveInstance = liveInstanceMap.get(participantName);
       Map<String, Message> instanceMsgMap = messageMap.get(participantName);
 
-      // TODO pass current-state map
       ParticipantId participantId = new ParticipantId(participantName);
 
-      // TODO construct participant
-      participantMap.put(participantId, new Participant(participantId, null, -1, false, null, null,
-          null, null, null));
+      participantMap.put(participantId, ParticipantAccessor.createParticipant(participantId,
+          instanceConfig, liveInstance, instanceMsgMap, currentStateMap.get(participantName)));
     }
 
     Map<ControllerId, Controller> controllerMap = new HashMap<ControllerId, Controller>();
@@ -174,13 +196,13 @@ public class ClusterAccessor {
     }
 
     ResourceId resourceId = resource.getId();
-    if (_accessor.getProperty(_keyBuilder.idealStates(resourceId.stringify())) != null) {
+    if (_accessor.getProperty(_keyBuilder.idealState(resourceId.stringify())) != null) {
       throw new HelixException("Skip adding resource: " + resourceId
-          + " . Resource ideal state already exists in cluster: " + _clusterId);
+          + ", because resource ideal state already exists in cluster: " + _clusterId);
     }
 
     // TODO convert rebalancerConfig to idealState
-    _accessor.createProperty(_keyBuilder.idealStates(resourceId.stringify()), null);
+    _accessor.createProperty(_keyBuilder.idealState(resourceId.stringify()), null);
   }
 
   /**
@@ -189,7 +211,7 @@ public class ClusterAccessor {
    */
   public void dropResourceFromCluster(ResourceId resourceId) {
     // TODO check existence
-    _accessor.removeProperty(_keyBuilder.idealStates(resourceId.stringify()));
+    _accessor.removeProperty(_keyBuilder.idealState(resourceId.stringify()));
     _accessor.removeProperty(_keyBuilder.resourceConfig(resourceId.stringify()));
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/api/ControllerAccessor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/api/ControllerAccessor.java b/helix-core/src/main/java/org/apache/helix/api/ControllerAccessor.java
index 3a7b3b6..153bab6 100644
--- a/helix-core/src/main/java/org/apache/helix/api/ControllerAccessor.java
+++ b/helix-core/src/main/java/org/apache/helix/api/ControllerAccessor.java
@@ -32,7 +32,7 @@ public class ControllerAccessor {
    * create leader
    * @param controllerId
    */
-  public void start(ControllerId controllerId) {
+  public void connectLeader(ControllerId controllerId) {
     // TODO impl this
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/api/ParticipantAccessor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/api/ParticipantAccessor.java b/helix-core/src/main/java/org/apache/helix/api/ParticipantAccessor.java
index 9de2c5a..58d18df 100644
--- a/helix-core/src/main/java/org/apache/helix/api/ParticipantAccessor.java
+++ b/helix-core/src/main/java/org/apache/helix/api/ParticipantAccessor.java
@@ -57,23 +57,26 @@ public class ParticipantAccessor {
   }
 
   /**
+   * enable/disable a participant
    * @param participantId
    * @param isEnabled
    */
   void enableParticipant(ParticipantId participantId, boolean isEnabled) {
-    if (_accessor.getProperty(_keyBuilder.instanceConfig(participantId.stringify())) == null) {
+    String participantName = participantId.stringify();
+    if (_accessor.getProperty(_keyBuilder.instanceConfig(participantName)) == null) {
       throw new HelixException("Config for participant: " + participantId
           + " does NOT exist in cluster: " + _clusterId);
     }
 
-    InstanceConfig config = new InstanceConfig(participantId.stringify());
+    InstanceConfig config = new InstanceConfig(participantName);
     config.setInstanceEnabled(isEnabled);
-    _accessor.updateProperty(_keyBuilder.instanceConfig(participantId.stringify()), config);
+    _accessor.updateProperty(_keyBuilder.instanceConfig(participantName), config);
 
   }
 
   /**
    * disable participant
+   * @param participantId
    */
   public void disableParticipant(ParticipantId participantId) {
     enableParticipant(participantId, false);
@@ -81,20 +84,23 @@ public class ParticipantAccessor {
 
   /**
    * enable participant
+   * @param participantId
    */
   public void enableParticipant(ParticipantId participantId) {
-    enableParticipant(participantId, false);
+    enableParticipant(participantId, true);
   }
 
   /**
    * create messages for participant
-   * @param msgs
+   * @param participantId
+   * @param msgMap map of message-id to message
    */
-  public void insertMessagesToParticipant(ParticipantId participantId, Map<MessageId, Message> msgMap) {
+  public void sendMessagesToParticipant(ParticipantId participantId, Map<MessageId, Message> msgMap) {
+    String participantName = participantId.stringify();
     List<PropertyKey> msgKeys = new ArrayList<PropertyKey>();
     List<Message> msgs = new ArrayList<Message>();
     for (MessageId msgId : msgMap.keySet()) {
-      msgKeys.add(_keyBuilder.message(participantId.stringify(), msgId.stringify()));
+      msgKeys.add(_keyBuilder.message(participantName, msgId.stringify()));
       msgs.add(msgMap.get(msgId));
     }
 
@@ -103,13 +109,15 @@ public class ParticipantAccessor {
 
   /**
    * set messages of participant
-   * @param msgs
+   * @param participantId
+   * @param msgMap map of message-id to message
    */
-  public void setMessagesOfParticipant(ParticipantId participantId, Map<MessageId, Message> msgMap) {
+  public void updateMessageStatus(ParticipantId participantId, Map<MessageId, Message> msgMap) {
+    String participantName = participantId.stringify();
     List<PropertyKey> msgKeys = new ArrayList<PropertyKey>();
     List<Message> msgs = new ArrayList<Message>();
     for (MessageId msgId : msgMap.keySet()) {
-      msgKeys.add(_keyBuilder.message(participantId.stringify(), msgId.stringify()));
+      msgKeys.add(_keyBuilder.message(participantName, msgId.stringify()));
       msgs.add(msgMap.get(msgId));
     }
     _accessor.setChildren(msgKeys, msgs);
@@ -117,12 +125,14 @@ public class ParticipantAccessor {
 
   /**
    * delete messages from participant
+   * @param participantId
    * @param msgIdSet
    */
   public void deleteMessagesFromParticipant(ParticipantId participantId, Set<MessageId> msgIdSet) {
+    String participantName = participantId.stringify();
     List<PropertyKey> msgKeys = new ArrayList<PropertyKey>();
     for (MessageId msgId : msgIdSet) {
-      msgKeys.add(_keyBuilder.message(participantId.stringify(), msgId.stringify()));
+      msgKeys.add(_keyBuilder.message(participantName, msgId.stringify()));
     }
 
     // TODO impl batch remove
@@ -132,6 +142,7 @@ public class ParticipantAccessor {
   }
 
   /**
+   * enable/disable partitions on a participant
    * @param enabled
    * @param participantId
    * @param resourceId
@@ -139,15 +150,18 @@ public class ParticipantAccessor {
    */
   void enablePartitionsForParticipant(final boolean enabled, final ParticipantId participantId,
       final ResourceId resourceId, final Set<PartitionId> partitionIdSet) {
+    String participantName = participantId.stringify();
+    String resourceName = resourceId.stringify();
+
     // check instanceConfig exists
-    PropertyKey instanceConfigKey = _keyBuilder.instanceConfig(participantId.stringify());
+    PropertyKey instanceConfigKey = _keyBuilder.instanceConfig(participantName);
     if (_accessor.getProperty(instanceConfigKey) == null) {
       throw new HelixException("Config for participant: " + participantId
           + " does NOT exist in cluster: " + _clusterId);
     }
 
     // check resource exist. warn if not
-    IdealState idealState = _accessor.getProperty(_keyBuilder.idealStates(resourceId.stringify()));
+    IdealState idealState = _accessor.getProperty(_keyBuilder.idealState(resourceName));
     if (idealState == null) {
       LOG.warn("Disable partitions: " + partitionIdSet + " but Cluster: " + _clusterId
           + ", resource: " + resourceId
@@ -156,12 +170,13 @@ public class ParticipantAccessor {
     } else {
       // check partitions exist. warn if not
       for (PartitionId partitionId : partitionIdSet) {
+        String partitionName = partitionId.stringify();
         if ((idealState.getRebalanceMode() == RebalanceMode.SEMI_AUTO && idealState
-            .getPreferenceList(partitionId.stringify()) == null)
+            .getPreferenceList(partitionName) == null)
             || (idealState.getRebalanceMode() == RebalanceMode.CUSTOMIZED && idealState
-                .getInstanceStateMap(partitionId.stringify()) == null)) {
+                .getInstanceStateMap(partitionName) == null)) {
           LOG.warn("Cluster: " + _clusterId + ", resource: " + resourceId + ", partition: "
-              + partitionId + ", partition does not exist in ideal state");
+              + partitionId + ", partition does NOT exist in ideal state");
         }
       }
     }
@@ -174,6 +189,7 @@ public class ParticipantAccessor {
     for (PartitionId partitionId : partitionIdSet) {
       partitionNames.add(partitionId.stringify());
     }
+
     baseAccessor.update(instanceConfigKey.getPath(), new DataUpdater<ZNRecord>() {
       @Override
       public ZNRecord update(ZNRecord currentData) {
@@ -205,7 +221,10 @@ public class ParticipantAccessor {
   }
 
   /**
-   * @param disablePartitionSet
+   * disable partitions on a participant
+   * @param participantId
+   * @param resourceId
+   * @param disablePartitionIdSet
    */
   public void disablePartitionsForParticipant(ParticipantId participantId, ResourceId resourceId,
       Set<PartitionId> disablePartitionIdSet) {
@@ -213,7 +232,10 @@ public class ParticipantAccessor {
   }
 
   /**
-   * @param enablePartitionSet
+   * enable partitions on a participant
+   * @param participantId
+   * @param resourceId
+   * @param enablePartitionIdSet
    */
   public void enablePartitionsForParticipant(ParticipantId participantId, ResourceId resourceId,
       Set<PartitionId> enablePartitionIdSet) {
@@ -221,36 +243,37 @@ public class ParticipantAccessor {
   }
 
   /**
-   * create live instance for the participant
+   * reset partitions on a participant
    * @param participantId
+   * @param resourceId
+   * @param resetPartitionIdSet
    */
-  public void startParticipant(ParticipantId participantId) {
+  public void resetPartitionsForParticipant(ParticipantId participantId, ResourceId resourceId,
+      Set<PartitionId> resetPartitionIdSet) {
     // TODO impl this
   }
 
   /**
-   * read participant related data
+   * create live instance for the participant
    * @param participantId
-   * @return
    */
-  public Participant readParticipant(ParticipantId participantId) {
-    // read physical model
-    String participantName = participantId.stringify();
-    InstanceConfig instanceConfig = _accessor.getProperty(_keyBuilder.instance(participantName));
-    LiveInstance liveInstance = _accessor.getProperty(_keyBuilder.liveInstance(participantName));
-
-    Map<String, Message> instanceMsgMap = Collections.emptyMap();
-    Map<String, CurrentState> instanceCurStateMap = Collections.emptyMap();
-    if (liveInstance != null) {
-      SessionId sessionId = liveInstance.getSessionId();
+  public void connectParticipant(ParticipantId participantId) {
+    // TODO impl this
+  }
 
-      instanceMsgMap = _accessor.getChildValuesMap(_keyBuilder.messages(participantName));
-      instanceCurStateMap =
-          _accessor.getChildValuesMap(_keyBuilder.currentStates(participantName,
-              sessionId.stringify()));
-    }
+  /**
+   * create a participant based on physical model
+   * @param participantId
+   * @param instanceConfig
+   * @param liveInstance
+   * @param instanceMsgMap map of message-id to message
+   * @param instanceCurStateMap map of resource-id to current-state
+   * @return participant
+   */
+  static Participant createParticipant(ParticipantId participantId, InstanceConfig instanceConfig,
+      LiveInstance liveInstance, Map<String, Message> instanceMsgMap,
+      Map<String, CurrentState> instanceCurStateMap) {
 
-    // convert to logical model
     String hostName = instanceConfig.getHostName();
 
     int port = -1;
@@ -265,10 +288,8 @@ public class ParticipantAccessor {
     boolean isEnabled = instanceConfig.getInstanceEnabled();
 
     List<String> disabledPartitions = instanceConfig.getDisabledPartitions();
-    Set<PartitionId> disabledPartitionIdSet;
-    if (disabledPartitions == null) {
-      disabledPartitionIdSet = Collections.emptySet();
-    } else {
+    Set<PartitionId> disabledPartitionIdSet = Collections.emptySet();
+    if (disabledPartitions != null) {
       disabledPartitionIdSet = new HashSet<PartitionId>();
       for (String partitionId : disabledPartitions) {
         disabledPartitionIdSet.add(new PartitionId(PartitionId.extractResourceId(partitionId),
@@ -291,26 +312,53 @@ public class ParticipantAccessor {
       msgMap.put(new MessageId(msgId), message);
     }
 
-    // TODO convert current state
-    // Map<ParticipantId, CurState> curStateMap = new HashMap<ParticipantId, CurState>();
-    // if (currentStateMap != null) {
-    // for (String participantId : currentStateMap.keySet()) {
-    // CurState curState =
-    // new CurState(_id, new ParticipantId(participantId), currentStateMap.get(participantId));
-    // curStateMap.put(new ParticipantId(participantId), curState);
-    // }
-    // }
+    Map<ResourceId, CurrentState> curStateMap = new HashMap<ResourceId, CurrentState>();
+    if (instanceCurStateMap != null) {
+
+      for (String resourceName : instanceCurStateMap.keySet()) {
+        curStateMap.put(new ResourceId(resourceName), instanceCurStateMap.get(resourceName));
+      }
+    }
 
     return new Participant(participantId, hostName, port, isEnabled, disabledPartitionIdSet, tags,
         runningInstance, null, msgMap);
   }
 
   /**
+   * read participant related data
+   * @param participantId
+   * @return participant
+   */
+  public Participant readParticipant(ParticipantId participantId) {
+    // read physical model
+    String participantName = participantId.stringify();
+    InstanceConfig instanceConfig = _accessor.getProperty(_keyBuilder.instance(participantName));
+    LiveInstance liveInstance = _accessor.getProperty(_keyBuilder.liveInstance(participantName));
+
+    Map<String, Message> instanceMsgMap = Collections.emptyMap();
+    Map<String, CurrentState> instanceCurStateMap = Collections.emptyMap();
+    if (liveInstance != null) {
+      SessionId sessionId = liveInstance.getSessionId();
+
+      instanceMsgMap = _accessor.getChildValuesMap(_keyBuilder.messages(participantName));
+      instanceCurStateMap =
+          _accessor.getChildValuesMap(_keyBuilder.currentStates(participantName,
+              sessionId.stringify()));
+    }
+
+    return createParticipant(participantId, instanceConfig, liveInstance, instanceMsgMap,
+        instanceCurStateMap);
+  }
+
+  /**
    * update resource current state of a participant
+   * @param resourceId resource id
+   * @param participantId participant id
+   * @param sessionId session id
    * @param curStateUpdate current state change delta
    */
-  public void updateParticipantCurrentState(ParticipantId participantId, SessionId sessionId,
-      ResourceId resourceId, CurrentState curStateUpdate) {
+  public void updateCurrentState(ResourceId resourceId, ParticipantId participantId,
+      SessionId sessionId, CurrentState curStateUpdate) {
     _accessor.updateProperty(
         _keyBuilder.currentState(participantId.stringify(), sessionId.stringify(),
             resourceId.stringify()), curStateUpdate);
@@ -318,9 +366,12 @@ public class ParticipantAccessor {
 
   /**
    * drop resource current state of a participant
+   * @param resourceId resource id
+   * @param participantId participant id
+   * @param sessionId session id
    */
-  public void dropParticipantCurrentState(ParticipantId participantId, SessionId sessionId,
-      ResourceId resourceId) {
+  public void dropCurrentState(ResourceId resourceId, ParticipantId participantId,
+      SessionId sessionId) {
     _accessor.removeProperty(_keyBuilder.currentState(participantId.stringify(),
         sessionId.stringify(), resourceId.stringify()));
   }

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/api/ResourceAccessor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/api/ResourceAccessor.java b/helix-core/src/main/java/org/apache/helix/api/ResourceAccessor.java
index c0757b4..a3d2543 100644
--- a/helix-core/src/main/java/org/apache/helix/api/ResourceAccessor.java
+++ b/helix-core/src/main/java/org/apache/helix/api/ResourceAccessor.java
@@ -37,30 +37,36 @@ public class ResourceAccessor {
 
   /**
    * save resource assignment
+   * @param resourceId
+   * @param resourceAssignment
    */
-  public void setRresourceAssignment(ResourceId resourceId, RscAssignment resourceAssignment) {
+  public void setResourceAssignment(ResourceId resourceId, RscAssignment resourceAssignment) {
     // TODO impl this
   }
 
   /**
    * set ideal-state
+   * @param resourceId
+   * @param idealState
    */
-  public void setResourceIdealState(ResourceId resourceId, IdealState idealState) {
-    _accessor.setProperty(_keyBuilder.idealStates(resourceId.stringify()), idealState);
+  public void setIdealState(ResourceId resourceId, IdealState idealState) {
+    _accessor.setProperty(_keyBuilder.idealState(resourceId.stringify()), idealState);
   }
 
   /**
    * set external view of a resource
+   * @param resourceId
    * @param extView
    */
-  public void setResourceExternalView(ResourceId resourceId, ExternalView extView) {
-    _accessor.setProperty(_keyBuilder.idealStates(resourceId.stringify()), extView);
+  public void setExternalView(ResourceId resourceId, ExternalView extView) {
+    _accessor.setProperty(_keyBuilder.externalView(resourceId.stringify()), extView);
   }
 
   /**
    * drop external view of a resource
+   * @param resourceId
    */
-  public void dropResourceExternalView(ResourceId resourceId) {
-    _accessor.removeProperty(_keyBuilder.idealStates(resourceId.stringify()));
+  public void dropExternalView(ResourceId resourceId) {
+    _accessor.removeProperty(_keyBuilder.externalView(resourceId.stringify()));
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/controller/stages/ExternalViewComputeStage.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/controller/stages/ExternalViewComputeStage.java b/helix-core/src/main/java/org/apache/helix/controller/stages/ExternalViewComputeStage.java
index d50bd9e..74e039f 100644
--- a/helix-core/src/main/java/org/apache/helix/controller/stages/ExternalViewComputeStage.java
+++ b/helix-core/src/main/java/org/apache/helix/controller/stages/ExternalViewComputeStage.java
@@ -260,7 +260,7 @@ public class ExternalViewComputeStage extends AbstractBaseStage {
 
       // Remove the finished (COMPLETED or ERROR) tasks from the SCHEDULER_TASK_RESOURCE idealstate
       keyBuilder = accessor.keyBuilder();
-      accessor.updateProperty(keyBuilder.idealStates(taskQueueIdealState.getResourceName()), delta);
+      accessor.updateProperty(keyBuilder.idealState(taskQueueIdealState.getResourceName()), delta);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/manager/zk/DefaultSchedulerMessageHandlerFactory.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/DefaultSchedulerMessageHandlerFactory.java b/helix-core/src/main/java/org/apache/helix/manager/zk/DefaultSchedulerMessageHandlerFactory.java
index a7fcc10..020c99d 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/DefaultSchedulerMessageHandlerFactory.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/DefaultSchedulerMessageHandlerFactory.java
@@ -186,7 +186,7 @@ public class DefaultSchedulerMessageHandlerFactory implements MessageHandlerFact
           int existingTopPartitionId = 0;
           IdealState currentTaskQueue =
               _manager.getHelixDataAccessor().getProperty(
-                  accessor.keyBuilder().idealStates(newAddedScheduledTasks.getId()));
+                  accessor.keyBuilder().idealState(newAddedScheduledTasks.getId()));
           if (currentTaskQueue != null) {
             existingTopPartitionId = findTopPartitionId(currentTaskQueue) + 1;
           }
@@ -213,7 +213,7 @@ public class DefaultSchedulerMessageHandlerFactory implements MessageHandlerFact
             }
           }
           _manager.getHelixDataAccessor().updateProperty(
-              accessor.keyBuilder().idealStates(newAddedScheduledTasks.getId()),
+              accessor.keyBuilder().idealState(newAddedScheduledTasks.getId()),
               newAddedScheduledTasks);
           sendSummary.put("MessageCount", "" + taskMessages.size());
         }

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
index 8172c61..7c898ac 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
@@ -303,7 +303,7 @@ public class ZKHelixAdmin implements HelixAdmin {
     }
 
     // check resource group exists
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates(resourceName));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState(resourceName));
     if (idealState == null) {
       throw new HelixException("Can't reset state for " + resourceName + "/" + partitionNames
           + " on " + instanceName + ", because " + resourceName + " is not added");
@@ -659,7 +659,7 @@ public class ZKHelixAdmin implements HelixAdmin {
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient));
     Builder keyBuilder = accessor.keyBuilder();
 
-    return accessor.getProperty(keyBuilder.idealStates(resourceName));
+    return accessor.getProperty(keyBuilder.idealState(resourceName));
   }
 
   @Override
@@ -668,7 +668,7 @@ public class ZKHelixAdmin implements HelixAdmin {
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient));
     Builder keyBuilder = accessor.keyBuilder();
 
-    accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
+    accessor.setProperty(keyBuilder.idealState(resourceName), idealState);
   }
 
   @Override
@@ -704,7 +704,7 @@ public class ZKHelixAdmin implements HelixAdmin {
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient));
     Builder keyBuilder = accessor.keyBuilder();
 
-    accessor.removeProperty(keyBuilder.idealStates(resourceName));
+    accessor.removeProperty(keyBuilder.idealState(resourceName));
     accessor.removeProperty(keyBuilder.resourceConfig(resourceName));
   }
 
@@ -910,7 +910,7 @@ public class ZKHelixAdmin implements HelixAdmin {
         new ZKHelixDataAccessor(grandCluster, new ZkBaseDataAccessor<ZNRecord>(_zkClient));
     Builder keyBuilder = accessor.keyBuilder();
 
-    accessor.setProperty(keyBuilder.idealStates(idealState.getResourceName()), idealState);
+    accessor.setProperty(keyBuilder.idealState(idealState.getResourceName()), idealState);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/participant/HelixCustomCodeRunner.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/participant/HelixCustomCodeRunner.java b/helix-core/src/main/java/org/apache/helix/participant/HelixCustomCodeRunner.java
index 6a2490a..82488ed 100644
--- a/helix-core/src/main/java/org/apache/helix/participant/HelixCustomCodeRunner.java
+++ b/helix-core/src/main/java/org/apache/helix/participant/HelixCustomCodeRunner.java
@@ -142,7 +142,7 @@ public class HelixCustomCodeRunner {
 
       List<String> idealStates = accessor.getChildNames(keyBuilder.idealStates());
       while (idealStates == null || !idealStates.contains(_resourceName)) {
-        accessor.setProperty(keyBuilder.idealStates(_resourceName), idealState);
+        accessor.setProperty(keyBuilder.idealState(_resourceName), idealState);
         idealStates = accessor.getChildNames(keyBuilder.idealStates());
       }
 

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/main/java/org/apache/helix/tools/ClusterSetup.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/tools/ClusterSetup.java b/helix-core/src/main/java/org/apache/helix/tools/ClusterSetup.java
index a39e571..ba417be 100644
--- a/helix-core/src/main/java/org/apache/helix/tools/ClusterSetup.java
+++ b/helix-core/src/main/java/org/apache/helix/tools/ClusterSetup.java
@@ -310,7 +310,7 @@ public class ClusterSetup {
         accessor.getChildValues(accessor.keyBuilder().idealStates());
     for (IdealState idealState : existingIdealStates) {
       swapInstanceInIdealState(idealState, oldInstanceName, newInstanceName);
-      accessor.setProperty(accessor.keyBuilder().idealStates(idealState.getResourceName()),
+      accessor.setProperty(accessor.keyBuilder().idealState(idealState.getResourceName()),
           idealState);
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/TestZKCallback.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestZKCallback.java b/helix-core/src/test/java/org/apache/helix/TestZKCallback.java
index 74d2987..72799f0 100644
--- a/helix-core/src/test/java/org/apache/helix/TestZKCallback.java
+++ b/helix-core/src/test/java/org/apache/helix/TestZKCallback.java
@@ -167,7 +167,7 @@ public class TestZKCallback extends ZkUnitTestBase {
     idealState.setNumPartitions(400);
     idealState.setReplicas(Integer.toString(2));
     idealState.setStateModelDefRef("StateModeldef");
-    accessor.setProperty(keyBuilder.idealStates("db-1234"), idealState);
+    accessor.setProperty(keyBuilder.idealState("db-1234"), idealState);
     Thread.sleep(100);
     AssertJUnit.assertTrue(testListener.idealStateChangeReceived);
     testListener.Reset();

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java b/helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java
index 58dd070..4a505dc 100644
--- a/helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java
+++ b/helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java
@@ -176,7 +176,7 @@ public class ZkUnitTestBase {
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(zkClient));
     Builder keyBuilder = accessor.keyBuilder();
 
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates(resource));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState(resource));
     for (String partitionName : idealState.getPartitionStringSet()) {
       if (idealState.getRebalanceMode() == RebalanceMode.SEMI_AUTO) {
         AssertJUnit.assertEquals(repl, idealState.getPreferenceList(partitionName).size());
@@ -295,7 +295,7 @@ public class ZkUnitTestBase {
       idealStates.add(idealState);
 
       // System.out.println(idealState);
-      accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
+      accessor.setProperty(keyBuilder.idealState(resourceName), idealState);
     }
     return idealStates;
   }

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/controller/stages/BaseStageTest.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/controller/stages/BaseStageTest.java b/helix-core/src/test/java/org/apache/helix/controller/stages/BaseStageTest.java
index 64e378e..6dcf725 100644
--- a/helix-core/src/test/java/org/apache/helix/controller/stages/BaseStageTest.java
+++ b/helix-core/src/test/java/org/apache/helix/controller/stages/BaseStageTest.java
@@ -99,7 +99,7 @@ public class BaseStageTest {
 
       Builder keyBuilder = accessor.keyBuilder();
 
-      accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
+      accessor.setProperty(keyBuilder.idealState(resourceName), idealState);
     }
     return idealStates;
   }

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/controller/stages/TestBestPossibleCalcStageCompatibility.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/controller/stages/TestBestPossibleCalcStageCompatibility.java b/helix-core/src/test/java/org/apache/helix/controller/stages/TestBestPossibleCalcStageCompatibility.java
index 33570a0..2453bd8 100644
--- a/helix-core/src/test/java/org/apache/helix/controller/stages/TestBestPossibleCalcStageCompatibility.java
+++ b/helix-core/src/test/java/org/apache/helix/controller/stages/TestBestPossibleCalcStageCompatibility.java
@@ -133,7 +133,7 @@ public class TestBestPossibleCalcStageCompatibility extends BaseStageTest {
 
       Builder keyBuilder = accessor.keyBuilder();
 
-      accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
+      accessor.setProperty(keyBuilder.idealState(resourceName), idealState);
     }
     return idealStates;
   }

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/controller/stages/TestCompatibilityCheckStage.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/controller/stages/TestCompatibilityCheckStage.java b/helix-core/src/test/java/org/apache/helix/controller/stages/TestCompatibilityCheckStage.java
index 0b97e20..bce7c2d 100644
--- a/helix-core/src/test/java/org/apache/helix/controller/stages/TestCompatibilityCheckStage.java
+++ b/helix-core/src/test/java/org/apache/helix/controller/stages/TestCompatibilityCheckStage.java
@@ -54,7 +54,7 @@ public class TestCompatibilityCheckStage extends BaseStageTest {
     idealState.setStateModelDefRef("MasterSlave");
 
     Builder keyBuilder = accessor.keyBuilder();
-    accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
+    accessor.setProperty(keyBuilder.idealState(resourceName), idealState);
 
     // set live instances
     record = new ZNRecord("localhost_0");

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/controller/stages/TestResourceComputationStage.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/controller/stages/TestResourceComputationStage.java b/helix-core/src/test/java/org/apache/helix/controller/stages/TestResourceComputationStage.java
index 3f6fa75..b29663c 100644
--- a/helix-core/src/test/java/org/apache/helix/controller/stages/TestResourceComputationStage.java
+++ b/helix-core/src/test/java/org/apache/helix/controller/stages/TestResourceComputationStage.java
@@ -60,7 +60,7 @@ public class TestResourceComputationStage extends BaseStageTest {
 
     HelixDataAccessor accessor = manager.getHelixDataAccessor();
     Builder keyBuilder = accessor.keyBuilder();
-    accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
+    accessor.setProperty(keyBuilder.idealState(resourceName), idealState);
     ResourceComputationStage stage = new ResourceComputationStage();
     runStage(event, new ReadClusterDataStage());
     runStage(event, stage);
@@ -125,7 +125,7 @@ public class TestResourceComputationStage extends BaseStageTest {
 
       HelixDataAccessor accessor = manager.getHelixDataAccessor();
       Builder keyBuilder = accessor.keyBuilder();
-      accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
+      accessor.setProperty(keyBuilder.idealState(resourceName), idealState);
 
       idealStates.add(idealState);
     }

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestAddStateModelFactoryAfterConnect.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestAddStateModelFactoryAfterConnect.java b/helix-core/src/test/java/org/apache/helix/integration/TestAddStateModelFactoryAfterConnect.java
index 33938ad..0592883 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestAddStateModelFactoryAfterConnect.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestAddStateModelFactoryAfterConnect.java
@@ -86,9 +86,9 @@ public class TestAddStateModelFactoryAfterConnect extends ZkIntegrationTestBase
     ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
     ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor);
     Builder keyBuilder = accessor.keyBuilder();
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB1"));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState("TestDB1"));
     idealState.setStateModelFactoryName("TestDB1_Factory");
-    accessor.setProperty(keyBuilder.idealStates("TestDB1"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB1"), idealState);
     setupTool.rebalanceStorageCluster(clusterName, "TestDB1", 3);
 
     // assert that we have received OFFLINE->SLAVE messages for all partitions

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalance.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalance.java b/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalance.java
index f873b0e..747a185 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalance.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalance.java
@@ -258,7 +258,7 @@ public class TestAutoRebalance extends ZkStandAloneCMTestBaseWithPropertyServerC
           new ZKHelixDataAccessor(_clusterName, new ZkBaseDataAccessor(_client));
       Builder keyBuilder = accessor.keyBuilder();
       int numberOfPartitions =
-          accessor.getProperty(keyBuilder.idealStates(_resourceName)).getRecord().getListFields()
+          accessor.getProperty(keyBuilder.idealState(_resourceName)).getRecord().getListFields()
               .size();
       ClusterDataCache cache = new ClusterDataCache();
       cache.refresh(accessor);

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalancePartitionLimit.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalancePartitionLimit.java b/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalancePartitionLimit.java
index 2d16e61..3497290 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalancePartitionLimit.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestAutoRebalancePartitionLimit.java
@@ -225,7 +225,7 @@ public class TestAutoRebalancePartitionLimit extends ZkStandAloneCMTestBaseWithP
           new ZKHelixDataAccessor(_clusterName, new ZkBaseDataAccessor(_client));
       Builder keyBuilder = accessor.keyBuilder();
       int numberOfPartitions =
-          accessor.getProperty(keyBuilder.idealStates(_resourceName)).getRecord().getListFields()
+          accessor.getProperty(keyBuilder.idealState(_resourceName)).getRecord().getListFields()
               .size();
       ClusterDataCache cache = new ClusterDataCache();
       cache.refresh(accessor);

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessage.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessage.java b/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessage.java
index bf2de1e..5c2c68d 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessage.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessage.java
@@ -83,9 +83,9 @@ public class TestBatchMessage extends ZkIntegrationTestBase {
     ZKHelixDataAccessor accessor =
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
     Builder keyBuilder = accessor.keyBuilder();
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState("TestDB0"));
     idealState.setBatchMessageMode(true);
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     // register a message listener so we know how many message generated
     TestZkChildListener listener = new TestZkChildListener();
@@ -168,9 +168,9 @@ public class TestBatchMessage extends ZkIntegrationTestBase {
     ZKHelixDataAccessor accessor =
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
     Builder keyBuilder = accessor.keyBuilder();
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState("TestDB0"));
     idealState.setBatchMessageMode(true);
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     // registry a message listener so we know how many message generated
     TestZkChildListener listener = new TestZkChildListener();
@@ -224,9 +224,9 @@ public class TestBatchMessage extends ZkIntegrationTestBase {
     ZKHelixDataAccessor accessor =
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
     Builder keyBuilder = accessor.keyBuilder();
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState("TestDB0"));
     idealState.setBatchMessageMode(true);
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     TestHelper
         .startController(clusterName, "controller_0", ZK_ADDR, HelixControllerMain.STANDALONE);

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessageWrapper.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessageWrapper.java b/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessageWrapper.java
index 2ae8bf3..6640d82 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessageWrapper.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestBatchMessageWrapper.java
@@ -86,9 +86,9 @@ public class TestBatchMessageWrapper extends ZkUnitTestBase {
     ZKHelixDataAccessor accessor =
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
     Builder keyBuilder = accessor.keyBuilder();
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState("TestDB0"));
     idealState.setBatchMessageMode(true);
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     ClusterController controller = new ClusterController(clusterName, "controller_0", ZK_ADDR);
     controller.syncStart();

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestBucketizedResource.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestBucketizedResource.java b/helix-core/src/test/java/org/apache/helix/integration/TestBucketizedResource.java
index 8e75537..155af87 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestBucketizedResource.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestBucketizedResource.java
@@ -62,9 +62,9 @@ public class TestBucketizedResource extends ZkIntegrationTestBase {
     // String idealStatePath = PropertyPathConfig.getPath(PropertyType.IDEALSTATES, clusterName,
     // "TestDB0");
     Builder keyBuilder = accessor.keyBuilder();
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState("TestDB0"));
     idealState.setBucketSize(1);
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     TestHelper
         .startController(clusterName, "controller_0", ZK_ADDR, HelixControllerMain.STANDALONE);

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestCustomizedIdealStateRebalancer.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestCustomizedIdealStateRebalancer.java b/helix-core/src/test/java/org/apache/helix/integration/TestCustomizedIdealStateRebalancer.java
index aba14a7..86ada96 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestCustomizedIdealStateRebalancer.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestCustomizedIdealStateRebalancer.java
@@ -112,7 +112,7 @@ public class TestCustomizedIdealStateRebalancer extends
     for (String partition : ev.getPartitionStringSet()) {
       Assert.assertEquals(ev.getStateMap(partition).size(), 1);
     }
-    IdealState is = accessor.getProperty(keyBuilder.idealStates(db2));
+    IdealState is = accessor.getProperty(keyBuilder.idealState(db2));
     for (String partition : is.getPartitionStringSet()) {
       Assert.assertEquals(is.getPreferenceList(partition).size(), 0);
       Assert.assertEquals(is.getInstanceStateMap(partition).size(), 0);
@@ -139,7 +139,7 @@ public class TestCustomizedIdealStateRebalancer extends
             new ZKHelixDataAccessor(_clusterName, new ZkBaseDataAccessor(_client));
         Builder keyBuilder = accessor.keyBuilder();
         int numberOfPartitions =
-            accessor.getProperty(keyBuilder.idealStates(_resourceName)).getRecord().getListFields()
+            accessor.getProperty(keyBuilder.idealState(_resourceName)).getRecord().getListFields()
                 .size();
         ClusterDataCache cache = new ClusterDataCache();
         cache.refresh(accessor);

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestDisable.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestDisable.java b/helix-core/src/test/java/org/apache/helix/integration/TestDisable.java
index 3341e6b..c63e03a 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestDisable.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestDisable.java
@@ -67,9 +67,9 @@ public class TestDisable extends ZkIntegrationTestBase {
     ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
     ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor);
     Builder keyBuilder = accessor.keyBuilder();
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState("TestDB0"));
     idealState.setRebalanceMode(RebalanceMode.CUSTOMIZED);
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     // start controller
     ClusterController controller = new ClusterController(clusterName, "controller_0", ZK_ADDR);
@@ -234,9 +234,9 @@ public class TestDisable extends ZkIntegrationTestBase {
     ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
     ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor);
     Builder keyBuilder = accessor.keyBuilder();
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState("TestDB0"));
     idealState.setRebalanceMode(RebalanceMode.CUSTOMIZED);
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     // start controller
     ClusterController controller = new ClusterController(clusterName, "controller_0", ZK_ADDR);

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestDrop.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestDrop.java b/helix-core/src/test/java/org/apache/helix/integration/TestDrop.java
index 84e70ef..faf8504 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestDrop.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestDrop.java
@@ -243,7 +243,7 @@ public class TestDrop extends ZkIntegrationTestBase {
     HelixDataAccessor accessor =
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
     Builder keyBuiler = accessor.keyBuilder();
-    accessor.setProperty(keyBuiler.idealStates("TestDB0"), isBuilder.build());
+    accessor.setProperty(keyBuiler.idealState("TestDB0"), isBuilder.build());
 
     // start controller
     ClusterController controller = new ClusterController(clusterName, "controller_0", ZK_ADDR);

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestRenamePartition.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestRenamePartition.java b/helix-core/src/test/java/org/apache/helix/integration/TestRenamePartition.java
index c3133cc..b7f8d61 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestRenamePartition.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestRenamePartition.java
@@ -60,11 +60,11 @@ public class TestRenamePartition extends ZkIntegrationTestBase {
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_gZkClient));
     Builder keyBuilder = accessor.keyBuilder();
 
-    IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
+    IdealState idealState = accessor.getProperty(keyBuilder.idealState("TestDB0"));
 
     List<String> prioList = idealState.getRecord().getListFields().remove("TestDB0_0");
     idealState.getRecord().getListFields().put("TestDB0_100", prioList);
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     boolean result =
         ClusterStateVerifier.verifyByPolling(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(
@@ -106,13 +106,13 @@ public class TestRenamePartition extends ZkIntegrationTestBase {
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_gZkClient));
     Builder keyBuilder = accessor.keyBuilder();
 
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     startAndVerify(clusterName);
 
     Map<String, String> stateMap = idealState.getRecord().getMapFields().remove("TestDB0_0");
     idealState.getRecord().getMapFields().put("TestDB0_100", stateMap);
-    accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
 
     boolean result =
         ClusterStateVerifier.verifyByPolling(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestSchemataSM.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestSchemataSM.java b/helix-core/src/test/java/org/apache/helix/integration/TestSchemataSM.java
index 3024f45..0db33dd 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestSchemataSM.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestSchemataSM.java
@@ -63,7 +63,7 @@ public class TestSchemataSM extends ZkIntegrationTestBase {
     ZKHelixDataAccessor accessor =
         new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
     PropertyKey.Builder keyBuilder = accessor.keyBuilder();
-    PropertyKey key = keyBuilder.idealStates("TestSchemata0");
+    PropertyKey key = keyBuilder.idealState("TestSchemata0");
     IdealState idealState = accessor.getProperty(key);
     idealState.setReplicas(HelixConstants.StateModelToken.ANY_LIVEINSTANCE.toString());
     idealState.getRecord().setListField("TestSchemata0_0",

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/integration/TestSwapInstance.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestSwapInstance.java b/helix-core/src/test/java/org/apache/helix/integration/TestSwapInstance.java
index a1f63aa..c60c1c1 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestSwapInstance.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestSwapInstance.java
@@ -42,10 +42,10 @@ public class TestSwapInstance extends ZkStandAloneCMTestBase {
     ZNRecord idealStateOld1 = new ZNRecord("TestDB");
     ZNRecord idealStateOld2 = new ZNRecord("MyDB");
 
-    IdealState is1 = helixAccessor.getProperty(helixAccessor.keyBuilder().idealStates("TestDB"));
+    IdealState is1 = helixAccessor.getProperty(helixAccessor.keyBuilder().idealState("TestDB"));
     idealStateOld1.merge(is1.getRecord());
 
-    IdealState is2 = helixAccessor.getProperty(helixAccessor.keyBuilder().idealStates("MyDB"));
+    IdealState is2 = helixAccessor.getProperty(helixAccessor.keyBuilder().idealState("MyDB"));
     idealStateOld2.merge(is2.getRecord());
 
     String instanceName = PARTICIPANT_PREFIX + "_" + (START_PORT + 0);
@@ -88,9 +88,9 @@ public class TestSwapInstance extends ZkStandAloneCMTestBase {
             ZK_ADDR, CLUSTER_NAME));
     Assert.assertTrue(result);
 
-    is1 = helixAccessor.getProperty(helixAccessor.keyBuilder().idealStates("TestDB"));
+    is1 = helixAccessor.getProperty(helixAccessor.keyBuilder().idealState("TestDB"));
 
-    is2 = helixAccessor.getProperty(helixAccessor.keyBuilder().idealStates("MyDB"));
+    is2 = helixAccessor.getProperty(helixAccessor.keyBuilder().idealState("MyDB"));
 
     for (String key : idealStateOld1.getMapFields().keySet()) {
       for (String host : idealStateOld1.getMapField(key).keySet()) {

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/manager/zk/TestZNRecordSizeLimit.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZNRecordSizeLimit.java b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZNRecordSizeLimit.java
index 286593a..5b5a8e5 100644
--- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZNRecordSizeLimit.java
+++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZNRecordSizeLimit.java
@@ -125,7 +125,7 @@ public class TestZNRecordSizeLimit extends ZkUnitTestBase {
     for (int i = 0; i < 1024; i++) {
       idealState.getRecord().setSimpleField(i + "", bufStr);
     }
-    boolean succeed = accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
+    boolean succeed = accessor.setProperty(keyBuilder.idealState("TestDB0"), idealState);
     Assert.assertFalse(succeed);
     HelixProperty property =
         accessor.getProperty(keyBuilder.stateTransitionStatus("localhost_12918", "session_1",
@@ -141,9 +141,9 @@ public class TestZNRecordSizeLimit extends ZkUnitTestBase {
     for (int i = 0; i < 900; i++) {
       idealState.getRecord().setSimpleField(i + "", bufStr);
     }
-    succeed = accessor.setProperty(keyBuilder.idealStates("TestDB1"), idealState);
+    succeed = accessor.setProperty(keyBuilder.idealState("TestDB1"), idealState);
     Assert.assertTrue(succeed);
-    record = accessor.getProperty(keyBuilder.idealStates("TestDB1")).getRecord();
+    record = accessor.getProperty(keyBuilder.idealState("TestDB1")).getRecord();
     Assert.assertTrue(serializer.serialize(record).length > 900 * 1024);
 
     // oversized data should not update existing data on zk
@@ -155,9 +155,9 @@ public class TestZNRecordSizeLimit extends ZkUnitTestBase {
       idealState.getRecord().setSimpleField(i + "", bufStr);
     }
     // System.out.println("record: " + idealState.getRecord());
-    succeed = accessor.updateProperty(keyBuilder.idealStates("TestDB1"), idealState);
+    succeed = accessor.updateProperty(keyBuilder.idealState("TestDB1"), idealState);
     Assert.assertFalse(succeed);
-    recordNew = accessor.getProperty(keyBuilder.idealStates("TestDB1")).getRecord();
+    recordNew = accessor.getProperty(keyBuilder.idealState("TestDB1")).getRecord();
     arr = serializer.serialize(record);
     arrNew = serializer.serialize(recordNew);
     Assert.assertTrue(Arrays.equals(arr, arrNew));
@@ -249,9 +249,9 @@ public class TestZNRecordSizeLimit extends ZkUnitTestBase {
     for (int i = 0; i < 1024; i++) {
       idealState.getRecord().setSimpleField(i + "", bufStr);
     }
-    boolean succeed = accessor.setProperty(keyBuilder.idealStates("TestDB_1"), idealState);
+    boolean succeed = accessor.setProperty(keyBuilder.idealState("TestDB_1"), idealState);
     Assert.assertFalse(succeed);
-    HelixProperty property = accessor.getProperty(keyBuilder.idealStates("TestDB_1"));
+    HelixProperty property = accessor.getProperty(keyBuilder.idealState("TestDB_1"));
     Assert.assertNull(property);
 
     // legal sized data gets written to zk
@@ -263,9 +263,9 @@ public class TestZNRecordSizeLimit extends ZkUnitTestBase {
     for (int i = 0; i < 900; i++) {
       idealState.getRecord().setSimpleField(i + "", bufStr);
     }
-    succeed = accessor.setProperty(keyBuilder.idealStates("TestDB_2"), idealState);
+    succeed = accessor.setProperty(keyBuilder.idealState("TestDB_2"), idealState);
     Assert.assertTrue(succeed);
-    record = accessor.getProperty(keyBuilder.idealStates("TestDB_2")).getRecord();
+    record = accessor.getProperty(keyBuilder.idealState("TestDB_2")).getRecord();
     Assert.assertTrue(serializer.serialize(record).length > 900 * 1024);
 
     // oversized data should not update existing data on zk
@@ -278,9 +278,9 @@ public class TestZNRecordSizeLimit extends ZkUnitTestBase {
       idealState.getRecord().setSimpleField(i + "", bufStr);
     }
     // System.out.println("record: " + idealState.getRecord());
-    succeed = accessor.updateProperty(keyBuilder.idealStates("TestDB_2"), idealState);
+    succeed = accessor.updateProperty(keyBuilder.idealState("TestDB_2"), idealState);
     Assert.assertFalse(succeed);
-    recordNew = accessor.getProperty(keyBuilder.idealStates("TestDB_2")).getRecord();
+    recordNew = accessor.getProperty(keyBuilder.idealState("TestDB_2")).getRecord();
     arr = serializer.serialize(record);
     arrNew = serializer.serialize(recordNew);
     Assert.assertTrue(Arrays.equals(arr, arrNew));

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java
index 4b3764f..874e337 100644
--- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java
+++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java
@@ -212,13 +212,13 @@ public class TestZkHelixAdmin extends ZkUnitTestBase {
         .forCluster(clusterName).forResource("test-db").build(), resourceConfig);
 
     PropertyKey.Builder keyBuilder = new PropertyKey.Builder(clusterName);
-    Assert.assertTrue(_gZkClient.exists(keyBuilder.idealStates("test-db").getPath()),
+    Assert.assertTrue(_gZkClient.exists(keyBuilder.idealState("test-db").getPath()),
         "test-db ideal-state should exist");
     Assert.assertTrue(_gZkClient.exists(keyBuilder.resourceConfig("test-db").getPath()),
         "test-db resource config should exist");
 
     tool.dropResource(clusterName, "test-db");
-    Assert.assertFalse(_gZkClient.exists(keyBuilder.idealStates("test-db").getPath()),
+    Assert.assertFalse(_gZkClient.exists(keyBuilder.idealState("test-db").getPath()),
         "test-db ideal-state should be dropped");
     Assert.assertFalse(_gZkClient.exists(keyBuilder.resourceConfig("test-db").getPath()),
         "test-db resource config should be dropped");

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResourceMonitor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResourceMonitor.java b/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResourceMonitor.java
index 6712c40..f5e41de 100644
--- a/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResourceMonitor.java
+++ b/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResourceMonitor.java
@@ -114,7 +114,7 @@ public class TestResourceMonitor {
     HelixDataAccessor helixDataAccessor = manager.getHelixDataAccessor();
     Builder keyBuilder = helixDataAccessor.keyBuilder();
     ExternalView externalView = helixDataAccessor.getProperty(keyBuilder.externalView(_dbName));
-    IdealState idealState = helixDataAccessor.getProperty(keyBuilder.idealStates(_dbName));
+    IdealState idealState = helixDataAccessor.getProperty(keyBuilder.idealState(_dbName));
 
     monitor.updateExternalView(externalView, idealState);
 

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/becfda1c/helix-core/src/test/java/org/apache/helix/tools/TestHelixAdminCli.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/tools/TestHelixAdminCli.java b/helix-core/src/test/java/org/apache/helix/tools/TestHelixAdminCli.java
index 1f28f4b..6935de4 100644
--- a/helix-core/src/test/java/org/apache/helix/tools/TestHelixAdminCli.java
+++ b/helix-core/src/test/java/org/apache/helix/tools/TestHelixAdminCli.java
@@ -342,7 +342,7 @@ public class TestHelixAdminCli extends ZkIntegrationTestBase {
     // save ideal state
     BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
     HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor);
-    IdealState idealState = accessor.getProperty(accessor.keyBuilder().idealStates("db_11"));
+    IdealState idealState = accessor.getProperty(accessor.keyBuilder().idealState("db_11"));
     ZNRecordJsonSerializer serializer = new ZNRecordJsonSerializer();
 
     String tmpDir = System.getProperty("java.io.tmpdir");
@@ -371,7 +371,7 @@ public class TestHelixAdminCli extends ZkIntegrationTestBase {
             clusterName));
     Assert.assertTrue(verifyResult);
 
-    IdealState idealState2 = accessor.getProperty(accessor.keyBuilder().idealStates("db_11"));
+    IdealState idealState2 = accessor.getProperty(accessor.keyBuilder().idealState("db_11"));
     Assert.assertTrue(idealState2.getRecord().equals(idealState.getRecord()));
 
     // clean up
@@ -650,7 +650,7 @@ public class TestHelixAdminCli extends ZkIntegrationTestBase {
     command = "-zkSvr localhost:2183 -rebalance " + clusterName + " db_11 2 -instanceGroupTag tag1";
     ClusterSetup.processCommandLineArgs(command.split("\\s+"));
 
-    IdealState dbIs = accessor.getProperty(accessor.keyBuilder().idealStates("db_11"));
+    IdealState dbIs = accessor.getProperty(accessor.keyBuilder().idealState("db_11"));
     Set<String> hosts = new HashSet<String>();
     for (String p : dbIs.getPartitionStringSet()) {
       for (String hostName : dbIs.getInstanceStateMap(p).keySet()) {
@@ -672,7 +672,7 @@ public class TestHelixAdminCli extends ZkIntegrationTestBase {
     command = "-zkSvr localhost:2183 -rebalance " + clusterName + " db_11 3 -instanceGroupTag tag2";
     ClusterSetup.processCommandLineArgs(command.split("\\s+"));
 
-    dbIs = accessor.getProperty(accessor.keyBuilder().idealStates("db_11"));
+    dbIs = accessor.getProperty(accessor.keyBuilder().idealState("db_11"));
     hosts = new HashSet<String>();
     for (String p : dbIs.getPartitionStringSet()) {
       for (String hostName : dbIs.getInstanceStateMap(p).keySet()) {
@@ -700,7 +700,7 @@ public class TestHelixAdminCli extends ZkIntegrationTestBase {
 
     command = "-zkSvr localhost:2183 -rebalance " + clusterName + " db_11 3 -instanceGroupTag tag2";
     ClusterSetup.processCommandLineArgs(command.split("\\s+"));
-    dbIs = accessor.getProperty(accessor.keyBuilder().idealStates("db_11"));
+    dbIs = accessor.getProperty(accessor.keyBuilder().idealState("db_11"));
     hosts = new HashSet<String>();
     for (String p : dbIs.getPartitionStringSet()) {
       for (String hostName : dbIs.getInstanceStateMap(p).keySet()) {