SLIDER-782 new messages & RPC calls defined;, marshall and indirect code 
completed


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

Branch: refs/heads/develop
Commit: 841340314cb79c9d99acd947955c1b7f4c65c11b
Parents: bc15807
Author: Steve Loughran <[email protected]>
Authored: Thu Feb 12 18:06:19 2015 +0000
Committer: Steve Loughran <[email protected]>
Committed: Thu Feb 12 18:06:19 2015 +0000

----------------------------------------------------------------------
 .../slider/api/SliderClusterProtocol.java       |  44 +-
 .../org/apache/slider/api/proto/Messages.java   | 894 ++++++++++++++++++-
 .../slider/api/proto/RestTypeMarshalling.java   |  79 +-
 .../slider/api/proto/SliderClusterAPI.java      | 579 +++++++++++-
 .../slider/api/types/ContainerInformation.java  |   4 +-
 .../slider/client/SliderClusterOperations.java  |   3 +-
 .../server/appmaster/SliderAppMaster.java       |  17 +-
 .../rpc/SliderClusterProtocolPBImpl.java        |  86 +-
 .../rpc/SliderClusterProtocolProxy.java         | 114 ++-
 .../server/appmaster/rpc/SliderIPCService.java  | 168 +++-
 .../appmaster/state/ProviderAppState.java       |  28 +
 .../state/StateAccessForProviders.java          |   9 +
 .../slider/server/appmaster/web/WebAppApi.java  |   3 +
 .../server/appmaster/web/WebAppApiImpl.java     |  11 +-
 .../ApplicationResouceContentCacheFactory.java  |  91 ++
 .../rest/application/ApplicationResource.java   |  77 +-
 .../application/resources/ContentCache.java     |  33 +-
 .../src/main/proto/SliderClusterMessages.proto  |  10 +
 .../src/main/proto/SliderClusterProtocol.proto  |  29 +
 .../TestMockAppStateAppRestIntegration.groovy   |   2 +-
 .../view/TestClusterSpecificationBlock.groovy   |   2 +-
 .../web/view/TestContainerStatsBlock.groovy     |   3 +-
 .../appmaster/web/view/TestIndexBlock.groovy    |   3 +-
 .../web/rest/agent/TestAMAgentWebServices.java  |   2 +-
 .../management/TestAMManagementWebServices.java |   2 +-
 25 files changed, 2154 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/84134031/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java 
b/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
index 556e918..8e2f46d 100644
--- a/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
+++ b/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
@@ -18,11 +18,11 @@
 
 package org.apache.slider.api;
 
+import com.google.protobuf.RpcController;
 import org.apache.hadoop.ipc.VersionedProtocol;
 import org.apache.hadoop.security.KerberosInfo;
 import org.apache.hadoop.yarn.exceptions.YarnException;
 import org.apache.slider.api.proto.Messages;
-import org.apache.slider.api.types.ApplicationLivenessInformation;
 import org.apache.slider.common.SliderXmlConfKeys;
 
 import java.io.IOException;
