Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: jans-linux-setup check availibility of ports for OpenDJ backend #949

Merged
merged 3 commits into from
Mar 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
312 changes: 142 additions & 170 deletions jans-linux-setup/jans_setup/jans_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,47 +11,33 @@
import traceback
import code
import site
import argparse

from pathlib import Path

from queue import Queue

__STATIC_SETUP_DIR__ = '/opt/jans/jans-setup/'
os.environ['LC_ALL'] = 'C'

queue = Queue()

dir_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(dir_path)

from setup_app.utils import arg_parser

import install

group = arg_parser.parser.add_argument_group(install.parser.description)

for action in install.parser._actions:
if isinstance(action, argparse._HelpAction):
continue
if isinstance(action, argparse._StoreTrueAction):
arg = group.add_argument(*action.option_strings, action='store_true')
if not (os.path.exists('/opt/dist/jans/jans.zip') or os.path.exists('jans-auth.war')) or '-uninstall' in sys.argv:
import install
install.setup_dir = dir_path
if '-uninstall' in sys.argv:
install.uninstall_jans()
sys.exit()
else:
arg = group.add_argument(*action.option_strings)

arg.option_strings = action.option_strings
arg.default = action.default
arg.help = action.help
arg.choices = action.choices
arg.required = False
arg.type = action.type

argsp = arg_parser.parser.parse_known_args()[0]
print("Downloading Files")
install.download_files()
install.extract_yaml_files()
install.prepare_jans_cli_package()

if not (os.path.exists('/opt/dist/jans/jans.zip') or os.path.exists('/opt/dist/jans/jans-auth.war')) or '-uninstall' in sys.argv or argsp.force_download:
os.environ['LC_ALL'] = 'C'
from setup_app.utils.arg_parser import arg_parser

install.app_globals.argsp = argsp
install.setup_dir = dir_path
install.init_installer()
argsp = arg_parser()

# first import paths and make changes if necassary
from setup_app import paths
Expand Down Expand Up @@ -142,180 +128,166 @@ def ami_packaged():
if not os.path.exists(Config.outputFolder):
os.makedirs(Config.outputFolder)

# initialize config object
Config.init(paths.INSTALL_DIR)
Config.determine_version()

def main():
base.profile = Config.profile
if Config.profile != 'jans':
argsp.t = False

if '-uninstall' in sys.argv:
install.uninstall_jans()
sys.exit()
elif not os.path.exists('/opt/dist/jans/jans-auth.war'):
print("Downloading Files")
install.download_files()
install.extract_yaml_files()
install.prepare_jans_cli_package()
if argsp.profile != 'jans':
install.profile_setup()
elif not argsp.no_gcs:
install.download_gcs()
# we must initilize SetupUtils after initilizing Config
SetupUtils.init()

# initialize config object
Config.init(paths.INSTALL_DIR)
Config.determine_version()
# get setup options from args
setupOptions = get_setup_options()

base.profile = Config.profile
if Config.profile != 'jans':
argsp.t = False
terminal_size = shutil.get_terminal_size()
tty_rows = terminal_size.lines
tty_columns = terminal_size.columns

# we must initilize SetupUtils after initilizing Config
SetupUtils.init()
# check if we are running in terminal
try:
os.get_terminal_size()
except:
argsp.no_progress = True

# get setup options from args
setupOptions = get_setup_options()
if not argsp.n:
base.check_resources()

terminal_size = shutil.get_terminal_size()
tty_rows = terminal_size.lines
tty_columns = terminal_size.columns
# pass progress indicator to Config object
Config.pbar = jansProgress

# check if we are running in terminal
try:
os.get_terminal_size()
except:
argsp.no_progress = True

if not argsp.n:
base.check_resources()

# pass progress indicator to Config object
Config.pbar = jansProgress

for key in setupOptions:
setattr(Config, key, setupOptions[key])

jansInstaller = JansInstaller()
jansInstaller.initialize()

