From aba567d6c9bf6e235ae9a0c7d17dec6bdcddc1e7 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Mon, 8 Feb 2021 02:50:16 -0500 Subject: [PATCH] Add nice startup banners to both daemons Add nicer easy-to-find (yay ASCII art) banners for the startup printouts of both the node and API daemons. Also adds the safe loader to pvcnoded to prevent hassle messages and a version string in the API daemon file. --- api-daemon/pvcapid/Daemon.py | 23 +++++++++++++++++++++- api-daemon/pvcapid/flaskapi.py | 6 +++--- bump-version | 1 + node-daemon/pvcnoded/Daemon.py | 35 +++++++++++++++++++++++----------- 4 files changed, 50 insertions(+), 15 deletions(-) diff --git a/api-daemon/pvcapid/Daemon.py b/api-daemon/pvcapid/Daemon.py index 9d32afd3..2afbcbb7 100755 --- a/api-daemon/pvcapid/Daemon.py +++ b/api-daemon/pvcapid/Daemon.py @@ -26,10 +26,31 @@ import pvcapid.flaskapi as pvc_api # Entrypoint ########################################################## +# Version string for startup output +version = '0.9.11' + if pvc_api.config['ssl_enabled']: context = (pvc_api.config['ssl_cert_file'], pvc_api.config['ssl_key_file']) else: context = None -print('Starting PVC API daemon at {}:{} with SSL={}, Authentication={}'.format(pvc_api.config['listen_address'], pvc_api.config['listen_port'], pvc_api.config['ssl_enabled'], pvc_api.config['auth_enabled'])) +# Print our startup messages +print('') +print('|--------------------------------------------------|') +print('| ######## ## ## ###### |') +print('| ## ## ## ## ## ## |') +print('| ## ## ## ## ## |') +print('| ######## ## ## ## |') +print('| ## ## ## ## |') +print('| ## ## ## ## ## |') +print('| ## ### ###### |') +print('|--------------------------------------------------|') +print('| Parallel Virtual Cluster API daemon v{0: <11} |'.format(version)) +print('| API version: v{0: <34} |'.format(pvc_api.API_VERSION)) +print('| Listen: {0}:{1: <32} |'.format(pvc_api.config['listen_address'], pvc_api.config['listen_port'])) +print('| SSL: {0: <43} |'.format(str(pvc_api.config['ssl_enabled']))) +print('| Authentication: {0: <32} |'.format(str(pvc_api.config['auth_enabled']))) +print('|--------------------------------------------------|') +print('') + pvc_api.app.run(pvc_api.config['listen_address'], pvc_api.config['listen_port'], threaded=True, ssl_context=context) diff --git a/api-daemon/pvcapid/flaskapi.py b/api-daemon/pvcapid/flaskapi.py index 1eff293f..28d93c00 100755 --- a/api-daemon/pvcapid/flaskapi.py +++ b/api-daemon/pvcapid/flaskapi.py @@ -52,16 +52,16 @@ def strtobool(stringv): # Parse the configuration file try: - pvc_config_file = os.environ['PVC_CONFIG_FILE'] + pvcapid_config_file = os.environ['PVC_CONFIG_FILE'] except Exception: print('Error: The "PVC_CONFIG_FILE" environment variable must be set before starting pvcapid.') exit(1) -print('Starting PVC API daemon') +print('Loading configuration from file "{}"'.format(pvcapid_config_file)) # Read in the config try: - with open(pvc_config_file, 'r') as cfgfile: + with open(pvcapid_config_file, 'r') as cfgfile: o_config = yaml.load(cfgfile, Loader=yaml.BaseLoader) except Exception as e: print('ERROR: Failed to parse configuration file: {}'.format(e)) diff --git a/bump-version b/bump-version index 56984c25..3774cbee 100755 --- a/bump-version +++ b/bump-version @@ -17,6 +17,7 @@ $EDITOR ${changelog_file} changelog="$( cat ${changelog_file} | grep -v '^#' | sed 's/^*/ */' )" sed -i "s,version = '${current_version}',version = '${new_version}'," node-daemon/pvcnoded/Daemon.py +sed -i "s,version = '${current_version}',version = '${new_version}'," api-daemon/pvcapid/Daemon.py readme_tmpdir=$( mktemp -d ) cp README.md ${readme_tmpdir}/ diff --git a/node-daemon/pvcnoded/Daemon.py b/node-daemon/pvcnoded/Daemon.py index bf326c5d..fad6819a 100644 --- a/node-daemon/pvcnoded/Daemon.py +++ b/node-daemon/pvcnoded/Daemon.py @@ -134,7 +134,7 @@ def readConfig(pvcnoded_config_file, myhostname): with open(pvcnoded_config_file, 'r') as cfgfile: try: - o_config = yaml.load(cfgfile) + o_config = yaml.load(cfgfile, Loader=yaml.SafeLoader) except Exception as e: print('ERROR: Failed to parse configuration file: {}'.format(e)) exit(1) @@ -331,16 +331,29 @@ if not os.path.exists(config['log_directory']): logger = log.Logger(config) # Print our startup messages -logger.out('Parallel Virtual Cluster node daemon v{}'.format(version)) -logger.out('FQDN: {}'.format(myfqdn)) -logger.out('Host: {}'.format(myhostname)) -logger.out('ID: {}'.format(mynodeid)) -logger.out('IPMI hostname: {}'.format(config['ipmi_hostname'])) -logger.out('Machine details:') -logger.out(' CPUs: {}'.format(staticdata[0])) -logger.out(' Arch: {}'.format(staticdata[3])) -logger.out(' OS: {}'.format(staticdata[2])) -logger.out(' Kernel: {}'.format(staticdata[1])) +logger.out('') +logger.out('|--------------------------------------------------|') +logger.out('| ######## ## ## ###### |') +logger.out('| ## ## ## ## ## ## |') +logger.out('| ## ## ## ## ## |') +logger.out('| ######## ## ## ## |') +logger.out('| ## ## ## ## |') +logger.out('| ## ## ## ## ## |') +logger.out('| ## ### ###### |') +logger.out('|--------------------------------------------------|') +logger.out('| Parallel Virtual Cluster node daemon v{0: <10} |'.format(version)) +logger.out('| FQDN: {0: <42} |'.format(myfqdn)) +logger.out('| Host: {0: <42} |'.format(myhostname)) +logger.out('| ID: {0: <44} |'.format(mynodeid)) +logger.out('| IPMI hostname: {0: <33} |'.format(config['ipmi_hostname'])) +logger.out('| Machine details: |') +logger.out('| CPUs: {0: <40} |'.format(staticdata[0])) +logger.out('| Arch: {0: <40} |'.format(staticdata[3])) +logger.out('| OS: {0: <42} |'.format(staticdata[2])) +logger.out('| Kernel: {0: <38} |'.format(staticdata[1])) +logger.out('|--------------------------------------------------|') +logger.out('') + logger.out('Starting pvcnoded on host {}'.format(myfqdn), state='s') # Define some colours for future messages if applicable