@@ -34,7 +34,7 @@ import java.io.IOException;
 @KerberosInfo(
   serverPrincipal = SliderXmlConfKeys.KEY_KERBEROS_PRINCIPAL)
 public interface SliderClusterProtocol extends VersionedProtocol {
-  public static final long versionID = 0x01;
+  long versionID = 0x01;
 
   /**
    * Stop the cluster
@@ -129,4 +129,44 @@ public interface SliderClusterProtocol extends 
VersionedProtocol {
       Messages.GetApplicationLivenessRequestProto request
   ) throws IOException;
 
+  Messages.GetLiveContainersResponseProto getLiveContainers(
+      Messages.GetLiveContainersRequestProto request
+  ) throws IOException;
+
+  Messages.ContainerInformationProto getLiveContainer(
+      Messages.GetLiveContainerRequestProto request
+  ) throws IOException;
+
+  Messages.GetLiveComponentsResponseProto getLiveComponents(
+      Messages.GetLiveComponentsRequestProto request
+  ) throws IOException;
+
+  Messages.ComponentInformationProto getLiveComponent(
+      Messages.GetLiveComponentRequestProto request
+  ) throws IOException;
+
+  
+  Messages.WrappedJsonProto getModelDesired(RpcController controller,
+      Messages.EmptyPayloadProto request) throws IOException;
+
+  
+  Messages.WrappedJsonProto getModelDesiredAppconf(RpcController controller,
+      Messages.EmptyPayloadProto request) throws IOException;
+    
+  Messages.WrappedJsonProto getModelDesiredResources(RpcController controller,
+      Messages.EmptyPayloadProto request) throws IOException;
+   
+  Messages.WrappedJsonProto getModelResolved(RpcController controller,
+      Messages.EmptyPayloadProto request) throws IOException;
+  
+  Messages.WrappedJsonProto getModelResolvedAppconf(RpcController controller,
+      Messages.EmptyPayloadProto request) throws IOException;
+  
+  Messages.WrappedJsonProto getModelResolvedResources(RpcController controller,
+      Messages.EmptyPayloadProto request) throws IOException;
+   
+  Messages.WrappedJsonProto getLiveResources(RpcController controller,
+      Messages.EmptyPayloadProto request) throws IOException;
+    
+  
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/84134031/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java 
b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
index 3a495e7..65f243d 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
@@ -24264,6 +24264,871 @@ public final class Messages {
     // 
@@protoc_insertion_point(class_scope:org.apache.slider.api.GetApplicationLivenessRequestProto)
   }
 
+  public interface EmptyPayloadProtoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+  }
+  /**
+   * Protobuf type {@code org.apache.slider.api.EmptyPayloadProto}
+   */
+  public static final class EmptyPayloadProto extends
+      com.google.protobuf.GeneratedMessage
+      implements EmptyPayloadProtoOrBuilder {
+    // Use EmptyPayloadProto.newBuilder() to construct.
+    private EmptyPayloadProto(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private EmptyPayloadProto(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final EmptyPayloadProto defaultInstance;
+    public static EmptyPayloadProto getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public EmptyPayloadProto getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private EmptyPayloadProto(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      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;
+            }
+          }
+        }
+      } 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 {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_EmptyPayloadProto_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_EmptyPayloadProto_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.slider.api.proto.Messages.EmptyPayloadProto.class, 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<EmptyPayloadProto> PARSER =
+        new com.google.protobuf.AbstractParser<EmptyPayloadProto>() {
+      public EmptyPayloadProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new EmptyPayloadProto(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<EmptyPayloadProto> getParserForType() {
+      return PARSER;
+    }
+
+    private void initFields() {
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      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();
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof 
org.apache.slider.api.proto.Messages.EmptyPayloadProto)) {
+        return super.equals(obj);
+      }
+      org.apache.slider.api.proto.Messages.EmptyPayloadProto other = 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto) obj;
+
+      boolean result = true;
+      result = result &&
+          getUnknownFields().equals(other.getUnknownFields());
+      return result;
+    }
+
+    private int memoizedHashCode = 0;
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptorForType().hashCode();
+      hash = (29 * hash) + getUnknownFields().hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.slider.api.proto.Messages.EmptyPayloadProto 
parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.slider.api.proto.Messages.EmptyPayloadProto 
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.slider.api.proto.Messages.EmptyPayloadProto 
parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.slider.api.proto.Messages.EmptyPayloadProto 
parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.EmptyPayloadProto 
parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.EmptyPayloadProto 
parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.EmptyPayloadProto 
parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.EmptyPayloadProto 
parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.EmptyPayloadProto 
parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.EmptyPayloadProto 
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.slider.api.proto.Messages.EmptyPayloadProto 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 org.apache.slider.api.EmptyPayloadProto}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements 
org.apache.slider.api.proto.Messages.EmptyPayloadProtoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_EmptyPayloadProto_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_EmptyPayloadProto_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.slider.api.proto.Messages.EmptyPayloadProto.class, 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.Builder.class);
+      }
+
+      // Construct using 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_EmptyPayloadProto_descriptor;
+      }
+
+      public org.apache.slider.api.proto.Messages.EmptyPayloadProto 
getDefaultInstanceForType() {
+        return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+      }
+
+      public org.apache.slider.api.proto.Messages.EmptyPayloadProto build() {
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto result = 
buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.slider.api.proto.Messages.EmptyPayloadProto 
buildPartial() {
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto result = new 
org.apache.slider.api.proto.Messages.EmptyPayloadProto(this);
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof 
org.apache.slider.api.proto.Messages.EmptyPayloadProto) {
+          return 
mergeFrom((org.apache.slider.api.proto.Messages.EmptyPayloadProto)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder 
mergeFrom(org.apache.slider.api.proto.Messages.EmptyPayloadProto other) {
+        if (other == 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance()) 
return this;
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto parsedMessage = 
null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto) 
e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+
+      // 
@@protoc_insertion_point(builder_scope:org.apache.slider.api.EmptyPayloadProto)
+    }
+
+    static {
+      defaultInstance = new EmptyPayloadProto(true);
+      defaultInstance.initFields();
+    }
+
+    // 
@@protoc_insertion_point(class_scope:org.apache.slider.api.EmptyPayloadProto)
+  }
+
+  public interface WrappedJsonProtoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string json = 1;
+    /**
+     * <code>required string json = 1;</code>
+     */
+    boolean hasJson();
+    /**
+     * <code>required string json = 1;</code>
+     */
+    java.lang.String getJson();
+    /**
+     * <code>required string json = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getJsonBytes();
+  }
+  /**
+   * Protobuf type {@code org.apache.slider.api.WrappedJsonProto}
+   *
+   * <pre>
+   **
+   *Generic JSON, often containing data structures serialized as a string
+   * </pre>
+   */
+  public static final class WrappedJsonProto extends
+      com.google.protobuf.GeneratedMessage
+      implements WrappedJsonProtoOrBuilder {
+    // Use WrappedJsonProto.newBuilder() to construct.
+    private WrappedJsonProto(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private WrappedJsonProto(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final WrappedJsonProto defaultInstance;
+    public static WrappedJsonProto getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public WrappedJsonProto getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private WrappedJsonProto(
+        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: {
+              bitField0_ |= 0x00000001;
+              json_ = input.readBytes();
+              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 {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_WrappedJsonProto_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_WrappedJsonProto_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.slider.api.proto.Messages.WrappedJsonProto.class, 
org.apache.slider.api.proto.Messages.WrappedJsonProto.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<WrappedJsonProto> PARSER =
+        new com.google.protobuf.AbstractParser<WrappedJsonProto>() {
+      public WrappedJsonProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new WrappedJsonProto(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<WrappedJsonProto> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string json = 1;
+    public static final int JSON_FIELD_NUMBER = 1;
+    private java.lang.Object json_;
+    /**
+     * <code>required string json = 1;</code>
+     */
+    public boolean hasJson() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string json = 1;</code>
+     */
+    public java.lang.String getJson() {
+      java.lang.Object ref = json_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          json_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string json = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getJsonBytes() {
+      java.lang.Object ref = json_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        json_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      json_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasJson()) {
+        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.writeBytes(1, getJsonBytes());
+      }
+      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
+          .computeBytesSize(1, getJsonBytes());
+      }
+      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();
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof 
org.apache.slider.api.proto.Messages.WrappedJsonProto)) {
+        return super.equals(obj);
+      }
+      org.apache.slider.api.proto.Messages.WrappedJsonProto other = 
(org.apache.slider.api.proto.Messages.WrappedJsonProto) obj;
+
+      boolean result = true;
+      result = result && (hasJson() == other.hasJson());
+      if (hasJson()) {
+        result = result && getJson()
+            .equals(other.getJson());
+      }
+      result = result &&
+          getUnknownFields().equals(other.getUnknownFields());
+      return result;
+    }
+
+    private int memoizedHashCode = 0;
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptorForType().hashCode();
+      if (hasJson()) {
+        hash = (37 * hash) + JSON_FIELD_NUMBER;
+        hash = (53 * hash) + getJson().hashCode();
+      }
+      hash = (29 * hash) + getUnknownFields().hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.slider.api.proto.Messages.WrappedJsonProto 
parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.slider.api.proto.Messages.WrappedJsonProto 
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.slider.api.proto.Messages.WrappedJsonProto 
parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.slider.api.proto.Messages.WrappedJsonProto 
parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.WrappedJsonProto 
parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.WrappedJsonProto 
parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.WrappedJsonProto 
parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.WrappedJsonProto 
parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.WrappedJsonProto 
parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.WrappedJsonProto 
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.slider.api.proto.Messages.WrappedJsonProto 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 org.apache.slider.api.WrappedJsonProto}
+     *
+     * <pre>
+     **
+     *Generic JSON, often containing data structures serialized as a string
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements 
org.apache.slider.api.proto.Messages.WrappedJsonProtoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_WrappedJsonProto_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_WrappedJsonProto_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.slider.api.proto.Messages.WrappedJsonProto.class, 
org.apache.slider.api.proto.Messages.WrappedJsonProto.Builder.class);
+      }
+
+      // Construct using 
org.apache.slider.api.proto.Messages.WrappedJsonProto.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        json_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return 
org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_WrappedJsonProto_descriptor;
+      }
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getDefaultInstanceForType() {
+        return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+      }
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto build() {
+        org.apache.slider.api.proto.Messages.WrappedJsonProto result = 
buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
buildPartial() {
+        org.apache.slider.api.proto.Messages.WrappedJsonProto result = new 
org.apache.slider.api.proto.Messages.WrappedJsonProto(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.json_ = json_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof 
org.apache.slider.api.proto.Messages.WrappedJsonProto) {
+          return 
mergeFrom((org.apache.slider.api.proto.Messages.WrappedJsonProto)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder 
mergeFrom(org.apache.slider.api.proto.Messages.WrappedJsonProto other) {
+        if (other == 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()) 
return this;
+        if (other.hasJson()) {
+          bitField0_ |= 0x00000001;
+          json_ = other.json_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasJson()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.slider.api.proto.Messages.WrappedJsonProto parsedMessage = 
null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = 
(org.apache.slider.api.proto.Messages.WrappedJsonProto) 
e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string json = 1;
+      private java.lang.Object json_ = "";
+      /**
+       * <code>required string json = 1;</code>
+       */
+      public boolean hasJson() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string json = 1;</code>
+       */
+      public java.lang.String getJson() {
+        java.lang.Object ref = json_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          json_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string json = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getJsonBytes() {
+        java.lang.Object ref = json_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          json_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string json = 1;</code>
+       */
+      public Builder setJson(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        json_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string json = 1;</code>
+       */
+      public Builder clearJson() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        json_ = getDefaultInstance().getJson();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string json = 1;</code>
+       */
+      public Builder setJsonBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        json_ = value;
+        onChanged();
+        return this;
+      }
+
+      // 
@@protoc_insertion_point(builder_scope:org.apache.slider.api.WrappedJsonProto)
+    }
+
+    static {
+      defaultInstance = new WrappedJsonProto(true);
+      defaultInstance.initFields();
+    }
+
+    // 
@@protoc_insertion_point(class_scope:org.apache.slider.api.WrappedJsonProto)
+  }
+
   private static com.google.protobuf.Descriptors.Descriptor
     internal_static_org_apache_slider_api_RoleInstanceState_descriptor;
   private static
@@ -24459,6 +25324,16 @@ public final class Messages {
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       
internal_static_org_apache_slider_api_GetApplicationLivenessRequestProto_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_org_apache_slider_api_EmptyPayloadProto_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      
internal_static_org_apache_slider_api_EmptyPayloadProto_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_org_apache_slider_api_WrappedJsonProto_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      
internal_static_org_apache_slider_api_WrappedJsonProto_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -24535,9 +25410,10 @@ public final class Messages {
       "\001 \003(\t\022D\n\ncomponents\030\002 \003(\01320.org.apache.s" +
       "lider.api.ComponentInformationProto\",\n\034G" +
       "etLiveComponentRequestProto\022\014\n\004name\030\001 \002(" +
-      "\t\"$\n\"GetApplicationLivenessRequestProtoB" +
-      "-\n\033org.apache.slider.api.protoB\010Messages" +
-      "\210\001\001\240\001\001"
+      "\t\"$\n\"GetApplicationLivenessRequestProto\"" +
+      "\023\n\021EmptyPayloadProto\" \n\020WrappedJsonProto" +
+      "\022\014\n\004json\030\001 \002(\tB-\n\033org.apache.slider.api.",
+      "protoB\010Messages\210\001\001\240\001\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner 
assigner =
       new 
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -24778,6 +25654,18 @@ public final class Messages {
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               
internal_static_org_apache_slider_api_GetApplicationLivenessRequestProto_descriptor,
               new java.lang.String[] { });
+          internal_static_org_apache_slider_api_EmptyPayloadProto_descriptor =
+            getDescriptor().getMessageTypes().get(39);
+          
internal_static_org_apache_slider_api_EmptyPayloadProto_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              
internal_static_org_apache_slider_api_EmptyPayloadProto_descriptor,
+              new java.lang.String[] { });
+          internal_static_org_apache_slider_api_WrappedJsonProto_descriptor =
+            getDescriptor().getMessageTypes().get(40);
+          
internal_static_org_apache_slider_api_WrappedJsonProto_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              
internal_static_org_apache_slider_api_WrappedJsonProto_descriptor,
+              new java.lang.String[] { "Json", });
           return null;
         }
       };

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/84134031/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
 
b/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
index dffe239..4652763 100644
--- 
a/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
+++ 
b/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
@@ -67,7 +67,7 @@ public class RestTypeMarshalling {
     builder.setStartFailed(info.startFailed);
     builder.setCompleted(info.completed);
     builder.setTotalRequested(info.totalRequested);
-    if (info.failureMessage !=null) {
+    if (info.failureMessage != null) {
       builder.setFailureMessage(info.failureMessage);
     }
     if (info.containers != null) {
@@ -81,23 +81,27 @@ public class RestTypeMarshalling {
     ContainerInformation info = new ContainerInformation();
     info.containerId = wire.getContainerId();
     info.component = wire.getComponent();
-    info.released = wire.getReleased();
+    info.state = wire.getState();
     if (wire.hasReleased()) {
+      info.released = wire.getReleased();
     }
-    info.state = wire.getDesired();
-    info.exitCode = wire.getActual();
-    info.released = wire.getReleasing();
-    info.diagnostics = wire.getRequested();
-    info.createTime = wire.getFailed();
-    info.startTime = wire.getStarted();
-    info.host = wire.getStartFailed();
-    info.hostURL = wire.getCompleted();
-    info.totalRequested = wire.getTotalRequested();
-    if (wire.hasFailureMessage()) {
-      info.failureMessage = wire.getFailureMessage();
+    if (wire.hasExitCode()) {
+      info.exitCode = wire.getExitCode();
     }
-    info.output = Collections.a 
-        new ArrayList<String>(wire.getOutputList());
+    if (wire.hasDiagnostics()) {
+      info.diagnostics = wire.getDiagnostics();
+    }
+    if (wire.hasHost()) {
+      info.host = wire.getHost();
+    }
+    if (wire.hasHostURL()) {
+      info.host = wire.getHostURL();
+    }
+    info.createTime = wire.getCreateTime();
+    info.startTime = wire.getStartTime();
+    info.output = wire.getOutputList().toArray(
+        new String[wire.getOutputCount()]
+    );
     return info;
   }
 
@@ -106,28 +110,31 @@ public class RestTypeMarshalling {
 
     Messages.ContainerInformationProto.Builder builder =
         Messages.ContainerInformationProto.newBuilder();
+    if (info.containerId != null) {
+      builder.setContainerId(info.containerId);
+    }
+    if (info.component != null) {
+      builder.setComponent(info.component);
+    }
+    if (info.diagnostics != null) {
+      builder.setDiagnostics(info.diagnostics);
+    }
+    if (info.host != null) {
+      builder.setHost(info.host);
+    }
+    if (info.hostURL != null) {
+      builder.setHostURL(info.hostURL);
+    }
+    if (info.released != null) {
+      builder.setReleased(info.released);
+    }
+    if (info.output != null) {
+      builder.addAllOutput(Arrays.asList(info.output));
+    }
+    builder.setCreateTime(info.createTime);
+    builder.setStartTime(info.startTime);
     return builder.build();
   }
 
-  public static ContainerInformation
-  unmarshall(Messages.ContainerInformationProto wire) {
-    ContainerInformation info = new ContainerInformation();
-    info.name = wire.getName();
-    info.priority = wire.getPriority();
-    info.placementPolicy = wire.getPlacementPolicy();
-    info.desired = wire.getDesired();
-    info.actual = wire.getActual();
-    info.releasing = wire.getReleasing();
-    info.requested = wire.getRequested();
-    info.failed = wire.getFailed();
-    info.started = wire.getStarted();
-    info.startFailed = wire.getStartFailed();
-    info.completed = wire.getCompleted();
-    info.totalRequested = wire.getTotalRequested();
-    if (wire.hasFailureMessage()) {
-      info.failureMessage = wire.getFailureMessage();
-    }
-    info.containers = new ArrayList<String>(wire.getContainersList());
-    return info;
-  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/84134031/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java 
b/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
index b97a6e6..85ea328 100644
--- 
a/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
+++ 
b/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
@@ -189,6 +189,90 @@ public final class SliderClusterAPI {
           org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto 
request,
           
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.ComponentInformationProto>
 done);
 
+      /**
+       * <code>rpc getModelDesired(.org.apache.slider.api.EmptyPayloadProto) 
returns (.org.apache.slider.api.WrappedJsonProto);</code>
+       *
+       * <pre>
+       * AggregateConf getModelDesired()
+       * </pre>
+       */
+      public abstract void getModelDesired(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+      /**
+       * <code>rpc 
getModelDesiredAppconf(.org.apache.slider.api.EmptyPayloadProto) returns 
(.org.apache.slider.api.WrappedJsonProto);</code>
+       *
+       * <pre>
+       * ConfTree getModelDesiredAppconf
+       * </pre>
+       */
+      public abstract void getModelDesiredAppconf(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+      /**
+       * <code>rpc 
getModelDesiredResources(.org.apache.slider.api.EmptyPayloadProto) returns 
(.org.apache.slider.api.WrappedJsonProto);</code>
+       *
+       * <pre>
+       * ConfTree getModelDesiredResources
+       * </pre>
+       */
+      public abstract void getModelDesiredResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+      /**
+       * <code>rpc getModelResolved(.org.apache.slider.api.EmptyPayloadProto) 
returns (.org.apache.slider.api.WrappedJsonProto);</code>
+       *
+       * <pre>
+       * AggregateConf getModelResolved()
+       * </pre>
+       */
+      public abstract void getModelResolved(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+      /**
+       * <code>rpc 
getModelResolvedAppconf(.org.apache.slider.api.EmptyPayloadProto) returns 
(.org.apache.slider.api.WrappedJsonProto);</code>
+       *
+       * <pre>
+       * ConfTree getModelResolvedAppconf
+       * </pre>
+       */
+      public abstract void getModelResolvedAppconf(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+      /**
+       * <code>rpc 
getModelResolvedResources(.org.apache.slider.api.EmptyPayloadProto) returns 
(.org.apache.slider.api.WrappedJsonProto);</code>
+       *
+       * <pre>
+       * ConfTree getModelResolvedResources
+       * </pre>
+       */
+      public abstract void getModelResolvedResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+      /**
+       * <code>rpc getLiveResources(.org.apache.slider.api.EmptyPayloadProto) 
returns (.org.apache.slider.api.WrappedJsonProto);</code>
+       *
+       * <pre>
+       * ConfTree getLiveResources
+       * </pre>
+       */
+      public abstract void getLiveResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
     }
 
     public static com.google.protobuf.Service newReflectiveService(
@@ -314,6 +398,62 @@ public final class SliderClusterAPI {
           impl.getLiveComponent(controller, request, done);
         }
 
+        @java.lang.Override
+        public  void getModelDesired(
+            com.google.protobuf.RpcController controller,
+            org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+            
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+          impl.getModelDesired(controller, request, done);
+        }
+
+        @java.lang.Override
+        public  void getModelDesiredAppconf(
+            com.google.protobuf.RpcController controller,
+            org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+            
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+          impl.getModelDesiredAppconf(controller, request, done);
+        }
+
+        @java.lang.Override
+        public  void getModelDesiredResources(
+            com.google.protobuf.RpcController controller,
+            org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+            
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+          impl.getModelDesiredResources(controller, request, done);
+        }
+
+        @java.lang.Override
+        public  void getModelResolved(
+            com.google.protobuf.RpcController controller,
+            org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+            
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+          impl.getModelResolved(controller, request, done);
+        }
+
+        @java.lang.Override
+        public  void getModelResolvedAppconf(
+            com.google.protobuf.RpcController controller,
+            org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+            
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+          impl.getModelResolvedAppconf(controller, request, done);
+        }
+
+        @java.lang.Override
+        public  void getModelResolvedResources(
+            com.google.protobuf.RpcController controller,
+            org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+            
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+          impl.getModelResolvedResources(controller, request, done);
+        }
+
+        @java.lang.Override
+        public  void getLiveResources(
+            com.google.protobuf.RpcController controller,
+            org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+            
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+          impl.getLiveResources(controller, request, done);
+        }
+
       };
     }
 
@@ -366,6 +506,20 @@ public final class SliderClusterAPI {
               return impl.getLiveComponents(controller, 
(org.apache.slider.api.proto.Messages.GetLiveComponentsRequestProto)request);
             case 14:
               return impl.getLiveComponent(controller, 
(org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto)request);
+            case 15:
+              return impl.getModelDesired(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+            case 16:
+              return impl.getModelDesiredAppconf(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+            case 17:
+              return impl.getModelDesiredResources(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+            case 18:
+              return impl.getModelResolved(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+            case 19:
+              return impl.getModelResolvedAppconf(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+            case 20:
+              return impl.getModelResolvedResources(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+            case 21:
+              return impl.getLiveResources(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
             default:
               throw new java.lang.AssertionError("Can't get here.");
           }
@@ -410,6 +564,20 @@ public final class SliderClusterAPI {
               return 
org.apache.slider.api.proto.Messages.GetLiveComponentsRequestProto.getDefaultInstance();
             case 14:
               return 
org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto.getDefaultInstance();
+            case 15:
+              return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+            case 16:
+              return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+            case 17:
+              return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+            case 18:
+              return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+            case 19:
+              return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+            case 20:
+              return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+            case 21:
+              return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
             default:
               throw new java.lang.AssertionError("Can't get here.");
           }
@@ -454,6 +622,20 @@ public final class SliderClusterAPI {
               return 
org.apache.slider.api.proto.Messages.GetLiveComponentsResponseProto.getDefaultInstance();
             case 14:
               return 
org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance();
+            case 15:
+              return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+            case 16:
+              return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+            case 17:
+              return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+            case 18:
+              return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+            case 19:
+              return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+            case 20:
+              return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+            case 21:
+              return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
             default:
               throw new java.lang.AssertionError("Can't get here.");
           }
@@ -630,6 +812,90 @@ public final class SliderClusterAPI {
         org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto 
request,
         
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.ComponentInformationProto>
 done);
 
+    /**
+     * <code>rpc getModelDesired(.org.apache.slider.api.EmptyPayloadProto) 
returns (.org.apache.slider.api.WrappedJsonProto);</code>
+     *
+     * <pre>
+     * AggregateConf getModelDesired()
+     * </pre>
+     */
+    public abstract void getModelDesired(
+        com.google.protobuf.RpcController controller,
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+        
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+    /**
+     * <code>rpc 
getModelDesiredAppconf(.org.apache.slider.api.EmptyPayloadProto) returns 
(.org.apache.slider.api.WrappedJsonProto);</code>
+     *
+     * <pre>
+     * ConfTree getModelDesiredAppconf
+     * </pre>
+     */
+    public abstract void getModelDesiredAppconf(
+        com.google.protobuf.RpcController controller,
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+        
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+    /**
+     * <code>rpc 
getModelDesiredResources(.org.apache.slider.api.EmptyPayloadProto) returns 
(.org.apache.slider.api.WrappedJsonProto);</code>
+     *
+     * <pre>
+     * ConfTree getModelDesiredResources
+     * </pre>
+     */
+    public abstract void getModelDesiredResources(
+        com.google.protobuf.RpcController controller,
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+        
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+    /**
+     * <code>rpc getModelResolved(.org.apache.slider.api.EmptyPayloadProto) 
returns (.org.apache.slider.api.WrappedJsonProto);</code>
+     *
+     * <pre>
+     * AggregateConf getModelResolved()
+     * </pre>
+     */
+    public abstract void getModelResolved(
+        com.google.protobuf.RpcController controller,
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+        
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+    /**
+     * <code>rpc 
getModelResolvedAppconf(.org.apache.slider.api.EmptyPayloadProto) returns 
(.org.apache.slider.api.WrappedJsonProto);</code>
+     *
+     * <pre>
+     * ConfTree getModelResolvedAppconf
+     * </pre>
+     */
+    public abstract void getModelResolvedAppconf(
+        com.google.protobuf.RpcController controller,
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+        
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+    /**
+     * <code>rpc 
getModelResolvedResources(.org.apache.slider.api.EmptyPayloadProto) returns 
(.org.apache.slider.api.WrappedJsonProto);</code>
+     *
+     * <pre>
+     * ConfTree getModelResolvedResources
+     * </pre>
+     */
+    public abstract void getModelResolvedResources(
+        com.google.protobuf.RpcController controller,
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+        
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
+    /**
+     * <code>rpc getLiveResources(.org.apache.slider.api.EmptyPayloadProto) 
returns (.org.apache.slider.api.WrappedJsonProto);</code>
+     *
+     * <pre>
+     * ConfTree getLiveResources
+     * </pre>
+     */
+    public abstract void getLiveResources(
+        com.google.protobuf.RpcController controller,
+        org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+        
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done);
+
     public static final
         com.google.protobuf.Descriptors.ServiceDescriptor
         getDescriptor() {
@@ -727,6 +993,41 @@ public final class SliderClusterAPI {
             
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.ComponentInformationProto>specializeCallback(
               done));
           return;
+        case 15:
+          this.getModelDesired(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
+            
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
+              done));
+          return;
+        case 16:
+          this.getModelDesiredAppconf(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
+            
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
+              done));
+          return;
+        case 17:
+          this.getModelDesiredResources(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
+            
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
+              done));
+          return;
+        case 18:
+          this.getModelResolved(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
+            
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
+              done));
+          return;
+        case 19:
+          this.getModelResolvedAppconf(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
+            
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
+              done));
+          return;
+        case 20:
+          this.getModelResolvedResources(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
+            
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
+              done));
+          return;
+        case 21:
+          this.getLiveResources(controller, 
(org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
+            
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
+              done));
+          return;
         default:
           throw new java.lang.AssertionError("Can't get here.");
       }
@@ -771,6 +1072,20 @@ public final class SliderClusterAPI {
           return 
org.apache.slider.api.proto.Messages.GetLiveComponentsRequestProto.getDefaultInstance();
         case 14:
           return 
org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto.getDefaultInstance();
+        case 15:
+          return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+        case 16:
+          return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+        case 17:
+          return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+        case 18:
+          return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+        case 19:
+          return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+        case 20:
+          return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+        case 21:
+          return 
org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
         default:
           throw new java.lang.AssertionError("Can't get here.");
       }
@@ -815,6 +1130,20 @@ public final class SliderClusterAPI {
           return 
org.apache.slider.api.proto.Messages.GetLiveComponentsResponseProto.getDefaultInstance();
         case 14:
           return 
org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance();
+        case 15:
+          return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+        case 16:
+          return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+        case 17:
+          return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+        case 18:
+          return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+        case 19:
+          return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+        case 20:
+          return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+        case 21:
+          return 
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
         default:
           throw new java.lang.AssertionError("Can't get here.");
       }
@@ -1060,6 +1389,111 @@ public final class SliderClusterAPI {
             
org.apache.slider.api.proto.Messages.ComponentInformationProto.class,
             
org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance()));
       }
+
+      public  void getModelDesired(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+        channel.callMethod(
+          getDescriptor().getMethods().get(15),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
+          com.google.protobuf.RpcUtil.generalizeCallback(
+            done,
+            org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
+            
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
+      }
+
+      public  void getModelDesiredAppconf(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+        channel.callMethod(
+          getDescriptor().getMethods().get(16),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
+          com.google.protobuf.RpcUtil.generalizeCallback(
+            done,
+            org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
+            
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
+      }
+
+      public  void getModelDesiredResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+        channel.callMethod(
+          getDescriptor().getMethods().get(17),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
+          com.google.protobuf.RpcUtil.generalizeCallback(
+            done,
+            org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
+            
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
+      }
+
+      public  void getModelResolved(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+        channel.callMethod(
+          getDescriptor().getMethods().get(18),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
+          com.google.protobuf.RpcUtil.generalizeCallback(
+            done,
+            org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
+            
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
+      }
+
+      public  void getModelResolvedAppconf(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+        channel.callMethod(
+          getDescriptor().getMethods().get(19),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
+          com.google.protobuf.RpcUtil.generalizeCallback(
+            done,
+            org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
+            
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
+      }
+
+      public  void getModelResolvedResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+        channel.callMethod(
+          getDescriptor().getMethods().get(20),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
+          com.google.protobuf.RpcUtil.generalizeCallback(
+            done,
+            org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
+            
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
+      }
+
+      public  void getLiveResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
+          
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto>
 done) {
+        channel.callMethod(
+          getDescriptor().getMethods().get(21),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
+          com.google.protobuf.RpcUtil.generalizeCallback(
+            done,
+            org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
+            
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
+      }
     }
 
     public static BlockingInterface newBlockingStub(
@@ -1142,6 +1576,41 @@ public final class SliderClusterAPI {
           com.google.protobuf.RpcController controller,
           org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto 
request)
           throws com.google.protobuf.ServiceException;
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelDesired(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException;
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelDesiredAppconf(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException;
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelDesiredResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException;
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelResolved(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException;
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelResolvedAppconf(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException;
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelResolvedResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException;
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getLiveResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException;
     }
 
     private static final class BlockingStub implements BlockingInterface {
@@ -1330,6 +1799,90 @@ public final class SliderClusterAPI {
           
org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance());
       }
 
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelDesired(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException {
+        return (org.apache.slider.api.proto.Messages.WrappedJsonProto) 
channel.callBlockingMethod(
+          getDescriptor().getMethods().get(15),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+      }
+
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelDesiredAppconf(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException {
+        return (org.apache.slider.api.proto.Messages.WrappedJsonProto) 
channel.callBlockingMethod(
+          getDescriptor().getMethods().get(16),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+      }
+
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelDesiredResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException {
+        return (org.apache.slider.api.proto.Messages.WrappedJsonProto) 
channel.callBlockingMethod(
+          getDescriptor().getMethods().get(17),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+      }
+
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelResolved(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException {
+        return (org.apache.slider.api.proto.Messages.WrappedJsonProto) 
channel.callBlockingMethod(
+          getDescriptor().getMethods().get(18),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+      }
+
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelResolvedAppconf(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException {
+        return (org.apache.slider.api.proto.Messages.WrappedJsonProto) 
channel.callBlockingMethod(
+          getDescriptor().getMethods().get(19),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+      }
+
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getModelResolvedResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException {
+        return (org.apache.slider.api.proto.Messages.WrappedJsonProto) 
channel.callBlockingMethod(
+          getDescriptor().getMethods().get(20),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+      }
+
+
+      public org.apache.slider.api.proto.Messages.WrappedJsonProto 
getLiveResources(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+          throws com.google.protobuf.ServiceException {
+        return (org.apache.slider.api.proto.Messages.WrappedJsonProto) 
channel.callBlockingMethod(
+          getDescriptor().getMethods().get(21),
+          controller,
+          request,
+          
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+      }
+
     }
 
     // 
@@protoc_insertion_point(class_scope:org.apache.slider.api.SliderClusterProtocolPB)
@@ -1346,7 +1899,7 @@ public final class SliderClusterAPI {
     java.lang.String[] descriptorData = {
       "\n\033SliderClusterProtocol.proto\022\025org.apach" +
       "e.slider.api\032\033SliderClusterMessages.prot" +
-      "o2\306\016\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
+      "o2\264\024\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
       "ster\022..org.apache.slider.api.StopCluster" +
       "RequestProto\032/.org.apache.slider.api.Sto" +
       "pClusterResponseProto\022n\n\013flexCluster\022..o" +
@@ -1392,9 +1945,27 @@ public final class SliderClusterAPI {
       "ComponentsResponseProto\022y\n\020getLiveCompon" +
       "ent\0223.org.apache.slider.api.GetLiveCompo" +
       "nentRequestProto\0320.org.apache.slider.api" +
-      ".ComponentInformationProtoB5\n\033org.apache" +
-      ".slider.api.protoB\020SliderClusterAPI\210\001\001\240\001",
-      "\001"
+      ".ComponentInformationProto\022d\n\017getModelDe" +
+      "sired\022(.org.apache.slider.api.EmptyPaylo",
+      "adProto\032\'.org.apache.slider.api.WrappedJ" +
+      "sonProto\022k\n\026getModelDesiredAppconf\022(.org" +
+      ".apache.slider.api.EmptyPayloadProto\032\'.o" +
+      "rg.apache.slider.api.WrappedJsonProto\022m\n" +
+      "\030getModelDesiredResources\022(.org.apache.s" +
+      "lider.api.EmptyPayloadProto\032\'.org.apache" +
+      ".slider.api.WrappedJsonProto\022e\n\020getModel" +
+      "Resolved\022(.org.apache.slider.api.EmptyPa" +
+      "yloadProto\032\'.org.apache.slider.api.Wrapp" +
+      "edJsonProto\022l\n\027getModelResolvedAppconf\022(",
+      ".org.apache.slider.api.EmptyPayloadProto" +
+      "\032\'.org.apache.slider.api.WrappedJsonProt" +
+      "o\022n\n\031getModelResolvedResources\022(.org.apa" +
+      "che.slider.api.EmptyPayloadProto\032\'.org.a" +
+      "pache.slider.api.WrappedJsonProto\022e\n\020get" +
+      "LiveResources\022(.org.apache.slider.api.Em" +
+      "ptyPayloadProto\032\'.org.apache.slider.api." +
+      "WrappedJsonProtoB5\n\033org.apache.slider.ap" +
+      "i.protoB\020SliderClusterAPI\210\001\001\240\001\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner 
assigner =
       new 
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/84134031/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
 
b/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
index 14fa491..ccadd9c 100644
--- 
a/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
+++ 
b/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
@@ -39,13 +39,13 @@ public class ContainerInformation {
   public long createTime;
   public long startTime;
 
+  public String host;
+  public String hostURL;
   /**
    * What is the tail output from the executed process (or [] if not started
    * or the log cannot be picked up
    */
   public String[] output;
-  public String host;
-  public String hostURL;
 
   @Override
   public String toString() {

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/84134031/slider-core/src/main/java/org/apache/slider/client/SliderClusterOperations.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/client/SliderClusterOperations.java
 
b/slider-core/src/main/java/org/apache/slider/client/SliderClusterOperations.java
index e711a0d..7191c66 100644
--- 
a/slider-core/src/main/java/org/apache/slider/client/SliderClusterOperations.java
+++ 
b/slider-core/src/main/java/org/apache/slider/client/SliderClusterOperations.java
@@ -335,8 +335,7 @@ public class SliderClusterOperations {
         Messages.GetApplicationLivenessRequestProto.newBuilder();
     Messages.ApplicationLivenessInformationProto wire =
         appMaster.getLivenessInformation(builder.build());
-    ApplicationLivenessInformation result = unmarshall(wire);
-    return result;
+    return unmarshall(wire);
 
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/84134031/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
index 61e3692..21c6eaf 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
@@ -149,6 +149,8 @@ import 
org.apache.slider.server.appmaster.web.SliderAMWebApp;
 import org.apache.slider.server.appmaster.web.WebAppApi;
 import org.apache.slider.server.appmaster.web.WebAppApiImpl;
 import org.apache.slider.server.appmaster.web.rest.RestPaths;
+import 
org.apache.slider.server.appmaster.web.rest.application.ApplicationResouceContentCacheFactory;
+import 
org.apache.slider.server.appmaster.web.rest.application.resources.ContentCache;
 import org.apache.slider.server.services.security.CertificateManager;
 import org.apache.slider.server.services.utility.AbstractSliderLaunchedService;
 import org.apache.slider.server.services.utility.WebAppService;
@@ -404,6 +406,7 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
    * Set early on in the {@link #createAndRunCluster(String)} operation.
    */
   private boolean securityEnabled;
+  private ContentCache contentCache;
 
   /**
    * Service Constructor
@@ -478,7 +481,11 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
     addService(metricsAndMonitoring);
     metrics = metricsAndMonitoring.getMetrics();
 
-    
+
+    contentCache = ApplicationResouceContentCacheFactory.createContentCache(
+        stateForProviders);
+
+
     executorService = new 
WorkflowExecutorService<ExecutorService>("AmExecutor",
         Executors.newFixedThreadPool(2,
             new ServiceThreadFactory("AmExecutor", true)));
@@ -713,8 +720,8 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
           getConfig().set(KEY_PROTOCOL_ACL, "*");
         }
       }
+      
       //bring up the Slider RPC service
-
       buildPortScanner(instanceDefinition);
       startSliderRPCServer(instanceDefinition);
 
@@ -922,7 +929,8 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
               registryOperations,
               metricsAndMonitoring,
               actionQueues,
-              this);
+              this,
+              contentCache);
       initAMFilterOptions(serviceConf);
 
       // start the agent web app
@@ -1495,7 +1503,8 @@ public class SliderAppMaster extends 
AbstractSliderLaunchedService
         this,
         stateForProviders,
         actionQueues,
-        metricsAndMonitoring);
+        metricsAndMonitoring,
+        contentCache);
 
     deployChildService(sliderIPCService);
     SliderClusterProtocolPBImpl protobufRelay =

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/84134031/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
index 69ab0ee..d34ce42 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
@@ -171,5 +171,89 @@ public class SliderClusterProtocolPBImpl implements 
SliderClusterProtocolPB {
       return real.getLivenessInformation(request);
     } catch (Exception e) {
       throw wrap(e);
-    }  }
+    }
+  }
+
+
+  @Override
+  public Messages.GetLiveContainersResponseProto 
getLiveContainers(RpcController controller,
+      Messages.GetLiveContainersRequestProto request) throws ServiceException {
+    try {
+      return real.getLiveContainers(request);
+    } catch (Exception e) {
+      throw wrap(e);
+    }
+  }
+
+  @Override
+  public Messages.ContainerInformationProto getLiveContainer(RpcController 
controller,
+      Messages.GetLiveContainerRequestProto request) throws ServiceException {
+    try {
+      return real.getLiveContainer(request);
+    } catch (Exception e) {
+      throw wrap(e);
+    }
+  }
+
+  @Override
+  public Messages.GetLiveComponentsResponseProto 
getLiveComponents(RpcController controller,
+      Messages.GetLiveComponentsRequestProto request) throws ServiceException {
+    try {
+      return real.getLiveComponents(request);
+    } catch (Exception e) {
+      throw wrap(e);
+    }
+  }
+
+  @Override
+  public Messages.ComponentInformationProto getLiveComponent(RpcController 
controller,
+      Messages.GetLiveComponentRequestProto request) throws ServiceException {
+    try {
+      return real.getLiveComponent(request);
+    } catch (Exception e) {
+      throw wrap(e);
+    }
+  }
+
+  @Override
+  public Messages.WrappedJsonProto getModelDesired(RpcController controller,
+      Messages.EmptyPayloadProto request) throws ServiceException {
+    return null;
+  }
+
+  @Override
+  public Messages.WrappedJsonProto getModelDesiredAppconf(RpcController 
controller,
+      Messages.EmptyPayloadProto request) throws ServiceException {
+    return null;
+  }
+
+  @Override
+  public Messages.WrappedJsonProto getModelDesiredResources(RpcController 
controller,
+      Messages.EmptyPayloadProto request) throws ServiceException {
+    return null;
+  }
+
+  @Override
+  public Messages.WrappedJsonProto getModelResolved(RpcController controller,
+      Messages.EmptyPayloadProto request) throws ServiceException {
+    return null;
+  }
+
+  @Override
+  public Messages.WrappedJsonProto getModelResolvedAppconf(RpcController 
controller,
+      Messages.EmptyPayloadProto request) throws ServiceException {
+    return null;
+  }
+
+  @Override
+  public Messages.WrappedJsonProto getModelResolvedResources(RpcController 
controller,
+      Messages.EmptyPayloadProto request) throws ServiceException {
+    return null;
+  }
+
+  @Override
+  public Messages.WrappedJsonProto getLiveResources(RpcController controller,
+      Messages.EmptyPayloadProto request) throws ServiceException {
+    return null;
+  }
 }

Reply via email to