print()
detected_os = '{} {}'.format(base.os_type, base.os_version)
if base.snap:
detected_os = 'snap ' + detected_os
print("Installing Janssen Server...\n\nFor more info see:\n {} \n {}\n".format(paths.LOG_FILE, paths.LOG_ERROR_FILE))
print("Profile : {}".format(Config.profile))
print("Detected OS : {}".format(detected_os))
print("Janssen Version : {}".format(Config.oxVersion))
print("Detected init : {}".format(base.os_initdaemon))
print("Detected Apache : {}".format(base.determineApacheVersion()))
print()

setup_loaded = {}
if setupOptions['setup_properties']:
base.logIt('%s Properties found!\n' % setupOptions['setup_properties'])
setup_loaded = propertiesUtils.load_properties(setupOptions['setup_properties'])
elif os.path.isfile(Config.setup_properties_fn):
base.logIt('%s Properties found!\n' % Config.setup_properties_fn)
setup_loaded = propertiesUtils.load_properties(Config.setup_properties_fn)
elif os.path.isfile(Config.setup_properties_fn + '.enc'):
base.logIt('%s Properties found!\n' % Config.setup_properties_fn + '.enc')
setup_loaded = propertiesUtils.load_properties(Config.setup_properties_fn + '.enc')

if argsp.import_ldif:
if os.path.isdir(argsp.import_ldif):
base.logIt("Found setup LDIF import directory {}".format(argsp.import_ldif))
else:
base.logIt("The custom LDIF import directory {} does not exist. Exiting...".format(argsp.import_ldif, True, True))

collectProperties = CollectProperties()
if os.path.exists(Config.jans_properties_fn):
collectProperties.collect()
collectProperties.save()
Config.installed_instance = True
for key in setupOptions:
setattr(Config, key, setupOptions[key])

if argsp.csx:
print("Saving collected properties")
collectProperties.save()
sys.exit()
jansInstaller = JansInstaller()
jansInstaller.initialize()

if not Config.noPrompt and not Config.installed_instance and not setup_loaded:
propertiesUtils.promptForProperties()
print()
detected_os = '{} {}'.format(base.os_type, base.os_version)
if base.snap:
detected_os = 'snap ' + detected_os
print("Installing Janssen Server...\n\nFor more info see:\n {} \n {}\n".format(paths.LOG_FILE, paths.LOG_ERROR_FILE))
print("Profile : {}".format(Config.profile))
print("Detected OS : {}".format(detected_os))
print("Janssen Version : {}".format(Config.oxVersion))
print("Detected init : {}".format(base.os_initdaemon))
print("Detected Apache : {}".format(base.determineApacheVersion()))
print()

setup_loaded = {}
if setupOptions['setup_properties']:
base.logIt('%s Properties found!\n' % setupOptions['setup_properties'])
setup_loaded = propertiesUtils.load_properties(setupOptions['setup_properties'])
elif os.path.isfile(Config.setup_properties_fn):
base.logIt('%s Properties found!\n' % Config.setup_properties_fn)
setup_loaded = propertiesUtils.load_properties(Config.setup_properties_fn)
elif os.path.isfile(Config.setup_properties_fn + '.enc'):
base.logIt('%s Properties found!\n' % Config.setup_properties_fn + '.enc')
setup_loaded = propertiesUtils.load_properties(Config.setup_properties_fn + '.enc')

if argsp.import_ldif:
if os.path.isdir(argsp.import_ldif):
base.logIt("Found setup LDIF import directory {}".format(argsp.import_ldif))
else:
base.logIt("The custom LDIF import directory {} does not exist. Exiting...".format(argsp.import_ldif, True, True))

propertiesUtils.check_properties()
# initialize installers, order is important!
jreInstaller = JreInstaller()
jettyInstaller = JettyInstaller()
jythonInstaller = JythonInstaller()
collectProperties = CollectProperties()
if os.path.exists(Config.jans_properties_fn):
collectProperties.collect()
collectProperties.save()
Config.installed_instance = True

if Config.profile == 'jans':
openDjInstaller = OpenDjInstaller()
couchbaseInstaller = CouchbaseInstaller()
if argsp.csx:
print("Saving collected properties")
collectProperties.save()
sys.exit()

rdbmInstaller = RDBMInstaller()
httpdinstaller = HttpdInstaller()
jansAuthInstaller = JansAuthInstaller()
configApiInstaller = ConfigApiInstaller()
if not Config.noPrompt and not Config.installed_instance and not setup_loaded:
propertiesUtils.promptForProperties()

