Title: [40550] trunk/hudson/plugins/thinBackup: fix for JENKINS-13059: Backup userContent folder too

Diff

Modified: trunk/hudson/plugins/thinBackup/pom.xml (40549 => 40550)


--- trunk/hudson/plugins/thinBackup/pom.xml	2012-05-07 16:24:39 UTC (rev 40549)
+++ trunk/hudson/plugins/thinBackup/pom.xml	2012-05-07 17:02:50 UTC (rev 40550)
@@ -65,10 +65,20 @@
     <url>www.borland.com</url>
   </organization>
   <repositories>
-    <repository>
+   <repository>
       <id>m.g.o-public</id>
       <url>http://maven.glassfish.org/content/groups/public/</url>
     </repository>
+    <repository>
+      <id>maven.jenkins-ci.org</id>
+      <url>http://maven.jenkins-ci.org:8081/content/repositories/releases/</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
   </repositories>
   <pluginRepositories>
     <pluginRepository>

Modified: trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/ThinBackupMgmtLink.java (40549 => 40550)


--- trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/ThinBackupMgmtLink.java	2012-05-07 16:24:39 UTC (rev 40549)
+++ trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/ThinBackupMgmtLink.java	2012-05-07 17:02:50 UTC (rev 40550)
@@ -123,6 +123,7 @@
       @QueryParameter("cleanupDiff") final boolean cleanupDiff,
       @QueryParameter("backupBuildResults") final boolean backupBuildResults,
       @QueryParameter("backupBuildArchive") final boolean backupBuildArchive,
