diff --git a/trains_agent/commands/config.py b/trains_agent/commands/config.py index 9965da2..f00fe8a 100644 --- a/trains_agent/commands/config.py +++ b/trains_agent/commands/config.py @@ -44,7 +44,7 @@ def main(): sentinel = '' parse_input = '\n'.join(iter(input, sentinel)) credentials = None - api_host = None + api_server = None web_server = None # noinspection PyBroadException try: @@ -52,11 +52,11 @@ def main(): if parsed: # Take the credentials in raw form or from api section credentials = get_parsed_field(parsed, ["credentials"]) - api_host = get_parsed_field(parsed, ["api_server", "host"]) + api_server = get_parsed_field(parsed, ["api_server", "host"]) web_server = get_parsed_field(parsed, ["web_server"]) except Exception: credentials = credentials or None - api_host = api_host or None + api_server = api_server or None web_server = web_server or None while not credentials or set(credentials) != {"access_key", "secret_key"}: @@ -65,63 +65,25 @@ def main(): print('Detected credentials key=\"{}\" secret=\"{}\"'.format(credentials['access_key'], credentials['secret_key'][0:4] + "***")) - if api_host: - api_host = input_url('API Host', api_host) + web_input = True + if web_server: + host = input_url('WEB Host', web_server) + elif api_server: + web_input = False + host = input_url('API Host', api_server) else: print(host_description) - api_host = input_url('API Host', '') - parsed_host = verify_url(api_host) + host = input_url('WEB Host', '') - if parsed_host.netloc.startswith('demoapp.'): - # this is our demo server - api_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('demoapp.', 'demoapi.', 1) + parsed_host.path - web_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path - files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('demoapp.', 'demofiles.', 1) + parsed_host.path - elif parsed_host.netloc.startswith('app.'): - # this is our application server - api_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('app.', 'api.', 1) + parsed_host.path - web_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path - files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('app.', 'files.', 1) + parsed_host.path - elif parsed_host.netloc.startswith('demoapi.'): - print('{} is the api server, we need the web server. Replacing \'demoapi.\' with \'demoapp.\''.format( - parsed_host.netloc)) - api_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path - web_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('demoapi.', 'demoapp.', 1) + parsed_host.path - files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('demoapi.', 'demofiles.', 1) + parsed_host.path - elif parsed_host.netloc.startswith('api.'): - print('{} is the api server, we need the web server. Replacing \'api.\' with \'app.\''.format( - parsed_host.netloc)) - api_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path - web_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('api.', 'app.', 1) + parsed_host.path - files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('api.', 'files.', 1) + parsed_host.path - elif parsed_host.port == 8008: - print('Port 8008 is the api port. Replacing 8080 with 8008 for Web application') - api_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path - web_host = parsed_host.scheme + "://" + parsed_host.netloc.replace(':8008', ':8080', 1) + parsed_host.path - files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace(':8008', ':8081', 1) + parsed_host.path - elif parsed_host.port == 8080: - api_host = parsed_host.scheme + "://" + parsed_host.netloc.replace(':8080', ':8008', 1) + parsed_host.path - web_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path - files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace(':8080', ':8081', 1) + parsed_host.path + parsed_host = verify_url(host) + api_host, files_host, web_host = parse_host(parsed_host, allow_input=True) + + # on of these two we configured + if not web_input: + web_host = input_url('Web Application Host', web_host) else: - api_host = '' - web_host = '' - files_host = '' - if not parsed_host.port: - print('Host port not detected, do you wish to use the default 8080 port n/[y]? ', end='') - replace_port = input().lower() - if not replace_port or replace_port == 'y' or replace_port == 'yes': - api_host = parsed_host.scheme + "://" + parsed_host.netloc + ':8008' + parsed_host.path - web_host = parsed_host.scheme + "://" + parsed_host.netloc + ':8080' + parsed_host.path - files_host = parsed_host.scheme + "://" + parsed_host.netloc + ':8081' + parsed_host.path - elif not replace_port or replace_port.lower() == 'n' or replace_port.lower() == 'no': - web_host = input_host_port("Web", parsed_host) - api_host = input_host_port("API", parsed_host) - files_host = input_host_port("Files", parsed_host) - if not api_host: - api_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path + api_host = input_url('API Host', api_host) - web_host = input_url('Web Application Host', web_server if web_server else web_host) files_host = input_url('File Store Host', files_host) print('\nTRAINS Hosts configuration:\nWeb App: {}\nAPI: {}\nFile Store: {}\n'.format( @@ -208,6 +170,63 @@ def main(): print('TRAINS-AGENT setup completed successfully.') +def parse_host(parsed_host, allow_input=True): + if parsed_host.netloc.startswith('demoapp.'): + # this is our demo server + api_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('demoapp.', 'demoapi.', 1) + parsed_host.path + web_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path + files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('demoapp.', 'demofiles.', + 1) + parsed_host.path + elif parsed_host.netloc.startswith('app.'): + # this is our application server + api_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('app.', 'api.', 1) + parsed_host.path + web_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path + files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('app.', 'files.', 1) + parsed_host.path + elif parsed_host.netloc.startswith('demoapi.'): + print('{} is the api server, we need the web server. Replacing \'demoapi.\' with \'demoapp.\''.format( + parsed_host.netloc)) + api_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path + web_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('demoapi.', 'demoapp.', 1) + parsed_host.path + files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('demoapi.', 'demofiles.', + 1) + parsed_host.path + elif parsed_host.netloc.startswith('api.'): + print('{} is the api server, we need the web server. Replacing \'api.\' with \'app.\''.format( + parsed_host.netloc)) + api_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path + web_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('api.', 'app.', 1) + parsed_host.path + files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace('api.', 'files.', 1) + parsed_host.path + elif parsed_host.port == 8008: + print('Port 8008 is the api port. Replacing 8080 with 8008 for Web application') + api_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path + web_host = parsed_host.scheme + "://" + parsed_host.netloc.replace(':8008', ':8080', 1) + parsed_host.path + files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace(':8008', ':8081', 1) + parsed_host.path + elif parsed_host.port == 8080: + api_host = parsed_host.scheme + "://" + parsed_host.netloc.replace(':8080', ':8008', 1) + parsed_host.path + web_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path + files_host = parsed_host.scheme + "://" + parsed_host.netloc.replace(':8080', ':8081', 1) + parsed_host.path + elif allow_input: + api_host = '' + web_host = '' + files_host = '' + if not parsed_host.port: + print('Host port not detected, do you wish to use the default 8080 port n/[y]? ', end='') + replace_port = input().lower() + if not replace_port or replace_port == 'y' or replace_port == 'yes': + api_host = parsed_host.scheme + "://" + parsed_host.netloc + ':8008' + parsed_host.path + web_host = parsed_host.scheme + "://" + parsed_host.netloc + ':8080' + parsed_host.path + files_host = parsed_host.scheme + "://" + parsed_host.netloc + ':8081' + parsed_host.path + elif not replace_port or replace_port.lower() == 'n' or replace_port.lower() == 'no': + web_host = input_host_port("Web", parsed_host) + api_host = input_host_port("API", parsed_host) + files_host = input_host_port("Files", parsed_host) + if not api_host: + api_host = parsed_host.scheme + "://" + parsed_host.netloc + parsed_host.path + else: + raise ValueError("Could not parse host name") + + return api_host, files_host, web_host + + def verify_credentials(api_host, credentials): """check if the credentials are valid""" # noinspection PyBroadException