/*
* 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.ambari.server.controller;
import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.utils.StageUtils;
import org.apache.commons.lang.StringUtils;
public class ShortTaskStatus {
protected long requestId;
protected long taskId;
protected long stageId;
protected String hostName;
protected String role;
protected String command;
protected String status;
protected String customCommandName;
protected String outputLog;
protected String errorLog;
public ShortTaskStatus() {
}
public ShortTaskStatus(int taskId, long stageId, String hostName, String role, String command, String status,
String customCommandName, String outputLog, String errorLog) {
this.taskId = taskId;
this.stageId = stageId;
this.hostName = translateHostName(hostName);
this.role = role;
this.command = command;
this.status = status;
this.customCommandName = customCommandName;
this.outputLog = outputLog;
this.errorLog = errorLog;
}
public ShortTaskStatus(HostRoleCommand hostRoleCommand) {
this.taskId = hostRoleCommand.getTaskId();
this.stageId = hostRoleCommand.getStageId();
this.command = hostRoleCommand.getRoleCommand().toString();
this.hostName = translateHostName(hostRoleCommand.getHostName());
this.role = hostRoleCommand.getRole().toString();
this.status = hostRoleCommand.getStatus().toString();
this.customCommandName = hostRoleCommand.getCustomCommandName();
this.outputLog = hostRoleCommand.getOutputLog();
this.errorLog = hostRoleCommand.getErrorLog();
}
public void setRequestId(long requestId) {
this.requestId = requestId;
}
public long getRequestId() {
return requestId;
}
public String getCustomCommandName() {
return customCommandName;
}
public void setCustomCommandName(String customCommandName) {
this.customCommandName = customCommandName;
}
public long getTaskId() {
return taskId;
}
public void setTaskId(long taskId) {
this.taskId = taskId;
}
public long getStageId() {
return stageId;
}
public void setStageId(long stageId) {
this.stageId = stageId;
}
public String getHostName() {
return hostName;
}
public void setHostName(String hostName) {
this.hostName = translateHostName(hostName);
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getCommand() {
return command;
}
public void setCommand(String command) {
this.command = command;
}
public String getOutputLog() {
return outputLog;
}
public void setOutputLog(String outputLog) {
this.outputLog = outputLog;
}
public String getErrorLog() {
return errorLog;
}
public void setErrorLog(String errorLog) {
this.errorLog = errorLog;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("ShortTaskStatusDump ")
.append(", stageId=").append(stageId)
.append(", taskId=").append(taskId)
.append(", hostname=").append(hostName)
.append(", role=").append(role)
.append(", command=").append(command)
.append(", status=").append(status)
.append(", outputLog=").append(outputLog)
.append(", errorLog=").append(errorLog);
return sb.toString();
}
/**
* If the hostname is null (or empty), returns the hostname of the Ambari Server; else returns the
* supplied hostname value.
*
* @param hostName a hostname
* @return the hostname of the Ambari Server if the hostname is null (or empty); else supplied hostname value
*/
private String translateHostName(String hostName) {
// if the hostname in the command is null, replace it with the hostname of the Ambari Server
// This is because commands (to be) handled by the Ambari Server have a null value for its
// host designation.
return (StringUtils.isEmpty(hostName))
? StageUtils.getHostName()
: hostName;
}
}