blob: ded0464ef4babefc9db0ec587e073a48a394ba16 [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 com.google.common.base.Preconditions;
import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos.SCMCommandProto;
import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos.CloseContainerCommandProto;
import org.apache.hadoop.hdds.scm.pipeline.PipelineID;
/**
* Asks datanode to close a container.
*/
public class CloseContainerCommand
extends SCMCommand<CloseContainerCommandProto> {
private final PipelineID pipelineID;
private boolean force;
public CloseContainerCommand(final long containerID,
final PipelineID pipelineID) {
this(containerID, pipelineID, false);
}
public CloseContainerCommand(final long containerID,
final PipelineID pipelineID, boolean force) {
super(containerID);
this.pipelineID = pipelineID;
this.force = force;
}
/**
* Returns the type of this command.
*
* @return Type
*/
@Override
public SCMCommandProto.Type getType() {
return SCMCommandProto.Type.closeContainerCommand;
}
@Override
public CloseContainerCommandProto getProto() {
return CloseContainerCommandProto.newBuilder()
.setContainerID(getId())
.setCmdId(getId())
.setPipelineID(pipelineID.getProtobuf())
.setForce(force)
.build();
}
public static CloseContainerCommand getFromProtobuf(
CloseContainerCommandProto closeContainerProto) {
Preconditions.checkNotNull(closeContainerProto);
return new CloseContainerCommand(closeContainerProto.getCmdId(),
PipelineID.getFromProtobuf(closeContainerProto.getPipelineID()),
closeContainerProto.getForce());
}
public long getContainerID() {
return getId();
}
public PipelineID getPipelineID() {
return pipelineID;
}
}