Skip to content

Commit 01a4bc4

Browse files
authored
[fix_non_config_instance] add no-op methods for non readonly Kubernetes cloud (#1491)
* [fix_non_config_instance] add unimplemented methods for non config classes Signed-off-by: Thorsten Scherler <[email protected]> * [fix_non_config_instance] fix test Signed-off-by: Thorsten Scherler <[email protected]> * [fix_non_config_instance] add more tests Signed-off-by: Thorsten Scherler <[email protected]> * eslint - formating changes and fix offences Signed-off-by: Thorsten Scherler <[email protected]> --------- Signed-off-by: Thorsten Scherler <[email protected]>
1 parent 8c7c2d5 commit 01a4bc4

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

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

+14
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@ public NonConfigurableKubernetesCloud(@NonNull String name, @NonNull KubernetesC
1414
super(name, source);
1515
}
1616

17+
@Override
18+
public void replaceTemplate(PodTemplate oldTemplate, PodTemplate newTemplate) {}
19+
20+
@Override
21+
public void addTemplate(PodTemplate template) {}
22+
23+
@Override
24+
public void removeTemplate(PodTemplate template) {}
25+
26+
@Override
27+
public Cloud reconfigure(@NonNull StaplerRequest req, JSONObject form) throws Descriptor.FormException {
28+
return DescriptorImpl.class.cast(getDescriptor()).newInstance(req, form);
29+
}
30+
1731
@Extension
1832
public static class FilterImpl extends DescriptorVisibilityFilter {
1933
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package org.csanchez.jenkins.plugins.kubernetes;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.util.logging.Level;
6+
import java.util.logging.Logger;
7+
import org.junit.Rule;
8+
import org.junit.Test;
9+
import org.jvnet.hudson.test.JenkinsRule;
10+
import org.jvnet.hudson.test.LoggerRule;
11+
12+
public class NonConfigurableKubernetesCloudTest {
13+
14+
@Rule
15+
public JenkinsRule j = new JenkinsRule();
16+
17+
@Rule
18+
public LoggerRule logs = new LoggerRule()
19+
.record(
20+
Logger.getLogger(NonConfigurableKubernetesCloudTest.class
21+
.getPackage()
22+
.getName()),
23+
Level.ALL);
24+
25+
@Test
26+
public void configRoundTrip() throws Exception {
27+
// create a cloud with a template
28+
var cloud = new KubernetesCloud("kubernetes");
29+
var podTemplate = new PodTemplate();
30+
podTemplate.setName("test-template");
31+
podTemplate.setLabel("test");
32+
cloud.addTemplate(podTemplate);
33+
var jenkins = j.jenkins;
34+
jenkins.clouds.add(cloud);
35+
jenkins.save();
36+
var readOnly = new NonConfigurableKubernetesCloud("NonConfigurableKubernetes", cloud);
37+
readOnly.removeTemplate(podTemplate); // should not remove anything
38+
var podTemplate2 = new PodTemplate();
39+
podTemplate2.setName("test-template-read-only");
40+
podTemplate2.setLabel("test-read-only");
41+
readOnly.addTemplate(podTemplate2);
42+
jenkins.clouds.add(readOnly);
43+
jenkins.save();
44+
assertEquals(2, jenkins.clouds.size()); // sanity check
45+
assertEquals(1, readOnly.getTemplates().size()); // remove should not have removed anything, nor should have add
46+
readOnly.getTemplates().forEach(t -> {
47+
if (t.getName().equals("test-template-read-only")) {
48+
throw new RuntimeException("Template should not be added");
49+
}
50+
});
51+
}
52+
}

0 commit comments

Comments
 (0)