@Override
  public LogicalRequest getProvisionRequest(long clusterId) {
    Collection<TopologyRequestEntity> entities = topologyRequestDAO.findByClusterId(clusterId);
    for (TopologyRequestEntity entity : entities) {
      if(TopologyRequest.Type.PROVISION == TopologyRequest.Type.valueOf(entity.getAction())) {
        TopologyLogicalRequestEntity logicalRequestEntity = entity.getTopologyLogicalRequestEntity();
        TopologyRequest replayedRequest = new ReplayedTopologyRequest(entity, blueprintFactory);
        try {
          ClusterTopology clusterTopology = new ClusterTopologyImpl(ambariContext, replayedRequest);
          Long logicalId = logicalRequestEntity.getId();
          return logicalRequestFactory.createRequest(logicalId, replayedRequest, clusterTopology, logicalRequestEntity);
        } catch (InvalidTopologyException e) {
          throw new RuntimeException("Failed to construct cluster topology while replaying request: " + e, e);
        } catch (AmbariException e) {
          throw new RuntimeException("Failed to construct logical request during replay: " + e, e);
        }
      }
    }

    return null;
  }
Implementation which uses Ambari Database DAO and Entity objects for persistence
of topology related information.
ambari-server/src/main/java/org/apache/ambari/server/topology/PersistedStateImpl.java