http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationSubmissionRequestPBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationSubmissionRequestPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationSubmissionRequestPBImpl.java new file mode 100644 index 0000000..9f10f4c --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationSubmissionRequestPBImpl.java @@ -0,0 +1,152 @@ +/** + * 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.api.protocolrecords.impl.pb; + +import org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionRequest; +import org.apache.hadoop.yarn.api.records.ReservationDefinition; +import org.apache.hadoop.yarn.api.records.impl.pb.ReservationDefinitionPBImpl; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationDefinitionProto; +import org.apache.hadoop.yarn.proto.YarnServiceProtos.ReservationSubmissionRequestProto; +import org.apache.hadoop.yarn.proto.YarnServiceProtos.ReservationSubmissionRequestProtoOrBuilder; + +import com.google.protobuf.TextFormat; + +public class ReservationSubmissionRequestPBImpl extends + ReservationSubmissionRequest { + + ReservationSubmissionRequestProto proto = ReservationSubmissionRequestProto + .getDefaultInstance(); + ReservationSubmissionRequestProto.Builder builder = null; + boolean viaProto = false; + + private ReservationDefinition reservationDefinition; + + public ReservationSubmissionRequestPBImpl() { + builder = ReservationSubmissionRequestProto.newBuilder(); + } + + public ReservationSubmissionRequestPBImpl( + ReservationSubmissionRequestProto proto) { + this.proto = proto; + viaProto = true; + } + + public ReservationSubmissionRequestProto getProto() { + mergeLocalToProto(); + proto = viaProto ? proto : builder.build(); + viaProto = true; + return proto; + } + + private void mergeLocalToBuilder() { + if (this.reservationDefinition != null) { + builder + .setReservationDefinition(convertToProtoFormat(reservationDefinition)); + } + } + + private void mergeLocalToProto() { + if (viaProto) + maybeInitBuilder(); + mergeLocalToBuilder(); + proto = builder.build(); + viaProto = true; + } + + private void maybeInitBuilder() { + if (viaProto || builder == null) { + builder = ReservationSubmissionRequestProto.newBuilder(proto); + } + viaProto = false; + } + + @Override + public ReservationDefinition getReservationDefinition() { + ReservationSubmissionRequestProtoOrBuilder p = viaProto ? proto : builder; + if (reservationDefinition != null) { + return reservationDefinition; + } + if (!p.hasReservationDefinition()) { + return null; + } + reservationDefinition = + convertFromProtoFormat(p.getReservationDefinition()); + return reservationDefinition; + } + + @Override + public void setReservationDefinition( + ReservationDefinition reservationDefinition) { + maybeInitBuilder(); + if (reservationDefinition == null) { + builder.clearReservationDefinition(); + } + this.reservationDefinition = reservationDefinition; + } + + @Override + public String getQueue() { + ReservationSubmissionRequestProtoOrBuilder p = viaProto ? proto : builder; + if (!p.hasQueue()) { + return null; + } + return (p.getQueue()); + } + + @Override + public void setQueue(String planName) { + maybeInitBuilder(); + if (planName == null) { + builder.clearQueue(); + return; + } + builder.setQueue(planName); + } + + private ReservationDefinitionProto convertToProtoFormat( + ReservationDefinition r) { + return ((ReservationDefinitionPBImpl) r).getProto(); + } + + private ReservationDefinitionPBImpl convertFromProtoFormat( + ReservationDefinitionProto r) { + return new ReservationDefinitionPBImpl(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()); + } + +}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationSubmissionResponsePBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationSubmissionResponsePBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationSubmissionResponsePBImpl.java new file mode 100644 index 0000000..82151f4 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationSubmissionResponsePBImpl.java @@ -0,0 +1,129 @@ +/** + * 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.api.protocolrecords.impl.pb; + +import org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionResponse; +import org.apache.hadoop.yarn.api.records.ReservationId; +import org.apache.hadoop.yarn.api.records.impl.pb.ReservationIdPBImpl; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationIdProto; +import org.apache.hadoop.yarn.proto.YarnServiceProtos.ReservationSubmissionResponseProto; +import org.apache.hadoop.yarn.proto.YarnServiceProtos.ReservationSubmissionResponseProtoOrBuilder; + +import com.google.protobuf.TextFormat; + +public class ReservationSubmissionResponsePBImpl extends + ReservationSubmissionResponse { + + ReservationSubmissionResponseProto proto = ReservationSubmissionResponseProto + .getDefaultInstance(); + ReservationSubmissionResponseProto.Builder builder = null; + boolean viaProto = false; + + private ReservationId reservationId; + + public ReservationSubmissionResponsePBImpl() { + builder = ReservationSubmissionResponseProto.newBuilder(); + } + + public ReservationSubmissionResponsePBImpl( + ReservationSubmissionResponseProto proto) { + this.proto = proto; + viaProto = true; + } + + public ReservationSubmissionResponseProto getProto() { + mergeLocalToProto(); + proto = viaProto ? proto : builder.build(); + viaProto = true; + return proto; + } + + private void mergeLocalToBuilder() { + if (this.reservationId != null) { + builder.setReservationId(convertToProtoFormat(this.reservationId)); + } + } + + private void mergeLocalToProto() { + if (viaProto) + maybeInitBuilder(); + mergeLocalToBuilder(); + proto = builder.build(); + viaProto = true; + } + + private void maybeInitBuilder() { + if (viaProto || builder == null) { + builder = ReservationSubmissionResponseProto.newBuilder(proto); + } + viaProto = false; + } + + @Override + public ReservationId getReservationId() { + ReservationSubmissionResponseProtoOrBuilder p = viaProto ? proto : builder; + if (reservationId != null) { + return reservationId; + } + if (!p.hasReservationId()) { + return null; + } + reservationId = convertFromProtoFormat(p.getReservationId()); + return reservationId; + } + + @Override + public void setReservationId(ReservationId reservationId) { + maybeInitBuilder(); + if (reservationId == null) { + builder.clearReservationId(); + return; + } + this.reservationId = reservationId; + } + + private ReservationIdPBImpl convertFromProtoFormat(ReservationIdProto p) { + return new ReservationIdPBImpl(p); + } + + private ReservationIdProto convertToProtoFormat(ReservationId t) { + return ((ReservationIdPBImpl) t).getProto(); + } + + @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()); + } + +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationUpdateRequestPBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationUpdateRequestPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationUpdateRequestPBImpl.java new file mode 100644 index 0000000..89999f2 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationUpdateRequestPBImpl.java @@ -0,0 +1,169 @@ +/** + * 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.api.protocolrecords.impl.pb; + +import org.apache.hadoop.yarn.api.protocolrecords.ReservationUpdateRequest; +import org.apache.hadoop.yarn.api.records.ReservationDefinition; +import org.apache.hadoop.yarn.api.records.ReservationId; +import org.apache.hadoop.yarn.api.records.impl.pb.ReservationDefinitionPBImpl; +import org.apache.hadoop.yarn.api.records.impl.pb.ReservationIdPBImpl; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationDefinitionProto; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationIdProto; +import org.apache.hadoop.yarn.proto.YarnServiceProtos.ReservationUpdateRequestProto; +import org.apache.hadoop.yarn.proto.YarnServiceProtos.ReservationUpdateRequestProtoOrBuilder; + +import com.google.protobuf.TextFormat; + +public class ReservationUpdateRequestPBImpl extends ReservationUpdateRequest { + + ReservationUpdateRequestProto proto = ReservationUpdateRequestProto + .getDefaultInstance(); + ReservationUpdateRequestProto.Builder builder = null; + boolean viaProto = false; + + private ReservationDefinition reservationDefinition; + private ReservationId reservationId; + + public ReservationUpdateRequestPBImpl() { + builder = ReservationUpdateRequestProto.newBuilder(); + } + + public ReservationUpdateRequestPBImpl(ReservationUpdateRequestProto proto) { + this.proto = proto; + viaProto = true; + } + + public ReservationUpdateRequestProto getProto() { + mergeLocalToProto(); + proto = viaProto ? proto : builder.build(); + viaProto = true; + return proto; + } + + private void mergeLocalToBuilder() { + if (this.reservationId != null) { + builder.setReservationId(convertToProtoFormat(this.reservationId)); + } + if (this.reservationDefinition != null) { + builder + .setReservationDefinition(convertToProtoFormat(reservationDefinition)); + } + } + + private void mergeLocalToProto() { + if (viaProto) + maybeInitBuilder(); + mergeLocalToBuilder(); + proto = builder.build(); + viaProto = true; + } + + private void maybeInitBuilder() { + if (viaProto || builder == null) { + builder = ReservationUpdateRequestProto.newBuilder(proto); + } + viaProto = false; + } + + @Override + public ReservationDefinition getReservationDefinition() { + ReservationUpdateRequestProtoOrBuilder p = viaProto ? proto : builder; + if (reservationDefinition != null) { + return reservationDefinition; + } + if (!p.hasReservationDefinition()) { + return null; + } + reservationDefinition = + convertFromProtoFormat(p.getReservationDefinition()); + return reservationDefinition; + } + + @Override + public void setReservationDefinition( + ReservationDefinition reservationDefinition) { + maybeInitBuilder(); + if (reservationDefinition == null) { + builder.clearReservationDefinition(); + } + this.reservationDefinition = reservationDefinition; + } + + @Override + public ReservationId getReservationId() { + ReservationUpdateRequestProtoOrBuilder p = viaProto ? proto : builder; + if (reservationId != null) { + return reservationId; + } + if (!p.hasReservationId()) { + return null; + } + reservationId = convertFromProtoFormat(p.getReservationId()); + return reservationId; + } + + @Override + public void setReservationId(ReservationId reservationId) { + maybeInitBuilder(); + if (reservationId == null) { + builder.clearReservationId(); + return; + } + this.reservationId = reservationId; + } + + private ReservationIdPBImpl convertFromProtoFormat(ReservationIdProto p) { + return new ReservationIdPBImpl(p); + } + + private ReservationIdProto convertToProtoFormat(ReservationId t) { + return ((ReservationIdPBImpl) t).getProto(); + } + + private ReservationDefinitionProto convertToProtoFormat( + ReservationDefinition r) { + return ((ReservationDefinitionPBImpl) r).getProto(); + } + + private ReservationDefinitionPBImpl convertFromProtoFormat( + ReservationDefinitionProto r) { + return new ReservationDefinitionPBImpl(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()); + } + +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationUpdateResponsePBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationUpdateResponsePBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationUpdateResponsePBImpl.java new file mode 100644 index 0000000..57c7b1b --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/ReservationUpdateResponsePBImpl.java @@ -0,0 +1,68 @@ +/** + * 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.api.protocolrecords.impl.pb; + +import org.apache.hadoop.yarn.api.protocolrecords.ReservationUpdateResponse; +import org.apache.hadoop.yarn.proto.YarnServiceProtos.ReservationUpdateResponseProto; + +import com.google.protobuf.TextFormat; + +public class ReservationUpdateResponsePBImpl extends ReservationUpdateResponse { + + ReservationUpdateResponseProto proto = ReservationUpdateResponseProto + .getDefaultInstance(); + ReservationUpdateResponseProto.Builder builder = null; + boolean viaProto = false; + + public ReservationUpdateResponsePBImpl() { + builder = ReservationUpdateResponseProto.newBuilder(); + } + + public ReservationUpdateResponsePBImpl(ReservationUpdateResponseProto proto) { + this.proto = proto; + viaProto = true; + } + + public ReservationUpdateResponseProto 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()); + } + +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationSubmissionContextPBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationSubmissionContextPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationSubmissionContextPBImpl.java index e4f183b..9462a4e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationSubmissionContextPBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationSubmissionContextPBImpl.java @@ -27,6 +27,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.LogAggregationContext; import org.apache.hadoop.yarn.api.records.Priority; +import org.apache.hadoop.yarn.api.records.ReservationId; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationIdProto; @@ -35,6 +36,7 @@ import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationSubmissionContextProto import org.apache.hadoop.yarn.proto.YarnProtos.ContainerLaunchContextProto; import org.apache.hadoop.yarn.proto.YarnProtos.LogAggregationContextProto; import org.apache.hadoop.yarn.proto.YarnProtos.PriorityProto; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationIdProto; import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProto; import com.google.protobuf.TextFormat; @@ -57,6 +59,7 @@ extends ApplicationSubmissionContext { private Resource resource = null; private Set<String> applicationTags = null; private LogAggregationContext logAggregationContext = null; + private ReservationId reservationId = null; public ApplicationSubmissionContextPBImpl() { builder = ApplicationSubmissionContextProto.newBuilder(); @@ -118,6 +121,9 @@ extends ApplicationSubmissionContext { builder.setLogAggregationContext( convertToProtoFormat(this.logAggregationContext)); } + if (this.reservationId != null) { + builder.setReservationId(convertToProtoFormat(this.reservationId)); + } } private void mergeLocalToProto() { @@ -366,6 +372,29 @@ extends ApplicationSubmissionContext { } @Override + public ReservationId getReservationID() { + ApplicationSubmissionContextProtoOrBuilder p = viaProto ? proto : builder; + if (reservationId != null) { + return reservationId; + } + if (!p.hasReservationId()) { + return null; + } + reservationId = convertFromProtoFormat(p.getReservationId()); + return reservationId; + } + + @Override + public void setReservationID(ReservationId reservationID) { + maybeInitBuilder(); + if (reservationID == null) { + builder.clearReservationId(); + return; + } + this.reservationId = reservationID; + } + + @Override public void setKeepContainersAcrossApplicationAttempts(boolean keepContainers) { maybeInitBuilder(); @@ -455,4 +484,12 @@ extends ApplicationSubmissionContext { builder.clearLogAggregationContext(); this.logAggregationContext = logAggregationContext; } + + private ReservationIdPBImpl convertFromProtoFormat(ReservationIdProto p) { + return new ReservationIdPBImpl(p); + } + + private ReservationIdProto convertToProtoFormat(ReservationId t) { + return ((ReservationIdPBImpl) t).getProto(); + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ProtoUtils.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ProtoUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ProtoUtils.java index 4a3c137..f18a77c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ProtoUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ProtoUtils.java @@ -34,6 +34,7 @@ import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeState; import org.apache.hadoop.yarn.api.records.QueueACL; import org.apache.hadoop.yarn.api.records.QueueState; +import org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter; import org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState; import org.apache.hadoop.yarn.api.records.YarnApplicationState; import org.apache.hadoop.yarn.proto.YarnProtos.AMCommandProto; @@ -47,10 +48,12 @@ import org.apache.hadoop.yarn.proto.YarnProtos.NodeIdProto; import org.apache.hadoop.yarn.proto.YarnProtos.NodeStateProto; import org.apache.hadoop.yarn.proto.YarnProtos.QueueACLProto; import org.apache.hadoop.yarn.proto.YarnProtos.QueueStateProto; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationRequestInterpreterProto; import org.apache.hadoop.yarn.proto.YarnProtos.YarnApplicationAttemptStateProto; import org.apache.hadoop.yarn.proto.YarnProtos.YarnApplicationStateProto; import com.google.protobuf.ByteString; + import org.apache.hadoop.yarn.proto.YarnServiceProtos; @Private @@ -237,4 +240,18 @@ public class ProtoUtils { return ApplicationAccessType.valueOf(e.name().replace( APP_ACCESS_TYPE_PREFIX, "")); } + + /* + * Reservation Request interpreter type + */ + public static ReservationRequestInterpreterProto convertToProtoFormat( + ReservationRequestInterpreter e) { + return ReservationRequestInterpreterProto.valueOf(e.name()); + } + + public static ReservationRequestInterpreter convertFromProtoFormat( + ReservationRequestInterpreterProto e) { + return ReservationRequestInterpreter.valueOf(e.name()); + } + } http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationDefinitionPBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationDefinitionPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationDefinitionPBImpl.java new file mode 100644 index 0000000..9f87108 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationDefinitionPBImpl.java @@ -0,0 +1,169 @@ +/** + * 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.api.records.impl.pb; + +import org.apache.hadoop.yarn.api.records.ReservationDefinition; +import org.apache.hadoop.yarn.api.records.ReservationRequests; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationDefinitionProto; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationDefinitionProtoOrBuilder; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationRequestsProto; + +public class ReservationDefinitionPBImpl extends ReservationDefinition { + + ReservationDefinitionProto proto = ReservationDefinitionProto + .getDefaultInstance(); + ReservationDefinitionProto.Builder builder = null; + boolean viaProto = false; + + private ReservationRequests reservationReqs; + + public ReservationDefinitionPBImpl() { + builder = ReservationDefinitionProto.newBuilder(); + } + + public ReservationDefinitionPBImpl(ReservationDefinitionProto proto) { + this.proto = proto; + viaProto = true; + } + + public ReservationDefinitionProto getProto() { + mergeLocalToProto(); + proto = viaProto ? proto : builder.build(); + viaProto = true; + return proto; + } + + private void mergeLocalToBuilder() { + if (this.reservationReqs != null) { + builder + .setReservationRequests(convertToProtoFormat(this.reservationReqs)); + } + } + + private void mergeLocalToProto() { + if (viaProto) + maybeInitBuilder(); + mergeLocalToBuilder(); + proto = builder.build(); + viaProto = true; + } + + private void maybeInitBuilder() { + if (viaProto || builder == null) { + builder = ReservationDefinitionProto.newBuilder(proto); + } + viaProto = false; + } + + @Override + public long getArrival() { + ReservationDefinitionProtoOrBuilder p = viaProto ? proto : builder; + if (!p.hasArrival()) { + return 0; + } + return (p.getArrival()); + } + + @Override + public void setArrival(long earliestStartTime) { + maybeInitBuilder(); + if (earliestStartTime <= 0) { + builder.clearArrival(); + return; + } + builder.setArrival(earliestStartTime); + } + + @Override + public long getDeadline() { + ReservationDefinitionProtoOrBuilder p = viaProto ? proto : builder; + if (!p.hasDeadline()) { + return 0; + } + return (p.getDeadline()); + } + + @Override + public void setDeadline(long latestEndTime) { + maybeInitBuilder(); + if (latestEndTime <= 0) { + builder.clearDeadline(); + return; + } + builder.setDeadline(latestEndTime); + } + + @Override + public ReservationRequests getReservationRequests() { + ReservationDefinitionProtoOrBuilder p = viaProto ? proto : builder; + if (reservationReqs != null) { + return reservationReqs; + } + if (!p.hasReservationRequests()) { + return null; + } + reservationReqs = convertFromProtoFormat(p.getReservationRequests()); + return reservationReqs; + } + + @Override + public void setReservationRequests(ReservationRequests reservationRequests) { + if (reservationRequests == null) { + builder.clearReservationRequests(); + return; + } + this.reservationReqs = reservationRequests; + } + + @Override + public String getReservationName() { + ReservationDefinitionProtoOrBuilder p = viaProto ? proto : builder; + if (!p.hasReservationName()) { + return null; + } + return (p.getReservationName()); + } + + @Override + public void setReservationName(String name) { + maybeInitBuilder(); + if (name == null) { + builder.clearReservationName(); + return; + } + builder.setReservationName(name); + } + + private ReservationRequestsPBImpl convertFromProtoFormat( + ReservationRequestsProto p) { + return new ReservationRequestsPBImpl(p); + } + + private ReservationRequestsProto convertToProtoFormat(ReservationRequests t) { + return ((ReservationRequestsPBImpl) t).getProto(); + } + + @Override + public String toString() { + return "{Arrival: " + getArrival() + ", Deadline: " + getDeadline() + + ", Reservation Name: " + getReservationName() + ", Resources: " + + getReservationRequests() + "}"; + } + +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationIdPBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationIdPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationIdPBImpl.java new file mode 100644 index 0000000..609d4ab --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationIdPBImpl.java @@ -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 + * + * 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.api.records.impl.pb; + +import org.apache.hadoop.classification.InterfaceAudience.Private; +import org.apache.hadoop.classification.InterfaceStability.Unstable; +import org.apache.hadoop.yarn.api.records.ReservationId; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationIdProto; + +import com.google.common.base.Preconditions; + +@Private +@Unstable +public class ReservationIdPBImpl extends ReservationId { + ReservationIdProto proto = null; + ReservationIdProto.Builder builder = null; + + public ReservationIdPBImpl() { + builder = ReservationIdProto.newBuilder(); + } + + public ReservationIdPBImpl(ReservationIdProto proto) { + this.proto = proto; + } + + public ReservationIdProto getProto() { + return proto; + } + + @Override + public long getId() { + Preconditions.checkNotNull(proto); + return proto.getId(); + } + + @Override + protected void setId(long id) { + Preconditions.checkNotNull(builder); + builder.setId(id); + } + + @Override + public long getClusterTimestamp() { + Preconditions.checkNotNull(proto); + return proto.getClusterTimestamp(); + } + + @Override + protected void setClusterTimestamp(long clusterTimestamp) { + Preconditions.checkNotNull(builder); + builder.setClusterTimestamp((clusterTimestamp)); + } + + @Override + protected void build() { + proto = builder.build(); + builder = null; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationRequestPBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationRequestPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationRequestPBImpl.java new file mode 100644 index 0000000..e36b9fb --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationRequestPBImpl.java @@ -0,0 +1,152 @@ +/** + * 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.api.records.impl.pb; + +import org.apache.hadoop.classification.InterfaceAudience.Private; +import org.apache.hadoop.classification.InterfaceStability.Unstable; +import org.apache.hadoop.yarn.api.records.ReservationRequest; +import org.apache.hadoop.yarn.api.records.Resource; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationRequestProto; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationRequestProtoOrBuilder; +import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProto; + +@Private +@Unstable +public class ReservationRequestPBImpl extends ReservationRequest { + ReservationRequestProto proto = ReservationRequestProto.getDefaultInstance(); + ReservationRequestProto.Builder builder = null; + boolean viaProto = false; + + private Resource capability = null; + + public ReservationRequestPBImpl() { + builder = ReservationRequestProto.newBuilder(); + } + + public ReservationRequestPBImpl(ReservationRequestProto proto) { + this.proto = proto; + viaProto = true; + } + + public ReservationRequestProto getProto() { + mergeLocalToProto(); + proto = viaProto ? proto : builder.build(); + viaProto = true; + return proto; + } + + private void mergeLocalToBuilder() { + if (this.capability != null) { + builder.setCapability(convertToProtoFormat(this.capability)); + } + } + + private void mergeLocalToProto() { + if (viaProto) + maybeInitBuilder(); + mergeLocalToBuilder(); + proto = builder.build(); + viaProto = true; + } + + private void maybeInitBuilder() { + if (viaProto || builder == null) { + builder = ReservationRequestProto.newBuilder(proto); + } + viaProto = false; + } + + @Override + public Resource getCapability() { + ReservationRequestProtoOrBuilder p = viaProto ? proto : builder; + if (this.capability != null) { + return this.capability; + } + if (!p.hasCapability()) { + return null; + } + this.capability = convertFromProtoFormat(p.getCapability()); + return this.capability; + } + + @Override + public void setCapability(Resource capability) { + maybeInitBuilder(); + if (capability == null) + builder.clearCapability(); + this.capability = capability; + } + + @Override + public int getNumContainers() { + ReservationRequestProtoOrBuilder p = viaProto ? proto : builder; + return (p.getNumContainers()); + } + + @Override + public void setNumContainers(int numContainers) { + maybeInitBuilder(); + builder.setNumContainers((numContainers)); + } + + @Override + public int getConcurrency() { + ReservationRequestProtoOrBuilder p = viaProto ? proto : builder; + if (!p.hasConcurrency()) { + return 1; + } + return (p.getConcurrency()); + } + + @Override + public void setConcurrency(int numContainers) { + maybeInitBuilder(); + builder.setConcurrency(numContainers); + } + + @Override + public long getDuration() { + ReservationRequestProtoOrBuilder p = viaProto ? proto : builder; + if (!p.hasDuration()) { + return 0; + } + return (p.getDuration()); + } + + @Override + public void setDuration(long duration) { + maybeInitBuilder(); + builder.setDuration(duration); + } + + private ResourcePBImpl convertFromProtoFormat(ResourceProto p) { + return new ResourcePBImpl(p); + } + + private ResourceProto convertToProtoFormat(Resource t) { + return ((ResourcePBImpl) t).getProto(); + } + + @Override + public String toString() { + return "{Capability: " + getCapability() + ", # Containers: " + + getNumContainers() + ", Concurrency: " + getConcurrency() + + ", Lease Duration: " + getDuration() + "}"; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationRequestsPBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationRequestsPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationRequestsPBImpl.java new file mode 100644 index 0000000..4b39836 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationRequestsPBImpl.java @@ -0,0 +1,189 @@ +/** + * 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.api.records.impl.pb; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.hadoop.yarn.api.records.ReservationRequest; +import org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter; +import org.apache.hadoop.yarn.api.records.ReservationRequests; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationRequestInterpreterProto; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationRequestProto; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationRequestsProto; +import org.apache.hadoop.yarn.proto.YarnProtos.ReservationRequestsProtoOrBuilder; + +public class ReservationRequestsPBImpl extends ReservationRequests { + + ReservationRequestsProto proto = ReservationRequestsProto + .getDefaultInstance(); + ReservationRequestsProto.Builder builder = null; + boolean viaProto = false; + + public List<ReservationRequest> reservationRequests; + + public ReservationRequestsPBImpl() { + builder = ReservationRequestsProto.newBuilder(); + } + + public ReservationRequestsPBImpl(ReservationRequestsProto proto) { + this.proto = proto; + viaProto = true; + } + + public ReservationRequestsProto getProto() { + mergeLocalToProto(); + proto = viaProto ? proto : builder.build(); + viaProto = true; + return proto; + } + + private void mergeLocalToBuilder() { + if (this.reservationRequests != null) { + addReservationResourcesToProto(); + } + } + + private void mergeLocalToProto() { + if (viaProto) + maybeInitBuilder(); + mergeLocalToBuilder(); + proto = builder.build(); + viaProto = true; + } + + private void maybeInitBuilder() { + if (viaProto || builder == null) { + builder = ReservationRequestsProto.newBuilder(proto); + } + viaProto = false; + } + + @Override + public List<ReservationRequest> getReservationResources() { + initReservationRequestsList(); + return reservationRequests; + } + + @Override + public void setReservationResources(List<ReservationRequest> resources) { + if (resources == null) { + builder.clearReservationResources(); + return; + } + this.reservationRequests = resources; + } + + @Override + public ReservationRequestInterpreter getInterpreter() { + ReservationRequestsProtoOrBuilder p = viaProto ? proto : builder; + if (!p.hasInterpreter()) { + return null; + } + return (convertFromProtoFormat(p.getInterpreter())); + } + + @Override + public void setInterpreter(ReservationRequestInterpreter interpreter) { + maybeInitBuilder(); + if (interpreter == null) { + builder.clearInterpreter(); + return; + } + builder.setInterpreter(convertToProtoFormat(interpreter)); + } + + private void initReservationRequestsList() { + if (this.reservationRequests != null) { + return; + } + ReservationRequestsProtoOrBuilder p = viaProto ? proto : builder; + List<ReservationRequestProto> resourceProtos = + p.getReservationResourcesList(); + reservationRequests = new ArrayList<ReservationRequest>(); + + for (ReservationRequestProto r : resourceProtos) { + reservationRequests.add(convertFromProtoFormat(r)); + } + } + + private void addReservationResourcesToProto() { + maybeInitBuilder(); + builder.clearReservationResources(); + if (reservationRequests == null) + return; + Iterable<ReservationRequestProto> iterable = + new Iterable<ReservationRequestProto>() { + @Override + public Iterator<ReservationRequestProto> iterator() { + return new Iterator<ReservationRequestProto>() { + + Iterator<ReservationRequest> iter = reservationRequests + .iterator(); + + @Override + public boolean hasNext() { + return iter.hasNext(); + } + + @Override + public ReservationRequestProto next() { + return convertToProtoFormat(iter.next()); + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + + }; + + } + + }; + builder.addAllReservationResources(iterable); + } + + private ReservationRequestProto convertToProtoFormat(ReservationRequest r) { + return ((ReservationRequestPBImpl) r).getProto(); + } + + private ReservationRequestPBImpl convertFromProtoFormat( + ReservationRequestProto r) { + return new ReservationRequestPBImpl(r); + } + + private ReservationRequestInterpreterProto convertToProtoFormat( + ReservationRequestInterpreter r) { + return ProtoUtils.convertToProtoFormat(r); + } + + private ReservationRequestInterpreter convertFromProtoFormat( + ReservationRequestInterpreterProto r) { + return ProtoUtils.convertFromProtoFormat(r); + } + + @Override + public String toString() { + return "{Reservation Resources: " + getReservationResources() + + ", Reservation Type: " + getInterpreter() + "}"; + } + +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/be27e3ad/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/UTCClock.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/UTCClock.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/UTCClock.java new file mode 100644 index 0000000..ecef3dd --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/UTCClock.java @@ -0,0 +1,39 @@ +/** + * 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.util; + +import java.util.Calendar; +import java.util.TimeZone; + +import org.apache.hadoop.classification.InterfaceAudience.Public; +import org.apache.hadoop.classification.InterfaceStability.Evolving; + +/** + * Implementation of {@link Clock} that gives the current UTC time in + * milliseconds. + */ +@Public +@Evolving +public class UTCClock implements Clock { + + private final TimeZone utcZone = TimeZone.getTimeZone("UTC"); + + public long getTime() { + return Calendar.getInstance(utcZone).getTimeInMillis(); + } +} \ No newline at end of file