Skip to content

Commit 35a1e97

Browse files
committed
<fix>[ansible]: support python3 ansible install
copy zstack-cli/zstack-ctl from venv to /usr/bin before chmod Python 3.11 pip (>=19.0) no longer installs data_files to absolute paths when running inside a virtualenv. Resolves: ZSTAC-73161 Change-Id: I6c74676f6f6b786e616972786a717777797a626f
1 parent e734c2f commit 35a1e97

2 files changed

Lines changed: 20 additions & 21 deletions

File tree

conf/tools/install.sh

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ fi
1010
pypi_path=file://$cwd/../../../static/pypi/simple
1111

1212
usage() {
13-
echo "usage:$0 [zstack-cli|zstack-ctl|zstack-dashboard|zstack-ui]"
13+
echo "usage:$0 [zstack-cli|zstack-ctl|zstack-dashboard|zstack-ui|zstack-sys]"
1414
exit 1
1515
}
1616

@@ -22,24 +22,20 @@ if [ -z $tool ]; then
2222
fi
2323

2424
install_pip() {
25-
pip --version | grep 7.0.3 >/dev/null || easy_install -i $pypi_path --upgrade pip
25+
pip3.11 --version | grep 22.3.1 >/dev/null || yum install python3.11-pip
2626
}
2727

28-
install_virtualenv() {
29-
virtualenv --version | grep 12.1.1 >/dev/null || pip install -i $pypi_path --ignore-installed virtualenv==12.1.1
30-
}
3128

3229
cd $cwd
3330

3431
install_pip
35-
install_virtualenv
3632
cd /tmp
3733

3834
if [ $tool = 'zstack-cli' ]; then
3935
CLI_VIRENV_PATH=/var/lib/zstack/virtualenv/zstackcli
4036
[ ! -z $force ] && rm -rf $CLI_VIRENV_PATH
4137
if [ ! -d "$CLI_VIRENV_PATH" ]; then
42-
virtualenv $CLI_VIRENV_PATH --python=python2.7
38+
python3.11 -m venv $CLI_VIRENV_PATH
4339
if [ $? -ne 0 ]; then
4440
rm -rf $CLI_VIRENV_PATH
4541
exit 1
@@ -70,17 +66,19 @@ if [ $tool = 'zstack-cli' ]; then
7066
exit 1
7167
fi
7268
fi
69+
[ -f $CLI_VIRENV_PATH/bin/zstack-cli ] && cp $CLI_VIRENV_PATH/bin/zstack-cli /usr/bin/zstack-cli
7370
chmod +x /usr/bin/zstack-cli
7471

7572
elif [ $tool = 'zstack-ctl' ]; then
7673
CTL_VIRENV_PATH=/var/lib/zstack/virtualenv/zstackctl
77-
rm -rf $CTL_VIRENV_PATH && virtualenv $CTL_VIRENV_PATH --python=python2.7 || exit 1
74+
rm -rf $CTL_VIRENV_PATH && python3.11 -m venv $CTL_VIRENV_PATH || exit 1
7875
. $CTL_VIRENV_PATH/bin/activate
7976
cd $cwd
8077
TMPDIR=/usr/local/zstack/ pip install -i $pypi_path --trusted-host localhost --ignore-installed zstackctl-*.tar.gz || exit 1
81-
TMPDIR=/usr/local/zstack/ pip install -i $pypi_path --trusted-host localhost --ignore-installed pycrypto==2.6.1 || exit 1
78+
TMPDIR=/usr/local/zstack/ pip install -i $pypi_path --trusted-host localhost --ignore-installed pycryptodome || exit 1
79+
[ -f $CTL_VIRENV_PATH/bin/zstack-ctl ] && cp $CTL_VIRENV_PATH/bin/zstack-ctl /usr/bin/zstack-ctl
8280
chmod +x /usr/bin/zstack-ctl
83-
python $CTL_VIRENV_PATH/lib/python2.7/site-packages/zstackctl/generate_zstackctl_bash_completion.py
81+
python $CTL_VIRENV_PATH/lib/python3.11/site-packages/zstackctl/generate_zstackctl_bash_completion.py
8482

8583
elif [ $tool = 'zstack-sys' ]; then
8684
SYS_VIRENV_PATH=/var/lib/zstack/virtualenv/zstacksys
@@ -95,11 +93,11 @@ elif [ $tool = 'zstack-sys' ]; then
9593
NEED_INSTALL=true
9694
fi
9795
if $NEED_INSTALL; then
98-
rm -rf $SYS_VIRENV_PATH && virtualenv $SYS_VIRENV_PATH --python=python2.7 || exit 1
96+
rm -rf $SYS_VIRENV_PATH && python3.11 -m venv /var/lib/zstack/virtualenv/zstacksys || exit 1
9997
. $SYS_VIRENV_PATH/bin/activate
10098
cd $cwd
101-
TMPDIR=/usr/local/zstack/ pip install -i $pypi_path --trusted-host localhost --ignore-installed setuptools==39.2.0 || exit 1
102-
TMPDIR=/usr/local/zstack/ pip install -i $pypi_path --trusted-host localhost --ignore-installed ansible==4.10.0 || exit 1
99+
#TMPDIR=/usr/local/zstack/ pip install -i $pypi_path --trusted-host localhost --ignore-installed setuptools==65.5.1 || exit 1
100+
TMPDIR=/usr/local/zstack/ pip install -i $pypi_path --trusted-host localhost --ignore-installed ansible==9.13.0 || exit 1
103101

