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);
}
}