package com.nirima.jenkins.plugins.docker; import com.nirima.jenkins.plugins.docker.launcher.DockerComputerLauncher; import com.nirima.jenkins.plugins.docker.launcher.DockerComputerSSHLauncher; import hudson.plugins.sshslaves.SSHConnector; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import shaded.com.google.common.base.Joiner; /** * Deprecated variables * * @author Kanstantsin Shautsou */ @SuppressWarnings({"deprecation", "UnusedDeclaration"}) public abstract class DockerTemplateBackwardCompatibility { private static final Logger LOGGER = LoggerFactory.getLogger(DockerTemplateBackwardCompatibility.class); // // Retention Strategy // /** * Minutes before terminating an idle slave * * @deprecated migrated to retention strategy? */ @Deprecated private transient String idleTerminationMinutes; // // SSH Launcher settings // /** * The id of the credentials to use. */ @Deprecated private transient String credentialsId; /** * Minutes before SSHLauncher times out on launch */ @Deprecated private transient String sshLaunchTimeoutMinutes; /** * Field jvmOptions. */ @Deprecated private transient String jvmOptions; /** * Field javaPath. */ @Deprecated private transient String javaPath; /** * Field prefixStartSlaveCmd. */ @Deprecated private transient String prefixStartSlaveCmd; /** * Field suffixStartSlaveCmd. */ @Deprecated private transient String suffixStartSlaveCmd; // // DockerTemplateBase values // @Deprecated private transient String image; /** * Field dockerCommand */ @Deprecated private transient String dockerCommand; /** * Field lxcConfString */ @Deprecated private transient String lxcConfString; @Deprecated private transient String hostname; @Deprecated private transient String[] dnsHosts; @Deprecated private transient String network; /** * Every String is volume specification */ @Deprecated private transient String[] volumes; /** * @deprecated use {@link #volumesFrom2} */ @Deprecated private transient String volumesFrom; /** * Every String is volumeFrom specification */ @Deprecated private transient String[] volumesFrom2; @Deprecated private transient String[] environment; @Deprecated private transient String bindPorts; @Deprecated private transient boolean bindAllPorts; @Deprecated private transient Integer memoryLimit; @Deprecated private transient Integer memorySwap; @Deprecated private transient Integer cpuShares; @Deprecated private transient boolean privileged; @Deprecated private transient boolean tty; @Deprecated private transient String macAddress; @Deprecated private String getDnsString() { return Joiner.on(" ").join(dnsHosts); } @Deprecated private String getNetwork() { return network; } @Deprecated private String getVolumesString() { return Joiner.on("\n").join(volumes); } @Deprecated private String getEnvironmentsString() { return environment == null ? "" : Joiner.on("\n").join(environment); } @Deprecated private String[] getVolumesFrom2() { return DockerTemplateBase.filterStringArray(volumesFrom2); } @Deprecated private String getVolumesFromString() { return Joiner.on("\n").join(getVolumesFrom2()); } @Deprecated private int getSSHLaunchTimeoutMinutes() { if (sshLaunchTimeoutMinutes == null || sshLaunchTimeoutMinutes.trim().isEmpty()) { return 1; } else { try { return Integer.parseInt(sshLaunchTimeoutMinutes); } catch (NumberFormatException nfe) { LOGGER.info("Malformed SSH Launch Timeout value: '{}'. Fallback to 1 min.", sshLaunchTimeoutMinutes); return 1; } } } /** * @deprecated migrated to retention strategy */ @Deprecated private int getIdleTerminationMinutes() { if (idleTerminationMinutes == null || idleTerminationMinutes.trim().isEmpty()) { return 10; } else { try { return Integer.parseInt(idleTerminationMinutes); } catch (NumberFormatException nfe) { LOGGER.info("Malformed idleTermination value: '{}'. Fallback to 30.", idleTerminationMinutes); return 10; } } } public abstract void setLauncher(DockerComputerLauncher launcher); public abstract void setDockerTemplateBase(DockerTemplateBase dockerTemplateBase); protected void convert1() { // migrate launcher final SSHConnector sshConnector = new SSHConnector(22, credentialsId, jvmOptions, javaPath, prefixStartSlaveCmd, suffixStartSlaveCmd, getSSHLaunchTimeoutMinutes() * 60); setLauncher(new DockerComputerSSHLauncher(sshConnector)); // migrate dockerTemplate setDockerTemplateBase(new DockerTemplateBase(image, getDnsString(), getNetwork(), dockerCommand, getVolumesString(), volumesFrom != null ? volumesFrom : getVolumesFromString(), getEnvironmentsString(), lxcConfString, hostname, memoryLimit, memorySwap, cpuShares, bindPorts, bindAllPorts, privileged, tty, macAddress) ); } }