content: /*
   * 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.events;
  
  import org.apache.ambari.server.agent.CommandReport;
  
  /**
   * The {@link ActionFinalReportReceivedEvent} is fired when a
   * command report action is received. Event is fired only if command state
   * is COMPLETED/FAILED/ABORTED.
   */
  public final class ActionFinalReportReceivedEvent extends AmbariEvent {
  
    private Long clusterId;
    private String hostname;
    private CommandReport commandReport;
    private String role;
    private Boolean emulated;
  
    /**
     * Constructor.
     *
     * @param clusterId (beware, may be null if action is not bound to cluster)
     * @param hostname host that is an origin for a command report
     * @param report full command report (may be null if action has been cancelled)
     * @param emulated true, if event was generated without actually receiving
     * data from agent (e.g. if we did not perform action, or action timed out,
     * but we want to trigger event listener anyway). More loose checks against
     * data will be performed in this case.
     */
    public ActionFinalReportReceivedEvent(Long clusterId, String hostname,
                                          CommandReport report,
                                          Boolean emulated) {
      super(AmbariEventType.ACTION_EXECUTION_FINISHED);
      this.clusterId = clusterId;
      this.hostname = hostname;
      this.commandReport = report;
      if (report.getRole() != null) {
        this.role = report.getRole();
      } else {
        this.role = null;
      }
      this.emulated = emulated;
    }
  
    public Long getClusterId() {
      return clusterId;
    }
  
    public String getHostname() {
      return hostname;
    }
  
    public CommandReport getCommandReport() {
      return commandReport;
    }
  
    public String getRole() {
      return role;
    }
  
    public Boolean isEmulated() {
      return emulated;
    }
  
    @Override
    public String toString() {
      return "ActionFinalReportReceivedEvent{" +
              "clusterId=" + clusterId +
              ", hostname='" + hostname + '\'' +
              ", commandReportStatus=" + commandReport.getStatus() +
              ", commandReportRole=" + role +
              '}';
    }
  }
  