http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/16467f39/myriad-commons/src/main/java/org/apache/mesos/v1/maintenance/Protos.java
----------------------------------------------------------------------
diff --git 
a/myriad-commons/src/main/java/org/apache/mesos/v1/maintenance/Protos.java 
b/myriad-commons/src/main/java/org/apache/mesos/v1/maintenance/Protos.java
new file mode 100644
index 0000000..6e3a750
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/v1/maintenance/Protos.java
@@ -0,0 +1,3953 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: mesos/v1/maintenance/maintenance.proto
+
+package org.apache.mesos.v1.maintenance;
+
+public final class Protos {
+  private Protos() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface WindowOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.MachineID machine_ids = 1;
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.MachineID> 
+        getMachineIdsList();
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.MachineID getMachineIds(int index);
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    int getMachineIdsCount();
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.MachineIDOrBuilder> 
+        getMachineIdsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.MachineIDOrBuilder getMachineIdsOrBuilder(
+        int index);
+
+    // required .mesos.v1.Unavailability unavailability = 2;
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+     *
+     * <pre>
+     * Interval during which this set of machines is expected to be down.
+     * </pre>
+     */
+    boolean hasUnavailability();
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+     *
+     * <pre>
+     * Interval during which this set of machines is expected to be down.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Unavailability getUnavailability();
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+     *
+     * <pre>
+     * Interval during which this set of machines is expected to be down.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.UnavailabilityOrBuilder 
getUnavailabilityOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.maintenance.Window}
+   *
+   * <pre>
+   **
+   * A set of machines scheduled to go into maintenance
+   * in the same `unavailability`.
+   * </pre>
+   */
+  public static final class Window extends
+      com.google.protobuf.GeneratedMessage
+      implements WindowOrBuilder {
+    // Use Window.newBuilder() to construct.
+    private Window(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Window(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Window defaultInstance;
+    public static Window getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Window getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Window(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                machineIds_ = new 
java.util.ArrayList<org.apache.mesos.v1.Protos.MachineID>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              
machineIds_.add(input.readMessage(org.apache.mesos.v1.Protos.MachineID.PARSER, 
extensionRegistry));
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.Unavailability.Builder subBuilder = 
null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = unavailability_.toBuilder();
+              }
+              unavailability_ = 
input.readMessage(org.apache.mesos.v1.Protos.Unavailability.PARSER, 
extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(unavailability_);
+                unavailability_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          machineIds_ = java.util.Collections.unmodifiableList(machineIds_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Window_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Window_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.maintenance.Protos.Window.class, 
org.apache.mesos.v1.maintenance.Protos.Window.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Window> PARSER =
+        new com.google.protobuf.AbstractParser<Window>() {
+      public Window parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Window(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Window> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // repeated .mesos.v1.MachineID machine_ids = 1;
+    public static final int MACHINE_IDS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.MachineID> machineIds_;
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.MachineID> 
getMachineIdsList() {
+      return machineIds_;
+    }
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    public java.util.List<? extends 
org.apache.mesos.v1.Protos.MachineIDOrBuilder> 
+        getMachineIdsOrBuilderList() {
+      return machineIds_;
+    }
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    public int getMachineIdsCount() {
+      return machineIds_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.MachineID getMachineIds(int index) {
+      return machineIds_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+     *
+     * <pre>
+     * Machines affected by this maintenance window.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.MachineIDOrBuilder 
getMachineIdsOrBuilder(
+        int index) {
+      return machineIds_.get(index);
+    }
+
+    // required .mesos.v1.Unavailability unavailability = 2;
+    public static final int UNAVAILABILITY_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Unavailability unavailability_;
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+     *
+     * <pre>
+     * Interval during which this set of machines is expected to be down.
+     * </pre>
+     */
+    public boolean hasUnavailability() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+     *
+     * <pre>
+     * Interval during which this set of machines is expected to be down.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Unavailability getUnavailability() {
+      return unavailability_;
+    }
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+     *
+     * <pre>
+     * Interval during which this set of machines is expected to be down.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.UnavailabilityOrBuilder 
getUnavailabilityOrBuilder() {
+      return unavailability_;
+    }
+
+    private void initFields() {
+      machineIds_ = java.util.Collections.emptyList();
+      unavailability_ = 
org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasUnavailability()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getUnavailability().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < machineIds_.size(); i++) {
+        output.writeMessage(1, machineIds_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(2, unavailability_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < machineIds_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, machineIds_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, unavailability_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.maintenance.Protos.Window parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Window parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Window 
parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Window parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Window 
parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Window parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Window 
parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Window 
parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Window parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Window parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder 
newBuilder(org.apache.mesos.v1.maintenance.Protos.Window prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.maintenance.Window}
+     *
+     * <pre>
+     **
+     * A set of machines scheduled to go into maintenance
+     * in the same `unavailability`.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Window_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Window_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.maintenance.Protos.Window.class, 
org.apache.mesos.v1.maintenance.Protos.Window.Builder.class);
+      }
+
+      // Construct using 
org.apache.mesos.v1.maintenance.Protos.Window.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getMachineIdsFieldBuilder();
+          getUnavailabilityFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (machineIdsBuilder_ == null) {
+          machineIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          machineIdsBuilder_.clear();
+        }
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = 
org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Window_descriptor;
+      }
+
+      public org.apache.mesos.v1.maintenance.Protos.Window 
getDefaultInstanceForType() {
+        return 
org.apache.mesos.v1.maintenance.Protos.Window.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.maintenance.Protos.Window build() {
+        org.apache.mesos.v1.maintenance.Protos.Window result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.maintenance.Protos.Window buildPartial() {
+        org.apache.mesos.v1.maintenance.Protos.Window result = new 
org.apache.mesos.v1.maintenance.Protos.Window(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (machineIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            machineIds_ = java.util.Collections.unmodifiableList(machineIds_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.machineIds_ = machineIds_;
+        } else {
+          result.machineIds_ = machineIdsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (unavailabilityBuilder_ == null) {
+          result.unavailability_ = unavailability_;
+        } else {
+          result.unavailability_ = unavailabilityBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.maintenance.Protos.Window) {
+          return 
mergeFrom((org.apache.mesos.v1.maintenance.Protos.Window)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.maintenance.Protos.Window 
other) {
+        if (other == 
org.apache.mesos.v1.maintenance.Protos.Window.getDefaultInstance()) return this;
+        if (machineIdsBuilder_ == null) {
+          if (!other.machineIds_.isEmpty()) {
+            if (machineIds_.isEmpty()) {
+              machineIds_ = other.machineIds_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureMachineIdsIsMutable();
+              machineIds_.addAll(other.machineIds_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.machineIds_.isEmpty()) {
+            if (machineIdsBuilder_.isEmpty()) {
+              machineIdsBuilder_.dispose();
+              machineIdsBuilder_ = null;
+              machineIds_ = other.machineIds_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              machineIdsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getMachineIdsFieldBuilder() : null;
+            } else {
+              machineIdsBuilder_.addAllMessages(other.machineIds_);
+            }
+          }
+        }
+        if (other.hasUnavailability()) {
+          mergeUnavailability(other.getUnavailability());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasUnavailability()) {
+          
+          return false;
+        }
+        if (!getUnavailability().isInitialized()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.maintenance.Protos.Window parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.maintenance.Protos.Window) 
e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.MachineID machine_ids = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.MachineID> machineIds_ 
=
+        java.util.Collections.emptyList();
+      private void ensureMachineIdsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          machineIds_ = new 
java.util.ArrayList<org.apache.mesos.v1.Protos.MachineID>(machineIds_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.MachineID, 
org.apache.mesos.v1.Protos.MachineID.Builder, 
org.apache.mesos.v1.Protos.MachineIDOrBuilder> machineIdsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.MachineID> 
getMachineIdsList() {
+        if (machineIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(machineIds_);
+        } else {
+          return machineIdsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public int getMachineIdsCount() {
+        if (machineIdsBuilder_ == null) {
+          return machineIds_.size();
+        } else {
+          return machineIdsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.MachineID getMachineIds(int index) {
+        if (machineIdsBuilder_ == null) {
+          return machineIds_.get(index);
+        } else {
+          return machineIdsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public Builder setMachineIds(
+          int index, org.apache.mesos.v1.Protos.MachineID value) {
+        if (machineIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureMachineIdsIsMutable();
+          machineIds_.set(index, value);
+          onChanged();
+        } else {
+          machineIdsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public Builder setMachineIds(
+          int index, org.apache.mesos.v1.Protos.MachineID.Builder 
builderForValue) {
+        if (machineIdsBuilder_ == null) {
+          ensureMachineIdsIsMutable();
+          machineIds_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          machineIdsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public Builder addMachineIds(org.apache.mesos.v1.Protos.MachineID value) 
{
+        if (machineIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureMachineIdsIsMutable();
+          machineIds_.add(value);
+          onChanged();
+        } else {
+          machineIdsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public Builder addMachineIds(
+          int index, org.apache.mesos.v1.Protos.MachineID value) {
+        if (machineIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureMachineIdsIsMutable();
+          machineIds_.add(index, value);
+          onChanged();
+        } else {
+          machineIdsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public Builder addMachineIds(
+          org.apache.mesos.v1.Protos.MachineID.Builder builderForValue) {
+        if (machineIdsBuilder_ == null) {
+          ensureMachineIdsIsMutable();
+          machineIds_.add(builderForValue.build());
+          onChanged();
+        } else {
+          machineIdsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public Builder addMachineIds(
+          int index, org.apache.mesos.v1.Protos.MachineID.Builder 
builderForValue) {
+        if (machineIdsBuilder_ == null) {
+          ensureMachineIdsIsMutable();
+          machineIds_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          machineIdsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public Builder addAllMachineIds(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.MachineID> 
values) {
+        if (machineIdsBuilder_ == null) {
+          ensureMachineIdsIsMutable();
+          super.addAll(values, machineIds_);
+          onChanged();
+        } else {
+          machineIdsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public Builder clearMachineIds() {
+        if (machineIdsBuilder_ == null) {
+          machineIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          machineIdsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public Builder removeMachineIds(int index) {
+        if (machineIdsBuilder_ == null) {
+          ensureMachineIdsIsMutable();
+          machineIds_.remove(index);
+          onChanged();
+        } else {
+          machineIdsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.MachineID.Builder getMachineIdsBuilder(
+          int index) {
+        return getMachineIdsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.MachineIDOrBuilder 
getMachineIdsOrBuilder(
+          int index) {
+        if (machineIdsBuilder_ == null) {
+          return machineIds_.get(index);  } else {
+          return machineIdsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public java.util.List<? extends 
org.apache.mesos.v1.Protos.MachineIDOrBuilder> 
+           getMachineIdsOrBuilderList() {
+        if (machineIdsBuilder_ != null) {
+          return machineIdsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(machineIds_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.MachineID.Builder 
addMachineIdsBuilder() {
+        return getMachineIdsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.MachineID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.MachineID.Builder addMachineIdsBuilder(
+          int index) {
+        return getMachineIdsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.MachineID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.MachineID machine_ids = 1;</code>
+       *
+       * <pre>
+       * Machines affected by this maintenance window.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.MachineID.Builder> 
+           getMachineIdsBuilderList() {
+        return getMachineIdsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.MachineID, 
org.apache.mesos.v1.Protos.MachineID.Builder, 
org.apache.mesos.v1.Protos.MachineIDOrBuilder> 
+          getMachineIdsFieldBuilder() {
+        if (machineIdsBuilder_ == null) {
+          machineIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.MachineID, 
org.apache.mesos.v1.Protos.MachineID.Builder, 
org.apache.mesos.v1.Protos.MachineIDOrBuilder>(
+                  machineIds_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          machineIds_ = null;
+        }
+        return machineIdsBuilder_;
+      }
+
+      // required .mesos.v1.Unavailability unavailability = 2;
+      private org.apache.mesos.v1.Protos.Unavailability unavailability_ = 
org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Unavailability, 
org.apache.mesos.v1.Protos.Unavailability.Builder, 
org.apache.mesos.v1.Protos.UnavailabilityOrBuilder> unavailabilityBuilder_;
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+       *
+       * <pre>
+       * Interval during which this set of machines is expected to be down.
+       * </pre>
+       */
+      public boolean hasUnavailability() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+       *
+       * <pre>
+       * Interval during which this set of machines is expected to be down.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Unavailability getUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          return unavailability_;
+        } else {
+          return unavailabilityBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+       *
+       * <pre>
+       * Interval during which this set of machines is expected to be down.
+       * </pre>
+       */
+      public Builder 
setUnavailability(org.apache.mesos.v1.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          unavailability_ = value;
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+       *
+       * <pre>
+       * Interval during which this set of machines is expected to be down.
+       * </pre>
+       */
+      public Builder setUnavailability(
+          org.apache.mesos.v1.Protos.Unavailability.Builder builderForValue) {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = builderForValue.build();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+       *
+       * <pre>
+       * Interval during which this set of machines is expected to be down.
+       * </pre>
+       */
+      public Builder 
mergeUnavailability(org.apache.mesos.v1.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              unavailability_ != 
org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance()) {
+            unavailability_ =
+              
org.apache.mesos.v1.Protos.Unavailability.newBuilder(unavailability_).mergeFrom(value).buildPartial();
+          } else {
+            unavailability_ = value;
+          }
+          onChanged();
+        } else {
+          unavailabilityBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+       *
+       * <pre>
+       * Interval during which this set of machines is expected to be down.
+       * </pre>
+       */
+      public Builder clearUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = 
org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+       *
+       * <pre>
+       * Interval during which this set of machines is expected to be down.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Unavailability.Builder 
getUnavailabilityBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getUnavailabilityFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+       *
+       * <pre>
+       * Interval during which this set of machines is expected to be down.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.UnavailabilityOrBuilder 
getUnavailabilityOrBuilder() {
+        if (unavailabilityBuilder_ != null) {
+          return unavailabilityBuilder_.getMessageOrBuilder();
+        } else {
+          return unavailability_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 2;</code>
+       *
+       * <pre>
+       * Interval during which this set of machines is expected to be down.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Unavailability, 
org.apache.mesos.v1.Protos.Unavailability.Builder, 
org.apache.mesos.v1.Protos.UnavailabilityOrBuilder> 
+          getUnavailabilityFieldBuilder() {
+        if (unavailabilityBuilder_ == null) {
+          unavailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Unavailability, 
org.apache.mesos.v1.Protos.Unavailability.Builder, 
org.apache.mesos.v1.Protos.UnavailabilityOrBuilder>(
+                  unavailability_,
+                  getParentForChildren(),
+                  isClean());
+          unavailability_ = null;
+        }
+        return unavailabilityBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.maintenance.Window)
+    }
+
+    static {
+      defaultInstance = new Window(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.maintenance.Window)
+  }
+
+  public interface ScheduleOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.maintenance.Window windows = 1;
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.maintenance.Protos.Window> 
+        getWindowsList();
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    org.apache.mesos.v1.maintenance.Protos.Window getWindows(int index);
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    int getWindowsCount();
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    java.util.List<? extends 
org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder> 
+        getWindowsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder getWindowsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.maintenance.Schedule}
+   *
+   * <pre>
+   **
+   * A list of maintenance windows.
+   * For example, this may represent a rolling restart of agents.
+   * </pre>
+   */
+  public static final class Schedule extends
+      com.google.protobuf.GeneratedMessage
+      implements ScheduleOrBuilder {
+    // Use Schedule.newBuilder() to construct.
+    private Schedule(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Schedule(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Schedule defaultInstance;
+    public static Schedule getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Schedule getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Schedule(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                windows_ = new 
java.util.ArrayList<org.apache.mesos.v1.maintenance.Protos.Window>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              
windows_.add(input.readMessage(org.apache.mesos.v1.maintenance.Protos.Window.PARSER,
 extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          windows_ = java.util.Collections.unmodifiableList(windows_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Schedule_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Schedule_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.maintenance.Protos.Schedule.class, 
org.apache.mesos.v1.maintenance.Protos.Schedule.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Schedule> PARSER =
+        new com.google.protobuf.AbstractParser<Schedule>() {
+      public Schedule parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Schedule(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Schedule> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.v1.maintenance.Window windows = 1;
+    public static final int WINDOWS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.maintenance.Protos.Window> 
windows_;
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.maintenance.Protos.Window> 
getWindowsList() {
+      return windows_;
+    }
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    public java.util.List<? extends 
org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder> 
+        getWindowsOrBuilderList() {
+      return windows_;
+    }
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    public int getWindowsCount() {
+      return windows_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    public org.apache.mesos.v1.maintenance.Protos.Window getWindows(int index) 
{
+      return windows_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+     */
+    public org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder 
getWindowsOrBuilder(
+        int index) {
+      return windows_.get(index);
+    }
+
+    private void initFields() {
+      windows_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getWindowsCount(); i++) {
+        if (!getWindows(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < windows_.size(); i++) {
+        output.writeMessage(1, windows_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < windows_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, windows_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule 
parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule 
parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule 
parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule 
parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.maintenance.Protos.Schedule parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder 
newBuilder(org.apache.mesos.v1.maintenance.Protos.Schedule prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.maintenance.Schedule}
+     *
+     * <pre>
+     **
+     * A list of maintenance windows.
+     * For example, this may represent a rolling restart of agents.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.maintenance.Protos.ScheduleOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Schedule_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Schedule_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.maintenance.Protos.Schedule.class, 
org.apache.mesos.v1.maintenance.Protos.Schedule.Builder.class);
+      }
+
+      // Construct using 
org.apache.mesos.v1.maintenance.Protos.Schedule.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getWindowsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (windowsBuilder_ == null) {
+          windows_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          windowsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_Schedule_descriptor;
+      }
+
+      public org.apache.mesos.v1.maintenance.Protos.Schedule 
getDefaultInstanceForType() {
+        return 
org.apache.mesos.v1.maintenance.Protos.Schedule.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.maintenance.Protos.Schedule build() {
+        org.apache.mesos.v1.maintenance.Protos.Schedule result = 
buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.maintenance.Protos.Schedule buildPartial() {
+        org.apache.mesos.v1.maintenance.Protos.Schedule result = new 
org.apache.mesos.v1.maintenance.Protos.Schedule(this);
+        int from_bitField0_ = bitField0_;
+        if (windowsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            windows_ = java.util.Collections.unmodifiableList(windows_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.windows_ = windows_;
+        } else {
+          result.windows_ = windowsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.maintenance.Protos.Schedule) {
+          return 
mergeFrom((org.apache.mesos.v1.maintenance.Protos.Schedule)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.maintenance.Protos.Schedule 
other) {
+        if (other == 
org.apache.mesos.v1.maintenance.Protos.Schedule.getDefaultInstance()) return 
this;
+        if (windowsBuilder_ == null) {
+          if (!other.windows_.isEmpty()) {
+            if (windows_.isEmpty()) {
+              windows_ = other.windows_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureWindowsIsMutable();
+              windows_.addAll(other.windows_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.windows_.isEmpty()) {
+            if (windowsBuilder_.isEmpty()) {
+              windowsBuilder_.dispose();
+              windowsBuilder_ = null;
+              windows_ = other.windows_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              windowsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getWindowsFieldBuilder() : null;
+            } else {
+              windowsBuilder_.addAllMessages(other.windows_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getWindowsCount(); i++) {
+          if (!getWindows(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.maintenance.Protos.Schedule parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.maintenance.Protos.Schedule) 
e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.maintenance.Window windows = 1;
+      private java.util.List<org.apache.mesos.v1.maintenance.Protos.Window> 
windows_ =
+        java.util.Collections.emptyList();
+      private void ensureWindowsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          windows_ = new 
java.util.ArrayList<org.apache.mesos.v1.maintenance.Protos.Window>(windows_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.maintenance.Protos.Window, 
org.apache.mesos.v1.maintenance.Protos.Window.Builder, 
org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder> windowsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.maintenance.Protos.Window> 
getWindowsList() {
+        if (windowsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(windows_);
+        } else {
+          return windowsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public int getWindowsCount() {
+        if (windowsBuilder_ == null) {
+          return windows_.size();
+        } else {
+          return windowsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public org.apache.mesos.v1.maintenance.Protos.Window getWindows(int 
index) {
+        if (windowsBuilder_ == null) {
+          return windows_.get(index);
+        } else {
+          return windowsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public Builder setWindows(
+          int index, org.apache.mesos.v1.maintenance.Protos.Window value) {
+        if (windowsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureWindowsIsMutable();
+          windows_.set(index, value);
+          onChanged();
+        } else {
+          windowsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public Builder setWindows(
+          int index, org.apache.mesos.v1.maintenance.Protos.Window.Builder 
builderForValue) {
+        if (windowsBuilder_ == null) {
+          ensureWindowsIsMutable();
+          windows_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          windowsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public Builder addWindows(org.apache.mesos.v1.maintenance.Protos.Window 
value) {
+        if (windowsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureWindowsIsMutable();
+          windows_.add(value);
+          onChanged();
+        } else {
+          windowsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public Builder addWindows(
+          int index, org.apache.mesos.v1.maintenance.Protos.Window value) {
+        if (windowsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureWindowsIsMutable();
+          windows_.add(index, value);
+          onChanged();
+        } else {
+          windowsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public Builder addWindows(
+          org.apache.mesos.v1.maintenance.Protos.Window.Builder 
builderForValue) {
+        if (windowsBuilder_ == null) {
+          ensureWindowsIsMutable();
+          windows_.add(builderForValue.build());
+          onChanged();
+        } else {
+          windowsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public Builder addWindows(
+          int index, org.apache.mesos.v1.maintenance.Protos.Window.Builder 
builderForValue) {
+        if (windowsBuilder_ == null) {
+          ensureWindowsIsMutable();
+          windows_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          windowsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public Builder addAllWindows(
+          java.lang.Iterable<? extends 
org.apache.mesos.v1.maintenance.Protos.Window> values) {
+        if (windowsBuilder_ == null) {
+          ensureWindowsIsMutable();
+          super.addAll(values, windows_);
+          onChanged();
+        } else {
+          windowsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public Builder clearWindows() {
+        if (windowsBuilder_ == null) {
+          windows_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          windowsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public Builder removeWindows(int index) {
+        if (windowsBuilder_ == null) {
+          ensureWindowsIsMutable();
+          windows_.remove(index);
+          onChanged();
+        } else {
+          windowsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public org.apache.mesos.v1.maintenance.Protos.Window.Builder 
getWindowsBuilder(
+          int index) {
+        return getWindowsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder 
getWindowsOrBuilder(
+          int index) {
+        if (windowsBuilder_ == null) {
+          return windows_.get(index);  } else {
+          return windowsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public java.util.List<? extends 
org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder> 
+           getWindowsOrBuilderList() {
+        if (windowsBuilder_ != null) {
+          return windowsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(windows_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public org.apache.mesos.v1.maintenance.Protos.Window.Builder 
addWindowsBuilder() {
+        return getWindowsFieldBuilder().addBuilder(
+            
org.apache.mesos.v1.maintenance.Protos.Window.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public org.apache.mesos.v1.maintenance.Protos.Window.Builder 
addWindowsBuilder(
+          int index) {
+        return getWindowsFieldBuilder().addBuilder(
+            index, 
org.apache.mesos.v1.maintenance.Protos.Window.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.maintenance.Window windows = 1;</code>
+       */
+      public 
java.util.List<org.apache.mesos.v1.maintenance.Protos.Window.Builder> 
+           getWindowsBuilderList() {
+        return getWindowsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.maintenance.Protos.Window, 
org.apache.mesos.v1.maintenance.Protos.Window.Builder, 
org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder> 
+          getWindowsFieldBuilder() {
+        if (windowsBuilder_ == null) {
+          windowsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.maintenance.Protos.Window, 
org.apache.mesos.v1.maintenance.Protos.Window.Builder, 
org.apache.mesos.v1.maintenance.Protos.WindowOrBuilder>(
+                  windows_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          windows_ = null;
+        }
+        return windowsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.maintenance.Schedule)
+    }
+
+    static {
+      defaultInstance = new Schedule(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.maintenance.Schedule)
+  }
+
+  public interface ClusterStatusOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.maintenance.ClusterStatus.DrainingMachine 
draining_machines = 1;
+    /**
+     * <code>repeated .mesos.v1.maintenance.ClusterStatus.DrainingMachine 
draining_machines = 1;</code>
+     */
+    
java.util.List<org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine>
 
+        getDrainingMachinesList();
+    /**
+     * <code>repeated .mesos.v1.maintenance.ClusterStatus.DrainingMachine 
draining_machines = 1;</code>
+     */
+    org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine 
getDrainingMachines(int index);
+    /**
+     * <code>repeated .mesos.v1.maintenance.ClusterStatus.DrainingMachine 
draining_machines = 1;</code>
+     */
+    int getDrainingMachinesCount();
+    /**
+     * <code>repeated .mesos.v1.maintenance.ClusterStatus.DrainingMachine 
draining_machines = 1;</code>
+     */
+    java.util.List<? extends 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachineOrBuilder> 
+        getDrainingMachinesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.maintenance.ClusterStatus.DrainingMachine 
draining_machines = 1;</code>
+     */
+    
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachineOrBuilder 
getDrainingMachinesOrBuilder(
+        int index);
+
+    // repeated .mesos.v1.MachineID down_machines = 2;
+    /**
+     * <code>repeated .mesos.v1.MachineID down_machines = 2;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.MachineID> 
+        getDownMachinesList();
+    /**
+     * <code>repeated .mesos.v1.MachineID down_machines = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.MachineID getDownMachines(int index);
+    /**
+     * <code>repeated .mesos.v1.MachineID down_machines = 2;</code>
+     */
+    int getDownMachinesCount();
+    /**
+     * <code>repeated .mesos.v1.MachineID down_machines = 2;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.MachineIDOrBuilder> 
+        getDownMachinesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.MachineID down_machines = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.MachineIDOrBuilder getDownMachinesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.maintenance.ClusterStatus}
+   *
+   * <pre>
+   **
+   * Represents the maintenance status of each machine in the cluster.
+   * The lists correspond to the `MachineInfo.Mode` enumeration.
+   * </pre>
+   */
+  public static final class ClusterStatus extends
+      com.google.protobuf.GeneratedMessage
+      implements ClusterStatusOrBuilder {
+    // Use ClusterStatus.newBuilder() to construct.
+    private ClusterStatus(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ClusterStatus(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ClusterStatus defaultInstance;
+    public static ClusterStatus getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ClusterStatus getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ClusterStatus(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                drainingMachines_ = new 
java.util.ArrayList<org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              
drainingMachines_.add(input.readMessage(org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine.PARSER,
 extensionRegistry));
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                downMachines_ = new 
java.util.ArrayList<org.apache.mesos.v1.Protos.MachineID>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              
downMachines_.add(input.readMessage(org.apache.mesos.v1.Protos.MachineID.PARSER,
 extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          drainingMachines_ = 
java.util.Collections.unmodifiableList(drainingMachines_);
+        }
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          downMachines_ = 
java.util.Collections.unmodifiableList(downMachines_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_ClusterStatus_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_ClusterStatus_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.maintenance.Protos.ClusterStatus.class, 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ClusterStatus> PARSER =
+        new com.google.protobuf.AbstractParser<ClusterStatus>() {
+      public ClusterStatus parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ClusterStatus(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ClusterStatus> getParserForType() {
+      return PARSER;
+    }
+
+    public interface DrainingMachineOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.MachineID id = 1;
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      boolean hasId();
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.MachineID getId();
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.MachineIDOrBuilder getIdOrBuilder();
+
+      // repeated .mesos.v1.allocator.InverseOfferStatus statuses = 2;
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      java.util.List<org.apache.mesos.v1.allocator.Protos.InverseOfferStatus> 
+          getStatusesList();
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      org.apache.mesos.v1.allocator.Protos.InverseOfferStatus getStatuses(int 
index);
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      int getStatusesCount();
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      java.util.List<? extends 
org.apache.mesos.v1.allocator.Protos.InverseOfferStatusOrBuilder> 
+          getStatusesOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      org.apache.mesos.v1.allocator.Protos.InverseOfferStatusOrBuilder 
getStatusesOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.maintenance.ClusterStatus.DrainingMachine}
+     */
+    public static final class DrainingMachine extends
+        com.google.protobuf.GeneratedMessage
+        implements DrainingMachineOrBuilder {
+      // Use DrainingMachine.newBuilder() to construct.
+      private DrainingMachine(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private DrainingMachine(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final DrainingMachine defaultInstance;
+      public static DrainingMachine getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public DrainingMachine getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private DrainingMachine(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.MachineID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = id_.toBuilder();
+                }
+                id_ = 
input.readMessage(org.apache.mesos.v1.Protos.MachineID.PARSER, 
extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(id_);
+                  id_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                  statuses_ = new 
java.util.ArrayList<org.apache.mesos.v1.allocator.Protos.InverseOfferStatus>();
+                  mutable_bitField0_ |= 0x00000002;
+                }
+                
statuses_.add(input.readMessage(org.apache.mesos.v1.allocator.Protos.InverseOfferStatus.PARSER,
 extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+            statuses_ = java.util.Collections.unmodifiableList(statuses_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_ClusterStatus_DrainingMachine_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return 
org.apache.mesos.v1.maintenance.Protos.internal_static_mesos_v1_maintenance_ClusterStatus_DrainingMachine_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine.class, 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<DrainingMachine> PARSER =
+          new com.google.protobuf.AbstractParser<DrainingMachine>() {
+        public DrainingMachine parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new DrainingMachine(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<DrainingMachine> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.MachineID id = 1;
+      public static final int ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.MachineID id_;
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.MachineID getId() {
+        return id_;
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.MachineIDOrBuilder getIdOrBuilder() {
+        return id_;
+      }
+
+      // repeated .mesos.v1.allocator.InverseOfferStatus statuses = 2;
+      public static final int STATUSES_FIELD_NUMBER = 2;
+      private 
java.util.List<org.apache.mesos.v1.allocator.Protos.InverseOfferStatus> 
statuses_;
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      public 
java.util.List<org.apache.mesos.v1.allocator.Protos.InverseOfferStatus> 
getStatusesList() {
+        return statuses_;
+      }
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      public java.util.List<? extends 
org.apache.mesos.v1.allocator.Protos.InverseOfferStatusOrBuilder> 
+          getStatusesOrBuilderList() {
+        return statuses_;
+      }
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      public int getStatusesCount() {
+        return statuses_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      public org.apache.mesos.v1.allocator.Protos.InverseOfferStatus 
getStatuses(int index) {
+        return statuses_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.allocator.InverseOfferStatus statuses = 
2;</code>
+       *
+       * <pre>
+       * A list of the most recent responses to inverse offers from frameworks
+       * running on this draining machine.
+       * </pre>
+       */
+      public org.apache.mesos.v1.allocator.Protos.InverseOfferStatusOrBuilder 
getStatusesOrBuilder(
+          int index) {
+        return statuses_.get(index);
+      }
+
+      private void initFields() {
+        id_ = org.apache.mesos.v1.Protos.MachineID.getDefaultInstance();
+        statuses_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        for (int i = 0; i < getStatusesCount(); i++) {
+          if (!getStatuses(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, id_);
+        }
+        for (int i = 0; i < statuses_.size(); i++) {
+          output.writeMessage(2, statuses_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, id_);
+        }
+        for (int i = 0; i < statuses_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, statuses_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine 
parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine 
parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine 
parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine 
parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static 
org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder 
newBuilder(org.apache.mesos.v1.maintenance.Protos.ClusterStatus.DrainingMachine 
prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(

<TRUNCATED>

Reply via email to