@@ -297,6 +297,13 @@ export class Scheduler implements SchedulerType {
297
297
298
298
const envKeyValuesString = envKeyValues . join ( '\n' )
299
299
300
+ // Convert envKeyValues to an object for easier manipulation
301
+ let envObject = envKeyValues . reduce ( ( acc , curr ) => {
302
+ const [ key , value ] = curr . split ( '=' ) ;
303
+ acc [ key ] = value ;
304
+ return acc ;
305
+ } , { } ) ;
306
+
300
307
const templateName = formatTemplateName ( taskInstance . template . name ) ;
301
308
302
309
let scriptFileName = '' ;
@@ -305,12 +312,88 @@ export class Scheduler implements SchedulerType {
305
312
switch ( templateName ) {
306
313
case 'ZfsReplicationTask' :
307
314
scriptFileName = 'replication-script' ;
315
+ if ( envObject [ 'zfsRepConfig_sendOptions_raw_flag' ] === 'true' ) {
316
+ envObject [ 'zfsRepConfig_sendOptions_compressed_flag' ] = '' ;
317
+ } else if ( envObject [ 'zfsRepConfig_sendOptions_compressed_flag' ] === 'true' ) {
318
+ envObject [ 'zfsRepConfig_sendOptions_raw_flag' ] = '' ;
319
+ }
320
+
321
+ [ 'recursive' , 'customName' , 'raw' , 'compressed' ] . forEach ( flag => {
322
+ const flagKey = `zfsRepConfig_sendOptions_${ flag } _flag` ;
323
+ if ( envObject [ flagKey ] === 'true' ) {
324
+ envObject [ flagKey ] = `--${ flag } ` ;
325
+ } else {
326
+ envObject [ flagKey ] = '' ;
327
+ if ( flag === 'customName' ) {
328
+ envObject [ 'zfsRepConfig_sendOptions_customName' ] = '' ;
329
+ }
330
+ }
331
+ } ) ;
308
332
break ;
309
333
case 'AutomatedSnapshotTask' :
310
334
scriptFileName = 'autosnap-script' ;
335
+ [ 'recursive' , 'customName' ] . forEach ( flag => {
336
+ const flagKey = `autoSnapConfig_${ flag } _flag` ;
337
+ if ( envObject [ flagKey ] === 'true' ) {
338
+ envObject [ flagKey ] = `--${ flag } ` ;
339
+ } else {
340
+ envObject [ flagKey ] = '' ;
341
+ if ( flag === 'customName' ) {
342
+ envObject [ 'autoSnapConfig_customName' ] = '' ;
343
+ }
344
+ }
345
+ } ) ;
311
346
break ;
312
347
case 'RsyncTask' :
313
348
scriptFileName = 'rsync-script' ;
349
+ [ 'archive' , 'recursive' , 'compressed' , 'delete' , 'quiet' , 'times' , 'hardLinks' , 'permissions' , 'xattr' , 'parallel' ] . forEach ( flag => {
350
+ const flagKey = `rsyncConfig_rsyncOptions_${ flag } _flag` ;
351
+ if ( envObject [ flagKey ] === 'true' ) {
352
+ envObject [ flagKey ] = `--${ flag } ` ;
353
+ if ( flag === 'parallel' ) {
354
+ envObject [ 'rsyncConfig_rsyncOptions_parallel_threads' ] = `--threads=${ envObject [ 'rsyncConfig_rsyncOptions_parallel_threads' ] || '1' } ` ;
355
+ }
356
+ } else {
357
+ envObject [ flagKey ] = '' ;
358
+ if ( flag === 'parallel' ) {
359
+ envObject [ 'rsyncConfig_rsyncOptions_parallel_threads' ] = '' ;
360
+ }
361
+ }
362
+ } ) ;
363
+
364
+ if ( ! envObject [ 'rsyncConfig_target_info_host' ] ) {
365
+ envObject [ 'rsyncConfig_target_info_host' ] = '' ;
366
+ envObject [ 'rsyncConfig_target_info_port' ] = '' ;
367
+ envObject [ 'rsyncConfig_target_info_user' ] = '' ;
368
+ } else {
369
+ envObject [ 'rsyncConfig_target_info_host' ] = `--host=${ envObject [ 'rsyncConfig_target_info_host' ] } ` ;
370
+ envObject [ 'rsyncConfig_target_info_port' ] = `--port=${ envObject [ 'rsyncConfig_target_info_port' ] } ` ;
371
+ envObject [ 'rsyncConfig_target_info_user' ] = `--user=${ envObject [ 'rsyncConfig_target_info_user' ] } ` ;
372
+ }
373
+
374
+ if ( envObject [ 'rsyncConfig_rsyncOptions_bandwidth_limit_kbps' ] !== '0' ) {
375
+ envObject [ 'rsyncConfig_rsyncOptions_bandwidth_limit_kbps' ] = `--bandwidth=${ envObject [ 'rsyncConfig_rsyncOptions_bandwidth_limit_kbps' ] } ` ;
376
+ } else {
377
+ envObject [ 'rsyncConfig_rsyncOptions_bandwidth_limit_kbps' ] = '' ;
378
+ }
379
+
380
+ if ( envObject [ 'rsyncConfig_rsyncOptions_include_pattern' ] && envObject [ 'rsyncConfig_rsyncOptions_include_pattern' ] !== "''" ) {
381
+ envObject [ 'rsyncConfig_rsyncOptions_include_pattern' ] = `--include=${ envObject [ 'rsyncConfig_rsyncOptions_include_pattern' ] } ` ;
382
+ } else {
383
+ envObject [ 'rsyncConfig_rsyncOptions_include_pattern' ] = '' ;
384
+ }
385
+
386
+ if ( envObject [ 'rsyncConfig_rsyncOptions_exclude_pattern' ] && envObject [ 'rsyncConfig_rsyncOptions_exclude_pattern' ] !== "''" ) {
387
+ envObject [ 'rsyncConfig_rsyncOptions_exclude_pattern' ] = `--exclude=${ envObject [ 'rsyncConfig_rsyncOptions_exclude_pattern' ] } ` ;
388
+ } else {
389
+ envObject [ 'rsyncConfig_rsyncOptions_exclude_pattern' ] = '' ;
390
+ }
391
+
392
+ if ( envObject [ 'rsyncConfig_rsyncOptions_custom_args' ] && envObject [ 'rsyncConfig_rsyncOptions_custom_args' ] !== "''" ) {
393
+ envObject [ 'rsyncConfig_rsyncOptions_custom_args' ] = `--customArgs=${ envObject [ 'rsyncConfig_rsyncOptions_custom_args' ] } ` ;
394
+ } else {
395
+ envObject [ 'rsyncConfig_rsyncOptions_custom_args' ] = '' ;
396
+ }
314
397
break ;
315
398
case 'SmartTest' :
316
399
scriptFileName = 'smart-test-script' ;
@@ -321,6 +404,7 @@ export class Scheduler implements SchedulerType {
321
404
default :
322
405
break ;
323
406
}
407
+
324
408
325
409
const scriptPath = `/opt/45drives/houston/scheduler/scripts/${ scriptFileName } .py` ;
326
410
// const templateServicePath = `/opt/45drives/houston/scheduler/templates/${templateName}.service`;
0 commit comments