我正在为我的硕士论文构建基因组数据的处理管道,并且我正在使用 Argo。
基本上,我在 Argo Workflows 中实现了一个功能齐全的处理工作流,现在我正在尝试创建一个 EventSource 来检测排序器何时写入文件夹(然后文件夹名称应通过传感器传递给工作流)。
第一个问题是排序器需要一些时间来写入所有数据,因此我无法在创建基本目录后立即启动工作流。因此,想法是等待新运行文件夹中的特定文件被创建,然后启动工作流。
为了模拟这一点,我在监视目录中处理了一个旧的运行文件夹。现在,我实现了以下EventSource,它不监听前面提到的特定文件,而只是监听运行文件夹,它工作,检测到事件。
apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
name: directory-event-source
namespace: tesi-fabrici
spec:
template:
container:
volumeMounts:
- mountPath: /test_dir
name: test-dir
volumes:
- name: test-dir
nfs:
server: 10.128.2.231
path: /tesi_fabrici
file:
directoryCreated:
watchPathConfig:
directory: "/test_dir/watched_dir/"
path: "210818_M70903_0027_000000000-JVRB4"
# pathRegexp: TODO with regex
eventType: CREATE
现在,我通过复制除该文件之外的所有数据并最后复制该文件来模拟之前所说的内容。按照脚本执行此操作。
#!/bin/bash
inputDirName=$1
inputDirPath=$2
sampleSheet=$3
outputPath=$4
rsync -hr --progress "$inputDirPath$inputDirName" $outputPath --exclude $sampleSheet
rsync -hr --progress "$inputDirPath${inputDirName}/$sampleSheet" "$outputPath$inputDirName"
我从集群中的一个 pod 运行它(安装了相同的 nfs 文件夹),如下所示:
./copy_script.sh 210818_M70903_0027_000000000-JVRB4 /external_prod_dir/AREA/MiSeqDx/ SampleSheet.csv /external_test_dir/watched_dir/
有问题的文件是SampleSheet.csv
. 现在我修改了 EventSource,如下所示,以便收听示例表的创建:
...
...
file:
directoryCreated:
watchPathConfig:
directory: "/test_dir/watched_dir/"
path: "210818_M70903_0027_000000000-JVRB4/SampleSheet.csv"
# pathRegexp: TODO with regex
eventType: CREATE
数据被正确复制,但在这种情况下,EventSource没有检测到SampleSheet.csv
. 通过进行一些测试,我注意到该字段path:
需要一个文件或文件夹,但是当我使用路径时,EventSource 不起作用,就像我的情况一样。解决这种特殊情况可能很容易,我按如下方式更改 EventSource
...
...
file:
directoryCreated:
watchPathConfig:
directory: "/test_dir/watched_dir/210818_M70903_0027_000000000-JVRB4/"
path: "SampleSheet.csv"
# pathRegexp: TODO with regex
eventType: CREATE
并且样本表的创建被捕获,但是将只有写入的内容path:
,我还需要运行文件夹名称。
但问题是,在实际场景中,运行文件夹名称会发生变化,但遵循与我在此处使用的文件夹相同的模式 ( 210818_M70903_0027_000000000-JVRB4
)。因此我的计划是使用正则表达式来捕获 [path_of_new_run_folder]/SampleSheet.csv,我认为我不能在directory:
但只能在pathRegexp:
我希望我很清楚我的问题是什么,请让我知道如何解决这个问题。