diff --git a/core/src/main/java/hudson/FileSystemProvisioner.java b/core/src/main/java/hudson/FileSystemProvisioner.java index 0475a9bf21bb870df736aba4a2c55b7527799bbf..364ba4ecf06d3145639b648c745304eb97fe2580 100644 --- a/core/src/main/java/hudson/FileSystemProvisioner.java +++ b/core/src/main/java/hudson/FileSystemProvisioner.java @@ -30,6 +30,7 @@ import hudson.model.Computer; import hudson.model.Describable; import hudson.model.Job; import hudson.model.TaskListener; +import hudson.model.Node; import hudson.model.listeners.RunListener; import hudson.util.DescriptorList; import hudson.scm.SCM; @@ -47,7 +48,7 @@ import java.io.OutputStream; * * *

- * STILL A WORK IN PROGRESS. SUBJECT TO CHANGE! + * STILL A WORK IN PROGRESS. SUBJECT TO CHANGE! DO NOT EXTEND. * * TODO: is this per {@link Computer}? Per {@link Job}? * -> probably per slave. @@ -82,15 +83,19 @@ import java.io.OutputStream; * - when a slave connects, we auto-detect the file system provisioner. * (for example, ZFS FSP would check the slave root user prop * and/or attempt to "pfexec zfs create" and take over.) - * -> hmm, is it better to do this manually? * * - the user may configure jobs for snapshot collection, along with * the retention policy. * + * - keep workspace snapshots that correspond to the permalinks + * In ZFS, use a user property to remember the build and the job. + * * Can't the 2nd step happen automatically, when someone else depends on * the workspace snapshot of the upstream? Yes, by using {@link RunListener}. * So this becomes like a special SCM type. * + * + * *

Design take 2

*

* The first piece of this is the custom {@link SCM}, which inherits the @@ -162,6 +167,15 @@ public abstract class FileSystemProvisioner implements ExtensionPoint, Describab public abstract FileSystemProvisionerDescriptor getDescriptor(); + /** + * TODO: eventually move this to {@link Node} since it needs to be configurable + * per node, but as of now kept here to avoid interfering with the production code. + */ + public static FileSystemProvisioner get(Node node) { + return DEFAULT; + } + + /** * A list of available file system provider types. */