Update notificationservice-base-v1 startup script to handle upgrades
Updated the logic in ptptracking_start.py to handle a case where the application is upgraded but helm overrides are not present. If helm overrides are present, there is no change in behaviour. If helm overrides are absent, attempt to locate ptp4l and phc2sys configs in known locations and start with those. Print log messages indicating that the configs were auto detected and that helm overrides can be set if auto-detection is incorrect or unsuccessful. Bonus fix: corrected the tox path used to auto detect unit tests, as this was missed when moving from notificationservice-base to notificationservice-base-v2 Test-plan: PASS: Build and deploy application tarball PASS: Pods start correctly when overrides are present and when they are absent Story: 2010538 Task: 47740 Signed-off-by: Cole Walker <cole.walker@windriver.com> Change-Id: I25df407effbffc03e444573233058f3d3180e706
This commit is contained in:
parent
c500ee3483
commit
4e21f7115b
@ -14,7 +14,7 @@ spec:
|
|||||||
chart:
|
chart:
|
||||||
spec:
|
spec:
|
||||||
chart: ptp-notification
|
chart: ptp-notification
|
||||||
version: 0.1.0
|
version: 2.0.0
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: stx-platform
|
name: stx-platform
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
appVersion: "1.0"
|
appVersion: "2.0"
|
||||||
description: A Helm chart to deploy PTP Notification Service
|
description: A Helm chart to deploy PTP Notification Service
|
||||||
name: ptp-notification
|
name: ptp-notification
|
||||||
version: 0.1.0
|
version: 2.0.0
|
||||||
|
@ -16,6 +16,8 @@ log_helper.config_logger(LOG)
|
|||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
|
import glob
|
||||||
|
import re
|
||||||
import oslo_messaging
|
import oslo_messaging
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from trackingfunctionsdk.services.daemon import DaemonControl
|
from trackingfunctionsdk.services.daemon import DaemonControl
|
||||||
@ -64,7 +66,75 @@ sqlalchemy_conf = {
|
|||||||
}
|
}
|
||||||
sqlalchemy_conf_json = json.dumps(sqlalchemy_conf)
|
sqlalchemy_conf_json = json.dumps(sqlalchemy_conf)
|
||||||
default_daemoncontrol = DaemonControl(sqlalchemy_conf_json, json.dumps(context))
|
default_daemoncontrol = DaemonControl(sqlalchemy_conf_json, json.dumps(context))
|
||||||
|
|
||||||
|
if os.path.exists('/ptp/linuxptp/ptpinstance'):
|
||||||
|
LINUXPTP_CONFIG_PATH = '/ptp/linuxptp/ptpinstance/'
|
||||||
|
elif os.path.exists('/ptp/ptpinstance'):
|
||||||
|
LINUXPTP_CONFIG_PATH = '/ptp/ptpinstance/'
|
||||||
|
else:
|
||||||
|
LINUXPTP_CONFIG_PATH = '/ptp/'
|
||||||
|
|
||||||
|
ptp4l_service_name = os.environ.get('PTP4L_SERVICE_NAME', 'ptp4l')
|
||||||
|
phc2sys_service_name = os.environ.get('PHC2SYS_SERVICE_NAME', 'phc2sys')
|
||||||
|
|
||||||
|
pmc = False
|
||||||
|
ptp4l = False
|
||||||
|
phc2sys = False
|
||||||
|
ptp4lconf = False
|
||||||
|
phc2sysconf = False
|
||||||
|
|
||||||
|
if os.path.isfile('/usr/sbin/pmc'):
|
||||||
|
pmc = True
|
||||||
|
|
||||||
|
# Check ptp4l config, auto-detect if not found
|
||||||
|
if os.path.isfile('%sptp4l-%s.conf' % (LINUXPTP_CONFIG_PATH, ptp4l_service_name)):
|
||||||
|
ptp4lconf = True
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
LOG.warning("Unable to locate ptp4l config file, attempting to auto-detect")
|
||||||
|
ptp4l_detect_config = glob.glob(LINUXPTP_CONFIG_PATH + "ptp4l*.conf")[0]
|
||||||
|
pattern = '(?<=' + LINUXPTP_CONFIG_PATH + 'ptp4l-).*(?=.conf)'
|
||||||
|
match = re.search(pattern, ptp4l_detect_config)
|
||||||
|
ptp4l_service_name = match.group()
|
||||||
|
LOG.info("Using ptp4l conf: %s and ptp4l service name %s"
|
||||||
|
% (ptp4l_detect_config, ptp4l_service_name))
|
||||||
|
LOG.info("Set Helm overrides to override auto-detection")
|
||||||
|
ptp4lconf = True
|
||||||
|
except:
|
||||||
|
LOG.warning("Unable to locate ptp4l config, auto-detect failed.")
|
||||||
|
|
||||||
|
# Check phc2sys config, auto-detect if not found
|
||||||
|
if os.path.isfile('%sphc2sys-%s.conf' % (LINUXPTP_CONFIG_PATH, phc2sys_service_name)):
|
||||||
|
phc2sysconf = True
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
LOG.warning("Unable to locate phc2sys config file, attempting to auto-detect")
|
||||||
|
phc2sys_detect_config = glob.glob(LINUXPTP_CONFIG_PATH + "phc2sys*.conf")[0]
|
||||||
|
pattern = '(?<=' + LINUXPTP_CONFIG_PATH + 'phc2sys-).*(?=.conf)'
|
||||||
|
match = re.search(pattern, phc2sys_detect_config)
|
||||||
|
phc2sys_service_name = match.group()
|
||||||
|
LOG.info("Using phc2sys conf: %s and phc2sys service name: %s"
|
||||||
|
% (phc2sys_detect_config, phc2sys_service_name))
|
||||||
|
LOG.info("Set Helm overrides to override auto-detection")
|
||||||
|
phc2sysconf = True
|
||||||
|
except:
|
||||||
|
LOG.warning("Unable to locate phc2sys config, auto-detect failed.")
|
||||||
|
|
||||||
|
# Check that ptp4l and phc2sys are running
|
||||||
|
if os.path.isfile('/var/run/ptp4l-%s.pid' % ptp4l_service_name):
|
||||||
|
ptp4l = True
|
||||||
|
else:
|
||||||
|
LOG.warning("Unable to locate .pid file for %s" % ptp4l_service_name)
|
||||||
|
if os.path.isfile('/var/run/phc2sys-%s.pid' % phc2sys_service_name):
|
||||||
|
phc2sys = True
|
||||||
|
else:
|
||||||
|
LOG.warning("Unable to locate .pid file for %s" % phc2sys_service_name)
|
||||||
|
|
||||||
|
|
||||||
|
if pmc and ptp4l and phc2sys and ptp4lconf and phc2sysconf:
|
||||||
|
LOG.info("Located ptp4l and phc2sys configs, starting ptp-notification")
|
||||||
default_daemoncontrol.refresh()
|
default_daemoncontrol.refresh()
|
||||||
|
else:
|
||||||
|
LOG.warning("Please configure application overrides and ensure that ptp services are running.")
|
||||||
while True:
|
while True:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
4
tox.ini
4
tox.ini
@ -21,9 +21,9 @@ allowlist_externals =
|
|||||||
[testenv:py36]
|
[testenv:py36]
|
||||||
basepython = python3.6
|
basepython = python3.6
|
||||||
setenv =
|
setenv =
|
||||||
TESTPATH=./notificationservice-base/docker/ptptrackingfunction/trackingfunctionsdk/tests/
|
TESTPATH=./notificationservice-base-v2/docker/ptptrackingfunction/trackingfunctionsdk/tests/
|
||||||
commands =
|
commands =
|
||||||
unit2 discover -s ./notificationservice-base/docker/ptptrackingfunction
|
unit2 discover -s ./notificationservice-base-v2/docker/ptptrackingfunction
|
||||||
deps =
|
deps =
|
||||||
-r{toxinidir}/requirements.txt
|
-r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/test-requirements.txt
|
-r{toxinidir}/test-requirements.txt
|
||||||
|
Loading…
Reference in New Issue
Block a user