YARN-3662. Federation Membership State Store internal APIs.
This commit is contained in:
parent
9d23570172
commit
5424d0899c
|
@ -58,6 +58,13 @@
|
|||
<groupId>org.apache.hadoop</groupId>
|
||||
<artifactId>hadoop-yarn-common</artifactId>
|
||||
</dependency>
|
||||
<!-- 'mvn dependency:analyze' fails to detect use of this dependency -->
|
||||
<dependency>
|
||||
<groupId>org.apache.hadoop</groupId>
|
||||
<artifactId>hadoop-yarn-common</artifactId>
|
||||
<type>test-jar</type>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
|
@ -140,6 +147,7 @@
|
|||
<include>yarn_server_common_protos.proto</include>
|
||||
<include>yarn_server_common_service_protos.proto</include>
|
||||
<include>yarn_server_common_service_protos.proto</include>
|
||||
<include>yarn_server_federation_protos.proto</include>
|
||||
<include>ResourceTracker.proto</include>
|
||||
<include>SCMUploader.proto</include>
|
||||
<include>collectornodemanager_protocol.proto</include>
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.exceptions.YarnException;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterInfoRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterInfoResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClustersInfoRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClustersInfoResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterDeregisterRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterDeregisterResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterHeartbeatRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterHeartbeatResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterRegisterRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterRegisterResponse;
|
||||
import org.apache.hadoop.yarn.server.records.Version;
|
||||
|
||||
/**
|
||||
* FederationMembershipStateStore maintains the state of all
|
||||
* <em>subcluster(s)</em> as encapsulated by {@code SubClusterInfo} for all the
|
||||
* subcluster(s) that are participating in federation.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public interface FederationMembershipStateStore {
|
||||
|
||||
/**
|
||||
* Get the {@link Version} of the underlying federation membership state
|
||||
* store.
|
||||
*
|
||||
* @return the {@link Version} of the underlying federation membership state
|
||||
* store
|
||||
*/
|
||||
Version getMembershipStateStoreVersion();
|
||||
|
||||
/**
|
||||
* Register a <em>subcluster</em> by publishing capabilities as represented by
|
||||
* {@code SubClusterInfo} to indicate participation in federation. This is
|
||||
* typically done during initialization or restart/failover of the
|
||||
* subcluster's <code>ResourceManager</code>. Upon successful registration, an
|
||||
* identifier for the <em>subcluster</em> which is unique across the federated
|
||||
* cluster is returned. The identifier is static, i.e. preserved across
|
||||
* restarts and failover.
|
||||
*
|
||||
* @param registerSubClusterRequest the capabilities of the subcluster that
|
||||
* wants to participate in federation. The subcluster id is also
|
||||
* specified in case registration is triggered by restart/failover
|
||||
* @return response empty on successfully if registration was successful
|
||||
* @throws YarnException if the request is invalid/fails
|
||||
*/
|
||||
SubClusterRegisterResponse registerSubCluster(
|
||||
SubClusterRegisterRequest registerSubClusterRequest) throws YarnException;
|
||||
|
||||
/**
|
||||
* Deregister a <em>subcluster</em> identified by {@code SubClusterId} to
|
||||
* change state in federation. This can be done to mark the sub cluster lost,
|
||||
* deregistered, or decommissioned.
|
||||
*
|
||||
* @param subClusterDeregisterRequest - the request to deregister the
|
||||
* sub-cluster from federation.
|
||||
* @return response empty on successfully deregistering the subcluster state
|
||||
* @throws YarnException if the request is invalid/fails
|
||||
*/
|
||||
SubClusterDeregisterResponse deregisterSubCluster(
|
||||
SubClusterDeregisterRequest subClusterDeregisterRequest)
|
||||
throws YarnException;
|
||||
|
||||
/**
|
||||
* Periodic heartbeat from a <code>ResourceManager</code> participating in
|
||||
* federation to indicate liveliness. The heartbeat publishes the current
|
||||
* capabilities as represented by {@code SubClusterInfo} of the subcluster.
|
||||
* Currently response is empty if the operation was successful, if not an
|
||||
* exception reporting reason for a failure.
|
||||
*
|
||||
* @param subClusterHeartbeatRequest the capabilities of the subcluster that
|
||||
* wants to keep alive its participation in federation
|
||||
* @return response currently empty on if heartbeat was successfully processed
|
||||
* @throws YarnException if the request is invalid/fails
|
||||
*/
|
||||
SubClusterHeartbeatResponse subClusterHeartbeat(
|
||||
SubClusterHeartbeatRequest subClusterHeartbeatRequest)
|
||||
throws YarnException;
|
||||
|
||||
/**
|
||||
* Get the membership information of <em>subcluster</em> as identified by
|
||||
* {@code SubClusterId}. The membership information includes the cluster
|
||||
* endpoint and current capabilities as represented by {@code SubClusterInfo}.
|
||||
*
|
||||
* @param subClusterRequest the subcluster whose information is required
|
||||
* @return the {@code SubClusterInfo}
|
||||
* @throws YarnException if the request is invalid/fails
|
||||
*/
|
||||
GetSubClusterInfoResponse getSubCluster(
|
||||
GetSubClusterInfoRequest subClusterRequest) throws YarnException;
|
||||
|
||||
/**
|
||||
* Get the membership information of all the <em>subclusters</em> that are
|
||||
* currently participating in federation. The membership information includes
|
||||
* the cluster endpoint and current capabilities as represented by
|
||||
* {@code SubClusterInfo}.
|
||||
*
|
||||
* @param subClustersRequest request for sub-clusters information
|
||||
* @return a map of {@code SubClusterInfo} keyed by the {@code SubClusterId}
|
||||
* @throws YarnException if the request is invalid/fails
|
||||
*/
|
||||
GetSubClustersInfoResponse getSubClusters(
|
||||
GetSubClustersInfoRequest subClustersRequest) throws YarnException;
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store;
|
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* Request class to obtain information about a sub-cluster identified by its
|
||||
* {@link SubClusterId}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class GetSubClusterInfoRequest {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static GetSubClusterInfoRequest newInstance(
|
||||
SubClusterId subClusterId) {
|
||||
GetSubClusterInfoRequest subClusterRequest =
|
||||
Records.newRecord(GetSubClusterInfoRequest.class);
|
||||
subClusterRequest.setSubClusterId(subClusterId);
|
||||
return subClusterRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the {@link SubClusterId} representing the unique identifier of the
|
||||
* subcluster.
|
||||
*
|
||||
* @return the subcluster identifier
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterId getSubClusterId();
|
||||
|
||||
/**
|
||||
* Set the {@link SubClusterId} representing the unique identifier of the
|
||||
* subcluster.
|
||||
*
|
||||
* @param subClusterId the subcluster identifier
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract void setSubClusterId(SubClusterId subClusterId);
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* Response to a query with {@link SubClusterInfo} about a sub-cluster.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class GetSubClusterInfoResponse {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static GetSubClusterInfoResponse newInstance(
|
||||
SubClusterInfo subClusterInfo) {
|
||||
GetSubClusterInfoResponse registerSubClusterRequest =
|
||||
Records.newRecord(GetSubClusterInfoResponse.class);
|
||||
registerSubClusterRequest.setSubClusterInfo(subClusterInfo);
|
||||
return registerSubClusterRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the {@link SubClusterInfo} encapsulating the information about the
|
||||
* sub-cluster.
|
||||
*
|
||||
* @return the information pertaining to the sub-cluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterInfo getSubClusterInfo();
|
||||
|
||||
/**
|
||||
* Set the {@link SubClusterInfo} encapsulating the information about the
|
||||
* sub-cluster.
|
||||
*
|
||||
* @param subClusterInfo the information pertaining to the sub-cluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setSubClusterInfo(SubClusterInfo subClusterInfo);
|
||||
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/**
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* Request class to obtain information about all sub-clusters that are
|
||||
* participating in federation.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class GetSubClustersInfoRequest {
|
||||
|
||||
@Public
|
||||
@Unstable
|
||||
public static GetSubClustersInfoRequest newInstance(
|
||||
boolean filterInactiveSubClusters) {
|
||||
GetSubClustersInfoRequest request =
|
||||
Records.newRecord(GetSubClustersInfoRequest.class);
|
||||
request.setFilterInactiveSubClusters(filterInactiveSubClusters);
|
||||
return request;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the flag that indicates whether only active sub-clusters should be
|
||||
* returned.
|
||||
*
|
||||
* @return whether to filter out inactive sub-clusters
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract boolean getFilterInactiveSubClusters();
|
||||
|
||||
/**
|
||||
* Set the flag that indicates whether only active sub-clusters should be
|
||||
* returned.
|
||||
*
|
||||
* @param filterInactiveSubClusters whether to filter out inactive
|
||||
* sub-clusters
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract void setFilterInactiveSubClusters(
|
||||
boolean filterInactiveSubClusters);
|
||||
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/**
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* Response to a query with list of {@link SubClusterInfo} about all
|
||||
* sub-clusters that are currently participating in Federation.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class GetSubClustersInfoResponse {
|
||||
|
||||
@Public
|
||||
@Unstable
|
||||
public static GetSubClustersInfoResponse newInstance(
|
||||
List<SubClusterInfo> subClusters) {
|
||||
GetSubClustersInfoResponse subClusterInfos =
|
||||
Records.newRecord(GetSubClustersInfoResponse.class);
|
||||
subClusterInfos.setSubClusters(subClusters);
|
||||
return subClusterInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of {@link SubClusterInfo} representing the information about
|
||||
* all sub-clusters that are currently participating in Federation.
|
||||
*
|
||||
* @return the list of {@link SubClusterInfo}
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract List<SubClusterInfo> getSubClusters();
|
||||
|
||||
/**
|
||||
* Set the list of {@link SubClusterInfo} representing the information about
|
||||
* all sub-clusters that are currently participating in Federation.
|
||||
*
|
||||
* @param subClusters the list of {@link SubClusterInfo}
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setSubClusters(List<SubClusterInfo> subClusters);
|
||||
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* The request sent to set the state of a subcluster to either
|
||||
* SC_DECOMMISSIONED, SC_LOST, or SC_DEREGISTERED.
|
||||
*
|
||||
* <p>
|
||||
* The update includes details such as:
|
||||
* <ul>
|
||||
* <li>{@link SubClusterId}</li>
|
||||
* <li>{@link SubClusterState}</li>
|
||||
* </ul>
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SubClusterDeregisterRequest {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterDeregisterRequest newInstance(
|
||||
SubClusterId subClusterId, SubClusterState subClusterState) {
|
||||
SubClusterDeregisterRequest registerRequest =
|
||||
Records.newRecord(SubClusterDeregisterRequest.class);
|
||||
registerRequest.setSubClusterId(subClusterId);
|
||||
registerRequest.setState(subClusterState);
|
||||
return registerRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the {@link SubClusterId} representing the unique identifier of the
|
||||
* subcluster.
|
||||
*
|
||||
* @return the subcluster identifier
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterId getSubClusterId();
|
||||
|
||||
/**
|
||||
* Set the {@link SubClusterId} representing the unique identifier of the
|
||||
* subcluster.
|
||||
*
|
||||
* @param subClusterId the subcluster identifier
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setSubClusterId(SubClusterId subClusterId);
|
||||
|
||||
/**
|
||||
* Get the {@link SubClusterState} of the subcluster.
|
||||
*
|
||||
* @return the state of the subcluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterState getState();
|
||||
|
||||
/**
|
||||
* Set the {@link SubClusterState} of the subcluster.
|
||||
*
|
||||
* @param state the state of the subCluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setState(SubClusterState state);
|
||||
}
|
|
@ -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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* SubClusterDeregisterResponse contains the answer from the {@code
|
||||
* FederationMembershipStateStore} to a request to deregister the sub cluster.
|
||||
* Currently response is empty if the operation was successful, if not an
|
||||
* exception reporting reason for a failure.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SubClusterDeregisterResponse {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterDeregisterResponse newInstance() {
|
||||
SubClusterDeregisterResponse response =
|
||||
Records.newRecord(SubClusterDeregisterResponse.class);
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,149 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* SubClusterHeartbeatRequest is a report of the runtime information of the
|
||||
* subcluster that is participating in federation.
|
||||
*
|
||||
* <p>
|
||||
* It includes information such as:
|
||||
* <ul>
|
||||
* <li>{@link SubClusterId}</li>
|
||||
* <li>The URL of the subcluster</li>
|
||||
* <li>The timestamp representing the last start time of the subCluster</li>
|
||||
* <li>{@code FederationsubClusterState}</li>
|
||||
* <li>The current capacity and utilization of the subCluster</li>
|
||||
* </ul>
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SubClusterHeartbeatRequest {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterHeartbeatRequest newInstance(
|
||||
SubClusterId subClusterId, SubClusterState state, String capability) {
|
||||
return newInstance(subClusterId, 0, state, capability);
|
||||
}
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterHeartbeatRequest newInstance(
|
||||
SubClusterId subClusterId, long lastHeartBeat, SubClusterState state,
|
||||
String capability) {
|
||||
SubClusterHeartbeatRequest subClusterHeartbeatRequest =
|
||||
Records.newRecord(SubClusterHeartbeatRequest.class);
|
||||
subClusterHeartbeatRequest.setSubClusterId(subClusterId);
|
||||
subClusterHeartbeatRequest.setLastHeartBeat(lastHeartBeat);
|
||||
subClusterHeartbeatRequest.setState(state);
|
||||
subClusterHeartbeatRequest.setCapability(capability);
|
||||
return subClusterHeartbeatRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the {@link SubClusterId} representing the unique identifier of the
|
||||
* subcluster.
|
||||
*
|
||||
* @return the subcluster identifier
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterId getSubClusterId();
|
||||
|
||||
/**
|
||||
* Set the {@link SubClusterId} representing the unique identifier of the
|
||||
* subCluster.
|
||||
*
|
||||
* @param subClusterId the subCluster identifier
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setSubClusterId(SubClusterId subClusterId);
|
||||
|
||||
/**
|
||||
* Get the last heart beat time of the subcluster.
|
||||
*
|
||||
* @return the state of the subcluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract long getLastHeartBeat();
|
||||
|
||||
/**
|
||||
* Set the last heartbeat time of the subcluster.
|
||||
*
|
||||
* @param time the last heartbeat time of the subcluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setLastHeartBeat(long time);
|
||||
|
||||
/**
|
||||
* Get the {@link SubClusterState} of the subcluster.
|
||||
*
|
||||
* @return the state of the subcluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterState getState();
|
||||
|
||||
/**
|
||||
* Set the {@link SubClusterState} of the subcluster.
|
||||
*
|
||||
* @param state the state of the subCluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setState(SubClusterState state);
|
||||
|
||||
/**
|
||||
* Get the current capacity and utilization of the subcluster. This is the
|
||||
* JAXB marshalled string representation of the <code>ClusterMetrics</code>.
|
||||
*
|
||||
* @return the current capacity and utilization of the subcluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getCapability();
|
||||
|
||||
/**
|
||||
* Set the current capacity and utilization of the subCluster. This is the
|
||||
* JAXB marshalled string representation of the <code>ClusterMetrics</code>.
|
||||
*
|
||||
* @param capability the current capacity and utilization of the subcluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setCapability(String capability);
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SubClusterHeartbeatRequest [getSubClusterId() = "
|
||||
+ getSubClusterId() + ", getState() = " + getState()
|
||||
+ ", getLastHeartBeat = " + getLastHeartBeat() + ", getCapability() = "
|
||||
+ getCapability() + "]";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* SubClusterHeartbeatResponse contains the response from the {@code
|
||||
* FederationMembershipStateStore} to a periodic heartbeat to indicate
|
||||
* liveliness from a <code>ResourceManager</code> participating in federation.
|
||||
* Currently response is empty if the operation was successful, if not an
|
||||
* exception reporting reason for a failure.
|
||||
* <p>
|
||||
* NOTE: This can be extended to push down policies in future
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SubClusterHeartbeatResponse {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterHeartbeatResponse newInstance() {
|
||||
SubClusterHeartbeatResponse response =
|
||||
Records.newRecord(SubClusterHeartbeatResponse.class);
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* SubClusterId represents the <em>globally unique</em> identifier for a
|
||||
* subcluster that is participating in federation.
|
||||
*
|
||||
* <p>
|
||||
* The globally unique nature of the identifier is obtained from the
|
||||
* <code>FederationMembershipStateStore</code> on initialization.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SubClusterId implements Comparable<SubClusterId> {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterId newInstance(String subClusterId) {
|
||||
SubClusterId id = Records.newRecord(SubClusterId.class);
|
||||
id.setId(subClusterId);
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the string identifier of the <em>subcluster</em> which is unique across
|
||||
* the federated cluster. The identifier is static, i.e. preserved across
|
||||
* restarts and failover.
|
||||
*
|
||||
* @return unique identifier of the subcluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getId();
|
||||
|
||||
/**
|
||||
* Set the string identifier of the <em>subcluster</em> which is unique across
|
||||
* the federated cluster. The identifier is static, i.e. preserved across
|
||||
* restarts and failover.
|
||||
*
|
||||
* @param subClusterId unique identifier of the subcluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
protected abstract void setId(String subClusterId);
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
SubClusterId other = (SubClusterId) obj;
|
||||
return this.getId().equals(other.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getId().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(SubClusterId other) {
|
||||
return getId().compareTo(other.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getId());
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,263 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* SubClusterInfo is a report of the runtime information of the subcluster that
|
||||
* is participating in federation.
|
||||
*
|
||||
* <p>
|
||||
* It includes information such as:
|
||||
* <ul>
|
||||
* <li>{@link SubClusterId}</li>
|
||||
* <li>The URL of the subcluster</li>
|
||||
* <li>The timestamp representing the last start time of the subCluster</li>
|
||||
* <li>{@code FederationsubClusterState}</li>
|
||||
* <li>The current capacity and utilization of the subCluster</li>
|
||||
* </ul>
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SubClusterInfo {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterInfo newInstance(SubClusterId subClusterId,
|
||||
String amRMServiceAddress, String clientRMServiceAddress,
|
||||
String rmAdminServiceAddress, String rmWebServiceAddress,
|
||||
SubClusterState state, long lastStartTime, String capability) {
|
||||
return newInstance(subClusterId, amRMServiceAddress, clientRMServiceAddress,
|
||||
rmAdminServiceAddress, rmWebServiceAddress, 0, state, lastStartTime,
|
||||
capability);
|
||||
}
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterInfo newInstance(SubClusterId subClusterId,
|
||||
String amRMServiceAddress, String clientRMServiceAddress,
|
||||
String rmAdminServiceAddress, String rmWebServiceAddress,
|
||||
long lastHeartBeat, SubClusterState state, long lastStartTime,
|
||||
String capability) {
|
||||
SubClusterInfo subClusterInfo = Records.newRecord(SubClusterInfo.class);
|
||||
subClusterInfo.setSubClusterId(subClusterId);
|
||||
subClusterInfo.setAMRMServiceAddress(amRMServiceAddress);
|
||||
subClusterInfo.setClientRMServiceAddress(clientRMServiceAddress);
|
||||
subClusterInfo.setRMAdminServiceAddress(rmAdminServiceAddress);
|
||||
subClusterInfo.setRMWebServiceAddress(rmWebServiceAddress);
|
||||
subClusterInfo.setLastHeartBeat(lastHeartBeat);
|
||||
subClusterInfo.setState(state);
|
||||
subClusterInfo.setLastStartTime(lastStartTime);
|
||||
subClusterInfo.setCapability(capability);
|
||||
return subClusterInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the {@link SubClusterId} representing the unique identifier of the
|
||||
* subcluster.
|
||||
*
|
||||
* @return the subcluster identifier
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterId getSubClusterId();
|
||||
|
||||
/**
|
||||
* Set the {@link SubClusterId} representing the unique identifier of the
|
||||
* subCluster.
|
||||
*
|
||||
* @param subClusterId the subCluster identifier
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setSubClusterId(SubClusterId subClusterId);
|
||||
|
||||
/**
|
||||
* Get the URL of the AM-RM service endpoint of the subcluster
|
||||
* <code>ResourceManager</code>.
|
||||
*
|
||||
* @return the URL of the AM-RM service endpoint of the subcluster
|
||||
* <code>ResourceManager</code>
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getAMRMServiceAddress();
|
||||
|
||||
/**
|
||||
* Set the URL of the AM-RM service endpoint of the subcluster
|
||||
* <code>ResourceManager</code>.
|
||||
*
|
||||
* @param amRMServiceAddress the URL of the AM-RM service endpoint of the
|
||||
* subcluster <code>ResourceManager</code>
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setAMRMServiceAddress(String amRMServiceAddress);
|
||||
|
||||
/**
|
||||
* Get the URL of the client-RM service endpoint of the subcluster
|
||||
* <code>ResourceManager</code>.
|
||||
*
|
||||
* @return the URL of the client-RM service endpoint of the subcluster
|
||||
* <code>ResourceManager</code>
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getClientRMServiceAddress();
|
||||
|
||||
/**
|
||||
* Set the URL of the client-RM service endpoint of the subcluster
|
||||
* <code>ResourceManager</code>.
|
||||
*
|
||||
* @param clientRMServiceAddress the URL of the client-RM service endpoint of
|
||||
* the subCluster <code>ResourceManager</code>
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setClientRMServiceAddress(String clientRMServiceAddress);
|
||||
|
||||
/**
|
||||
* Get the URL of the <code>ResourceManager</code> administration service.
|
||||
*
|
||||
* @return the URL of the <code>ResourceManager</code> administration service
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getRMAdminServiceAddress();
|
||||
|
||||
/**
|
||||
* Set the URL of the <code>ResourceManager</code> administration service.
|
||||
*
|
||||
* @param rmAdminServiceAddress the URL of the <code>ResourceManager</code>
|
||||
* administration service.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setRMAdminServiceAddress(String rmAdminServiceAddress);
|
||||
|
||||
/**
|
||||
* Get the URL of the <code>ResourceManager</code> web application interface.
|
||||
*
|
||||
* @return the URL of the <code>ResourceManager</code> web application
|
||||
* interface.
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getRMWebServiceAddress();
|
||||
|
||||
/**
|
||||
* Set the URL of the <code>ResourceManager</code> web application interface.
|
||||
*
|
||||
* @param rmWebServiceAddress the URL of the <code>ResourceManager</code> web
|
||||
* application interface.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setRMWebServiceAddress(String rmWebServiceAddress);
|
||||
|
||||
/**
|
||||
* Get the last heart beat time of the subcluster.
|
||||
*
|
||||
* @return the state of the subcluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract long getLastHeartBeat();
|
||||
|
||||
/**
|
||||
* Set the last heartbeat time of the subcluster.
|
||||
*
|
||||
* @param time the last heartbeat time of the subcluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setLastHeartBeat(long time);
|
||||
|
||||
/**
|
||||
* Get the {@link SubClusterState} of the subcluster.
|
||||
*
|
||||
* @return the state of the subcluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterState getState();
|
||||
|
||||
/**
|
||||
* Set the {@link SubClusterState} of the subcluster.
|
||||
*
|
||||
* @param state the state of the subCluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setState(SubClusterState state);
|
||||
|
||||
/**
|
||||
* Get the timestamp representing the last start time of the subcluster.
|
||||
*
|
||||
* @return the timestamp representing the last start time of the subcluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract long getLastStartTime();
|
||||
|
||||
/**
|
||||
* Set the timestamp representing the last start time of the subcluster.
|
||||
*
|
||||
* @param lastStartTime the timestamp representing the last start time of the
|
||||
* subcluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setLastStartTime(long lastStartTime);
|
||||
|
||||
/**
|
||||
* Get the current capacity and utilization of the subcluster. This is the
|
||||
* JAXB marshalled string representation of the <code>ClusterMetrics</code>.
|
||||
*
|
||||
* @return the current capacity and utilization of the subcluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getCapability();
|
||||
|
||||
/**
|
||||
* Set the current capacity and utilization of the subCluster. This is the
|
||||
* JAXB marshalled string representation of the <code>ClusterMetrics</code>.
|
||||
*
|
||||
* @param capability the current capacity and utilization of the subcluster
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setCapability(String capability);
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SubClusterInfo [getSubClusterId() = " + getSubClusterId()
|
||||
+ ", getAMRMServiceAddress() = " + getAMRMServiceAddress()
|
||||
+ ", getClientRMServiceAddress() = " + getClientRMServiceAddress()
|
||||
+ ", getRMAdminServiceAddress() = " + getRMAdminServiceAddress()
|
||||
+ ", getRMWebServiceAddress() = " + getRMWebServiceAddress()
|
||||
+ ", getState() = " + getState() + ", getLastStartTime() = "
|
||||
+ getLastStartTime() + ", getCapability() = " + getCapability() + "]";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* SubClusterRegisterRequest is a request by a sub-cluster
|
||||
* {@code ResourceManager} to participate in federation.
|
||||
*
|
||||
* <p>
|
||||
* It includes information such as:
|
||||
* <ul>
|
||||
* <li>{@link SubClusterId}</li>
|
||||
* <li>The URL of the subcluster</li>
|
||||
* <li>The timestamp representing the last start time of the subCluster</li>
|
||||
* <li>{@code FederationsubClusterState}</li>
|
||||
* <li>The current capacity and utilization of the subCluster</li>
|
||||
* </ul>
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SubClusterRegisterRequest {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterRegisterRequest newInstance(
|
||||
SubClusterInfo subClusterInfo) {
|
||||
SubClusterRegisterRequest registerSubClusterRequest =
|
||||
Records.newRecord(SubClusterRegisterRequest.class);
|
||||
registerSubClusterRequest.setSubClusterInfo(subClusterInfo);
|
||||
return registerSubClusterRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the {@link SubClusterInfo} encapsulating the information about the
|
||||
* sub-cluster.
|
||||
*
|
||||
* @return the information pertaining to the sub-cluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterInfo getSubClusterInfo();
|
||||
|
||||
/**
|
||||
* Set the {@link SubClusterInfo} encapsulating the information about the
|
||||
* sub-cluster.
|
||||
*
|
||||
* @param subClusterInfo the information pertaining to the sub-cluster
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract void setSubClusterInfo(SubClusterInfo subClusterInfo);
|
||||
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* SubClusterRegisterResponse contains the response from the {@code
|
||||
* FederationMembershipStateStore} to a registration request from a
|
||||
* <code>ResourceManager</code> to participate in federation.
|
||||
*
|
||||
* Currently response is empty if the operation was successful, if not an
|
||||
* exception reporting reason for a failure.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SubClusterRegisterResponse {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterRegisterResponse newInstance() {
|
||||
SubClusterRegisterResponse response =
|
||||
Records.newRecord(SubClusterRegisterResponse.class);
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* State of a <code>SubCluster</code>.
|
||||
* </p>
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public enum SubClusterState {
|
||||
/** Newly registered subcluster, before the first heartbeat. */
|
||||
SC_NEW,
|
||||
|
||||
/** Subcluster is registered and the RM sent a heartbeat recently. */
|
||||
SC_RUNNING,
|
||||
|
||||
/** Subcluster is unhealthy. */
|
||||
SC_UNHEALTHY,
|
||||
|
||||
/** Subcluster is in the process of being out of service. */
|
||||
SC_DECOMMISSIONING,
|
||||
|
||||
/** Subcluster is out of service. */
|
||||
SC_DECOMMISSIONED,
|
||||
|
||||
/** RM has not sent a heartbeat for some configured time threshold. */
|
||||
SC_LOST,
|
||||
|
||||
/** Subcluster has unregistered. */
|
||||
SC_UNREGISTERED;
|
||||
|
||||
public boolean isUnusable() {
|
||||
return (this != SC_RUNNING && this != SC_NEW);
|
||||
}
|
||||
|
||||
public boolean isFinal() {
|
||||
return (this == SC_UNREGISTERED || this == SC_DECOMMISSIONED
|
||||
|| this == SC_LOST);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,125 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterInfoRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterInfoRequestProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterIdProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterInfoRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterId;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link GetSubClusterInfoRequest}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class GetSubClusterInfoRequestPBImpl extends GetSubClusterInfoRequest {
|
||||
|
||||
private GetSubClusterInfoRequestProto proto =
|
||||
GetSubClusterInfoRequestProto.getDefaultInstance();
|
||||
private GetSubClusterInfoRequestProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public GetSubClusterInfoRequestPBImpl() {
|
||||
builder = GetSubClusterInfoRequestProto.newBuilder();
|
||||
}
|
||||
|
||||
public GetSubClusterInfoRequestPBImpl(GetSubClusterInfoRequestProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public GetSubClusterInfoRequestProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
mergeLocalToBuilder();
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = GetSubClusterInfoRequestProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterId getSubClusterId() {
|
||||
GetSubClusterInfoRequestProtoOrBuilder p = viaProto ? proto : builder;
|
||||
if (!p.hasSubClusterId()) {
|
||||
return null;
|
||||
}
|
||||
return convertFromProtoFormat(p.getSubClusterId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubClusterId(SubClusterId subClusterId) {
|
||||
maybeInitBuilder();
|
||||
if (subClusterId == null) {
|
||||
builder.clearSubClusterId();
|
||||
return;
|
||||
}
|
||||
builder.setSubClusterId(convertToProtoFormat(subClusterId));
|
||||
}
|
||||
|
||||
private SubClusterId convertFromProtoFormat(SubClusterIdProto sc) {
|
||||
return new SubClusterIdPBImpl(sc);
|
||||
}
|
||||
|
||||
private SubClusterIdProto convertToProtoFormat(SubClusterId sc) {
|
||||
return ((SubClusterIdPBImpl) sc).getProto();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,134 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterInfoResponseProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterInfoResponseProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterInfoProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterInfoResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterInfo;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link GetSubClusterInfoResponse}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class GetSubClusterInfoResponsePBImpl extends GetSubClusterInfoResponse {
|
||||
|
||||
private GetSubClusterInfoResponseProto proto =
|
||||
GetSubClusterInfoResponseProto.getDefaultInstance();
|
||||
private GetSubClusterInfoResponseProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
private SubClusterInfo subClusterInfo = null;
|
||||
|
||||
public GetSubClusterInfoResponsePBImpl() {
|
||||
builder = GetSubClusterInfoResponseProto.newBuilder();
|
||||
}
|
||||
|
||||
public GetSubClusterInfoResponsePBImpl(GetSubClusterInfoResponseProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public GetSubClusterInfoResponseProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
mergeLocalToBuilder();
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = GetSubClusterInfoResponseProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
if (this.subClusterInfo != null) {
|
||||
builder.setSubClusterInfo(convertToProtoFormat(this.subClusterInfo));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterInfo getSubClusterInfo() {
|
||||
GetSubClusterInfoResponseProtoOrBuilder p = viaProto ? proto : builder;
|
||||
if (this.subClusterInfo != null) {
|
||||
return this.subClusterInfo;
|
||||
}
|
||||
if (!p.hasSubClusterInfo()) {
|
||||
return null;
|
||||
}
|
||||
this.subClusterInfo = convertFromProtoFormat(p.getSubClusterInfo());
|
||||
return this.subClusterInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubClusterInfo(SubClusterInfo subClusterInfo) {
|
||||
maybeInitBuilder();
|
||||
if (subClusterInfo == null) {
|
||||
builder.clearSubClusterInfo();
|
||||
}
|
||||
this.subClusterInfo = subClusterInfo;
|
||||
}
|
||||
|
||||
private SubClusterInfo convertFromProtoFormat(
|
||||
SubClusterInfoProto clusterInfo) {
|
||||
return new SubClusterInfoPBImpl(clusterInfo);
|
||||
}
|
||||
|
||||
private SubClusterInfoProto convertToProtoFormat(SubClusterInfo clusterInfo) {
|
||||
return ((SubClusterInfoPBImpl) clusterInfo).getProto();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,108 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClustersInfoRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClustersInfoRequestProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClustersInfoRequest;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link GetSubClustersInfoRequest}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class GetSubClustersInfoRequestPBImpl extends GetSubClustersInfoRequest {
|
||||
|
||||
private GetSubClustersInfoRequestProto proto =
|
||||
GetSubClustersInfoRequestProto.getDefaultInstance();
|
||||
private GetSubClustersInfoRequestProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public GetSubClustersInfoRequestPBImpl() {
|
||||
builder = GetSubClustersInfoRequestProto.newBuilder();
|
||||
}
|
||||
|
||||
public GetSubClustersInfoRequestPBImpl(GetSubClustersInfoRequestProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public GetSubClustersInfoRequestProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
mergeLocalToBuilder();
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = GetSubClustersInfoRequestProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getFilterInactiveSubClusters() {
|
||||
GetSubClustersInfoRequestProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return p.getFilterInactiveSubclusters();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFilterInactiveSubClusters(boolean filterInactiveSubClusters) {
|
||||
maybeInitBuilder();
|
||||
builder.setFilterInactiveSubclusters(filterInactiveSubClusters);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,184 @@
|
|||
/**
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClustersInfoResponseProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClustersInfoResponseProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterInfoProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClustersInfoResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterInfo;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link GetSubClustersInfoResponse}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class GetSubClustersInfoResponsePBImpl
|
||||
extends GetSubClustersInfoResponse {
|
||||
|
||||
private GetSubClustersInfoResponseProto proto =
|
||||
GetSubClustersInfoResponseProto.getDefaultInstance();
|
||||
private GetSubClustersInfoResponseProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
private List<SubClusterInfo> subClusterInfos;
|
||||
|
||||
public GetSubClustersInfoResponsePBImpl() {
|
||||
builder = GetSubClustersInfoResponseProto.newBuilder();
|
||||
}
|
||||
|
||||
public GetSubClustersInfoResponsePBImpl(
|
||||
GetSubClustersInfoResponseProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public GetSubClustersInfoResponseProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
if (this.subClusterInfos != null) {
|
||||
addReservationResourcesToProto();
|
||||
}
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
mergeLocalToBuilder();
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = GetSubClustersInfoResponseProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SubClusterInfo> getSubClusters() {
|
||||
initSubClustersInfoList();
|
||||
return subClusterInfos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubClusters(List<SubClusterInfo> subClusters) {
|
||||
if (subClusters == null) {
|
||||
builder.clearSubClusterInfos();
|
||||
return;
|
||||
}
|
||||
this.subClusterInfos = subClusters;
|
||||
}
|
||||
|
||||
private void initSubClustersInfoList() {
|
||||
if (this.subClusterInfos != null) {
|
||||
return;
|
||||
}
|
||||
GetSubClustersInfoResponseProtoOrBuilder p = viaProto ? proto : builder;
|
||||
List<SubClusterInfoProto> subClusterInfosList = p.getSubClusterInfosList();
|
||||
subClusterInfos = new ArrayList<SubClusterInfo>();
|
||||
|
||||
for (SubClusterInfoProto r : subClusterInfosList) {
|
||||
subClusterInfos.add(convertFromProtoFormat(r));
|
||||
}
|
||||
}
|
||||
|
||||
private void addReservationResourcesToProto() {
|
||||
maybeInitBuilder();
|
||||
builder.clearSubClusterInfos();
|
||||
if (subClusterInfos == null) {
|
||||
return;
|
||||
}
|
||||
Iterable<SubClusterInfoProto> iterable =
|
||||
new Iterable<SubClusterInfoProto>() {
|
||||
@Override
|
||||
public Iterator<SubClusterInfoProto> iterator() {
|
||||
return new Iterator<SubClusterInfoProto>() {
|
||||
|
||||
private Iterator<SubClusterInfo> iter =
|
||||
subClusterInfos.iterator();
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return iter.hasNext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterInfoProto next() {
|
||||
return convertToProtoFormat(iter.next());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
builder.addAllSubClusterInfos(iterable);
|
||||
}
|
||||
|
||||
private SubClusterInfoProto convertToProtoFormat(SubClusterInfo r) {
|
||||
return ((SubClusterInfoPBImpl) r).getProto();
|
||||
}
|
||||
|
||||
private SubClusterInfoPBImpl convertFromProtoFormat(SubClusterInfoProto r) {
|
||||
return new SubClusterInfoPBImpl(r);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,156 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterDeregisterRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterDeregisterRequestProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterIdProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterStateProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterDeregisterRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterId;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterState;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link SubClusterDeregisterRequest}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SubClusterDeregisterRequestPBImpl
|
||||
extends SubClusterDeregisterRequest {
|
||||
|
||||
private SubClusterDeregisterRequestProto proto =
|
||||
SubClusterDeregisterRequestProto.getDefaultInstance();
|
||||
private SubClusterDeregisterRequestProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public SubClusterDeregisterRequestPBImpl() {
|
||||
builder = SubClusterDeregisterRequestProto.newBuilder();
|
||||
}
|
||||
|
||||
public SubClusterDeregisterRequestPBImpl(
|
||||
SubClusterDeregisterRequestProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SubClusterDeregisterRequestProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
mergeLocalToBuilder();
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = SubClusterDeregisterRequestProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterId getSubClusterId() {
|
||||
SubClusterDeregisterRequestProtoOrBuilder p = viaProto ? proto : builder;
|
||||
if (!p.hasSubClusterId()) {
|
||||
return null;
|
||||
}
|
||||
return convertFromProtoFormat(p.getSubClusterId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubClusterId(SubClusterId subClusterId) {
|
||||
maybeInitBuilder();
|
||||
if (subClusterId == null) {
|
||||
builder.clearSubClusterId();
|
||||
return;
|
||||
}
|
||||
builder.setSubClusterId(convertToProtoFormat(subClusterId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterState getState() {
|
||||
SubClusterDeregisterRequestProtoOrBuilder p = viaProto ? proto : builder;
|
||||
if (!p.hasState()) {
|
||||
return null;
|
||||
}
|
||||
return convertFromProtoFormat(p.getState());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setState(SubClusterState state) {
|
||||
maybeInitBuilder();
|
||||
if (state == null) {
|
||||
builder.clearState();
|
||||
return;
|
||||
}
|
||||
builder.setState(convertToProtoFormat(state));
|
||||
}
|
||||
|
||||
private SubClusterId convertFromProtoFormat(SubClusterIdProto sc) {
|
||||
return new SubClusterIdPBImpl(sc);
|
||||
}
|
||||
|
||||
private SubClusterIdProto convertToProtoFormat(SubClusterId sc) {
|
||||
return ((SubClusterIdPBImpl) sc).getProto();
|
||||
}
|
||||
|
||||
private SubClusterState convertFromProtoFormat(SubClusterStateProto state) {
|
||||
return SubClusterState.valueOf(state.name());
|
||||
}
|
||||
|
||||
private SubClusterStateProto convertToProtoFormat(SubClusterState state) {
|
||||
return SubClusterStateProto.valueOf(state.name());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterDeregisterResponseProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterDeregisterResponse;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link SubClusterDeregisterResponse}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SubClusterDeregisterResponsePBImpl
|
||||
extends SubClusterDeregisterResponse {
|
||||
|
||||
private SubClusterDeregisterResponseProto proto =
|
||||
SubClusterDeregisterResponseProto.getDefaultInstance();
|
||||
private SubClusterDeregisterResponseProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public SubClusterDeregisterResponsePBImpl() {
|
||||
builder = SubClusterDeregisterResponseProto.newBuilder();
|
||||
}
|
||||
|
||||
public SubClusterDeregisterResponsePBImpl(
|
||||
SubClusterDeregisterResponseProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SubClusterDeregisterResponseProto getProto() {
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,192 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterHeartbeatRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterHeartbeatRequestProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterIdProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterStateProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterHeartbeatRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterId;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterState;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link SubClusterHeartbeatRequest}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SubClusterHeartbeatRequestPBImpl
|
||||
extends SubClusterHeartbeatRequest {
|
||||
|
||||
private SubClusterHeartbeatRequestProto proto =
|
||||
SubClusterHeartbeatRequestProto.getDefaultInstance();
|
||||
private SubClusterHeartbeatRequestProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
private SubClusterId subClusterId = null;
|
||||
|
||||
public SubClusterHeartbeatRequestPBImpl() {
|
||||
builder = SubClusterHeartbeatRequestProto.newBuilder();
|
||||
}
|
||||
|
||||
public SubClusterHeartbeatRequestPBImpl(
|
||||
SubClusterHeartbeatRequestProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SubClusterHeartbeatRequestProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
mergeLocalToBuilder();
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = SubClusterHeartbeatRequestProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
if (this.subClusterId != null) {
|
||||
builder.setSubClusterId(convertToProtoFormat(this.subClusterId));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterId getSubClusterId() {
|
||||
SubClusterHeartbeatRequestProtoOrBuilder p = viaProto ? proto : builder;
|
||||
if (this.subClusterId != null) {
|
||||
return this.subClusterId;
|
||||
}
|
||||
if (!p.hasSubClusterId()) {
|
||||
return null;
|
||||
}
|
||||
this.subClusterId = convertFromProtoFormat(p.getSubClusterId());
|
||||
return this.subClusterId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubClusterId(SubClusterId subClusterId) {
|
||||
maybeInitBuilder();
|
||||
if (subClusterId == null) {
|
||||
builder.clearSubClusterId();
|
||||
}
|
||||
this.subClusterId = subClusterId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLastHeartBeat() {
|
||||
SubClusterHeartbeatRequestProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return p.getLastHeartBeat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLastHeartBeat(long time) {
|
||||
maybeInitBuilder();
|
||||
builder.setLastHeartBeat(time);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterState getState() {
|
||||
SubClusterHeartbeatRequestProtoOrBuilder p = viaProto ? proto : builder;
|
||||
if (!p.hasState()) {
|
||||
return null;
|
||||
}
|
||||
return convertFromProtoFormat(p.getState());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setState(SubClusterState state) {
|
||||
maybeInitBuilder();
|
||||
if (state == null) {
|
||||
builder.clearState();
|
||||
return;
|
||||
}
|
||||
builder.setState(convertToProtoFormat(state));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCapability() {
|
||||
SubClusterHeartbeatRequestProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return (p.hasCapability()) ? p.getCapability() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCapability(String capability) {
|
||||
maybeInitBuilder();
|
||||
if (capability == null) {
|
||||
builder.clearCapability();
|
||||
return;
|
||||
}
|
||||
builder.setCapability(capability);
|
||||
}
|
||||
|
||||
private SubClusterId convertFromProtoFormat(SubClusterIdProto clusterId) {
|
||||
return new SubClusterIdPBImpl(clusterId);
|
||||
}
|
||||
|
||||
private SubClusterIdProto convertToProtoFormat(SubClusterId clusterId) {
|
||||
return ((SubClusterIdPBImpl) clusterId).getProto();
|
||||
}
|
||||
|
||||
private SubClusterState convertFromProtoFormat(SubClusterStateProto state) {
|
||||
return SubClusterState.valueOf(state.name());
|
||||
}
|
||||
|
||||
private SubClusterStateProto convertToProtoFormat(SubClusterState state) {
|
||||
return SubClusterStateProto.valueOf(state.name());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterHeartbeatResponseProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterHeartbeatResponse;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link SubClusterHeartbeatResponse}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SubClusterHeartbeatResponsePBImpl
|
||||
extends SubClusterHeartbeatResponse {
|
||||
|
||||
private SubClusterHeartbeatResponseProto proto =
|
||||
SubClusterHeartbeatResponseProto.getDefaultInstance();
|
||||
private SubClusterHeartbeatResponseProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public SubClusterHeartbeatResponsePBImpl() {
|
||||
builder = SubClusterHeartbeatResponseProto.newBuilder();
|
||||
}
|
||||
|
||||
public SubClusterHeartbeatResponsePBImpl(
|
||||
SubClusterHeartbeatResponseProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SubClusterHeartbeatResponseProto getProto() {
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterIdProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterIdProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterId;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link SubClusterId}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SubClusterIdPBImpl extends SubClusterId {
|
||||
|
||||
private SubClusterIdProto proto = SubClusterIdProto.getDefaultInstance();
|
||||
private SubClusterIdProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public SubClusterIdPBImpl() {
|
||||
builder = SubClusterIdProto.newBuilder();
|
||||
}
|
||||
|
||||
public SubClusterIdPBImpl(SubClusterIdProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SubClusterIdProto getProto() {
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = SubClusterIdProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
SubClusterIdProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return p.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setId(String subClusterId) {
|
||||
maybeInitBuilder();
|
||||
if (subClusterId == null) {
|
||||
builder.clearId();
|
||||
return;
|
||||
}
|
||||
builder.setId(subClusterId);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,267 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterIdProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterInfoProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterInfoProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterStateProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterId;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterInfo;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterState;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link SubClusterInfo}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SubClusterInfoPBImpl extends SubClusterInfo {
|
||||
|
||||
private SubClusterInfoProto proto = SubClusterInfoProto.getDefaultInstance();
|
||||
private SubClusterInfoProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
private SubClusterId subClusterId = null;
|
||||
|
||||
public SubClusterInfoPBImpl() {
|
||||
builder = SubClusterInfoProto.newBuilder();
|
||||
}
|
||||
|
||||
public SubClusterInfoPBImpl(SubClusterInfoProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SubClusterInfoProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
mergeLocalToBuilder();
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = SubClusterInfoProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
if (this.subClusterId != null) {
|
||||
builder.setSubClusterId(convertToProtoFormat(this.subClusterId));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterId getSubClusterId() {
|
||||
SubClusterInfoProtoOrBuilder p = viaProto ? proto : builder;
|
||||
if (this.subClusterId != null) {
|
||||
return this.subClusterId;
|
||||
}
|
||||
if (!p.hasSubClusterId()) {
|
||||
return null;
|
||||
}
|
||||
this.subClusterId = convertFromProtoFormat(p.getSubClusterId());
|
||||
return this.subClusterId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubClusterId(SubClusterId subClusterId) {
|
||||
maybeInitBuilder();
|
||||
if (subClusterId == null) {
|
||||
builder.clearSubClusterId();
|
||||
}
|
||||
this.subClusterId = subClusterId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAMRMServiceAddress() {
|
||||
SubClusterInfoProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return (p.hasAMRMServiceAddress()) ? p.getAMRMServiceAddress() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAMRMServiceAddress(String amRMServiceAddress) {
|
||||
maybeInitBuilder();
|
||||
if (amRMServiceAddress == null) {
|
||||
builder.clearAMRMServiceAddress();
|
||||
return;
|
||||
}
|
||||
builder.setAMRMServiceAddress(amRMServiceAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClientRMServiceAddress() {
|
||||
SubClusterInfoProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return (p.hasClientRMServiceAddress()) ? p.getClientRMServiceAddress()
|
||||
: null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClientRMServiceAddress(String clientRMServiceAddress) {
|
||||
maybeInitBuilder();
|
||||
if (clientRMServiceAddress == null) {
|
||||
builder.clearClientRMServiceAddress();
|
||||
return;
|
||||
}
|
||||
builder.setClientRMServiceAddress(clientRMServiceAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRMAdminServiceAddress() {
|
||||
SubClusterInfoProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return (p.hasRMAdminServiceAddress()) ? p.getRMAdminServiceAddress() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRMAdminServiceAddress(String rmAdminServiceAddress) {
|
||||
maybeInitBuilder();
|
||||
if (rmAdminServiceAddress == null) {
|
||||
builder.clearRMAdminServiceAddress();
|
||||
return;
|
||||
}
|
||||
builder.setRMAdminServiceAddress(rmAdminServiceAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRMWebServiceAddress() {
|
||||
SubClusterInfoProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return (p.hasRMWebServiceAddress()) ? p.getRMWebServiceAddress() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRMWebServiceAddress(String rmWebServiceAddress) {
|
||||
maybeInitBuilder();
|
||||
if (rmWebServiceAddress == null) {
|
||||
builder.clearRMWebServiceAddress();
|
||||
return;
|
||||
}
|
||||
builder.setRMWebServiceAddress(rmWebServiceAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLastHeartBeat() {
|
||||
SubClusterInfoProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return p.getLastHeartBeat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLastHeartBeat(long time) {
|
||||
maybeInitBuilder();
|
||||
builder.setLastHeartBeat(time);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterState getState() {
|
||||
SubClusterInfoProtoOrBuilder p = viaProto ? proto : builder;
|
||||
if (!p.hasState()) {
|
||||
return null;
|
||||
}
|
||||
return convertFromProtoFormat(p.getState());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setState(SubClusterState state) {
|
||||
maybeInitBuilder();
|
||||
if (state == null) {
|
||||
builder.clearState();
|
||||
return;
|
||||
}
|
||||
builder.setState(convertToProtoFormat(state));
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLastStartTime() {
|
||||
SubClusterInfoProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return (p.hasLastStartTime()) ? p.getLastStartTime() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLastStartTime(long lastStartTime) {
|
||||
Preconditions.checkNotNull(builder);
|
||||
builder.setLastStartTime(lastStartTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCapability() {
|
||||
SubClusterInfoProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return (p.hasCapability()) ? p.getCapability() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCapability(String capability) {
|
||||
maybeInitBuilder();
|
||||
if (capability == null) {
|
||||
builder.clearCapability();
|
||||
return;
|
||||
}
|
||||
builder.setCapability(capability);
|
||||
}
|
||||
|
||||
private SubClusterId convertFromProtoFormat(SubClusterIdProto clusterId) {
|
||||
return new SubClusterIdPBImpl(clusterId);
|
||||
}
|
||||
|
||||
private SubClusterIdProto convertToProtoFormat(SubClusterId clusterId) {
|
||||
return ((SubClusterIdPBImpl) clusterId).getProto();
|
||||
}
|
||||
|
||||
private SubClusterState convertFromProtoFormat(SubClusterStateProto state) {
|
||||
return SubClusterState.valueOf(state.name());
|
||||
}
|
||||
|
||||
private SubClusterStateProto convertToProtoFormat(SubClusterState state) {
|
||||
return SubClusterStateProto.valueOf(state.name());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,134 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterInfoProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterRegisterRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterRegisterRequestProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterInfo;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterRegisterRequest;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link SubClusterRegisterRequest}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SubClusterRegisterRequestPBImpl extends SubClusterRegisterRequest {
|
||||
|
||||
private SubClusterRegisterRequestProto proto =
|
||||
SubClusterRegisterRequestProto.getDefaultInstance();
|
||||
private SubClusterRegisterRequestProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
private SubClusterInfo subClusterInfo = null;
|
||||
|
||||
public SubClusterRegisterRequestPBImpl() {
|
||||
builder = SubClusterRegisterRequestProto.newBuilder();
|
||||
}
|
||||
|
||||
public SubClusterRegisterRequestPBImpl(SubClusterRegisterRequestProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SubClusterRegisterRequestProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
mergeLocalToBuilder();
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = SubClusterRegisterRequestProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
if (this.subClusterInfo != null) {
|
||||
builder.setSubClusterInfo(convertToProtoFormat(this.subClusterInfo));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterInfo getSubClusterInfo() {
|
||||
SubClusterRegisterRequestProtoOrBuilder p = viaProto ? proto : builder;
|
||||
if (this.subClusterInfo != null) {
|
||||
return this.subClusterInfo;
|
||||
}
|
||||
if (!p.hasSubClusterInfo()) {
|
||||
return null;
|
||||
}
|
||||
this.subClusterInfo = convertFromProtoFormat(p.getSubClusterInfo());
|
||||
return this.subClusterInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubClusterInfo(SubClusterInfo subClusterInfo) {
|
||||
maybeInitBuilder();
|
||||
if (subClusterInfo == null) {
|
||||
builder.clearSubClusterInfo();
|
||||
}
|
||||
this.subClusterInfo = subClusterInfo;
|
||||
}
|
||||
|
||||
private SubClusterInfo convertFromProtoFormat(
|
||||
SubClusterInfoProto clusterInfo) {
|
||||
return new SubClusterInfoPBImpl(clusterInfo);
|
||||
}
|
||||
|
||||
private SubClusterInfoProto convertToProtoFormat(SubClusterInfo clusterInfo) {
|
||||
return ((SubClusterInfoPBImpl) clusterInfo).getProto();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterRegisterResponseProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterRegisterResponse;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of {@link SubClusterRegisterResponse}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SubClusterRegisterResponsePBImpl
|
||||
extends SubClusterRegisterResponse {
|
||||
|
||||
private SubClusterRegisterResponseProto proto =
|
||||
SubClusterRegisterResponseProto.getDefaultInstance();
|
||||
private SubClusterRegisterResponseProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public SubClusterRegisterResponsePBImpl() {
|
||||
builder = SubClusterRegisterResponseProto.newBuilder();
|
||||
}
|
||||
|
||||
public SubClusterRegisterResponsePBImpl(
|
||||
SubClusterRegisterResponseProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SubClusterRegisterResponseProto getProto() {
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getProto().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other == null) {
|
||||
return false;
|
||||
}
|
||||
if (other.getClass().isAssignableFrom(this.getClass())) {
|
||||
return this.getProto().equals(this.getClass().cast(other).getProto());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return TextFormat.shortDebugString(getProto());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records.impl.pb;
|
|
@ -0,0 +1,17 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
|
@ -0,0 +1,93 @@
|
|||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
option java_package = "org.apache.hadoop.yarn.federation.proto";
|
||||
option java_outer_classname = "YarnServerFederationProtos";
|
||||
option java_generic_services = true;
|
||||
option java_generate_equals_and_hash = true;
|
||||
package hadoop.yarn;
|
||||
|
||||
import "yarn_protos.proto";
|
||||
import "yarn_server_common_protos.proto";
|
||||
|
||||
message SubClusterIdProto {
|
||||
optional string id = 1;
|
||||
}
|
||||
|
||||
enum SubClusterStateProto {
|
||||
SC_NEW = 1;
|
||||
SC_RUNNING = 2;
|
||||
SC_UNHEALTHY = 3;
|
||||
SC_DECOMMISSIONING = 4;
|
||||
SC_LOST = 5;
|
||||
SC_UNREGISTERED = 6;
|
||||
SC_DECOMMISSIONED = 7;
|
||||
}
|
||||
|
||||
message SubClusterInfoProto {
|
||||
optional SubClusterIdProto sub_cluster_id = 1;
|
||||
optional string aMRM_service_address = 2;
|
||||
optional string client_rM_service_address = 3;
|
||||
optional string rM_admin_service_address = 4;
|
||||
optional string rM_web_service_address = 5;
|
||||
optional int64 lastHeartBeat = 6;
|
||||
optional SubClusterStateProto state = 7;
|
||||
optional int64 lastStartTime = 8;
|
||||
optional string capability = 9;
|
||||
}
|
||||
|
||||
message SubClusterRegisterRequestProto {
|
||||
optional SubClusterInfoProto sub_cluster_info = 1;
|
||||
}
|
||||
|
||||
message SubClusterRegisterResponseProto {
|
||||
}
|
||||
|
||||
message SubClusterHeartbeatRequestProto {
|
||||
optional SubClusterIdProto sub_cluster_id = 1;
|
||||
optional int64 lastHeartBeat = 2;
|
||||
optional SubClusterStateProto state = 3;
|
||||
optional string capability = 4;
|
||||
}
|
||||
|
||||
message SubClusterHeartbeatResponseProto {
|
||||
}
|
||||
|
||||
message SubClusterDeregisterRequestProto {
|
||||
optional SubClusterIdProto sub_cluster_id = 1;
|
||||
optional SubClusterStateProto state = 2;
|
||||
}
|
||||
|
||||
message SubClusterDeregisterResponseProto {
|
||||
}
|
||||
|
||||
message GetSubClusterInfoRequestProto {
|
||||
optional SubClusterIdProto sub_cluster_id = 1;
|
||||
}
|
||||
|
||||
message GetSubClusterInfoResponseProto {
|
||||
optional SubClusterInfoProto sub_cluster_info = 1;
|
||||
}
|
||||
|
||||
message GetSubClustersInfoRequestProto {
|
||||
optional bool filter_inactive_subclusters = 1 [default = true];
|
||||
}
|
||||
|
||||
message GetSubClustersInfoResponseProto {
|
||||
repeated SubClusterInfoProto sub_cluster_infos = 1;
|
||||
}
|
|
@ -0,0 +1,133 @@
|
|||
/**
|
||||
* 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
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* 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.hadoop.yarn.server.federation.store.records;
|
||||
|
||||
import org.apache.hadoop.yarn.api.BasePBImplRecordsTest;
|
||||
import org.apache.hadoop.yarn.api.records.ApplicationId;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterInfoRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterInfoResponseProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClustersInfoRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClustersInfoResponseProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterDeregisterRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterDeregisterResponseProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterHeartbeatRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterHeartbeatResponseProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterIdProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterInfoProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterRegisterRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterRegisterResponseProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.GetSubClusterInfoRequestPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.GetSubClusterInfoResponsePBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.GetSubClustersInfoRequestPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.GetSubClustersInfoResponsePBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.SubClusterDeregisterRequestPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.SubClusterDeregisterResponsePBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.SubClusterHeartbeatRequestPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.SubClusterHeartbeatResponsePBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.SubClusterIdPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.SubClusterInfoPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.SubClusterRegisterRequestPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.SubClusterRegisterResponsePBImpl;
|
||||
import org.apache.hadoop.yarn.server.records.Version;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* Test class for federation protocol records.
|
||||
*/
|
||||
public class TestFederationProtocolRecords extends BasePBImplRecordsTest {
|
||||
|
||||
@BeforeClass
|
||||
public static void setup() throws Exception {
|
||||
generateByNewInstance(ApplicationId.class);
|
||||
generateByNewInstance(Version.class);
|
||||
generateByNewInstance(SubClusterId.class);
|
||||
generateByNewInstance(SubClusterInfo.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubClusterId() throws Exception {
|
||||
validatePBImplRecord(SubClusterIdPBImpl.class, SubClusterIdProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubClusterInfo() throws Exception {
|
||||
validatePBImplRecord(SubClusterInfoPBImpl.class, SubClusterInfoProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubClusterRegisterRequest() throws Exception {
|
||||
validatePBImplRecord(SubClusterRegisterRequestPBImpl.class,
|
||||
SubClusterRegisterRequestProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubClusterRegisterResponse() throws Exception {
|
||||
validatePBImplRecord(SubClusterRegisterResponsePBImpl.class,
|
||||
SubClusterRegisterResponseProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubClusterDeregisterRequest() throws Exception {
|
||||
validatePBImplRecord(SubClusterDeregisterRequestPBImpl.class,
|
||||
SubClusterDeregisterRequestProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubClusterDeregisterResponse() throws Exception {
|
||||
validatePBImplRecord(SubClusterDeregisterResponsePBImpl.class,
|
||||
SubClusterDeregisterResponseProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubClusterHeartbeatRequest() throws Exception {
|
||||
validatePBImplRecord(SubClusterHeartbeatRequestPBImpl.class,
|
||||
SubClusterHeartbeatRequestProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubClusterHeartbeatResponse() throws Exception {
|
||||
validatePBImplRecord(SubClusterHeartbeatResponsePBImpl.class,
|
||||
SubClusterHeartbeatResponseProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSubClusterRequest() throws Exception {
|
||||
validatePBImplRecord(GetSubClusterInfoRequestPBImpl.class,
|
||||
GetSubClusterInfoRequestProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSubClusterResponse() throws Exception {
|
||||
validatePBImplRecord(GetSubClusterInfoResponsePBImpl.class,
|
||||
GetSubClusterInfoResponseProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSubClustersInfoRequest() throws Exception {
|
||||
validatePBImplRecord(GetSubClustersInfoRequestPBImpl.class,
|
||||
GetSubClustersInfoRequestProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSubClustersInfoResponse() throws Exception {
|
||||
validatePBImplRecord(GetSubClustersInfoResponsePBImpl.class,
|
||||
GetSubClustersInfoResponseProto.class);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue