blob: 00a5ce21185f9e1559a73ebefc4607e874e5b716 [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.state;
import java.util.HashMap;
import java.util.Map;
import org.apache.ambari.server.state.fsm.event.AbstractEvent;
import org.apache.ambari.server.state.svccomphost.*;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonProperty;
/**
* Base class for all events that affect the ServiceComponentHost FSM
*/
public abstract class ServiceComponentHostEvent
extends AbstractEvent<ServiceComponentHostEventType> {
/**
* ServiceComponent that this event relates to
*/
private final String serviceComponentName;
/**
* Hostname of the Host that this event relates to
*/
private final String hostName;
/**
* Time when the event was triggered
*/
private final long opTimestamp;
// FIXME hack alert!!!
// This belongs to start event only
private final Map<String, String> configs;
// FIXME hack alert
// this belongs to install event only
private final String stackId;
public ServiceComponentHostEvent(ServiceComponentHostEventType type,
String serviceComponentName, String hostName, long opTimestamp,
Map<String, String> configs) {
this(type, serviceComponentName, hostName, opTimestamp,
configs, "");
}
public ServiceComponentHostEvent(ServiceComponentHostEventType type,
String serviceComponentName, String hostName, long opTimestamp) {
this(type, serviceComponentName, hostName, opTimestamp,
new HashMap<String, String>(), "");
}
public ServiceComponentHostEvent(ServiceComponentHostEventType type,
String serviceComponentName, String hostName, long opTimestamp,
String stackId) {
this(type, serviceComponentName, hostName, opTimestamp,
new HashMap<String, String>(), stackId);
}
public ServiceComponentHostEvent(ServiceComponentHostEventType type,
String serviceComponentName, String hostName, long opTimestamp,
Map<String, String> configs, String stackId) {
super(type);
this.serviceComponentName = serviceComponentName;
this.hostName = hostName;
this.opTimestamp = opTimestamp;
this.configs = configs;
this.stackId = stackId;
}
/**
* @return the serviceComponentName
*/
public String getServiceComponentName() {
return serviceComponentName;
}
/**
* @return the hostName
*/
public String getHostName() {
return hostName;
}
/**
* @return the opTimestamp
*/
public long getOpTimestamp() {
return opTimestamp;
}
@JsonCreator
public static ServiceComponentHostEvent create(@JsonProperty("type") ServiceComponentHostEventType type,
@JsonProperty("serviceComponentName") String serviceComponentName,
@JsonProperty("hostName") String hostName,
@JsonProperty("opTimestamp") long opTimestamp,
@JsonProperty("configs") Map<String, String> configs,
@JsonProperty("stackId") String stackId) {
switch (type) {
case HOST_SVCCOMP_INSTALL:
return new ServiceComponentHostInstallEvent(serviceComponentName, hostName, opTimestamp, stackId);
case HOST_SVCCOMP_OP_FAILED:
return new ServiceComponentHostOpFailedEvent(serviceComponentName, hostName, opTimestamp);
case HOST_SVCCOMP_OP_IN_PROGRESS:
return new ServiceComponentHostOpInProgressEvent(serviceComponentName, hostName, opTimestamp);
case HOST_SVCCOMP_OP_RESTART:
return new ServiceComponentHostOpRestartedEvent(serviceComponentName, hostName, opTimestamp);
case HOST_SVCCOMP_OP_SUCCEEDED:
return new ServiceComponentHostOpSucceededEvent(serviceComponentName, hostName, opTimestamp);
case HOST_SVCCOMP_START:
return new ServiceComponentHostStartEvent(serviceComponentName, hostName, opTimestamp, configs);
case HOST_SVCCOMP_STOP:
return new ServiceComponentHostStopEvent(serviceComponentName, hostName, opTimestamp);
case HOST_SVCCOMP_UNINSTALL:
return new ServiceComponentHostUninstallEvent(serviceComponentName, hostName, opTimestamp);
case HOST_SVCCOMP_WIPEOUT:
return new ServiceComponentHostWipeoutEvent(serviceComponentName, hostName, opTimestamp);
}
return null;
}
/**
* @return the configs
*/
public Map<String, String> getConfigs() {
return configs;
}
/**
* @return the stackId
*/
public String getStackId() {
return stackId;
}
}