package io.cattle.platform.servicediscovery.process;
import io.cattle.platform.core.constants.IpAddressConstants;
import io.cattle.platform.core.dao.HostDao;
import io.cattle.platform.core.dao.InstanceDao;
import io.cattle.platform.core.model.Host;
import io.cattle.platform.core.model.IpAddress;
import io.cattle.platform.engine.handler.HandlerResult;
import io.cattle.platform.engine.handler.ProcessPostListener;
import io.cattle.platform.engine.process.ProcessInstance;
import io.cattle.platform.engine.process.ProcessState;
import io.cattle.platform.process.common.handler.AbstractObjectProcessLogic;
import io.cattle.platform.servicediscovery.service.ServiceDiscoveryService;
import io.cattle.platform.util.type.Priority;
import javax.inject.Inject;
import javax.inject.Named;
@Named
public class HostIpUpdatePostListener extends AbstractObjectProcessLogic implements ProcessPostListener, Priority {
@Inject
InstanceDao instanceDao;
@Inject
ServiceDiscoveryService sdService;
@Inject
HostDao hostDao;
@Override
public String[] getProcessNames() {
return new String[] { IpAddressConstants.PROCESS_IP_UPDATE };
}
@Override
public HandlerResult handle(ProcessState state, ProcessInstance process) {
IpAddress ip = (IpAddress) state.getResource();
Host host = hostDao.getHostForIpAddress(ip.getId());
if (host == null) {
return null;
}
sdService.reconcileHostEndpoints(host);
return null;
}
@Override
public int getPriority() {
return Priority.DEFAULT;
}
}