Add python shim for docker config scripts
Unfortunately we may not necessarily know what version of python is available in the containers when we run some python config scripts. In order to work around this we have a pyshim which will try and find an existing version of python available to run the script under. The pyshim.sh will try python3 then python2 then python. Depends-On: https://review.openstack.org/#/c/617716/ Change-Id: Ie08481722e9b22bb67d5282828df0941f37a140a Closes-Bug: #1803411
This commit is contained in:
parent
480a2320fd
commit
a6408f0c09
@ -83,6 +83,9 @@ outputs:
|
||||
exit 0
|
||||
fi
|
||||
exit $rc
|
||||
pyshim.sh:
|
||||
mode: "0700"
|
||||
content: { get_file: ../../docker_config_scripts/pyshim.sh }
|
||||
|
||||
volumes_base:
|
||||
description: Base volume list
|
||||
|
@ -184,7 +184,10 @@ outputs:
|
||||
USER: {get_param: CephClientUserName}
|
||||
owner: nova:nova
|
||||
perm: '0600'
|
||||
docker_config_scripts: {get_attr: [NovaComputeCommon, docker_config_scripts]}
|
||||
docker_config_scripts:
|
||||
map_merge:
|
||||
- {get_attr: [ContainersCommon, docker_config_scripts]}
|
||||
- {get_attr: [NovaComputeCommon, docker_config_scripts]}
|
||||
docker_config:
|
||||
step_3:
|
||||
nova_statedir_owner:
|
||||
@ -195,7 +198,7 @@ outputs:
|
||||
volumes:
|
||||
- /var/lib/nova:/var/lib/nova:shared,z
|
||||
- /var/lib/docker-config-scripts/:/docker-config-scripts/
|
||||
command: "/docker-config-scripts/nova_statedir_ownership.py"
|
||||
command: "/docker-config-scripts/pyshim.sh /docker-config-scripts/nova_statedir_ownership.py"
|
||||
step_4:
|
||||
nova_compute:
|
||||
image: *nova_compute_image
|
||||
|
@ -101,7 +101,10 @@ outputs:
|
||||
- path: /var/log/nova
|
||||
owner: nova:nova
|
||||
recurse: true
|
||||
docker_config_scripts: {get_attr: [NovaComputeCommon, docker_config_scripts]}
|
||||
docker_config_scripts:
|
||||
map_merge:
|
||||
- {get_attr: [ContainersCommon, docker_config_scripts]}
|
||||
- {get_attr: [NovaComputeCommon, docker_config_scripts]}
|
||||
docker_config:
|
||||
step_3:
|
||||
nova_statedir_owner:
|
||||
@ -112,7 +115,7 @@ outputs:
|
||||
volumes:
|
||||
- /var/lib/nova:/var/lib/nova:shared,z
|
||||
- /var/lib/docker-config-scripts/:/docker-config-scripts/
|
||||
command: "/docker-config-scripts/nova_statedir_ownership.py"
|
||||
command: "/docker-config-scripts/pyshim.sh /docker-config-scripts/nova_statedir_ownership.py"
|
||||
step_5:
|
||||
nova_compute:
|
||||
image: *nova_ironic_image
|
||||
|
45
docker_config_scripts/pyshim.sh
Normal file
45
docker_config_scripts/pyshim.sh
Normal file
@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018 Red Hat Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
# Usage: pyshim.sh <script and/or arguments>
|
||||
#
|
||||
# Unfortunately THT doesn't know which version of python might be in a
|
||||
# container so we need this script to be able to try python3 or python2
|
||||
# depending on availability. Since this is a temporary shim until we've
|
||||
# fully cut over to python3, we check for the existance of python3 first
|
||||
# before falling back to python2. This will help in the transition from
|
||||
# python2 based containers to python3.
|
||||
|
||||
show_usage() {
|
||||
echo "Usage: pyshim.sh <script and/or arguments>"
|
||||
}
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
show_usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -x
|
||||
if command -v python3 >/dev/null; then
|
||||
python3 "$@"
|
||||
elif command -v python2 >/dev/null; then
|
||||
python2 "$@"
|
||||
elif command -v python >/dev/null; then
|
||||
python "$@"
|
||||
else
|
||||
echo "ERROR: python is not available!"
|
||||
exit 1
|
||||
fi
|
Loading…
Reference in New Issue
Block a user