
org.zeroturnaround.jenkins.UpdateStrategiesImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of liverebel-deploy Show documentation
Show all versions of liverebel-deploy Show documentation
LiveRebel Plugin helps to run updates to your JEE containers faster. LiveRebel is a tool for hot updates without downtime,
lost sessions and OutOfMemoryErrors. You have to have a running LiveRebel Command Center to use this plugin.
The newest version!
package org.zeroturnaround.jenkins;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.kohsuke.stapler.DataBoundConstructor;
import org.zeroturnaround.jenkins.updateModes.FailBuild;
import org.zeroturnaround.jenkins.updateModes.FullRestart;
import org.zeroturnaround.jenkins.updateModes.Hotpatch;
import org.zeroturnaround.jenkins.updateModes.LiveRebelDefault;
import org.zeroturnaround.jenkins.updateModes.RollingRestarts;
import org.zeroturnaround.liverebel.plugins.PluginUtil;
import org.zeroturnaround.liverebel.plugins.UpdateMode;
import org.zeroturnaround.liverebel.plugins.UpdateStrategies;
import hudson.DescriptorExtensionList;
import hudson.Extension;
import hudson.model.Describable;
import hudson.model.Descriptor;
import hudson.model.Hudson;
public class UpdateStrategiesImpl implements Describable, UpdateStrategies {
public final UpdateMode primary;
public UpdateMode fallback;
public boolean updateWithWarnings;
public int sessionDrainTimeout;
public int requestPauseTimeout;
public int connectionPauseTimeout;
public final org.zeroturnaround.jenkins.updateModes.UpdateMode updateMode;
@DataBoundConstructor
public UpdateStrategiesImpl(org.zeroturnaround.jenkins.updateModes.UpdateMode updateMode) {
this.updateMode = updateMode;
if (updateMode instanceof RollingRestarts) {
primary = UpdateMode.ROLLING_RESTARTS;
sessionDrainTimeout = ((RollingRestarts) updateMode).sessionDrain;
} else if (updateMode instanceof Hotpatch) {
primary = UpdateMode.HOTPATCH;
setHotpatchConf((Hotpatch) updateMode);
} else if (updateMode instanceof FullRestart) {
primary = UpdateMode.OFFLINE;
connectionPauseTimeout = ((FullRestart) updateMode).connectionPause;
} else {
primary = UpdateMode.LIVEREBEL_DEFAULT;
}
checkAndSetDefaultTimeouts();
}
private void checkAndSetDefaultTimeouts() {
if (requestPauseTimeout == 0) requestPauseTimeout = PluginUtil.DEFAULT_REQUEST_PAUSE;
if (connectionPauseTimeout == 0) connectionPauseTimeout = PluginUtil.DEFAULT_REQUEST_PAUSE;
if (sessionDrainTimeout == 0) sessionDrainTimeout = PluginUtil.DEFAULT_SESSION_DRAIN;
}
private void setHotpatchConf(Hotpatch updateMode) {
fallback = getFallback(updateMode.fallback);
if (fallback == UpdateMode.ROLLING_RESTARTS) {
sessionDrainTimeout = ((RollingRestarts) updateMode.fallback).sessionDrain;
} else if (fallback == UpdateMode.OFFLINE) {
connectionPauseTimeout = ((FullRestart) updateMode.fallback).connectionPause;
}
updateWithWarnings = updateMode.updateWithWarnings;
requestPauseTimeout = updateMode.requestPause;
}
private UpdateMode getFallback(org.zeroturnaround.jenkins.updateModes.UpdateMode updateMode) {
if (updateMode instanceof RollingRestarts)
return UpdateMode.ROLLING_RESTARTS;
else if (updateMode instanceof FullRestart)
return UpdateMode.OFFLINE;
else if (updateMode instanceof FailBuild)
return UpdateMode.FAIL_BUILD;
else if (updateMode instanceof LiveRebelDefault)
return UpdateMode.LIVEREBEL_DEFAULT;
return UpdateMode.LIVEREBEL_DEFAULT;
}
public UpdateMode getPrimaryUpdateStrategy() {
return primary;
}
public UpdateMode getFallbackUpdateStrategy() {
return fallback;
}
public boolean updateWithWarnings() {
return updateWithWarnings;
}
public int getSessionDrainTimeout() {
return sessionDrainTimeout;
}
public int getRequestPauseTimeout() {
return requestPauseTimeout;
}
public int getConnectionPauseTimeout() {
return connectionPauseTimeout;
}
public DescriptorImpl getDescriptor() {
return (DescriptorImpl) Hudson.getInstance().getDescriptor(getClass());
}
@Extension
public static class DescriptorImpl extends Descriptor {
@Override
public String getDisplayName() {
return "Update Strategies info";
}
public Descriptor getDefaultPrimaryUpdate() {
DescriptorExtensionList> allDescriptors = Hudson.getInstance().getDescriptorList(org.zeroturnaround.jenkins.updateModes.UpdateMode.class);
Iterator> it = allDescriptors.iterator();
while (it.hasNext()) {
Descriptor next = it.next();
if (next.clazz == LiveRebelDefault.class) {
return next;
}
}
return null;
}
public List> getPrimaryUpdateModes() {
DescriptorExtensionList> allDescriptors = Hudson.getInstance().getDescriptorList(org.zeroturnaround.jenkins.updateModes.UpdateMode.class);
List> primaryUpdateModes = new ArrayList>();
Iterator> it = allDescriptors.iterator();
while (it.hasNext()) {
Descriptor next = it.next();
if (next.clazz != FailBuild.class) {
primaryUpdateModes.add(next);
}
}
return primaryUpdateModes;
}
}
@Override
public String toString() {
return "UpdateStrategiesImpl{" +
"primary=" + primary +
", fallback=" + fallback +
", updateWithWarnings=" + updateWithWarnings +
", sessionDrainTimeout=" + sessionDrainTimeout +
", requestPauseTimeout=" + requestPauseTimeout +
", connectionPauseTimeout=" + connectionPauseTimeout +
", updateMode=" + updateMode +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy