File indexing completed on 2026-04-08 07:59:56
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 IDDS_SERVICE=$1
0012
0013 source /etc/profile.d/conda.sh
0014 conda activate /opt/idds;
0015
0016 export IDDS_HOME=/opt/idds
0017 export ALEMBIC_CONFIG=/opt/idds/config/idds/alembic.ini
0018 export IDDS_CONFIG=/opt/idds/etc/idds/idds.cfg
0019
0020 if [ -f /etc/grid-security/hostkey.pem ]; then
0021 echo "host certificate is already created."
0022 chmod 600 /etc/grid-security/hostkey.pem
0023 elif [ -f /opt/idds/certs/hostkey.pem ]; then
0024 echo "mount /opt/idds/certs/hostkey.pem to /etc/grid-security/hostkey.pem"
0025 ln -fs /opt/idds/certs/hostkey.pem /etc/grid-security/hostkey.pem
0026 ln -fs /opt/idds/certs/hostcert.pem /etc/grid-security/hostcert.pem
0027 chmod 600 /etc/grid-security/hostkey.pem
0028 fi
0029
0030 if [ ! -f /etc/grid-security/chain.pem ]; then
0031 if [ -f /opt/idds/certs/chain.pem ]; then
0032 ln -fs /opt/idds/certs/chain.pem /etc/grid-security/chain.pem
0033 elif [ -f /etc/grid-security/hostcert.pem ]; then
0034 ln -fs /etc/grid-security/hostcert.pem /etc/grid-security/chain.pem
0035 fi
0036 fi
0037
0038 if [ -f /opt/idds/config/idds/idds.cfg ]; then
0039 echo "idds.cfg already mounted."
0040 else
0041 echo "idds.cfg not found. will generate one."
0042 python3 /opt/idds/tools/env/merge_idds_configs.py \
0043 -s /opt/idds/config_default/idds.cfg $IDDS_OVERRIDE_IDDS_CONFIGS \
0044 --use-env \
0045 --prefix IDDS_CFG_IDDS \
0046 -d /opt/idds/config/idds/idds.cfg
0047 python3 /opt/idds/tools/env/merge_configmap.py \
0048 -s /opt/idds/configmap/idds_configmap.json \
0049 -d /opt/idds/config/idds/idds.cfg
0050 fi
0051
0052 if [ -f /opt/idds/config/idds/alembic.ini ]; then
0053 echo "alembic.ini already mounted."
0054 else
0055 echo "alembic.ini not found. will generate one."
0056 cp /opt/idds/config_default/alembic.ini /opt/idds/config/idds/alembic.ini
0057 python3 /opt/idds/tools/env/merge_configmap.py \
0058 -s /opt/idds/configmap/idds_configmap.json \
0059 -d /opt/idds/config/idds/alembic.ini
0060 fi
0061
0062 if [ -f /opt/idds/config/idds/auth.cfg ]; then
0063 echo "auth.cfg already mounted."
0064 else
0065 echo "auth.cfg not found. will generate one."
0066 python3 /opt/idds/tools/env/merge_idds_configs.py \
0067 -s /opt/idds/config_default/auth.cfg $IDDS_OVERRIDE_AUTH_CONFIGS \
0068 --use-env \
0069 --prefix IDDS_CFG_AUTH \
0070 -d /opt/idds/config/idds/auth.cfg
0071
0072 if [ -f /opt/idds/configmap/auth.cfg.json ]; then
0073 python3 /opt/idds/tools/env/merge_configmap.py \
0074 -s /opt/idds/configmap/auth.cfg.json \
0075 -d /opt/idds/config/idds/auth.cfg
0076 fi
0077
0078 python3 /opt/idds/tools/env/merge_configmap.py \
0079 -s /opt/idds/configmap/idds_configmap.json \
0080 -d /opt/idds/config/idds/auth.cfg
0081 fi
0082
0083 if [ -f /opt/idds/config/idds/gacl ]; then
0084 echo "gacl already mounted."
0085 else
0086 echo "gacl not found. will generate one."
0087 ln -s /opt/idds/config_default/gacl /opt/idds/config/idds/gacl
0088 fi
0089
0090 if [ -f /opt/idds/config/panda.cfg ]; then
0091 echo "panda.cfg already mounted."
0092 else
0093 echo "panda.cfg not found. will generate one."
0094 python3 /opt/idds/tools/env/merge_idds_configs.py \
0095 -s /opt/idds/config_default/panda.cfg $IDDS_OVERRIDE_PANDA_CONFIGS \
0096 --use-env \
0097 --prefix IDDS_CFG_PANDA \
0098 -d /opt/idds/config/panda.cfg
0099 python3 /opt/idds/tools/env/merge_configmap.py \
0100 -s /opt/idds/configmap/idds_configmap.json \
0101 -d /opt/idds/config/panda.cfg
0102 fi
0103
0104 if [ -f /opt/idds/config/rucio.cfg ]; then
0105 echo "rucio.cfg already mounted."
0106 else
0107 echo "rucio.cfg not found. will generate one."
0108 python3 /opt/idds/tools/env/merge_idds_configs.py \
0109 -s /opt/idds/config_default/rucio.cfg $IDDS_OVERRIDE_RUCIO_CONFIGS \
0110 --use-env \
0111 --prefix IDDS_CFG_RUCIO \
0112 -d /opt/idds/config/rucio.cfg
0113 python3 /opt/idds/tools/env/merge_configmap.py \
0114 -s /opt/idds/configmap/idds_configmap.json \
0115 -d /opt/idds/config/rucio.cfg
0116 fi
0117
0118
0119 echo "generate oidc token from environment PANDA_AUTH_ID_TOKEN if it exists."
0120 python3 /opt/idds/tools/env/merge_configmap.py --create_oidc_token
0121
0122 if [ -f /opt/idds/config/idds/httpd-idds-443-py311-al9.conf ]; then
0123 echo "httpd conf already mounted."
0124 else
0125 echo "httpd conf not found. will use the default one."
0126 if [ -f /opt/idds/config_default/httpd-idds-443-py311-al9.conf ]; then
0127 cp /opt/idds/config_default/httpd-idds-443-py311-al9.conf /opt/idds/config/idds/httpd-idds-443-py311-al9.conf
0128 else
0129 echo "httpd default conf not found. will generate from template and use the default one."
0130
0131
0132 python3 /opt/idds/tools/env/setup_idds_path.py
0133
0134 if [ -f /opt/idds/etc/idds/rest/httpd-idds-443-py39-cc7.conf.install_template ]; then
0135 cp /opt/idds/etc/idds/rest/httpd-idds-443-py39-cc7.conf.install_template \
0136 /opt/idds/config/idds/httpd-idds-443-py39-cc7.conf
0137 fi
0138 fi
0139 fi
0140
0141 if [ -f /opt/idds/config/idds/supervisord_idds.ini ]; then
0142 echo "supervisord conf already mounted."
0143 else
0144 echo "supervisord conf not found. will use the default one."
0145 cp /opt/idds/config_default/supervisord_idds.ini /opt/idds/config/idds/supervisord_idds.ini
0146
0147 cp /opt/idds/config_default/supervisord_idds_clerk.ini /opt/idds/config/idds/supervisord_idds_clerk.ini
0148 cp /opt/idds/config_default/supervisord_idds_transformer.ini /opt/idds/config/idds/supervisord_idds_transformer.ini
0149 cp /opt/idds/config_default/supervisord_idds_submitter.ini /opt/idds/config/idds/supervisord_idds_submitter.ini
0150 cp /opt/idds/config_default/supervisord_idds_poller.ini /opt/idds/config/idds/supervisord_idds_poller.ini
0151 cp /opt/idds/config_default/supervisord_idds_receiver.ini /opt/idds/config/idds/supervisord_idds_receiver.ini
0152 cp /opt/idds/config_default/supervisord_idds_trigger.ini /opt/idds/config/idds/supervisord_idds_trigger.ini
0153 cp /opt/idds/config_default/supervisord_idds_finisher.ini /opt/idds/config/idds/supervisord_idds_finisher.ini
0154
0155 cp /opt/idds/config_default/supervisord_httpd.ini /opt/idds/config/idds/supervisord_httpd.ini
0156
0157
0158 echo "setup log rotation"
0159 cp /opt/idds/config_default/supervisord_logrotate.ini /opt/idds/config/idds/supervisord_logrotate.ini
0160 cp /opt/idds/config_default/logrotate_idds /opt/idds/config/idds/logrotate_idds
0161 cp /opt/idds/config_default/logrotate_daemon /opt/idds/config/idds/logrotate_daemon
0162 chmod +x /opt/idds/config/idds/logrotate_daemon
0163 chown root /opt/idds/config/idds/logrotate_idds
0164
0165 echo "setup health monitor"
0166 cp /opt/idds/config_default/supervisord_healthmonitor.ini /opt/idds/config/idds/
0167 cp /opt/idds/config_default/healthmonitor_daemon /opt/idds/config/idds/
0168 cp /opt/idds/config_default/idds_health_check.py /opt/idds/config/idds/
0169 chmod +x /opt/idds/config/idds/healthmonitor_daemon
0170 chmod +x /opt/idds/config/idds/idds_health_check.py
0171 fi
0172
0173 if [ -f /etc/grid-security/hostkey.pem ]; then
0174 echo "Host certificate already mounted."
0175 else
0176 echo "Host certificate not found. will generate a self-signed one."
0177 openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
0178 -subj "/C=US/DC=IDDS/OU=computers/CN=$(hostname -f)" \
0179 -keyout /opt/idds/config/hostkey.pem \
0180 -out /opt/idds/config/hostcert.pem
0181 ln -fs /opt/idds/config/hostcert.pem /etc/grid-security/hostcert.pem
0182 ln -fs /opt/idds/config/hostkey.pem /etc/grid-security/hostkey.pem
0183 chmod 600 /etc/grid-security/hostkey.pem
0184 fi
0185
0186 cp /opt/idds/config_default/httpd_daemon.sh /opt/idds/config/idds/httpd_daemon.sh
0187 chmod a+rx /opt/idds/config/idds/httpd_daemon.sh
0188
0189 mkdir -p /opt/idds/config/.panda/
0190
0191 if [ ! -z "$IDDS_PRINT_CFG" ]; then
0192 echo "=================== /opt/idds/etc/idds.cfg ============================"
0193 cat /opt/idds/etc/idds.cfg
0194 echo ""
0195 echo "=================== /opt/idds/etc/idds/auth/auth.cfg ============================"
0196 cat /opt/idds/etc/idds/auth/auth.cfg
0197 echo ""
0198 echo "=================== /opt/idds/etc/idds/rest/gacl ============================"
0199 cat /opt/idds/etc/idds/rest/gacl
0200 echo ""
0201 echo "=================== /etc/httpd/conf.d/httpd-idds-443-py311-al9.conf ============================"
0202 cat /etc/httpd/conf.d/httpd-idds-443-py311-al9.conf
0203 echo ""
0204 echo "=================== /opt/idds/config/idds/supervisord_idds.ini ============================"
0205 cat /opt/idds/config/idds/supervisord_idds.ini
0206 echo ""
0207 echo "=================== /opt/idds/etc/panda/panda.cfg ============================"
0208 cat /opt/idds/etc/panda/panda.cfg
0209 echo ""
0210 echo "=================== /opt/idds/etc/rucio.cfg ============================"
0211 cat /opt/idds/etc/rucio.cfg
0212 echo ""
0213 fi
0214
0215
0216 if [[ -z "${IDDS_SERVER_CONF_MIN_WORKERS}" ]]; then
0217 export IDDS_SERVER_CONF_MIN_WORKERS=32
0218 fi
0219
0220
0221 if [[ -z "${IDDS_SERVER_CONF_MAX_WORKERS}" ]]; then
0222 export IDDS_SERVER_CONF_MAX_WORKERS=512
0223 fi
0224
0225
0226 if [[ -z "${IDDS_SERVER_CONF_NUM_WSGI}" ]]; then
0227 export IDDS_SERVER_CONF_NUM_WSGI=32
0228 fi
0229
0230
0231 if [[ -z "${IDDS_SERVER_CONF_MAX_BACKLOG}" ]]; then
0232 export IDDS_SERVER_CONF_MAX_BACKLOG=511
0233 fi
0234
0235
0236 if [[ -z "${IDDS_SERVER_CONF_NUM_WSGI_THREAD}" ]]; then
0237 export IDDS_SERVER_CONF_NUM_WSGI_THREAD=32
0238 fi
0239
0240
0241 python /opt/idds/tools/env/create_database.py
0242
0243 alembic upgrade heads
0244
0245
0246 python /opt/idds/tools/env/config_monitor.py -s ${IDDS_HOME}/monitor/data/conf.js.template -d ${IDDS_HOME}/monitor/data/conf.js --host ${IDDS_REST_HOST}
0247
0248 if ! [ -f /opt/idds/config/.token ]; then
0249 echo "/opt/idds/config/.token does not exist."
0250 if [ -f /opt/idds/configmap/idds2panda_token ]; then
0251 ln -s /opt/idds/configmap/idds2panda_token /opt/idds/config/.token
0252 fi
0253 fi
0254
0255
0256 cp /opt/idds/config_default/vomsprox-renew /opt/idds/config/vomsprox-renew
0257 chmod +x /opt/idds/config/vomsprox-renew
0258 if [ -d "/opt/idds/sandbox/vomses" ] && [ ! -e "/etc/vomses" ]; then
0259 ln -s /opt/idds/sandbox/vomses /etc/vomses
0260 fi
0261
0262
0263 cronExec=/opt/idds/cronExec
0264 cat <<EOT >> ${cronExec}
0265 while true; do /usr/sbin/fetch-crl; sleep 36000; done &
0266 while true; do /opt/idds/config/vomsprox-renew; sleep 50000; done &
0267 EOT
0268 chmod +x ${cronExec}
0269 bash ${cronExec}
0270
0271
0272 mkdir -p /var/log/idds/redis
0273 if [ ! -h /var/log/redis ]; then
0274 ln -s /var/log/idds/redis /var/log/redis
0275 fi
0276 if [ ! -h /var/lib/redis ]; then
0277 ln -s /var/log/idds/redis /var/lib/redis
0278 fi
0279 /usr/bin/redis-server /etc/redis/redis.conf --supervised systemd &
0280
0281
0282 cp /opt/idds/config_default/supervisord_nats.ini /opt/idds/config/idds/supervisord_nats.ini
0283 cp /opt/idds/config_default/nats_daemon.sh /opt/idds/config/idds/nats_daemon.sh
0284 chmod +x /opt/idds/config/idds/nats_daemon.sh
0285 if [ ! -z "$NATS_TOKEN" ]; then
0286
0287 sed -i "s|\${NATS_TOKEN}|$NATS_TOKEN|g" /opt/idds/config/idds/nats_daemon.sh
0288 fi
0289
0290
0291 echo "clean heartbeats"
0292 python /opt/idds/tools/env/clean_heartbeat.py
0293
0294 if [ "${IDDS_SERVICE}" == "rest" ]; then
0295 echo "starting iDDS ${IDDS_SERVICE} service"
0296
0297
0298
0299
0300 /usr/bin/supervisord -c /etc/supervisord.conf
0301 elif [ "${IDDS_SERVICE}" == "daemon" ]; then
0302 echo "starting iDDS ${IDDS_SERVICE} service"
0303
0304
0305
0306 /usr/bin/supervisord -c /etc/supervisord.conf
0307 elif [ "${IDDS_SERVICE}" == "all" ]; then
0308 echo "starting iDDS rest service"
0309
0310
0311 echo "starting iDDS daemon service"
0312 /usr/bin/supervisord -c /etc/supervisord.conf
0313 else
0314 exec "$@"
0315 fi
0316
0317
0318
0319
0320
0321
0322 trap : TERM INT; sleep infinity & wait