/src/main/java/org/csanchez/jenkins/plugins/kubernetes/PodTemplate.java

https://gitlab.com/vectorci/kubernetes-plugin · Java · 247 lines · 182 code · 62 blank · 3 comment · 6 complexity · cabc3e31b64002e64d6fd9fdd633895b MD5 · raw file

  1. package org.csanchez.jenkins.plugins.kubernetes;
  2. import hudson.Extension;
  3. import hudson.Util;
  4. import hudson.model.AbstractDescribableImpl;
  5. import hudson.model.Descriptor;
  6. import hudson.model.Label;
  7. import hudson.model.labels.LabelAtom;
  8. import org.apache.commons.lang.StringUtils;
  9. import org.kohsuke.stapler.DataBoundConstructor;
  10. import org.kohsuke.stapler.DataBoundSetter;
  11. import com.google.common.base.Preconditions;
  12. import org.csanchez.jenkins.plugins.kubernetes.PodVolumes.PodVolume;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import java.util.Set;
  16. /**
  17. * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
  18. */
  19. public class PodTemplate extends AbstractDescribableImpl<PodTemplate> {
  20. private String name;
  21. private final String image;
  22. private boolean privileged;
  23. private boolean alwaysPullImage;
  24. private String command;
  25. private String args;
  26. private String remoteFs;
  27. private int instanceCap;
  28. private String label;
  29. private String serviceAccount;
  30. private String nodeSelector;
  31. private String resourceRequestCpu;
  32. private String resourceRequestMemory;
  33. private String resourceLimitCpu;
  34. private String resourceLimitMemory;
  35. private final List<PodVolume> volumes;
  36. private final List<PodEnvVar> envVars = new ArrayList<PodEnvVar>();
  37. @DataBoundConstructor
  38. public PodTemplate(String image, List<? extends PodVolume> volumes) {
  39. this(null, image, volumes);
  40. }
  41. PodTemplate(String name, String image, List<? extends PodVolume> volumes) {
  42. Preconditions.checkArgument(!StringUtils.isBlank(image));
  43. this.name = name;
  44. this.image = image;
  45. this.volumes = (volumes == null) ? new ArrayList<PodVolume>() : new ArrayList<PodVolume>(volumes);
  46. }
  47. @DataBoundSetter
  48. public void setName(String name) {
  49. this.name = name;
  50. }
  51. public String getName() {
  52. return name;
  53. }
  54. public String getImage() {
  55. return image;
  56. }
  57. @DataBoundSetter
  58. public void setCommand(String command) {
  59. this.command = command;
  60. }
  61. public String getCommand() {
  62. return command;
  63. }
  64. @DataBoundSetter
  65. public void setArgs(String args) {
  66. this.args = args;
  67. }
  68. public String getArgs() {
  69. return args;
  70. }
  71. public String getDisplayName() {
  72. return "Kubernetes Pod Template";
  73. }
  74. @DataBoundSetter
  75. public void setRemoteFs(String remoteFs) {
  76. this.remoteFs = StringUtils.isBlank(remoteFs) ? "/home/jenkins" : remoteFs;
  77. }
  78. public String getRemoteFs() {
  79. return remoteFs;
  80. }
  81. public void setInstanceCap(int instanceCap) {
  82. this.instanceCap = instanceCap;
  83. }
  84. public int getInstanceCap() {
  85. return instanceCap;
  86. }
  87. @DataBoundSetter
  88. public void setInstanceCapStr(String instanceCapStr) {
  89. if ("".equals(instanceCapStr)) {
  90. setInstanceCap(Integer.MAX_VALUE);
  91. } else {
  92. setInstanceCap(Integer.parseInt(instanceCapStr));
  93. }
  94. }
  95. public String getInstanceCapStr() {
  96. if (getInstanceCap() == Integer.MAX_VALUE) {
  97. return "";
  98. } else {
  99. return String.valueOf(instanceCap);
  100. }
  101. }
  102. public Set<LabelAtom> getLabelSet() {
  103. return Label.parse(label);
  104. }
  105. @DataBoundSetter
  106. public void setLabel(String label) {
  107. this.label = label;
  108. }
  109. public String getLabel() {
  110. return label;
  111. }
  112. @DataBoundSetter
  113. public void setNodeSelector(String nodeSelector) {
  114. this.nodeSelector = nodeSelector;
  115. }
  116. public String getNodeSelector() {
  117. return nodeSelector;
  118. }
  119. @DataBoundSetter
  120. public void setPrivileged(boolean privileged) {
  121. this.privileged = privileged;
  122. }
  123. public boolean isPrivileged() {
  124. return privileged;
  125. }
  126. public String getServiceAccount() {
  127. return serviceAccount;
  128. }
  129. @DataBoundSetter
  130. public void setServiceAccount(String serviceAccount) {
  131. this.serviceAccount = Util.fixEmpty(serviceAccount);
  132. }
  133. @DataBoundSetter
  134. public void setAlwaysPullImage(boolean alwaysPullImage) {
  135. this.alwaysPullImage = alwaysPullImage;
  136. }
  137. public boolean isAlwaysPullImage() {
  138. return alwaysPullImage;
  139. }
  140. public List<PodEnvVar> getEnvVars() {
  141. return envVars;
  142. }
  143. @DataBoundSetter
  144. public void setEnvVars(List<PodEnvVar> envVars) {
  145. this.envVars.addAll(envVars);
  146. }
  147. public String getResourceRequestMemory() {
  148. return resourceRequestMemory;
  149. }
  150. @DataBoundSetter
  151. public void setResourceRequestMemory(String resourceRequestMemory) {
  152. this.resourceRequestMemory = resourceRequestMemory;
  153. }
  154. public String getResourceLimitCpu() {
  155. return resourceLimitCpu;
  156. }
  157. @DataBoundSetter
  158. public void setResourceLimitCpu(String resourceLimitCpu) {
  159. this.resourceLimitCpu = resourceLimitCpu;
  160. }
  161. public String getResourceLimitMemory() {
  162. return resourceLimitMemory;
  163. }
  164. @DataBoundSetter
  165. public void setResourceLimitMemory(String resourceLimitMemory) {
  166. this.resourceLimitMemory = resourceLimitMemory;
  167. }
  168. public String getResourceRequestCpu() {
  169. return resourceRequestCpu;
  170. }
  171. @DataBoundSetter
  172. public void setResourceRequestCpu(String resourceRequestCpu) {
  173. this.resourceRequestCpu = resourceRequestCpu;
  174. }
  175. @Extension
  176. public static class DescriptorImpl extends Descriptor<PodTemplate> {
  177. @Override
  178. public String getDisplayName() {
  179. return "Kubernetes Pod Template";
  180. }
  181. }
  182. public List<PodVolume> getVolumes() {
  183. return volumes;
  184. }
  185. }