Open RussTreadon-NOAA opened 1 week ago
Thanks @RussTreadon-NOAA
The detection of the machine based on filesystem in detect_machine.sh
is to aid on compute nodes. On compute nodes hostname -f
does not always return the same string as on a login node.
Using socket
is fine in hosts.py
.
Would you have a solution for detect_machine.sh
part of the script when executed on the compute node?
Thank you @aerorahul for the information. I was unaware of this fact. I do not have a solution for the compute node section of detect_machine.sh
We may be able to grep /etc/fstab
(or the output of df
) for orion-nfs
or hercules-nfs
to discern between the two machines.
Better yet:
[[ $(findmnt -n -o SOURCE /home) =~ "hercules" ]] && echo "Hercules"
[[ $(findmnt -n -o SOURCE /home) =~ "orion" ]] && echo "Orion"
What is wrong?
Following the Orion Rocky 9 upgrade,
workflow/hosts.py
returnsmachine-HERCULES
What should have happened?
workflow/hosts.py
should returnmachine=ORION
when executed on Orion.What machines are impacted?
Orion
Steps to reproduce
develop
on OrionHost()
def main(): host = Host() print(f" ") print(f"Host() is {host}") print(f" ")
if name == 'main':
orion-login-4:/work2/noaa/da/rtreadon/git/global-workflow/develop/workflow$ ./test.py
machine is HERCULES info is {'BASE_GIT': '/work/noaa/global/glopara/git_rocky9', 'DMPDIR': '/work/noaa/rstprod/dump', 'BASE_CPLIC': '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs', 'PACKAGEROOT': '/work/noaa/global/glopara/nwpara', 'COMINsyn': '/work/noaa/global/glopara/com/gfs/prod/syndat', 'HOMEDIR': '/work/noaa/global/${USER}', 'STMP': '/work/noaa/stmp/${USER}/HERCULES', 'PTMP': '/work/noaa/stmp/${USER}/HERCULES', 'NOSCRUB': '$HOMEDIR', 'SCHEDULER': 'slurm', 'ACCOUNT': 'fv3-cpu', 'ACCOUNT_SERVICE': 'fv3-cpu', 'QUEUE': 'batch', 'QUEUE_SERVICE': 'batch', 'PARTITION_BATCH': 'hercules', 'PARTITION_SERVICE': 'service', 'RESERVATION': '', 'CHGRP_RSTPROD': 'YES', 'CHGRP_CMD': 'chgrp rstprod', 'HPSSARCH': 'NO', 'HPSS_PROJECT': 'emc-global', 'LOCALARCH': 'NO', 'ATARDIR': '${NOSCRUB}/archive_rotdir/${PSLOT}', 'MAKE_NSSTBUFR': 'NO', 'MAKE_ACFTBUFR': 'NO', 'SUPPORTED_RESOLUTIONS': ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'], 'COMINecmwf': '/work/noaa/global/glopara/data/external_gempak/ecmwf', 'COMINnam': '/work/noaa/global/glopara/data/external_gempak/nam', 'COMINukmet': '/work/noaa/global/glopara/data/external_gempak/ukmet'} scheduler is slurm
elif [[ -d /work ]]; then
We are on MSU Orion or Hercules
if [[ -d /apps/other ]]; then
We are on Hercules
else MACHINE_ID=orion fi
Orion-login-[1-4].HPC.MsState.Edu) MACHINE_ID=orion ;; ### orion1-4
[Hh]ercules-login-[1-4].[Hh][Pp][Cc].[Mm]s[Ss]tate.[Ee]du) MACHINE_ID=hercules ;; ### hercules1-4
!/usr/bin/env python3
import os import socket import platform from hosts import Host
def main(): host = Host() print(f" ") print(f"Host() is {host}") print(f" ")
if name == 'main':
machine is HERCULES info is {'BASE_GIT': '/work/noaa/global/glopara/git_rocky9', 'DMPDIR': '/work/noaa/rstprod/dump', 'BASE_CPLIC': '/work/noaa/global/glopara/data/ICSDIR/prototype_ICs', 'PACKAGEROOT': '/work/noaa/global/glopara/nwpara', 'COMINsyn': '/work/noaa/global/glopara/com/gfs/prod/syndat', 'HOMEDIR': '/work/noaa/global/${USER}', 'STMP': '/work/noaa/stmp/${USER}/HERCULES', 'PTMP': '/work/noaa/stmp/${USER}/HERCULES', 'NOSCRUB': '$HOMEDIR', 'SCHEDULER': 'slurm', 'ACCOUNT': 'fv3-cpu', 'ACCOUNT_SERVICE': 'fv3-cpu', 'QUEUE': 'batch', 'QUEUE_SERVICE': 'batch', 'PARTITION_BATCH': 'hercules', 'PARTITION_SERVICE': 'service', 'RESERVATION': '', 'CHGRP_RSTPROD': 'YES', 'CHGRP_CMD': 'chgrp rstprod', 'HPSSARCH': 'NO', 'HPSS_PROJECT': 'emc-global', 'LOCALARCH': 'NO', 'ATARDIR': '${NOSCRUB}/archive_rotdir/${PSLOT}', 'MAKE_NSSTBUFR': 'NO', 'MAKE_ACFTBUFR': 'NO', 'SUPPORTED_RESOLUTIONS': ['C1152', 'C768', 'C384', 'C192', 'C96', 'C48'], 'COMINecmwf': '/work/noaa/global/glopara/data/external_gempak/ecmwf', 'COMINnam': '/work/noaa/global/glopara/data/external_gempak/nam', 'COMINukmet': '/work/noaa/global/glopara/data/external_gempak/ukmet'} scheduler is slurm
Host() is <hosts.Host object at 0x7f4107a45fd0>
socket.gethostname() is orion-login-4.hpc.msstate.edu
platform.node() is orion-login-4.hpc.msstate.edu