Skip to content

Commit 2e9a0e0

Browse files
committed
Write bash script with orphan file pipeline job
1 parent 2ead1b6 commit 2e9a0e0

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed

SequenceAnalysis/resources/queries/pipeline/Job/Sequence Jobs Without Data.qview.xml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
<customView xmlns="http://labkey.org/data/xml/queryCustomView" containerFilter="CurrentAndSubfolders">
22
<columns>
3+
<column name="RowId" />
34
<column name="Status" />
45
<column name="Description" />
5-
<column name="ActiveHostName"/>
66
<column name="Created" />
77
<column name="Provider"/>
8-
<column name="totalReadsets"/>
9-
<column name="totalAnalyses"/>
10-
<column name="totalOutputs"/>
11-
<column name="sequenceJobWithoutData"/>
8+
<column name="Folder/Path"/>
129
</columns>
1310
<filters>
1411
<filter column="sequenceJobWithoutData" operator="eq" value="true"/>

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/OrphanFilePipelineJob.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.labkey.api.pipeline.AbstractTaskFactorySettings;
1919
import org.labkey.api.pipeline.PipeRoot;
2020
import org.labkey.api.pipeline.PipelineJob;
21+
import org.labkey.api.pipeline.PipelineJobException;
2122
import org.labkey.api.pipeline.PipelineJobService;
2223
import org.labkey.api.pipeline.PipelineService;
2324
import org.labkey.api.pipeline.PipelineStatusFile;
@@ -33,11 +34,14 @@
3334
import org.labkey.api.util.PageFlowUtil;
3435
import org.labkey.api.view.ActionURL;
3536
import org.labkey.api.view.ViewBackgroundInfo;
37+
import org.labkey.api.writer.PrintWriters;
3638
import org.labkey.sequenceanalysis.SequenceAnalysisSchema;
3739
import org.labkey.sequenceanalysis.util.SequenceUtil;
3840

3941
import java.io.File;
4042
import java.io.FileFilter;
43+
import java.io.IOException;
44+
import java.io.PrintWriter;
4145
import java.net.URI;
4246
import java.net.URISyntaxException;
4347
import java.sql.ResultSet;
@@ -131,7 +135,7 @@ public boolean isJobComplete(PipelineJob job)
131135
}
132136

133137
@Override
134-
public RecordedActionSet run()
138+
public RecordedActionSet run() throws PipelineJobException
135139
{
136140
getJob().getLogger().info("## The following sections list any files or pipeline jobs that appear to be orphans, not connected to any imported readsets or sequence outputs:");
137141

@@ -205,8 +209,25 @@ public RecordedActionSet run()
205209
if (!probableDeletes.isEmpty())
206210
{
207211
StringBuilder sb = new StringBuilder();
212+
File output = new File(getJob().getLogFile().getParentFile(), "toRemove.sh");
213+
try (PrintWriter writer = PrintWriters.getPrintWriter(output))
214+
{
215+
writer.println("#!/bin/bash");
216+
writer.println("");
217+
writer.println("set -e");
218+
writer.println("set -x");
219+
writer.println("");
220+
probableDeletes.forEach(f -> writer.println("rm -Rf " + f.getPath()));
221+
}
222+
catch (IOException e)
223+
{
224+
throw new PipelineJobException(e);
225+
}
226+
208227
probableDeletes.forEach(f -> sb.append("\n").append(f.getPath()));
209-
getJob().getLogger().info("## The following files can almost certainly be deleted; however, please exercise caution:" + sb.toString());
228+
getJob().getLogger().info("## The following files can almost certainly be deleted; however, please exercise caution. Note: the file toRemove.sh has been written and can be executed to remove these:" + sb.toString());
229+
230+
210231
}
211232

212233
return new RecordedActionSet();

0 commit comments

Comments
 (0)