[JENKINS-64816] prepare for support of node monitors by JCasC (#8629)

* [JENKINS-64816] prepare for support of node monitors by JCasC

In order that configuration as code plugin can properly support node
monitors we need to add databound constructors.

* fix warnings

* add javadoc that DataBoundConstructor is a must

* remove duplicate extension

* delete obsolete install methods
This commit is contained in:
Markus Winter authored and GitHub committed 2023-11-18 14:56:47 -07:00
1 parent f344879c56
commit 442a42f438
7 files changed
+53 -16

No files matched your search

@@ -32,6 +32,7 @@ import java.io.IOException;
import jenkins.security.MasterToSlaveCallable;
import net.sf.json.JSONObject;
import org.jenkinsci.Symbol;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
/**
@@ -40,6 +41,11 @@ import org.kohsuke.stapler.StaplerRequest;
* @author Kohsuke Kawaguchi
*/
public class ArchitectureMonitor extends NodeMonitor {
@DataBoundConstructor
public ArchitectureMonitor() {
}
@Extension @Symbol("architecture")
public static final class DescriptorImpl extends AbstractAsyncNodeMonitorDescriptor<String> {
@Override
@@ -36,6 +36,7 @@ import net.sf.json.JSONObject;
import org.jenkinsci.Symbol;
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
/**
@@ -46,6 +47,11 @@ import org.kohsuke.stapler.StaplerRequest;
* @since 1.123
*/
public class ClockMonitor extends NodeMonitor {
@DataBoundConstructor
public ClockMonitor() {
}
public ClockDifference getDifferenceFor(Computer c) {
return DESCRIPTOR.get(c);
}
@@ -25,6 +25,7 @@
package hudson.node_monitors;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.Extension;
import hudson.FilePath;
import hudson.model.Computer;
@@ -34,6 +35,7 @@ import hudson.remoting.Callable;
import java.io.IOException;
import java.text.ParseException;
import jenkins.model.Jenkins;
import org.jenkinsci.Symbol;
import org.kohsuke.stapler.DataBoundConstructor;
/**
@@ -61,7 +63,17 @@ public class DiskSpaceMonitor extends AbstractDiskSpaceMonitor {
return Jenkins.get().hasPermission(Jenkins.ADMINISTER) ? super.getColumnCaption() : null;
}
public static final DiskSpaceMonitorDescriptor DESCRIPTOR = new DiskSpaceMonitorDescriptor() {
@SuppressFBWarnings(value = "MS_PKGPROTECT", justification = "for backward compatibility")
public static /*almost final*/ DiskSpaceMonitorDescriptor DESCRIPTOR;
@Extension @Symbol("diskSpace")
public static class DescriptorImpl extends DiskSpaceMonitorDescriptor {
@SuppressFBWarnings(value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification = "for backward compatibility")
public DescriptorImpl() {
DESCRIPTOR = this;
}
@NonNull
@Override
public String getDisplayName() {
@@ -78,10 +90,5 @@ public class DiskSpaceMonitor extends AbstractDiskSpaceMonitor {
return p.asCallableWith(new GetUsableSpace());
}
};
@Extension
public static DiskSpaceMonitorDescriptor install() {
return DESCRIPTOR;
}
}
@@ -61,6 +61,9 @@ import org.kohsuke.stapler.export.ExportedBean;
* <p>
* {@link NodeMonitor}s are persisted via XStream.
*
* <h2>CasC</h2>
* To be able to configure {@link NodeMonitor}s via JCasC, they should have a {@link org.kohsuke.stapler.DataBoundConstructor}
*
* @author Kohsuke Kawaguchi
* @since 1.123
*/
@@ -25,6 +25,7 @@
package hudson.node_monitors;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.Extension;
import hudson.model.Computer;
import hudson.remoting.Callable;
@@ -34,6 +35,8 @@ import java.util.Map;
import java.util.logging.Logger;
import jenkins.security.MasterToSlaveCallable;
import net.sf.json.JSONObject;
import org.jenkinsci.Symbol;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
@@ -44,8 +47,22 @@ import org.kohsuke.stapler.export.ExportedBean;
* @author Kohsuke Kawaguchi
*/
public class ResponseTimeMonitor extends NodeMonitor {
@DataBoundConstructor
public ResponseTimeMonitor() {
}
@SuppressFBWarnings(value = "MS_PKGPROTECT", justification = "for backward compatibility")
public static /*almost final*/ AbstractNodeMonitorDescriptor<Data> DESCRIPTOR;
@Extension
public static final AbstractNodeMonitorDescriptor<Data> DESCRIPTOR = new AbstractAsyncNodeMonitorDescriptor<>() {
@Symbol("responseTime")
public static class DescriptorImpl extends AbstractAsyncNodeMonitorDescriptor<Data> {
@SuppressFBWarnings(value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification = "for backward compatibility")
public DescriptorImpl() {
DESCRIPTOR = this;
}
@Override
protected Callable<Data, IOException> createCallable(Computer c) {
@@ -91,7 +108,7 @@ public class ResponseTimeMonitor extends NodeMonitor {
public NodeMonitor newInstance(StaplerRequest req, JSONObject formData) throws FormException {
return new ResponseTimeMonitor();
}
};
}
private static final class Step1 extends MasterToSlaveCallable<Data, IOException> {
private Data cur;
@@ -37,6 +37,7 @@ import net.sf.json.JSONObject;
import org.jenkinsci.Symbol;
import org.jvnet.hudson.MemoryMonitor;
import org.jvnet.hudson.MemoryUsage;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
@@ -48,6 +49,11 @@ import org.kohsuke.stapler.export.ExportedBean;
* @since 1.233
*/
public class SwapSpaceMonitor extends NodeMonitor {
@DataBoundConstructor
public SwapSpaceMonitor() {
}
/**
* Returns the HTML representation of the space.
*/
@@ -101,14 +101,6 @@ public class TemporarySpaceMonitor extends AbstractDiskSpaceMonitor {
}
}
/**
* @deprecated as of 2.0
*/
@Deprecated
public static DiskSpaceMonitorDescriptor install() {
return (DiskSpaceMonitorDescriptor) Jenkins.get().getDescriptor(TemporarySpaceMonitor.class);
}
protected static final class GetTempSpace extends MasterToSlaveFileCallable<DiskSpace> {
@Override
public DiskSpace invoke(File f, VirtualChannel channel) throws IOException {