package io.cattle.platform.docker.process.instance;
import io.cattle.platform.core.constants.InstanceConstants;
import io.cattle.platform.core.model.Image;
import io.cattle.platform.core.model.Instance;
import io.cattle.platform.docker.api.model.DockerBuild;
import io.cattle.platform.docker.constants.DockerInstanceConstants;
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.json.JsonMapper;
import io.cattle.platform.object.util.DataAccessor;
import io.cattle.platform.process.common.handler.AbstractObjectProcessLogic;
import javax.inject.Inject;
import org.apache.commons.lang3.StringUtils;
public class DockerInstancePostCreate extends AbstractObjectProcessLogic implements ProcessPostListener {
@Inject
JsonMapper jsonMapper;
@Override
public String[] getProcessNames() {
return new String[]{"instance.create"};
}
@Override
public HandlerResult handle(ProcessState state, ProcessInstance process) {
Instance instance = (Instance)state.getResource();
if (!InstanceConstants.CONTAINER_LIKE.contains(instance.getKind())) {
return null;
}
Image image = objectManager.loadResource(Image.class, instance.getImageId());
if (image == null) {
return null;
}
DockerBuild build = DataAccessor.field(instance, DockerInstanceConstants.FIELD_BUILD,
jsonMapper, DockerBuild.class);
if (build == null) {
return null;
}
String imageUuid = DataAccessor.fieldString(instance, InstanceConstants.FIELD_IMAGE_UUID);
if (imageUuid != null) {
String tag = StringUtils.removeStart(imageUuid, "docker:");
build.setTag(tag);
}
objectManager.setFields(image, DockerInstanceConstants.FIELD_BUILD, build);
return null;
}
}