104102
cat > /usr/bin/ansible << EOF
105103
#! /bin/sh
@@ -140,7 +138,7 @@ elif [ $tool = 'zstack-dashboard' ]; then
140138
UI_VIRENV_PATH=/var/lib/zstack/virtualenv/zstack-dashboard
141139
[ ! -z $force ] && rm -rf $UI_VIRENV_PATH
142140
if [ ! -d "$UI_VIRENV_PATH" ]; then
143-
virtualenv $UI_VIRENV_PATH --python=python2.7
141+
python3.11 -m venv $UI_VIRENV_PATH
144142
if [ $? -ne 0 ]; then
145143
rm -rf $UI_VIRENV_PATH
146144
exit 1

core/src/main/java/org/zstack/core/ansible/AnsibleFacadeImpl.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,18 +136,18 @@ void init() {
136136
"NEED_INSTALL=false; " +
137137
"if [ -d /var/lib/zstack/virtualenv/zstacksys ]; then " +
138138
". /var/lib/zstack/virtualenv/zstacksys/bin/activate; " +
139-
"if ! ansible --version | grep -q 'core 2.11.12'; then " +
139+
"if ! ansible --version | grep -q 'core 2.16.14'; then " +
140140
"deactivate; " +
141141
"NEED_INSTALL=true; " +
142142
"fi; " +
143143
"else " +
144144
"NEED_INSTALL=true; "+
145145
"fi; " +
146146
"if $NEED_INSTALL; then " +
147-
"sudo bash -c 'rm -rf /var/lib/zstack/virtualenv/zstacksys && virtualenv /var/lib/zstack/virtualenv/zstacksys --python=python2.7; "+
147+
"sudo bash -c 'rm -rf /var/lib/zstack/virtualenv/zstacksys && python3.11 -m venv /var/lib/zstack/virtualenv/zstacksys; "+
148148
". /var/lib/zstack/virtualenv/zstacksys/bin/activate; "+
149-
"TMPDIR=/usr/local/zstack/ pip install -i file://%s --trusted-host localhost -I setuptools==39.2.0; "+
150-
"TMPDIR=/usr/local/zstack/ pip install -i file://%s --trusted-host localhost -I ansible==4.10.0'; "+
149+
"TMPDIR=/usr/local/zstack/ pip install -i file://%s --trusted-host localhost -I setuptools==65.5.1; "+
150+
"TMPDIR=/usr/local/zstack/ pip install -i file://%s --trusted-host localhost -I ansible==9.13.0'; "+
151151
"fi" , AnsibleConstant.PYPI_REPO, AnsibleConstant.PYPI_REPO), false);
152152

153153

@@ -252,19 +252,20 @@ private void run(Completion completion) {
252252
Map<String, Object> arguments = collectArguments(msg);
253253
logger.debug(String.format("start running ansible for playbook[%s]", msg.getPlayBookPath()));
254254
String executable = msg.getAnsibleExecutable() == null ? AnsibleGlobalProperty.EXECUTABLE : msg.getAnsibleExecutable();
255+
255256
long timeout = TimeUnit.MILLISECONDS.toSeconds(msg.getTimeout());
256257
try {
257258
String output;
258259
if (AnsibleGlobalProperty.DEBUG_MODE2) {
259-
output = ShellUtils.run(String.format("bash -c '. /var/lib/zstack/virtualenv/zstacksys/bin/activate; PYTHONPATH=%s timeout %d %s %s -i %s -vvvv --private-key %s -e '\\''%s'\\' | tee -a %s",
260+
output = ShellUtils.run(String.format("bash -c '. /var/lib/zstack/virtualenv/zstacksys/bin/activate; PYTHONPATH=%s timeout %d %s -B %s -i %s -vvvv --private-key %s -e '\\''%s'\\' | tee -a %s",
260261
AnsibleConstant.ZSTACKLIB_ROOT, timeout, executable, playBookPath, AnsibleConstant.INVENTORY_FILE, msg.getPrivateKeyFile(), JSONObjectUtil.dumpPretty(arguments), AnsibleConstant.LOG_PATH),
261262
AnsibleConstant.ROOT_DIR);
262263
} else if (AnsibleGlobalProperty.DEBUG_MODE) {
263-
output = ShellUtils.run(String.format("bash -c '. /var/lib/zstack/virtualenv/zstacksys/bin/activate; PYTHONPATH=%s timeout %d %s %s -i %s -vvvv --private-key %s -e '\\''%s'\\'",
264+
output = ShellUtils.run(String.format("bash -c '. /var/lib/zstack/virtualenv/zstacksys/bin/activate; PYTHONPATH=%s timeout %d %s -B %s -i %s -vvvv --private-key %s -e '\\''%s'\\'",
264265
AnsibleConstant.ZSTACKLIB_ROOT, timeout, executable, playBookPath, AnsibleConstant.INVENTORY_FILE, msg.getPrivateKeyFile(), JSONObjectUtil.dumpPretty(arguments)),
265266
AnsibleConstant.ROOT_DIR);
266267
} else {
267-
output = ShellUtils.run(String.format("bash -c '. /var/lib/zstack/virtualenv/zstacksys/bin/activate; PYTHONPATH=%s timeout %d %s %s -i %s --private-key %s -e '\\''%s'\\'",
268+
output = ShellUtils.run(String.format("bash -c '. /var/lib/zstack/virtualenv/zstacksys/bin/activate; PYTHONPATH=%s timeout %d %s -B %s -i %s --private-key %s -e '\\''%s'\\'",
268269
AnsibleConstant.ZSTACKLIB_ROOT, timeout, executable, playBookPath, AnsibleConstant.INVENTORY_FILE, msg.getPrivateKeyFile(), JSONObjectUtil.dumpPretty(arguments)),
269270
AnsibleConstant.ROOT_DIR);
270271
}

0 commit comments

Comments
 (0)