package io.cattle.platform.configitem.model; import io.cattle.platform.core.model.Account; import io.cattle.platform.core.model.Agent; import io.cattle.platform.core.model.ConfigItemStatus; import io.cattle.platform.core.model.Host; import io.cattle.platform.core.model.Service; import io.cattle.platform.core.model.Stack; import io.cattle.platform.iaas.event.IaasEvents; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Client { private static final Logger log = LoggerFactory.getLogger(Client.class); Class<?> resourceType; long resourceId; String eventName; public Client() { } public Client(ConfigItemStatus status) { if (status.getAgentId() != null) { resourceType = Agent.class; resourceId = status.getAgentId(); } else if (status.getAccountId() != null) { resourceType = Account.class; resourceId = status.getAccountId(); } else if (status.getServiceId() != null) { resourceType = Service.class; resourceId = status.getServiceId(); } else if (status.getStackId() != null) { resourceType = Stack.class; resourceId = status.getStackId(); } else if (status.getHostId() != null) { resourceType = Host.class; resourceId = status.getHostId(); } assignEvent(status.getName()); } public Client(Class<?> resourceType, long resourceId) { super(); this.resourceType = resourceType; this.resourceId = resourceId; assignEvent(null); } protected void assignEvent(String configItemStatusName) { if (resourceType == Agent.class) { eventName = IaasEvents.CONFIG_UPDATE; } else if (resourceType == Account.class) { eventName = IaasEvents.GLOBAL_SERVICE_UPDATE; } else if (resourceType == Service.class) { eventName = IaasEvents.SERVICE_UPDATE; } else if (resourceType == Stack.class) { eventName = IaasEvents.STACK_UPDATE; } else if (resourceType == Host.class) { eventName = IaasEvents.HOST_ENDPOINTS_UPDATE; } else { log.error("Failed to assign event name for client"); } } public Class<?> getResourceType() { return resourceType; } public void setResourceType(Class<?> resourceType) { this.resourceType = resourceType; } public long getResourceId() { return resourceId; } public void setResourceId(long resourceId) { this.resourceId = resourceId; } public String getEventName() { return eventName; } public void setEventName(String eventName) { this.eventName = eventName; } @Override public String toString() { return (resourceType.getSimpleName() + ":" + resourceId).toLowerCase(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Client that = (Client) o; if (resourceId != that.resourceId) return false; return !(resourceType != null ? !resourceType.equals(that.resourceType) : that.resourceType != null); } @Override public int hashCode() { int result = resourceType != null ? resourceType.hashCode() : 0; result = 31 * result + (int) (resourceId ^ (resourceId >>> 32)); return result; } }