You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by bo...@apache.org on 2015/10/05 23:00:35 UTC

[03/37] storm git commit: Aggregate topo stats on nimbus, not ui

http://git-wip-us.apache.org/repos/asf/storm/blob/a16b50c9/storm-core/src/jvm/backtype/storm/generated/TopologyStats.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/generated/TopologyStats.java b/storm-core/src/jvm/backtype/storm/generated/TopologyStats.java
new file mode 100644
index 0000000..359e588
--- /dev/null
+++ b/storm-core/src/jvm/backtype/storm/generated/TopologyStats.java
@@ -0,0 +1,1094 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package backtype.storm.generated;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-5-14")
+public class TopologyStats implements org.apache.thrift.TBase<TopologyStats, TopologyStats._Fields>, java.io.Serializable, Cloneable, Comparable<TopologyStats> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TopologyStats");
+
+  private static final org.apache.thrift.protocol.TField WINDOW_TO_EMITTED_FIELD_DESC = new org.apache.thrift.protocol.TField("window_to_emitted", org.apache.thrift.protocol.TType.MAP, (short)513);
+  private static final org.apache.thrift.protocol.TField WINDOW_TO_TRANSFERRED_FIELD_DESC = new org.apache.thrift.protocol.TField("window_to_transferred", org.apache.thrift.protocol.TType.MAP, (short)514);
+  private static final org.apache.thrift.protocol.TField WINDOW_TO_COMPLETE_LATENCIES_MS_FIELD_DESC = new org.apache.thrift.protocol.TField("window_to_complete_latencies_ms", org.apache.thrift.protocol.TType.MAP, (short)515);
+  private static final org.apache.thrift.protocol.TField WINDOW_TO_ACKED_FIELD_DESC = new org.apache.thrift.protocol.TField("window_to_acked", org.apache.thrift.protocol.TType.MAP, (short)516);
+  private static final org.apache.thrift.protocol.TField WINDOW_TO_FAILED_FIELD_DESC = new org.apache.thrift.protocol.TField("window_to_failed", org.apache.thrift.protocol.TType.MAP, (short)517);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new TopologyStatsStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new TopologyStatsTupleSchemeFactory());
+  }
+
+  private Map<String,Long> window_to_emitted; // optional
+  private Map<String,Long> window_to_transferred; // optional
+  private Map<String,Double> window_to_complete_latencies_ms; // optional
+  private Map<String,Long> window_to_acked; // optional
+  private Map<String,Long> window_to_failed; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    WINDOW_TO_EMITTED((short)513, "window_to_emitted"),
+    WINDOW_TO_TRANSFERRED((short)514, "window_to_transferred"),
+    WINDOW_TO_COMPLETE_LATENCIES_MS((short)515, "window_to_complete_latencies_ms"),
+    WINDOW_TO_ACKED((short)516, "window_to_acked"),
+    WINDOW_TO_FAILED((short)517, "window_to_failed");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 513: // WINDOW_TO_EMITTED
+          return WINDOW_TO_EMITTED;
+        case 514: // WINDOW_TO_TRANSFERRED
+          return WINDOW_TO_TRANSFERRED;
+        case 515: // WINDOW_TO_COMPLETE_LATENCIES_MS
+          return WINDOW_TO_COMPLETE_LATENCIES_MS;
+        case 516: // WINDOW_TO_ACKED
+          return WINDOW_TO_ACKED;
+        case 517: // WINDOW_TO_FAILED
+          return WINDOW_TO_FAILED;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final _Fields optionals[] = {_Fields.WINDOW_TO_EMITTED,_Fields.WINDOW_TO_TRANSFERRED,_Fields.WINDOW_TO_COMPLETE_LATENCIES_MS,_Fields.WINDOW_TO_ACKED,_Fields.WINDOW_TO_FAILED};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.WINDOW_TO_EMITTED, new org.apache.thrift.meta_data.FieldMetaData("window_to_emitted", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64))));
+    tmpMap.put(_Fields.WINDOW_TO_TRANSFERRED, new org.apache.thrift.meta_data.FieldMetaData("window_to_transferred", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64))));
+    tmpMap.put(_Fields.WINDOW_TO_COMPLETE_LATENCIES_MS, new org.apache.thrift.meta_data.FieldMetaData("window_to_complete_latencies_ms", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE))));
+    tmpMap.put(_Fields.WINDOW_TO_ACKED, new org.apache.thrift.meta_data.FieldMetaData("window_to_acked", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64))));
+    tmpMap.put(_Fields.WINDOW_TO_FAILED, new org.apache.thrift.meta_data.FieldMetaData("window_to_failed", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TopologyStats.class, metaDataMap);
+  }
+
+  public TopologyStats() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public TopologyStats(TopologyStats other) {
+    if (other.is_set_window_to_emitted()) {
+      Map<String,Long> __this__window_to_emitted = new HashMap<String,Long>(other.window_to_emitted);
+      this.window_to_emitted = __this__window_to_emitted;
+    }
+    if (other.is_set_window_to_transferred()) {
+      Map<String,Long> __this__window_to_transferred = new HashMap<String,Long>(other.window_to_transferred);
+      this.window_to_transferred = __this__window_to_transferred;
+    }
+    if (other.is_set_window_to_complete_latencies_ms()) {
+      Map<String,Double> __this__window_to_complete_latencies_ms = new HashMap<String,Double>(other.window_to_complete_latencies_ms);
+      this.window_to_complete_latencies_ms = __this__window_to_complete_latencies_ms;
+    }
+    if (other.is_set_window_to_acked()) {
+      Map<String,Long> __this__window_to_acked = new HashMap<String,Long>(other.window_to_acked);
+      this.window_to_acked = __this__window_to_acked;
+    }
+    if (other.is_set_window_to_failed()) {
+      Map<String,Long> __this__window_to_failed = new HashMap<String,Long>(other.window_to_failed);
+      this.window_to_failed = __this__window_to_failed;
+    }
+  }
+
+  public TopologyStats deepCopy() {
+    return new TopologyStats(this);
+  }
+
+  @Override
+  public void clear() {
+    this.window_to_emitted = null;
+    this.window_to_transferred = null;
+    this.window_to_complete_latencies_ms = null;
+    this.window_to_acked = null;
+    this.window_to_failed = null;
+  }
+
+  public int get_window_to_emitted_size() {
+    return (this.window_to_emitted == null) ? 0 : this.window_to_emitted.size();
+  }
+
+  public void put_to_window_to_emitted(String key, long val) {
+    if (this.window_to_emitted == null) {
+      this.window_to_emitted = new HashMap<String,Long>();
+    }
+    this.window_to_emitted.put(key, val);
+  }
+
+  public Map<String,Long> get_window_to_emitted() {
+    return this.window_to_emitted;
+  }
+
+  public void set_window_to_emitted(Map<String,Long> window_to_emitted) {
+    this.window_to_emitted = window_to_emitted;
+  }
+
+  public void unset_window_to_emitted() {
+    this.window_to_emitted = null;
+  }
+
+  /** Returns true if field window_to_emitted is set (has been assigned a value) and false otherwise */
+  public boolean is_set_window_to_emitted() {
+    return this.window_to_emitted != null;
+  }
+
+  public void set_window_to_emitted_isSet(boolean value) {
+    if (!value) {
+      this.window_to_emitted = null;
+    }
+  }
+
+  public int get_window_to_transferred_size() {
+    return (this.window_to_transferred == null) ? 0 : this.window_to_transferred.size();
+  }
+
+  public void put_to_window_to_transferred(String key, long val) {
+    if (this.window_to_transferred == null) {
+      this.window_to_transferred = new HashMap<String,Long>();
+    }
+    this.window_to_transferred.put(key, val);
+  }
+
+  public Map<String,Long> get_window_to_transferred() {
+    return this.window_to_transferred;
+  }
+
+  public void set_window_to_transferred(Map<String,Long> window_to_transferred) {
+    this.window_to_transferred = window_to_transferred;
+  }
+
+  public void unset_window_to_transferred() {
+    this.window_to_transferred = null;
+  }
+
+  /** Returns true if field window_to_transferred is set (has been assigned a value) and false otherwise */
+  public boolean is_set_window_to_transferred() {
+    return this.window_to_transferred != null;
+  }
+
+  public void set_window_to_transferred_isSet(boolean value) {
+    if (!value) {
+      this.window_to_transferred = null;
+    }
+  }
+
+  public int get_window_to_complete_latencies_ms_size() {
+    return (this.window_to_complete_latencies_ms == null) ? 0 : this.window_to_complete_latencies_ms.size();
+  }
+
+  public void put_to_window_to_complete_latencies_ms(String key, double val) {
+    if (this.window_to_complete_latencies_ms == null) {
+      this.window_to_complete_latencies_ms = new HashMap<String,Double>();
+    }
+    this.window_to_complete_latencies_ms.put(key, val);
+  }
+
+  public Map<String,Double> get_window_to_complete_latencies_ms() {
+    return this.window_to_complete_latencies_ms;
+  }
+
+  public void set_window_to_complete_latencies_ms(Map<String,Double> window_to_complete_latencies_ms) {
+    this.window_to_complete_latencies_ms = window_to_complete_latencies_ms;
+  }
+
+  public void unset_window_to_complete_latencies_ms() {
+    this.window_to_complete_latencies_ms = null;
+  }
+
+  /** Returns true if field window_to_complete_latencies_ms is set (has been assigned a value) and false otherwise */
+  public boolean is_set_window_to_complete_latencies_ms() {
+    return this.window_to_complete_latencies_ms != null;
+  }
+
+  public void set_window_to_complete_latencies_ms_isSet(boolean value) {
+    if (!value) {
+      this.window_to_complete_latencies_ms = null;
+    }
+  }
+
+  public int get_window_to_acked_size() {
+    return (this.window_to_acked == null) ? 0 : this.window_to_acked.size();
+  }
+
+  public void put_to_window_to_acked(String key, long val) {
+    if (this.window_to_acked == null) {
+      this.window_to_acked = new HashMap<String,Long>();
+    }
+    this.window_to_acked.put(key, val);
+  }
+
+  public Map<String,Long> get_window_to_acked() {
+    return this.window_to_acked;
+  }
+
+  public void set_window_to_acked(Map<String,Long> window_to_acked) {
+    this.window_to_acked = window_to_acked;
+  }
+
+  public void unset_window_to_acked() {
+    this.window_to_acked = null;
+  }
+
+  /** Returns true if field window_to_acked is set (has been assigned a value) and false otherwise */
+  public boolean is_set_window_to_acked() {
+    return this.window_to_acked != null;
+  }
+
+  public void set_window_to_acked_isSet(boolean value) {
+    if (!value) {
+      this.window_to_acked = null;
+    }
+  }
+
+  public int get_window_to_failed_size() {
+    return (this.window_to_failed == null) ? 0 : this.window_to_failed.size();
+  }
+
+  public void put_to_window_to_failed(String key, long val) {
+    if (this.window_to_failed == null) {
+      this.window_to_failed = new HashMap<String,Long>();
+    }
+    this.window_to_failed.put(key, val);
+  }
+
+  public Map<String,Long> get_window_to_failed() {
+    return this.window_to_failed;
+  }
+
+  public void set_window_to_failed(Map<String,Long> window_to_failed) {
+    this.window_to_failed = window_to_failed;
+  }
+
+  public void unset_window_to_failed() {
+    this.window_to_failed = null;
+  }
+
+  /** Returns true if field window_to_failed is set (has been assigned a value) and false otherwise */
+  public boolean is_set_window_to_failed() {
+    return this.window_to_failed != null;
+  }
+
+  public void set_window_to_failed_isSet(boolean value) {
+    if (!value) {
+      this.window_to_failed = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case WINDOW_TO_EMITTED:
+      if (value == null) {
+        unset_window_to_emitted();
+      } else {
+        set_window_to_emitted((Map<String,Long>)value);
+      }
+      break;
+
+    case WINDOW_TO_TRANSFERRED:
+      if (value == null) {
+        unset_window_to_transferred();
+      } else {
+        set_window_to_transferred((Map<String,Long>)value);
+      }
+      break;
+
+    case WINDOW_TO_COMPLETE_LATENCIES_MS:
+      if (value == null) {
+        unset_window_to_complete_latencies_ms();
+      } else {
+        set_window_to_complete_latencies_ms((Map<String,Double>)value);
+      }
+      break;
+
+    case WINDOW_TO_ACKED:
+      if (value == null) {
+        unset_window_to_acked();
+      } else {
+        set_window_to_acked((Map<String,Long>)value);
+      }
+      break;
+
+    case WINDOW_TO_FAILED:
+      if (value == null) {
+        unset_window_to_failed();
+      } else {
+        set_window_to_failed((Map<String,Long>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case WINDOW_TO_EMITTED:
+      return get_window_to_emitted();
+
+    case WINDOW_TO_TRANSFERRED:
+      return get_window_to_transferred();
+
+    case WINDOW_TO_COMPLETE_LATENCIES_MS:
+      return get_window_to_complete_latencies_ms();
+
+    case WINDOW_TO_ACKED:
+      return get_window_to_acked();
+
+    case WINDOW_TO_FAILED:
+      return get_window_to_failed();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case WINDOW_TO_EMITTED:
+      return is_set_window_to_emitted();
+    case WINDOW_TO_TRANSFERRED:
+      return is_set_window_to_transferred();
+    case WINDOW_TO_COMPLETE_LATENCIES_MS:
+      return is_set_window_to_complete_latencies_ms();
+    case WINDOW_TO_ACKED:
+      return is_set_window_to_acked();
+    case WINDOW_TO_FAILED:
+      return is_set_window_to_failed();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof TopologyStats)
+      return this.equals((TopologyStats)that);
+    return false;
+  }
+
+  public boolean equals(TopologyStats that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_window_to_emitted = true && this.is_set_window_to_emitted();
+    boolean that_present_window_to_emitted = true && that.is_set_window_to_emitted();
+    if (this_present_window_to_emitted || that_present_window_to_emitted) {
+      if (!(this_present_window_to_emitted && that_present_window_to_emitted))
+        return false;
+      if (!this.window_to_emitted.equals(that.window_to_emitted))
+        return false;
+    }
+
+    boolean this_present_window_to_transferred = true && this.is_set_window_to_transferred();
+    boolean that_present_window_to_transferred = true && that.is_set_window_to_transferred();
+    if (this_present_window_to_transferred || that_present_window_to_transferred) {
+      if (!(this_present_window_to_transferred && that_present_window_to_transferred))
+        return false;
+      if (!this.window_to_transferred.equals(that.window_to_transferred))
+        return false;
+    }
+
+    boolean this_present_window_to_complete_latencies_ms = true && this.is_set_window_to_complete_latencies_ms();
+    boolean that_present_window_to_complete_latencies_ms = true && that.is_set_window_to_complete_latencies_ms();
+    if (this_present_window_to_complete_latencies_ms || that_present_window_to_complete_latencies_ms) {
+      if (!(this_present_window_to_complete_latencies_ms && that_present_window_to_complete_latencies_ms))
+        return false;
+      if (!this.window_to_complete_latencies_ms.equals(that.window_to_complete_latencies_ms))
+        return false;
+    }
+
+    boolean this_present_window_to_acked = true && this.is_set_window_to_acked();
+    boolean that_present_window_to_acked = true && that.is_set_window_to_acked();
+    if (this_present_window_to_acked || that_present_window_to_acked) {
+      if (!(this_present_window_to_acked && that_present_window_to_acked))
+        return false;
+      if (!this.window_to_acked.equals(that.window_to_acked))
+        return false;
+    }
+
+    boolean this_present_window_to_failed = true && this.is_set_window_to_failed();
+    boolean that_present_window_to_failed = true && that.is_set_window_to_failed();
+    if (this_present_window_to_failed || that_present_window_to_failed) {
+      if (!(this_present_window_to_failed && that_present_window_to_failed))
+        return false;
+      if (!this.window_to_failed.equals(that.window_to_failed))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_window_to_emitted = true && (is_set_window_to_emitted());
+    list.add(present_window_to_emitted);
+    if (present_window_to_emitted)
+      list.add(window_to_emitted);
+
+    boolean present_window_to_transferred = true && (is_set_window_to_transferred());
+    list.add(present_window_to_transferred);
+    if (present_window_to_transferred)
+      list.add(window_to_transferred);
+
+    boolean present_window_to_complete_latencies_ms = true && (is_set_window_to_complete_latencies_ms());
+    list.add(present_window_to_complete_latencies_ms);
+    if (present_window_to_complete_latencies_ms)
+      list.add(window_to_complete_latencies_ms);
+
+    boolean present_window_to_acked = true && (is_set_window_to_acked());
+    list.add(present_window_to_acked);
+    if (present_window_to_acked)
+      list.add(window_to_acked);
+
+    boolean present_window_to_failed = true && (is_set_window_to_failed());
+    list.add(present_window_to_failed);
+    if (present_window_to_failed)
+      list.add(window_to_failed);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(TopologyStats other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(is_set_window_to_emitted()).compareTo(other.is_set_window_to_emitted());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (is_set_window_to_emitted()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.window_to_emitted, other.window_to_emitted);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(is_set_window_to_transferred()).compareTo(other.is_set_window_to_transferred());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (is_set_window_to_transferred()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.window_to_transferred, other.window_to_transferred);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(is_set_window_to_complete_latencies_ms()).compareTo(other.is_set_window_to_complete_latencies_ms());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (is_set_window_to_complete_latencies_ms()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.window_to_complete_latencies_ms, other.window_to_complete_latencies_ms);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(is_set_window_to_acked()).compareTo(other.is_set_window_to_acked());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (is_set_window_to_acked()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.window_to_acked, other.window_to_acked);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(is_set_window_to_failed()).compareTo(other.is_set_window_to_failed());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (is_set_window_to_failed()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.window_to_failed, other.window_to_failed);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("TopologyStats(");
+    boolean first = true;
+
+    if (is_set_window_to_emitted()) {
+      sb.append("window_to_emitted:");
+      if (this.window_to_emitted == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.window_to_emitted);
+      }
+      first = false;
+    }
+    if (is_set_window_to_transferred()) {
+      if (!first) sb.append(", ");
+      sb.append("window_to_transferred:");
+      if (this.window_to_transferred == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.window_to_transferred);
+      }
+      first = false;
+    }
+    if (is_set_window_to_complete_latencies_ms()) {
+      if (!first) sb.append(", ");
+      sb.append("window_to_complete_latencies_ms:");
+      if (this.window_to_complete_latencies_ms == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.window_to_complete_latencies_ms);
+      }
+      first = false;
+    }
+    if (is_set_window_to_acked()) {
+      if (!first) sb.append(", ");
+      sb.append("window_to_acked:");
+      if (this.window_to_acked == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.window_to_acked);
+      }
+      first = false;
+    }
+    if (is_set_window_to_failed()) {
+      if (!first) sb.append(", ");
+      sb.append("window_to_failed:");
+      if (this.window_to_failed == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.window_to_failed);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class TopologyStatsStandardSchemeFactory implements SchemeFactory {
+    public TopologyStatsStandardScheme getScheme() {
+      return new TopologyStatsStandardScheme();
+    }
+  }
+
+  private static class TopologyStatsStandardScheme extends StandardScheme<TopologyStats> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, TopologyStats struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 513: // WINDOW_TO_EMITTED
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map316 = iprot.readMapBegin();
+                struct.window_to_emitted = new HashMap<String,Long>(2*_map316.size);
+                String _key317;
+                long _val318;
+                for (int _i319 = 0; _i319 < _map316.size; ++_i319)
+                {
+                  _key317 = iprot.readString();
+                  _val318 = iprot.readI64();
+                  struct.window_to_emitted.put(_key317, _val318);
+                }
+                iprot.readMapEnd();
+              }
+              struct.set_window_to_emitted_isSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 514: // WINDOW_TO_TRANSFERRED
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map320 = iprot.readMapBegin();
+                struct.window_to_transferred = new HashMap<String,Long>(2*_map320.size);
+                String _key321;
+                long _val322;
+                for (int _i323 = 0; _i323 < _map320.size; ++_i323)
+                {
+                  _key321 = iprot.readString();
+                  _val322 = iprot.readI64();
+                  struct.window_to_transferred.put(_key321, _val322);
+                }
+                iprot.readMapEnd();
+              }
+              struct.set_window_to_transferred_isSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 515: // WINDOW_TO_COMPLETE_LATENCIES_MS
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map324 = iprot.readMapBegin();
+                struct.window_to_complete_latencies_ms = new HashMap<String,Double>(2*_map324.size);
+                String _key325;
+                double _val326;
+                for (int _i327 = 0; _i327 < _map324.size; ++_i327)
+                {
+                  _key325 = iprot.readString();
+                  _val326 = iprot.readDouble();
+                  struct.window_to_complete_latencies_ms.put(_key325, _val326);
+                }
+                iprot.readMapEnd();
+              }
+              struct.set_window_to_complete_latencies_ms_isSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 516: // WINDOW_TO_ACKED
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map328 = iprot.readMapBegin();
+                struct.window_to_acked = new HashMap<String,Long>(2*_map328.size);
+                String _key329;
+                long _val330;
+                for (int _i331 = 0; _i331 < _map328.size; ++_i331)
+                {
+                  _key329 = iprot.readString();
+                  _val330 = iprot.readI64();
+                  struct.window_to_acked.put(_key329, _val330);
+                }
+                iprot.readMapEnd();
+              }
+              struct.set_window_to_acked_isSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 517: // WINDOW_TO_FAILED
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map332 = iprot.readMapBegin();
+                struct.window_to_failed = new HashMap<String,Long>(2*_map332.size);
+                String _key333;
+                long _val334;
+                for (int _i335 = 0; _i335 < _map332.size; ++_i335)
+                {
+                  _key333 = iprot.readString();
+                  _val334 = iprot.readI64();
+                  struct.window_to_failed.put(_key333, _val334);
+                }
+                iprot.readMapEnd();
+              }
+              struct.set_window_to_failed_isSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, TopologyStats struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.window_to_emitted != null) {
+        if (struct.is_set_window_to_emitted()) {
+          oprot.writeFieldBegin(WINDOW_TO_EMITTED_FIELD_DESC);
+          {
+            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I64, struct.window_to_emitted.size()));
+            for (Map.Entry<String, Long> _iter336 : struct.window_to_emitted.entrySet())
+            {
+              oprot.writeString(_iter336.getKey());
+              oprot.writeI64(_iter336.getValue());
+            }
+            oprot.writeMapEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.window_to_transferred != null) {
+        if (struct.is_set_window_to_transferred()) {
+          oprot.writeFieldBegin(WINDOW_TO_TRANSFERRED_FIELD_DESC);
+          {
+            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I64, struct.window_to_transferred.size()));
+            for (Map.Entry<String, Long> _iter337 : struct.window_to_transferred.entrySet())
+            {
+              oprot.writeString(_iter337.getKey());
+              oprot.writeI64(_iter337.getValue());
+            }
+            oprot.writeMapEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.window_to_complete_latencies_ms != null) {
+        if (struct.is_set_window_to_complete_latencies_ms()) {
+          oprot.writeFieldBegin(WINDOW_TO_COMPLETE_LATENCIES_MS_FIELD_DESC);
+          {
+            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.DOUBLE, struct.window_to_complete_latencies_ms.size()));
+            for (Map.Entry<String, Double> _iter338 : struct.window_to_complete_latencies_ms.entrySet())
+            {
+              oprot.writeString(_iter338.getKey());
+              oprot.writeDouble(_iter338.getValue());
+            }
+            oprot.writeMapEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.window_to_acked != null) {
+        if (struct.is_set_window_to_acked()) {
+          oprot.writeFieldBegin(WINDOW_TO_ACKED_FIELD_DESC);
+          {
+            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I64, struct.window_to_acked.size()));
+            for (Map.Entry<String, Long> _iter339 : struct.window_to_acked.entrySet())
+            {
+              oprot.writeString(_iter339.getKey());
+              oprot.writeI64(_iter339.getValue());
+            }
+            oprot.writeMapEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.window_to_failed != null) {
+        if (struct.is_set_window_to_failed()) {
+          oprot.writeFieldBegin(WINDOW_TO_FAILED_FIELD_DESC);
+          {
+            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I64, struct.window_to_failed.size()));
+            for (Map.Entry<String, Long> _iter340 : struct.window_to_failed.entrySet())
+            {
+              oprot.writeString(_iter340.getKey());
+              oprot.writeI64(_iter340.getValue());
+            }
+            oprot.writeMapEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class TopologyStatsTupleSchemeFactory implements SchemeFactory {
+    public TopologyStatsTupleScheme getScheme() {
+      return new TopologyStatsTupleScheme();
+    }
+  }
+
+  private static class TopologyStatsTupleScheme extends TupleScheme<TopologyStats> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, TopologyStats struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.is_set_window_to_emitted()) {
+        optionals.set(0);
+      }
+      if (struct.is_set_window_to_transferred()) {
+        optionals.set(1);
+      }
+      if (struct.is_set_window_to_complete_latencies_ms()) {
+        optionals.set(2);
+      }
+      if (struct.is_set_window_to_acked()) {
+        optionals.set(3);
+      }
+      if (struct.is_set_window_to_failed()) {
+        optionals.set(4);
+      }
+      oprot.writeBitSet(optionals, 5);
+      if (struct.is_set_window_to_emitted()) {
+        {
+          oprot.writeI32(struct.window_to_emitted.size());
+          for (Map.Entry<String, Long> _iter341 : struct.window_to_emitted.entrySet())
+          {
+            oprot.writeString(_iter341.getKey());
+            oprot.writeI64(_iter341.getValue());
+          }
+        }
+      }
+      if (struct.is_set_window_to_transferred()) {
+        {
+          oprot.writeI32(struct.window_to_transferred.size());
+          for (Map.Entry<String, Long> _iter342 : struct.window_to_transferred.entrySet())
+          {
+            oprot.writeString(_iter342.getKey());
+            oprot.writeI64(_iter342.getValue());
+          }
+        }
+      }
+      if (struct.is_set_window_to_complete_latencies_ms()) {
+        {
+          oprot.writeI32(struct.window_to_complete_latencies_ms.size());
+          for (Map.Entry<String, Double> _iter343 : struct.window_to_complete_latencies_ms.entrySet())
+          {
+            oprot.writeString(_iter343.getKey());
+            oprot.writeDouble(_iter343.getValue());
+          }
+        }
+      }
+      if (struct.is_set_window_to_acked()) {
+        {
+          oprot.writeI32(struct.window_to_acked.size());
+          for (Map.Entry<String, Long> _iter344 : struct.window_to_acked.entrySet())
+          {
+            oprot.writeString(_iter344.getKey());
+            oprot.writeI64(_iter344.getValue());
+          }
+        }
+      }
+      if (struct.is_set_window_to_failed()) {
+        {
+          oprot.writeI32(struct.window_to_failed.size());
+          for (Map.Entry<String, Long> _iter345 : struct.window_to_failed.entrySet())
+          {
+            oprot.writeString(_iter345.getKey());
+            oprot.writeI64(_iter345.getValue());
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, TopologyStats struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(5);
+      if (incoming.get(0)) {
+        {
+          org.apache.thrift.protocol.TMap _map346 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I64, iprot.readI32());
+          struct.window_to_emitted = new HashMap<String,Long>(2*_map346.size);
+          String _key347;
+          long _val348;
+          for (int _i349 = 0; _i349 < _map346.size; ++_i349)
+          {
+            _key347 = iprot.readString();
+            _val348 = iprot.readI64();
+            struct.window_to_emitted.put(_key347, _val348);
+          }
+        }
+        struct.set_window_to_emitted_isSet(true);
+      }
+      if (incoming.get(1)) {
+        {
+          org.apache.thrift.protocol.TMap _map350 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I64, iprot.readI32());
+          struct.window_to_transferred = new HashMap<String,Long>(2*_map350.size);
+          String _key351;
+          long _val352;
+          for (int _i353 = 0; _i353 < _map350.size; ++_i353)
+          {
+            _key351 = iprot.readString();
+            _val352 = iprot.readI64();
+            struct.window_to_transferred.put(_key351, _val352);
+          }
+        }
+        struct.set_window_to_transferred_isSet(true);
+      }
+      if (incoming.get(2)) {
+        {
+          org.apache.thrift.protocol.TMap _map354 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.DOUBLE, iprot.readI32());
+          struct.window_to_complete_latencies_ms = new HashMap<String,Double>(2*_map354.size);
+          String _key355;
+          double _val356;
+          for (int _i357 = 0; _i357 < _map354.size; ++_i357)
+          {
+            _key355 = iprot.readString();
+            _val356 = iprot.readDouble();
+            struct.window_to_complete_latencies_ms.put(_key355, _val356);
+          }
+        }
+        struct.set_window_to_complete_latencies_ms_isSet(true);
+      }
+      if (incoming.get(3)) {
+        {
+          org.apache.thrift.protocol.TMap _map358 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I64, iprot.readI32());
+          struct.window_to_acked = new HashMap<String,Long>(2*_map358.size);
+          String _key359;
+          long _val360;
+          for (int _i361 = 0; _i361 < _map358.size; ++_i361)
+          {
+            _key359 = iprot.readString();
+            _val360 = iprot.readI64();
+            struct.window_to_acked.put(_key359, _val360);
+          }
+        }
+        struct.set_window_to_acked_isSet(true);
+      }
+      if (incoming.get(4)) {
+        {
+          org.apache.thrift.protocol.TMap _map362 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I64, iprot.readI32());
+          struct.window_to_failed = new HashMap<String,Long>(2*_map362.size);
+          String _key363;
+          long _val364;
+          for (int _i365 = 0; _i365 < _map362.size; ++_i365)
+          {
+            _key363 = iprot.readString();
+            _val364 = iprot.readI64();
+            struct.window_to_failed.put(_key363, _val364);
+          }
+        }
+        struct.set_window_to_failed_isSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/storm/blob/a16b50c9/storm-core/src/jvm/backtype/storm/security/auth/authorizer/SimpleACLAuthorizer.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/security/auth/authorizer/SimpleACLAuthorizer.java b/storm-core/src/jvm/backtype/storm/security/auth/authorizer/SimpleACLAuthorizer.java
index e50a587..c76d9a5 100644
--- a/storm-core/src/jvm/backtype/storm/security/auth/authorizer/SimpleACLAuthorizer.java
+++ b/storm-core/src/jvm/backtype/storm/security/auth/authorizer/SimpleACLAuthorizer.java
@@ -44,7 +44,18 @@ public class SimpleACLAuthorizer implements IAuthorizer {
 
     protected Set<String> _userCommands = new HashSet<String>(Arrays.asList("submitTopology", "fileUpload", "getNimbusConf", "getClusterInfo"));
     protected Set<String> _supervisorCommands = new HashSet<String>(Arrays.asList("fileDownload"));
-    protected Set<String> _topoCommands = new HashSet<String>(Arrays.asList("killTopology","rebalance","activate","deactivate","getTopologyConf","getTopology","getUserTopology","getTopologyInfo","uploadNewCredentials"));
+    protected Set<String> _topoCommands = new HashSet<String>(Arrays.asList(
+            "killTopology",
+            "rebalance",
+            "activate",
+            "deactivate",
+            "getTopologyConf",
+            "getTopology",
+            "getUserTopology",
+            "getTopologyInfo",
+            "getTopologyPageInfo",
+            "getComponentPageInfo",
+            "uploadNewCredentials"));
 
     protected Set<String> _admins;
     protected Set<String> _supervisors;

http://git-wip-us.apache.org/repos/asf/storm/blob/a16b50c9/storm-core/src/py/storm/Nimbus-remote
----------------------------------------------------------------------
diff --git a/storm-core/src/py/storm/Nimbus-remote b/storm-core/src/py/storm/Nimbus-remote
index 9af5ead..c6911c3 100644
--- a/storm-core/src/py/storm/Nimbus-remote
+++ b/storm-core/src/py/storm/Nimbus-remote
@@ -59,6 +59,8 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
   print('  ClusterSummary getClusterInfo()')
   print('  TopologyInfo getTopologyInfo(string id)')
   print('  TopologyInfo getTopologyInfoWithOpts(string id, GetInfoOptions options)')
+  print('  TopologyPageInfo getTopologyPageInfo(string id, string window, bool is_include_sys)')
+  print('  ComponentPageInfo getComponentPageInfo(string topology_id, string component_id, string window, bool is_include_sys)')
   print('  string getTopologyConf(string id)')
   print('  StormTopology getTopology(string id)')
   print('  StormTopology getUserTopology(string id)')
@@ -220,6 +222,18 @@ elif cmd == 'getTopologyInfoWithOpts':
     sys.exit(1)
   pp.pprint(client.getTopologyInfoWithOpts(args[0],eval(args[1]),))
 
+elif cmd == 'getTopologyPageInfo':
+  if len(args) != 3:
+    print('getTopologyPageInfo requires 3 args')
+    sys.exit(1)
+  pp.pprint(client.getTopologyPageInfo(args[0],args[1],eval(args[2]),))
+
+elif cmd == 'getComponentPageInfo':
+  if len(args) != 4:
+    print('getComponentPageInfo requires 4 args')
+    sys.exit(1)
+  pp.pprint(client.getComponentPageInfo(args[0],args[1],args[2],eval(args[3]),))
+
 elif cmd == 'getTopologyConf':
   if len(args) != 1:
     print('getTopologyConf requires 1 args')

http://git-wip-us.apache.org/repos/asf/storm/blob/a16b50c9/storm-core/src/py/storm/Nimbus.py
----------------------------------------------------------------------
diff --git a/storm-core/src/py/storm/Nimbus.py b/storm-core/src/py/storm/Nimbus.py
index e9636c2..9edfb1d 100644
--- a/storm-core/src/py/storm/Nimbus.py
+++ b/storm-core/src/py/storm/Nimbus.py
@@ -155,6 +155,25 @@ class Iface:
     """
     pass
 
+  def getTopologyPageInfo(self, id, window, is_include_sys):
+    """
+    Parameters:
+     - id
+     - window
+     - is_include_sys
+    """
+    pass
+
+  def getComponentPageInfo(self, topology_id, component_id, window, is_include_sys):
+    """
+    Parameters:
+     - topology_id
+     - component_id
+     - window
+     - is_include_sys
+    """
+    pass
+
   def getTopologyConf(self, id):
     """
     Parameters:
@@ -766,6 +785,86 @@ class Client(Iface):
       raise result.aze
     raise TApplicationException(TApplicationException.MISSING_RESULT, "getTopologyInfoWithOpts failed: unknown result");
 
+  def getTopologyPageInfo(self, id, window, is_include_sys):
+    """
+    Parameters:
+     - id
+     - window
+     - is_include_sys
+    """
+    self.send_getTopologyPageInfo(id, window, is_include_sys)
+    return self.recv_getTopologyPageInfo()
+
+  def send_getTopologyPageInfo(self, id, window, is_include_sys):
+    self._oprot.writeMessageBegin('getTopologyPageInfo', TMessageType.CALL, self._seqid)
+    args = getTopologyPageInfo_args()
+    args.id = id
+    args.window = window
+    args.is_include_sys = is_include_sys
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getTopologyPageInfo(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getTopologyPageInfo_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.e is not None:
+      raise result.e
+    if result.aze is not None:
+      raise result.aze
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getTopologyPageInfo failed: unknown result");
+
+  def getComponentPageInfo(self, topology_id, component_id, window, is_include_sys):
+    """
+    Parameters:
+     - topology_id
+     - component_id
+     - window
+     - is_include_sys
+    """
+    self.send_getComponentPageInfo(topology_id, component_id, window, is_include_sys)
+    return self.recv_getComponentPageInfo()
+
+  def send_getComponentPageInfo(self, topology_id, component_id, window, is_include_sys):
+    self._oprot.writeMessageBegin('getComponentPageInfo', TMessageType.CALL, self._seqid)
+    args = getComponentPageInfo_args()
+    args.topology_id = topology_id
+    args.component_id = component_id
+    args.window = window
+    args.is_include_sys = is_include_sys
+    args.write(self._oprot)
+    self._oprot.writeMessageEnd()
+    self._oprot.trans.flush()
+
+  def recv_getComponentPageInfo(self):
+    iprot = self._iprot
+    (fname, mtype, rseqid) = iprot.readMessageBegin()
+    if mtype == TMessageType.EXCEPTION:
+      x = TApplicationException()
+      x.read(iprot)
+      iprot.readMessageEnd()
+      raise x
+    result = getComponentPageInfo_result()
+    result.read(iprot)
+    iprot.readMessageEnd()
+    if result.success is not None:
+      return result.success
+    if result.e is not None:
+      raise result.e
+    if result.aze is not None:
+      raise result.aze
+    raise TApplicationException(TApplicationException.MISSING_RESULT, "getComponentPageInfo failed: unknown result");
+
   def getTopologyConf(self, id):
     """
     Parameters:
@@ -897,6 +996,8 @@ class Processor(Iface, TProcessor):
     self._processMap["getClusterInfo"] = Processor.process_getClusterInfo
     self._processMap["getTopologyInfo"] = Processor.process_getTopologyInfo
     self._processMap["getTopologyInfoWithOpts"] = Processor.process_getTopologyInfoWithOpts
+    self._processMap["getTopologyPageInfo"] = Processor.process_getTopologyPageInfo
+    self._processMap["getComponentPageInfo"] = Processor.process_getComponentPageInfo
     self._processMap["getTopologyConf"] = Processor.process_getTopologyConf
     self._processMap["getTopology"] = Processor.process_getTopology
     self._processMap["getUserTopology"] = Processor.process_getUserTopology
@@ -1182,6 +1283,38 @@ class Processor(Iface, TProcessor):
     oprot.writeMessageEnd()
     oprot.trans.flush()
 
+  def process_getTopologyPageInfo(self, seqid, iprot, oprot):
+    args = getTopologyPageInfo_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getTopologyPageInfo_result()
+    try:
+      result.success = self._handler.getTopologyPageInfo(args.id, args.window, args.is_include_sys)
+    except NotAliveException, e:
+      result.e = e
+    except AuthorizationException, aze:
+      result.aze = aze
+    oprot.writeMessageBegin("getTopologyPageInfo", TMessageType.REPLY, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
+  def process_getComponentPageInfo(self, seqid, iprot, oprot):
+    args = getComponentPageInfo_args()
+    args.read(iprot)
+    iprot.readMessageEnd()
+    result = getComponentPageInfo_result()
+    try:
+      result.success = self._handler.getComponentPageInfo(args.topology_id, args.component_id, args.window, args.is_include_sys)
+    except NotAliveException, e:
+      result.e = e
+    except AuthorizationException, aze:
+      result.aze = aze
+    oprot.writeMessageBegin("getComponentPageInfo", TMessageType.REPLY, seqid)
+    result.write(oprot)
+    oprot.writeMessageEnd()
+    oprot.trans.flush()
+
   def process_getTopologyConf(self, seqid, iprot, oprot):
     args = getTopologyConf_args()
     args.read(iprot)
@@ -3849,6 +3982,387 @@ class getTopologyInfoWithOpts_result:
   def __ne__(self, other):
     return not (self == other)
 
+class getTopologyPageInfo_args:
+  """
+  Attributes:
+   - id
+   - window
+   - is_include_sys
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'id', None, None, ), # 1
+    (2, TType.STRING, 'window', None, None, ), # 2
+    (3, TType.BOOL, 'is_include_sys', None, None, ), # 3
+  )
+
+  def __init__(self, id=None, window=None, is_include_sys=None,):
+    self.id = id
+    self.window = window
+    self.is_include_sys = is_include_sys
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.id = iprot.readString().decode('utf-8')
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.window = iprot.readString().decode('utf-8')
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.BOOL:
+          self.is_include_sys = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('getTopologyPageInfo_args')
+    if self.id is not None:
+      oprot.writeFieldBegin('id', TType.STRING, 1)
+      oprot.writeString(self.id.encode('utf-8'))
+      oprot.writeFieldEnd()
+    if self.window is not None:
+      oprot.writeFieldBegin('window', TType.STRING, 2)
+      oprot.writeString(self.window.encode('utf-8'))
+      oprot.writeFieldEnd()
+    if self.is_include_sys is not None:
+      oprot.writeFieldBegin('is_include_sys', TType.BOOL, 3)
+      oprot.writeBool(self.is_include_sys)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.id)
+    value = (value * 31) ^ hash(self.window)
+    value = (value * 31) ^ hash(self.is_include_sys)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class getTopologyPageInfo_result:
+  """
+  Attributes:
+   - success
+   - e
+   - aze
+  """
+
+  thrift_spec = (
+    (0, TType.STRUCT, 'success', (TopologyPageInfo, TopologyPageInfo.thrift_spec), None, ), # 0
+    (1, TType.STRUCT, 'e', (NotAliveException, NotAliveException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'aze', (AuthorizationException, AuthorizationException.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, success=None, e=None, aze=None,):
+    self.success = success
+    self.e = e
+    self.aze = aze
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 0:
+        if ftype == TType.STRUCT:
+          self.success = TopologyPageInfo()
+          self.success.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
+        if ftype == TType.STRUCT:
+          self.e = NotAliveException()
+          self.e.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.aze = AuthorizationException()
+          self.aze.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('getTopologyPageInfo_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.STRUCT, 0)
+      self.success.write(oprot)
+      oprot.writeFieldEnd()
+    if self.e is not None:
+      oprot.writeFieldBegin('e', TType.STRUCT, 1)
+      self.e.write(oprot)
+      oprot.writeFieldEnd()
+    if self.aze is not None:
+      oprot.writeFieldBegin('aze', TType.STRUCT, 2)
+      self.aze.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.success)
+    value = (value * 31) ^ hash(self.e)
+    value = (value * 31) ^ hash(self.aze)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class getComponentPageInfo_args:
+  """
+  Attributes:
+   - topology_id
+   - component_id
+   - window
+   - is_include_sys
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.STRING, 'topology_id', None, None, ), # 1
+    (2, TType.STRING, 'component_id', None, None, ), # 2
+    (3, TType.STRING, 'window', None, None, ), # 3
+    (4, TType.BOOL, 'is_include_sys', None, None, ), # 4
+  )
+
+  def __init__(self, topology_id=None, component_id=None, window=None, is_include_sys=None,):
+    self.topology_id = topology_id
+    self.component_id = component_id
+    self.window = window
+    self.is_include_sys = is_include_sys
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.STRING:
+          self.topology_id = iprot.readString().decode('utf-8')
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.component_id = iprot.readString().decode('utf-8')
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.window = iprot.readString().decode('utf-8')
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.BOOL:
+          self.is_include_sys = iprot.readBool();
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('getComponentPageInfo_args')
+    if self.topology_id is not None:
+      oprot.writeFieldBegin('topology_id', TType.STRING, 1)
+      oprot.writeString(self.topology_id.encode('utf-8'))
+      oprot.writeFieldEnd()
+    if self.component_id is not None:
+      oprot.writeFieldBegin('component_id', TType.STRING, 2)
+      oprot.writeString(self.component_id.encode('utf-8'))
+      oprot.writeFieldEnd()
+    if self.window is not None:
+      oprot.writeFieldBegin('window', TType.STRING, 3)
+      oprot.writeString(self.window.encode('utf-8'))
+      oprot.writeFieldEnd()
+    if self.is_include_sys is not None:
+      oprot.writeFieldBegin('is_include_sys', TType.BOOL, 4)
+      oprot.writeBool(self.is_include_sys)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.topology_id)
+    value = (value * 31) ^ hash(self.component_id)
+    value = (value * 31) ^ hash(self.window)
+    value = (value * 31) ^ hash(self.is_include_sys)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
+class getComponentPageInfo_result:
+  """
+  Attributes:
+   - success
+   - e
+   - aze
+  """
+
+  thrift_spec = (
+    (0, TType.STRUCT, 'success', (ComponentPageInfo, ComponentPageInfo.thrift_spec), None, ), # 0
+    (1, TType.STRUCT, 'e', (NotAliveException, NotAliveException.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'aze', (AuthorizationException, AuthorizationException.thrift_spec), None, ), # 2
+  )
+
+  def __init__(self, success=None, e=None, aze=None,):
+    self.success = success
+    self.e = e
+    self.aze = aze
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 0:
+        if ftype == TType.STRUCT:
+          self.success = ComponentPageInfo()
+          self.success.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 1:
+        if ftype == TType.STRUCT:
+          self.e = NotAliveException()
+          self.e.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.aze = AuthorizationException()
+          self.aze.read(iprot)
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('getComponentPageInfo_result')
+    if self.success is not None:
+      oprot.writeFieldBegin('success', TType.STRUCT, 0)
+      self.success.write(oprot)
+      oprot.writeFieldEnd()
+    if self.e is not None:
+      oprot.writeFieldBegin('e', TType.STRUCT, 1)
+      self.e.write(oprot)
+      oprot.writeFieldEnd()
+    if self.aze is not None:
+      oprot.writeFieldBegin('aze', TType.STRUCT, 2)
+      self.aze.write(oprot)
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __hash__(self):
+    value = 17
+    value = (value * 31) ^ hash(self.success)
+    value = (value * 31) ^ hash(self.e)
+    value = (value * 31) ^ hash(self.aze)
+    return value
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
 class getTopologyConf_args:
   """
   Attributes: