blob: 4b3ce840dceb90c3eb3e410335368f629f63a2a8 [file] [log] [blame]
/**
* 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.ozone.protocol.commands;
import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos;
import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos.CommandStatus.Status;
import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos.SCMCommandProto;
import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos.SCMCommandProto.Type;
/**
* A class that is used to communicate status of datanode commands.
*/
public class CommandStatus {
private SCMCommandProto.Type type;
private Long cmdId;
private Status status;
private String msg;
CommandStatus(Type type, Long cmdId, Status status, String msg) {
this.type = type;
this.cmdId = cmdId;
this.status = status;
this.msg = msg;
}
public Type getType() {
return type;
}
public Long getCmdId() {
return cmdId;
}
public Status getStatus() {
return status;
}
public String getMsg() {
return msg;
}
/**
* To allow change of status once commandStatus is initialized.
*
* @param status
*/
public void setStatus(Status status) {
this.status = status;
}
public void setStatus(boolean cmdExecuted) {
setStatus(cmdExecuted ? Status.EXECUTED : Status.FAILED);
}
/**
* Returns a CommandStatus from the protocol buffers.
*
* @param cmdStatusProto - protoBuf Message
* @return CommandStatus
*/
public CommandStatus getFromProtoBuf(
StorageContainerDatanodeProtocolProtos.CommandStatus cmdStatusProto) {
return CommandStatusBuilder.newBuilder()
.setCmdId(cmdStatusProto.getCmdId())
.setStatus(cmdStatusProto.getStatus())
.setType(cmdStatusProto.getType())
.setMsg(cmdStatusProto.getMsg())
.build();
}
/**
* Returns a CommandStatus from the protocol buffers.
*
* @return StorageContainerDatanodeProtocolProtos.CommandStatus
*/
public StorageContainerDatanodeProtocolProtos.CommandStatus
getProtoBufMessage() {
StorageContainerDatanodeProtocolProtos.CommandStatus.Builder builder =
StorageContainerDatanodeProtocolProtos.CommandStatus.newBuilder()
.setCmdId(this.getCmdId())
.setStatus(this.getStatus())
.setType(this.getType());
if (this.getMsg() != null) {
builder.setMsg(this.getMsg());
}
return builder.build();
}
/**
* Builder class for CommandStatus.
*/
public static class CommandStatusBuilder {
private SCMCommandProto.Type type;
private Long cmdId;
private StorageContainerDatanodeProtocolProtos.CommandStatus.Status status;
private String msg;
CommandStatusBuilder() {
}
public static CommandStatusBuilder newBuilder() {
return new CommandStatusBuilder();
}
public Type getType() {
return type;
}
public Long getCmdId() {
return cmdId;
}
public Status getStatus() {
return status;
}
public String getMsg() {
return msg;
}
public CommandStatusBuilder setType(Type commandType) {
this.type = commandType;
return this;
}
public CommandStatusBuilder setCmdId(Long commandId) {
this.cmdId = commandId;
return this;
}
public CommandStatusBuilder setStatus(Status commandStatus) {
this.status = commandStatus;
return this;
}
public CommandStatusBuilder setMsg(String message) {
this.msg = message;
return this;
}
public CommandStatus build() {
return new CommandStatus(type, cmdId, status, msg);
}
}
}