if Config.profile == 'jans':
fidoInstaller = FidoInstaller()
scimInstaller = ScimInstaller()
elevenInstaller = ElevenInstaller()
propertiesUtils.check_properties()
# initialize installers, order is important!
jreInstaller = JreInstaller()
jettyInstaller = JettyInstaller()
jythonInstaller = JythonInstaller()

jansCliInstaller = JansCliInstaller()
if Config.profile == 'jans':
openDjInstaller = OpenDjInstaller()
couchbaseInstaller = CouchbaseInstaller()

# oxdInstaller = OxdInstaller()
rdbmInstaller = RDBMInstaller()
httpdinstaller = HttpdInstaller()
jansAuthInstaller = JansAuthInstaller()
configApiInstaller = ConfigApiInstaller()

rdbmInstaller.packageUtils = packageUtils
if Config.profile == 'jans':
fidoInstaller = FidoInstaller()
scimInstaller = ScimInstaller()
elevenInstaller = ElevenInstaller()

if Config.installed_instance:
for service in jansProgress.services:
setattr(Config, service['object'].install_var, service['object'].installed())
jansCliInstaller = JansCliInstaller()

if not argsp.shell:
propertiesUtils.promptForProperties()
# oxdInstaller = OxdInstaller()

if not (argsp.t or argsp.x) and not Config.addPostSetupService:
print("No service was selected to install. Exiting ...")
sys.exit()
rdbmInstaller.packageUtils = packageUtils

def print_or_log(msg):
print(msg) if argsp.x else base.logIt(msg)
if Config.installed_instance:
for service in jansProgress.services:
setattr(Config, service['object'].install_var, service['object'].installed())

if not argsp.shell:
propertiesUtils.promptForProperties()

if Config.profile == 'jans':
if argsp.t:
testDataLoader = TestDataLoader()
if not (argsp.t or argsp.x) and not Config.addPostSetupService:
print("No service was selected to install. Exiting ...")
sys.exit()

if argsp.t and argsp.x:
print_or_log("Loading test data")
testDataLoader.dbUtils.bind()
testDataLoader.createLdapPw()
configApiInstaller.load_test_data()
testDataLoader.load_test_data()
testDataLoader.deleteLdapPw()
print_or_log("Test data loaded.")
def print_or_log(msg):
print(msg) if argsp.x else base.logIt(msg)

if not argsp.t and argsp.x and argsp.load_config_api_test:
print_or_log("Loading Config Api Test data")
configApiInstaller.load_test_data()
print_or_log("Test data loaded. Exiting ...")

if argsp.x:
print("Exiting ...")
sys.exit()
if Config.profile == 'jans':
if argsp.t:
testDataLoader = TestDataLoader()

if argsp.t and argsp.x:
print_or_log("Loading test data")
testDataLoader.dbUtils.bind()
testDataLoader.createLdapPw()
configApiInstaller.load_test_data()
testDataLoader.load_test_data()
testDataLoader.deleteLdapPw()
print_or_log("Test data loaded.")

if not argsp.t and argsp.x and argsp.load_config_api_test:
print_or_log("Loading Config Api Test data")
configApiInstaller.load_test_data()
print_or_log("Test data loaded. Exiting ...")

if argsp.x:
print("Exiting ...")
sys.exit()

Config.installJansCli = Config.installConfigApi or Config.installScimServer
Config.installJansCli = Config.installConfigApi or Config.installScimServer

app_vars = locals().copy()
app_vars = locals().copy()

if argsp.shell:
code.interact(local=locals())
sys.exit()
if argsp.shell:
code.interact(local=locals())
sys.exit()

if Config.profile == 'jans':
# re-calculate memory usage
Config.calculate_mem()
if Config.profile == 'jans':
# re-calculate memory usage
Config.calculate_mem()

print()
print(jansInstaller)
print()
print(jansInstaller)

base.current_app.proceed_installation = True
base.current_app.proceed_installation = True

def main():

if not Config.noPrompt:
proceed_prompt = input('Proceed with these values [Y|n] ').lower().strip()
Expand Down
Loading