package hudson.model; import hudson.model.Descriptor.FormException; import hudson.node_monitors.NodeMonitor; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; import org.kohsuke.stapler.export.Exported; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.io.IOException; import org.kohsuke.stapler.export.ExportedBean; /** * Serves as the top of {@link Computer}s in the URL hierarchy. *

* Getter methods are prefixed with '_' to avoid collision with computer names. * * @author Kohsuke Kawaguchi */ @ExportedBean public final class ComputerSet implements ModelObject { private static volatile List monitors = Collections.emptyList(); public ComputerSet() { if(monitors.isEmpty()) { // create all instances when requested for the first time. ArrayList r = new ArrayList(); for (Descriptor d : NodeMonitor.LIST) { try { r.add(d.newInstance(null, null)); } catch (FormException e) { // so far impossible. TODO: report } } monitors = r; } } @Exported public String getDisplayName() { return "Nodes"; } public List get_monitors() { return monitors; } @Exported(name="computer") public Computer[] get_all() { return Hudson.getInstance().getComputers(); } public Computer getDynamic(String token, StaplerRequest req, StaplerResponse rsp) { return Hudson.getInstance().getComputer(token); } public void do_launchAll(StaplerRequest req, StaplerResponse rsp) throws IOException { for (Computer c : get_all()) { if (c.isJnlpAgent()) { continue; } c.launch(); } rsp.sendRedirect("."); } public Api getApi(final StaplerRequest req) { return new Api(this); } }