+      @QueryParameter("backupUserContents") final boolean backupUserContents,
       @QueryParameter("backupNextBuildNumber") final boolean backupNextBuildNumber) throws IOException {
     Hudson.getInstance().checkPermission(Hudson.ADMINISTER);
 
@@ -136,6 +137,7 @@
     plugin.setMoveOldBackupsToZipFile(moveOldBackupsToZipFile);
     plugin.setBackupBuildResults(backupBuildResults);
     plugin.setBackupBuildArchive(backupBuildArchive);
+    plugin.setBackupUserContents(backupUserContents);
     plugin.setBackupNextBuildNumber(backupNextBuildNumber);
     plugin.save();
     LOGGER.finest("Saving backup settings done.");

Modified: trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/ThinBackupPeriodicWork.java (40549 => 40550)


--- trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/ThinBackupPeriodicWork.java	2012-05-07 16:24:39 UTC (rev 40549)
+++ trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/ThinBackupPeriodicWork.java	2012-05-07 17:02:50 UTC (rev 40550)
@@ -75,7 +75,7 @@
     try {
       backupPath = plugin.getExpandedBackupPath();
 
-      if (!StringUtils.isEmpty(backupPath)) {
+      if (StringUtils.isNotEmpty(backupPath)) {
         if (plugin.isWaitForIdle()) {
           LOGGER.fine("Wait until executors are idle to perform backup.");
           Utils.waitUntilIdleAndSwitchToQuietMode(plugin.getForceQuietModeTimeout(), TimeUnit.MINUTES);

Modified: trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/ThinBackupPluginImpl.java (40549 => 40550)


--- trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/ThinBackupPluginImpl.java	2012-05-07 16:24:39 UTC (rev 40549)
+++ trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/ThinBackupPluginImpl.java	2012-05-07 17:02:50 UTC (rev 40550)
@@ -51,6 +51,7 @@
   private boolean moveOldBackupsToZipFile = false;
   private boolean backupBuildResults = true;
   private boolean backupBuildArchive = false;
+  private boolean backupUserContents = false;
   private boolean backupNextBuildNumber = false;
 
   private static ThinBackupPluginImpl instance = null;
@@ -198,6 +199,14 @@
     this.excludedFilesRegex = excludedFilesRegex;
   }
 
+  public boolean isBackupUserContents() {
+    return this.backupUserContents;
+  }
+
+  public void setBackupUserContents(boolean backupUserContents) {
+    this.backupUserContents = backupUserContents;
+  }
+
   public String getExcludedFilesRegex() {
     return excludedFilesRegex;
   }
@@ -321,12 +330,14 @@
 
     return FormValidation.ok();
   }
-  
-  public FormValidation doCheckWaitForIdle(final StaplerRequest res, final StaplerResponse rsp, @QueryParameter("value") final String waitForIdle) {
+
+  public FormValidation doCheckWaitForIdle(final StaplerRequest res, final StaplerResponse rsp,
+      @QueryParameter("value") final String waitForIdle) {
     if (Boolean.parseBoolean(waitForIdle))
       return FormValidation.ok();
     else
-      return FormValidation.warning("This may or may not generate corrupt backups! Be aware that no data get changed during the backup process!");
+      return FormValidation
+          .warning("This may or may not generate corrupt backups! Be aware that no data get changed during the backup process!");
   }
 
 }

Modified: trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/backup/HudsonBackup.java (40549 => 40550)


--- trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/backup/HudsonBackup.java	2012-05-07 16:24:39 UTC (rev 40549)
+++ trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/backup/HudsonBackup.java	2012-05-07 17:02:50 UTC (rev 40550)
@@ -49,6 +49,7 @@
   public static final String BUILDS_DIR_NAME = "builds";
   public static final String JOBS_DIR_NAME = "jobs";
   public static final String USERS_DIR_NAME = "users";
+  public static final String USERSCONTENTS_DIR_NAME = "userContent";
   public static final String NEXT_BUILD_NUMBER_FILE_NAME = "nextBuildNumber";
   public static final String ARCHIVE_DIR_NAME = "archive";
   public static final String XML_FILE_EXTENSION = ".xml";
@@ -128,9 +129,12 @@
 
     backupGlobalXmls();
     backupJobs();
-    backupUsers();
+    backupRootFolder(USERS_DIR_NAME);
     storePluginListIfChanged();
 
+    if (plugin.isBackupUserContents())
+      backupRootFolder(USERSCONTENTS_DIR_NAME);
+
     new DirectoryCleaner().removeEmptyDirectories(backupDirectory);
 
     if (backupType == BackupType.FULL) {
@@ -241,17 +245,16 @@
     }
   }
 
-  private void backupUsers() throws IOException {
-    final File usersDirectory = new File(hudsonHome.getAbsolutePath(), USERS_DIR_NAME);
-    if (usersDirectory.exists() && usersDirectory.isDirectory()) {
-      LOGGER.fine("Backing up users specific configuration files...");
-      final File usersBackupDirectory = new File(backupDirectory.getAbsolutePath(), USERS_DIR_NAME);
-      IOFileFilter filter = FileFilterUtils.suffixFileFilter(XML_FILE_EXTENSION);
-      filter = FileFilterUtils.andFileFilter(filter, getFileAgeDiffFilter());
+  private void backupRootFolder(String folderName) throws IOException {
+    final File srcDirectory = new File(hudsonHome.getAbsolutePath(), folderName);
+    if (srcDirectory.exists() && srcDirectory.isDirectory()) {
+      LOGGER.fine(String.format("Backing up %s...", folderName));
+      final File destDirectory = new File(backupDirectory.getAbsolutePath(), folderName);
+      IOFileFilter filter = getFileAgeDiffFilter();
       filter = FileFilterUtils.andFileFilter(filter, getExcludedFilesFilter());
       filter = FileFilterUtils.orFileFilter(filter, DirectoryFileFilter.DIRECTORY);
-      FileUtils.copyDirectory(usersDirectory, usersBackupDirectory, filter);
-      LOGGER.fine("DONE backing up users specific configuration files.");
+      FileUtils.copyDirectory(srcDirectory, destDirectory, filter);
+      LOGGER.fine(String.format("DONE backing up %s.", folderName));
     }
   }
 

Modified: trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/utils/Utils.java (40549 => 40550)


--- trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/utils/Utils.java	2012-05-07 16:24:39 UTC (rev 40549)
+++ trunk/hudson/plugins/thinBackup/src/main/java/org/jvnet/hudson/plugins/thinbackup/utils/Utils.java	2012-05-07 17:02:50 UTC (rev 40550)
@@ -85,7 +85,7 @@
 
   /**
    * Waits until all executors are idle and switch jenkins to quiet mode. If it takes to long that all executors are
-   * idle because in the mean time other jobs are executed to timeout ensure that the quiet mode is forced.
+   * idle because in the mean time other jobs are executed the timeout ensure that the quiet mode is forced.
    * 
    * @param timeout
    *          specifies when a quiet mode is forced. 0 = no timeout.

Reply via email to