package io.cattle.platform.process.mount;
import io.cattle.platform.core.constants.VolumeConstants;
import io.cattle.platform.core.dao.GenericMapDao;
import io.cattle.platform.core.model.Host;
import io.cattle.platform.core.model.Instance;
import io.cattle.platform.core.model.InstanceHostMap;
import io.cattle.platform.core.model.Mount;
import io.cattle.platform.core.model.Volume;
import io.cattle.platform.core.model.VolumeStoragePoolMap;
import io.cattle.platform.engine.process.ProcessInstance;
import io.cattle.platform.engine.process.ProcessState;
import io.cattle.platform.object.util.DataAccessor;
import io.cattle.platform.process.instance.IgnoreReconnectionAgentHandler;
import java.util.List;
import javax.inject.Inject;
public class MountRemove extends IgnoreReconnectionAgentHandler {
@Inject
GenericMapDao mapDao;
@Override
protected Object getAgentResource(ProcessState state, ProcessInstance process, Object dataResource) {
Instance instance = (Instance)getObjectByRelationship("instance", state.getResource());
List<? extends InstanceHostMap> maps = objectManager.children(instance, InstanceHostMap.class);
Host host = maps.size() > 0 ? objectManager.loadResource(Host.class, maps.get(0).getHostId()) : null;
return host;
}
@Override
protected Object getDataResource(ProcessState state, ProcessInstance process) {
Mount m = (Mount)state.getResource();
Volume v = objectManager.loadResource(Volume.class, m.getVolumeId());
if (DataAccessor.fieldBool(v, VolumeConstants.FIELD_DOCKER_IS_NATIVE)) {
return null;
}
List<? extends VolumeStoragePoolMap> maps = objectManager.children(v, VolumeStoragePoolMap.class);
return maps.size() > 0 ? maps.get(0) : null;
}
@Override
protected Object getEventResource(ProcessState state, ProcessInstance process) {
Mount m = (Mount)state.getResource();
Volume v = objectManager.loadResource(Volume.class, m.getVolumeId());
if (DataAccessor.fieldBool(v, VolumeConstants.FIELD_DOCKER_IS_NATIVE)) {
return null;
}
List<? extends VolumeStoragePoolMap> maps = objectManager.children(v, VolumeStoragePoolMap.class);
return maps.size() > 0 ? maps.get(0) : null;
}
}