diff --git a/conf/db/seed.sql b/conf/db/seed.sql index 6ade31bdb2..35436bdf37 100644 --- a/conf/db/seed.sql +++ b/conf/db/seed.sql @@ -39,7 +39,8 @@ COMMIT; SET AUTOCOMMIT=@OLD_AUTOCOMMIT; SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, @@AUTOCOMMIT=0; INSERT INTO `app_io_param` (`PARAM_ID`, `APPLICATION_ARGUMENT`, `DATA_MOVEMENT`, `DATA_STAGED`, `DIRECTION`, `INPUT_ORDER`, `INTERFACE_ID`, `IS_READ_ONLY`, `IS_REQUIRED`, `LOCATION`, `METADATA`, `PARAM_NAME`, `OUTPUT_STREAMING`, `OVERRIDE_FILENAME`, `REQUIRED_TO_ADDED_TO_CMD`, `SEARCH_QUERY`, `STANDARD_INPUT`, `DATA_TYPE`, `USER_FRIENDLY_DESCRIPTION`, `PARAM_VALUE`) VALUES ('22620216-b49b-4a1e-ba5e-ef37f304249a','',0x00,0x00,'OUTPUT',0,'Echo_d3d099ca-a1a0-4749-a831-0fab754c9946',0x00,0x01,'','','Echo_Output',0x00,NULL,0x00,'',0x00,'STDOUT',NULL,''); -INSERT INTO `app_io_param` (`PARAM_ID`, `APPLICATION_ARGUMENT`, `DATA_MOVEMENT`, `DATA_STAGED`, `DIRECTION`, `INPUT_ORDER`, `INTERFACE_ID`, `IS_READ_ONLY`, `IS_REQUIRED`, `LOCATION`, `METADATA`, `PARAM_NAME`, `OUTPUT_STREAMING`, `OVERRIDE_FILENAME`, `REQUIRED_TO_ADDED_TO_CMD`, `SEARCH_QUERY`, `STANDARD_INPUT`, `DATA_TYPE`, `USER_FRIENDLY_DESCRIPTION`, `PARAM_VALUE`) VALUES ('c2ac72e6-5529-47e7-91e4-ef41ca426459','',0x00,0x00,'INPUT',0,'Echo_d3d099ca-a1a0-4749-a831-0fab754c9946',0x00,0x01,NULL,'','Input_to_Echo',0x00,'',0x01,NULL,0x00,'STRING','Message echoed by the application','Hello, Airavata!'); +INSERT INTO `app_io_param` (`PARAM_ID`, `APPLICATION_ARGUMENT`, `DATA_MOVEMENT`, `DATA_STAGED`, `DIRECTION`, `INPUT_ORDER`, `INTERFACE_ID`, `IS_READ_ONLY`, `IS_REQUIRED`, `LOCATION`, `METADATA`, `PARAM_NAME`, `OUTPUT_STREAMING`, `OVERRIDE_FILENAME`, `REQUIRED_TO_ADDED_TO_CMD`, `SEARCH_QUERY`, `STANDARD_INPUT`, `DATA_TYPE`, `USER_FRIENDLY_DESCRIPTION`, `PARAM_VALUE`) VALUES ('f7e8d9c0-1a2b-4c3d-9e4f-5a6b7c8d9e0f','',0x00,0x00,'INPUT',0,'Echo_d3d099ca-a1a0-4749-a831-0fab754c9946',0x00,0x01,NULL,'','Experiment_Duration',0x00,'',0x01,NULL,0x00,'INTEGER','Seconds to sleep in the SLURM job before echoing the output','60'); +INSERT INTO `app_io_param` (`PARAM_ID`, `APPLICATION_ARGUMENT`, `DATA_MOVEMENT`, `DATA_STAGED`, `DIRECTION`, `INPUT_ORDER`, `INTERFACE_ID`, `IS_READ_ONLY`, `IS_REQUIRED`, `LOCATION`, `METADATA`, `PARAM_NAME`, `OUTPUT_STREAMING`, `OVERRIDE_FILENAME`, `REQUIRED_TO_ADDED_TO_CMD`, `SEARCH_QUERY`, `STANDARD_INPUT`, `DATA_TYPE`, `USER_FRIENDLY_DESCRIPTION`, `PARAM_VALUE`) VALUES ('c2ac72e6-5529-47e7-91e4-ef41ca426459','',0x00,0x00,'INPUT',1,'Echo_d3d099ca-a1a0-4749-a831-0fab754c9946',0x00,0x01,NULL,'','Input_to_Echo',0x00,'',0x01,NULL,0x00,'STRING','Message echoed by the application','Hello, Airavata!'); COMMIT; SET AUTOCOMMIT=@OLD_AUTOCOMMIT; SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, @@AUTOCOMMIT=0; @@ -47,7 +48,7 @@ INSERT INTO `app_module_mapping` (`INTERFACE_ID`, `MODULE_ID`) VALUES ('Echo_d3d COMMIT; SET AUTOCOMMIT=@OLD_AUTOCOMMIT; SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, @@AUTOCOMMIT=0; -INSERT INTO `application_deployment` (`DEPLOYMENT_ID`, `APPLICATION_DESC`, `APP_MODULE_ID`, `COMPUTE_HOSTID`, `CREATION_TIME`, `DEFAULT_CPU_COUNT`, `DEFAULT_NODE_COUNT`, `DEFAULT_QUEUE_NAME`, `DEFAULT_WALLTIME`, `EDITABLE_BY_USER`, `ENV_MODULE_LOAD_CMD`, `EXECUTABLE_PATH`, `GATEWAY_ID`, `LIB_APPEND_PATHS_JSON`, `LIB_PREPEND_PATHS_JSON`, `MODULE_LOAD_CMDS_JSON`, `parallelism`, `POSTJOB_CMDS_JSON`, `PREJOB_CMDS_JSON`, `SET_ENVIRONMENT_JSON`, `UPDATE_TIME`) VALUES ('slurm_Echo_da1c0c0f-5b47-4da2-a4fb-b6a6792b910d','Echo deployment on the dev SLURM cluster','Echo_da1c0c0f-5b47-4da2-a4fb-b6a6792b910d','slurm_6afa587c-d5c0-42e6-a998-f8478ad8e404','2026-06-12 19:41:16.458000',0,0,'',0,0x00,NULL,'/bin/echo','default',NULL,NULL,NULL,'SERIAL',NULL,NULL,NULL,'2026-06-12 19:41:16.458000'); +INSERT INTO `application_deployment` (`DEPLOYMENT_ID`, `APPLICATION_DESC`, `APP_MODULE_ID`, `COMPUTE_HOSTID`, `CREATION_TIME`, `DEFAULT_CPU_COUNT`, `DEFAULT_NODE_COUNT`, `DEFAULT_QUEUE_NAME`, `DEFAULT_WALLTIME`, `EDITABLE_BY_USER`, `ENV_MODULE_LOAD_CMD`, `EXECUTABLE_PATH`, `GATEWAY_ID`, `LIB_APPEND_PATHS_JSON`, `LIB_PREPEND_PATHS_JSON`, `MODULE_LOAD_CMDS_JSON`, `parallelism`, `POSTJOB_CMDS_JSON`, `PREJOB_CMDS_JSON`, `SET_ENVIRONMENT_JSON`, `UPDATE_TIME`) VALUES ('slurm_Echo_da1c0c0f-5b47-4da2-a4fb-b6a6792b910d','Echo deployment on the dev SLURM cluster','Echo_da1c0c0f-5b47-4da2-a4fb-b6a6792b910d','slurm_6afa587c-d5c0-42e6-a998-f8478ad8e404','2026-06-12 19:41:16.458000',0,0,'',0,0x00,NULL,'/usr/local/bin/echo_sleep','default',NULL,NULL,NULL,'SERIAL',NULL,NULL,NULL,'2026-06-12 19:41:16.458000'); COMMIT; SET AUTOCOMMIT=@OLD_AUTOCOMMIT; SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, @@AUTOCOMMIT=0; diff --git a/conf/slurm/Dockerfile b/conf/slurm/Dockerfile index ff45725e79..822eadd1fb 100644 --- a/conf/slurm/Dockerfile +++ b/conf/slurm/Dockerfile @@ -53,10 +53,13 @@ COPY slurm.conf /etc/slurm/slurm.conf COPY cgroup.conf /etc/slurm/cgroup.conf COPY slurmdbd.conf /etc/slurm/slurmdbd.conf COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh +# Echo application wrapper (sleep then echo ) — the Echo deployment's +# EXECUTABLE_PATH in conf/db/seed.sql. Baked into the image so it's on every compute node. +COPY echo_sleep /usr/local/bin/echo_sleep # slurmdbd refuses to start unless slurmdbd.conf is 0600 and owned by SlurmUser. RUN chown slurm:slurm /etc/slurm/slurmdbd.conf && chmod 0600 /etc/slurm/slurmdbd.conf && \ - chmod 0755 /usr/local/bin/docker-entrypoint.sh + chmod 0755 /usr/local/bin/docker-entrypoint.sh /usr/local/bin/echo_sleep ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] CMD ["slurmctld"] diff --git a/conf/slurm/echo_sleep b/conf/slurm/echo_sleep new file mode 100644 index 0000000000..30c0171367 --- /dev/null +++ b/conf/slurm/echo_sleep @@ -0,0 +1,12 @@ +#!/bin/sh +# echo_sleep +# +# Echo application wrapper for the dev SLURM cluster: sleeps for +# (so an experiment runs long enough to observe its progress through the pipeline) +# and then echoes the message to stdout. Wired up as the Echo application's +# EXECUTABLE_PATH in conf/db/seed.sql, with the duration passed as the first argument +# (Experiment_Duration input) and the message as the second (Input_to_Echo input). +duration="$1" +shift +sleep "$duration" +echo "$@"