blob: dd2136349a0d662a26f1948d7c8bbc62a2520a3e [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
*
* 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.serveraction;
import java.util.concurrent.ConcurrentMap;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.agent.CommandReport;
import org.apache.ambari.server.agent.ExecutionCommand;
/**
* ServerAction is an interface to be implemented by all server-based actions/tasks.
*/
public interface ServerAction {
String ACTION_NAME = "ACTION_NAME";
String ACTION_USER_NAME = "ACTION_USER_NAME";
/**
* The default timeout (in seconds) to use for potentially long running tasks such as creating
* Kerberos principals and generating Kerberos keytab files
*/
int DEFAULT_LONG_RUNNING_TASK_TIMEOUT_SECONDS = 36000;
/**
* Gets the ExecutionCommand property of this ServerAction.
*
* @return the ExecutionCommand property of this ServerAction
*/
ExecutionCommand getExecutionCommand();
/**
* Sets the ExecutionCommand property of this ServerAction.
* <p/>
* This property is expected to be set by the creator of this ServerAction before calling execute.
*
* @param command the ExecutionCommand data to set
*/
void setExecutionCommand(ExecutionCommand command);
/**
* Gets the HostRoleCommand property of this ServerAction.
*
* @return the HostRoleCommand property of this ServerAction
*/
HostRoleCommand getHostRoleCommand();
/**
* Sets the HostRoleCommand property of this ServerAction.
* <p/>
* This property is expected to be set by the creator of this ServerAction before calling execute.
*
* @param hostRoleCommand the HostRoleCommand data to set
*/
void setHostRoleCommand(HostRoleCommand hostRoleCommand);
/**
* Executes this ServerAction
* <p/>
* This is typically called by the ServerActionExecutor in it's own thread, but there is no
* guarantee that this is the case. It is expected that the ExecutionCommand and HostRoleCommand
* properties are set before calling this method.
*
* @param requestSharedDataContext a Map to be used a shared data among all ServerActions related
* to a given request
* @return a CommandReport declaring the status of the task
* @throws AmbariException
* @throws InterruptedException
*/
CommandReport execute(ConcurrentMap<String, Object> requestSharedDataContext)
throws AmbariException, InterruptedException;
}