From 61fc5dae798c426323ca18d92e184d45297158bd Mon Sep 17 00:00:00 2001 From: Vincent Latombe Date: Thu, 9 Jan 2025 09:42:01 +0100 Subject: [PATCH 1/2] Turn source image project into a combobox. The previous select was too restrictive as it didn't allow to provide a value for this field other than the project where the VM is to be scheduled. Source image could be located in a different project and shared to the project where the VM is scheduled. Also removed usage of anonymous inner class when a simpler alternative is available. --- .../computeengine/InstanceConfiguration.java | 42 ++++++++----------- .../InstanceConfiguration/config.jelly | 2 +- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/google/jenkins/plugins/computeengine/InstanceConfiguration.java b/src/main/java/com/google/jenkins/plugins/computeengine/InstanceConfiguration.java index c476926e..5a8756bb 100644 --- a/src/main/java/com/google/jenkins/plugins/computeengine/InstanceConfiguration.java +++ b/src/main/java/com/google/jenkins/plugins/computeengine/InstanceConfiguration.java @@ -53,6 +53,7 @@ import hudson.model.Label; import hudson.model.Node; import hudson.model.labels.LabelAtom; +import hudson.util.ComboBoxModel; import hudson.util.FormValidation; import hudson.util.ListBoxModel; import java.io.IOException; @@ -98,20 +99,18 @@ public class InstanceConfiguration implements Describable public static final String DEFAULT_RUN_AS_USER = "jenkins"; public static final String METADATA_LINUX_STARTUP_SCRIPT_KEY = "startup-script"; public static final String METADATA_WINDOWS_STARTUP_SCRIPT_KEY = "windows-startup-script-ps1"; - public static final List KNOWN_IMAGE_PROJECTS = Collections.unmodifiableList(new ArrayList() { - { - add("centos-cloud"); - add("coreos-cloud"); - add("cos-cloud"); - add("debian-cloud"); - add("rhel-cloud"); - add("suse-cloud"); - add("suse-sap-cloud"); - add("ubuntu-os-cloud"); - add("windows-cloud"); - add("windows-sql-cloud"); - } - }); + public static final List KNOWN_IMAGE_PROJECTS = Arrays.asList( + "centos-cloud", + "coreos-cloud", + "cos-cloud", + "debian-cloud", + "rhel-cloud", + "suse-cloud", + "suse-sap-cloud", + "ubuntu-os-cloud", + "windows-cloud", + "windows-sql-cloud" + ); private String description; private String namePrefix; @@ -834,17 +833,12 @@ public ListBoxModel doFillBootDiskTypeItems( } } - public ListBoxModel doFillBootDiskSourceImageProjectItems( - @AncestorInPath Jenkins context, - @QueryParameter("projectId") @RelativePath("..") final String projectId) { + public ComboBoxModel doFillBootDiskSourceImageProjectItems(@QueryParameter("projectId") @RelativePath("..") final String projectId) { checkPermissions(Jenkins.get(), Jenkins.ADMINISTER); - ListBoxModel items = new ListBoxModel(); - items.add(""); - items.add(projectId); - for (String v : KNOWN_IMAGE_PROJECTS) { - items.add(v); - } - return items; + ComboBoxModel items = new ComboBoxModel(); + items.add(projectId); + items.addAll(KNOWN_IMAGE_PROJECTS); + return items; } public FormValidation doCheckBootDiskSourceImageProject(@QueryParameter String value) { diff --git a/src/main/resources/com/google/jenkins/plugins/computeengine/InstanceConfiguration/config.jelly b/src/main/resources/com/google/jenkins/plugins/computeengine/InstanceConfiguration/config.jelly index bf4420fa..d69b6a51 100644 --- a/src/main/resources/com/google/jenkins/plugins/computeengine/InstanceConfiguration/config.jelly +++ b/src/main/resources/com/google/jenkins/plugins/computeengine/InstanceConfiguration/config.jelly @@ -117,7 +117,7 @@ - + From 016b1b328235aaee1c51ab770d3a12993595a2c8 Mon Sep 17 00:00:00 2001 From: Vincent Latombe Date: Thu, 9 Jan 2025 10:05:15 +0100 Subject: [PATCH 2/2] Actually we have a more modern java available --- .../computeengine/InstanceConfiguration.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/google/jenkins/plugins/computeengine/InstanceConfiguration.java b/src/main/java/com/google/jenkins/plugins/computeengine/InstanceConfiguration.java index 5a8756bb..ba151e3e 100644 --- a/src/main/java/com/google/jenkins/plugins/computeengine/InstanceConfiguration.java +++ b/src/main/java/com/google/jenkins/plugins/computeengine/InstanceConfiguration.java @@ -59,7 +59,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -99,7 +98,7 @@ public class InstanceConfiguration implements Describable public static final String DEFAULT_RUN_AS_USER = "jenkins"; public static final String METADATA_LINUX_STARTUP_SCRIPT_KEY = "startup-script"; public static final String METADATA_WINDOWS_STARTUP_SCRIPT_KEY = "windows-startup-script-ps1"; - public static final List KNOWN_IMAGE_PROJECTS = Arrays.asList( + public static final List KNOWN_IMAGE_PROJECTS = List.of( "centos-cloud", "coreos-cloud", "cos-cloud", @@ -109,8 +108,7 @@ public class InstanceConfiguration implements Describable "suse-sap-cloud", "ubuntu-os-cloud", "windows-cloud", - "windows-sql-cloud" - ); + "windows-sql-cloud"); private String description; private String namePrefix; @@ -833,12 +831,13 @@ public ListBoxModel doFillBootDiskTypeItems( } } - public ComboBoxModel doFillBootDiskSourceImageProjectItems(@QueryParameter("projectId") @RelativePath("..") final String projectId) { + public ComboBoxModel doFillBootDiskSourceImageProjectItems( + @QueryParameter("projectId") @RelativePath("..") final String projectId) { checkPermissions(Jenkins.get(), Jenkins.ADMINISTER); ComboBoxModel items = new ComboBoxModel(); - items.add(projectId); - items.addAll(KNOWN_IMAGE_PROJECTS); - return items; + items.add(projectId); + items.addAll(KNOWN_IMAGE_PROJECTS); + return items; } public FormValidation doCheckBootDiskSourceImageProject(@QueryParameter String value) {