Skip to content

Commit f5480c2

Browse files
committed
fix: flex-linux-setup always download latest jans-installer
1 parent 7ab3c3f commit f5480c2

File tree

1 file changed

+45
-12
lines changed

1 file changed

+45
-12
lines changed

flex-linux-setup/flex_linux_setup/flex_setup.py

+45-12
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@
1010
import configparser
1111
import subprocess
1212
import shutil
13+
import tempfile
1314

1415
from pathlib import Path
1516
from urllib import request
1617
from urllib.parse import urljoin
1718

19+
cur_dir = os.path.dirname(__file__)
1820

1921
if '--remove-flex' in sys.argv:
2022

@@ -53,25 +55,30 @@ def get_flex_setup_parser():
5355

5456
__STATIC_SETUP_DIR__ = '/opt/jans/jans-setup/'
5557

58+
if os.path.exists(__STATIC_SETUP_DIR__):
59+
os.system('mv {} {}-{}'.format(__STATIC_SETUP_DIR__, __STATIC_SETUP_DIR__.rstrip('/'), time.ctime().replace(' ', '_')))
60+
5661
installed_components = {'admin_ui': False, 'casa': False}
5762
argsp = None
63+
jans_installer_downloaded = False
64+
install_py_path = os.path.join(cur_dir, 'jans_install.py')
65+
66+
def download_jans_install_py(setup_branch):
67+
print("Downloading", os.path.basename(install_py_path))
68+
install_url = 'https://raw.githubusercontent.com/JanssenProject/jans/{}/jans-linux-setup/jans_setup/install.py'.format(setup_branch)
69+
request.urlretrieve(install_url, install_py_path)
5870

5971
try:
6072
import jans_setup
6173
path_ = list(jans_setup.__path__)
6274
sys.path.append(path_[0])
6375
except ModuleNotFoundError:
64-
if os.path.exists(os.path.join(__STATIC_SETUP_DIR__, 'setup_app')):
65-
sys.path.append(__STATIC_SETUP_DIR__)
66-
else:
76+
if not os.path.exists('/etc/jans/conf/jans.properties'):
6777
argsp, nargs = get_flex_setup_parser().parse_known_args()
68-
6978
print("Unable to locate jans-setup, installing ...")
70-
7179
setup_branch = argsp.jans_setup_branch or 'main'
72-
install_url = 'https://raw.githubusercontent.com/JanssenProject/jans/{}/jans-linux-setup/jans_setup/install.py'.format(setup_branch)
73-
request.urlretrieve(install_url, 'install.py')
74-
install_cmd = '{} install.py --setup-branch={}'.format(sys.executable, setup_branch)
80+
download_jans_install_py(setup_branch)
81+
install_cmd = '{} {} --setup-branch={}'.format(sys.executable, install_py_path, setup_branch)
7582

7683
if argsp.download_exit:
7784
nargs.append('--download-exit')
@@ -86,22 +93,46 @@ def get_flex_setup_parser():
8693

8794
print("Executing", install_cmd)
8895
os.system(install_cmd)
89-
sys.path.append(__STATIC_SETUP_DIR__)
96+
jans_installer_downloaded = True
9097

9198
if not argsp:
9299
argsp, nargs = get_flex_setup_parser().parse_known_args()
93100

101+
if not jans_installer_downloaded:
102+
jans_archieve_url = 'https://github.com/JanssenProject/jans/archive/refs/heads/{}.zip'.format(argsp.jans_branch)
103+
with tempfile.TemporaryDirectory() as tmp_dir:
104+
jans_zip_file = os.path.join(tmp_dir, os.path.basename(jans_archieve_url))
105+
print("Downloading {} as {}".format(jans_archieve_url, jans_zip_file))
106+
request.urlretrieve(jans_archieve_url, jans_zip_file)
107+
108+
print("Extracting jans-setup package")
109+
jans_zip = zipfile.ZipFile(jans_zip_file)
110+
parent_dir = jans_zip.filelist[0].orig_filename
111+
unpack_dir = os.path.join(tmp_dir, 'unpacked')
112+
shutil.unpack_archive(jans_zip_file, unpack_dir)
113+
shutil.copytree(os.path.join(unpack_dir, parent_dir, 'jans-linux-setup/jans_setup'), __STATIC_SETUP_DIR__)
114+
jans_zip.close()
115+
116+
sys.path.append(__STATIC_SETUP_DIR__)
117+
from setup_app import downloads
118+
from setup_app.utils import base
119+
downloads.base.current_app.app_info = base.readJsonFile(os.path.join(__STATIC_SETUP_DIR__, 'app_info.json'))
120+
downloads.download_sqlalchemy()
121+
downloads.download_gcs()
122+
94123
install_components = {
95124
'admin_ui': argsp.install_admin_ui,
96125
'casa': argsp.install_casa
97126
}
98127

99-
100128
logs_dir = os.path.join(__STATIC_SETUP_DIR__, 'logs')
101129

102130
if not os.path.exists(logs_dir):
103131
os.makedirs(logs_dir)
104132

133+
if not __STATIC_SETUP_DIR__ in sys.path:
134+
sys.path.append(__STATIC_SETUP_DIR__)
135+
105136
from setup_app import paths
106137
paths.LOG_FILE = os.path.join(logs_dir, 'flex-setup.log')
107138
paths.LOG_ERROR_FILE = os.path.join(logs_dir, 'flex-setup-error.log')
@@ -338,7 +369,7 @@ def enable_apache_mod_dir(self):
338369

339370

340371
def rewrite_cli_ini(self):
341-
print(" - Rewriting Jans CLI init file for plgins")
372+
print(" - Rewriting Jans CLI init file for plugins")
342373
cli_config = Path(jans_cli_installer.config_ini_fn)
343374

344375
if cli_config.exists():
@@ -364,7 +395,9 @@ def install_gluu_admin_ui(self):
364395

365396
client_check_result = config_api_installer.check_clients([('admin_ui_client_id', '2001.')])
366397
if client_check_result['2001.'] == -1:
367-
ldif_parser = myLdifParser(jans_cli_installer.ldif_client)
398+
399+
cli_ldif_client_fn = os.path.join(jans_cli_installer.templates_folder, os.path.basename(jans_cli_installer.ldif_client))
400+
ldif_parser = myLdifParser(cli_ldif_client_fn)
368401
ldif_parser.parse()
369402

370403
ldif_parser.entries[0][1]['inum'] = ['%(admin_ui_client_id)s']

0 commit comments

Comments
 (0)