From 91be0ee225bd1da0f895d07638c8639c08244bb8 Mon Sep 17 00:00:00 2001 From: ndp-opendap Date: Tue, 24 Mar 2026 10:01:53 -0700 Subject: [PATCH 1/2] Cleanup in prgress --- hyraxctl | 494 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 255 insertions(+), 239 deletions(-) diff --git a/hyraxctl b/hyraxctl index 6632406..08766fa 100755 --- a/hyraxctl +++ b/hyraxctl @@ -15,8 +15,8 @@ # A handy logging function. # function loggy() { - if test -n "${log_file}"; then - echo "$@" | awk '{ print "# "$0;}' | tee -a "${log_file}" >&2 + if test -n "$log_file"; then + echo "$@" | awk '{ print "# "$0;}' | tee -a "$log_file" >&2 else echo "$@" | awk '{ print "# "$0;}' >&2 fi @@ -26,26 +26,26 @@ export H1="##################################################################### export H2="- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" export H3="- - - - - - - - - - - - - - - - - - - - - - -" -export HYRAX_NAME=${HYRAX_NAME:-"hyrax"} -export HTTPD_NAME=${HTTPD_NAME:-"httpd"} -export HYRAX_HOME=${HYRAX_HOME:-"/home/ubuntu/hyrax"} -export DATA_MOUNT=${DATA_MOUNT:-"/usr/share/hyrax"} -export HYRAX_IMAGE=${HYRAX_IMAGE:-"opendap/hyrax:snapshot-el8"} +export HYRAX_NAME="${HYRAX_NAME:-"hyrax"}" +export HTTPD_NAME="${HTTPD_NAME:-"httpd"}" +export HYRAX_HOME="${HYRAX_HOME:-"/home/ubuntu/hyrax"}" +export DATA_MOUNT="${DATA_MOUNT:-"/usr/share/hyrax"}" +export HYRAX_IMAGE="${HYRAX_IMAGE:-"opendap/hyrax:snapshot-el8"}" export HTTPD_IMAGE_DEFAULT="httpd:latest" # As of 11/16/203 we rolled back to this because of some issue we don't # understand in httpd:latest - ndp 11/16/2023 export HTTPD_IMAGE_DEFAULT="httpd:2.4.56-bullseye" -export HTTPD_IMAGE=${HTTPD_IMAGE:-"$HTTPD_IMAGE_DEFAULT"} +export HTTPD_IMAGE="${HTTPD_IMAGE:-"$HTTPD_IMAGE_DEFAULT"}" -export APACHE_HTTPD_HOME=${APACHE_HTTPD_HOME:-"/usr/local/apache2"} +export APACHE_HTTPD_HOME="${APACHE_HTTPD_HOME:-"/usr/local/apache2"}" export HYRAX_NETWORK="${HYRAX_NETWORK:-"hyrax-net"}" export HYRAX_DEPLOYMENT="http://test.opendap.org" -export THREDDS_CATALOG_ROOT=${THREDDS_CATALOG_ROOT:-""} +export THREDDS_CATALOG_ROOT="${THREDDS_CATALOG_ROOT:-""}" -export HYRAX_MEMORY=${HYRAX_MEMORY:-"24g"} +export HYRAX_MEMORY="${HYRAX_MEMORY:-"24g"}" export RPM_BUILD_REPO="s3://opendap.travis.build" export bes_cores_dir @@ -53,6 +53,10 @@ export tomcat_server_xml export run_privileged export log_file +################################################################################ +# +# get_recent_docker_image_tag_names() +# # DockerHub Tag Record 01/28/25 # { # "creator": 13215106, @@ -90,8 +94,10 @@ export log_file function get_recent_docker_image_tag_names() { local prolog="get_recent_docker_image_tag_names() -" loggy "$prolog BEGIN" + local dockerhub_ns="${1:-"opendap"}" loggy "$prolog dockerhub_ns: $dockerhub_ns" + local dockerhub_repo="${2:-"hyrax"}" loggy "$prolog dockerhub_repo: $dockerhub_repo" @@ -113,37 +119,37 @@ function get_recent_docker_image_tag_names() { # function show_config() { local prolog="show_config() -" - loggy "${prolog} ${H2}" - loggy "${prolog} " - loggy "${prolog} PRIMARY: " - loggy "${prolog}" - loggy "${prolog} HYRAX_NAME: ${HYRAX_NAME}" - loggy "${prolog} HTTPD_NAME: ${HTTPD_NAME}" - loggy "${prolog} HYRAX_HOME: ${HYRAX_HOME}" - loggy "${prolog} DATA_MOUNT: ${DATA_MOUNT}" - loggy "${prolog} HYRAX_IMAGE: ${HYRAX_IMAGE}" - loggy "${prolog} HTTPD_IMAGE: ${HTTPD_IMAGE}" - loggy "${prolog} APACHE_HTTPD_HOME: ${APACHE_HTTPD_HOME}" - loggy "${prolog} HYRAX_NETWORK: ${HYRAX_NETWORK}" - loggy "${prolog} HYRAX_DEPLOYMENT: ${HYRAX_DEPLOYMENT}" - loggy "${prolog} HYRAX_MEMORY: ${HYRAX_MEMORY}" - loggy "${prolog}" - loggy "${prolog} DERIVED: " - loggy "${prolog}" - loggy "${prolog} log_dir: ${log_dir}" - loggy "${prolog} data_dir: ${data_dir}" - loggy "${prolog} bes_site_conf_file: ${bes_site_conf_file}" - loggy "${prolog} bes_creds_conf_file: ${bes_creds_conf_file}" - loggy "${prolog} bes_log_dir: ${bes_log_dir}" - loggy "${prolog} bes_cores_dir: ${bes_cores_dir}" - loggy "${prolog} olfs_conf_dir: ${olfs_conf_dir}" - loggy "${prolog} tomcat_server_xml: ${tomcat_server_xml}" - loggy "${prolog} tomcat_server_xml_volume: ${tomcat_server_xml_volume}" - loggy "${prolog} httpd_conf: ${httpd_conf}" - loggy "${prolog} htdocs_content: ${htdocs_content}" - loggy "${prolog} expires_sh: ${expires_sh}" - loggy "${prolog} ncwms: ${ncwms}" - loggy "${prolog}" + loggy "$prolog $H2" + loggy "$prolog " + loggy "$prolog PRIMARY: " + loggy "$prolog" + loggy "$prolog HYRAX_NAME: $HYRAX_NAME" + loggy "$prolog HTTPD_NAME: $HTTPD_NAME" + loggy "$prolog HYRAX_HOME: $HYRAX_HOME" + loggy "$prolog DATA_MOUNT: $DATA_MOUNT" + loggy "$prolog HYRAX_IMAGE: $HYRAX_IMAGE" + loggy "$prolog HTTPD_IMAGE: $HTTPD_IMAGE" + loggy "$prolog APACHE_HTTPD_HOME: $APACHE_HTTPD_HOME" + loggy "$prolog HYRAX_NETWORK: $HYRAX_NETWORK" + loggy "$prolog HYRAX_DEPLOYMENT: $HYRAX_DEPLOYMENT" + loggy "$prolog HYRAX_MEMORY: $HYRAX_MEMORY" + loggy "$prolog" + loggy "$prolog DERIVED: " + loggy "$prolog" + loggy "$prolog log_dir: $log_dir" + loggy "$prolog data_dir: $data_dir" + loggy "$prolog bes_site_conf_file: $bes_site_conf_file" + loggy "$prolog bes_creds_conf_file: $bes_creds_conf_file" + loggy "$prolog bes_log_dir: $bes_log_dir" + loggy "$prolog bes_cores_dir: $bes_cores_dir" + loggy "$prolog olfs_conf_dir: $olfs_conf_dir" + loggy "$prolog tomcat_server_xml: $tomcat_server_xml" + loggy "$prolog tomcat_server_xml_volume: $tomcat_server_xml_volume" + loggy "$prolog httpd_conf: $httpd_conf" + loggy "$prolog htdocs_content: $htdocs_content" + loggy "$prolog expires_sh: $expires_sh" + loggy "$prolog ncwms: $ncwms" + loggy "$prolog" } ################################################################################ # @@ -152,12 +158,12 @@ function show_config() { function config_tomcat_server() { local hyrax_home="$1" # A Tomcat server.xml file that enables AJP pn 8009 - tomcat_server_xml="${hyrax_home}/tomcat/server.xml" + tomcat_server_xml="$hyrax_home/tomcat/server.xml" # Creates the tomcat server.xml volume mount key pair for the Docker run command. export tomcat_server_xml_volume="" - if test -n "${tomcat_server_xml}"; then - export tomcat_server_xml_volume="--volume ${tomcat_server_xml}:/tomcat/conf/server.xml" + if test -n "$tomcat_server_xml"; then + export tomcat_server_xml_volume="--volume $tomcat_server_xml:/tomcat/conf/server.xml" fi } @@ -169,68 +175,68 @@ function config_tomcat_server() { # shellcheck disable=SC2120 function config_test_opendap_org() { local prolog="config_test_opendap_org() -" - local hyrax_home=${1:-"${HYRAX_HOME}"} - local data_dir_in=${2:-"${DATA_MOUNT}"} + local hyrax_home=${1:-"$HYRAX_HOME"} + local data_dir_in=${2:-"$DATA_MOUNT"} - loggy "${prolog} ${H1}" - loggy "${prolog} BEGIN" - loggy "${prolog} " - loggy "${prolog} Using hyrax_home: ${hyrax_home}" + loggy "$prolog $H1" + loggy "$prolog BEGIN" + loggy "$prolog " + loggy "$prolog Using hyrax_home: $hyrax_home" # Location of the log directories for bes, olfs**, and tomcat - export log_dir="${hyrax_home}/log" + export log_dir="$hyrax_home/log" # Set up the location of the data directory for Hyrax. - # If one is not provided the default ${hyrax_home}/data + # If one is not provided the default "$hyrax_home/data" # will be used. - if test -n "${data_dir_in}"; then - export data_dir="${data_dir_in}" + if test -n "$data_dir_in"; then + export data_dir="$data_dir_in" else - export data_dir="${hyrax_home}/data" - loggy "${prolog} Using default data_dir value of: ${data_dir}" + export data_dir="$hyrax_home/data" + loggy "$prolog Using default data_dir value of: $data_dir" fi # The location of the OLFS persistent configuration # to be injected into the Hyrax container at /etc/olfs # # **If this is used then the OLFS logs will be written - # to ${hyrax_home}/olfs and the log directory - # ${hyrax_home}/log/olfs will be ignored. - export olfs_conf_dir="${hyrax_home}/olfs" + # to "$hyrax_home/olfs" and the log directory + # "$hyrax_home/log/olfs" will be ignored. + export olfs_conf_dir="$hyrax_home/olfs" - export bes_site_conf_file="${hyrax_home}/bes/site.conf" + export bes_site_conf_file="$hyrax_home/bes/site.conf" # Credentials for service-chain - export bes_creds_conf_file="${hyrax_home}/bes/creds.conf" + export bes_creds_conf_file="$hyrax_home/bes/creds.conf" - export bes_log_dir="${log_dir}/bes" - bes_cores_dir="${hyrax_home}/bes/cores" + export bes_log_dir="$log_dir/bes" + bes_cores_dir="$hyrax_home/bes/cores" - config_tomcat_server "${hyrax_home}" + config_tomcat_server "$hyrax_home" # # Variables for configuring Docker launch of httpd # # We inject a modified httpd.conf file - export httpd_conf="${hyrax_home}/httpd/httpd.conf" + export httpd_conf="$hyrax_home/httpd/httpd.conf" # Our own collection of things that need to be served via http, # possibly utilizing range get capabilities - export htdocs_content="${hyrax_home}/httpd/htdocs" + export htdocs_content="$hyrax_home/httpd/htdocs" # Q: Is expires.sh still in use? Can we drop it? # A: Yes it's still in use by libdap4 tests. # Q: Can we drop it? # A: No we can't without fixing various things - export expires_sh="${hyrax_home}/httpd/cgi-bin/expires.sh" + export expires_sh="$hyrax_home/httpd/cgi-bin/expires.sh" # ncWMS host name to be injected into the ncWMS configuration. - export ncwms="${HYRAX_DEPLOYMENT}" + export ncwms="$HYRAX_DEPLOYMENT" show_config - loggy "${prolog} END" + loggy "$prolog END" } @@ -250,13 +256,12 @@ function config_ndp() { hyrax_home="${1:-$HYRAX_HOME}" loggy "hyrax_home: $hyrax_home" local pfix - pfix=${prefix:-"/Users/ndp/OPeNDAP/hyrax/build"} - export data_dir="${pfix}/share/hyrax" + prefix="${prefix:-"/Users/ndp/OPeNDAP/hyrax/build"}" + export data_dir="$prefix/share/hyrax" loggy "$prolog $H1" loggy "$prolog BEGIN" loggy "$prolog " - prefix=${prefix:-"/Users/ndp/OPeNDAP/hyrax/build"} export ncwms="http://localhost:8080" export log_dir="$hyrax_home/log" export bes_log_dir="$log_dir/bes" @@ -275,7 +280,7 @@ function config_ndp() { show_config - loggy "${prolog} END" + loggy "$prolog END" } ################################################################################ @@ -291,33 +296,33 @@ function config_rocky_8_local() { function config_rocky_8() { local prolog="config_rocky_8() -" - loggy "${prolog} ${H1}" - loggy "${prolog} BEGIN" - loggy "${prolog} " + loggy "$prolog $H1" + loggy "$prolog BEGIN" + loggy "$prolog " local hyrax_home hyrax_home="${1:-$HYRAX_HOME}" local pfix - pfix=${prefix:-"/home/rocky/hyrax/build"} - export data_dir="${prefix}/share/hyrax" + prefix=${prefix:-"/home/rocky/hyrax/build"} + export data_dir="$prefix/share/hyrax" export ncwms="http://localhost:8080" - export log_dir="${hyrax_home}/log" - export bes_log_dir="${log_dir}/bes" - export bes_cores_dir="${hyrax_home}/bes/cores" + export log_dir="$hyrax_home/log" + export bes_log_dir="$log_dir/bes" + export bes_cores_dir="$hyrax_home/bes/cores" export olfs_conf_dir="/etc/olfs" - export bes_site_conf_file="${hyrax_home}/bes/site.conf" + export bes_site_conf_file="$hyrax_home/bes/site.conf" - export httpd_conf="${hyrax_home}/httpd/httpd.conf" - export htdocs_content="${hyrax_home}/httpd/htdocs" - export expires_sh="${hyrax_home}/httpd/cgi-bin/expires.sh" + export httpd_conf="$hyrax_home/httpd/httpd.conf" + export htdocs_content="$hyrax_home/httpd/htdocs" + export expires_sh="$hyrax_home/httpd/cgi-bin/expires.sh" - config_tomcat_server "${hyrax_home}" + config_tomcat_server "$hyrax_home" show_config - loggy "${prolog} END" + loggy "$prolog END" } @@ -332,16 +337,16 @@ function make_network_as_needed() { # If it's not found, create it. # local status= - docker network inspect "${HYRAX_NETWORK}" >/dev/null 2>&1 + docker network inspect "$HYRAX_NETWORK" >/dev/null 2>&1 status=$? if test $status -ne 0; then - loggy "${prolog} No Docker network by the name of ${HYRAX_NETWORK} was found. Creating..." - docker network create "${HYRAX_NETWORK}" - loggy "${prolog} Created Docker network '${HYRAX_NETWORK}' for Hyrax and Apache httpd." - loggy "${prolog} " + loggy "$prolog No Docker network by the name of $HYRAX_NETWORK was found. Creating..." + docker network create "$HYRAX_NETWORK" + loggy "$prolog Created Docker network '$HYRAX_NETWORK' for Hyrax and Apache httpd." + loggy "$prolog " else - loggy "${prolog} Docker network '${HYRAX_NETWORK}' exists, using." - loggy "${prolog} " + loggy "$prolog Docker network '$HYRAX_NETWORK' exists, using." + loggy "$prolog " fi } @@ -352,7 +357,7 @@ function make_network_as_needed() { # function delete_network() { # Dump Hyrax Docker Network - docker network rm "${HYRAX_NETWORK}" + docker network rm "$HYRAX_NETWORK" } ################################################################################ @@ -364,20 +369,20 @@ function start_httpd() { make_network_as_needed - loggy "${prolog} Starting Docker container for Apache httpd: ${HTTPD_IMAGE}" + loggy "$prolog Starting Docker container for Apache httpd: $HTTPD_IMAGE" docker run -d \ - --name ${HTTPD_NAME} \ - --net=${HYRAX_NETWORK} \ + --name "$HTTPD_NAME" \ + --net="$HYRAX_NETWORK" \ --publish 80:80 \ --publish 443:443 \ - --volume ${httpd_conf}:${APACHE_HTTPD_HOME}/conf/httpd.conf \ - --volume ${htdocs_content}:${APACHE_HTTPD_HOME}/htdocs \ - --volume ${expires_sh}:${APACHE_HTTPD_HOME}/cgi-bin/expires.sh \ - "${HTTPD_IMAGE}" + --volume" $httpd_conf":"$APACHE_HTTPD_HOME/conf/httpd.conf" \ + --volume "$htdocs_content":"$APACHE_HTTPD_HOME/htdocs" \ + --volume "$expires_sh":"$APACHE_HTTPD_HOME/cgi-bin/expires.sh" \ + "$HTTPD_IMAGE" - loggy "${prolog} " - loggy "${prolog} Docker container: ${HTTPD_IMAGE} STARTED." - loggy "${prolog} END" + loggy "$prolog " + loggy "$prolog Docker container: $HTTPD_IMAGE STARTED." + loggy "$prolog END" } @@ -387,7 +392,7 @@ function start_httpd() { # function stop_httpd() { # Dump httpd container - docker rm -f "${HTTPD_NAME}" + docker rm -f "$HTTPD_NAME" } ################################################################################ @@ -395,7 +400,7 @@ function stop_httpd() { # update_httpd() # function update_httpd() { - docker pull "${HTTPD_IMAGE}" + docker pull "$HTTPD_IMAGE" stop_httpd start_httpd } @@ -408,7 +413,7 @@ function get_platform() { local prolog="get_platform() -" local sys_arch= sys_arch=$(arch) - loggy "${prolog} sys_arch: $sys_arch" + loggy "$prolog sys_arch: $sys_arch" local platform="" if test $sys_arch = "arm64"; then platform="--platform linux/amd64"; fi echo "$platform" @@ -420,7 +425,7 @@ function get_platform() { # function set_file_permissions() { local prolog="set_file_permissions() -" - loggy "${prolog} BEGIN" + loggy "$prolog BEGIN" local vers_doc vers_doc=$(which sw_vers) @@ -429,41 +434,41 @@ function set_file_permissions() { local platform="" platform="$(get_platform)" - loggy "${prolog} platform: $platform" + loggy "$prolog platform: $platform" - local use_disconnect="-d" # ${disconnect:-"-d"} - loggy "${prolog} use_disconnect: $use_disconnect" + local use_disconnect="-d" # + loggy "$prolog use_disconnect: $use_disconnect" - loggy "${prolog} Checking bes user info in Hyrax container: ${HYRAX_IMAGE}" - docker run $use_disconnect $platform --name "${name}" ${HYRAX_IMAGE} + loggy "$prolog Checking bes user info in Hyrax container: $HYRAX_IMAGE" + docker run $use_disconnect $platform --name "$name" "$HYRAX_IMAGE" - sleep_time=10 - loggy "${prolog} Waiting $sleep_time seconds for hyrax to get going..." + local sleep_time=10 + loggy "$prolog Waiting $sleep_time seconds for hyrax to get going..." sleep $sleep_time local bes_uid - bes_uid=$(docker logs "${name}" 2>&1 | grep bes_uid | awk '{print $2;}') - loggy "${prolog} bes_uid: ${bes_uid}" + bes_uid=$(docker logs "$name" 2>&1 | grep bes_uid | awk '{print $2;}') + loggy "$prolog bes_uid: $bes_uid" local bes_gid - bes_gid=$(docker logs "${name}" 2>&1 | grep bes_gid | awk '{print $2;}') - loggy "${prolog} bes_gid: ${bes_gid}" + bes_gid=$(docker logs "$name" 2>&1 | grep bes_gid | awk '{print $2;}') + loggy "$prolog bes_gid: $bes_gid" - loggy "${prolog} Stopping Hyrax container: ${HYRAX_IMAGE}" - docker container rm -f "${name}" + loggy "$prolog Stopping Hyrax container: $HYRAX_IMAGE" + docker container rm -f "$name" if test -n "$bes_uid" && test -n "$bes_gid"; then - loggy "${prolog} Setting ownership of ${bes_log_dir}" - sudo chown -R ${bes_uid}:${bes_gid} "${bes_log_dir}" + loggy "$prolog Setting ownership of $bes_log_dir" + sudo chown -R "$bes_uid":"$bes_gid" "$bes_log_dir" else - loggy "${prolog} ERROR - Failed to determine one or both of bes user uid or gid." + loggy "$prolog ERROR - Failed to determine one or both of bes user uid or gid." return 1 fi else - loggy "${prolog} Detected OSX, no permissions were changed." + loggy "$prolog Detected OSX, no permissions were changed." loggy "$(sw_vers)" fi - loggy "${prolog} END" + loggy "$prolog END" return 0 } @@ -474,9 +479,9 @@ function set_file_permissions() { function clean_hyrax_logs() { local prolog="clean_hyrax_logs() -" loggy "$prolog BEGIN" - loggy "$(rm -vrf ${HYRAX_HOME}/log/bes/*)" - loggy "$(rm -vrf ${HYRAX_HOME}/olfs/logs/*)" - loggy "$(rm -vrf ${HYRAX_HOME}/log/tomcat/*)" + loggy "$(rm -vrf "$HYRAX_HOME"/log/bes/*)" + loggy "$(rm -vrf "$HYRAX_HOME"/olfs/logs/*)" + loggy "$(rm -vrf "$HYRAX_HOME"/log/tomcat/*)" loggy "$prolog END" } @@ -486,53 +491,53 @@ function clean_hyrax_logs() { # saved/rolled like a server should. function save_hyrax_logs() { local prolog="save_hyrax_logs() -" - loggy "${prolog} BEGIN" + loggy "$prolog BEGIN" local date_tag= date_tag=$(date +"%Y-%m-%d-%H:%M:%S") - loggy "${prolog} date_tag: $date_tag" + loggy "$prolog date_tag: $date_tag" - local target_dir="${HYRAX_HOME}/crash_logs/$date_tag" - loggy "${prolog} target_dir: $target_dir" + local target_dir="$HYRAX_HOME/crash_logs/$date_tag" + loggy "$prolog target_dir: $target_dir" mkdir -pv "$target_dir" - loggy "${prolog} Saving BES log..." + loggy "$prolog Saving BES log..." local source_file= - source_file="${HYRAX_HOME}/log/bes/bes.log" - loggy "${prolog} Processing: $source_file" - if test -f "${source_file}"; then - cp -v "${source_file}" "${target_dir}/bes.log" + source_file="$HYRAX_HOME/log/bes/bes.log" + loggy "$prolog Processing: $source_file" + if test -f "$source_file"; then + cp -v "$source_file" "$target_dir/bes.log" else loggy "$prolog Failed to locate: $source_file" fi - loggy "${prolog} Save the various OLFS logs..." + loggy "$prolog Save the various OLFS logs..." for log in olfs-log.json HyraxAccess.log HyraxErrors.log cloud_watch_request.log cloud_watch_response.log BESCommands.log; do - source_file="${HYRAX_HOME}/olfs/logs/$log" - loggy "${prolog} Processing: $source_file" - if test -f "${source_file}"; then - cp -v "${source_file}" "${target_dir}/${log}" + source_file="$HYRAX_HOME/olfs/logs/$log" + loggy "$prolog Processing: $source_file" + if test -f "$source_file"; then + cp -v "$source_file" "$target_dir/$log" else loggy "$prolog Failed to locate: $source_file" fi done - loggy "${prolog} Save the Tomcat logs..." + loggy "$prolog Save the Tomcat logs..." local local_host_log= local_host_log="$(basename "$(ls -1t "$HYRAX_HOME/log/tomcat/localhost".* | head -1)")" - loggy "${prolog} local_host_log: $local_host_log" - for log in console.log "${local_host_log}" catalina.out; do - source_file="${HYRAX_HOME}/log/tomcat/$log" - loggy "${prolog} Processing: $source_file" + loggy "$prolog local_host_log: $local_host_log" + for log in console.log "$local_host_log" catalina.out; do + source_file="$HYRAX_HOME/log/tomcat/$log" + loggy "$prolog Processing: $source_file" - if test -f "${source_file}"; then - cp -v "${source_file}" "${target_dir}/tomcat-${log}" + if test -f "$source_file"; then + cp -v "$source_file" "$target_dir/tomcat-$log" else loggy "$prolog Failed to locate file: $source_file" fi done - loggy "${prolog} END" + loggy "$prolog END" } ################################################################################ # @@ -540,34 +545,34 @@ function save_hyrax_logs() { # function start_debug() { local prolog="start_hyrax() -" - loggy "${prolog} BEGIN" + loggy "$prolog BEGIN" save_hyrax_logs clean_hyrax_logs set_file_permissions if test $? -ne 0; then - loggy "${prolog} ERROR - Unable to set host file permissions. Hyrax was not started." + loggy "$prolog ERROR - Unable to set host file permissions. Hyrax was not started." return 1 fi - local use_disconnect=${disconnect:-"-d"} - loggy "${prolog} use_disconnect: $use_disconnect" + local use_disconnect="${disconnect:-"-d"}" + loggy "$prolog use_disconnect: $use_disconnect" local platform="" platform="$(get_platform)" - loggy "${prolog} platform: $platform" + loggy "$prolog platform: $platform" - loggy "${prolog} run_privileged: $run_privileged" + loggy "$prolog run_privileged: $run_privileged" - loggy "${prolog} Starting Hyrax container: ${HYRAX_IMAGE}" + loggy "$prolog Starting Hyrax container: $HYRAX_IMAGE" docker run -d --name "$HYRAX_NAME" -p 8080:8080 -v /usr/share/hyrax:/usr/share/hyrax \ -v /home/rocky/test.opendap.org/debug:/debug \ "$HYRAX_IMAGE" - loggy "${prolog}" - loggy "${prolog} Docker container: ${HYRAX_IMAGE} STARTED." - loggy "${prolog}" - loggy "${prolog} END" + loggy "$prolog" + loggy "$prolog Docker container: $HYRAX_IMAGE STARTED." + loggy "$prolog" + loggy "$prolog END" } @@ -577,68 +582,68 @@ function start_debug() { # function start_hyrax() { local prolog="start_hyrax() -" - loggy "${prolog} BEGIN" + loggy "$prolog BEGIN" save_hyrax_logs clean_hyrax_logs set_file_permissions if test $? -ne 0; then - loggy "${prolog} ERROR - Unable to set host file permissions. Hyrax was not started." + loggy "$prolog ERROR - Unable to set host file permissions. Hyrax was not started." return 1 fi make_network_as_needed - local use_disconnect=${disconnect:-"-d"} - loggy "${prolog} use_disconnect: $use_disconnect" + local use_disconnect="${disconnect:-"-d"}" + loggy "$prolog use_disconnect: $use_disconnect" local platform="" platform="$(get_platform)" - loggy "${prolog} platform: $platform" + loggy "$prolog platform: $platform" - loggy "${prolog} run_privileged: $run_privileged" + loggy "$prolog run_privileged: $run_privileged" - loggy "${prolog} Starting Hyrax container: ${HYRAX_IMAGE}" + loggy "$prolog Starting Hyrax container: $HYRAX_IMAGE" docker run $use_disconnect $run_privileged $platform \ - --name ${HYRAX_NAME} \ - --net=${HYRAX_NETWORK} \ + --name "$HYRAX_NAME" \ + --net="$HYRAX_NETWORK" \ --publish 8009:8009 \ --publish 8080:8080 \ --publish 8443:8443 \ - --volume ${data_dir}:/usr/share/hyrax:ro \ - --volume ${bes_log_dir}:/var/log/bes \ - --volume ${bes_cores_dir}:/cores \ - --volume ${log_dir}/tomcat:/usr/share/tomcat/logs \ - --volume ${olfs_conf_dir}:/etc/olfs \ - --volume ${bes_site_conf_file}:/etc/bes/site.conf \ - --volume ${bes_creds_conf_file}:/etc/bes/credentials.conf \ - --memory=${HYRAX_MEMORY} \ - ${tomcat_server_xml_volume} \ - "${HYRAX_IMAGE}" \ + --volume "$data_dir":/usr/share/hyrax:ro \ + --volume "$bes_log_dir":/var/log/bes \ + --volume "$bes_cores_dir":/cores \ + --volume "$log_dir/tomcat":/usr/share/tomcat/logs \ + --volume "$olfs_conf_dir":/etc/olfs \ + --volume "$bes_site_conf_file":/etc/bes/site.conf \ + --volume "$bes_creds_conf_file":/etc/bes/credentials.conf \ + --memory="$HYRAX_MEMORY" \ + $tomcat_server_xml_volume \ + "$HYRAX_IMAGE" \ -e support@opendap.org \ -s \ - -n ${ncwms} - loggy "${prolog}" - loggy "${prolog} Docker container: ${HYRAX_IMAGE} STARTED." - loggy "${prolog}" - loggy "${prolog} END" + -n $ncwms + loggy "$prolog" + loggy "$prolog Docker container: $HYRAX_IMAGE STARTED." + loggy "$prolog" + loggy "$prolog END" } ################################################################################ # enable_core_dump() # -# Restarts the container with privileged enabled. Then it uses docker exec and +# Restarts the container with --privileged. Then it uses docker exec and # bash to configure the running container to create core dump files in /cores # on container's disk. # function enable_core_dump() { local prolog="enable_core_dump() -" - loggy "${H2}" - loggy "${prolog} BEGIN" + loggy "$H2" + loggy "$prolog BEGIN" run_privileged="--ulimit core=-1 --privileged --security-opt seccomp=unconfined " - loggy "${prolog} run_privileged: $run_privileged" + loggy "$prolog run_privileged: $run_privileged" stop_hyrax start_hyrax local naptime=10 @@ -646,21 +651,21 @@ function enable_core_dump() { sleep 10 loggy "" - loggy "${prolog} Setting kernel.core.pattern in docker image:" - loggy "$(docker exec -it ${HYRAX_NAME} bash -c "sysctl -w kernel.core_pattern=/cores/core-%e.%p.%h.%t; echo \"status: $?\"")" + loggy "$prolog Setting kernel.core.pattern in docker image:" + loggy "$(docker exec -it "$HYRAX_NAME" bash -c "sysctl -w kernel.core_pattern=/cores/core-%e.%p.%h.%t; echo \"status: $?\"")" loggy "" - loggy "${prolog} docker ulimit: " - loggy "$(docker exec -it ${HYRAX_NAME} bash -c "ulimit -a")" + loggy "$prolog docker ulimit: " + loggy "$(docker exec -it "$HYRAX_NAME" bash -c "ulimit -a")" loggy "" - loggy "${prolog} host ulimit:" + loggy "$prolog host ulimit:" loggy "$(ulimit -a)" loggy "" loggy "" - loggy "${prolog} In docker container modify /etc/systemd/system.conf to all core dumps:" - loggy "$(docker exec -it ${HYRAX_NAME} bash -c "echo \"DumpCore=yes\" >> /etc/systemd/system.conf; cat /etc/systemd/system.conf; ")" + loggy "$prolog In docker container modify /etc/systemd/system.conf to all core dumps:" + loggy "$(docker exec -it "$HYRAX_NAME" bash -c "echo \"DumpCore=yes\" >> /etc/systemd/system.conf; cat /etc/systemd/system.conf; ")" loggy "" } @@ -725,7 +730,7 @@ function install_linux_debug_packages() { ################################################################################ # enable_debugging() -# +# Installs all the poackages # This will call enable_core_dump() which stops and then starts the server # so the server should available for interrogation and configuration. # @@ -760,7 +765,8 @@ function enable_debugging() { if test $http_code -ne 200; then loggy "ERROR! Failed to get Hyrax version response from: $version_url" else - loggy "Hyrax Version Response: $version_response" + loggy "$prolog Hyrax Version Response:" + loggy "$version_response" fi #----------------------------------------------------------------- @@ -768,7 +774,7 @@ function enable_debugging() { # libdap4 debuginfo rpm local libdap4_version libdap4_version=$(echo "$version_response" | grep "library name=\"libdap\"" | awk '{ split($3,v,"="); gsub("\"","",v[2]); print v[2] ;}') - echo "libdap_version: $libdap4_version" + echo "$prolog libdap_version: $libdap4_version" local libdap_debug_rpm="libdap-debuginfo-$libdap4_version.el8.x86_64.rpm" loggy "$prolog libdap_debug_rpm: $libdap_debug_rpm" @@ -784,7 +790,7 @@ function enable_debugging() { # BES debuginfo rpm local bes_version bes_version=$(echo "$version_response" | grep "library name=\"bes\"" | awk '{ split($3,v,"="); gsub("\"","",v[2]); print v[2]; }') - echo "bes_version: $bes_version" + echo "$prolog bes_version: $bes_version" local bes_debug_rpm="bes-debuginfo-$bes_version.static.el8.x86_64.rpm" loggy "$prolog bes_debug_rpm: $bes_debug_rpm" @@ -810,11 +816,11 @@ function enable_debugging() { # function stop_hyrax() { local prolog="stop_hyrax() -" - loggy "${prolog} BEGIN" + loggy "$prolog BEGIN" # Dump Hyrax container - loggy "${prolog} Forcibly removing the container: ${HYRAX_NAME}" - loggy "${prolog} Removed: $(docker rm -f "${HYRAX_NAME}")" - loggy "${prolog} END" + loggy "$prolog Forcibly removing the container: $HYRAX_NAME" + loggy "$prolog Removed: $(docker rm -f "$HYRAX_NAME")" + loggy "$prolog END" } ################################################################################ # @@ -822,11 +828,11 @@ function stop_hyrax() { # function update_hyrax() { local prolog="update_hyrax() -" - loggy "${prolog} BEGIN" - docker pull "${HYRAX_IMAGE}" + loggy "$prolog BEGIN" + docker pull "$HYRAX_IMAGE" stop_hyrax start_hyrax - loggy "${prolog} END" + loggy "$prolog END" } ################################################################################ @@ -835,10 +841,10 @@ function update_hyrax() { # function start_all() { local prolog="start_all() -" - loggy "${prolog} BEGIN" + loggy "$prolog BEGIN" start_hyrax start_httpd - loggy "${prolog} END" + loggy "$prolog END" } ################################################################################ @@ -850,29 +856,39 @@ function stop_all() { # Dump all containers docker rm -f $(docker ps -aq) # Dump the network. - docker network rm ${HYRAX_NETWORK} + docker network rm "$HYRAX_NETWORK" loggy "stop_all() - END" } ################################################################################ -# # clean_and_update() # +# - Stops the server +# - Removes all local images +# - Pulls $HYRAX_IMAGE +# - Pulls $HTTPD_TIMAGE +# - returns +# function clean_and_update_all() { - loggy "clean_and_update_all() - BEGIN" + local prolog="clean_and_update_all() -" + loggy "$prolog BEGIN" stop_all # Dump ALL the images docker rmi -f $(docker images -q) # Pull our stuff - docker pull ${HYRAX_IMAGE} - docker pull ${HTTPD_IMAGE} - loggy "clean_and_update_all() - END" + loggy "$prolog Pulling hyrax image: $HYRAX_IMAGE" + docker pull "$HYRAX_IMAGE" + loggy "$prolog Pulling httpd image: $HTTPD_IMAGE" + docker pull "$HTTPD_IMAGE" + loggy "$prolog END" } ################################################################################ # Opens an interactive bash shell on the Hyrax container. function dshell() { - docker exec -it ${HYRAX_NAME} /bin/bash + loggy "Logging into: $HYRAX_NAME" + loggy "" + docker exec -it "$HYRAX_NAME" /bin/bash } ################################################################################ @@ -880,7 +896,7 @@ function dshell() { # usage() # function usage() { - loggy "${H1}" + loggy "$H1" loggy "NAME" loggy " hyraxctl - hyrax control" loggy "" @@ -937,14 +953,14 @@ function usage() { loggy " stop_hyrax - Deletes the running (or not) hyrax " loggy " container from the docker engine." loggy " update_hyrax - Pulls the latest HYRAX_IMAGE tag (currently: " - loggy " ${HYRAX_IMAGE}), stops the Hyrax container," + loggy " $HYRAX_IMAGE), stops the Hyrax container," loggy " and then starts the (possibly updated) image." loggy " start_httpd - Starts httpd in the docker engine using" loggy " configuration values in the env." loggy " stop_httpd - Deletes the running (or not) httpd " loggy " container from the docker engine." loggy " update_httpd - Pulls the latest HYRAX_IMAGE tag (currently: " - loggy " ${HTTPD_IMAGE}), stops the Hyrax container," + loggy " $HTTPD_IMAGE), stops the Hyrax container," loggy " and then starts the (possibly updated) image." loggy " clean_and_update_all - Stops and deletes all containers, deletes" loggy " docker network, deletes all images, pulls" @@ -963,38 +979,38 @@ function usage() { loggy "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" loggy "" fi - loggy "${H3}" + loggy "$H3" } function run_cmd() { - local cmd="${1}" + local cmd="$1" - if test "${cmd}" == "show_config"; then + if test "$cmd" == "show_config"; then show_config - elif test "${cmd}" == "config_test_opendap_org"; then + elif test "$cmd" == "config_test_opendap_org"; then config_test_opendap_org - elif test "${cmd}" == "config_ndp_local"; then + elif test "$cmd" == "config_ndp_local"; then config_ndp_local - elif test "${cmd}" == "start_all"; then + elif test "$cmd" == "start_all"; then start_all - elif test "${cmd}" == "stop_all"; then + elif test "$cmd" == "stop_all"; then stop_all - elif test "${cmd}" == "start_hyrax"; then + elif test "$cmd" == "start_hyrax"; then start_hyrax - elif test "${cmd}" == "stop_hyrax"; then + elif test "$cmd" == "stop_hyrax"; then stop_hyrax - elif test "${cmd}" == "start_httpd"; then + elif test "$cmd" == "start_httpd"; then start_httpd - elif test "${cmd}" == "stop_httpd"; then + elif test "$cmd" == "stop_httpd"; then stop_httpd - elif test "${cmd}" == "clean_and_update"; then + elif test "$cmd" == "clean_and_update"; then clean_and_update - elif test "${cmd}" == "make_network_as_needed"; then + elif test "$cmd" == "make_network_as_needed"; then make_network_as_needed - elif test "${cmd}" == "delete_network"; then + elif test "$cmd" == "delete_network"; then delete_network else - echo "ERROR Unrecognized command: ${cmd}" >&2 + echo "ERROR Unrecognized command: $cmd" >&2 usage fi } @@ -1002,8 +1018,8 @@ function run_cmd() { echo "ArgCount: $#" >&2 if test "$#" -gt 0; then for a_cmd in "$@"; do - echo "Running command: ${a_cmd}" >&2 - run_cmd "${a_cmd}" + echo "Running command: $a_cmd" >&2 + run_cmd "$a_cmd" done else config_test_opendap_org From c5ab69790bfe43fa9dd75fc0a3abca436e12a78e Mon Sep 17 00:00:00 2001 From: ndp-opendap Date: Tue, 24 Mar 2026 13:10:10 -0700 Subject: [PATCH 2/2] WIP --- hyraxctl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyraxctl b/hyraxctl index 08766fa..9edb8f7 100755 --- a/hyraxctl +++ b/hyraxctl @@ -375,7 +375,7 @@ function start_httpd() { --net="$HYRAX_NETWORK" \ --publish 80:80 \ --publish 443:443 \ - --volume" $httpd_conf":"$APACHE_HTTPD_HOME/conf/httpd.conf" \ + --volume "$httpd_conf":"$APACHE_HTTPD_HOME/conf/httpd.conf" \ --volume "$htdocs_content":"$APACHE_HTTPD_HOME/htdocs" \ --volume "$expires_sh":"$APACHE_HTTPD_HOME/cgi-bin/expires.sh" \ "$HTTPD_IMAGE"