Merge branch 'develop' into feature/SLIDER-82-anti-affinity-attempt-2
diff --git a/pom.xml b/pom.xml
index e6a20b9..2a7e41b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -603,6 +603,12 @@
<dependency>
<groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-hdfs</artifactId>
+ <version>${hadoop.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-client</artifactId>
<version>${hadoop.version}</version>
<exclusions>
@@ -618,7 +624,7 @@
<artifactId>hadoop-yarn-registry</artifactId>
<version>${hadoop.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-server-web-proxy</artifactId>
@@ -1422,6 +1428,12 @@
<version>1.5</version>
</dependency>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>3.3.1</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
diff --git a/slider-core/pom.xml b/slider-core/pom.xml
index 42b5f28..704fa06 100644
--- a/slider-core/pom.xml
+++ b/slider-core/pom.xml
@@ -268,6 +268,11 @@
<dependency>
<groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-hdfs</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-client</artifactId>
<scope>compile</scope>
</dependency>
@@ -522,7 +527,6 @@
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
- <version>3.3.1</version>
</dependency>
</dependencies>
diff --git a/slider-core/src/main/java/org/apache/slider/api/SliderApplicationApi.java b/slider-core/src/main/java/org/apache/slider/api/SliderApplicationApi.java
index 7de1915..3668c66 100644
--- a/slider-core/src/main/java/org/apache/slider/api/SliderApplicationApi.java
+++ b/slider-core/src/main/java/org/apache/slider/api/SliderApplicationApi.java
@@ -21,6 +21,7 @@
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.api.types.PingInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
@@ -101,8 +102,7 @@
* @return a possibly empty list of serialized containers
* @throws IOException on any failure
*/
- Map<String, ContainerInformation> enumContainers() throws
- IOException;
+ Map<String, ContainerInformation> enumContainers() throws IOException;
/**
* Get a container from the container Id
@@ -110,16 +110,14 @@
* @return the container information
* @throws IOException on any failure
*/
- ContainerInformation getContainer(String containerId) throws
- IOException;
+ ContainerInformation getContainer(String containerId) throws IOException;
/**
* List all components into a map of [name:info]
* @return a possibly empty map of components
* @throws IOException on any failure
*/
- Map<String, ComponentInformation> enumComponents() throws
- IOException;
+ Map<String, ComponentInformation> enumComponents() throws IOException;
/**
* Get information about a component
@@ -127,8 +125,22 @@
* @return the component details
* @throws IOException on any failure
*/
- ComponentInformation getComponent(String componentName) throws
- IOException;
+ ComponentInformation getComponent(String componentName) throws IOException;
+
+ /**
+ * List all nodes into a map of [name:info]
+ * @return a possibly empty map of nodes
+ * @throws IOException on any failure
+ */
+ Map<String, NodeInformation> getLiveNodes() throws IOException;
+
+ /**
+ * Get information about a node
+ * @param hostname name of the node
+ * @return the node details
+ * @throws IOException on any failure
+ */
+ NodeInformation getLiveNode(String hostname) throws IOException;
/**
* Ping as a GET
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 910521e..33fce22 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
@@ -30,8 +30,7 @@
* Cluster protocol. This can currently act as a versioned IPC
* endpoint or be relayed via protobuf
*/
-@KerberosInfo(
- serverPrincipal = SliderXmlConfKeys.KEY_KERBEROS_PRINCIPAL)
+@KerberosInfo(serverPrincipal = SliderXmlConfKeys.KEY_KERBEROS_PRINCIPAL)
public interface SliderClusterProtocol extends VersionedProtocol {
long versionID = 0x01;
@@ -39,10 +38,8 @@
* Stop the cluster
*/
-
Messages.StopClusterResponseProto stopCluster(Messages.StopClusterRequestProto request) throws
IOException, YarnException;
-
/**
* Upgrade the application containers
*
@@ -155,20 +152,26 @@
Messages.GetLiveComponentRequestProto request
) throws IOException;
-
+ Messages.GetLiveNodesResponseProto getLiveNodes(
+ Messages.GetLiveNodesRequestProto request
+ ) throws IOException;
+
+ Messages.NodeInformationProto getLiveNode(
+ Messages.GetLiveNodeRequestProto request
+ ) throws IOException;
+
Messages.WrappedJsonProto getModelDesired(Messages.EmptyPayloadProto request) throws IOException;
-
Messages.WrappedJsonProto getModelDesiredAppconf(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getModelDesiredResources(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getModelResolved(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getModelResolvedAppconf(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getModelResolvedResources(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getLiveResources(Messages.EmptyPayloadProto request) throws IOException;
Messages.GetCertificateStoreResponseProto getClientCertificateStore(Messages.GetCertificateStoreRequestProto request)
diff --git a/slider-core/src/main/java/org/apache/slider/api/StatusKeys.java b/slider-core/src/main/java/org/apache/slider/api/StatusKeys.java
index 6a0a2fa..8a2c4bb 100644
--- a/slider-core/src/main/java/org/apache/slider/api/StatusKeys.java
+++ b/slider-core/src/main/java/org/apache/slider/api/StatusKeys.java
@@ -32,6 +32,7 @@
String STATISTICS_CONTAINERS_PREEMPTED = "containers.failed.preempted";
String STATISTICS_CONTAINERS_LIVE = "containers.live";
String STATISTICS_CONTAINERS_REQUESTED = "containers.requested";
+ String STATISTICS_CONTAINERS_ANTI_AFFINE_PENDING = "containers.anti-affine.pending";
String STATISTICS_CONTAINERS_STARTED = "containers.start.started";
String STATISTICS_CONTAINERS_START_FAILED =
"containers.start.failed";
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 6c92f46..569660d 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
@@ -15100,6 +15100,16 @@
* <code>optional int32 preempted = 17;</code>
*/
int getPreempted();
+
+ // optional int32 pendingAntiAffineRequestCount = 18;
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ boolean hasPendingAntiAffineRequestCount();
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ int getPendingAntiAffineRequestCount();
}
/**
* Protobuf type {@code org.apache.slider.api.ComponentInformationProto}
@@ -15245,6 +15255,11 @@
preempted_ = input.readInt32();
break;
}
+ case 144: {
+ bitField0_ |= 0x00010000;
+ pendingAntiAffineRequestCount_ = input.readInt32();
+ break;
+ }
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -15628,6 +15643,22 @@
return preempted_;
}
+ // optional int32 pendingAntiAffineRequestCount = 18;
+ public static final int PENDINGANTIAFFINEREQUESTCOUNT_FIELD_NUMBER = 18;
+ private int pendingAntiAffineRequestCount_;
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public boolean hasPendingAntiAffineRequestCount() {
+ return ((bitField0_ & 0x00010000) == 0x00010000);
+ }
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public int getPendingAntiAffineRequestCount() {
+ return pendingAntiAffineRequestCount_;
+ }
+
private void initFields() {
name_ = "";
priority_ = 0;
@@ -15646,6 +15677,7 @@
failedRecently_ = 0;
nodeFailed_ = 0;
preempted_ = 0;
+ pendingAntiAffineRequestCount_ = 0;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -15710,6 +15742,9 @@
if (((bitField0_ & 0x00008000) == 0x00008000)) {
output.writeInt32(17, preempted_);
}
+ if (((bitField0_ & 0x00010000) == 0x00010000)) {
+ output.writeInt32(18, pendingAntiAffineRequestCount_);
+ }
getUnknownFields().writeTo(output);
}
@@ -15792,6 +15827,10 @@
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(17, preempted_);
}
+ if (((bitField0_ & 0x00010000) == 0x00010000)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(18, pendingAntiAffineRequestCount_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@@ -15897,6 +15936,11 @@
result = result && (getPreempted()
== other.getPreempted());
}
+ result = result && (hasPendingAntiAffineRequestCount() == other.hasPendingAntiAffineRequestCount());
+ if (hasPendingAntiAffineRequestCount()) {
+ result = result && (getPendingAntiAffineRequestCount()
+ == other.getPendingAntiAffineRequestCount());
+ }
result = result &&
getUnknownFields().equals(other.getUnknownFields());
return result;
@@ -15978,6 +16022,10 @@
hash = (37 * hash) + PREEMPTED_FIELD_NUMBER;
hash = (53 * hash) + getPreempted();
}
+ if (hasPendingAntiAffineRequestCount()) {
+ hash = (37 * hash) + PENDINGANTIAFFINEREQUESTCOUNT_FIELD_NUMBER;
+ hash = (53 * hash) + getPendingAntiAffineRequestCount();
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -16126,6 +16174,8 @@
bitField0_ = (bitField0_ & ~0x00008000);
preempted_ = 0;
bitField0_ = (bitField0_ & ~0x00010000);
+ pendingAntiAffineRequestCount_ = 0;
+ bitField0_ = (bitField0_ & ~0x00020000);
return this;
}
@@ -16224,6 +16274,10 @@
to_bitField0_ |= 0x00008000;
}
result.preempted_ = preempted_;
+ if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+ to_bitField0_ |= 0x00010000;
+ }
+ result.pendingAntiAffineRequestCount_ = pendingAntiAffineRequestCount_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -16302,6 +16356,9 @@
if (other.hasPreempted()) {
setPreempted(other.getPreempted());
}
+ if (other.hasPendingAntiAffineRequestCount()) {
+ setPendingAntiAffineRequestCount(other.getPendingAntiAffineRequestCount());
+ }
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@@ -17032,6 +17089,39 @@
return this;
}
+ // optional int32 pendingAntiAffineRequestCount = 18;
+ private int pendingAntiAffineRequestCount_ ;
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public boolean hasPendingAntiAffineRequestCount() {
+ return ((bitField0_ & 0x00020000) == 0x00020000);
+ }
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public int getPendingAntiAffineRequestCount() {
+ return pendingAntiAffineRequestCount_;
+ }
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public Builder setPendingAntiAffineRequestCount(int value) {
+ bitField0_ |= 0x00020000;
+ pendingAntiAffineRequestCount_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public Builder clearPendingAntiAffineRequestCount() {
+ bitField0_ = (bitField0_ & ~0x00020000);
+ pendingAntiAffineRequestCount_ = 0;
+ onChanged();
+ return this;
+ }
+
// @@protoc_insertion_point(builder_scope:org.apache.slider.api.ComponentInformationProto)
}
@@ -20132,6 +20222,3190 @@
// @@protoc_insertion_point(class_scope:org.apache.slider.api.PingInformationProto)
}
+ public interface NodeEntryInformationProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // required int32 priority = 1;
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ boolean hasPriority();
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ int getPriority();
+
+ // required int32 requested = 2;
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ boolean hasRequested();
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ int getRequested();
+
+ // required int32 starting = 3;
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ boolean hasStarting();
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ int getStarting();
+
+ // required int32 startFailed = 4;
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ boolean hasStartFailed();
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ int getStartFailed();
+
+ // required int32 failed = 5;
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ boolean hasFailed();
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ int getFailed();
+
+ // required int32 failedRecently = 6;
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ boolean hasFailedRecently();
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ int getFailedRecently();
+
+ // required int32 preempted = 7;
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ boolean hasPreempted();
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ int getPreempted();
+
+ // required int32 live = 8;
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ boolean hasLive();
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ int getLive();
+
+ // required int32 releasing = 9;
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ boolean hasReleasing();
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ int getReleasing();
+
+ // required int64 lastUsed = 10;
+ /**
+ * <code>required int64 lastUsed = 10;</code>
+ */
+ boolean hasLastUsed();
+ /**
+ * <code>required int64 lastUsed = 10;</code>
+ */
+ long getLastUsed();
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.NodeEntryInformationProto}
+ */
+ public static final class NodeEntryInformationProto extends
+ com.google.protobuf.GeneratedMessage
+ implements NodeEntryInformationProtoOrBuilder {
+ // Use NodeEntryInformationProto.newBuilder() to construct.
+ private NodeEntryInformationProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private NodeEntryInformationProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final NodeEntryInformationProto defaultInstance;
+ public static NodeEntryInformationProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public NodeEntryInformationProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private NodeEntryInformationProto(
+ 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 8: {
+ bitField0_ |= 0x00000001;
+ priority_ = input.readInt32();
+ break;
+ }
+ case 16: {
+ bitField0_ |= 0x00000002;
+ requested_ = input.readInt32();
+ break;
+ }
+ case 24: {
+ bitField0_ |= 0x00000004;
+ starting_ = input.readInt32();
+ break;
+ }
+ case 32: {
+ bitField0_ |= 0x00000008;
+ startFailed_ = input.readInt32();
+ break;
+ }
+ case 40: {
+ bitField0_ |= 0x00000010;
+ failed_ = input.readInt32();
+ break;
+ }
+ case 48: {
+ bitField0_ |= 0x00000020;
+ failedRecently_ = input.readInt32();
+ break;
+ }
+ case 56: {
+ bitField0_ |= 0x00000040;
+ preempted_ = input.readInt32();
+ break;
+ }
+ case 64: {
+ bitField0_ |= 0x00000080;
+ live_ = input.readInt32();
+ break;
+ }
+ case 72: {
+ bitField0_ |= 0x00000100;
+ releasing_ = input.readInt32();
+ break;
+ }
+ case 80: {
+ bitField0_ |= 0x00000200;
+ lastUsed_ = input.readInt64();
+ 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_NodeEntryInformationProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeEntryInformationProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto.class, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<NodeEntryInformationProto> PARSER =
+ new com.google.protobuf.AbstractParser<NodeEntryInformationProto>() {
+ public NodeEntryInformationProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new NodeEntryInformationProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<NodeEntryInformationProto> getParserForType() {
+ return PARSER;
+ }
+
+ private int bitField0_;
+ // required int32 priority = 1;
+ public static final int PRIORITY_FIELD_NUMBER = 1;
+ private int priority_;
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public boolean hasPriority() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public int getPriority() {
+ return priority_;
+ }
+
+ // required int32 requested = 2;
+ public static final int REQUESTED_FIELD_NUMBER = 2;
+ private int requested_;
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public boolean hasRequested() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public int getRequested() {
+ return requested_;
+ }
+
+ // required int32 starting = 3;
+ public static final int STARTING_FIELD_NUMBER = 3;
+ private int starting_;
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public boolean hasStarting() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public int getStarting() {
+ return starting_;
+ }
+
+ // required int32 startFailed = 4;
+ public static final int STARTFAILED_FIELD_NUMBER = 4;
+ private int startFailed_;
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public boolean hasStartFailed() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public int getStartFailed() {
+ return startFailed_;
+ }
+
+ // required int32 failed = 5;
+ public static final int FAILED_FIELD_NUMBER = 5;
+ private int failed_;
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public boolean hasFailed() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public int getFailed() {
+ return failed_;
+ }
+
+ // required int32 failedRecently = 6;
+ public static final int FAILEDRECENTLY_FIELD_NUMBER = 6;
+ private int failedRecently_;
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public boolean hasFailedRecently() {
+ return ((bitField0_ & 0x00000020) == 0x00000020);
+ }
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public int getFailedRecently() {
+ return failedRecently_;
+ }
+
+ // required int32 preempted = 7;
+ public static final int PREEMPTED_FIELD_NUMBER = 7;
+ private int preempted_;
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public boolean hasPreempted() {
+ return ((bitField0_ & 0x00000040) == 0x00000040);
+ }
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public int getPreempted() {
+ return preempted_;
+ }
+
+ // required int32 live = 8;
+ public static final int LIVE_FIELD_NUMBER = 8;
+ private int live_;
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public boolean hasLive() {
+ return ((bitField0_ & 0x00000080) == 0x00000080);
+ }
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public int getLive() {
+ return live_;
+ }
+
+ // required int32 releasing = 9;
+ public static final int RELEASING_FIELD_NUMBER = 9;
+ private int releasing_;
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public boolean hasReleasing() {
+ return ((bitField0_ & 0x00000100) == 0x00000100);
+ }
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public int getReleasing() {
+ return releasing_;
+ }
+
+ // required int64 lastUsed = 10;
+ public static final int LASTUSED_FIELD_NUMBER = 10;
+ private long lastUsed_;
+ /**
+ * <code>required int64 lastUsed = 10;</code>
+ */
+ public boolean hasLastUsed() {
+ return ((bitField0_ & 0x00000200) == 0x00000200);
+ }
+ /**
+ * <code>required int64 lastUsed = 10;</code>
+ */
+ public long getLastUsed() {
+ return lastUsed_;
+ }
+
+ private void initFields() {
+ priority_ = 0;
+ requested_ = 0;
+ starting_ = 0;
+ startFailed_ = 0;
+ failed_ = 0;
+ failedRecently_ = 0;
+ preempted_ = 0;
+ live_ = 0;
+ releasing_ = 0;
+ lastUsed_ = 0L;
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ if (!hasPriority()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasRequested()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasStarting()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasStartFailed()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasFailed()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasFailedRecently()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasPreempted()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasLive()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasReleasing()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasLastUsed()) {
+ 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.writeInt32(1, priority_);
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ output.writeInt32(2, requested_);
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ output.writeInt32(3, starting_);
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ output.writeInt32(4, startFailed_);
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ output.writeInt32(5, failed_);
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ output.writeInt32(6, failedRecently_);
+ }
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ output.writeInt32(7, preempted_);
+ }
+ if (((bitField0_ & 0x00000080) == 0x00000080)) {
+ output.writeInt32(8, live_);
+ }
+ if (((bitField0_ & 0x00000100) == 0x00000100)) {
+ output.writeInt32(9, releasing_);
+ }
+ if (((bitField0_ & 0x00000200) == 0x00000200)) {
+ output.writeInt64(10, lastUsed_);
+ }
+ 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
+ .computeInt32Size(1, priority_);
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(2, requested_);
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(3, starting_);
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(4, startFailed_);
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(5, failed_);
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(6, failedRecently_);
+ }
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(7, preempted_);
+ }
+ if (((bitField0_ & 0x00000080) == 0x00000080)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(8, live_);
+ }
+ if (((bitField0_ & 0x00000100) == 0x00000100)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(9, releasing_);
+ }
+ if (((bitField0_ & 0x00000200) == 0x00000200)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(10, lastUsed_);
+ }
+ 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.NodeEntryInformationProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto other = (org.apache.slider.api.proto.Messages.NodeEntryInformationProto) obj;
+
+ boolean result = true;
+ result = result && (hasPriority() == other.hasPriority());
+ if (hasPriority()) {
+ result = result && (getPriority()
+ == other.getPriority());
+ }
+ result = result && (hasRequested() == other.hasRequested());
+ if (hasRequested()) {
+ result = result && (getRequested()
+ == other.getRequested());
+ }
+ result = result && (hasStarting() == other.hasStarting());
+ if (hasStarting()) {
+ result = result && (getStarting()
+ == other.getStarting());
+ }
+ result = result && (hasStartFailed() == other.hasStartFailed());
+ if (hasStartFailed()) {
+ result = result && (getStartFailed()
+ == other.getStartFailed());
+ }
+ result = result && (hasFailed() == other.hasFailed());
+ if (hasFailed()) {
+ result = result && (getFailed()
+ == other.getFailed());
+ }
+ result = result && (hasFailedRecently() == other.hasFailedRecently());
+ if (hasFailedRecently()) {
+ result = result && (getFailedRecently()
+ == other.getFailedRecently());
+ }
+ result = result && (hasPreempted() == other.hasPreempted());
+ if (hasPreempted()) {
+ result = result && (getPreempted()
+ == other.getPreempted());
+ }
+ result = result && (hasLive() == other.hasLive());
+ if (hasLive()) {
+ result = result && (getLive()
+ == other.getLive());
+ }
+ result = result && (hasReleasing() == other.hasReleasing());
+ if (hasReleasing()) {
+ result = result && (getReleasing()
+ == other.getReleasing());
+ }
+ result = result && (hasLastUsed() == other.hasLastUsed());
+ if (hasLastUsed()) {
+ result = result && (getLastUsed()
+ == other.getLastUsed());
+ }
+ 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 (hasPriority()) {
+ hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
+ hash = (53 * hash) + getPriority();
+ }
+ if (hasRequested()) {
+ hash = (37 * hash) + REQUESTED_FIELD_NUMBER;
+ hash = (53 * hash) + getRequested();
+ }
+ if (hasStarting()) {
+ hash = (37 * hash) + STARTING_FIELD_NUMBER;
+ hash = (53 * hash) + getStarting();
+ }
+ if (hasStartFailed()) {
+ hash = (37 * hash) + STARTFAILED_FIELD_NUMBER;
+ hash = (53 * hash) + getStartFailed();
+ }
+ if (hasFailed()) {
+ hash = (37 * hash) + FAILED_FIELD_NUMBER;
+ hash = (53 * hash) + getFailed();
+ }
+ if (hasFailedRecently()) {
+ hash = (37 * hash) + FAILEDRECENTLY_FIELD_NUMBER;
+ hash = (53 * hash) + getFailedRecently();
+ }
+ if (hasPreempted()) {
+ hash = (37 * hash) + PREEMPTED_FIELD_NUMBER;
+ hash = (53 * hash) + getPreempted();
+ }
+ if (hasLive()) {
+ hash = (37 * hash) + LIVE_FIELD_NUMBER;
+ hash = (53 * hash) + getLive();
+ }
+ if (hasReleasing()) {
+ hash = (37 * hash) + RELEASING_FIELD_NUMBER;
+ hash = (53 * hash) + getReleasing();
+ }
+ if (hasLastUsed()) {
+ hash = (37 * hash) + LASTUSED_FIELD_NUMBER;
+ hash = (53 * hash) + hashLong(getLastUsed());
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto 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.NodeEntryInformationProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto 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.NodeEntryInformationProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto 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.NodeEntryInformationProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto 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.NodeEntryInformationProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto 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.NodeEntryInformationProto 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.NodeEntryInformationProto}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeEntryInformationProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeEntryInformationProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto.class, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder.class);
+ }
+
+ // Construct using org.apache.slider.api.proto.Messages.NodeEntryInformationProto.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();
+ priority_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ requested_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000002);
+ starting_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000004);
+ startFailed_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000008);
+ failed_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000010);
+ failedRecently_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000020);
+ preempted_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000040);
+ live_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000080);
+ releasing_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000100);
+ lastUsed_ = 0L;
+ bitField0_ = (bitField0_ & ~0x00000200);
+ 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_NodeEntryInformationProto_descriptor;
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto getDefaultInstanceForType() {
+ return org.apache.slider.api.proto.Messages.NodeEntryInformationProto.getDefaultInstance();
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto build() {
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto buildPartial() {
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto result = new org.apache.slider.api.proto.Messages.NodeEntryInformationProto(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.priority_ = priority_;
+ if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+ to_bitField0_ |= 0x00000002;
+ }
+ result.requested_ = requested_;
+ if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+ to_bitField0_ |= 0x00000004;
+ }
+ result.starting_ = starting_;
+ if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+ to_bitField0_ |= 0x00000008;
+ }
+ result.startFailed_ = startFailed_;
+ if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+ to_bitField0_ |= 0x00000010;
+ }
+ result.failed_ = failed_;
+ if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+ to_bitField0_ |= 0x00000020;
+ }
+ result.failedRecently_ = failedRecently_;
+ if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+ to_bitField0_ |= 0x00000040;
+ }
+ result.preempted_ = preempted_;
+ if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+ to_bitField0_ |= 0x00000080;
+ }
+ result.live_ = live_;
+ if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+ to_bitField0_ |= 0x00000100;
+ }
+ result.releasing_ = releasing_;
+ if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+ to_bitField0_ |= 0x00000200;
+ }
+ result.lastUsed_ = lastUsed_;
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.apache.slider.api.proto.Messages.NodeEntryInformationProto) {
+ return mergeFrom((org.apache.slider.api.proto.Messages.NodeEntryInformationProto)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.apache.slider.api.proto.Messages.NodeEntryInformationProto other) {
+ if (other == org.apache.slider.api.proto.Messages.NodeEntryInformationProto.getDefaultInstance()) return this;
+ if (other.hasPriority()) {
+ setPriority(other.getPriority());
+ }
+ if (other.hasRequested()) {
+ setRequested(other.getRequested());
+ }
+ if (other.hasStarting()) {
+ setStarting(other.getStarting());
+ }
+ if (other.hasStartFailed()) {
+ setStartFailed(other.getStartFailed());
+ }
+ if (other.hasFailed()) {
+ setFailed(other.getFailed());
+ }
+ if (other.hasFailedRecently()) {
+ setFailedRecently(other.getFailedRecently());
+ }
+ if (other.hasPreempted()) {
+ setPreempted(other.getPreempted());
+ }
+ if (other.hasLive()) {
+ setLive(other.getLive());
+ }
+ if (other.hasReleasing()) {
+ setReleasing(other.getReleasing());
+ }
+ if (other.hasLastUsed()) {
+ setLastUsed(other.getLastUsed());
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ if (!hasPriority()) {
+
+ return false;
+ }
+ if (!hasRequested()) {
+
+ return false;
+ }
+ if (!hasStarting()) {
+
+ return false;
+ }
+ if (!hasStartFailed()) {
+
+ return false;
+ }
+ if (!hasFailed()) {
+
+ return false;
+ }
+ if (!hasFailedRecently()) {
+
+ return false;
+ }
+ if (!hasPreempted()) {
+
+ return false;
+ }
+ if (!hasLive()) {
+
+ return false;
+ }
+ if (!hasReleasing()) {
+
+ return false;
+ }
+ if (!hasLastUsed()) {
+
+ 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.NodeEntryInformationProto parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.apache.slider.api.proto.Messages.NodeEntryInformationProto) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ // required int32 priority = 1;
+ private int priority_ ;
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public boolean hasPriority() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public int getPriority() {
+ return priority_;
+ }
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public Builder setPriority(int value) {
+ bitField0_ |= 0x00000001;
+ priority_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public Builder clearPriority() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ priority_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 requested = 2;
+ private int requested_ ;
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public boolean hasRequested() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public int getRequested() {
+ return requested_;
+ }
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public Builder setRequested(int value) {
+ bitField0_ |= 0x00000002;
+ requested_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public Builder clearRequested() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ requested_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 starting = 3;
+ private int starting_ ;
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public boolean hasStarting() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public int getStarting() {
+ return starting_;
+ }
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public Builder setStarting(int value) {
+ bitField0_ |= 0x00000004;
+ starting_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public Builder clearStarting() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ starting_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 startFailed = 4;
+ private int startFailed_ ;
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public boolean hasStartFailed() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public int getStartFailed() {
+ return startFailed_;
+ }
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public Builder setStartFailed(int value) {
+ bitField0_ |= 0x00000008;
+ startFailed_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public Builder clearStartFailed() {
+ bitField0_ = (bitField0_ & ~0x00000008);
+ startFailed_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 failed = 5;
+ private int failed_ ;
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public boolean hasFailed() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public int getFailed() {
+ return failed_;
+ }
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public Builder setFailed(int value) {
+ bitField0_ |= 0x00000010;
+ failed_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public Builder clearFailed() {
+ bitField0_ = (bitField0_ & ~0x00000010);
+ failed_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 failedRecently = 6;
+ private int failedRecently_ ;
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public boolean hasFailedRecently() {
+ return ((bitField0_ & 0x00000020) == 0x00000020);
+ }
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public int getFailedRecently() {
+ return failedRecently_;
+ }
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public Builder setFailedRecently(int value) {
+ bitField0_ |= 0x00000020;
+ failedRecently_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public Builder clearFailedRecently() {
+ bitField0_ = (bitField0_ & ~0x00000020);
+ failedRecently_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 preempted = 7;
+ private int preempted_ ;
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public boolean hasPreempted() {
+ return ((bitField0_ & 0x00000040) == 0x00000040);
+ }
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public int getPreempted() {
+ return preempted_;
+ }
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public Builder setPreempted(int value) {
+ bitField0_ |= 0x00000040;
+ preempted_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public Builder clearPreempted() {
+ bitField0_ = (bitField0_ & ~0x00000040);
+ preempted_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 live = 8;
+ private int live_ ;
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public boolean hasLive() {
+ return ((bitField0_ & 0x00000080) == 0x00000080);
+ }
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public int getLive() {
+ return live_;
+ }
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public Builder setLive(int value) {
+ bitField0_ |= 0x00000080;
+ live_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public Builder clearLive() {
+ bitField0_ = (bitField0_ & ~0x00000080);
+ live_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 releasing = 9;
+ private int releasing_ ;
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public boolean hasReleasing() {
+ return ((bitField0_ & 0x00000100) == 0x00000100);
+ }
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public int getReleasing() {
+ return releasing_;
+ }
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public Builder setReleasing(int value) {
+ bitField0_ |= 0x00000100;
+ releasing_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public Builder clearReleasing() {
+ bitField0_ = (bitField0_ & ~0x00000100);
+ releasing_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int64 lastUsed = 10;
+ private long lastUsed_ ;
+ /**
+ * <code>required int64 lastUsed = 10;</code>
+ */
+ public boolean hasLastUsed() {
+ return ((bitField0_ & 0x00000200) == 0x00000200);
+ }
+ /**
+ * <code>required int64 lastUsed = 10;</code>
+ */
+ public long getLastUsed() {
+ return lastUsed_;
+ }
+ /**
+ * <code>required int64 lastUsed = 10;</code>
+ */
+ public Builder setLastUsed(long value) {
+ bitField0_ |= 0x00000200;
+ lastUsed_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int64 lastUsed = 10;</code>
+ */
+ public Builder clearLastUsed() {
+ bitField0_ = (bitField0_ & ~0x00000200);
+ lastUsed_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:org.apache.slider.api.NodeEntryInformationProto)
+ }
+
+ static {
+ defaultInstance = new NodeEntryInformationProto(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:org.apache.slider.api.NodeEntryInformationProto)
+ }
+
+ public interface NodeInformationProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // required string hostname = 1;
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ boolean hasHostname();
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ java.lang.String getHostname();
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ com.google.protobuf.ByteString
+ getHostnameBytes();
+
+ // required string state = 2;
+ /**
+ * <code>required string state = 2;</code>
+ */
+ boolean hasState();
+ /**
+ * <code>required string state = 2;</code>
+ */
+ java.lang.String getState();
+ /**
+ * <code>required string state = 2;</code>
+ */
+ com.google.protobuf.ByteString
+ getStateBytes();
+
+ // required string httpAddress = 3;
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ boolean hasHttpAddress();
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ java.lang.String getHttpAddress();
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ com.google.protobuf.ByteString
+ getHttpAddressBytes();
+
+ // required string rackName = 4;
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ boolean hasRackName();
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ java.lang.String getRackName();
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ com.google.protobuf.ByteString
+ getRackNameBytes();
+
+ // required string labels = 5;
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ boolean hasLabels();
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ java.lang.String getLabels();
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ com.google.protobuf.ByteString
+ getLabelsBytes();
+
+ // required string healthReport = 6;
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ boolean hasHealthReport();
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ java.lang.String getHealthReport();
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ com.google.protobuf.ByteString
+ getHealthReportBytes();
+
+ // required int64 lastUpdated = 7;
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ */
+ boolean hasLastUpdated();
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ */
+ long getLastUpdated();
+
+ // repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto>
+ getEntriesList();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto getEntries(int index);
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ int getEntriesCount();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ java.util.List<? extends org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>
+ getEntriesOrBuilderList();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder getEntriesOrBuilder(
+ int index);
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.NodeInformationProto}
+ */
+ public static final class NodeInformationProto extends
+ com.google.protobuf.GeneratedMessage
+ implements NodeInformationProtoOrBuilder {
+ // Use NodeInformationProto.newBuilder() to construct.
+ private NodeInformationProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private NodeInformationProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final NodeInformationProto defaultInstance;
+ public static NodeInformationProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public NodeInformationProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private NodeInformationProto(
+ 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;
+ hostname_ = input.readBytes();
+ break;
+ }
+ case 18: {
+ bitField0_ |= 0x00000002;
+ state_ = input.readBytes();
+ break;
+ }
+ case 26: {
+ bitField0_ |= 0x00000004;
+ httpAddress_ = input.readBytes();
+ break;
+ }
+ case 34: {
+ bitField0_ |= 0x00000008;
+ rackName_ = input.readBytes();
+ break;
+ }
+ case 42: {
+ bitField0_ |= 0x00000010;
+ labels_ = input.readBytes();
+ break;
+ }
+ case 50: {
+ bitField0_ |= 0x00000020;
+ healthReport_ = input.readBytes();
+ break;
+ }
+ case 56: {
+ bitField0_ |= 0x00000040;
+ lastUpdated_ = input.readInt64();
+ break;
+ }
+ case 66: {
+ if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+ entries_ = new java.util.ArrayList<org.apache.slider.api.proto.Messages.NodeEntryInformationProto>();
+ mutable_bitField0_ |= 0x00000080;
+ }
+ entries_.add(input.readMessage(org.apache.slider.api.proto.Messages.NodeEntryInformationProto.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_ & 0x00000080) == 0x00000080)) {
+ entries_ = java.util.Collections.unmodifiableList(entries_);
+ }
+ 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_NodeInformationProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeInformationProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.NodeInformationProto.class, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<NodeInformationProto> PARSER =
+ new com.google.protobuf.AbstractParser<NodeInformationProto>() {
+ public NodeInformationProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new NodeInformationProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<NodeInformationProto> getParserForType() {
+ return PARSER;
+ }
+
+ private int bitField0_;
+ // required string hostname = 1;
+ public static final int HOSTNAME_FIELD_NUMBER = 1;
+ private java.lang.Object hostname_;
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public boolean hasHostname() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public java.lang.String getHostname() {
+ java.lang.Object ref = hostname_;
+ 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()) {
+ hostname_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getHostnameBytes() {
+ java.lang.Object ref = hostname_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ hostname_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string state = 2;
+ public static final int STATE_FIELD_NUMBER = 2;
+ private java.lang.Object state_;
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public boolean hasState() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public java.lang.String getState() {
+ java.lang.Object ref = state_;
+ 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()) {
+ state_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public com.google.protobuf.ByteString
+ getStateBytes() {
+ java.lang.Object ref = state_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ state_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string httpAddress = 3;
+ public static final int HTTPADDRESS_FIELD_NUMBER = 3;
+ private java.lang.Object httpAddress_;
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public boolean hasHttpAddress() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public java.lang.String getHttpAddress() {
+ java.lang.Object ref = httpAddress_;
+ 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()) {
+ httpAddress_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public com.google.protobuf.ByteString
+ getHttpAddressBytes() {
+ java.lang.Object ref = httpAddress_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ httpAddress_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string rackName = 4;
+ public static final int RACKNAME_FIELD_NUMBER = 4;
+ private java.lang.Object rackName_;
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public boolean hasRackName() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public java.lang.String getRackName() {
+ java.lang.Object ref = rackName_;
+ 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()) {
+ rackName_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public com.google.protobuf.ByteString
+ getRackNameBytes() {
+ java.lang.Object ref = rackName_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ rackName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string labels = 5;
+ public static final int LABELS_FIELD_NUMBER = 5;
+ private java.lang.Object labels_;
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public boolean hasLabels() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public java.lang.String getLabels() {
+ java.lang.Object ref = labels_;
+ 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()) {
+ labels_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public com.google.protobuf.ByteString
+ getLabelsBytes() {
+ java.lang.Object ref = labels_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ labels_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string healthReport = 6;
+ public static final int HEALTHREPORT_FIELD_NUMBER = 6;
+ private java.lang.Object healthReport_;
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public boolean hasHealthReport() {
+ return ((bitField0_ & 0x00000020) == 0x00000020);
+ }
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public java.lang.String getHealthReport() {
+ java.lang.Object ref = healthReport_;
+ 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()) {
+ healthReport_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public com.google.protobuf.ByteString
+ getHealthReportBytes() {
+ java.lang.Object ref = healthReport_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ healthReport_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required int64 lastUpdated = 7;
+ public static final int LASTUPDATED_FIELD_NUMBER = 7;
+ private long lastUpdated_;
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ */
+ public boolean hasLastUpdated() {
+ return ((bitField0_ & 0x00000040) == 0x00000040);
+ }
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ */
+ public long getLastUpdated() {
+ return lastUpdated_;
+ }
+
+ // repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;
+ public static final int ENTRIES_FIELD_NUMBER = 8;
+ private java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto> entries_;
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto> getEntriesList() {
+ return entries_;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<? extends org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>
+ getEntriesOrBuilderList() {
+ return entries_;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public int getEntriesCount() {
+ return entries_.size();
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto getEntries(int index) {
+ return entries_.get(index);
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder getEntriesOrBuilder(
+ int index) {
+ return entries_.get(index);
+ }
+
+ private void initFields() {
+ hostname_ = "";
+ state_ = "";
+ httpAddress_ = "";
+ rackName_ = "";
+ labels_ = "";
+ healthReport_ = "";
+ lastUpdated_ = 0L;
+ entries_ = java.util.Collections.emptyList();
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ if (!hasHostname()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasState()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasHttpAddress()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasRackName()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasLabels()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasHealthReport()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasLastUpdated()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ for (int i = 0; i < getEntriesCount(); i++) {
+ if (!getEntries(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.writeBytes(1, getHostnameBytes());
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ output.writeBytes(2, getStateBytes());
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ output.writeBytes(3, getHttpAddressBytes());
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ output.writeBytes(4, getRackNameBytes());
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ output.writeBytes(5, getLabelsBytes());
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ output.writeBytes(6, getHealthReportBytes());
+ }
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ output.writeInt64(7, lastUpdated_);
+ }
+ for (int i = 0; i < entries_.size(); i++) {
+ output.writeMessage(8, entries_.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
+ .computeBytesSize(1, getHostnameBytes());
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(2, getStateBytes());
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(3, getHttpAddressBytes());
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(4, getRackNameBytes());
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(5, getLabelsBytes());
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(6, getHealthReportBytes());
+ }
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(7, lastUpdated_);
+ }
+ for (int i = 0; i < entries_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(8, entries_.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();
+ }
+
+ @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.NodeInformationProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.NodeInformationProto other = (org.apache.slider.api.proto.Messages.NodeInformationProto) obj;
+
+ boolean result = true;
+ result = result && (hasHostname() == other.hasHostname());
+ if (hasHostname()) {
+ result = result && getHostname()
+ .equals(other.getHostname());
+ }
+ result = result && (hasState() == other.hasState());
+ if (hasState()) {
+ result = result && getState()
+ .equals(other.getState());
+ }
+ result = result && (hasHttpAddress() == other.hasHttpAddress());
+ if (hasHttpAddress()) {
+ result = result && getHttpAddress()
+ .equals(other.getHttpAddress());
+ }
+ result = result && (hasRackName() == other.hasRackName());
+ if (hasRackName()) {
+ result = result && getRackName()
+ .equals(other.getRackName());
+ }
+ result = result && (hasLabels() == other.hasLabels());
+ if (hasLabels()) {
+ result = result && getLabels()
+ .equals(other.getLabels());
+ }
+ result = result && (hasHealthReport() == other.hasHealthReport());
+ if (hasHealthReport()) {
+ result = result && getHealthReport()
+ .equals(other.getHealthReport());
+ }
+ result = result && (hasLastUpdated() == other.hasLastUpdated());
+ if (hasLastUpdated()) {
+ result = result && (getLastUpdated()
+ == other.getLastUpdated());
+ }
+ result = result && getEntriesList()
+ .equals(other.getEntriesList());
+ 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 (hasHostname()) {
+ hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
+ hash = (53 * hash) + getHostname().hashCode();
+ }
+ if (hasState()) {
+ hash = (37 * hash) + STATE_FIELD_NUMBER;
+ hash = (53 * hash) + getState().hashCode();
+ }
+ if (hasHttpAddress()) {
+ hash = (37 * hash) + HTTPADDRESS_FIELD_NUMBER;
+ hash = (53 * hash) + getHttpAddress().hashCode();
+ }
+ if (hasRackName()) {
+ hash = (37 * hash) + RACKNAME_FIELD_NUMBER;
+ hash = (53 * hash) + getRackName().hashCode();
+ }
+ if (hasLabels()) {
+ hash = (37 * hash) + LABELS_FIELD_NUMBER;
+ hash = (53 * hash) + getLabels().hashCode();
+ }
+ if (hasHealthReport()) {
+ hash = (37 * hash) + HEALTHREPORT_FIELD_NUMBER;
+ hash = (53 * hash) + getHealthReport().hashCode();
+ }
+ if (hasLastUpdated()) {
+ hash = (37 * hash) + LASTUPDATED_FIELD_NUMBER;
+ hash = (53 * hash) + hashLong(getLastUpdated());
+ }
+ if (getEntriesCount() > 0) {
+ hash = (37 * hash) + ENTRIES_FIELD_NUMBER;
+ hash = (53 * hash) + getEntriesList().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto 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.NodeInformationProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto 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.NodeInformationProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto 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.NodeInformationProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto 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.NodeInformationProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto 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.NodeInformationProto 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.NodeInformationProto}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeInformationProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeInformationProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.NodeInformationProto.class, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder.class);
+ }
+
+ // Construct using org.apache.slider.api.proto.Messages.NodeInformationProto.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ getEntriesFieldBuilder();
+ }
+ }
+ private static Builder create() {
+ return new Builder();
+ }
+
+ public Builder clear() {
+ super.clear();
+ hostname_ = "";
+ bitField0_ = (bitField0_ & ~0x00000001);
+ state_ = "";
+ bitField0_ = (bitField0_ & ~0x00000002);
+ httpAddress_ = "";
+ bitField0_ = (bitField0_ & ~0x00000004);
+ rackName_ = "";
+ bitField0_ = (bitField0_ & ~0x00000008);
+ labels_ = "";
+ bitField0_ = (bitField0_ & ~0x00000010);
+ healthReport_ = "";
+ bitField0_ = (bitField0_ & ~0x00000020);
+ lastUpdated_ = 0L;
+ bitField0_ = (bitField0_ & ~0x00000040);
+ if (entriesBuilder_ == null) {
+ entries_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000080);
+ } else {
+ entriesBuilder_.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_NodeInformationProto_descriptor;
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getDefaultInstanceForType() {
+ return org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance();
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeInformationProto build() {
+ org.apache.slider.api.proto.Messages.NodeInformationProto result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeInformationProto buildPartial() {
+ org.apache.slider.api.proto.Messages.NodeInformationProto result = new org.apache.slider.api.proto.Messages.NodeInformationProto(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.hostname_ = hostname_;
+ if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+ to_bitField0_ |= 0x00000002;
+ }
+ result.state_ = state_;
+ if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+ to_bitField0_ |= 0x00000004;
+ }
+ result.httpAddress_ = httpAddress_;
+ if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+ to_bitField0_ |= 0x00000008;
+ }
+ result.rackName_ = rackName_;
+ if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+ to_bitField0_ |= 0x00000010;
+ }
+ result.labels_ = labels_;
+ if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+ to_bitField0_ |= 0x00000020;
+ }
+ result.healthReport_ = healthReport_;
+ if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+ to_bitField0_ |= 0x00000040;
+ }
+ result.lastUpdated_ = lastUpdated_;
+ if (entriesBuilder_ == null) {
+ if (((bitField0_ & 0x00000080) == 0x00000080)) {
+ entries_ = java.util.Collections.unmodifiableList(entries_);
+ bitField0_ = (bitField0_ & ~0x00000080);
+ }
+ result.entries_ = entries_;
+ } else {
+ result.entries_ = entriesBuilder_.build();
+ }
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.apache.slider.api.proto.Messages.NodeInformationProto) {
+ return mergeFrom((org.apache.slider.api.proto.Messages.NodeInformationProto)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.apache.slider.api.proto.Messages.NodeInformationProto other) {
+ if (other == org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance()) return this;
+ if (other.hasHostname()) {
+ bitField0_ |= 0x00000001;
+ hostname_ = other.hostname_;
+ onChanged();
+ }
+ if (other.hasState()) {
+ bitField0_ |= 0x00000002;
+ state_ = other.state_;
+ onChanged();
+ }
+ if (other.hasHttpAddress()) {
+ bitField0_ |= 0x00000004;
+ httpAddress_ = other.httpAddress_;
+ onChanged();
+ }
+ if (other.hasRackName()) {
+ bitField0_ |= 0x00000008;
+ rackName_ = other.rackName_;
+ onChanged();
+ }
+ if (other.hasLabels()) {
+ bitField0_ |= 0x00000010;
+ labels_ = other.labels_;
+ onChanged();
+ }
+ if (other.hasHealthReport()) {
+ bitField0_ |= 0x00000020;
+ healthReport_ = other.healthReport_;
+ onChanged();
+ }
+ if (other.hasLastUpdated()) {
+ setLastUpdated(other.getLastUpdated());
+ }
+ if (entriesBuilder_ == null) {
+ if (!other.entries_.isEmpty()) {
+ if (entries_.isEmpty()) {
+ entries_ = other.entries_;
+ bitField0_ = (bitField0_ & ~0x00000080);
+ } else {
+ ensureEntriesIsMutable();
+ entries_.addAll(other.entries_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.entries_.isEmpty()) {
+ if (entriesBuilder_.isEmpty()) {
+ entriesBuilder_.dispose();
+ entriesBuilder_ = null;
+ entries_ = other.entries_;
+ bitField0_ = (bitField0_ & ~0x00000080);
+ entriesBuilder_ =
+ com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+ getEntriesFieldBuilder() : null;
+ } else {
+ entriesBuilder_.addAllMessages(other.entries_);
+ }
+ }
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ if (!hasHostname()) {
+
+ return false;
+ }
+ if (!hasState()) {
+
+ return false;
+ }
+ if (!hasHttpAddress()) {
+
+ return false;
+ }
+ if (!hasRackName()) {
+
+ return false;
+ }
+ if (!hasLabels()) {
+
+ return false;
+ }
+ if (!hasHealthReport()) {
+
+ return false;
+ }
+ if (!hasLastUpdated()) {
+
+ return false;
+ }
+ for (int i = 0; i < getEntriesCount(); i++) {
+ if (!getEntries(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.slider.api.proto.Messages.NodeInformationProto parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.apache.slider.api.proto.Messages.NodeInformationProto) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ // required string hostname = 1;
+ private java.lang.Object hostname_ = "";
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public boolean hasHostname() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public java.lang.String getHostname() {
+ java.lang.Object ref = hostname_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ hostname_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getHostnameBytes() {
+ java.lang.Object ref = hostname_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ hostname_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public Builder setHostname(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ hostname_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public Builder clearHostname() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ hostname_ = getDefaultInstance().getHostname();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public Builder setHostnameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ hostname_ = value;
+ onChanged();
+ return this;
+ }
+
+ // required string state = 2;
+ private java.lang.Object state_ = "";
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public boolean hasState() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public java.lang.String getState() {
+ java.lang.Object ref = state_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ state_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public com.google.protobuf.ByteString
+ getStateBytes() {
+ java.lang.Object ref = state_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ state_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public Builder setState(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ state_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public Builder clearState() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ state_ = getDefaultInstance().getState();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public Builder setStateBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ state_ = value;
+ onChanged();
+ return this;
+ }
+
+ // required string httpAddress = 3;
+ private java.lang.Object httpAddress_ = "";
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public boolean hasHttpAddress() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public java.lang.String getHttpAddress() {
+ java.lang.Object ref = httpAddress_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ httpAddress_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public com.google.protobuf.ByteString
+ getHttpAddressBytes() {
+ java.lang.Object ref = httpAddress_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ httpAddress_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public Builder setHttpAddress(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000004;
+ httpAddress_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public Builder clearHttpAddress() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ httpAddress_ = getDefaultInstance().getHttpAddress();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public Builder setHttpAddressBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000004;
+ httpAddress_ = value;
+ onChanged();
+ return this;
+ }
+
+ // required string rackName = 4;
+ private java.lang.Object rackName_ = "";
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public boolean hasRackName() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public java.lang.String getRackName() {
+ java.lang.Object ref = rackName_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ rackName_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public com.google.protobuf.ByteString
+ getRackNameBytes() {
+ java.lang.Object ref = rackName_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ rackName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public Builder setRackName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000008;
+ rackName_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public Builder clearRackName() {
+ bitField0_ = (bitField0_ & ~0x00000008);
+ rackName_ = getDefaultInstance().getRackName();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public Builder setRackNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000008;
+ rackName_ = value;
+ onChanged();
+ return this;
+ }
+
+ // required string labels = 5;
+ private java.lang.Object labels_ = "";
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public boolean hasLabels() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public java.lang.String getLabels() {
+ java.lang.Object ref = labels_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ labels_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public com.google.protobuf.ByteString
+ getLabelsBytes() {
+ java.lang.Object ref = labels_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ labels_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public Builder setLabels(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000010;
+ labels_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public Builder clearLabels() {
+ bitField0_ = (bitField0_ & ~0x00000010);
+ labels_ = getDefaultInstance().getLabels();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public Builder setLabelsBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000010;
+ labels_ = value;
+ onChanged();
+ return this;
+ }
+
+ // required string healthReport = 6;
+ private java.lang.Object healthReport_ = "";
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public boolean hasHealthReport() {
+ return ((bitField0_ & 0x00000020) == 0x00000020);
+ }
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public java.lang.String getHealthReport() {
+ java.lang.Object ref = healthReport_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ healthReport_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public com.google.protobuf.ByteString
+ getHealthReportBytes() {
+ java.lang.Object ref = healthReport_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ healthReport_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public Builder setHealthReport(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000020;
+ healthReport_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public Builder clearHealthReport() {
+ bitField0_ = (bitField0_ & ~0x00000020);
+ healthReport_ = getDefaultInstance().getHealthReport();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public Builder setHealthReportBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000020;
+ healthReport_ = value;
+ onChanged();
+ return this;
+ }
+
+ // required int64 lastUpdated = 7;
+ private long lastUpdated_ ;
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ */
+ public boolean hasLastUpdated() {
+ return ((bitField0_ & 0x00000040) == 0x00000040);
+ }
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ */
+ public long getLastUpdated() {
+ return lastUpdated_;
+ }
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ */
+ public Builder setLastUpdated(long value) {
+ bitField0_ |= 0x00000040;
+ lastUpdated_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ */
+ public Builder clearLastUpdated() {
+ bitField0_ = (bitField0_ & ~0x00000040);
+ lastUpdated_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ // repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;
+ private java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto> entries_ =
+ java.util.Collections.emptyList();
+ private void ensureEntriesIsMutable() {
+ if (!((bitField0_ & 0x00000080) == 0x00000080)) {
+ entries_ = new java.util.ArrayList<org.apache.slider.api.proto.Messages.NodeEntryInformationProto>(entries_);
+ bitField0_ |= 0x00000080;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder> entriesBuilder_;
+
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto> getEntriesList() {
+ if (entriesBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(entries_);
+ } else {
+ return entriesBuilder_.getMessageList();
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public int getEntriesCount() {
+ if (entriesBuilder_ == null) {
+ return entries_.size();
+ } else {
+ return entriesBuilder_.getCount();
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto getEntries(int index) {
+ if (entriesBuilder_ == null) {
+ return entries_.get(index);
+ } else {
+ return entriesBuilder_.getMessage(index);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder setEntries(
+ int index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto value) {
+ if (entriesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEntriesIsMutable();
+ entries_.set(index, value);
+ onChanged();
+ } else {
+ entriesBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder setEntries(
+ int index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder builderForValue) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ entries_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ entriesBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addEntries(org.apache.slider.api.proto.Messages.NodeEntryInformationProto value) {
+ if (entriesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEntriesIsMutable();
+ entries_.add(value);
+ onChanged();
+ } else {
+ entriesBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addEntries(
+ int index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto value) {
+ if (entriesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEntriesIsMutable();
+ entries_.add(index, value);
+ onChanged();
+ } else {
+ entriesBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addEntries(
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder builderForValue) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ entries_.add(builderForValue.build());
+ onChanged();
+ } else {
+ entriesBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addEntries(
+ int index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder builderForValue) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ entries_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ entriesBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addAllEntries(
+ java.lang.Iterable<? extends org.apache.slider.api.proto.Messages.NodeEntryInformationProto> values) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ super.addAll(values, entries_);
+ onChanged();
+ } else {
+ entriesBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder clearEntries() {
+ if (entriesBuilder_ == null) {
+ entries_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000080);
+ onChanged();
+ } else {
+ entriesBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder removeEntries(int index) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ entries_.remove(index);
+ onChanged();
+ } else {
+ entriesBuilder_.remove(index);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder getEntriesBuilder(
+ int index) {
+ return getEntriesFieldBuilder().getBuilder(index);
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder getEntriesOrBuilder(
+ int index) {
+ if (entriesBuilder_ == null) {
+ return entries_.get(index); } else {
+ return entriesBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<? extends org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>
+ getEntriesOrBuilderList() {
+ if (entriesBuilder_ != null) {
+ return entriesBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(entries_);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder addEntriesBuilder() {
+ return getEntriesFieldBuilder().addBuilder(
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder addEntriesBuilder(
+ int index) {
+ return getEntriesFieldBuilder().addBuilder(
+ index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder>
+ getEntriesBuilderList() {
+ return getEntriesFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>
+ getEntriesFieldBuilder() {
+ if (entriesBuilder_ == null) {
+ entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>(
+ entries_,
+ ((bitField0_ & 0x00000080) == 0x00000080),
+ getParentForChildren(),
+ isClean());
+ entries_ = null;
+ }
+ return entriesBuilder_;
+ }
+
+ // @@protoc_insertion_point(builder_scope:org.apache.slider.api.NodeInformationProto)
+ }
+
+ static {
+ defaultInstance = new NodeInformationProto(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:org.apache.slider.api.NodeInformationProto)
+ }
+
public interface GetModelRequestProtoOrBuilder
extends com.google.protobuf.MessageOrBuilder {
}
@@ -28684,6 +31958,1773 @@
// @@protoc_insertion_point(class_scope:org.apache.slider.api.GetCertificateStoreResponseProto)
}
+ public interface GetLiveNodesRequestProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.GetLiveNodesRequestProto}
+ */
+ public static final class GetLiveNodesRequestProto extends
+ com.google.protobuf.GeneratedMessage
+ implements GetLiveNodesRequestProtoOrBuilder {
+ // Use GetLiveNodesRequestProto.newBuilder() to construct.
+ private GetLiveNodesRequestProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private GetLiveNodesRequestProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final GetLiveNodesRequestProto defaultInstance;
+ public static GetLiveNodesRequestProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public GetLiveNodesRequestProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private GetLiveNodesRequestProto(
+ 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_GetLiveNodesRequestProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesRequestProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.class, org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<GetLiveNodesRequestProto> PARSER =
+ new com.google.protobuf.AbstractParser<GetLiveNodesRequestProto>() {
+ public GetLiveNodesRequestProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new GetLiveNodesRequestProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<GetLiveNodesRequestProto> 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.GetLiveNodesRequestProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto other = (org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto) 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.GetLiveNodesRequestProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto 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.GetLiveNodesRequestProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto 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.GetLiveNodesRequestProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto 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.GetLiveNodesRequestProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto 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.GetLiveNodesRequestProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto 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.GetLiveNodesRequestProto 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.GetLiveNodesRequestProto}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements org.apache.slider.api.proto.Messages.GetLiveNodesRequestProtoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesRequestProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesRequestProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.class, org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.Builder.class);
+ }
+
+ // Construct using org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.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_GetLiveNodesRequestProto_descriptor;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto getDefaultInstanceForType() {
+ return org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.getDefaultInstance();
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto build() {
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto buildPartial() {
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto result = new org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto(this);
+ onBuilt();
+ return result;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto) {
+ return mergeFrom((org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto other) {
+ if (other == org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.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.GetLiveNodesRequestProto parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:org.apache.slider.api.GetLiveNodesRequestProto)
+ }
+
+ static {
+ defaultInstance = new GetLiveNodesRequestProto(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:org.apache.slider.api.GetLiveNodesRequestProto)
+ }
+
+ public interface GetLiveNodesResponseProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // repeated string names = 1;
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ java.util.List<java.lang.String>
+ getNamesList();
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ int getNamesCount();
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ java.lang.String getNames(int index);
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ com.google.protobuf.ByteString
+ getNamesBytes(int index);
+
+ // repeated .org.apache.slider.api.NodeInformationProto nodes = 2;
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto>
+ getNodesList();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ org.apache.slider.api.proto.Messages.NodeInformationProto getNodes(int index);
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ int getNodesCount();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ java.util.List<? extends org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>
+ getNodesOrBuilderList();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder getNodesOrBuilder(
+ int index);
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.GetLiveNodesResponseProto}
+ */
+ public static final class GetLiveNodesResponseProto extends
+ com.google.protobuf.GeneratedMessage
+ implements GetLiveNodesResponseProtoOrBuilder {
+ // Use GetLiveNodesResponseProto.newBuilder() to construct.
+ private GetLiveNodesResponseProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private GetLiveNodesResponseProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final GetLiveNodesResponseProto defaultInstance;
+ public static GetLiveNodesResponseProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public GetLiveNodesResponseProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private GetLiveNodesResponseProto(
+ 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)) {
+ names_ = new com.google.protobuf.LazyStringArrayList();
+ mutable_bitField0_ |= 0x00000001;
+ }
+ names_.add(input.readBytes());
+ break;
+ }
+ case 18: {
+ if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+ nodes_ = new java.util.ArrayList<org.apache.slider.api.proto.Messages.NodeInformationProto>();
+ mutable_bitField0_ |= 0x00000002;
+ }
+ nodes_.add(input.readMessage(org.apache.slider.api.proto.Messages.NodeInformationProto.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)) {
+ names_ = new com.google.protobuf.UnmodifiableLazyStringList(names_);
+ }
+ if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+ nodes_ = java.util.Collections.unmodifiableList(nodes_);
+ }
+ 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_GetLiveNodesResponseProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesResponseProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.class, org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<GetLiveNodesResponseProto> PARSER =
+ new com.google.protobuf.AbstractParser<GetLiveNodesResponseProto>() {
+ public GetLiveNodesResponseProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new GetLiveNodesResponseProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<GetLiveNodesResponseProto> getParserForType() {
+ return PARSER;
+ }
+
+ // repeated string names = 1;
+ public static final int NAMES_FIELD_NUMBER = 1;
+ private com.google.protobuf.LazyStringList names_;
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public java.util.List<java.lang.String>
+ getNamesList() {
+ return names_;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public int getNamesCount() {
+ return names_.size();
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public java.lang.String getNames(int index) {
+ return names_.get(index);
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNamesBytes(int index) {
+ return names_.getByteString(index);
+ }
+
+ // repeated .org.apache.slider.api.NodeInformationProto nodes = 2;
+ public static final int NODES_FIELD_NUMBER = 2;
+ private java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto> nodes_;
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto> getNodesList() {
+ return nodes_;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<? extends org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>
+ getNodesOrBuilderList() {
+ return nodes_;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public int getNodesCount() {
+ return nodes_.size();
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getNodes(int index) {
+ return nodes_.get(index);
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder getNodesOrBuilder(
+ int index) {
+ return nodes_.get(index);
+ }
+
+ private void initFields() {
+ names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ nodes_ = 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 < getNodesCount(); i++) {
+ if (!getNodes(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 < names_.size(); i++) {
+ output.writeBytes(1, names_.getByteString(i));
+ }
+ for (int i = 0; i < nodes_.size(); i++) {
+ output.writeMessage(2, nodes_.get(i));
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ {
+ int dataSize = 0;
+ for (int i = 0; i < names_.size(); i++) {
+ dataSize += com.google.protobuf.CodedOutputStream
+ .computeBytesSizeNoTag(names_.getByteString(i));
+ }
+ size += dataSize;
+ size += 1 * getNamesList().size();
+ }
+ for (int i = 0; i < nodes_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(2, nodes_.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();
+ }
+
+ @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.GetLiveNodesResponseProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto other = (org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto) obj;
+
+ boolean result = true;
+ result = result && getNamesList()
+ .equals(other.getNamesList());
+ result = result && getNodesList()
+ .equals(other.getNodesList());
+ 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 (getNamesCount() > 0) {
+ hash = (37 * hash) + NAMES_FIELD_NUMBER;
+ hash = (53 * hash) + getNamesList().hashCode();
+ }
+ if (getNodesCount() > 0) {
+ hash = (37 * hash) + NODES_FIELD_NUMBER;
+ hash = (53 * hash) + getNodesList().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto 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.GetLiveNodesResponseProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto 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.GetLiveNodesResponseProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto 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.GetLiveNodesResponseProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto 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.GetLiveNodesResponseProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto 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.GetLiveNodesResponseProto 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.GetLiveNodesResponseProto}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements org.apache.slider.api.proto.Messages.GetLiveNodesResponseProtoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesResponseProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesResponseProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.class, org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.Builder.class);
+ }
+
+ // Construct using org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ getNodesFieldBuilder();
+ }
+ }
+ private static Builder create() {
+ return new Builder();
+ }
+
+ public Builder clear() {
+ super.clear();
+ names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ if (nodesBuilder_ == null) {
+ nodes_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000002);
+ } else {
+ nodesBuilder_.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_GetLiveNodesResponseProto_descriptor;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto getDefaultInstanceForType() {
+ return org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance();
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto build() {
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto buildPartial() {
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto result = new org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto(this);
+ int from_bitField0_ = bitField0_;
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ names_ = new com.google.protobuf.UnmodifiableLazyStringList(
+ names_);
+ bitField0_ = (bitField0_ & ~0x00000001);
+ }
+ result.names_ = names_;
+ if (nodesBuilder_ == null) {
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ nodes_ = java.util.Collections.unmodifiableList(nodes_);
+ bitField0_ = (bitField0_ & ~0x00000002);
+ }
+ result.nodes_ = nodes_;
+ } else {
+ result.nodes_ = nodesBuilder_.build();
+ }
+ onBuilt();
+ return result;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto) {
+ return mergeFrom((org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto other) {
+ if (other == org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance()) return this;
+ if (!other.names_.isEmpty()) {
+ if (names_.isEmpty()) {
+ names_ = other.names_;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ } else {
+ ensureNamesIsMutable();
+ names_.addAll(other.names_);
+ }
+ onChanged();
+ }
+ if (nodesBuilder_ == null) {
+ if (!other.nodes_.isEmpty()) {
+ if (nodes_.isEmpty()) {
+ nodes_ = other.nodes_;
+ bitField0_ = (bitField0_ & ~0x00000002);
+ } else {
+ ensureNodesIsMutable();
+ nodes_.addAll(other.nodes_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.nodes_.isEmpty()) {
+ if (nodesBuilder_.isEmpty()) {
+ nodesBuilder_.dispose();
+ nodesBuilder_ = null;
+ nodes_ = other.nodes_;
+ bitField0_ = (bitField0_ & ~0x00000002);
+ nodesBuilder_ =
+ com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+ getNodesFieldBuilder() : null;
+ } else {
+ nodesBuilder_.addAllMessages(other.nodes_);
+ }
+ }
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ for (int i = 0; i < getNodesCount(); i++) {
+ if (!getNodes(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.slider.api.proto.Messages.GetLiveNodesResponseProto parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ // repeated string names = 1;
+ private com.google.protobuf.LazyStringList names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ private void ensureNamesIsMutable() {
+ if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+ names_ = new com.google.protobuf.LazyStringArrayList(names_);
+ bitField0_ |= 0x00000001;
+ }
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public java.util.List<java.lang.String>
+ getNamesList() {
+ return java.util.Collections.unmodifiableList(names_);
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public int getNamesCount() {
+ return names_.size();
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public java.lang.String getNames(int index) {
+ return names_.get(index);
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNamesBytes(int index) {
+ return names_.getByteString(index);
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder setNames(
+ int index, java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNamesIsMutable();
+ names_.set(index, value);
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder addNames(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNamesIsMutable();
+ names_.add(value);
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder addAllNames(
+ java.lang.Iterable<java.lang.String> values) {
+ ensureNamesIsMutable();
+ super.addAll(values, names_);
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder clearNames() {
+ names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder addNamesBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNamesIsMutable();
+ names_.add(value);
+ onChanged();
+ return this;
+ }
+
+ // repeated .org.apache.slider.api.NodeInformationProto nodes = 2;
+ private java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto> nodes_ =
+ java.util.Collections.emptyList();
+ private void ensureNodesIsMutable() {
+ if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+ nodes_ = new java.util.ArrayList<org.apache.slider.api.proto.Messages.NodeInformationProto>(nodes_);
+ bitField0_ |= 0x00000002;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeInformationProto, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder> nodesBuilder_;
+
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto> getNodesList() {
+ if (nodesBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(nodes_);
+ } else {
+ return nodesBuilder_.getMessageList();
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public int getNodesCount() {
+ if (nodesBuilder_ == null) {
+ return nodes_.size();
+ } else {
+ return nodesBuilder_.getCount();
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getNodes(int index) {
+ if (nodesBuilder_ == null) {
+ return nodes_.get(index);
+ } else {
+ return nodesBuilder_.getMessage(index);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder setNodes(
+ int index, org.apache.slider.api.proto.Messages.NodeInformationProto value) {
+ if (nodesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNodesIsMutable();
+ nodes_.set(index, value);
+ onChanged();
+ } else {
+ nodesBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder setNodes(
+ int index, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder builderForValue) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ nodes_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ nodesBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addNodes(org.apache.slider.api.proto.Messages.NodeInformationProto value) {
+ if (nodesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNodesIsMutable();
+ nodes_.add(value);
+ onChanged();
+ } else {
+ nodesBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addNodes(
+ int index, org.apache.slider.api.proto.Messages.NodeInformationProto value) {
+ if (nodesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNodesIsMutable();
+ nodes_.add(index, value);
+ onChanged();
+ } else {
+ nodesBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addNodes(
+ org.apache.slider.api.proto.Messages.NodeInformationProto.Builder builderForValue) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ nodes_.add(builderForValue.build());
+ onChanged();
+ } else {
+ nodesBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addNodes(
+ int index, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder builderForValue) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ nodes_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ nodesBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addAllNodes(
+ java.lang.Iterable<? extends org.apache.slider.api.proto.Messages.NodeInformationProto> values) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ super.addAll(values, nodes_);
+ onChanged();
+ } else {
+ nodesBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder clearNodes() {
+ if (nodesBuilder_ == null) {
+ nodes_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000002);
+ onChanged();
+ } else {
+ nodesBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder removeNodes(int index) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ nodes_.remove(index);
+ onChanged();
+ } else {
+ nodesBuilder_.remove(index);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto.Builder getNodesBuilder(
+ int index) {
+ return getNodesFieldBuilder().getBuilder(index);
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder getNodesOrBuilder(
+ int index) {
+ if (nodesBuilder_ == null) {
+ return nodes_.get(index); } else {
+ return nodesBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<? extends org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>
+ getNodesOrBuilderList() {
+ if (nodesBuilder_ != null) {
+ return nodesBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(nodes_);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto.Builder addNodesBuilder() {
+ return getNodesFieldBuilder().addBuilder(
+ org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto.Builder addNodesBuilder(
+ int index) {
+ return getNodesFieldBuilder().addBuilder(
+ index, org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto.Builder>
+ getNodesBuilderList() {
+ return getNodesFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeInformationProto, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>
+ getNodesFieldBuilder() {
+ if (nodesBuilder_ == null) {
+ nodesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeInformationProto, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>(
+ nodes_,
+ ((bitField0_ & 0x00000002) == 0x00000002),
+ getParentForChildren(),
+ isClean());
+ nodes_ = null;
+ }
+ return nodesBuilder_;
+ }
+
+ // @@protoc_insertion_point(builder_scope:org.apache.slider.api.GetLiveNodesResponseProto)
+ }
+
+ static {
+ defaultInstance = new GetLiveNodesResponseProto(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:org.apache.slider.api.GetLiveNodesResponseProto)
+ }
+
+ public interface GetLiveNodeRequestProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // required string name = 1;
+ /**
+ * <code>required string name = 1;</code>
+ */
+ boolean hasName();
+ /**
+ * <code>required string name = 1;</code>
+ */
+ java.lang.String getName();
+ /**
+ * <code>required string name = 1;</code>
+ */
+ com.google.protobuf.ByteString
+ getNameBytes();
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.GetLiveNodeRequestProto}
+ */
+ public static final class GetLiveNodeRequestProto extends
+ com.google.protobuf.GeneratedMessage
+ implements GetLiveNodeRequestProtoOrBuilder {
+ // Use GetLiveNodeRequestProto.newBuilder() to construct.
+ private GetLiveNodeRequestProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private GetLiveNodeRequestProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final GetLiveNodeRequestProto defaultInstance;
+ public static GetLiveNodeRequestProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public GetLiveNodeRequestProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private GetLiveNodeRequestProto(
+ 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;
+ name_ = 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_GetLiveNodeRequestProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodeRequestProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.class, org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<GetLiveNodeRequestProto> PARSER =
+ new com.google.protobuf.AbstractParser<GetLiveNodeRequestProto>() {
+ public GetLiveNodeRequestProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new GetLiveNodeRequestProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<GetLiveNodeRequestProto> getParserForType() {
+ return PARSER;
+ }
+
+ private int bitField0_;
+ // required string name = 1;
+ public static final int NAME_FIELD_NUMBER = 1;
+ private java.lang.Object name_;
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public boolean hasName() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ 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()) {
+ name_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private void initFields() {
+ name_ = "";
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ if (!hasName()) {
+ 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, getNameBytes());
+ }
+ 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, getNameBytes());
+ }
+ 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.GetLiveNodeRequestProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto other = (org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto) obj;
+
+ boolean result = true;
+ result = result && (hasName() == other.hasName());
+ if (hasName()) {
+ result = result && getName()
+ .equals(other.getName());
+ }
+ 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 (hasName()) {
+ hash = (37 * hash) + NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getName().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto 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.GetLiveNodeRequestProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto 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.GetLiveNodeRequestProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto 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.GetLiveNodeRequestProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto 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.GetLiveNodeRequestProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto 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.GetLiveNodeRequestProto 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.GetLiveNodeRequestProto}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements org.apache.slider.api.proto.Messages.GetLiveNodeRequestProtoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodeRequestProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodeRequestProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.class, org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.Builder.class);
+ }
+
+ // Construct using org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.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();
+ name_ = "";
+ 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_GetLiveNodeRequestProto_descriptor;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto getDefaultInstanceForType() {
+ return org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.getDefaultInstance();
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto build() {
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto buildPartial() {
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto result = new org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.name_ = name_;
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto) {
+ return mergeFrom((org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto other) {
+ if (other == org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.getDefaultInstance()) return this;
+ if (other.hasName()) {
+ bitField0_ |= 0x00000001;
+ name_ = other.name_;
+ onChanged();
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ if (!hasName()) {
+
+ 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.GetLiveNodeRequestProto parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ // required string name = 1;
+ private java.lang.Object name_ = "";
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public boolean hasName() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ name_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public Builder setName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ name_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public Builder clearName() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ name_ = getDefaultInstance().getName();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public Builder setNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ name_ = value;
+ onChanged();
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:org.apache.slider.api.GetLiveNodeRequestProto)
+ }
+
+ static {
+ defaultInstance = new GetLiveNodeRequestProto(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:org.apache.slider.api.GetLiveNodeRequestProto)
+ }
+
private static com.google.protobuf.Descriptors.Descriptor
internal_static_org_apache_slider_api_RoleInstanceState_descriptor;
private static
@@ -28820,6 +33861,16 @@
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_apache_slider_api_PingInformationProto_fieldAccessorTable;
private static com.google.protobuf.Descriptors.Descriptor
+ internal_static_org_apache_slider_api_NodeEntryInformationProto_descriptor;
+ private static
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_org_apache_slider_api_NodeEntryInformationProto_fieldAccessorTable;
+ private static com.google.protobuf.Descriptors.Descriptor
+ internal_static_org_apache_slider_api_NodeInformationProto_descriptor;
+ private static
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_org_apache_slider_api_NodeInformationProto_fieldAccessorTable;
+ private static com.google.protobuf.Descriptors.Descriptor
internal_static_org_apache_slider_api_GetModelRequestProto_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
@@ -28909,6 +33960,21 @@
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_fieldAccessorTable;
+ private static com.google.protobuf.Descriptors.Descriptor
+ internal_static_org_apache_slider_api_GetLiveNodesRequestProto_descriptor;
+ private static
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_org_apache_slider_api_GetLiveNodesRequestProto_fieldAccessorTable;
+ private static com.google.protobuf.Descriptors.Descriptor
+ internal_static_org_apache_slider_api_GetLiveNodesResponseProto_descriptor;
+ private static
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_org_apache_slider_api_GetLiveNodesResponseProto_fieldAccessorTable;
+ private static com.google.protobuf.Descriptors.Descriptor
+ internal_static_org_apache_slider_api_GetLiveNodeRequestProto_descriptor;
+ private static
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_org_apache_slider_api_GetLiveNodeRequestProto_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() {
@@ -28957,7 +34023,7 @@
" \002(\t\022\023\n\013application\030\003 \002(\t\"`\n#Application" +
"LivenessInformationProto\022\034\n\024allRequestsS" +
"atisfied\030\001 \001(\010\022\033\n\023requestsOutstanding\030\002 " +
- "\001(\005\"\347\002\n\031ComponentInformationProto\022\014\n\004nam",
+ "\001(\005\"\216\003\n\031ComponentInformationProto\022\014\n\004nam",
"e\030\001 \001(\t\022\020\n\010priority\030\002 \001(\005\022\017\n\007desired\030\003 \001" +
"(\005\022\016\n\006actual\030\004 \001(\005\022\021\n\treleasing\030\005 \001(\005\022\021\n" +
"\trequested\030\006 \001(\005\022\016\n\006failed\030\007 \001(\005\022\017\n\007star" +
@@ -28966,39 +34032,55 @@
"lureMessage\030\014 \001(\t\022\027\n\017placementPolicy\030\r \001" +
"(\005\022\022\n\ncontainers\030\016 \003(\t\022\026\n\016failedRecently" +
"\030\017 \001(\005\022\022\n\nnodeFailed\030\020 \001(\005\022\021\n\tpreempted\030" +
- "\021 \001(\005\"\210\002\n\031ContainerInformationProto\022\023\n\013c" +
- "ontainerId\030\001 \001(\t\022\021\n\tcomponent\030\002 \001(\t\022\020\n\010r",
- "eleased\030\003 \001(\010\022\r\n\005state\030\004 \001(\005\022\020\n\010exitCode" +
- "\030\005 \001(\005\022\023\n\013diagnostics\030\006 \001(\t\022\022\n\ncreateTim" +
- "e\030\007 \001(\003\022\021\n\tstartTime\030\010 \001(\003\022\016\n\006output\030\t \003" +
- "(\t\022\014\n\004host\030\n \001(\t\022\017\n\007hostURL\030\013 \001(\t\022\021\n\tpla" +
- "cement\030\014 \001(\t\022\022\n\nappVersion\030\r \001(\t\"N\n\024Ping" +
- "InformationProto\022\014\n\004text\030\001 \001(\t\022\014\n\004verb\030\002" +
- " \001(\t\022\014\n\004body\030\003 \001(\t\022\014\n\004time\030\004 \001(\003\"\026\n\024GetM" +
- "odelRequestProto\"\035\n\033GetModelDesiredReque" +
- "stProto\"$\n\"GetModelDesiredAppconfRequest" +
- "Proto\"&\n$GetModelDesiredResourcesRequest",
- "Proto\"%\n#GetModelResolvedAppconfRequestP" +
- "roto\"\'\n%GetModelResolvedResourcesRequest" +
- "Proto\"#\n!GetModelLiveResourcesRequestPro" +
- "to\"\037\n\035GetLiveContainersRequestProto\"u\n\036G" +
- "etLiveContainersResponseProto\022\r\n\005names\030\001" +
- " \003(\t\022D\n\ncontainers\030\002 \003(\01320.org.apache.sl" +
- "ider.api.ContainerInformationProto\"3\n\034Ge" +
- "tLiveContainerRequestProto\022\023\n\013containerI" +
- "d\030\001 \002(\t\"\037\n\035GetLiveComponentsRequestProto" +
- "\"u\n\036GetLiveComponentsResponseProto\022\r\n\005na",
- "mes\030\001 \003(\t\022D\n\ncomponents\030\002 \003(\01320.org.apac" +
- "he.slider.api.ComponentInformationProto\"" +
- ",\n\034GetLiveComponentRequestProto\022\014\n\004name\030" +
- "\001 \002(\t\"$\n\"GetApplicationLivenessRequestPr" +
- "oto\"\023\n\021EmptyPayloadProto\" \n\020WrappedJsonP" +
- "roto\022\014\n\004json\030\001 \002(\t\"h\n\037GetCertificateStor" +
- "eRequestProto\022\020\n\010hostname\030\001 \001(\t\022\023\n\013reque" +
- "sterId\030\002 \002(\t\022\020\n\010password\030\003 \002(\t\022\014\n\004type\030\004" +
- " \002(\t\"1\n GetCertificateStoreResponseProto" +
- "\022\r\n\005store\030\001 \002(\014B-\n\033org.apache.slider.api",
- ".protoB\010Messages\210\001\001\240\001\001"
+ "\021 \001(\005\022%\n\035pendingAntiAffineRequestCount\030\022" +
+ " \001(\005\"\210\002\n\031ContainerInformationProto\022\023\n\013co",
+ "ntainerId\030\001 \001(\t\022\021\n\tcomponent\030\002 \001(\t\022\020\n\010re" +
+ "leased\030\003 \001(\010\022\r\n\005state\030\004 \001(\005\022\020\n\010exitCode\030" +
+ "\005 \001(\005\022\023\n\013diagnostics\030\006 \001(\t\022\022\n\ncreateTime" +
+ "\030\007 \001(\003\022\021\n\tstartTime\030\010 \001(\003\022\016\n\006output\030\t \003(" +
+ "\t\022\014\n\004host\030\n \001(\t\022\017\n\007hostURL\030\013 \001(\t\022\021\n\tplac" +
+ "ement\030\014 \001(\t\022\022\n\nappVersion\030\r \001(\t\"N\n\024PingI" +
+ "nformationProto\022\014\n\004text\030\001 \001(\t\022\014\n\004verb\030\002 " +
+ "\001(\t\022\014\n\004body\030\003 \001(\t\022\014\n\004time\030\004 \001(\003\"\325\001\n\031Node" +
+ "EntryInformationProto\022\020\n\010priority\030\001 \002(\005\022" +
+ "\021\n\trequested\030\002 \002(\005\022\020\n\010starting\030\003 \002(\005\022\023\n\013",
+ "startFailed\030\004 \002(\005\022\016\n\006failed\030\005 \002(\005\022\026\n\016fai" +
+ "ledRecently\030\006 \002(\005\022\021\n\tpreempted\030\007 \002(\005\022\014\n\004" +
+ "live\030\010 \002(\005\022\021\n\treleasing\030\t \002(\005\022\020\n\010lastUse" +
+ "d\030\n \002(\003\"\334\001\n\024NodeInformationProto\022\020\n\010host" +
+ "name\030\001 \002(\t\022\r\n\005state\030\002 \002(\t\022\023\n\013httpAddress" +
+ "\030\003 \002(\t\022\020\n\010rackName\030\004 \002(\t\022\016\n\006labels\030\005 \002(\t" +
+ "\022\024\n\014healthReport\030\006 \002(\t\022\023\n\013lastUpdated\030\007 " +
+ "\002(\003\022A\n\007entries\030\010 \003(\01320.org.apache.slider" +
+ ".api.NodeEntryInformationProto\"\026\n\024GetMod" +
+ "elRequestProto\"\035\n\033GetModelDesiredRequest",
+ "Proto\"$\n\"GetModelDesiredAppconfRequestPr" +
+ "oto\"&\n$GetModelDesiredResourcesRequestPr" +
+ "oto\"%\n#GetModelResolvedAppconfRequestPro" +
+ "to\"\'\n%GetModelResolvedResourcesRequestPr" +
+ "oto\"#\n!GetModelLiveResourcesRequestProto" +
+ "\"\037\n\035GetLiveContainersRequestProto\"u\n\036Get" +
+ "LiveContainersResponseProto\022\r\n\005names\030\001 \003" +
+ "(\t\022D\n\ncontainers\030\002 \003(\01320.org.apache.slid" +
+ "er.api.ContainerInformationProto\"3\n\034GetL" +
+ "iveContainerRequestProto\022\023\n\013containerId\030",
+ "\001 \002(\t\"\037\n\035GetLiveComponentsRequestProto\"u" +
+ "\n\036GetLiveComponentsResponseProto\022\r\n\005name" +
+ "s\030\001 \003(\t\022D\n\ncomponents\030\002 \003(\01320.org.apache" +
+ ".slider.api.ComponentInformationProto\",\n" +
+ "\034GetLiveComponentRequestProto\022\014\n\004name\030\001 " +
+ "\002(\t\"$\n\"GetApplicationLivenessRequestProt" +
+ "o\"\023\n\021EmptyPayloadProto\" \n\020WrappedJsonPro" +
+ "to\022\014\n\004json\030\001 \002(\t\"h\n\037GetCertificateStoreR" +
+ "equestProto\022\020\n\010hostname\030\001 \001(\t\022\023\n\013request" +
+ "erId\030\002 \002(\t\022\020\n\010password\030\003 \002(\t\022\014\n\004type\030\004 \002",
+ "(\t\"1\n GetCertificateStoreResponseProto\022\r" +
+ "\n\005store\030\001 \002(\014\"\032\n\030GetLiveNodesRequestProt" +
+ "o\"f\n\031GetLiveNodesResponseProto\022\r\n\005names\030" +
+ "\001 \003(\t\022:\n\005nodes\030\002 \003(\0132+.org.apache.slider" +
+ ".api.NodeInformationProto\"\'\n\027GetLiveNode" +
+ "RequestProto\022\014\n\004name\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() {
@@ -29154,7 +34236,7 @@
internal_static_org_apache_slider_api_ComponentInformationProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_ComponentInformationProto_descriptor,
- new java.lang.String[] { "Name", "Priority", "Desired", "Actual", "Releasing", "Requested", "Failed", "Started", "StartFailed", "Completed", "TotalRequested", "FailureMessage", "PlacementPolicy", "Containers", "FailedRecently", "NodeFailed", "Preempted", });
+ new java.lang.String[] { "Name", "Priority", "Desired", "Actual", "Releasing", "Requested", "Failed", "Started", "StartFailed", "Completed", "TotalRequested", "FailureMessage", "PlacementPolicy", "Containers", "FailedRecently", "NodeFailed", "Preempted", "PendingAntiAffineRequestCount", });
internal_static_org_apache_slider_api_ContainerInformationProto_descriptor =
getDescriptor().getMessageTypes().get(25);
internal_static_org_apache_slider_api_ContainerInformationProto_fieldAccessorTable = new
@@ -29167,114 +34249,144 @@
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_PingInformationProto_descriptor,
new java.lang.String[] { "Text", "Verb", "Body", "Time", });
- internal_static_org_apache_slider_api_GetModelRequestProto_descriptor =
+ internal_static_org_apache_slider_api_NodeEntryInformationProto_descriptor =
getDescriptor().getMessageTypes().get(27);
+ internal_static_org_apache_slider_api_NodeEntryInformationProto_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_org_apache_slider_api_NodeEntryInformationProto_descriptor,
+ new java.lang.String[] { "Priority", "Requested", "Starting", "StartFailed", "Failed", "FailedRecently", "Preempted", "Live", "Releasing", "LastUsed", });
+ internal_static_org_apache_slider_api_NodeInformationProto_descriptor =
+ getDescriptor().getMessageTypes().get(28);
+ internal_static_org_apache_slider_api_NodeInformationProto_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_org_apache_slider_api_NodeInformationProto_descriptor,
+ new java.lang.String[] { "Hostname", "State", "HttpAddress", "RackName", "Labels", "HealthReport", "LastUpdated", "Entries", });
+ internal_static_org_apache_slider_api_GetModelRequestProto_descriptor =
+ getDescriptor().getMessageTypes().get(29);
internal_static_org_apache_slider_api_GetModelRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetModelRequestProto_descriptor,
new java.lang.String[] { });
internal_static_org_apache_slider_api_GetModelDesiredRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(28);
+ getDescriptor().getMessageTypes().get(30);
internal_static_org_apache_slider_api_GetModelDesiredRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetModelDesiredRequestProto_descriptor,
new java.lang.String[] { });
internal_static_org_apache_slider_api_GetModelDesiredAppconfRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(29);
+ getDescriptor().getMessageTypes().get(31);
internal_static_org_apache_slider_api_GetModelDesiredAppconfRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetModelDesiredAppconfRequestProto_descriptor,
new java.lang.String[] { });
internal_static_org_apache_slider_api_GetModelDesiredResourcesRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(30);
+ getDescriptor().getMessageTypes().get(32);
internal_static_org_apache_slider_api_GetModelDesiredResourcesRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetModelDesiredResourcesRequestProto_descriptor,
new java.lang.String[] { });
internal_static_org_apache_slider_api_GetModelResolvedAppconfRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(31);
+ getDescriptor().getMessageTypes().get(33);
internal_static_org_apache_slider_api_GetModelResolvedAppconfRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetModelResolvedAppconfRequestProto_descriptor,
new java.lang.String[] { });
internal_static_org_apache_slider_api_GetModelResolvedResourcesRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(32);
+ getDescriptor().getMessageTypes().get(34);
internal_static_org_apache_slider_api_GetModelResolvedResourcesRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetModelResolvedResourcesRequestProto_descriptor,
new java.lang.String[] { });
internal_static_org_apache_slider_api_GetModelLiveResourcesRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(33);
+ getDescriptor().getMessageTypes().get(35);
internal_static_org_apache_slider_api_GetModelLiveResourcesRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetModelLiveResourcesRequestProto_descriptor,
new java.lang.String[] { });
internal_static_org_apache_slider_api_GetLiveContainersRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(34);
+ getDescriptor().getMessageTypes().get(36);
internal_static_org_apache_slider_api_GetLiveContainersRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetLiveContainersRequestProto_descriptor,
new java.lang.String[] { });
internal_static_org_apache_slider_api_GetLiveContainersResponseProto_descriptor =
- getDescriptor().getMessageTypes().get(35);
+ getDescriptor().getMessageTypes().get(37);
internal_static_org_apache_slider_api_GetLiveContainersResponseProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetLiveContainersResponseProto_descriptor,
new java.lang.String[] { "Names", "Containers", });
internal_static_org_apache_slider_api_GetLiveContainerRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(36);
+ getDescriptor().getMessageTypes().get(38);
internal_static_org_apache_slider_api_GetLiveContainerRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetLiveContainerRequestProto_descriptor,
new java.lang.String[] { "ContainerId", });
internal_static_org_apache_slider_api_GetLiveComponentsRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(37);
+ getDescriptor().getMessageTypes().get(39);
internal_static_org_apache_slider_api_GetLiveComponentsRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetLiveComponentsRequestProto_descriptor,
new java.lang.String[] { });
internal_static_org_apache_slider_api_GetLiveComponentsResponseProto_descriptor =
- getDescriptor().getMessageTypes().get(38);
+ getDescriptor().getMessageTypes().get(40);
internal_static_org_apache_slider_api_GetLiveComponentsResponseProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetLiveComponentsResponseProto_descriptor,
new java.lang.String[] { "Names", "Components", });
internal_static_org_apache_slider_api_GetLiveComponentRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(39);
+ getDescriptor().getMessageTypes().get(41);
internal_static_org_apache_slider_api_GetLiveComponentRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetLiveComponentRequestProto_descriptor,
new java.lang.String[] { "Name", });
internal_static_org_apache_slider_api_GetApplicationLivenessRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(40);
+ getDescriptor().getMessageTypes().get(42);
internal_static_org_apache_slider_api_GetApplicationLivenessRequestProto_fieldAccessorTable = new
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(41);
+ getDescriptor().getMessageTypes().get(43);
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(42);
+ getDescriptor().getMessageTypes().get(44);
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", });
internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_descriptor =
- getDescriptor().getMessageTypes().get(43);
+ getDescriptor().getMessageTypes().get(45);
internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_descriptor,
new java.lang.String[] { "Hostname", "RequesterId", "Password", "Type", });
internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_descriptor =
- getDescriptor().getMessageTypes().get(44);
+ getDescriptor().getMessageTypes().get(46);
internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_descriptor,
new java.lang.String[] { "Store", });
+ internal_static_org_apache_slider_api_GetLiveNodesRequestProto_descriptor =
+ getDescriptor().getMessageTypes().get(47);
+ internal_static_org_apache_slider_api_GetLiveNodesRequestProto_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_org_apache_slider_api_GetLiveNodesRequestProto_descriptor,
+ new java.lang.String[] { });
+ internal_static_org_apache_slider_api_GetLiveNodesResponseProto_descriptor =
+ getDescriptor().getMessageTypes().get(48);
+ internal_static_org_apache_slider_api_GetLiveNodesResponseProto_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_org_apache_slider_api_GetLiveNodesResponseProto_descriptor,
+ new java.lang.String[] { "Names", "Nodes", });
+ internal_static_org_apache_slider_api_GetLiveNodeRequestProto_descriptor =
+ getDescriptor().getMessageTypes().get(49);
+ internal_static_org_apache_slider_api_GetLiveNodeRequestProto_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_org_apache_slider_api_GetLiveNodeRequestProto_descriptor,
+ new java.lang.String[] { "Name", });
return null;
}
};
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 c408ed2..115405c 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
@@ -23,6 +23,8 @@
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeEntryInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
import org.apache.slider.core.conf.ConfTreeOperations;
@@ -82,7 +84,8 @@
if (wire.hasFailureMessage()) {
info.failureMessage = wire.getFailureMessage();
}
-
+ info.pendingAntiAffineRequestCount = wire.getPendingAntiAffineRequestCount();
+ info.pendingAntiAffineRequest = info.pendingAntiAffineRequestCount > 0;
return info;
}
@@ -132,11 +135,84 @@
if (info.containers != null) {
builder.addAllContainers(info.containers);
}
+ builder.setPendingAntiAffineRequestCount(info.pendingAntiAffineRequestCount);
return builder.build();
}
- public static ContainerInformation
- unmarshall(Messages.ContainerInformationProto wire) {
+ public static Messages.NodeInformationProto marshall(NodeInformation info) {
+
+ Messages.NodeInformationProto.Builder builder =
+ Messages.NodeInformationProto.newBuilder();
+ builder.setHostname(info.hostname);
+ builder.setLastUpdated(info.lastUpdated);
+ if (info.state != null) {
+ builder.setState(info.state);
+ }
+ if (info.rackName != null) {
+ builder.setRackName(info.rackName);
+ }
+ if (info.healthReport != null) {
+ builder.setHealthReport(info.healthReport);
+ }
+ if (info.httpAddress != null) {
+ builder.setHttpAddress(info.httpAddress);
+ }
+ if (info.labels != null) {
+ builder.setLabels(info.labels);
+ }
+
+ List<NodeEntryInformation> entries = info.entries;
+ if (entries != null) {
+ for (NodeEntryInformation entry : entries) {
+ Messages.NodeEntryInformationProto.Builder node =
+ Messages.NodeEntryInformationProto.newBuilder();
+ node.setFailed(entry.failed);
+ node.setFailedRecently(entry.failedRecently);
+ node.setLive(entry.live);
+ node.setLastUsed(entry.lastUsed);
+ node.setPreempted(entry.preempted);
+ node.setPriority(entry.priority);
+ node.setRequested(entry.requested);
+ node.setReleasing(entry.releasing);
+ node.setStartFailed(entry.startFailed);
+ node.setStarting(entry.starting);
+ builder.addEntries(node.build());
+ }
+ }
+ return builder.build();
+ }
+
+ public static NodeInformation unmarshall(Messages.NodeInformationProto wire) {
+ NodeInformation info = new NodeInformation();
+ info.healthReport = wire.getHealthReport();
+ info.hostname = wire.getHostname();
+ info.httpAddress = wire.getHttpAddress();
+ info.labels = wire.getLabels();
+ info.lastUpdated = wire.getLastUpdated();
+ info.rackName = wire.getRackName();
+ info.state = wire.getState();
+ List<Messages.NodeEntryInformationProto> entriesList = wire.getEntriesList();
+ if (entriesList != null) {
+ info.entries = new ArrayList<>(entriesList.size());
+ for (Messages.NodeEntryInformationProto entry : entriesList) {
+ NodeEntryInformation nei = new NodeEntryInformation();
+ nei.failed = entry.getFailed();
+ nei.failedRecently = entry.getFailedRecently();
+ nei.lastUsed = entry.getLastUsed();
+ nei.live = entry.getLive();
+ nei.preempted = entry.getPreempted();
+ nei.priority = entry.getPriority();
+ nei.requested = entry.getRequested();
+ nei.releasing = entry.getReleasing();
+ nei.startFailed = entry.getStartFailed();
+ nei.starting = entry.getStarting();
+ info.entries.add(nei);
+ }
+ }
+ return info;
+ }
+
+ public static ContainerInformation unmarshall(Messages.ContainerInformationProto wire) {
ContainerInformation info = new ContainerInformation();
info.containerId = wire.getContainerId();
info.component = wire.getComponent();
@@ -168,19 +244,15 @@
return info;
}
- public static List<ContainerInformation> unmarshall(
- Messages.GetLiveContainersResponseProto wire) {
- List<ContainerInformation> infoList = new ArrayList<ContainerInformation>(
- wire.getContainersList().size());
- for (Messages.ContainerInformationProto container : wire
- .getContainersList()) {
+ public static List<ContainerInformation> unmarshall(Messages.GetLiveContainersResponseProto wire) {
+ List<ContainerInformation> infoList = new ArrayList<>(wire.getContainersList().size());
+ for (Messages.ContainerInformationProto container : wire.getContainersList()) {
infoList.add(unmarshall(container));
}
return infoList;
}
- public static Messages.ContainerInformationProto
- marshall(ContainerInformation info) {
+ public static Messages.ContainerInformationProto marshall(ContainerInformation info) {
Messages.ContainerInformationProto.Builder builder =
Messages.ContainerInformationProto.newBuilder();
@@ -217,8 +289,7 @@
return builder.build();
}
- public static String
- unmarshall(Messages.WrappedJsonProto wire) {
+ public static String unmarshall(Messages.WrappedJsonProto wire) {
return wire.getJson();
}
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 702c762..081b7fa 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
@@ -203,6 +203,22 @@
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.ComponentInformationProto> done);
/**
+ * <code>rpc getLiveNodes(.org.apache.slider.api.GetLiveNodesRequestProto) returns (.org.apache.slider.api.GetLiveNodesResponseProto);</code>
+ */
+ public abstract void getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto> done);
+
+ /**
+ * <code>rpc getLiveNode(.org.apache.slider.api.GetLiveNodeRequestProto) returns (.org.apache.slider.api.NodeInformationProto);</code>
+ */
+ public abstract void getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.NodeInformationProto> done);
+
+ /**
* <code>rpc getModelDesired(.org.apache.slider.api.EmptyPayloadProto) returns (.org.apache.slider.api.WrappedJsonProto);</code>
*
* <pre>
@@ -428,6 +444,22 @@
}
@java.lang.Override
+ public void getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto> done) {
+ impl.getLiveNodes(controller, request, done);
+ }
+
+ @java.lang.Override
+ public void getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.NodeInformationProto> done) {
+ impl.getLiveNode(controller, request, done);
+ }
+
+ @java.lang.Override
public void getModelDesired(
com.google.protobuf.RpcController controller,
org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
@@ -546,20 +578,24 @@
case 15:
return impl.getLiveComponent(controller, (org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto)request);
case 16:
- return impl.getModelDesired(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getLiveNodes(controller, (org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto)request);
case 17:
- return impl.getModelDesiredAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getLiveNode(controller, (org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto)request);
case 18:
- return impl.getModelDesiredResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelDesired(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 19:
- return impl.getModelResolved(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelDesiredAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 20:
- return impl.getModelResolvedAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelDesiredResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 21:
- return impl.getModelResolvedResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelResolved(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 22:
- return impl.getLiveResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelResolvedAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 23:
+ return impl.getModelResolvedResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ case 24:
+ return impl.getLiveResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ case 25:
return impl.getClientCertificateStore(controller, (org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto)request);
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -608,9 +644,9 @@
case 15:
return org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto.getDefaultInstance();
case 16:
- return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.getDefaultInstance();
case 17:
- return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.getDefaultInstance();
case 18:
return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
case 19:
@@ -622,6 +658,10 @@
case 22:
return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
case 23:
+ return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ case 24:
+ return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ case 25:
return org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.getDefaultInstance();
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -670,9 +710,9 @@
case 15:
return org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance();
case 16:
- return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance();
case 17:
- return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance();
case 18:
return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
case 19:
@@ -684,6 +724,10 @@
case 22:
return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
case 23:
+ return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ case 24:
+ return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ case 25:
return org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance();
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -875,6 +919,22 @@
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.ComponentInformationProto> done);
/**
+ * <code>rpc getLiveNodes(.org.apache.slider.api.GetLiveNodesRequestProto) returns (.org.apache.slider.api.GetLiveNodesResponseProto);</code>
+ */
+ public abstract void getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto> done);
+
+ /**
+ * <code>rpc getLiveNode(.org.apache.slider.api.GetLiveNodeRequestProto) returns (.org.apache.slider.api.NodeInformationProto);</code>
+ */
+ public abstract void getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.NodeInformationProto> done);
+
+ /**
* <code>rpc getModelDesired(.org.apache.slider.api.EmptyPayloadProto) returns (.org.apache.slider.api.WrappedJsonProto);</code>
*
* <pre>
@@ -1069,41 +1129,51 @@
done));
return;
case 16:
+ this.getLiveNodes(controller, (org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto)request,
+ com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto>specializeCallback(
+ done));
+ return;
+ case 17:
+ this.getLiveNode(controller, (org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto)request,
+ com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.NodeInformationProto>specializeCallback(
+ done));
+ return;
+ case 18:
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 17:
+ case 19:
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 18:
+ case 20:
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 19:
+ case 21:
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 20:
+ case 22:
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 21:
+ case 23:
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 22:
+ case 24:
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;
- case 23:
+ case 25:
this.getClientCertificateStore(controller, (org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto)request,
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto>specializeCallback(
done));
@@ -1155,9 +1225,9 @@
case 15:
return org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto.getDefaultInstance();
case 16:
- return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.getDefaultInstance();
case 17:
- return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.getDefaultInstance();
case 18:
return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
case 19:
@@ -1169,6 +1239,10 @@
case 22:
return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
case 23:
+ return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ case 24:
+ return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ case 25:
return org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.getDefaultInstance();
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -1217,9 +1291,9 @@
case 15:
return org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance();
case 16:
- return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance();
case 17:
- return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance();
case 18:
return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
case 19:
@@ -1231,6 +1305,10 @@
case 22:
return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
case 23:
+ return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ case 24:
+ return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ case 25:
return org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance();
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -1493,37 +1571,37 @@
org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance()));
}
- public void getModelDesired(
+ public void getLiveNodes(
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) {
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto> done) {
channel.callMethod(
getDescriptor().getMethods().get(16),
controller,
request,
- org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance(),
com.google.protobuf.RpcUtil.generalizeCallback(
done,
- org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
- org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.class,
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance()));
}
- public void getModelDesiredAppconf(
+ public void getLiveNode(
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) {
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.NodeInformationProto> done) {
channel.callMethod(
getDescriptor().getMethods().get(17),
controller,
request,
- org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
+ org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance(),
com.google.protobuf.RpcUtil.generalizeCallback(
done,
- org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
- org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
+ org.apache.slider.api.proto.Messages.NodeInformationProto.class,
+ org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance()));
}
- public void getModelDesiredResources(
+ 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) {
@@ -1538,7 +1616,7 @@
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
}
- public void getModelResolved(
+ 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) {
@@ -1553,7 +1631,7 @@
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
}
- public void getModelResolvedAppconf(
+ 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) {
@@ -1568,7 +1646,7 @@
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
}
- public void getModelResolvedResources(
+ 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) {
@@ -1583,7 +1661,7 @@
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
}
- public void getLiveResources(
+ 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) {
@@ -1598,12 +1676,42 @@
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(23),
+ 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(24),
+ 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 getClientCertificateStore(
com.google.protobuf.RpcController controller,
org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request,
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto> done) {
channel.callMethod(
- getDescriptor().getMethods().get(23),
+ getDescriptor().getMethods().get(25),
controller,
request,
org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance(),
@@ -1700,6 +1808,16 @@
org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto request)
throws com.google.protobuf.ServiceException;
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request)
+ throws com.google.protobuf.ServiceException;
+
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto 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)
@@ -1940,31 +2058,31 @@
}
- public org.apache.slider.api.proto.Messages.WrappedJsonProto getModelDesired(
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto getLiveNodes(
com.google.protobuf.RpcController controller,
- org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request)
throws com.google.protobuf.ServiceException {
- return (org.apache.slider.api.proto.Messages.WrappedJsonProto) channel.callBlockingMethod(
+ return (org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto) channel.callBlockingMethod(
getDescriptor().getMethods().get(16),
controller,
request,
- org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance());
}
- public org.apache.slider.api.proto.Messages.WrappedJsonProto getModelDesiredAppconf(
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getLiveNode(
com.google.protobuf.RpcController controller,
- org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request)
throws com.google.protobuf.ServiceException {
- return (org.apache.slider.api.proto.Messages.WrappedJsonProto) channel.callBlockingMethod(
+ return (org.apache.slider.api.proto.Messages.NodeInformationProto) channel.callBlockingMethod(
getDescriptor().getMethods().get(17),
controller,
request,
- org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+ org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance());
}
- public org.apache.slider.api.proto.Messages.WrappedJsonProto getModelDesiredResources(
+ 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 {
@@ -1976,7 +2094,7 @@
}
- public org.apache.slider.api.proto.Messages.WrappedJsonProto getModelResolved(
+ 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 {
@@ -1988,7 +2106,7 @@
}
- public org.apache.slider.api.proto.Messages.WrappedJsonProto getModelResolvedAppconf(
+ 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 {
@@ -2000,7 +2118,7 @@
}
- public org.apache.slider.api.proto.Messages.WrappedJsonProto getModelResolvedResources(
+ 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 {
@@ -2012,7 +2130,7 @@
}
- public org.apache.slider.api.proto.Messages.WrappedJsonProto getLiveResources(
+ 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 {
@@ -2024,12 +2142,36 @@
}
+ 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(23),
+ 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(24),
+ controller,
+ request,
+ org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
+ }
+
+
public org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto getClientCertificateStore(
com.google.protobuf.RpcController controller,
org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request)
throws com.google.protobuf.ServiceException {
return (org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto) channel.callBlockingMethod(
- getDescriptor().getMethods().get(23),
+ getDescriptor().getMethods().get(25),
controller,
request,
org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance());
@@ -2051,7 +2193,7 @@
java.lang.String[] descriptorData = {
"\n\033SliderClusterProtocol.proto\022\025org.apach" +
"e.slider.api\032\033SliderClusterMessages.prot" +
- "o2\306\026\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
+ "o2\245\030\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
"ster\022..org.apache.slider.api.StopCluster" +
"RequestProto\032/.org.apache.slider.api.Sto" +
"pClusterResponseProto\022\200\001\n\021upgradeContain" +
@@ -2100,31 +2242,37 @@
"api.GetLiveComponentsResponseProto\022y\n\020ge" +
"tLiveComponent\0223.org.apache.slider.api.G",
"etLiveComponentRequestProto\0320.org.apache" +
- ".slider.api.ComponentInformationProto\022d\n" +
- "\017getModelDesired\022(.org.apache.slider.api" +
- ".EmptyPayloadProto\032\'.org.apache.slider.a" +
- "pi.WrappedJsonProto\022k\n\026getModelDesiredAp" +
- "pconf\022(.org.apache.slider.api.EmptyPaylo" +
- "adProto\032\'.org.apache.slider.api.WrappedJ" +
- "sonProto\022m\n\030getModelDesiredResources\022(.o" +
- "rg.apache.slider.api.EmptyPayloadProto\032\'" +
- ".org.apache.slider.api.WrappedJsonProto\022",
- "e\n\020getModelResolved\022(.org.apache.slider." +
+ ".slider.api.ComponentInformationProto\022q\n" +
+ "\014getLiveNodes\022/.org.apache.slider.api.Ge" +
+ "tLiveNodesRequestProto\0320.org.apache.slid" +
+ "er.api.GetLiveNodesResponseProto\022j\n\013getL" +
+ "iveNode\022..org.apache.slider.api.GetLiveN" +
+ "odeRequestProto\032+.org.apache.slider.api." +
+ "NodeInformationProto\022d\n\017getModelDesired\022" +
+ "(.org.apache.slider.api.EmptyPayloadProt" +
+ "o\032\'.org.apache.slider.api.WrappedJsonPro",
+ "to\022k\n\026getModelDesiredAppconf\022(.org.apach" +
+ "e.slider.api.EmptyPayloadProto\032\'.org.apa" +
+ "che.slider.api.WrappedJsonProto\022m\n\030getMo" +
+ "delDesiredResources\022(.org.apache.slider." +
"api.EmptyPayloadProto\032\'.org.apache.slide" +
- "r.api.WrappedJsonProto\022l\n\027getModelResolv" +
- "edAppconf\022(.org.apache.slider.api.EmptyP" +
- "ayloadProto\032\'.org.apache.slider.api.Wrap" +
- "pedJsonProto\022n\n\031getModelResolvedResource" +
- "s\022(.org.apache.slider.api.EmptyPayloadPr" +
- "oto\032\'.org.apache.slider.api.WrappedJsonP" +
- "roto\022e\n\020getLiveResources\022(.org.apache.sl" +
- "ider.api.EmptyPayloadProto\032\'.org.apache.",
- "slider.api.WrappedJsonProto\022\214\001\n\031getClien" +
- "tCertificateStore\0226.org.apache.slider.ap" +
- "i.GetCertificateStoreRequestProto\0327.org." +
- "apache.slider.api.GetCertificateStoreRes" +
- "ponseProtoB5\n\033org.apache.slider.api.prot" +
- "oB\020SliderClusterAPI\210\001\001\240\001\001"
+ "r.api.WrappedJsonProto\022e\n\020getModelResolv" +
+ "ed\022(.org.apache.slider.api.EmptyPayloadP" +
+ "roto\032\'.org.apache.slider.api.WrappedJson" +
+ "Proto\022l\n\027getModelResolvedAppconf\022(.org.a" +
+ "pache.slider.api.EmptyPayloadProto\032\'.org",
+ ".apache.slider.api.WrappedJsonProto\022n\n\031g" +
+ "etModelResolvedResources\022(.org.apache.sl" +
+ "ider.api.EmptyPayloadProto\032\'.org.apache." +
+ "slider.api.WrappedJsonProto\022e\n\020getLiveRe" +
+ "sources\022(.org.apache.slider.api.EmptyPay" +
+ "loadProto\032\'.org.apache.slider.api.Wrappe" +
+ "dJsonProto\022\214\001\n\031getClientCertificateStore" +
+ "\0226.org.apache.slider.api.GetCertificateS" +
+ "toreRequestProto\0327.org.apache.slider.api" +
+ ".GetCertificateStoreResponseProtoB5\n\033org",
+ ".apache.slider.api.protoB\020SliderClusterA" +
+ "PI\210\001\001\240\001\001"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
diff --git a/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java
index 52f6c08..3b4b8bd 100644
--- a/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java
+++ b/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java
@@ -19,6 +19,7 @@
package org.apache.slider.api.types;
import org.apache.slider.api.StatusKeys;
+import org.apache.slider.server.appmaster.state.RoleStatus;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -35,13 +36,15 @@
* <p>
* This means that if any fields are added here. they must be added to
* <code>src/main/proto/SliderClusterMessages.proto</code> and
- * the probuf structures rebuilt.
+ * the protobuf structures rebuilt via a {@code mvn generate-sources -Pcompile-protobuf}
+ *
+ * See also {@link RoleStatus#serialize()}
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class ComponentInformation {
-
+
public String name;
public int priority;
public int desired, actual, releasing;
@@ -49,6 +52,9 @@
public int requested;
public int failed, started, startFailed, completed, totalRequested;
public int nodeFailed, failedRecently, preempted;
+ public boolean pendingAntiAffineRequest;
+ public int pendingAntiAffineRequestCount;
+
public String failureMessage;
public List<String> containers;
@@ -59,16 +65,17 @@
public Map<String, Integer> buildStatistics() {
Map<String, Integer> stats = new HashMap<>();
stats.put(StatusKeys.STATISTICS_CONTAINERS_ACTIVE_REQUESTS, requested);
+ stats.put(StatusKeys.STATISTICS_CONTAINERS_ANTI_AFFINE_PENDING, pendingAntiAffineRequestCount);
stats.put(StatusKeys.STATISTICS_CONTAINERS_COMPLETED, completed);
stats.put(StatusKeys.STATISTICS_CONTAINERS_DESIRED, desired);
stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED, failed);
+ stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED_NODE, nodeFailed);
+ stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED_RECENTLY, failedRecently);
stats.put(StatusKeys.STATISTICS_CONTAINERS_LIVE, actual);
+ stats.put(StatusKeys.STATISTICS_CONTAINERS_PREEMPTED, preempted);
stats.put(StatusKeys.STATISTICS_CONTAINERS_REQUESTED, totalRequested);
stats.put(StatusKeys.STATISTICS_CONTAINERS_STARTED, started);
stats.put(StatusKeys.STATISTICS_CONTAINERS_START_FAILED, startFailed);
- stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED_RECENTLY, failedRecently);
- stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED_NODE, nodeFailed);
- stats.put(StatusKeys.STATISTICS_CONTAINERS_PREEMPTED, preempted);
return stats;
}
@@ -76,22 +83,23 @@
public String toString() {
final StringBuilder sb =
new StringBuilder("ComponentInformation{");
- sb.append("failureMessage='").append(failureMessage).append('\'');
- sb.append(", totalRequested=").append(totalRequested);
- sb.append(", completed=").append(completed);
- sb.append(", startFailed=").append(startFailed);
- sb.append(", started=").append(started);
- sb.append(", failed=").append(failed);
- sb.append(", requested=").append(requested);
- sb.append(", placementPolicy=").append(placementPolicy);
- sb.append(", releasing=").append(releasing);
- sb.append(", actual=").append(actual);
- sb.append(", desired=").append(desired);
- sb.append(", priority=").append(priority);
sb.append(", name='").append(name).append('\'');
- sb.append(", container count='")
- .append(containers== null ? 0: containers.size())
- .append('\'');
+ sb.append(", actual=").append(actual);
+ sb.append(", anti-affine pending").append(pendingAntiAffineRequestCount);
+ sb.append(", completed=").append(completed);
+ sb.append(", desired=").append(desired);
+ sb.append(", failed=").append(failed);
+ sb.append(", failureMessage='").append(failureMessage).append('\'');
+ sb.append(", placementPolicy=").append(placementPolicy);
+ sb.append(", priority=").append(priority);
+ sb.append(", releasing=").append(releasing);
+ sb.append(", requested=").append(requested);
+ sb.append(", started=").append(started);
+ sb.append(", startFailed=").append(startFailed);
+ sb.append(", totalRequested=").append(totalRequested);
+ sb.append("container count='")
+ .append(containers == null ? 0 : containers.size())
+ .append('\'');
sb.append('}');
return sb.toString();
}
diff --git a/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java
new file mode 100644
index 0000000..482b0c7
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.api.types;
+
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+/**
+ * Serialized node entry information. Must be kept in sync with the protobuf equivalent.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class NodeEntryInformation {
+
+
+ /** incrementing counter of instances that failed */
+ public int failed;
+
+ /** Counter of "failed recently" events. */
+ public int failedRecently;
+
+ /** timestamp of last use */
+ public long lastUsed;
+
+ /** Number of live nodes. */
+ public int live;
+
+ /** incrementing counter of instances that have been pre-empted. */
+ public int preempted;
+
+ /** Priority */
+ public int priority;
+
+ /** instance explicitly requested on this node */
+ public int requested;
+
+ /** number of containers being released off this node */
+ public int releasing;
+
+ /** incrementing counter of instances that failed to start */
+ public int startFailed;
+
+ /** number of starting instances */
+ public int starting;
+}
diff --git a/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java
new file mode 100644
index 0000000..049ee52
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.api.types;
+
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Serialized node information. Must be kept in sync with the protobuf equivalent.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class NodeInformation {
+
+ public String healthReport;
+ public String hostname;
+ public String httpAddress;
+ public String labels;
+ public long lastUpdated;
+ public String rackName;
+ public String state;
+ public List<NodeEntryInformation> entries = new ArrayList<>();
+}
diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
index 9a77c67..7a25629 100644
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
@@ -422,8 +422,7 @@
break;
case ACTION_INSTALL_KEYTAB:
- exitCode =
- actionInstallKeytab(serviceArgs.getActionInstallKeytabArgs());
+ exitCode = actionInstallKeytab(serviceArgs.getActionInstallKeytabArgs());
break;
case ACTION_INSTALL_PACKAGE:
@@ -501,7 +500,7 @@
yarnAppListClient =
new YarnAppListClient(yarnClient, getUsername(), getConfig());
// create the filesystem
- sliderFileSystem = new SliderFileSystem(getConfig());
+ sliderFileSystem = new SliderFileSystem(getConfig());
}
/**
@@ -572,7 +571,7 @@
if (client != null) {
// set up the permissions. This must be done differently on a secure cluster from an insecure
// one
- List<ACL> zkperms = new ArrayList<ACL>();
+ List<ACL> zkperms = new ArrayList<>();
if (UserGroupInformation.isSecurityEnabled()) {
zkperms.add(new ACL(ZooDefs.Perms.ALL, ZooDefs.Ids.AUTH_IDS));
zkperms.add(new ACL(ZooDefs.Perms.READ, ZooDefs.Ids.ANYONE_ID_UNSAFE));
@@ -1971,13 +1970,10 @@
instanceDefinition.resolve();
launchedInstanceDefinition = instanceDefinition;
- ConfTreeOperations internalOperations =
- instanceDefinition.getInternalOperations();
+ ConfTreeOperations internalOperations = instanceDefinition.getInternalOperations();
MapOperations internalOptions = internalOperations.getGlobalOptions();
- ConfTreeOperations resourceOperations =
- instanceDefinition.getResourceOperations();
- ConfTreeOperations appOperations =
- instanceDefinition.getAppConfOperations();
+ ConfTreeOperations resourceOperations = instanceDefinition.getResourceOperations();
+ ConfTreeOperations appOperations = instanceDefinition.getAppConfOperations();
Path generatedConfDirPath =
createPathThatMustExist(internalOptions.getMandatoryOption(
InternalKeys.INTERNAL_GENERATED_CONF_PATH));
@@ -2236,9 +2232,6 @@
if (clusterSecure) {
// if the cluster is secure, make sure that
// the relevant security settings go over
-/*
- addConfOptionToCLI(commandLine, config, KEY_SECURITY);
-*/
addConfOptionToCLI(commandLine,
config,
DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY);
@@ -2291,7 +2284,7 @@
if (ArrayUtils.isEmpty(envs)) {
return Collections.emptyMap();
}
- Map<String, String> amLaunchEnv = new HashMap<String, String>();
+ Map<String, String> amLaunchEnv = new HashMap<>();
for (String env : envs) {
if (StringUtils.isNotEmpty(env)) {
// Each env name/value is separated by equals sign (=)
@@ -2327,7 +2320,7 @@
if (placeholderMatcher.find()) {
String placeholderKey = placeholderMatcher.group();
String systemKey = placeholderKey
- .substring(2, placeholderKey.length() - 1).toUpperCase()
+ .substring(2, placeholderKey.length() - 1).toUpperCase(Locale.ENGLISH)
.replaceAll("\\.", "_");
String placeholderValue = SliderUtils.getSystemEnv(systemKey);
log.debug("Placeholder {}={}", placeholderKey, placeholderValue);
@@ -2476,8 +2469,7 @@
* @throws FileNotFoundException if the path does not exist
*/
public Path createPathThatMustExist(String uri) throws
- SliderException,
- IOException {
+ SliderException, IOException {
return sliderFileSystem.createPathThatMustExist(uri);
}
@@ -2673,9 +2665,9 @@
throws IOException, YarnException {
Set<String> appInstances = getApplicationList(clustername, args);
// getApplicationList never returns null
- return appInstances.size() > 0 ? EXIT_SUCCESS
- : (appInstances.size() == 0 && isUnset(clustername)) ? EXIT_SUCCESS
- : EXIT_FALSE;
+ return !appInstances.isEmpty() ? EXIT_SUCCESS
+ : ((appInstances.isEmpty() && isUnset(clustername)) ? EXIT_SUCCESS
+ : EXIT_FALSE);
}
/**
diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java b/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
index bab451f..3627687 100644
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
@@ -99,7 +99,7 @@
* @throws YarnException Yarn problems
* @throws IOException other problems
* @throws BadCommandArgumentsException bad arguments.
- * @deperecated use #actionKeytab
+ * @deprecated use #actionKeytab
*/
int actionInstallKeytab(ActionInstallKeytabArgs installKeytabInfo)
throws YarnException, IOException;
@@ -111,7 +111,7 @@
* @throws YarnException Yarn problems
* @throws IOException other problems
* @throws BadCommandArgumentsException bad arguments.
- * @deperecated use #actionKeytab
+ * @deprecated use #actionKeytab
*/
int actionKeytab(ActionKeytabArgs keytabInfo)
throws YarnException, IOException;
diff --git a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderApplicationIpcClient.java b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderApplicationIpcClient.java
index bada24e..291583d 100644
--- a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderApplicationIpcClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderApplicationIpcClient.java
@@ -23,6 +23,7 @@
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.api.types.PingInformation;
import org.apache.slider.api.SliderApplicationApi;
import org.apache.slider.core.conf.AggregateConf;
@@ -186,8 +187,7 @@
}
@Override
- public ComponentInformation getComponent(String componentName) throws
- IOException {
+ public ComponentInformation getComponent(String componentName) throws IOException {
try {
return operations.getComponent(componentName);
} catch (IOException e) {
@@ -196,6 +196,24 @@
}
@Override
+ public Map<String, NodeInformation> getLiveNodes() throws IOException {
+ try {
+ return operations.getLiveNodes();
+ } catch (IOException e) {
+ throw convert(e);
+ }
+ }
+
+ @Override
+ public NodeInformation getLiveNode(String hostname) throws IOException {
+ try {
+ return operations.getLiveNode(hostname);
+ } catch (IOException e) {
+ throw convert(e);
+ }
+ }
+
+ @Override
public PingInformation ping(String text) throws IOException {
return null;
}
diff --git a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
index 69dcb3b..e1ec971 100644
--- a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
+++ b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
@@ -30,6 +30,7 @@
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.api.types.PingInformation;
import org.apache.slider.common.tools.Duration;
import org.apache.slider.core.conf.AggregateConf;
@@ -102,7 +103,7 @@
*/
public List<ClusterNode> convertNodeWireToClusterNodes(List<Messages.RoleInstanceState> nodes)
throws IOException {
- List<ClusterNode> nodeList = new ArrayList<ClusterNode>(nodes.size());
+ List<ClusterNode> nodeList = new ArrayList<>(nodes.size());
for (Messages.RoleInstanceState node : nodes) {
nodeList.add(ClusterNode.fromProtobuf(node));
}
@@ -116,16 +117,12 @@
* @throws YarnException
* @throws IOException
*/
- public String echo(String text) throws
- YarnException,
- IOException {
+ public String echo(String text) throws YarnException, IOException {
Messages.EchoRequestProto.Builder builder =
Messages.EchoRequestProto.newBuilder();
builder.setText(text);
- Messages.EchoRequestProto req =
- builder.build();
- Messages.EchoResponseProto response =
- appMaster.echo(req);
+ Messages.EchoRequestProto req = builder.build();
+ Messages.EchoResponseProto response = appMaster.echo(req);
return response.getText();
}
@@ -145,9 +142,7 @@
try {
return ClusterDescription.fromJson(statusJson);
} catch (JsonParseException e) {
- log.error(
- "Exception " + e + " parsing:\n" + statusJson,
- e);
+ log.error("Exception " + e + " parsing:\n" + statusJson, e);
throw e;
}
}
@@ -191,10 +186,8 @@
Messages.KillContainerRequestProto.Builder builder =
Messages.KillContainerRequestProto.newBuilder();
builder.setId(id);
- Messages.KillContainerRequestProto req =
- builder.build();
- Messages.KillContainerResponseProto response =
- appMaster.killContainer(req);
+ Messages.KillContainerRequestProto req = builder.build();
+ Messages.KillContainerResponseProto response = appMaster.killContainer(req);
return response.getSuccess();
}
@@ -205,24 +198,19 @@
* @throws IOException
* @throws YarnException
*/
- public String[] listNodeUUIDsByRole(String role) throws
- IOException,
- YarnException {
+ public String[] listNodeUUIDsByRole(String role) throws IOException, YarnException {
Collection<String> uuidList = innerListNodeUUIDSByRole(role);
String[] uuids = new String[uuidList.size()];
return uuidList.toArray(uuids);
}
- public List<String> innerListNodeUUIDSByRole(String role) throws
- IOException,
- YarnException {
+ public List<String> innerListNodeUUIDSByRole(String role) throws IOException, YarnException {
Messages.ListNodeUUIDsByRoleRequestProto req =
Messages.ListNodeUUIDsByRoleRequestProto
.newBuilder()
.setRole(role)
.build();
- Messages.ListNodeUUIDsByRoleResponseProto resp =
- appMaster.listNodeUUIDsByRole(req);
+ Messages.ListNodeUUIDsByRoleResponseProto resp = appMaster.listNodeUUIDsByRole(req);
return resp.getUuidList();
}
@@ -234,9 +222,8 @@
* @throws IOException
* @throws YarnException
*/
- public List<ClusterNode> listClusterNodesInRole(String role) throws
- IOException,
- YarnException {
+ public List<ClusterNode> listClusterNodesInRole(String role)
+ throws IOException, YarnException {
Collection<String> uuidList = innerListNodeUUIDSByRole(role);
Messages.GetClusterNodesRequestProto req =
@@ -256,9 +243,8 @@
* @throws YarnException
*/
@VisibleForTesting
- public List<ClusterNode> listClusterNodes(String[] uuids) throws
- IOException,
- YarnException {
+ public List<ClusterNode> listClusterNodes(String[] uuids)
+ throws IOException, YarnException {
Messages.GetClusterNodesRequestProto req =
Messages.GetClusterNodesRequestProto
@@ -341,8 +327,7 @@
Messages.FlexClusterRequestProto.newBuilder()
.setClusterSpec(resources.toJson())
.build();
- Messages.FlexClusterResponseProto response =
- appMaster.flexCluster(request);
+ Messages.FlexClusterResponseProto response = appMaster.flexCluster(request);
return response.getResponse();
}
@@ -365,10 +350,8 @@
}
builder.setSignal(signal);
builder.setDelay(delay);
- Messages.AMSuicideRequestProto req =
- builder.build();
- Messages.AMSuicideResponseProto response =
- appMaster.amSuicide(req);
+ Messages.AMSuicideRequestProto req = builder.build();
+ appMaster.amSuicide(req);
}
/**
@@ -385,45 +368,38 @@
}
-
public AggregateConf getModelDesired() throws IOException {
return unmarshallToAggregateConf(appMaster.getModelDesired(EMPTY));
}
public ConfTreeOperations getModelDesiredAppconf() throws IOException {
- return unmarshallToCTO(
- appMaster.getModelDesiredAppconf(EMPTY));
+ return unmarshallToCTO(appMaster.getModelDesiredAppconf(EMPTY));
}
public ConfTreeOperations getModelDesiredResources() throws IOException {
- return unmarshallToCTO(
- appMaster.getModelDesiredResources(EMPTY));
+ return unmarshallToCTO(appMaster.getModelDesiredResources(EMPTY));
}
public AggregateConf getModelResolved() throws IOException {
- return unmarshallToAggregateConf(
- appMaster.getModelResolved(EMPTY));
+ return unmarshallToAggregateConf(appMaster.getModelResolved(EMPTY));
}
public ConfTreeOperations getModelResolvedAppconf() throws IOException {
- return unmarshallToCTO(
- appMaster.getModelResolvedAppconf(EMPTY));
+ return unmarshallToCTO(appMaster.getModelResolvedAppconf(EMPTY));
}
public ConfTreeOperations getModelResolvedResources() throws IOException {
- return unmarshallToCTO(
- appMaster.getModelDesiredResources(EMPTY));
+ return unmarshallToCTO(appMaster.getModelDesiredResources(EMPTY));
}
public ConfTreeOperations getLiveResources() throws IOException {
- return unmarshallToCTO(
- appMaster.getLiveResources(EMPTY));
+ return unmarshallToCTO(appMaster.getLiveResources(EMPTY));
}
@@ -439,8 +415,7 @@
+ ") does not match the number of records returned: "
+ records);
}
- Map<String, ContainerInformation> map =
- new HashMap<String, ContainerInformation>(namesCount);
+ Map<String, ContainerInformation> map = new HashMap<>(namesCount);
for (int i = 0; i < namesCount; i++) {
map.put(response.getNames(i), unmarshall(response.getContainers(i)));
}
@@ -473,42 +448,59 @@
int namesCount = response.getNamesCount();
int records = response.getComponentsCount();
if (namesCount != records) {
- throw new IOException("Number of names returned (" + namesCount
- +
- ") does not match the number of records returned: "
- + records);
+ throw new IOException(
+ "Number of names returned (" + namesCount + ")" +
+ " does not match the number of records returned: " + records);
}
- Map<String, ComponentInformation> map =
- new HashMap<String, ComponentInformation>(namesCount);
+ Map<String, ComponentInformation> map = new HashMap<>(namesCount);
for (int i = 0; i < namesCount; i++) {
map.put(response.getNames(i), unmarshall(response.getComponents(i)));
}
return map;
}
-
public ComponentInformation getComponent(String componentName)
throws IOException {
Messages.GetLiveComponentRequestProto.Builder builder =
Messages.GetLiveComponentRequestProto.newBuilder();
builder.setName(componentName);
- Messages.ComponentInformationProto proto =
- appMaster.getLiveComponent(builder.build());
-
+ Messages.ComponentInformationProto proto = appMaster.getLiveComponent(builder.build());
return unmarshall(proto);
}
-
+ public Map<String, NodeInformation> getLiveNodes() throws IOException {
+ Messages.GetLiveNodesResponseProto response =
+ appMaster.getLiveNodes(Messages.GetLiveNodesRequestProto.newBuilder().build());
+
+ int namesCount = response.getNamesCount();
+ int records = response.getNodesCount();
+ if (namesCount != records) {
+ throw new IOException(
+ "Number of names returned (" + namesCount + ")" +
+ " does not match the number of records returned: " + records);
+ }
+ Map<String, NodeInformation> map = new HashMap<>(namesCount);
+ for (int i = 0; i < namesCount; i++) {
+ map.put(response.getNames(i), unmarshall(response.getNodes(i)));
+ }
+ return map;
+ }
+
+ public NodeInformation getLiveNode(String hostname) throws IOException {
+ Messages.GetLiveNodeRequestProto.Builder builder =
+ Messages.GetLiveNodeRequestProto.newBuilder();
+ builder.setName(hostname);
+ return unmarshall(appMaster.getLiveNode(builder.build()));
+ }
+
public PingInformation ping(String text) throws IOException {
return null;
}
-
public void stop(String text) throws IOException {
amSuicide(text, 3, 0);
}
-
public ApplicationLivenessInformation getApplicationLiveness() throws
IOException {
Messages.ApplicationLivenessInformationProto proto =
diff --git a/slider-core/src/main/java/org/apache/slider/client/rest/SliderApplicationApiRestClient.java b/slider-core/src/main/java/org/apache/slider/client/rest/SliderApplicationApiRestClient.java
index b1aa633..ce2817a 100644
--- a/slider-core/src/main/java/org/apache/slider/client/rest/SliderApplicationApiRestClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/rest/SliderApplicationApiRestClient.java
@@ -31,6 +31,7 @@
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
import org.apache.slider.api.SliderApplicationApi;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
import org.apache.slider.core.conf.ConfTreeOperations;
@@ -232,8 +233,7 @@
public Map<String, ComponentInformation> enumComponents() throws
IOException {
return getApplicationResource(LIVE_COMPONENTS,
- new GenericType<Map<String, ComponentInformation>>() {
- });
+ new GenericType<Map<String, ComponentInformation>>() { });
}
@Override
@@ -244,6 +244,18 @@
}
@Override
+ public Map<String, NodeInformation> getLiveNodes() throws IOException {
+ return getApplicationResource(LIVE_NODES,
+ new GenericType<Map<String, NodeInformation>>() { });
+ }
+
+ @Override
+ public NodeInformation getLiveNode(String hostname) throws IOException {
+ return getApplicationResource(LIVE_COMPONENTS + "/" + hostname,
+ NodeInformation.class);
+ }
+
+ @Override
public PingInformation ping(String text) throws IOException {
return pingPost(text);
}
diff --git a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
index ee873fc..f380ec6 100644
--- a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
+++ b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
@@ -1224,11 +1224,11 @@
* @param conf configuration to look at
* @return true if the cluster is secure
* @throws IOException cluster is secure
- * @throws BadConfigException the configuration/process is invalid
+ * @throws SliderException the configuration/process is invalid
*/
public static boolean maybeInitSecurity(Configuration conf) throws
IOException,
- BadConfigException {
+ SliderException {
boolean clusterSecure = isHadoopClusterSecure(conf);
if (clusterSecure) {
log.debug("Enabling security");
@@ -1246,7 +1246,7 @@
*/
public static boolean initProcessSecurity(Configuration conf) throws
IOException,
- BadConfigException {
+ SliderException {
if (processSecurityAlreadyInitialized.compareAndSet(true, true)) {
//security is already inited
@@ -1272,7 +1272,8 @@
log.debug("Authenticating as {}", authUser);
log.debug("Login user is {}", UserGroupInformation.getLoginUser());
if (!UserGroupInformation.isSecurityEnabled()) {
- throw new BadConfigException("Although secure mode is enabled," +
+ throw new SliderException(LauncherExitCodes.EXIT_UNAUTHORIZE,
+ "Although secure mode is enabled," +
"the application has already set up its user as an insecure entity %s",
authUser);
}
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
index eac34c0..edc129e 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
@@ -41,7 +41,7 @@
RestPaths.PUBLISHED_CONFIGURATION_REGEXP);
public Map<String, PublishedConfiguration> configurations =
- new HashMap<String, PublishedConfiguration>();
+ new HashMap<>();
public PublishedConfigSet() {
}
@@ -84,7 +84,7 @@
}
public Set<String> keys() {
- TreeSet<String> keys = new TreeSet<String>();
+ TreeSet<String> keys = new TreeSet<>();
keys.addAll(configurations.keySet());
return keys;
}
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
index e453fb1..50b522f 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
@@ -47,7 +47,7 @@
public String updatedTime;
- public Map<String, String> entries = new HashMap<String, String>();
+ public Map<String, String> entries = new HashMap<>();
public PublishedConfiguration() {
}
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
index bf96e8c..0759b4e 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
@@ -41,7 +41,7 @@
public String description;
public long updated;
public String updatedTime;
- public Map<String, List<ExportEntry>> entries = new HashMap<String, List<ExportEntry>>();
+ public Map<String, List<ExportEntry>> entries = new HashMap<>();
public PublishedExports() {
}
@@ -68,7 +68,8 @@
}
/**
- * Is the configuration empty. This means either that it has not been given any values, or it is stripped down copy
+ * Is the configuration empty. This means either that it has not been given any values,
+ * or it is stripped down copy
* set down over the wire.
*
* @return true if it is empty
@@ -87,8 +88,8 @@
}
/**
- * Set the values from an iterable (this includes a Hadoop Configuration and Java properties object). Any existing
- * value set is discarded
+ * Set the values from an iterable (this includes a Hadoop Configuration and Java properties
+ * object). Any existing value set is discarded
*
* @param entries entries to put
*/
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
index cdd35de..339d3d6 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
@@ -40,8 +40,7 @@
private static final PatternValidator validator = new PatternValidator(
RestPaths.PUBLISHED_CONFIGURATION_REGEXP);
- public Map<String, PublishedExports> exports =
- new HashMap<String, PublishedExports>();
+ public Map<String, PublishedExports> exports = new HashMap<>();
public PublishedExportsSet() {
}
@@ -84,15 +83,14 @@
}
public Set<String> keys() {
- TreeSet<String> keys = new TreeSet<String>();
+ TreeSet<String> keys = new TreeSet<>();
keys.addAll(exports.keySet());
return keys;
}
public PublishedExportsSet shallowCopy() {
PublishedExportsSet that = new PublishedExportsSet();
- for (Map.Entry<String, PublishedExports> entry :
- exports.entrySet()) {
+ for (Map.Entry<String, PublishedExports> entry : exports.entrySet()) {
that.put(entry.getKey(), entry.getValue().shallowCopy());
}
return that;
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
index a76e28d..120966f 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
@@ -29,7 +29,7 @@
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class UriMap {
- public Map<String, String> uris = new HashMap<String, String>();
+ public Map<String, String> uris = new HashMap<>();
@JsonIgnore
public void put(String key, String value) {
diff --git a/slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMClientProvider.java b/slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMClientProvider.java
index e1dc4f9..9bd4dc9 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMClientProvider.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMClientProvider.java
@@ -174,8 +174,7 @@
Path tempPath, boolean miniClusterTestRun)
throws IOException, SliderException {
- Map<String, LocalResource> providerResources =
- new HashMap<String, LocalResource>();
+ Map<String, LocalResource> providerResources = new HashMap<>();
ProviderUtils.addProviderJar(providerResources,
this,
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/AMUtils.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/AMUtils.java
deleted file mode 100644
index 32684c6..0000000
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/AMUtils.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.server.appmaster;
-
-import org.apache.slider.common.SliderExitCodes;
-import org.apache.slider.core.main.LauncherExitCodes;
-
-public class AMUtils {
- /**
- * Map an exit code from a process
- * @param exitCode
- * @return an exit code
- */
- public static int mapProcessExitCodeToYarnExitCode(int exitCode) {
- switch (exitCode) {
- case LauncherExitCodes.EXIT_SUCCESS:
- return LauncherExitCodes.EXIT_SUCCESS;
- //remap from a planned shutdown to a failure
- case LauncherExitCodes.EXIT_CLIENT_INITIATED_SHUTDOWN:
- return SliderExitCodes.EXIT_SUCCESS;
- default:
- return exitCode;
- }
- }
-
- public static boolean isMappedExitAFailure(int mappedExitCode) {
- return mappedExitCode != 0;
- }
-
-}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufRecordFactory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java
similarity index 87%
rename from slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufRecordFactory.java
rename to slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java
index d7f79f1..50b5dad 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufRecordFactory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java
@@ -20,9 +20,10 @@
import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.util.Records;
-import org.apache.slider.server.appmaster.state.AbstractRecordFactory;
+import org.apache.slider.server.appmaster.state.AbstractClusterServices;
-public class ProtobufRecordFactory extends AbstractRecordFactory {
+public class ProtobufClusterServices extends AbstractClusterServices {
+
public Resource newResource() {
return Records.newRecord(Resource.class);
}
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 e1e572d..df91d7f 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
@@ -20,6 +20,9 @@
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
+import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
+import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
+import com.codahale.metrics.jvm.ThreadStatesGaugeSet;
import com.google.common.base.Preconditions;
import com.google.protobuf.BlockingService;
@@ -225,6 +228,8 @@
* metrics registry
*/
public MetricRegistry metrics;
+
+ /** Error string on chaos monkey launch failure action: {@value} */
public static final String E_TRIGGERED_LAUNCH_FAILURE =
"Chaos monkey triggered launch failure";
@@ -244,7 +249,6 @@
@SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
public NMClientAsync nmClientAsync;
-// YarnConfiguration conf;
/**
* token blob
*/
@@ -291,7 +295,7 @@
* live on, etc.
*/
private final AppState appState =
- new AppState(new ProtobufRecordFactory(), metricsAndMonitoring);
+ new AppState(new ProtobufClusterServices(), metricsAndMonitoring);
/**
* App state for external objects. This is almost entirely
@@ -301,7 +305,6 @@
private final ProviderAppState stateForProviders =
new ProviderAppState("undefined", appState);
-
/**
* model the state using locks and conditions
*/
@@ -484,16 +487,19 @@
false);
SliderUtils.validateSliderServerEnvironment(log, dependencyChecks);
- // create app state and monitoring
+ // create and register monitoring services
addService(metricsAndMonitoring);
metrics = metricsAndMonitoring.getMetrics();
+/* TODO: turn these one once the metrics testing is more under control
+ metrics.registerAll(new ThreadStatesGaugeSet());
+ metrics.registerAll(new MemoryUsageGaugeSet());
+ metrics.registerAll(new GarbageCollectorMetricSet());
-
+*/
contentCache = ApplicationResouceContentCacheFactory.createContentCache(
stateForProviders);
-
- executorService = new WorkflowExecutorService<ExecutorService>("AmExecutor",
+ executorService = new WorkflowExecutorService<>("AmExecutor",
Executors.newFixedThreadPool(2,
new ServiceThreadFactory("AmExecutor", true)));
addService(executorService);
@@ -566,11 +572,10 @@
String action = serviceArgs.getAction();
List<String> actionArgs = serviceArgs.getActionArgs();
int exitCode;
-/* JDK7
- switch (action) {
+ switch (action) {
case SliderActions.ACTION_HELP:
- log.info(getName() + serviceArgs.usage());
- exitCode = LauncherExitCodes.EXIT_USAGE;
+ log.info("{}: {}", getName(), serviceArgs.usage());
+ exitCode = SliderExitCodes.EXIT_USAGE;
break;
case SliderActions.ACTION_CREATE:
exitCode = createAndRunCluster(actionArgs.get(0));
@@ -578,20 +583,10 @@
default:
throw new SliderException("Unimplemented: " + action);
}
- */
- if (action.equals(SliderActions.ACTION_HELP)) {
- log.info("{}: {}", getName(), serviceArgs.usage());
- exitCode = SliderExitCodes.EXIT_USAGE;
- } else if (action.equals(SliderActions.ACTION_CREATE)) {
- exitCode = createAndRunCluster(actionArgs.get(0));
- } else {
- throw new SliderException("Unimplemented: " + action);
- }
log.info("Exiting AM; final exit code = {}", exitCode);
return exitCode;
}
-
/**
* Initialize a newly created service then add it.
* Because the service is not started, this MUST be done before
@@ -681,8 +676,7 @@
*/
appMasterContainerID = ConverterUtils.toContainerId(
SliderUtils.mandatoryEnvVariable(
- ApplicationConstants.Environment.CONTAINER_ID.name())
- );
+ ApplicationConstants.Environment.CONTAINER_ID.name()));
appAttemptID = appMasterContainerID.getApplicationAttemptId();
ApplicationId appid = appAttemptID.getApplicationId();
@@ -697,23 +691,22 @@
Map<String, String> envVars;
List<Container> liveContainers;
-
- /**
+
+ /*
* It is critical this section is synchronized, to stop async AM events
* arriving while registering a restarting AM.
*/
synchronized (appState) {
int heartbeatInterval = HEARTBEAT_INTERVAL;
- //add the RM client -this brings the callbacks in
- asyncRMClient = AMRMClientAsync.createAMRMClientAsync(heartbeatInterval,
- this);
+ // add the RM client -this brings the callbacks in
+ asyncRMClient = AMRMClientAsync.createAMRMClientAsync(heartbeatInterval, this);
addService(asyncRMClient);
//now bring it up
deployChildService(asyncRMClient);
- //nmclient relays callbacks back to this class
+ // nmclient relays callbacks back to this class
nmClientAsync = new NMClientAsyncImpl("nmclient", this);
deployChildService(nmClientAsync);
@@ -748,8 +741,7 @@
log.info(registryOperations.toString());
//build the role map
- List<ProviderRole> providerRoles =
- new ArrayList<ProviderRole>(providerService.getRoles());
+ List<ProviderRole> providerRoles = new ArrayList<>(providerService.getRoles());
providerRoles.addAll(SliderAMClientProvider.ROLES);
// Start up the WebApp and track the URL for it
@@ -797,8 +789,7 @@
// build the handler for RM request/release operations; this uses
// the max value as part of its lookup
- rmOperationHandler = new AsyncRMOperationHandler(asyncRMClient,
- maxResources);
+ rmOperationHandler = new AsyncRMOperationHandler(asyncRMClient, maxResources);
// set the RM-defined maximum cluster values
appInformation.put(ResourceKeys.YARN_CORES, Integer.toString(containerMaxCores));
@@ -819,8 +810,7 @@
// principal. Can do so now since AM registration with RM above required
// tokens associated to principal
String principal = securityConfiguration.getPrincipal();
- File localKeytabFile =
- securityConfiguration.getKeytabFile(instanceDefinition);
+ File localKeytabFile = securityConfiguration.getKeytabFile(instanceDefinition);
// Now log in...
login(principal, localKeytabFile);
// obtain new FS reference that should be kerberos based and different
@@ -837,8 +827,7 @@
Configuration providerConf =
providerService.loadProviderConfigurationInformation(confDir);
- providerService
- .initializeApplicationConfiguration(instanceDefinition, fs);
+ providerService.initializeApplicationConfiguration(instanceDefinition, fs);
providerService.validateApplicationConfiguration(instanceDefinition,
confDir,
@@ -999,7 +988,7 @@
.start(webApp);
WebAppService<SliderAMWebApp> webAppService =
- new WebAppService<SliderAMWebApp>("slider", webApp);
+ new WebAppService<>("slider", webApp);
deployChildService(webAppService);
}
@@ -1012,7 +1001,7 @@
// up to date token for container launches (getContainerCredentials()).
UserGroupInformation currentUser = UserGroupInformation.getCurrentUser();
Credentials credentials = currentUser.getCredentials();
- List<Text> filteredTokens = new ArrayList<Text>();
+ List<Text> filteredTokens = new ArrayList<>();
filteredTokens.add(AMRMTokenIdentifier.KIND_NAME);
boolean keytabProvided = securityConfiguration.isKeytabProvided();
@@ -1085,6 +1074,7 @@
protected void login(String principal, File localKeytabFile)
throws IOException, SliderException {
+ log.info("Logging in as {} with keytab {}", principal, localKeytabFile);
UserGroupInformation.loginUserFromKeytab(principal,
localKeytabFile.getAbsolutePath());
validateLoginUser(UserGroupInformation.getLoginUser());
@@ -1647,7 +1637,7 @@
// If components are specified as well, then grab all the containers of
// each of the components (roles)
if (CollectionUtils.isNotEmpty(components)) {
- Map<ContainerId, RoleInstance> liveContainers = appState.getLiveNodes();
+ Map<ContainerId, RoleInstance> liveContainers = appState.getLiveContainers();
if (CollectionUtils.isNotEmpty(liveContainers.keySet())) {
Map<String, Set<String>> roleContainerMap = prepareRoleContainerMap(liveContainers);
for (String component : components) {
@@ -1934,7 +1924,7 @@
protected synchronized void launchProviderService(AggregateConf instanceDefinition,
File confDir)
throws IOException, SliderException {
- Map<String, String> env = new HashMap<String, String>();
+ Map<String, String> env = new HashMap<>();
boolean execStarted = providerService.exec(instanceDefinition, confDir, env,
this);
if (execStarted) {
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
new file mode 100644
index 0000000..33f8d85
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.management;
+
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Metric;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * A bool metric, mapped to an integer. true maps to 1, false to zero,
+ */
+public class BoolMetric implements Metric, Gauge<Integer> {
+
+ private final AtomicBoolean value;
+
+ public BoolMetric(boolean b) {
+ value = new AtomicBoolean(b);
+ }
+
+ public void set(boolean b) {
+ value.set(b);
+ }
+
+ public boolean get() {
+ return value.get();
+ }
+
+ @Override
+ public Integer getValue() {
+ return value.get() ? 1 : 0;
+ }
+
+ /**
+ * Evaluate from a string. Returns true if the string is considered to match 'true',
+ * false otherwise.
+ * @param s source
+ * @return true if the input parses to an integer other than 0. False if it doesn't parse
+ * or parses to 0.
+ */
+ public static boolean fromString(String s) {
+ try {
+ return Integer.valueOf(s) != 0;
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ BoolMetric that = (BoolMetric) o;
+ return get() == that.get();
+ }
+
+ @Override
+ public int hashCode() {
+ return value.hashCode();
+ }
+}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/LongGauge.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/LongGauge.java
new file mode 100644
index 0000000..08f61ec
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/LongGauge.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.management;
+
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Metric;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * This is a long which acts as a gauge
+ */
+public class LongGauge implements Metric, Gauge<Long> {
+
+ private final AtomicLong value;
+
+ /**
+ * Instantiate
+ * @param val current value
+ */
+ public LongGauge(long val) {
+ this.value = new AtomicLong(val);
+ }
+
+ public LongGauge() {
+ this(0);
+ }
+
+ /**
+ * Set to a new value.
+ * @param val value
+ */
+ public synchronized void set(long val) {
+ value.set(val);
+ }
+
+ public void inc() {
+ inc(1);
+ }
+
+ public void dec() {
+ dec(1);
+ }
+
+ public synchronized void inc(int delta) {
+ set(value.get() + delta);
+ }
+
+ public synchronized void dec(int delta) {
+ set(value.get() - delta);
+ }
+
+ public long get() {
+ return value.get();
+ }
+
+ @Override
+ public Long getValue() {
+ return get();
+ }
+
+ @Override
+ public String toString() {
+ return value.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return value.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return value.equals(obj);
+ }
+}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MeterAndCounter.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MeterAndCounter.java
index 58d9eb3..02ab7bc 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MeterAndCounter.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MeterAndCounter.java
@@ -74,6 +74,11 @@
meter.mark();
}
+ public void inc() {
+ mark();
+ }
+
+
@Override
public boolean equals(Object o) {
if (this == o) {
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
index 5b96256..cced42a 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
@@ -18,13 +18,14 @@
package org.apache.slider.server.appmaster.management;
+import com.codahale.metrics.Metric;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.service.AbstractService;
import org.apache.hadoop.service.CompositeService;
-import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -49,8 +50,14 @@
final HealthCheckRegistry health = new HealthCheckRegistry();
private final Map<String, MeterAndCounter> meterAndCounterMap
- = new ConcurrentHashMap<String, MeterAndCounter>();
-
+ = new ConcurrentHashMap<>();
+
+ /**
+ * List of recorded events
+ */
+ private final List<RecordedEvent> eventHistory = new ArrayList<>(100);
+
+ public static final int EVENT_LIMIT = 1000;
public MetricRegistry getMetrics() {
return metrics;
@@ -92,7 +99,7 @@
}
/**
- * Get a specific meter and mark it
+ * Get a specific meter and mark it. This will create and register it on demand.
* @param name name of meter/counter
*/
public void markMeterAndCounter(String name) {
@@ -100,4 +107,42 @@
meter.mark();
}
+ /**
+ * Given a {@link Metric}, registers it under the given name.
+ *
+ * @param name the name of the metric
+ * @param metric the metric
+ * @param <T> the type of the metric
+ * @return {@code metric}
+ * @throws IllegalArgumentException if the name is already registered
+ */
+ public <T extends Metric> T register(String name, T metric) throws IllegalArgumentException {
+ return metrics.register(name, metric);
+ }
+
+ public <T extends Metric> T register(Class<?> klass, T metric, String... names)
+ throws IllegalArgumentException {
+ return register(MetricRegistry.name(klass, names), metric);
+ }
+
+
+ /**
+ * Add an event (synchronized)
+ * @param event event
+ */
+ public synchronized void noteEvent(RecordedEvent event) {
+ if (eventHistory.size() > EVENT_LIMIT) {
+ eventHistory.remove(0);
+ }
+ eventHistory.add(event);
+ }
+
+ /**
+ * Clone the event history; blocks for the duration of the copy operation.
+ * @return a new list
+ */
+ public synchronized List<RecordedEvent> cloneEventHistory() {
+ return new ArrayList<>(eventHistory);
+ }
}
+
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RangeLimitedCounter.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RangeLimitedCounter.java
new file mode 100644
index 0000000..80e88fc
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RangeLimitedCounter.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.management;
+
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Counting;
+import com.codahale.metrics.Metric;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * This is a counter whose range can be given a min and a max
+ */
+public class RangeLimitedCounter implements Metric, Counting {
+
+ private final AtomicLong value;
+ private final long min, max;
+
+ /**
+ * Instantiate
+ * @param val current value
+ * @param min minimum value
+ * @param max max value (or 0 for no max)
+ */
+ public RangeLimitedCounter(long val, long min, long max) {
+ this.value = new AtomicLong(val);
+ this.min = min;
+ this.max = max;
+ }
+
+ /**
+ * Set to a new value. If below the min, set to the minimum. If the max is non
+ * zero and the value is above that maximum, set it to the maximum instead.
+ * @param val value
+ */
+ public synchronized void set(long val) {
+ if (val < min) {
+ val = min;
+ } else if (max > 0 && val > max) {
+ val = max;
+ }
+ value.set(val);
+ }
+
+ public void inc() {
+ inc(1);
+ }
+
+ public void dec() {
+ dec(1);
+ }
+
+ public synchronized void inc(int delta) {
+ set(value.get() + delta);
+ }
+
+ public synchronized void dec(int delta) {
+ set(value.get() - delta);
+ }
+
+ public long get() {
+ return value.get();
+ }
+
+ @Override
+ public long getCount() {
+ return value.get();
+ }
+}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RecordedEvent.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RecordedEvent.java
new file mode 100644
index 0000000..d48d337
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RecordedEvent.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.management;
+
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import java.text.DateFormat;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class RecordedEvent {
+ private static final DateFormat dateFormat = DateFormat.getDateInstance();
+ public long id;
+ public String name;
+ public long timestamp;
+ public String time;
+ public String category;
+ public String host;
+ public int role;
+ public String text;
+
+ public RecordedEvent() {
+ }
+
+ /**
+ * Create an event. The timestamp is also converted to a time string
+ * @param id id counter
+ * @param name event name
+ * @param timestamp timestamp. If non-zero, is used to build the {@code time} text field.
+ * @param category even category
+ * @param text arbitrary text
+ */
+ public RecordedEvent(long id, String name, long timestamp, String category, String text) {
+ this.id = id;
+ this.name = name;
+ this.timestamp = timestamp;
+ this.time = timestamp > 0 ? dateFormat.format(timestamp) : "";
+ this.category = category;
+ this.text = text;
+ }
+}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/Timestamp.java
similarity index 74%
copy from slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java
copy to slider-core/src/main/java/org/apache/slider/server/appmaster/management/Timestamp.java
index e9655f0..c30e749 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/Timestamp.java
@@ -16,15 +16,18 @@
* limitations under the License.
*/
-package org.apache.slider.server.appmaster.state;
-
-import org.apache.hadoop.yarn.api.records.Resource;
+package org.apache.slider.server.appmaster.management;
/**
- * Factory supplying records created by the App state; entry point
- * for mock code.
+ * A timestamp metric
*/
-public abstract class AbstractRecordFactory {
-
- public abstract Resource newResource();
+public class Timestamp extends LongGauge {
+
+ public Timestamp(long val) {
+ super(val);
+ }
+
+ public Timestamp() {
+ }
+
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/operations/RMOperationHandlerActions.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/operations/RMOperationHandlerActions.java
index 594ee47..b7794ed 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/operations/RMOperationHandlerActions.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/operations/RMOperationHandlerActions.java
@@ -25,6 +25,11 @@
import java.util.List;
public interface RMOperationHandlerActions {
+
+ /**
+ * Release an assigned container
+ * @param containerId container
+ */
void releaseAssignedContainer(ContainerId containerId);
/**
@@ -38,7 +43,7 @@
* @param request request to cancel
*/
void cancelSingleRequest(AMRMClient.ContainerRequest request);
-
+
/**
* Remove a container request
* @param priority1 priority to remove at
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 50534d2..f0d9063 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
@@ -216,6 +216,26 @@
}
@Override
+ public Messages.GetLiveNodesResponseProto getLiveNodes(RpcController controller,
+ Messages.GetLiveNodesRequestProto request) throws ServiceException {
+ try {
+ return real.getLiveNodes(request);
+ } catch (Exception e) {
+ throw wrap(e);
+ }
+ }
+
+ @Override
+ public Messages.NodeInformationProto getLiveNode(RpcController controller,
+ Messages.GetLiveNodeRequestProto request) throws ServiceException {
+ try {
+ return real.getLiveNode(request);
+ } catch (Exception e) {
+ throw wrap(e);
+ }
+ }
+
+ @Override
public Messages.WrappedJsonProto getModelDesired(RpcController controller,
Messages.EmptyPayloadProto request) throws ServiceException {
try {
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
index 2d927c6..b230816 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
@@ -263,6 +263,26 @@
}
@Override
+ public Messages.GetLiveNodesResponseProto getLiveNodes(Messages.GetLiveNodesRequestProto request)
+ throws IOException {
+ try {
+ return endpoint.getLiveNodes(NULL_CONTROLLER, request);
+ } catch (ServiceException e) {
+ throw convert(e);
+ }
+ }
+
+ @Override
+ public Messages.NodeInformationProto getLiveNode(Messages.GetLiveNodeRequestProto request)
+ throws IOException {
+ try {
+ return endpoint.getLiveNode(NULL_CONTROLLER, request);
+ } catch (ServiceException e) {
+ throw convert(e);
+ }
+ }
+
+ @Override
public Messages.WrappedJsonProto getModelDesired(Messages.EmptyPayloadProto request) throws IOException {
try {
return endpoint.getModelDesired(NULL_CONTROLLER, request);
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
index 1581482..bb8f512 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
@@ -30,9 +30,9 @@
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
-import org.apache.slider.core.exceptions.NoSuchNodeException;
import org.apache.slider.core.exceptions.ServiceNotReadyException;
import org.apache.slider.core.exceptions.SliderException;
import org.apache.slider.core.main.LauncherExitCodes;
@@ -51,7 +51,6 @@
import org.apache.slider.server.appmaster.state.StateAccessForProviders;
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.security.KeystoreGenerator;
import org.apache.slider.server.services.security.SecurityStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -65,6 +64,7 @@
import static org.apache.slider.api.proto.RestTypeMarshalling.marshall;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_COMPONENTS;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_CONTAINERS;
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_NODES;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_RESOURCES;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED_APPCONF;
@@ -273,7 +273,7 @@
String role = request.getRole();
Messages.ListNodeUUIDsByRoleResponseProto.Builder builder =
Messages.ListNodeUUIDsByRoleResponseProto.newBuilder();
- List<RoleInstance> nodes = state.enumLiveNodesInRole(role);
+ List<RoleInstance> nodes = state.enumLiveInstancesInRole(role);
for (RoleInstance node : nodes) {
builder.addUuid(node.id);
}
@@ -373,13 +373,11 @@
Messages.GetLiveContainersRequestProto request)
throws IOException {
Map<String, ContainerInformation> infoMap =
- (Map<String, ContainerInformation>) cache.lookupWithIOE(
- LIVE_CONTAINERS);
+ (Map<String, ContainerInformation>) cache.lookupWithIOE(LIVE_CONTAINERS);
Messages.GetLiveContainersResponseProto.Builder builder =
Messages.GetLiveContainersResponseProto.newBuilder();
- for (Map.Entry<String, ContainerInformation> entry : infoMap
- .entrySet()) {
+ for (Map.Entry<String, ContainerInformation> entry : infoMap.entrySet()) {
builder.addNames(entry.getKey());
builder.addContainers(marshall(entry.getValue()));
}
@@ -387,8 +385,8 @@
}
@Override
- public Messages.ContainerInformationProto getLiveContainer(Messages.GetLiveContainerRequestProto request) throws
- IOException {
+ public Messages.ContainerInformationProto getLiveContainer(Messages.GetLiveContainerRequestProto request)
+ throws IOException {
String containerId = request.getContainerId();
RoleInstance id = state.getLiveInstanceByContainerID(containerId);
ContainerInformation containerInformation = id.serialize();
@@ -396,22 +394,61 @@
}
@Override
- public Messages.GetLiveComponentsResponseProto getLiveComponents(Messages.GetLiveComponentsRequestProto request) throws
- IOException {
+ public Messages.GetLiveComponentsResponseProto getLiveComponents(Messages.GetLiveComponentsRequestProto request)
+ throws IOException {
Map<String, ComponentInformation> infoMap =
- (Map<String, ComponentInformation>) cache.lookupWithIOE(
- LIVE_COMPONENTS);
+ (Map<String, ComponentInformation>) cache.lookupWithIOE(LIVE_COMPONENTS);
Messages.GetLiveComponentsResponseProto.Builder builder =
Messages.GetLiveComponentsResponseProto.newBuilder();
- for (Map.Entry<String, ComponentInformation> entry : infoMap
- .entrySet()) {
+ for (Map.Entry<String, ComponentInformation> entry : infoMap.entrySet()) {
builder.addNames(entry.getKey());
builder.addComponents(marshall(entry.getValue()));
}
return builder.build();
}
+
+ @Override
+ public Messages.ComponentInformationProto getLiveComponent(Messages.GetLiveComponentRequestProto request)
+ throws IOException {
+ String name = request.getName();
+ try {
+ return marshall(state.getComponentInformation(name));
+ } catch (YarnRuntimeException e) {
+ throw new FileNotFoundException("Unknown component: " + name);
+ }
+ }
+
+ @Override
+ public Messages.GetLiveNodesResponseProto getLiveNodes(Messages.GetLiveNodesRequestProto request)
+ throws IOException {
+ Map<String, NodeInformation> infoMap =
+ (Map<String, NodeInformation>) cache.lookupWithIOE(LIVE_NODES);
+ Messages.GetLiveNodesResponseProto.Builder builder =
+ Messages.GetLiveNodesResponseProto.newBuilder();
+
+ for (Map.Entry<String, NodeInformation> entry : infoMap.entrySet()) {
+ builder.addNames(entry.getKey());
+ builder.addNodes(marshall(entry.getValue()));
+ }
+ return builder.build();
+ }
+
+
+ @Override
+ public Messages.NodeInformationProto getLiveNode(Messages.GetLiveNodeRequestProto request)
+ throws IOException {
+ String name = request.getName();
+ NodeInformation nodeInformation = state.getNodeInformation(name);
+ if (nodeInformation != null) {
+ return marshall(nodeInformation);
+ } else {
+ throw new FileNotFoundException("Unknown host: " + name);
+ }
+ }
+
+
@Override
public Messages.WrappedJsonProto getModelDesired(Messages.EmptyPayloadProto request) throws IOException {
return lookupAggregateConf(MODEL_DESIRED);
@@ -447,17 +484,6 @@
return lookupConfTree(LIVE_RESOURCES);
}
- @Override
- public Messages.ComponentInformationProto getLiveComponent(Messages.GetLiveComponentRequestProto request) throws
- IOException {
- String name = request.getName();
- try {
- return marshall(state.getComponentInformation(name));
- } catch (YarnRuntimeException e) {
- throw new FileNotFoundException("Unknown component: " + name);
- }
- }
-
/**
* Helper method; look up an aggregate configuration in the cache from
* a key, or raise an exception
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
index 4ff6916..a01fb18 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
@@ -17,18 +17,11 @@
package org.apache.slider.server.appmaster.security;
import com.google.common.base.Preconditions;
-import org.apache.commons.io.FileUtils;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileUtil;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.RawLocalFileSystem;
-import org.apache.hadoop.fs.permission.FsAction;
-import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.slider.common.SliderExitCodes;
+import static org.apache.slider.core.main.LauncherExitCodes.EXIT_UNAUTHORIZE;
import org.apache.slider.common.SliderKeys;
import org.apache.slider.common.SliderXmlConfKeys;
-import org.apache.slider.common.tools.SliderFileSystem;
import org.apache.slider.common.tools.SliderUtils;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.exceptions.SliderException;
@@ -39,7 +32,7 @@
import java.io.IOException;
/**
- *
+ * Class keeping code security information
*/
public class SecurityConfiguration {
@@ -71,7 +64,7 @@
try {
loginUser = getLoginUser();
} catch (IOException e) {
- throw new SliderException(SliderExitCodes.EXIT_BAD_STATE, e,
+ throw new SliderException(EXIT_UNAUTHORIZE, e,
"No principal configured for the application and "
+ "exception raised during retrieval of login user. "
+ "Unable to proceed with application "
@@ -81,7 +74,7 @@
SliderXmlConfKeys.KEY_KEYTAB_PRINCIPAL);
}
if (loginUser == null) {
- throw new SliderException(SliderExitCodes.EXIT_BAD_CONFIGURATION,
+ throw new SliderException(EXIT_UNAUTHORIZE,
"No principal configured for the application "
+ "and no login user found. "
+ "Unable to proceed with application "
@@ -100,7 +93,7 @@
.getComponent(SliderKeys.COMPONENT_AM)
.get(SliderXmlConfKeys.KEY_AM_LOGIN_KEYTAB_NAME);
if (SliderUtils.isSet(keytabFullPath) && SliderUtils.isSet(keytabName)) {
- throw new SliderException(SliderExitCodes.EXIT_BAD_CONFIGURATION,
+ throw new SliderException(EXIT_UNAUTHORIZE,
"Both a keytab on the cluster host (%s) and a"
+ " keytab to be retrieved from HDFS (%s) are"
+ " specified. Please configure only one keytab"
@@ -160,8 +153,7 @@
// download keytab to local, protected directory
localKeytabFile = new File(SliderKeys.KEYTAB_DIR, keytabName);
} else {
- log.info("Leveraging host keytab file {} for login",
- keytabFullPath);
+ log.info("Using host keytab file {} for login", keytabFullPath);
localKeytabFile = new File(keytabFullPath);
}
return localKeytabFile;
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractClusterServices.java
similarity index 82%
rename from slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java
rename to slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractClusterServices.java
index e9655f0..27e25f9 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractClusterServices.java
@@ -21,10 +21,13 @@
import org.apache.hadoop.yarn.api.records.Resource;
/**
- * Factory supplying records created by the App state; entry point
- * for mock code.
+ * Cluster services offered by the YARN infrastructure.
*/
-public abstract class AbstractRecordFactory {
-
+public abstract class AbstractClusterServices {
+ /**
+ * Create a resource for requests
+ * @return a resource which can be built up.
+ */
public abstract Resource newResource();
+
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
index 6990a24..eadb1dc 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
@@ -85,23 +85,9 @@
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
-import static org.apache.slider.api.ResourceKeys.DEF_YARN_CORES;
-import static org.apache.slider.api.ResourceKeys.DEF_YARN_LABEL_EXPRESSION;
-import static org.apache.slider.api.ResourceKeys.DEF_YARN_MEMORY;
-import static org.apache.slider.api.ResourceKeys.YARN_CORES;
-import static org.apache.slider.api.ResourceKeys.YARN_LABEL_EXPRESSION;
-import static org.apache.slider.api.ResourceKeys.YARN_MEMORY;
-import static org.apache.slider.api.RoleKeys.ROLE_FAILED_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_FAILED_RECENTLY_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_FAILED_STARTING_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_NODE_FAILED_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_PREEMPTED_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_RELEASING_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_REQUESTED_INSTANCES;
-import static org.apache.slider.api.StateValues.STATE_CREATED;
-import static org.apache.slider.api.StateValues.STATE_DESTROYED;
-import static org.apache.slider.api.StateValues.STATE_LIVE;
-import static org.apache.slider.api.StateValues.STATE_SUBMITTED;
+import static org.apache.slider.api.ResourceKeys.*;
+import static org.apache.slider.api.RoleKeys.*;
+import static org.apache.slider.api.StateValues.*;
/**
@@ -115,7 +101,7 @@
protected static final Logger log =
LoggerFactory.getLogger(AppState.class);
- private final AbstractRecordFactory recordFactory;
+ private final AbstractClusterServices recordFactory;
private final MetricsAndMonitoring metricsAndMonitoring;
@@ -179,13 +165,13 @@
private ClusterDescription clusterStatusTemplate = new ClusterDescription();
private final Map<Integer, RoleStatus> roleStatusMap =
- new ConcurrentHashMap<Integer, RoleStatus>();
+ new ConcurrentHashMap<>();
private final Map<String, ProviderRole> roles =
- new ConcurrentHashMap<String, ProviderRole>();
+ new ConcurrentHashMap<>();
private final Map<Integer, ProviderRole> rolePriorityMap =
- new ConcurrentHashMap<Integer, ProviderRole>();
+ new ConcurrentHashMap<>();
/**
* The master node.
@@ -214,7 +200,6 @@
/**
* Count of failed containers
-
*/
private final Counter failedContainerCount = new Counter();
@@ -244,28 +229,28 @@
* resources, etc. When container started callback is received,
* the node is promoted from here to the containerMap
*/
- private final Map<ContainerId, RoleInstance> startingNodes =
+ private final Map<ContainerId, RoleInstance> startingContainers =
new ConcurrentHashMap<>();
/**
* List of completed nodes. This isn't kept in the CD as it gets too
* big for the RPC responses. Indeed, we should think about how deep to get this
*/
- private final Map<ContainerId, RoleInstance> completedNodes
+ private final Map<ContainerId, RoleInstance> completedContainers
= new ConcurrentHashMap<>();
/**
* Nodes that failed to start.
* Again, kept out of the CD
*/
- private final Map<ContainerId, RoleInstance> failedNodes =
+ private final Map<ContainerId, RoleInstance> failedContainers =
new ConcurrentHashMap<>();
/**
* Nodes that came assigned to a role above that
* which were asked for -this appears to happen
*/
- private final Set<ContainerId> surplusNodes = new HashSet<ContainerId>();
+ private final Set<ContainerId> surplusNodes = new HashSet<>();
/**
* Map of containerID to cluster nodes, for status reports.
@@ -308,7 +293,7 @@
* @param recordFactory factory for YARN records
* @param metricsAndMonitoring metrics and monitoring services
*/
- public AppState(AbstractRecordFactory recordFactory,
+ public AppState(AbstractClusterServices recordFactory,
MetricsAndMonitoring metricsAndMonitoring) {
this.recordFactory = recordFactory;
this.metricsAndMonitoring = metricsAndMonitoring;
@@ -324,8 +309,7 @@
private void register(String name, Counter counter) {
this.metricsAndMonitoring.getMetrics().register(
- MetricRegistry.name(AppState.class,
- name), counter);
+ MetricRegistry.name(AppState.class, name), counter);
}
public long getFailedCountainerCount() {
@@ -382,21 +366,20 @@
return rolePriorityMap;
}
- private Map<ContainerId, RoleInstance> getStartingNodes() {
- return startingNodes;
+ private Map<ContainerId, RoleInstance> getStartingContainers() {
+ return startingContainers;
}
- private Map<ContainerId, RoleInstance> getCompletedNodes() {
- return completedNodes;
+ private Map<ContainerId, RoleInstance> getCompletedContainers() {
+ return completedContainers;
}
- public Map<ContainerId, RoleInstance> getFailedNodes() {
- return failedNodes;
+ public Map<ContainerId, RoleInstance> getFailedContainers() {
+ return failedContainers;
}
-
- public Map<ContainerId, RoleInstance> getLiveNodes() {
+ public Map<ContainerId, RoleInstance> getLiveContainers() {
return liveNodes;
}
@@ -592,8 +575,9 @@
initClusterStatus();
- // add the roles
+ // set up the role history
roleHistory = new RoleHistory(providerRoles);
+ roleHistory.register(metricsAndMonitoring);
roleHistory.onStart(fs, historyDir);
//rebuild any live containers
@@ -871,11 +855,11 @@
RoleInstance am = new RoleInstance(container);
am.role = SliderKeys.COMPONENT_AM;
am.roleId = SliderKeys.ROLE_AM_PRIORITY_INDEX;
- am.createTime = System.currentTimeMillis();
- am.startTime = System.currentTimeMillis();
+ am.createTime =now();
+ am.startTime = am.createTime;
appMasterNode = am;
//it is also added to the set of live nodes
- getLiveNodes().put(containerId, am);
+ getLiveContainers().put(containerId, am);
putOwnedContainer(containerId, am);
// patch up the role status
@@ -894,7 +878,7 @@
* and it will just cause confusion
*/
public void noteAMLaunched() {
- getLiveNodes().put(appMasterNode.getContainerId(), appMasterNode);
+ getLiveContainers().put(appMasterNode.getContainerId(), appMasterNode);
}
/**
@@ -1002,7 +986,7 @@
*/
public synchronized List<RoleInstance> cloneLiveContainerInfoList() {
List<RoleInstance> allRoleInstances;
- Collection<RoleInstance> values = getLiveNodes().values();
+ Collection<RoleInstance> values = getLiveContainers().values();
allRoleInstances = new ArrayList<>(values);
return allRoleInstances;
}
@@ -1015,7 +999,7 @@
*/
public synchronized RoleInstance getLiveInstanceByContainerID(String containerId)
throws NoSuchNodeException {
- Collection<RoleInstance> nodes = getLiveNodes().values();
+ Collection<RoleInstance> nodes = getLiveContainers().values();
return findNodeInCollection(containerId, nodes);
}
@@ -1062,7 +1046,7 @@
//first, a hashmap of those containerIDs is built up
Set<String> uuidSet = new HashSet<String>(containerIDs);
List<RoleInstance> nodes = new ArrayList<RoleInstance>(uuidSet.size());
- Collection<RoleInstance> clusterNodes = getLiveNodes().values();
+ Collection<RoleInstance> clusterNodes = getLiveContainers().values();
for (RoleInstance node : clusterNodes) {
if (uuidSet.contains(node.id)) {
@@ -1080,7 +1064,7 @@
*/
public synchronized List<RoleInstance> enumLiveNodesInRole(String role) {
List<RoleInstance> nodes = new ArrayList<RoleInstance>();
- Collection<RoleInstance> allRoleInstances = getLiveNodes().values();
+ Collection<RoleInstance> allRoleInstances = getLiveContainers().values();
for (RoleInstance node : allRoleInstances) {
if (role.isEmpty() || role.equals(node.role)) {
nodes.add(node);
@@ -1117,7 +1101,7 @@
*/
private synchronized Map<String, List<String>> createRoleToInstanceMap() {
Map<String, List<String>> map = new HashMap<String, List<String>>();
- for (RoleInstance node : getLiveNodes().values()) {
+ for (RoleInstance node : getLiveContainers().values()) {
List<String> containers = map.get(node.role);
if (containers == null) {
containers = new ArrayList<String>();
@@ -1136,7 +1120,7 @@
*/
public synchronized Map<String, Map<String, ClusterNode>> createRoleToClusterNodeMap() {
Map<String, Map<String, ClusterNode>> map = new HashMap<>();
- for (RoleInstance node : getLiveNodes().values()) {
+ for (RoleInstance node : getLiveContainers().values()) {
Map<String, ClusterNode> containers = map.get(node.role);
if (containers == null) {
@@ -1160,7 +1144,7 @@
instance.state = STATE_SUBMITTED;
instance.container = container;
instance.createTime = now();
- getStartingNodes().put(container.getId(), instance);
+ getStartingContainers().put(container.getId(), instance);
putOwnedContainer(container.getId(), instance);
roleHistory.onContainerStartSubmitted(container, instance);
}
@@ -1354,7 +1338,7 @@
throw new RuntimeException(
"Unknown role for node " + node);
}
- getLiveNodes().put(node.getContainerId(), node);
+ getLiveContainers().put(node.getContainerId(), node);
//tell role history
roleHistory.onContainerStarted(container);
}
@@ -1395,7 +1379,7 @@
instance);
}
instance.startTime = now();
- RoleInstance starting = getStartingNodes().remove(containerId);
+ RoleInstance starting = getStartingContainers().remove(containerId);
if (null == starting) {
throw new YarnRuntimeException(
"Container "+ containerId +"%s is already started");
@@ -1423,7 +1407,7 @@
removeOwnedContainer(containerId);
incFailedCountainerCount();
incStartFailedCountainerCount();
- RoleInstance instance = getStartingNodes().remove(containerId);
+ RoleInstance instance = getStartingContainers().remove(containerId);
if (null != instance) {
RoleStatus roleStatus = lookupRoleStatus(instance.roleId);
String text;
@@ -1434,11 +1418,15 @@
}
instance.diagnostics = text;
roleStatus.noteFailed(true, text, ContainerOutcome.Failed);
- getFailedNodes().put(containerId, instance);
+ getFailedContainers().put(containerId, instance);
roleHistory.onNodeManagerContainerStartFailed(instance.container);
}
}
+ /**
+ * Handle node update from the RM. This syncs up the node map with the RM's view
+ * @param updatedNodes updated nodes
+ */
public synchronized void onNodesUpdated(List<NodeReport> updatedNodes) {
roleHistory.onNodesUpdated(updatedNodes);
}
@@ -1543,11 +1531,11 @@
if (roleInstance != null) {
//it was active, move it to failed
incFailedCountainerCount();
- failedNodes.put(containerId, roleInstance);
+ failedContainers.put(containerId, roleInstance);
} else {
// the container may have been noted as failed already, so look
// it up
- roleInstance = failedNodes.get(containerId);
+ roleInstance = failedContainers.get(containerId);
}
if (roleInstance != null) {
int roleId = roleInstance.roleId;
@@ -1601,12 +1589,12 @@
//remove the node
ContainerId id = status.getContainerId();
log.info("Removing node ID {}", id);
- RoleInstance node = getLiveNodes().remove(id);
+ RoleInstance node = getLiveContainers().remove(id);
if (node != null) {
node.state = STATE_DESTROYED;
node.exitCode = exitStatus;
node.diagnostics = status.getDiagnostics();
- getCompletedNodes().put(id, node);
+ getCompletedContainers().put(id, node);
result.roleInstance = node;
} else {
// not in the list
@@ -1620,7 +1608,7 @@
// finally, verify the node doesn't exist any more
assert !containersBeingReleased.containsKey(
containerId) : "container still in release queue";
- assert !getLiveNodes().containsKey(
+ assert !getLiveContainers().containsKey(
containerId) : " container still in live nodes";
assert getOwnedContainer(containerId) ==
null : "Container still in active container list";
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeEntry.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeEntry.java
index 0f46054..8ff0895 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeEntry.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeEntry.java
@@ -18,23 +18,24 @@
package org.apache.slider.server.appmaster.state;
+import org.apache.slider.api.types.NodeEntryInformation;
+
/**
* Information about the state of a role on a specific node instance.
* No fields are synchronized; sync on the instance to work with it
- <p>
- The two fields `releasing` and `requested` are used to track the ongoing
- state of YARN requests; they do not need to be persisted across stop/start
- cycles. They may be relevant across AM restart, but without other data
- structures in the AM, not enough to track what the AM was up to before
- it was restarted. The strategy will be to ignore unexpected allocation
- responses (which may come from pre-restart) requests, while treating
- unexpected container release responses as failures.
- <p>
- The `active` counter is only decremented after a container release response
- has been received.
- <p>
-
- Accesses are synchronized.
+ * <p>
+ * The two fields `releasing` and `requested` are used to track the ongoing
+ * state of YARN requests; they do not need to be persisted across stop/start
+ * cycles. They may be relevant across AM restart, but without other data
+ * structures in the AM, not enough to track what the AM was up to before
+ * it was restarted. The strategy will be to ignore unexpected allocation
+ * responses (which may come from pre-restart) requests, while treating
+ * unexpected container release responses as failures.
+ * <p>
+ * The `active` counter is only decremented after a container release response
+ * has been received.
+ * <p>
+ *
*/
public class NodeEntry {
@@ -47,30 +48,45 @@
/**
* instance explicitly requested on this node: it's OK if an allocation
* comes in that has not been (and when that happens, this count should
- * not drop)
+ * not drop).
*/
private int requested;
+
+ /** number of starting instances */
private int starting;
+
+ /** incrementing counter of instances that failed to start */
private int startFailed;
+
+ /** incrementing counter of instances that failed */
private int failed;
- private int preempted;
+
/**
* Counter of "failed recently" events. These are all failures
* which have happened since it was last reset.
*/
private int failedRecently;
+
+ /** incrementing counter of instances that have been pre-empted. */
+ private int preempted;
+
/**
* Number of live nodes.
*/
private int live;
+
+ /** number of containers being released off this node */
private int releasing;
+
+ /** timestamp of last use */
private long lastUsed;
-
+
/**
- * Is the node available for assignments. This does not track
- * whether or not there are any outstanding requests for this node
- * @return true if there are no role instances here
- * other than some being released.
+ * Is the node available for assignments? That is, it is
+ * not running any instances of this type, nor are there
+ * any requests oustanding for it.
+ * @return true if a new request could be issued without taking
+ * the number of instances > 1.
*/
public synchronized boolean isAvailable() {
return getActive() == 0 && (requested == 0) && starting == 0;
@@ -266,4 +282,23 @@
sb.append('}');
return sb.toString();
}
+
+ /**
+ * Produced a serialized form which can be served up as JSON
+ * @return a summary of the current role status.
+ */
+ public synchronized NodeEntryInformation serialize() {
+ NodeEntryInformation info = new NodeEntryInformation();
+ info.priority = rolePriority;
+ info.requested = requested;
+ info.releasing = releasing;
+ info.starting = starting;
+ info.startFailed = startFailed;
+ info.failed = failed;
+ info.failedRecently = failedRecently;
+ info.preempted = preempted;
+ info.live = live;
+ info.lastUsed = lastUsed;
+ return info;
+ }
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.java
index fb80b5f..2afdc42 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.java
@@ -18,6 +18,12 @@
package org.apache.slider.server.appmaster.state;
+import org.apache.hadoop.yarn.api.records.NodeReport;
+import org.apache.hadoop.yarn.api.records.NodeState;
+import org.apache.slider.api.types.NodeEntryInformation;
+import org.apache.slider.api.types.NodeInformation;
+import org.apache.slider.common.tools.SliderUtils;
+
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Comparator;
@@ -33,6 +39,19 @@
public final String hostname;
+ /**
+ * last state of node. Starts off as {@link NodeState#RUNNING},
+ * on the assumption that it is live.
+ */
+ private NodeState nodeState = NodeState.RUNNING;
+
+ private NodeReport nodeReport = null;
+
+ /**
+ * time of state update
+ */
+ private long nodeStateUpdateTime = 0;
+
private final List<NodeEntry> nodeEntries;
/**
@@ -44,6 +63,20 @@
nodeEntries = new ArrayList<>(roles);
}
+
+ /**
+ * Update the node status
+ * @param report latest node report
+ * @return true if the node state changed
+ */
+ public boolean updateNode(NodeReport report) {
+ nodeReport = report;
+ NodeState oldState = nodeState;
+ nodeState = report.getNodeState();
+ nodeStateUpdateTime = report.getLastHealthReportTime();
+ return nodeState != oldState;
+ }
+
/**
* Get the entry for a role -if present
* @param role role index
@@ -215,11 +248,35 @@
}
/**
+ * Produced a serialized form which can be served up as JSON
+ * @return a summary of the current role status.
+ */
+ public synchronized NodeInformation serialize() {
+ NodeInformation info = new NodeInformation();
+ info.hostname = hostname;
+ // null-handling state constructor
+ info.state = "" + nodeState;
+ info.lastUpdated = nodeStateUpdateTime;
+ if (nodeReport != null) {
+ info.httpAddress = nodeReport.getHttpAddress();
+ info.rackName = nodeReport.getRackName();
+ info.labels = SliderUtils.join(nodeReport.getNodeLabels(), ", ", false);
+ info.healthReport = nodeReport.getHealthReport();
+ }
+ info.entries = new ArrayList<>(nodeEntries.size());
+ for (NodeEntry nodeEntry : nodeEntries) {
+ info.entries.add(nodeEntry.serialize());
+ }
+ return info;
+ }
+
+ /**
* A comparator for sorting entries where the node is preferred over another.
* <p>
* The exact algorithm may change
*
- * @return +ve int if left is preferred to right; -ve if right over left, 0 for equal
+ * the comparision is a positive int if left is preferred to right;
+ * negative if right over left, 0 for equal
*/
public static class Preferred implements Comparator<NodeInstance>,
Serializable {
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeMap.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeMap.java
index aa50baa..b631057 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeMap.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeMap.java
@@ -19,6 +19,7 @@
package org.apache.slider.server.appmaster.state;
import com.google.common.annotations.VisibleForTesting;
+import org.apache.hadoop.yarn.api.records.NodeReport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,9 +27,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.ListIterator;
import java.util.Map;
/**
@@ -84,27 +83,6 @@
}
/**
- * purge the history of all nodes that have been inactive since the absolute time
- * @param absoluteTime time
- * @return the number purged
- */
- public int purgeUnusedEntries(long absoluteTime) {
- int purged = 0;
- Iterator<Map.Entry<String, NodeInstance>> iterator =
- entrySet().iterator();
- while (iterator.hasNext()) {
- Map.Entry<String, NodeInstance> entry = iterator.next();
- NodeInstance ni = entry.getValue();
- if (!ni.purgeUnusedEntries(absoluteTime)) {
- iterator.remove();
- purged ++;
- }
- }
- return purged;
- }
-
-
- /**
* reset the failed recently counters
*/
public void resetFailedRecently() {
@@ -114,6 +92,17 @@
}
}
+
+ /**
+ * Update the node state
+ * @param hostname host name
+ * @param report latest node report
+ * @return the updated node.
+ */
+ public boolean updateNode(String hostname, NodeReport report) {
+ return getOrCreate(hostname).updateNode(report);
+ }
+
/**
* Clone point
* @return
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java
index 0508579..82b2f2a 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java
@@ -25,6 +25,7 @@
import org.apache.slider.api.ClusterNode;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTreeOperations;
import org.apache.slider.core.exceptions.NoSuchNodeException;
@@ -118,13 +119,13 @@
@Override
- public Map<ContainerId, RoleInstance> getFailedNodes() {
- return appState.getFailedNodes();
+ public Map<ContainerId, RoleInstance> getFailedContainers() {
+ return appState.getFailedContainers();
}
@Override
- public Map<ContainerId, RoleInstance> getLiveNodes() {
- return appState.getLiveNodes();
+ public Map<ContainerId, RoleInstance> getLiveContainers() {
+ return appState.getLiveContainers();
}
@Override
@@ -249,10 +250,10 @@
}
@Override
- public List<RoleInstance> enumLiveNodesInRole(String role) {
- List<RoleInstance> nodes = new ArrayList<RoleInstance>();
+ public List<RoleInstance> enumLiveInstancesInRole(String role) {
+ List<RoleInstance> nodes = new ArrayList<>();
Collection<RoleInstance> allRoleInstances = cloneLiveContainerInfoList();
- getLiveNodes().values();
+ getLiveContainers().values();
for (RoleInstance node : allRoleInstances) {
if (role.isEmpty() || role.equals(node.role)) {
nodes.add(node);
@@ -265,8 +266,7 @@
public List<RoleInstance> lookupRoleContainers(String component) {
RoleStatus roleStatus = lookupRoleStatus(component);
List<RoleInstance> ownedContainerList = cloneOwnedContainerList();
- List<RoleInstance> matching =
- new ArrayList<>(ownedContainerList.size());
+ List<RoleInstance> matching = new ArrayList<>(ownedContainerList.size());
int roleId = roleStatus.getPriority();
for (RoleInstance instance : ownedContainerList) {
if (instance.roleId == roleId) {
@@ -286,7 +286,16 @@
info.containers.add(container.id);
}
return info;
+ }
+ @Override
+ public Map<String, NodeInformation> getNodeInformationSnapshot() {
+ return appState.getRoleHistory().getNodeInformationSnapshot();
+ }
+
+ @Override
+ public NodeInformation getNodeInformation(String hostname) {
+ return appState.getRoleHistory().getNodeInformation(hostname);
}
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
index 78fdcc9..c22d517 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
@@ -23,11 +23,17 @@
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.NodeReport;
+import org.apache.hadoop.yarn.api.records.NodeState;
import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.client.api.AMRMClient;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.common.tools.SliderUtils;
import org.apache.slider.core.exceptions.BadConfigException;
import org.apache.slider.providers.ProviderRole;
+import org.apache.slider.server.appmaster.management.BoolMetric;
+import org.apache.slider.server.appmaster.management.LongGauge;
+import org.apache.slider.server.appmaster.management.MetricsAndMonitoring;
+import org.apache.slider.server.appmaster.management.Timestamp;
import org.apache.slider.server.appmaster.operations.AbstractRMOperation;
import org.apache.slider.server.avro.LoadedRoleHistory;
import org.apache.slider.server.avro.NodeEntryRecord;
@@ -66,23 +72,27 @@
LoggerFactory.getLogger(RoleHistory.class);
private final List<ProviderRole> providerRoles;
private long startTime;
- /**
- * Time when saved
- */
- private long saveTime;
- /**
- * If the history was loaded, the time at which the history was saved
- *
- */
- private long thawedDataTime;
+
+ /** Time when saved */
+ private final Timestamp saveTime = new Timestamp(0);
+
+ /** If the history was loaded, the time at which the history was saved */
+ private final Timestamp thawedDataTime = new Timestamp(0);
private NodeMap nodemap;
private int roleSize;
- private boolean dirty;
+ private final BoolMetric dirty = new BoolMetric(false);
private FileSystem filesystem;
private Path historyPath;
private RoleHistoryWriter historyWriter = new RoleHistoryWriter();
+ /**
+ * When were the nodes updated in a {@link #onNodesUpdated(List)} call.
+ * If zero: never
+ */
+ private final Timestamp nodesUpdatedTime = new Timestamp(0);
+ private final BoolMetric nodeUpdateReceived = new BoolMetric(false);
+
private OutstandingRequestTracker outstandingRequests =
new OutstandingRequestTracker();
@@ -99,8 +109,7 @@
private Set<String> failedNodes = new HashSet<>();
- public RoleHistory(List<ProviderRole> providerRoles) throws
- BadConfigException {
+ public RoleHistory(List<ProviderRole> providerRoles) throws BadConfigException {
this.providerRoles = providerRoles;
roleSize = providerRoles.size();
reset();
@@ -108,15 +117,16 @@
/**
* Reset the variables -this does not adjust the fixed attributes
- * of the history
+ * of the history, but the nodemap and failed node map are cleared.
*/
protected synchronized void reset() throws BadConfigException {
nodemap = new NodeMap(roleSize);
+ failedNodes = new HashSet<>();
resetAvailableNodeLists();
outstandingRequests = new OutstandingRequestTracker();
-
+
Map<Integer, RoleStatus> roleStats = new HashMap<>();
for (ProviderRole providerRole : providerRoles) {
checkProviderRole(roleStats, providerRole);
@@ -124,6 +134,18 @@
}
/**
+ * Register all metrics with the metrics infra
+ * @param metrics metrics
+ */
+ public void register(MetricsAndMonitoring metrics) {
+ metrics.register(RoleHistory.class, dirty, "dirty");
+ metrics.register(RoleHistory.class, nodesUpdatedTime, "nodes-updated.time");
+ metrics.register(RoleHistory.class, nodeUpdateReceived, "nodes-updated.flag");
+ metrics.register(RoleHistory.class, thawedDataTime, "thawed.time");
+ metrics.register(RoleHistory.class, saveTime, "saved.time");
+ }
+
+ /**
* safety check: make sure the provider role is unique amongst
* the role stats...which is extended with the new role
* @param roleStats role stats
@@ -147,7 +169,6 @@
roleStats.put(index, new RoleStatus(providerRole));
}
-
/**
* Add a new provider role to the map
* @param providerRole new provider role
@@ -189,8 +210,7 @@
}
/**
- * Reset the variables -this does not adjust the fixed attributes
- * of the history.
+ * Prepare the history for re-reading its state.
* <p>
* This intended for use by the RoleWriter logic.
* @throws BadConfigException if there is a problem rebuilding the state
@@ -245,21 +265,20 @@
return discarded;
}
-
public synchronized long getStartTime() {
return startTime;
}
public synchronized long getSaveTime() {
- return saveTime;
+ return saveTime.get();
}
public long getThawedDataTime() {
- return thawedDataTime;
+ return thawedDataTime.get();
}
public void setThawedDataTime(long thawedDataTime) {
- this.thawedDataTime = thawedDataTime;
+ this.thawedDataTime.set(thawedDataTime);
}
public synchronized int getRoleSize() {
@@ -275,11 +294,11 @@
}
public synchronized boolean isDirty() {
- return dirty;
+ return dirty.get();
}
public synchronized void setDirty(boolean dirty) {
- this.dirty = dirty;
+ this.dirty.set(dirty);
}
/**
@@ -287,8 +306,8 @@
* @param timestamp timestamp -updates the savetime field
*/
public synchronized void saved(long timestamp) {
- dirty = false;
- saveTime = timestamp;
+ setDirty(false);
+ saveTime.set(timestamp);
}
/**
@@ -301,6 +320,29 @@
}
/**
+ * Get snapshot of the node map
+ * @return a snapshot of the current node state
+ */
+ public Map<String, NodeInformation> getNodeInformationSnapshot() {
+ NodeMap map = cloneNodemap();
+ Map<String, NodeInformation> result = new HashMap<>(map.size());
+ for (Map.Entry<String, NodeInstance> entry : map.entrySet()) {
+ result.put(entry.getKey(), entry.getValue().serialize());
+ }
+ return result;
+ }
+
+ /**
+ * Get the information on a node
+ * @param hostname hostname
+ * @return the information about that host, or null if there is none
+ */
+ public NodeInformation getNodeInformation(String hostname) {
+ NodeInstance nodeInstance = nodemap.get(hostname);
+ return nodeInstance != null ? nodeInstance.serialize() : null;
+ }
+
+ /**
* Get the node instance for the specific node -creating it if needed
* @param hostname node address
* @return the instance
@@ -331,18 +373,6 @@
}
/**
- * Garbage collect the structure -this will drop
- * all nodes that have been inactive since the (relative) age.
- * This will drop the failure counts of the nodes too, so it will
- * lose information that matters.
- * @param age relative age
- */
- public void gc(long age) {
- long absoluteTime = now() - age;
- purgeUnusedEntries(absoluteTime);
- }
-
- /**
* Mark ourselves as dirty
*/
public void touch() {
@@ -355,15 +385,6 @@
}
/**
- * purge the history of
- * all nodes that have been inactive since the absolute time
- * @param absoluteTime time
- */
- public synchronized void purgeUnusedEntries(long absoluteTime) {
- nodemap.purgeUnusedEntries(absoluteTime);
- }
-
- /**
* reset the failed recently counters
*/
public synchronized void resetFailedRecently() {
@@ -402,8 +423,7 @@
*/
public synchronized Path saveHistoryIfDirty() throws IOException {
if (isDirty()) {
- long time = now();
- return saveHistory(time);
+ return saveHistory(now());
} else {
return null;
}
@@ -426,7 +446,7 @@
}
/**
- * Handler for bootstrap event
+ * Handler for bootstrap event: there was no history to thaw
*/
public void onBootstrap() {
log.debug("Role history bootstrapped");
@@ -451,7 +471,7 @@
if (loadedRoleHistory != null) {
rebuild(loadedRoleHistory);
thawSuccessful = true;
- Path loadPath = loadedRoleHistory.getPath();;
+ Path loadPath = loadedRoleHistory.getPath();
log.debug("loaded history from {}", loadPath);
// delete any old entries
try {
@@ -627,8 +647,8 @@
}
/**
- * Get the list of active nodes ... walks the node map so
- * is O(nodes)
+ * Get the list of active nodes ... walks the node map so
+ * is {@code O(nodes)}
* @param role role index
* @return a possibly empty list of nodes with an instance of that node
*/
@@ -654,8 +674,7 @@
* @throws RuntimeException if the container has no hostname
*/
public synchronized NodeInstance getOrCreateNodeInstance(Container container) {
- String hostname = RoleHistoryUtils.hostnameOf(container);
- return nodemap.getOrCreate(hostname);
+ return nodemap.getOrCreate(RoleHistoryUtils.hostnameOf(container));
}
/**
@@ -738,7 +757,7 @@
}
/**
- * Event: a container start has been submitter
+ * Event: a container start has been submitted
* @param container container being started
* @param instance instance bound to the container
*/
@@ -770,24 +789,40 @@
}
/**
+ * Get the last time the nodes were updated from YARN
+ * @return the update time or zero if never updated.
+ */
+ public long getNodesUpdatedTime() {
+ return nodesUpdatedTime.get();
+ }
+
+ /**
* Update failedNodes and nodemap based on the node state
*
* @param updatedNodes list of updated nodes
*/
public synchronized void onNodesUpdated(List<NodeReport> updatedNodes) {
+ log.debug("Updating {} nodes", updatedNodes.size());
+ nodesUpdatedTime.set(now());
+ nodeUpdateReceived.set(true);
for (NodeReport updatedNode : updatedNodes) {
- String hostname = updatedNode.getNodeId() == null
+ String hostname = updatedNode.getNodeId() == null
? null
: updatedNode.getNodeId().getHost();
- if (hostname == null) {
+ NodeState nodeState = updatedNode.getNodeState();
+ if (hostname == null || nodeState == null) {
continue;
}
- if (updatedNode.getNodeState() != null
- && updatedNode.getNodeState().isUnusable()) {
- failedNodes.add(hostname);
- nodemap.remove(hostname);
- } else {
- failedNodes.remove(hostname);
+ // update the node; this also creates an instance if needed
+ boolean updated = nodemap.updateNode(hostname, updatedNode);
+ if (updated) {
+ log.debug("Updated host {} to state {}", hostname, nodeState);
+ if (nodeState.isUnusable()) {
+ log.info("Failed node {}", hostname);
+ failedNodes.add(hostname);
+ } else {
+ failedNodes.remove(hostname);
+ }
}
}
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.java
index e2974fc..98a8311 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.java
@@ -25,6 +25,7 @@
import java.io.Serializable;
import java.util.Comparator;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
@@ -51,6 +52,15 @@
private final AtomicLong failedRecently = new AtomicLong(0);
private final AtomicLong limitsExceeded = new AtomicLong(0);
+ /** flag set to true if there is an outstanding anti-affine request */
+ private final AtomicBoolean pendingAARequest = new AtomicBoolean(false);
+
+ /**
+ * Number of AA requests queued. These should be reduced first on a
+ * flex down.
+ */
+ private int pendingAntiAffineRequestCount = 0;
+
private String failureMessage = "";
public RoleStatus(ProviderRole providerRole) {
@@ -302,6 +312,7 @@
", actual=" + actual +
", requested=" + requested +
", releasing=" + releasing +
+ ", pendingAntiAffineRequestCount=" + pendingAntiAffineRequestCount +
", failed=" + failed +
", failed recently=" + failedRecently.get() +
", node failed=" + nodeFailed.get() +
@@ -355,6 +366,8 @@
info.failedRecently = failedRecently.intValue();
info.nodeFailed = nodeFailed.intValue();
info.preempted = preempted.intValue();
+ info.pendingAntiAffineRequest = pendingAARequest.get();
+ info.pendingAntiAffineRequestCount = pendingAntiAffineRequestCount;
return info;
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
index eef178a..2fc00b2 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
@@ -26,6 +26,7 @@
import org.apache.slider.api.StatusKeys;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTreeOperations;
import org.apache.slider.core.exceptions.NoSuchNodeException;
@@ -37,7 +38,8 @@
import java.util.Map;
/**
- * The methods to offer state access to the providers
+ * The methods to offer state access to the providers and other parts of
+ * the system which want read-only access to the state.
*/
public interface StateAccessForProviders {
@@ -86,17 +88,17 @@
List<String> listConfigSets();
/**
- * Get a map of all the failed nodes
- * @return map of recorded failed notes
+ * Get a map of all the failed containers
+ * @return map of recorded failed containers
*/
- Map<ContainerId, RoleInstance> getFailedNodes();
+ Map<ContainerId, RoleInstance> getFailedContainers();
/**
- * Get the live nodes.
+ * Get the live containers.
*
* @return the live nodes
*/
- Map<ContainerId, RoleInstance> getLiveNodes();
+ Map<ContainerId, RoleInstance> getLiveContainers();
/**
* Get the current cluster description
@@ -267,11 +269,11 @@
Map<String, Map<String, ClusterNode>> getRoleClusterNodeMapping();
/**
- * Enum all nodes by role.
+ * Enum all role instances by role.
* @param role role, or "" for all roles
- * @return a list of nodes, may be empty
+ * @return a list of instances, may be empty
*/
- List<RoleInstance> enumLiveNodesInRole(String role);
+ List<RoleInstance> enumLiveInstancesInRole(String role);
/**
* Look up all containers of a specific component name
@@ -280,5 +282,25 @@
*/
List<RoleInstance> lookupRoleContainers(String component);
+ /**
+ * Get the JSON serializable information about a component
+ * @param component component to look up
+ * @return a structure describing the component.
+ */
ComponentInformation getComponentInformation(String component);
+
+
+ /**
+ * Get a clone of the nodemap.
+ * The instances inside are not cloned
+ * @return a possibly empty map of hostname top info
+ */
+ Map<String, NodeInformation> getNodeInformationSnapshot();
+
+ /**
+ * get information on a node
+ * @param hostname hostname to look up
+ * @return the information, or null if there is no information held.
+ */
+ NodeInformation getNodeInformation(String hostname);
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApi.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApi.java
index 179ae8c..0f99d6d 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApi.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApi.java
@@ -81,7 +81,15 @@
*/
QueueAccess getQueues();
+ /**
+ * API for AM operations
+ * @return current operations implementation
+ */
AppMasterActionOperations getAMOperations();
+ /**
+ * Local cache of content
+ * @return the cache
+ */
ContentCache getContentCache();
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java
index 0730a21..a0fe310 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java
@@ -89,8 +89,7 @@
@Override
public Map<String,RoleStatus> getRoleStatusByName() {
List<RoleStatus> roleStatuses = appState.cloneRoleStatusList();
- Map<String, RoleStatus> map =
- new TreeMap<String, RoleStatus>();
+ Map<String, RoleStatus> map = new TreeMap<>();
for (RoleStatus status : roleStatuses) {
map.put(status.getName(), status);
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java
index 06b7ba2..424107c 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java
@@ -116,7 +116,6 @@
*/
public static final String SYSTEM_THREADS = SYSTEM + "/threads";
-
/**
* application subpath
*/
@@ -134,7 +133,7 @@
public static final String LIVE_RESOURCES = "/live/resources";
public static final String LIVE_CONTAINERS = "/live/containers";
public static final String LIVE_COMPONENTS = "/live/components";
- public static final String LIVE_NODES = "/live/";
+ public static final String LIVE_NODES = "/live/nodes";
public static final String LIVE_LIVENESS = "/live/liveness";
public static final String LIVE_STATISTICS = "/live/statistics";
public static final String MODEL = "/model";
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResouceContentCacheFactory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResouceContentCacheFactory.java
index e7b8fc7..2facf16 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResouceContentCacheFactory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResouceContentCacheFactory.java
@@ -18,10 +18,6 @@
package org.apache.slider.server.appmaster.web.rest.application;
-import org.apache.slider.api.types.ComponentInformation;
-import org.apache.slider.api.types.ContainerInformation;
-import org.apache.slider.core.conf.AggregateConf;
-import org.apache.slider.core.conf.ConfTree;
import org.apache.slider.server.appmaster.state.StateAccessForProviders;
import org.apache.slider.server.appmaster.web.rest.application.resources.AggregateModelRefresher;
import org.apache.slider.server.appmaster.web.rest.application.resources.AppconfRefresher;
@@ -29,63 +25,39 @@
import org.apache.slider.server.appmaster.web.rest.application.resources.ContentCache;
import org.apache.slider.server.appmaster.web.rest.application.resources.LiveComponentsRefresher;
import org.apache.slider.server.appmaster.web.rest.application.resources.LiveContainersRefresher;
+import org.apache.slider.server.appmaster.web.rest.application.resources.LiveNodesRefresher;
import org.apache.slider.server.appmaster.web.rest.application.resources.LiveResourcesRefresher;
import org.apache.slider.server.appmaster.web.rest.application.resources.LiveStatisticsRefresher;
-import java.util.Map;
-
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_COMPONENTS;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_CONTAINERS;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_RESOURCES;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_STATISTICS;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED_APPCONF;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED_RESOURCES;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_RESOLVED;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_RESOLVED_APPCONF;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_RESOLVED_RESOURCES;
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.*;
public class ApplicationResouceContentCacheFactory {
public static final int LIFESPAN = 500;
/**
* Build the content cache
- * @param cache cache to construct
* @param state state view
*/
public static ContentCache createContentCache(
StateAccessForProviders state) {
ContentCache cache = new ContentCache();
- cache.put(LIVE_RESOURCES,
- new CachedContent<ConfTree>(LIFESPAN,
- new LiveResourcesRefresher(state)));
- cache.put(LIVE_CONTAINERS,
- new CachedContent<Map<String, ContainerInformation>>(LIFESPAN,
- new LiveContainersRefresher(state)));
- cache.put(LIVE_COMPONENTS,
- new CachedContent<Map<String, ComponentInformation>>(LIFESPAN,
- new LiveComponentsRefresher(state)));
+ cache.put(LIVE_RESOURCES, new CachedContent<>(LIFESPAN, new LiveResourcesRefresher(state)));
+ cache.put(LIVE_CONTAINERS, new CachedContent<>(LIFESPAN, new LiveContainersRefresher(state)));
+ cache.put(LIVE_COMPONENTS, new CachedContent<>(LIFESPAN, new LiveComponentsRefresher(state)));
+ cache.put(LIVE_NODES, new CachedContent<>(LIFESPAN, new LiveNodesRefresher(state)));
cache.put(MODEL_DESIRED,
- new CachedContent<AggregateConf>(LIFESPAN,
- new AggregateModelRefresher(state, false)));
+ new CachedContent<>(LIFESPAN, new AggregateModelRefresher(state, false)));
cache.put(MODEL_RESOLVED,
- new CachedContent<AggregateConf>(LIFESPAN,
- new AggregateModelRefresher(state, true)));
+ new CachedContent<>(LIFESPAN, new AggregateModelRefresher(state, true)));
cache.put(MODEL_RESOLVED_APPCONF,
- new CachedContent<ConfTree>(LIFESPAN,
- new AppconfRefresher(state, false, false)));
+ new CachedContent<>(LIFESPAN, new AppconfRefresher(state, false, false)));
cache.put(MODEL_RESOLVED_RESOURCES,
- new CachedContent<ConfTree>(LIFESPAN,
- new AppconfRefresher(state, false, true)));
+ new CachedContent<>(LIFESPAN, new AppconfRefresher(state, false, true)));
cache.put(MODEL_DESIRED_APPCONF,
- new CachedContent<ConfTree>(LIFESPAN,
- new AppconfRefresher(state, true, false)));
+ new CachedContent<>(LIFESPAN, new AppconfRefresher(state, true, false)));
cache.put(MODEL_DESIRED_RESOURCES,
- new CachedContent<ConfTree>(LIFESPAN,
- new AppconfRefresher(state, true, true)));
- cache.put(LIVE_STATISTICS,
- new CachedContent<Map<String, Integer>>(LIFESPAN,
- new LiveStatisticsRefresher(state)));
+ new CachedContent<>(LIFESPAN, new AppconfRefresher(state, true, true)));
+ cache.put(LIVE_STATISTICS, new CachedContent<>(LIFESPAN, new LiveStatisticsRefresher(state)));
return cache;
}
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResource.java
index 383bc5a..1b54a31 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResource.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResource.java
@@ -25,6 +25,7 @@
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
import org.apache.slider.core.exceptions.NoSuchNodeException;
@@ -285,8 +286,7 @@
public Map<String, ComponentInformation> getLiveComponents() {
markGet(SLIDER_SUBPATH_APPLICATION, LIVE_COMPONENTS);
try {
- return (Map<String, ComponentInformation>) cache.lookup(
- LIVE_COMPONENTS);
+ return (Map<String, ComponentInformation>) cache.lookup(LIVE_COMPONENTS);
} catch (Exception e) {
throw buildException(LIVE_COMPONENTS, e);
}
@@ -346,6 +346,38 @@
}
*/
+
+ @GET
+ @Path(LIVE_NODES)
+ @Produces({APPLICATION_JSON})
+ public Map<String, NodeInformation> getLiveNodes() {
+ markGet(SLIDER_SUBPATH_APPLICATION, LIVE_COMPONENTS);
+ try {
+ return (Map<String, NodeInformation>) cache.lookup(LIVE_NODES);
+ } catch (Exception e) {
+ throw buildException(LIVE_COMPONENTS, e);
+ }
+ }
+
+ @GET
+ @Path(LIVE_NODES + "/{node}")
+ @Produces({APPLICATION_JSON})
+ public NodeInformation getLiveNode(@PathParam("node") String node) {
+ markGet(SLIDER_SUBPATH_APPLICATION, LIVE_COMPONENTS);
+ try {
+ NodeInformation ni = state.getNodeInformation(node);
+ if (ni != null) {
+ return ni;
+ } else {
+ throw new NotFoundException("Unknown node: " + node);
+ }
+ } catch (NotFoundException e) {
+ throw e;
+ } catch (Exception e) {
+ throw buildException(LIVE_CONTAINERS + "/" + node, e);
+ }
+ }
+
/**
* Statistics of the application
* @return snapshot statistics
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/resources/LiveNodesRefresher.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/resources/LiveNodesRefresher.java
new file mode 100644
index 0000000..d4ab8fe
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/resources/LiveNodesRefresher.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.web.rest.application.resources;
+
+import org.apache.slider.api.types.NodeInformation;
+import org.apache.slider.server.appmaster.state.StateAccessForProviders;
+
+import java.util.Map;
+
+/**
+ * Update the live nodes map
+ */
+public class LiveNodesRefresher
+ implements ResourceRefresher<Map<String, NodeInformation>> {
+
+ private final StateAccessForProviders state;
+
+ public LiveNodesRefresher(StateAccessForProviders state) {
+ this.state = state;
+ }
+
+ @Override
+ public Map<String, NodeInformation> refresh() {
+ return state.getNodeInformationSnapshot();
+ }
+}
diff --git a/slider-core/src/main/proto/SliderClusterMessages.proto b/slider-core/src/main/proto/SliderClusterMessages.proto
index caca87b..50c10e4 100644
--- a/slider-core/src/main/proto/SliderClusterMessages.proto
+++ b/slider-core/src/main/proto/SliderClusterMessages.proto
@@ -24,21 +24,28 @@
//import "Security.proto";
+/*
+ To debug compilation problems, bypass the maven build and invoke protoc
+ from the command line
+
+ protoc --java_out=target src/main/proto/SliderClusterMessages.proto
+*/
+
message RoleInstanceState {
- required string name = 1;
- optional string role = 2;
- required uint32 state = 4;
- required uint32 exitCode = 5;
- optional string command = 6;
+ required string name = 1;
+ optional string role = 2;
+ required uint32 state = 4;
+ required uint32 exitCode = 5;
+ optional string command = 6;
optional string diagnostics = 7;
- repeated string output = 8;
+ repeated string output = 8;
repeated string environment = 9;
- required uint32 roleId = 10;
- required bool released = 11;
- required int64 createTime = 12;
- required int64 startTime = 13;
- required string host = 14;
- required string hostURL = 15;
+ required uint32 roleId = 10;
+ required bool released = 11;
+ required int64 createTime = 12;
+ required int64 startTime = 13;
+ required string host = 14;
+ required string hostURL = 15;
optional string appVersion = 16;
}
@@ -65,9 +72,9 @@
/**
message to include
*/
- required string message = 1;
- repeated string container = 2;
- repeated string component = 3;
+ required string message = 1;
+ repeated string container = 2;
+ repeated string component = 3;
}
/**
@@ -181,9 +188,9 @@
* AM suicide
*/
message AMSuicideRequestProto {
- required string text = 1;
- required int32 signal = 2;
- required int32 delay = 3;
+ required string text = 1;
+ required int32 signal = 2;
+ required int32 delay = 3;
}
/**
@@ -206,9 +213,9 @@
* Get the definition back as three separate JSON strings
*/
message GetInstanceDefinitionResponseProto {
- required string internal = 1;
- required string resources = 2;
- required string application = 3;
+ required string internal = 1;
+ required string resources = 2;
+ required string application = 3;
}
@@ -233,42 +240,43 @@
* see org.apache.slider.api.types.ComponentInformation
*/
message ComponentInformationProto {
- optional string name = 1;
- optional int32 priority = 2;
- optional int32 desired = 3;
- optional int32 actual = 4;
- optional int32 releasing = 5;
- optional int32 requested = 6;
- optional int32 failed = 7;
- optional int32 started = 8;
- optional int32 startFailed = 9;
- optional int32 completed = 10;
- optional int32 totalRequested = 11;
- optional string failureMessage = 12 ;
- optional int32 placementPolicy = 13;
- repeated string containers = 14;
+ optional string name = 1;
+ optional int32 priority = 2;
+ optional int32 desired = 3;
+ optional int32 actual = 4;
+ optional int32 releasing = 5;
+ optional int32 requested = 6;
+ optional int32 failed = 7;
+ optional int32 started = 8;
+ optional int32 startFailed = 9;
+ optional int32 completed = 10;
+ optional int32 totalRequested = 11;
+ optional string failureMessage =12;
+ optional int32 placementPolicy =13;
+ repeated string containers = 14;
optional int32 failedRecently = 15;
- optional int32 nodeFailed = 16;
- optional int32 preempted = 17;
+ optional int32 nodeFailed = 16;
+ optional int32 preempted = 17;
+ optional int32 pendingAntiAffineRequestCount = 18;
}
/*
* see org.apache.slider.api.types.ContainerInformation
*/
message ContainerInformationProto {
- optional string containerId = 1;
- optional string component = 2;
- optional bool released = 3;
- optional int32 state = 4;
- optional int32 exitCode = 5;
- optional string diagnostics = 6;
- optional int64 createTime = 7;
- optional int64 startTime = 8;
- repeated string output = 9;
- optional string host = 10;
- optional string hostURL = 11;
- optional string placement = 12;
- optional string appVersion = 13;
+ optional string containerId = 1;
+ optional string component = 2;
+ optional bool released = 3;
+ optional int32 state = 4;
+ optional int32 exitCode = 5;
+ optional string diagnostics = 6;
+ optional int64 createTime = 7;
+ optional int64 startTime = 8;
+ repeated string output = 9;
+ optional string host = 10;
+ optional string hostURL = 11;
+ optional string placement = 12;
+ optional string appVersion = 13;
}
@@ -279,10 +287,32 @@
optional string text = 1;
optional string verb = 2;
optional string body = 3;
- optional int64 time = 4;
+ optional int64 time = 4;
}
+message NodeEntryInformationProto {
+ required int32 priority = 1;
+ required int32 requested = 2;
+ required int32 starting = 3;
+ required int32 startFailed = 4;
+ required int32 failed = 5;
+ required int32 failedRecently= 6;
+ required int32 preempted = 7;
+ required int32 live = 8;
+ required int32 releasing = 9;
+ required int64 lastUsed = 10;
+}
+message NodeInformationProto {
+ required string hostname = 1;
+ required string state = 2;
+ required string httpAddress = 3;
+ required string rackName = 4;
+ required string labels = 5;
+ required string healthReport= 6;
+ required int64 lastUpdated = 7;
+ repeated NodeEntryInformationProto entries = 8;
+}
message GetModelRequestProto {
}
@@ -345,12 +375,24 @@
}
message GetCertificateStoreRequestProto {
- optional string hostname = 1;
+ optional string hostname = 1;
required string requesterId = 2;
- required string password = 3;
- required string type = 4;
+ required string password = 3;
+ required string type = 4;
}
message GetCertificateStoreResponseProto {
required bytes store = 1;
+}
+
+message GetLiveNodesRequestProto {
+}
+
+message GetLiveNodesResponseProto {
+ repeated string names = 1;
+ repeated NodeInformationProto nodes = 2;
+}
+
+message GetLiveNodeRequestProto {
+ required string name = 1;
}
\ No newline at end of file
diff --git a/slider-core/src/main/proto/SliderClusterProtocol.proto b/slider-core/src/main/proto/SliderClusterProtocol.proto
index aa59bb4..4221b1d 100644
--- a/slider-core/src/main/proto/SliderClusterProtocol.proto
+++ b/slider-core/src/main/proto/SliderClusterProtocol.proto
@@ -129,18 +129,24 @@
rpc getLivenessInformation(GetApplicationLivenessRequestProto)
returns(ApplicationLivenessInformationProto);
-
+
rpc getLiveContainers(GetLiveContainersRequestProto)
returns(GetLiveContainersResponseProto);
rpc getLiveContainer(GetLiveContainerRequestProto)
returns(ContainerInformationProto);
-
+
rpc getLiveComponents(GetLiveComponentsRequestProto)
returns(GetLiveComponentsResponseProto);
-
+
rpc getLiveComponent(GetLiveComponentRequestProto)
returns(ComponentInformationProto);
+
+ rpc getLiveNodes(GetLiveNodesRequestProto)
+ returns(GetLiveNodesResponseProto);
+
+ rpc getLiveNode(GetLiveNodeRequestProto)
+ returns(NodeInformationProto);
// AggregateConf getModelDesired()
rpc getModelDesired(EmptyPayloadProto)
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/AbstractAppApiTestDelegates.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/AbstractAppApiTestDelegates.groovy
index 58eb49e..6d1bcfc 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/AbstractAppApiTestDelegates.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/AbstractAppApiTestDelegates.groovy
@@ -24,8 +24,10 @@
import org.apache.slider.api.StateValues
import org.apache.slider.api.types.ComponentInformation
import org.apache.slider.api.types.ContainerInformation
+import org.apache.slider.api.types.NodeInformation
import org.apache.slider.core.conf.ConfTreeOperations
import org.apache.slider.test.Outcome
+import org.junit.Test
import static org.apache.slider.api.ResourceKeys.*
import static org.apache.slider.api.StatusKeys.*
@@ -203,6 +205,17 @@
assert !liveness.requestsOutstanding
}
+
+ public void testListNodes() throws Throwable {
+ describe "Node listing via $appAPI"
+ def liveNodes = appAPI.liveNodes
+ assert liveNodes.size() > 0
+ def h = liveNodes.keySet()[0];
+ def localhost = appAPI.getLiveNode(h)
+
+
+ }
+
/**
* Probe that spins until the liveness query fails
* @param args argument map
@@ -226,6 +239,7 @@
testLiveContainers();
testRESTModel()
testAppLiveness()
+// testListNodes();
}
public void testFlexOperation() {
@@ -263,9 +277,10 @@
String key = args["key"]
String val = args["val"]
def resolved = appAPI.getResolvedResources()
- return Outcome.fromBool(resolved.get(key)==val)
+ return Outcome.fromBool(resolved.get(key) == val)
}
+
/**
* Get the resolved value and push that out as the new state
*
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/IpcApiClientTestDelegates.java b/slider-core/src/test/groovy/org/apache/slider/agent/rest/IpcApiClientTestDelegates.java
index 9411c3c..f339f6d 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/IpcApiClientTestDelegates.java
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/IpcApiClientTestDelegates.java
@@ -25,5 +25,5 @@
public IpcApiClientTestDelegates(SliderApplicationApi appAPI) {
super(true, appAPI);
}
-
+
}
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
index c0f123d..ed10479 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
@@ -59,26 +59,26 @@
application = appendToURL(appmaster, SLIDER_PATH_APPLICATION)
}
-
public void testCodahaleOperations() throws Throwable {
describe "Codahale operations $this"
getWebPage(appmaster)
getWebPage(appmaster, SYSTEM_THREADS)
getWebPage(appmaster, SYSTEM_HEALTHCHECK)
getWebPage(appmaster, SYSTEM_PING)
- getWebPage(appmaster, SYSTEM_METRICS_JSON)
+ def page = getWebPage(appmaster, SYSTEM_METRICS_JSON)
+ validateCodahaleJson(parseMetrics(page))
}
public void logCodahaleMetrics() {
// query Coda Hale metrics
- log.info getWebPage(appmaster, SYSTEM_HEALTHCHECK)
- log.info getWebPage(appmaster, SYSTEM_METRICS)
+ log.info prettyPrintJson(getWebPage(appmaster, SYSTEM_HEALTHCHECK))
+ log.info prettyPrintJson(getWebPage(appmaster, SYSTEM_METRICS))
}
public void testMimeTypes() throws Throwable {
describe "Mime Types $this"
- HttpOperationResponse response= executeGet(
+ HttpOperationResponse response = executeGet(
appendToURL(appmaster,
SLIDER_PATH_APPLICATION, LIVE_RESOURCES))
response.headers.each { key, val -> log.info("$key $val")}
@@ -150,9 +150,6 @@
assert components.size() >= 1
log.info "${components}"
- ComponentInformation amComponentInfo =
- (ComponentInformation) components[COMPONENT_AM]
-
ComponentInformation amFullInfo = fetchType(
ComponentInformation,
appmaster,
@@ -278,7 +275,6 @@
MediaType.TEXT_PLAIN)
log.info "Stopped: $outcome"
-
// now a ping is expected to fail
String ping = appendToURL(appmaster, SLIDER_PATH_APPLICATION, ACTION_PING)
@@ -317,7 +313,6 @@
@Override
public void testSuiteGetOperations() {
-
testCodahaleOperations()
testMimeTypes()
testLiveResources()
@@ -369,10 +364,8 @@
* @return the outcome
*/
Outcome probeForResolveConfValues(Map args) {
- assert args["key"]
- assert args["val"]
- String key = args["key"]
- String val = args["val"]
+ String key = requiredMapValue(args, "key")
+ String val = requiredMapValue(args, "val")
ConfTreeOperations resolved = modelDesiredResolvedResources
return Outcome.fromBool(resolved.get(key) == val)
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
index 7e10d30..9808688 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
@@ -18,16 +18,8 @@
package org.apache.slider.agent.rest
-import com.sun.jersey.api.client.Client
-import com.sun.jersey.api.client.config.ClientConfig
-import com.sun.jersey.api.json.JSONConfiguration
-import com.sun.jersey.client.apache.ApacheHttpClient
-import com.sun.jersey.client.apache.ApacheHttpClientHandler
-import com.sun.jersey.client.apache.config.DefaultApacheHttpClientConfig
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
-import org.apache.commons.httpclient.HttpClient
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
import org.apache.hadoop.registry.client.api.RegistryOperations
import org.apache.hadoop.yarn.api.records.ApplicationReport
import org.apache.slider.agent.AgentMiniClusterTestBase
@@ -42,8 +34,7 @@
import org.apache.slider.server.appmaster.rpc.RpcBinder
import org.junit.Test
-import static org.apache.slider.server.appmaster.management.MetricsKeys.METRICS_LOGGING_ENABLED
-import static org.apache.slider.server.appmaster.management.MetricsKeys.METRICS_LOGGING_LOG_INTERVAL
+import static org.apache.slider.server.appmaster.management.MetricsKeys.*
import static org.apache.slider.server.appmaster.web.rest.RestPaths.*
@CompileStatic
@@ -79,16 +70,15 @@
// set up url config to match
initHttpTestSupport(launcher.configuration)
-
execOperation(WEB_STARTUP_TIME) {
GET(directAM)
}
execOperation(WEB_STARTUP_TIME) {
- def metrics = GET(directAM, SYSTEM_METRICS)
- log.info metrics
+ def metrics = GET(directAM, SYSTEM_METRICS_JSON)
+ log.info prettyPrintJson(metrics)
}
-
+
GET(proxyAM)
log.info GET(proxyAM, SYSTEM_PING)
@@ -96,15 +86,18 @@
log.info GET(proxyAM, SYSTEM_HEALTHCHECK)
log.info GET(proxyAM, SYSTEM_METRICS_JSON)
- /*
- Is the back door required? If so, don't test complex verbs via the proxy
- */
+ // using the metrics, await the first node status update
+ awaitGaugeValue(
+ appendToURL(proxyAM, SYSTEM_METRICS_JSON),
+ "org.apache.slider.server.appmaster.state.RoleHistory.nodes-updated.flag",
+ 1,
+ WEB_STARTUP_TIME * 2, 500)
+
+ // Is the back door required? If so, don't test complex verbs via the proxy
def proxyComplexVerbs = !SliderXmlConfKeys.X_DEV_INSECURE_REQUIRED
- /*
- * Only do direct complex verbs if the no back door is needed, or if
- * it is enabled
- */
+ // Only do direct complex verbs if the no back door is needed, or if
+ // it is enabled
def directComplexVerbs = proxyComplexVerbs || SLIDER_CONFIG.getBoolean(
SliderXmlConfKeys.X_DEV_INSECURE_WS,
SliderXmlConfKeys.X_DEV_INSECURE_DEFAULT)
@@ -117,14 +110,12 @@
log.info "Content type: ${response.contentType}"
describe "proxied response headers from AM Web resources"
- response = executeGet(appendToURL(proxyAM,
- SLIDER_PATH_APPLICATION, LIVE_RESOURCES))
+ response = executeGet(appendToURL(proxyAM, SLIDER_PATH_APPLICATION, LIVE_RESOURCES))
response.headers.each { key, val -> log.info("$key $val") }
log.info "Content type: ${response.contentType}"
-
def ugiClient = createUGIJerseyClient();
-
+
describe "Proxy SliderRestClient Tests"
RestAPIClientTestDelegates proxySliderRestAPI =
new RestAPIClientTestDelegates(proxyAM, ugiClient, proxyComplexVerbs)
@@ -134,8 +125,7 @@
RestAPIClientTestDelegates directSliderRestAPI =
new RestAPIClientTestDelegates(directAM, ugiClient, directComplexVerbs)
directSliderRestAPI.testSuiteAll()
-
-
+
describe "Proxy Jersey Tests"
JerseyTestDelegates proxyJerseyTests =
new JerseyTestDelegates(proxyAM, ugiClient, proxyComplexVerbs)
@@ -143,14 +133,12 @@
describe "Direct Jersey Tests"
- JerseyTestDelegates directJerseyTests =
- new JerseyTestDelegates(directAM, ugiClient)
+ JerseyTestDelegates directJerseyTests = new JerseyTestDelegates(directAM, ugiClient)
directJerseyTests.testSuiteAll()
describe "Direct Tests"
- LowLevelRestTestDelegates direct =
- new LowLevelRestTestDelegates(directAM, directComplexVerbs)
+ LowLevelRestTestDelegates direct = new LowLevelRestTestDelegates(directAM, directComplexVerbs)
direct.testSuiteAll()
describe "Proxy Tests"
@@ -176,13 +164,10 @@
describe( "IPC equivalent operations")
def sliderClusterProtocol = RpcBinder.getProxy(conf, report, 1000)
- SliderApplicationIpcClient ipcClient =
- new SliderApplicationIpcClient(sliderClusterProtocol)
- IpcApiClientTestDelegates ipcDelegates =
- new IpcApiClientTestDelegates(ipcClient)
+ SliderApplicationIpcClient ipcClient = new SliderApplicationIpcClient(sliderClusterProtocol)
+ IpcApiClientTestDelegates ipcDelegates = new IpcApiClientTestDelegates(ipcClient)
ipcDelegates.testSuiteAll()
-
-
+
// log the metrics to show what's up
direct.logCodahaleMetrics();
@@ -193,23 +178,4 @@
}
}
- /**
- * Create Jersey client with URL handling by way
- * of the Apache HttpClient classes.
- * @return a Jersey client
- */
- public static Client createJerseyClientHttpClient() {
-
- def httpclient = new HttpClient(new MultiThreadedHttpConnectionManager());
- httpclient.httpConnectionManager.params.connectionTimeout = 10000;
- ClientConfig clientConfig = new DefaultApacheHttpClientConfig();
- clientConfig.features[JSONConfiguration.FEATURE_POJO_MAPPING] = Boolean.TRUE;
-
- def handler = new ApacheHttpClientHandler(httpclient, clientConfig);
-
- def client = new ApacheHttpClient(handler)
- client.followRedirects = true
- return client;
- }
-
}
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateAppRestIntegration.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateAppRestIntegration.groovy
index 7838886..d36fdbc 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateAppRestIntegration.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateAppRestIntegration.groovy
@@ -50,7 +50,6 @@
public void testCachedIntDocument() throws Throwable {
ContentCache cache = new ContentCache()
-
def refresher = new IntRefresher()
assert 0 == refresher.count
def entry = new CachedContentManagedTimer(refresher)
@@ -103,8 +102,8 @@
new ApplicationResource(webAppApi)
def containers = applicationResource.liveContainers
assert containers.size() == instances.size()
-
}
+
/**
* Get a state accessor for the appState field
* @return something to hand down to refreshers and resources
@@ -146,7 +145,7 @@
class CachedContentManagedTimer extends CachedContent {
int time = 0;
-
+
@Override
protected long now() {
return time++;
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockAppState.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockAppState.groovy
index 2cc13c2..6e21a38 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockAppState.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockAppState.groovy
@@ -19,7 +19,7 @@
import org.apache.slider.providers.ProviderRole
import org.apache.slider.server.appmaster.management.MetricsAndMonitoring
-import org.apache.slider.server.appmaster.state.AbstractRecordFactory
+import org.apache.slider.server.appmaster.state.AbstractClusterServices
import org.apache.slider.server.appmaster.state.AppState
/**
@@ -27,7 +27,7 @@
*/
class MockAppState extends AppState {
- public MockAppState(AbstractRecordFactory recordFactory) {
+ public MockAppState(AbstractClusterServices recordFactory) {
super(recordFactory, new MetricsAndMonitoring());
}
@@ -37,7 +37,7 @@
* Instance with a mock record factory
*/
public MockAppState() {
- super(new MockRecordFactory(), new MetricsAndMonitoring());
+ super(new MockClusterServices(), new MetricsAndMonitoring());
}
public Map<String, ProviderRole> getRoleMap() {
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRecordFactory.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockClusterServices.groovy
similarity index 87%
rename from slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRecordFactory.groovy
rename to slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockClusterServices.groovy
index f7d353f..d27a6bb 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRecordFactory.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockClusterServices.groovy
@@ -19,9 +19,9 @@
package org.apache.slider.server.appmaster.model.mock
import org.apache.hadoop.yarn.api.records.Resource
-import org.apache.slider.server.appmaster.state.AbstractRecordFactory
+import org.apache.slider.server.appmaster.state.AbstractClusterServices
-class MockRecordFactory extends AbstractRecordFactory {
+class MockClusterServices extends AbstractClusterServices {
@Override
Resource newResource() {
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/monkey/TestMockMonkey.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/monkey/TestMockMonkey.groovy
index 82192b9..ec202b0 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/monkey/TestMockMonkey.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/monkey/TestMockMonkey.groovy
@@ -148,7 +148,7 @@
public void testContainerKillerIgnoresAM() throws Throwable {
addAppMastertoAppState()
- assert 1 == appState.liveNodes.size()
+ assert 1 == appState.liveContainers.size()
def chaos = new ChaosKillContainer(appState,
queues,
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy
index 29f0510..e301e6f 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy
@@ -107,7 +107,7 @@
webResource = client.resource(sliderConfigset + "dummy-site");
- execOperation(30000) {
+ execOperation(WEB_STARTUP_TIME) {
GET(sliderConfigset)
}
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestClusterSpecificationBlock.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestClusterSpecificationBlock.groovy
index e1964f5..5a7a891 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestClusterSpecificationBlock.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestClusterSpecificationBlock.groovy
@@ -19,15 +19,14 @@
import com.google.inject.AbstractModule
import com.google.inject.Guice
import com.google.inject.Injector
-import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import org.apache.hadoop.yarn.webapp.hamlet.Hamlet
import org.apache.slider.api.ClusterDescription
import org.apache.slider.providers.ProviderService
import org.apache.slider.server.appmaster.model.mock.MockAppState
import org.apache.slider.server.appmaster.model.mock.MockProviderService
-import org.apache.slider.server.appmaster.model.mock.MockRecordFactory
-import org.apache.slider.server.appmaster.state.AbstractRecordFactory
+import org.apache.slider.server.appmaster.model.mock.MockClusterServices
+import org.apache.slider.server.appmaster.state.AbstractClusterServices
import org.apache.slider.server.appmaster.state.AppState
import org.apache.slider.server.appmaster.state.ProviderAppState
import org.apache.slider.server.appmaster.web.WebAppApi
@@ -43,7 +42,7 @@
@Before
public void setup() {
- AppState appState = new MyAppState(new MockRecordFactory());
+ AppState appState = new MyAppState(new MockClusterServices());
ProviderAppState providerAppState = new ProviderAppState(
"undefined",
appState)
@@ -79,7 +78,7 @@
}
private static class MyAppState extends MockAppState {
- public MyAppState(AbstractRecordFactory recordFactory) {
+ public MyAppState(AbstractClusterServices recordFactory) {
super(recordFactory);
this.clusterStatus = new MockClusterDescription();
}
diff --git a/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy b/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy
index 9d14815..ae07187 100644
--- a/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy
@@ -24,6 +24,7 @@
import com.sun.jersey.api.json.JSONConfiguration
import com.sun.jersey.client.urlconnection.URLConnectionClientHandler
import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import org.apache.commons.httpclient.HttpClient
@@ -73,6 +74,7 @@
import java.util.concurrent.TimeoutException
import static Arguments.ARG_OPTION
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.SYSTEM_METRICS_JSON
/**
* Static utils for tests in this package and in other test projects.
@@ -98,7 +100,12 @@
log.info("");
}
- public static String prettyPrint(String json) {
+ /**
+ * Convert a JSON string to something readable
+ * @param json
+ * @return a string for printing
+ */
+ public static String prettyPrintJson(String json) {
JsonOutput.prettyPrint(json)
}
@@ -368,7 +375,7 @@
if (timedOut) {
duration.finish();
describe("$operation: role count not met after $duration: $details")
- log.info(prettyPrint(status.toJsonString()))
+ log.info(prettyPrintJson(status.toJsonString()))
fail("$operation: role counts not met after $duration: " +
details.toString() +
" in \n$status ")
@@ -414,7 +421,7 @@
String text,
ClusterDescription status) {
describe(text)
- log.info(prettyPrint(status.toJsonString()))
+ log.info(prettyPrintJson(status.toJsonString()))
}
@@ -655,7 +662,6 @@
clientConfig);
}
-
/**
* Create a jersey client config with the settings needed for tests
* (e.g. POJO mappings)
@@ -677,14 +683,18 @@
* to have been called.
*
* @param path path to page
- * @param connectionChecks optional closure to run against an open connection
* @return body of response
*/
- public static String getWebPage(String path, Closure connectionChecks = null) {
+ public static String getWebPage(String path) {
HttpOperationResponse outcome = executeGet(path)
return new String(outcome.data);
}
+ /**
+ * Execute a GET operation
+ * @param path path to GET
+ * @return the response
+ */
public static HttpOperationResponse executeGet(String path) {
assert path
assertHttpSupportInitialized()
@@ -707,7 +717,7 @@
HttpCacheHeaders.HTTP_HEADER_CACHE_CONTROL_NONE
}
-/**
+ /**
* Assert that a service operation succeeded
* @param service service
*/
@@ -738,6 +748,7 @@
int actual = instances != null ? instances.size() : 0
return actual
}
+
/**
* Exec a set of commands, wait a few seconds for it to finish.
* @param status code
@@ -752,11 +763,12 @@
assert status == exitCode
return process
}
+
/**
- * Exec a set of commands, wait a few seconds for it to finish.
- * @param commands
- * @return
- */
+ * Exec a set of commands, wait a few seconds for it to finish.
+ * @param commands
+ * @return
+ */
public static ForkedProcessService exec(List<String> commands) {
ForkedProcessService process;
process = new ForkedProcessService(
@@ -1313,6 +1325,17 @@
}
/**
+ * Get a value from a map; raise an assertion if it is not there
+ * @param map map to look up
+ * @param key key
+ * @return the string value
+ */
+ String requiredMapValue(Map map, String key) {
+ assert map[key] != null
+ map[key].toString()
+ }
+
+ /**
* Get a web page and deserialize the supplied JSON into
* an instance of the specific class.
* @param clazz class to deserialize to
@@ -1380,4 +1403,82 @@
assert list.size() == entries.size()
assert entries.containsAll(list)
}
+
+ public Map parseMetrics(String metrics) {
+ new JsonSlurper().parse(metrics.bytes) as Map
+ }
+
+ public void validateCodahaleJson(Map metricsMap) {
+ assert metricsMap["version"] == "3.0.0"
+ assert metricsMap["gauges"] instanceof Map
+ assert metricsMap["histograms"] instanceof Map
+ assert metricsMap["timers"] instanceof Map
+ }
+
+ public int getGaugeValue(Map metricsMap, String gauge, int defVal) {
+ def entry = metricsMap["gauges"][gauge]
+ if (entry != null) {
+ return entry["value"] as int
+ } else {
+ return defVal
+ }
+ }
+
+ public boolean getGaugeAsBool(Map metricsMap, String gauge, boolean defVal) {
+ return 0 != getGaugeValue(metricsMap, gauge, defVal ? 1 : 0)
+ }
+
+ /**
+ * Fetch and parse the JSON codahale metrics under a path
+ * @param baseUrl base path
+ * @return the fetch, parsed and partially validated JSON mapping
+ */
+ public Map getMetrics(String baseUrl) {
+ def raw = GET(baseUrl, SYSTEM_METRICS_JSON)
+ def metrics = parseMetrics(raw)
+ validateCodahaleJson(metrics)
+ return metrics;
+ }
+
+ /**
+ * Await a specific gauge being of the desired value
+ * @param target target URL
+ * @param gauge gauge name
+ * @param desiredValue desired value
+ * @param timeout timeout in millis
+ * @param sleepDur sleep in millis
+ */
+ public void awaitGaugeValue(String target, String gauge, int desiredValue,
+ int timeout,
+ int sleepDur) {
+ def text = "Probe $target for gauge $gauge == $desiredValue"
+ repeatUntilSuccess(text,
+ this.&probeMetricGaugeValue,
+ timeout, sleepDur,
+ [
+ url : target,
+ gauge: gauge,
+ desiredValue: desiredValue.toString()
+ ],
+ true, text) {
+ log.error(prettyPrintJson(GET(target)))
+ }
+ }
+
+ Outcome probeMetricGaugeValue(Map args) {
+ String url = requiredMapValue(args, "url")
+ String gauge = requiredMapValue(args, "gauge")
+ String vstr = requiredMapValue(args, "desiredValue")
+ assert vstr != null, "null desired value in $args"
+ assert vstr != "", "empty desired value in $args"
+ int desiredValue = Integer.decode(vstr)
+ try {
+ def metrics = parseMetrics(GET(url))
+ def gaugeValue = getGaugeValue(metrics, gauge, -1)
+ return gaugeValue == desiredValue ? Outcome.Success : Outcome.Retry
+ } catch (IOException e) {
+ return Outcome.Fail
+ }
+ }
+
}
diff --git a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/agent/TestAMAgentWebServices.java b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/agent/TestAMAgentWebServices.java
index d37fcea..4c43168 100644
--- a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/agent/TestAMAgentWebServices.java
+++ b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/agent/TestAMAgentWebServices.java
@@ -37,7 +37,7 @@
import org.apache.slider.server.appmaster.management.MetricsAndMonitoring;
import org.apache.slider.server.appmaster.model.mock.MockFactory;
import org.apache.slider.server.appmaster.model.mock.MockProviderService;
-import org.apache.slider.server.appmaster.model.mock.MockRecordFactory;
+import org.apache.slider.server.appmaster.model.mock.MockClusterServices;
import org.apache.slider.server.appmaster.state.AppState;
import org.apache.slider.server.appmaster.state.ProviderAppState;
import org.apache.slider.server.appmaster.state.SimpleReleaseSelector;
@@ -126,7 +126,7 @@
historyPath =
new org.apache.hadoop.fs.Path(historyWorkDir.toURI());
fs.delete(historyPath, true);
- appState = new AppState(new MockRecordFactory(), new MetricsAndMonitoring());
+ appState = new AppState(new MockClusterServices(), new MetricsAndMonitoring());
appState.setContainerLimits(RM_MAX_RAM, RM_MAX_CORES);
appState.buildInstance(
factory.newInstanceDefinition(0, 0, 0),
diff --git a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/management/TestAMManagementWebServices.java b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/management/TestAMManagementWebServices.java
index 7cb9395..df7e002 100644
--- a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/management/TestAMManagementWebServices.java
+++ b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/management/TestAMManagementWebServices.java
@@ -42,7 +42,7 @@
import org.apache.slider.server.appmaster.management.MetricsAndMonitoring;
import org.apache.slider.server.appmaster.model.mock.MockFactory;
import org.apache.slider.server.appmaster.model.mock.MockProviderService;
-import org.apache.slider.server.appmaster.model.mock.MockRecordFactory;
+import org.apache.slider.server.appmaster.model.mock.MockClusterServices;
import org.apache.slider.server.appmaster.state.AppState;
import org.apache.slider.server.appmaster.state.ProviderAppState;
import org.apache.slider.server.appmaster.state.SimpleReleaseSelector;
@@ -167,7 +167,7 @@
historyPath =
new org.apache.hadoop.fs.Path(historyWorkDir.toURI());
fs.delete(historyPath, true);
- appState = new AppState(new MockRecordFactory(), new MetricsAndMonitoring());
+ appState = new AppState(new MockClusterServices(), new MetricsAndMonitoring());
appState.setContainerLimits(RM_MAX_RAM, RM_MAX_CORES);
appState.buildInstance(
factory.newInstanceDefinition(0, 0, 0),
diff --git a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
index 4f9701c..ff5e57e 100644
--- a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
+++ b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
@@ -160,7 +160,7 @@
Outcome probeForEntryMissing(Map args) {
- String path = args["path"]
+ String path = requiredMapValue(args, "path")
def shell = slider([ACTION_RESOLVE, ARG_PATH, path])
return Outcome.fromBool(shell.ret == EXIT_NOT_FOUND)
}