# Features # The DES application currently implements the following features ## Concurrent Distribution of Data ## - supported protocols: SFTP, FTP - recursive upload of directories - Notification of data delivery via e-mail ```xml <AOI name="aoi" active="yes"> <Distribution type="sftp" active="no" priority="NORM"> <consumer name="dummy" active="no"> <ProductType>SAMPLE.aoi.*.AA.txt</ProductType> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>false</NotifyEmail> </consumer> </Distribution> <Distribution type="ftp" active="no" priority="NORM"> <consumer name="CoA" active="yes"> <ProductType>*.txt</ProductType> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>false</NotifyEmail> <Recursive>true</Recursive> </consumer> </Distribution> </AOI> ``` ## Concurrent Download of Data ## - supported protocols: SFTP, FTP - Notification of data received via e-mai ```xml <AOI name="ReceivingStation" active="yes"> <Download type="sftp" active="yes" priority="NORM"> <consumer name="rsuser@eomount.eurac.edu" active="yes"> <ProductType>NPP.*.Eurac.dat</ProductType> <DestinationPath>./nppdata</DestinationPath> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>true</NotifyEmail> </consumer> </Download> </AOI> ``` ## Concurrent Execution of Tasks ## - Plugins in form of java classes, shell scripts/commands, perl scripts - Task execution is driven and triggered by filtered FileType's - On the fly java code compilation is supported ```xml <AOI name="aoi" active="yes"> <Task name="renameFiles" type="class" active="yes" priority="NORM"> <Command>class</Command> <FileType>SAMPLE.*.AA.txt</FileType> <Parameter>edu.eurac.distributionserver.tasks.generic.FileRename </Parameter> <FilePrefix>RENAME</FilePrefix> </Task> <Task name="testCmd" type="cmd" active="no" priority="NORM"> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>false</NotifyEmail> <Command>ping</Command> <Parameter>127.0.0.1</Parameter> </Task> <Task name="testPerl" type="sh" active="no" priority="NORM"> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>false</NotifyEmail> <Command>perl</Command> <Parameter>./test_data/scripts/testPerl.pl</Parameter> <Parameter>$CWD</Parameter> </Task> <Task name="moveToStorage" type="shell" active="no" priority="NORM"> <RunOnTrigger>/tmp/RunMoveToStorage</RunOnTrigger> <Command>sh</Command> <Parameter>./test_data/scripts/moveToStorage.sh</Parameter> <Parameter>/raid0/NISDS2/raid/pub/gsfcdata/npp/viirs/level2/* </Parameter> <Parameter>/raid0/level2STORAGE/</Parameter> </Task> </AOI> ``` ## Concurrent Parallel/Serial Execution of Task Groups ## - Task groups can be **serial** or **parallel** ```xml <AOI name="aoi" active="yes"> <TaskGroup name="testGroup" type="parallel" active="yes" priority="NORM"> <Task name="testCmd1" type="cmd" active="yes" priority="NORM"> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>false</NotifyEmail> <Command>ping</Command> <Parameter>127.0.0.1</Parameter> </Task> <Task name="testCmd2" type="cmd" active="yes" priority="NORM"> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>false</NotifyEmail> <Command>ping</Command> <Parameter>127.0.0.1</Parameter> </Task> </TaskGroup> <TaskGroup name="testGroup2" type="serial" active="no" priority="NORM"> <Task name="testCmd1" type="cmd" active="yes" priority="NORM"> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>false</NotifyEmail> <Command>ping</Command> <Parameter>127.0.0.1</Parameter> </Task> <Task name="testCmd2" type="cmd" active="yes" priority="NORM"> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>false</NotifyEmail> <Command>ping</Command> <Parameter>127.0.0.1</Parameter> </Task> </TaskGroup> </AOI> ``` ## Concurrent Cleaning of data ## - implements all switches available in linux find command - On Windows OS a CyWIN installation is required ```xml <AOI name="cleanSATWorkspaces" active="yes"> <DataCleaner name="01_Data" type="filesystem" active="yes" priority="NORM"> <RunOnTrigger>/tmp/RunSATWS_cleanup</RunOnTrigger> <EMail>support.rs@eurac.edu</EMail> <NotifyEmail>yes</NotifyEmail> <IncludePath>/mnt/SATWS/*/01_Data/*</IncludePath> <ExcludeFileType>*.pro</ExcludeFileType> <ExcludeFileType>*.java</ExcludeFileType> <ExcludeFileType>*.f</ExcludeFileType> <ExcludeFileType>*.m</ExcludeFileType> <ExcludeFileType>*.r</ExcludeFileType> <ExcludeFileType>*.c</ExcludeFileType> <ExcludeFileType>*.h</ExcludeFileType> <ExcludeFileType>*.doc</ExcludeFileType> <Size>+1k</Size> <LastAccess>+60</LastAccess> </DataCleaner> </AOI> ```