YARN-3664. Federation PolicyStore internal APIs
This commit is contained in:
parent
1af5292042
commit
2f377263a1
|
@ -0,0 +1,76 @@
|
|||
/**
|
||||
* 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;
|
||||
|
||||
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.GetSubClusterPoliciesConfigurationsRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterPoliciesConfigurationsResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterPolicyConfigurationRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterPolicyConfigurationResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SetSubClusterPolicyConfigurationRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SetSubClusterPolicyConfigurationResponse;
|
||||
|
||||
/**
|
||||
* The FederationPolicyStore provides a key-value interface to access the
|
||||
* policies configured for the system. The key is a "queue" name, i.e., the
|
||||
* system allows to configure a different policy for each queue in the system
|
||||
* (though each policy can make dynamic run-time decisions on a per-job/per-task
|
||||
* basis). The value is a {@code SubClusterPolicyConfiguration}, a serialized
|
||||
* representation of the policy type and its parameters.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public interface FederationPolicyStore {
|
||||
|
||||
/**
|
||||
* Get the policy configuration for a given queue.
|
||||
*
|
||||
* @param request the queue whose {@code SubClusterPolicyConfiguration} is
|
||||
* required
|
||||
* @return the {@code SubClusterPolicyConfiguration} for the specified queue
|
||||
* @throws YarnException if the request is invalid/fails
|
||||
*/
|
||||
GetSubClusterPolicyConfigurationResponse getPolicyConfiguration(
|
||||
GetSubClusterPolicyConfigurationRequest request) throws YarnException;
|
||||
|
||||
/**
|
||||
* Set the policy configuration for a given queue.
|
||||
*
|
||||
* @param request the {@code SubClusterPolicyConfiguration} with the
|
||||
* corresponding queue
|
||||
* @return response empty on successfully updating the
|
||||
* {@code SubClusterPolicyConfiguration} for the specified queue
|
||||
* @throws YarnException if the request is invalid/fails
|
||||
*/
|
||||
SetSubClusterPolicyConfigurationResponse setPolicyConfiguration(
|
||||
SetSubClusterPolicyConfigurationRequest request) throws YarnException;
|
||||
|
||||
/**
|
||||
* Get a map of all queue-to-policy configurations.
|
||||
*
|
||||
* @param request empty to represent all configured queues in the system
|
||||
* @return the policies for all currently active queues in the system
|
||||
* @throws YarnException if the request is invalid/fails
|
||||
*/
|
||||
GetSubClusterPoliciesConfigurationsResponse getPoliciesConfigurations(
|
||||
GetSubClusterPoliciesConfigurationsRequest request) throws YarnException;
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/**
|
||||
* 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.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* GetSubClusterPoliciesConfigurationsRequest is a request to the
|
||||
* {@code FederationPolicyStore} to obtain all policy configurations.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class GetSubClusterPoliciesConfigurationsRequest {
|
||||
public GetSubClusterPoliciesConfigurationsRequest newInstance() {
|
||||
return Records.newRecord(GetSubClusterPoliciesConfigurationsRequest.class);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* GetSubClusterPolicyConfigurationResponse contains the answer from the {@code
|
||||
* FederationPolicyStore} to a request to get all the policies configured in the
|
||||
* system via a {@link SubClusterPolicyConfiguration}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class GetSubClusterPoliciesConfigurationsResponse {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public GetSubClusterPoliciesConfigurationsResponse newInstance(
|
||||
List<SubClusterPolicyConfiguration> policyConfigurations) {
|
||||
GetSubClusterPoliciesConfigurationsResponse response =
|
||||
Records.newRecord(GetSubClusterPoliciesConfigurationsResponse.class);
|
||||
response.setPoliciesConfigs(policyConfigurations);
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all the policies configured in the system.
|
||||
*
|
||||
* @return all the policies configured in the system
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract List<SubClusterPolicyConfiguration> getPoliciesConfigs();
|
||||
|
||||
/**
|
||||
* Sets all the policies configured in the system.
|
||||
*
|
||||
* @param policyConfigurations all the policies configured in the system
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setPoliciesConfigs(
|
||||
List<SubClusterPolicyConfiguration> policyConfigurations);
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* GetSubClusterPolicyConfigurationRequest is a request to the
|
||||
* {@code FederationPolicyStore} to get the configuration of a policy for a
|
||||
* given queue.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class GetSubClusterPolicyConfigurationRequest {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public GetSubClusterPolicyConfigurationRequest newInstance(String queueName) {
|
||||
GetSubClusterPolicyConfigurationRequest request =
|
||||
Records.newRecord(GetSubClusterPolicyConfigurationRequest.class);
|
||||
request.setQueue(queueName);
|
||||
return request;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of the queue for which we are requesting a policy
|
||||
* configuration.
|
||||
*
|
||||
* @return the name of the queue
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getQueue();
|
||||
|
||||
/**
|
||||
* Sets the name of the queue for which we are requesting a policy
|
||||
* configuration.
|
||||
*
|
||||
* @param queueName the name of the queue
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setQueue(String queueName);
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* GetSubClusterPolicyConfigurationResponse contains the answer from the {@code
|
||||
* FederationPolicyStore} to a request to get the information about how a policy
|
||||
* should be configured via a {@link SubClusterPolicyConfiguration}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class GetSubClusterPolicyConfigurationResponse {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public GetSubClusterPolicyConfigurationResponse newInstance(
|
||||
SubClusterPolicyConfiguration policy) {
|
||||
GetSubClusterPolicyConfigurationResponse response =
|
||||
Records.newRecord(GetSubClusterPolicyConfigurationResponse.class);
|
||||
response.setPolicyConfiguration(policy);
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the policy configuration.
|
||||
*
|
||||
* @return the policy configuration for the specified queue
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterPolicyConfiguration getPolicyConfiguration();
|
||||
|
||||
/**
|
||||
* Sets the policyConfiguration configuration.
|
||||
*
|
||||
* @param policyConfiguration the policyConfiguration configuration for the
|
||||
* specified queue
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setPolicyConfiguration(
|
||||
SubClusterPolicyConfiguration policyConfiguration);
|
||||
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* SetSubClusterPolicyConfigurationRequest is a request to the
|
||||
* {@code FederationPolicyStore} to set the policy configuration corresponding
|
||||
* to a queue.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SetSubClusterPolicyConfigurationRequest {
|
||||
@Private
|
||||
@Unstable
|
||||
public SetSubClusterPolicyConfigurationRequest newInstance(
|
||||
SubClusterPolicyConfiguration policy) {
|
||||
SetSubClusterPolicyConfigurationRequest request =
|
||||
Records.newRecord(SetSubClusterPolicyConfigurationRequest.class);
|
||||
request.setPolicyConfiguration(policy);
|
||||
return request;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of the queue for which we are configuring a policy.
|
||||
*
|
||||
* @return the name of the queue
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getQueue();
|
||||
|
||||
/**
|
||||
* Sets the name of the queue for which we are configuring a policy.
|
||||
*
|
||||
* @param queueName the name of the queue
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setQueue(String queueName);
|
||||
|
||||
/**
|
||||
* Get the policy configuration assigned to the queue.
|
||||
*
|
||||
* @return the policy for the specified queue
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract SubClusterPolicyConfiguration getPolicyConfiguration();
|
||||
|
||||
/**
|
||||
* Set the policyConfiguration configuration for the queue.
|
||||
*
|
||||
* @param policyConfiguration the policyConfiguration for the specified queue
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setPolicyConfiguration(
|
||||
SubClusterPolicyConfiguration policyConfiguration);
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/**
|
||||
* 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.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.util.Records;
|
||||
|
||||
/**
|
||||
* SetSubClusterPolicyConfigurationResponse contains the answer from the
|
||||
* {@code FederationPolicyStore} to a request to set for a policy configuration
|
||||
* for a given queue.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SetSubClusterPolicyConfigurationResponse {
|
||||
public SetSubClusterPolicyConfigurationResponse newInstance() {
|
||||
return Records.newRecord(SetSubClusterPolicyConfigurationResponse.class);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,130 @@
|
|||
/**
|
||||
* 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;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
// used in javadoc
|
||||
|
||||
/**
|
||||
* {@link SubClusterPolicyConfiguration} is a class that represents a
|
||||
* configuration of a policy. It contains a policy type (resolve to a class
|
||||
* name) and its params as an opaque {@link ByteBuffer}.
|
||||
*
|
||||
* Note: by design the params are an opaque ByteBuffer, this allows for enough
|
||||
* flexibility to evolve the policies without impacting the protocols to/from
|
||||
* the federation state store.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract class SubClusterPolicyConfiguration {
|
||||
|
||||
@Private
|
||||
@Unstable
|
||||
public static SubClusterPolicyConfiguration newInstance(String policyType,
|
||||
ByteBuffer policyParams) {
|
||||
SubClusterPolicyConfiguration policy =
|
||||
Records.newRecord(SubClusterPolicyConfiguration.class);
|
||||
policy.setType(policyType);
|
||||
policy.setParams(policyParams);
|
||||
return policy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the type of the policy. This could be random, round-robin, load-based,
|
||||
* etc.
|
||||
*
|
||||
* @return the type of the policy
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract String getType();
|
||||
|
||||
/**
|
||||
* Sets the type of the policy. This could be random, round-robin, load-based,
|
||||
* etc.
|
||||
*
|
||||
* @param policyType the type of the policy
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setType(String policyType);
|
||||
|
||||
/**
|
||||
* Get the policy parameters. This affects how the policy behaves and an
|
||||
* example could be weight distribution of queues across multiple
|
||||
* sub-clusters.
|
||||
*
|
||||
* @return the byte array that contains the parameters
|
||||
*/
|
||||
@Public
|
||||
@Unstable
|
||||
public abstract ByteBuffer getParams();
|
||||
|
||||
/**
|
||||
* Set the policy parameters. This affects how the policy behaves and an
|
||||
* example could be weight distribution of queues across multiple
|
||||
* sub-clusters.
|
||||
*
|
||||
* @param policyParams byte array that describes the policy
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public abstract void setParams(ByteBuffer policyParams);
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return 31 * getParams().hashCode() + getType().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
SubClusterPolicyConfiguration other = (SubClusterPolicyConfiguration) obj;
|
||||
if (!this.getType().equals(other.getType())) {
|
||||
return false;
|
||||
}
|
||||
if (!this.getParams().equals(other.getParams())) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getType());
|
||||
sb.append(" : ");
|
||||
sb.append(getParams());
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
/**
|
||||
* 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.GetSubClusterPoliciesConfigurationsRequestProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterPoliciesConfigurationsRequest;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of
|
||||
* {@link GetSubClusterPoliciesConfigurationsRequest}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class GetSubClusterPoliciesConfigurationsRequestPBImpl
|
||||
extends GetSubClusterPoliciesConfigurationsRequest {
|
||||
|
||||
private GetSubClusterPoliciesConfigurationsRequestProto proto =
|
||||
GetSubClusterPoliciesConfigurationsRequestProto.getDefaultInstance();
|
||||
private GetSubClusterPoliciesConfigurationsRequestProto.Builder builder =
|
||||
null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public GetSubClusterPoliciesConfigurationsRequestPBImpl() {
|
||||
builder = GetSubClusterPoliciesConfigurationsRequestProto.newBuilder();
|
||||
}
|
||||
|
||||
public GetSubClusterPoliciesConfigurationsRequestPBImpl(
|
||||
GetSubClusterPoliciesConfigurationsRequestProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public GetSubClusterPoliciesConfigurationsRequestProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder =
|
||||
GetSubClusterPoliciesConfigurationsRequestProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
@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,191 @@
|
|||
/**
|
||||
* 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 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.GetSubClusterPoliciesConfigurationsResponseProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterPoliciesConfigurationsResponseProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterPolicyConfigurationProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterPoliciesConfigurationsResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterPolicyConfiguration;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of
|
||||
* {@link GetSubClusterPoliciesConfigurationsResponse}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class GetSubClusterPoliciesConfigurationsResponsePBImpl
|
||||
extends GetSubClusterPoliciesConfigurationsResponse {
|
||||
|
||||
private GetSubClusterPoliciesConfigurationsResponseProto proto =
|
||||
GetSubClusterPoliciesConfigurationsResponseProto.getDefaultInstance();
|
||||
private GetSubClusterPoliciesConfigurationsResponseProto.Builder builder =
|
||||
null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
private List<SubClusterPolicyConfiguration> subClusterPolicies = null;
|
||||
|
||||
public GetSubClusterPoliciesConfigurationsResponsePBImpl() {
|
||||
builder = GetSubClusterPoliciesConfigurationsResponseProto.newBuilder();
|
||||
}
|
||||
|
||||
public GetSubClusterPoliciesConfigurationsResponsePBImpl(
|
||||
GetSubClusterPoliciesConfigurationsResponseProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public GetSubClusterPoliciesConfigurationsResponseProto 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 =
|
||||
GetSubClusterPoliciesConfigurationsResponseProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
if (this.subClusterPolicies != null) {
|
||||
addSubClusterPoliciesConfigurationsToProto();
|
||||
}
|
||||
}
|
||||
|
||||
@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 List<SubClusterPolicyConfiguration> getPoliciesConfigs() {
|
||||
initSubClusterPoliciesConfigurationsList();
|
||||
return this.subClusterPolicies;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPoliciesConfigs(
|
||||
List<SubClusterPolicyConfiguration> policyConfigurations) {
|
||||
maybeInitBuilder();
|
||||
if (policyConfigurations == null) {
|
||||
builder.clearPoliciesConfigurations();
|
||||
}
|
||||
this.subClusterPolicies = policyConfigurations;
|
||||
}
|
||||
|
||||
private void initSubClusterPoliciesConfigurationsList() {
|
||||
if (this.subClusterPolicies != null) {
|
||||
return;
|
||||
}
|
||||
GetSubClusterPoliciesConfigurationsResponseProtoOrBuilder p =
|
||||
viaProto ? proto : builder;
|
||||
List<SubClusterPolicyConfigurationProto> subClusterPoliciesList =
|
||||
p.getPoliciesConfigurationsList();
|
||||
subClusterPolicies = new ArrayList<SubClusterPolicyConfiguration>();
|
||||
|
||||
for (SubClusterPolicyConfigurationProto r : subClusterPoliciesList) {
|
||||
subClusterPolicies.add(convertFromProtoFormat(r));
|
||||
}
|
||||
}
|
||||
|
||||
private void addSubClusterPoliciesConfigurationsToProto() {
|
||||
maybeInitBuilder();
|
||||
builder.clearPoliciesConfigurations();
|
||||
if (subClusterPolicies == null) {
|
||||
return;
|
||||
}
|
||||
Iterable<SubClusterPolicyConfigurationProto> iterable =
|
||||
new Iterable<SubClusterPolicyConfigurationProto>() {
|
||||
@Override
|
||||
public Iterator<SubClusterPolicyConfigurationProto> iterator() {
|
||||
return new Iterator<SubClusterPolicyConfigurationProto>() {
|
||||
|
||||
private Iterator<SubClusterPolicyConfiguration> iter =
|
||||
subClusterPolicies.iterator();
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return iter.hasNext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterPolicyConfigurationProto next() {
|
||||
return convertToProtoFormat(iter.next());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
builder.addAllPoliciesConfigurations(iterable);
|
||||
}
|
||||
|
||||
private SubClusterPolicyConfiguration convertFromProtoFormat(
|
||||
SubClusterPolicyConfigurationProto policy) {
|
||||
return new SubClusterPolicyConfigurationPBImpl(policy);
|
||||
}
|
||||
|
||||
private SubClusterPolicyConfigurationProto convertToProtoFormat(
|
||||
SubClusterPolicyConfiguration policy) {
|
||||
return ((SubClusterPolicyConfigurationPBImpl) policy).getProto();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
/**
|
||||
* 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.GetSubClusterPolicyConfigurationRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterPolicyConfigurationRequestProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterPolicyConfigurationRequest;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of
|
||||
* {@link GetSubClusterPolicyConfigurationRequest}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class GetSubClusterPolicyConfigurationRequestPBImpl
|
||||
extends GetSubClusterPolicyConfigurationRequest {
|
||||
|
||||
private GetSubClusterPolicyConfigurationRequestProto proto =
|
||||
GetSubClusterPolicyConfigurationRequestProto.getDefaultInstance();
|
||||
private GetSubClusterPolicyConfigurationRequestProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public GetSubClusterPolicyConfigurationRequestPBImpl() {
|
||||
builder = GetSubClusterPolicyConfigurationRequestProto.newBuilder();
|
||||
}
|
||||
|
||||
public GetSubClusterPolicyConfigurationRequestPBImpl(
|
||||
GetSubClusterPolicyConfigurationRequestProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public GetSubClusterPolicyConfigurationRequestProto getProto() {
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = GetSubClusterPolicyConfigurationRequestProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
@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 String getQueue() {
|
||||
GetSubClusterPolicyConfigurationRequestProtoOrBuilder p =
|
||||
viaProto ? proto : builder;
|
||||
return p.getQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQueue(String queueName) {
|
||||
maybeInitBuilder();
|
||||
if (queueName == null) {
|
||||
builder.clearQueue();
|
||||
return;
|
||||
}
|
||||
builder.setQueue(queueName);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,143 @@
|
|||
/**
|
||||
* 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.GetSubClusterPolicyConfigurationResponseProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterPolicyConfigurationResponseProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterPolicyConfigurationProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterPolicyConfigurationResponse;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterPolicyConfiguration;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of
|
||||
* {@link GetSubClusterPolicyConfigurationResponse}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class GetSubClusterPolicyConfigurationResponsePBImpl
|
||||
extends GetSubClusterPolicyConfigurationResponse {
|
||||
|
||||
private GetSubClusterPolicyConfigurationResponseProto proto =
|
||||
GetSubClusterPolicyConfigurationResponseProto.getDefaultInstance();
|
||||
private GetSubClusterPolicyConfigurationResponseProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
private SubClusterPolicyConfiguration subClusterPolicy = null;
|
||||
|
||||
public GetSubClusterPolicyConfigurationResponsePBImpl() {
|
||||
builder = GetSubClusterPolicyConfigurationResponseProto.newBuilder();
|
||||
}
|
||||
|
||||
public GetSubClusterPolicyConfigurationResponsePBImpl(
|
||||
GetSubClusterPolicyConfigurationResponseProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public GetSubClusterPolicyConfigurationResponseProto 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 = GetSubClusterPolicyConfigurationResponseProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
if (this.subClusterPolicy != null
|
||||
&& !((SubClusterPolicyConfigurationPBImpl) this.subClusterPolicy)
|
||||
.getProto().equals(builder.getPolicyConfiguration())) {
|
||||
builder
|
||||
.setPolicyConfiguration(convertToProtoFormat(this.subClusterPolicy));
|
||||
}
|
||||
}
|
||||
|
||||
@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 SubClusterPolicyConfiguration getPolicyConfiguration() {
|
||||
GetSubClusterPolicyConfigurationResponseProtoOrBuilder p =
|
||||
viaProto ? proto : builder;
|
||||
if (this.subClusterPolicy != null) {
|
||||
return this.subClusterPolicy;
|
||||
}
|
||||
if (!p.hasPolicyConfiguration()) {
|
||||
return null;
|
||||
}
|
||||
this.subClusterPolicy = convertFromProtoFormat(p.getPolicyConfiguration());
|
||||
return this.subClusterPolicy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPolicyConfiguration(
|
||||
SubClusterPolicyConfiguration policyConfiguration) {
|
||||
maybeInitBuilder();
|
||||
if (policyConfiguration == null) {
|
||||
builder.clearPolicyConfiguration();
|
||||
}
|
||||
this.subClusterPolicy = policyConfiguration;
|
||||
}
|
||||
|
||||
private SubClusterPolicyConfiguration convertFromProtoFormat(
|
||||
SubClusterPolicyConfigurationProto policy) {
|
||||
return new SubClusterPolicyConfigurationPBImpl(policy);
|
||||
}
|
||||
|
||||
private SubClusterPolicyConfigurationProto convertToProtoFormat(
|
||||
SubClusterPolicyConfiguration policy) {
|
||||
return ((SubClusterPolicyConfigurationPBImpl) policy).getProto();
|
||||
}
|
||||
|
||||
}
|
|
@ -66,7 +66,7 @@ public class GetSubClustersInfoResponsePBImpl
|
|||
|
||||
private void mergeLocalToBuilder() {
|
||||
if (this.subClusterInfos != null) {
|
||||
addReservationResourcesToProto();
|
||||
addSubClusterInfosToProto();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -114,7 +114,7 @@ public class GetSubClustersInfoResponsePBImpl
|
|||
}
|
||||
}
|
||||
|
||||
private void addReservationResourcesToProto() {
|
||||
private void addSubClusterInfosToProto() {
|
||||
maybeInitBuilder();
|
||||
builder.clearSubClusterInfos();
|
||||
if (subClusterInfos == null) {
|
||||
|
|
|
@ -0,0 +1,159 @@
|
|||
/**
|
||||
* 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.SetSubClusterPolicyConfigurationRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SetSubClusterPolicyConfigurationRequestProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterPolicyConfigurationProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SetSubClusterPolicyConfigurationRequest;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterPolicyConfiguration;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of
|
||||
* {@link SetSubClusterPolicyConfigurationRequest}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SetSubClusterPolicyConfigurationRequestPBImpl
|
||||
extends SetSubClusterPolicyConfigurationRequest {
|
||||
|
||||
private SetSubClusterPolicyConfigurationRequestProto proto =
|
||||
SetSubClusterPolicyConfigurationRequestProto.getDefaultInstance();
|
||||
private SetSubClusterPolicyConfigurationRequestProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
private SubClusterPolicyConfiguration subClusterPolicy = null;
|
||||
|
||||
public SetSubClusterPolicyConfigurationRequestPBImpl() {
|
||||
builder = SetSubClusterPolicyConfigurationRequestProto.newBuilder();
|
||||
}
|
||||
|
||||
public SetSubClusterPolicyConfigurationRequestPBImpl(
|
||||
SetSubClusterPolicyConfigurationRequestProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SetSubClusterPolicyConfigurationRequestProto 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 = SetSubClusterPolicyConfigurationRequestProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
private void mergeLocalToBuilder() {
|
||||
if (this.subClusterPolicy != null
|
||||
&& !((SubClusterPolicyConfigurationPBImpl) this.subClusterPolicy)
|
||||
.getProto().equals(builder.getPolicyConfiguration())) {
|
||||
builder
|
||||
.setPolicyConfiguration(convertToProtoFormat(this.subClusterPolicy));
|
||||
}
|
||||
}
|
||||
|
||||
@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 String getQueue() {
|
||||
SetSubClusterPolicyConfigurationRequestProtoOrBuilder p =
|
||||
viaProto ? proto : builder;
|
||||
return p.getQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQueue(String queueName) {
|
||||
maybeInitBuilder();
|
||||
if (queueName == null) {
|
||||
builder.clearQueue();
|
||||
return;
|
||||
}
|
||||
builder.setQueue(queueName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubClusterPolicyConfiguration getPolicyConfiguration() {
|
||||
SetSubClusterPolicyConfigurationRequestProtoOrBuilder p =
|
||||
viaProto ? proto : builder;
|
||||
if (this.subClusterPolicy != null) {
|
||||
return this.subClusterPolicy;
|
||||
}
|
||||
if (!p.hasPolicyConfiguration()) {
|
||||
return null;
|
||||
}
|
||||
this.subClusterPolicy = convertFromProtoFormat(p.getPolicyConfiguration());
|
||||
return this.subClusterPolicy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPolicyConfiguration(
|
||||
SubClusterPolicyConfiguration policyConfiguration) {
|
||||
maybeInitBuilder();
|
||||
if (policyConfiguration == null) {
|
||||
builder.clearPolicyConfiguration();
|
||||
}
|
||||
this.subClusterPolicy = policyConfiguration;
|
||||
}
|
||||
|
||||
private SubClusterPolicyConfiguration convertFromProtoFormat(
|
||||
SubClusterPolicyConfigurationProto policy) {
|
||||
return new SubClusterPolicyConfigurationPBImpl(policy);
|
||||
}
|
||||
|
||||
private SubClusterPolicyConfigurationProto convertToProtoFormat(
|
||||
SubClusterPolicyConfiguration policy) {
|
||||
return ((SubClusterPolicyConfigurationPBImpl) policy).getProto();
|
||||
}
|
||||
}
|
|
@ -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
|
||||
* <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.SetSubClusterPolicyConfigurationResponseProto;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SetSubClusterPolicyConfigurationResponse;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protocol buffer based implementation of
|
||||
* {@link SetSubClusterPolicyConfigurationResponse}.
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SetSubClusterPolicyConfigurationResponsePBImpl
|
||||
extends SetSubClusterPolicyConfigurationResponse {
|
||||
|
||||
private SetSubClusterPolicyConfigurationResponseProto proto =
|
||||
SetSubClusterPolicyConfigurationResponseProto.getDefaultInstance();
|
||||
private SetSubClusterPolicyConfigurationResponseProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public SetSubClusterPolicyConfigurationResponsePBImpl() {
|
||||
builder = SetSubClusterPolicyConfigurationResponseProto.newBuilder();
|
||||
}
|
||||
|
||||
public SetSubClusterPolicyConfigurationResponsePBImpl(
|
||||
SetSubClusterPolicyConfigurationResponseProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SetSubClusterPolicyConfigurationResponseProto getProto() {
|
||||
mergeLocalToProto();
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void mergeLocalToProto() {
|
||||
if (viaProto) {
|
||||
maybeInitBuilder();
|
||||
}
|
||||
proto = builder.build();
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = SetSubClusterPolicyConfigurationResponseProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
@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,121 @@
|
|||
/**
|
||||
* 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 java.nio.ByteBuffer;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience.Private;
|
||||
import org.apache.hadoop.classification.InterfaceStability.Unstable;
|
||||
import org.apache.hadoop.yarn.api.records.impl.pb.ProtoUtils;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterPolicyConfigurationProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SubClusterPolicyConfigurationProtoOrBuilder;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterPolicyConfiguration;
|
||||
|
||||
import com.google.protobuf.TextFormat;
|
||||
|
||||
/**
|
||||
* Protobuf based implementation of {@link SubClusterPolicyConfiguration}.
|
||||
*
|
||||
*/
|
||||
@Private
|
||||
@Unstable
|
||||
public class SubClusterPolicyConfigurationPBImpl
|
||||
extends SubClusterPolicyConfiguration {
|
||||
|
||||
private SubClusterPolicyConfigurationProto proto =
|
||||
SubClusterPolicyConfigurationProto.getDefaultInstance();
|
||||
private SubClusterPolicyConfigurationProto.Builder builder = null;
|
||||
private boolean viaProto = false;
|
||||
|
||||
public SubClusterPolicyConfigurationPBImpl() {
|
||||
builder = SubClusterPolicyConfigurationProto.newBuilder();
|
||||
}
|
||||
|
||||
public SubClusterPolicyConfigurationPBImpl(
|
||||
SubClusterPolicyConfigurationProto proto) {
|
||||
this.proto = proto;
|
||||
viaProto = true;
|
||||
}
|
||||
|
||||
public SubClusterPolicyConfigurationProto getProto() {
|
||||
proto = viaProto ? proto : builder.build();
|
||||
viaProto = true;
|
||||
return proto;
|
||||
}
|
||||
|
||||
private void maybeInitBuilder() {
|
||||
if (viaProto || builder == null) {
|
||||
builder = SubClusterPolicyConfigurationProto.newBuilder(proto);
|
||||
}
|
||||
viaProto = false;
|
||||
}
|
||||
|
||||
@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 String getType() {
|
||||
SubClusterPolicyConfigurationProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return p.getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(String policyType) {
|
||||
maybeInitBuilder();
|
||||
if (policyType == null) {
|
||||
builder.clearType();
|
||||
return;
|
||||
}
|
||||
builder.setType(policyType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer getParams() {
|
||||
SubClusterPolicyConfigurationProtoOrBuilder p = viaProto ? proto : builder;
|
||||
return ProtoUtils.convertFromProtoFormat(p.getParams());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setParams(ByteBuffer policyParams) {
|
||||
maybeInitBuilder();
|
||||
if (policyParams == null) {
|
||||
builder.clearParams();
|
||||
return;
|
||||
}
|
||||
builder.setParams(ProtoUtils.convertToProtoFormat(policyParams));
|
||||
}
|
||||
|
||||
}
|
|
@ -134,3 +134,31 @@ message DeleteApplicationHomeSubClusterRequestProto {
|
|||
|
||||
message DeleteApplicationHomeSubClusterResponseProto {
|
||||
}
|
||||
|
||||
message SubClusterPolicyConfigurationProto {
|
||||
optional string type = 1;
|
||||
optional bytes params = 2;
|
||||
}
|
||||
|
||||
message GetSubClusterPolicyConfigurationRequestProto {
|
||||
optional string queue = 1;
|
||||
}
|
||||
|
||||
message GetSubClusterPolicyConfigurationResponseProto {
|
||||
optional SubClusterPolicyConfigurationProto policy_configuration = 1;
|
||||
}
|
||||
|
||||
message SetSubClusterPolicyConfigurationRequestProto {
|
||||
optional string queue = 1;
|
||||
optional SubClusterPolicyConfigurationProto policy_configuration = 2;
|
||||
}
|
||||
|
||||
message SetSubClusterPolicyConfigurationResponseProto {
|
||||
}
|
||||
|
||||
message GetSubClusterPoliciesConfigurationsRequestProto {
|
||||
}
|
||||
|
||||
message GetSubClusterPoliciesConfigurationsResponseProto {
|
||||
repeated SubClusterPolicyConfigurationProto policies_configurations = 1;
|
||||
}
|
||||
|
|
|
@ -29,8 +29,14 @@ import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetApp
|
|||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetApplicationsHomeSubClusterResponseProto;
|
||||
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.GetSubClusterPoliciesConfigurationsRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterPoliciesConfigurationsResponseProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterPolicyConfigurationRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.GetSubClusterPolicyConfigurationResponseProto;
|
||||
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.SetSubClusterPolicyConfigurationRequestProto;
|
||||
import org.apache.hadoop.yarn.federation.proto.YarnServerFederationProtos.SetSubClusterPolicyConfigurationResponseProto;
|
||||
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;
|
||||
|
@ -51,8 +57,14 @@ import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.GetApplica
|
|||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.GetApplicationsHomeSubClusterResponsePBImpl;
|
||||
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.GetSubClusterPoliciesConfigurationsRequestPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.GetSubClusterPoliciesConfigurationsResponsePBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.GetSubClusterPolicyConfigurationRequestPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.GetSubClusterPolicyConfigurationResponsePBImpl;
|
||||
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.SetSubClusterPolicyConfigurationRequestPBImpl;
|
||||
import org.apache.hadoop.yarn.server.federation.store.records.impl.pb.SetSubClusterPolicyConfigurationResponsePBImpl;
|
||||
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;
|
||||
|
@ -79,6 +91,7 @@ public class TestFederationProtocolRecords extends BasePBImplRecordsTest {
|
|||
generateByNewInstance(SubClusterId.class);
|
||||
generateByNewInstance(SubClusterInfo.class);
|
||||
generateByNewInstance(ApplicationHomeSubCluster.class);
|
||||
generateByNewInstance(SubClusterPolicyConfiguration.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -211,4 +224,42 @@ public class TestFederationProtocolRecords extends BasePBImplRecordsTest {
|
|||
DeleteApplicationHomeSubClusterResponseProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSubClusterPolicyConfigurationRequest() throws Exception {
|
||||
validatePBImplRecord(GetSubClusterPolicyConfigurationRequestPBImpl.class,
|
||||
GetSubClusterPolicyConfigurationRequestProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSubClusterPolicyConfigurationResponse() throws Exception {
|
||||
validatePBImplRecord(GetSubClusterPolicyConfigurationResponsePBImpl.class,
|
||||
GetSubClusterPolicyConfigurationResponseProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetSubClusterPolicyConfigurationRequest() throws Exception {
|
||||
validatePBImplRecord(SetSubClusterPolicyConfigurationRequestPBImpl.class,
|
||||
SetSubClusterPolicyConfigurationRequestProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetSubClusterPolicyConfigurationResponse() throws Exception {
|
||||
validatePBImplRecord(SetSubClusterPolicyConfigurationResponsePBImpl.class,
|
||||
SetSubClusterPolicyConfigurationResponseProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSubClusterPoliciesConfigurationsRequest()
|
||||
throws Exception {
|
||||
validatePBImplRecord(GetSubClusterPoliciesConfigurationsRequestPBImpl.class,
|
||||
GetSubClusterPoliciesConfigurationsRequestProto.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSubClusterPoliciesConfigurationsResponse()
|
||||
throws Exception {
|
||||
validatePBImplRecord(
|
||||
GetSubClusterPoliciesConfigurationsResponsePBImpl.class,
|
||||
GetSubClusterPoliciesConfigurationsResponseProto.class);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue