diff --git a/.gitignore b/.gitignore index 04f4a9b..e73c313 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ /config/config.yml /config/repositories.yml /repositories/ !/repositories/.placeholder /tmp/ !/tmp/.placeholder +__pycache__/ diff --git a/bin/wtl-dummy-dataset b/bin/wtl-dummy-dataset index 9fabd11..1639781 100755 --- a/bin/wtl-dummy-dataset +++ b/bin/wtl-dummy-dataset @@ -1,367 +1,330 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import requests -import os -import time -import argcomplete, argparse -import yaml -import subprocess -from pprint import pprint -import sys -import uuid - -WTL_DEV_KIT_PATH = os.environ.get("WTL_DEV_KIT_PATH") -WTL_DEV_KIT_REPOS_PATH = os.environ.get("WTL_DEV_KIT_REPOS_PATH") -WTL_DEV_KIT_BIN_PATH = os.environ.get("WTL_DEV_KIT_BIN_PATH") - -config = {} - -with open(WTL_DEV_KIT_PATH + "/config/config.yml") as fh: - config['config'] = yaml.load(fh) - -if os.path.isfile(WTL_DEV_KIT_PATH + "/config/repositories.yml"): - with open(WTL_DEV_KIT_PATH + "/config/repositories.yml") as fh: - config['repositories'] = yaml.load(fh) -else: - with open(WTL_DEV_KIT_PATH + "/config/repositories.example.yml") as fh: - config['repositories'] = yaml.load(fh) - -parser = argparse.ArgumentParser() - -argcomplete.autocomplete(parser) -args = parser.parse_args() - -os.environ['KEYCLOAK_URI'] = 'http://{host_ip}:9080'.format(host_ip=config['config']['host_ip']) -os.environ['COURSES_BACKEND_URI'] = 'http://{host_ip}:10000'.format(host_ip=config['config']['host_ip']) -os.environ['CHAPTERS_BACKEND_URI'] = 'http://{host_ip}:10001'.format(host_ip=config['config']['host_ip']) -os.environ['PAGES_BACKEND_URI'] = 'http://{host_ip}:10002'.format(host_ip=config['config']['host_ip']) -os.environ['COURSE_MIDTIER_URI'] = 'http://{host_ip}:11000'.format(host_ip=config['config']['host_ip']) -os.environ['PWA_GATEWAY_URI'] = 'http://{host_ip}:12000'.format(host_ip=config['config']['host_ip']) -os.environ['PUBLIC_KEYCLOAK_URI'] = 'http://localhost:9080' -os.environ['PUBLIC_PWA_GATEWAY_URI'] = 'http://localhost:12000' - +import os,sys +sys.path.insert(0, os.path.realpath(os.path.dirname(os.path.abspath(__file__)) + "/../pythonlibs/")) +from basicsetup import * # keycloak config keycloak_realm_id = os.environ.get('KEYCLOAK_AUTH_REALM') keycloak_realm_username = "admin" keycloak_realm_password = "admin" keycloak_base_url = os.environ.get("KEYCLOAK_URI") + "/auth/" keycloak_realm_base_url = keycloak_base_url + "admin/realms/{}".format(keycloak_realm_id) keycloak_auth_obj = None keycloak_last_login_success = 0 def keycloak_get_auth_headers(username, password, realm, client_id, base_headers={}): global keycloak_auth_obj global keycloak_base_url global keycloak_last_login_success headers = dict(base_headers) do_login = True - + # do_login = False # if keycloak_auth_obj == None: # do_login = True # else: # if time.time() - keycloak_last_login_success > (keycloak_auth_obj['expires_in'] - 5): # do_login = True if do_login: auth_endpoint = "{}realms/{}/".format(keycloak_base_url, realm) data = {} data["client_id"] = client_id data["username"] = username data["password"] = password data["grant_type"] = "password" try: auth_r = requests.post( auth_endpoint + "protocol/openid-connect/token", data=data ) auth_r.raise_for_status() keycloak_auth_obj = auth_r.json() keycloak_last_login_success = time.time() except Exception as e: print("Keycloak login exception!") raise e if keycloak_auth_obj != None and 'access_token' in keycloak_auth_obj: headers["Authorization"] = "Bearer {}".format(keycloak_auth_obj['access_token']) else: pprint(keycloak_auth_obj) time.sleep(1) return headers def create_course(user_headers): headers = user_headers headers["Content-Type"] = "application/json" print("Creating course...") create_course_request = requests.post( os.environ.get("COURSE_MIDTIER_URI") + "/courses", json={ 'title': 'Course ' + str(uuid.uuid4()), 'language': 'it', 'chapters': [{ 'title': 'Chapter ' + str(uuid.uuid4()), 'language': 'it', 'pages': [{ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea ' + 'commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum ' + 'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' + 'sunt in culpa qui officia deserunt mollit anim id est laborum.' },{ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea ' + 'commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum ' + 'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' + 'sunt in culpa qui officia deserunt mollit anim id est laborum.' },{ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea ' + 'commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum ' + 'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' + 'sunt in culpa qui officia deserunt mollit anim id est laborum.' }] },{ 'title': 'Chapter ' + str(uuid.uuid4()), 'language': 'it', 'pages': [{ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea ' + 'commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum ' + 'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' + 'sunt in culpa qui officia deserunt mollit anim id est laborum.' },{ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea ' + 'commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum ' + 'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' + 'sunt in culpa qui officia deserunt mollit anim id est laborum.' },{ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea ' + 'commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum ' + 'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' + 'sunt in culpa qui officia deserunt mollit anim id est laborum.' }] },{ 'title': 'Chapter ' + str(uuid.uuid4()), 'language': 'it', 'pages': [{ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea ' + 'commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum ' + 'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' + 'sunt in culpa qui officia deserunt mollit anim id est laborum.' },{ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea ' + 'commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum ' + 'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' + 'sunt in culpa qui officia deserunt mollit anim id est laborum.' },{ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' + 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea ' + 'commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum ' + 'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' + 'sunt in culpa qui officia deserunt mollit anim id est laborum.' }] }] }, headers=user_headers ) create_course_request.raise_for_status() return create_course_request.json() def edit_course_title(id, etag, user_headers): headers = user_headers headers["Content-Type"] = "application/json" headers["If-Match"] = etag print("Updating course...") course_title = 'Course ' + str(uuid.uuid4()) edit_course_title_request = requests.patch( os.environ.get("COURSE_MIDTIER_URI") + "/courses/" + id, json={ 'title': course_title, 'language': 'it' }, headers=user_headers ) edit_course_title_request.raise_for_status() return edit_course_title_request.json() def add_chapter(id, user_headers): headers = user_headers headers["Content-Type"] = "application/json" print("Adding chapter...") - + course = requests.get( os.environ.get("COURSE_MIDTIER_URI") + "/courses/" + id ).json() chapters = course['chapters'] - + for c in chapters: del c['pages'] del c['title'] - + chapters.append({ 'title': 'Chapter ' + str(uuid.uuid4()), 'language': 'it' }) - + headers["If-Match"] = course['_etag'] - + add_chapter_request = requests.post( os.environ.get("COURSE_MIDTIER_URI") + "/courses/" + id + "/chapters", json={ 'title': course['title'], 'language': 'it', 'chapters': chapters }, headers=user_headers ) add_chapter_request.raise_for_status() return add_chapter_request.json() def add_page(id, user_headers): headers = user_headers headers["Content-Type"] = "application/json" print("Adding page...") - + course = requests.get( os.environ.get("COURSE_MIDTIER_URI") + "/courses/" + id ).json() pages = course['chapters'][0]['pages'] - + for p in pages: del p['title'] - + pages.append({ 'title': 'Page ' + str(uuid.uuid4()), 'language': 'it', 'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' }) - + headers["If-Match"] = course['chapters'][0]['_etag'] - + add_page_request = requests.post( os.environ.get("COURSE_MIDTIER_URI") + "/chapters/" + course['chapters'][0]['_id'] + "/pages", json={ 'title': course['chapters'][0]['title'], 'language': 'it', 'pages': pages }, headers=user_headers ) add_page_request.raise_for_status() return add_page_request.json() if requests.get(keycloak_realm_base_url,headers=keycloak_get_auth_headers(keycloak_realm_username, keycloak_realm_password, "master", "admin-cli")).status_code == 404: print("Creating realm...") create_realm = requests.post( keycloak_base_url + "admin/realms", json={ 'enabled': True, 'id': keycloak_realm_id, 'realm': keycloak_realm_id }, headers=keycloak_get_auth_headers(keycloak_realm_username, keycloak_realm_password, "master", "admin-cli") ) create_realm.raise_for_status() has_client_frontend = False clients_list_request = requests.get(keycloak_realm_base_url + "/clients",headers=keycloak_get_auth_headers(keycloak_realm_username, keycloak_realm_password, "master", "admin-cli")) for client in clients_list_request.json(): has_client_frontend = has_client_frontend or (client.get('clientId') == "frontend") if not has_client_frontend: print("Creating client frontend...") create_frontend_client = requests.post( keycloak_realm_base_url + "/clients", json={ "enabled":True, "attributes":{}, "redirectUris":[], "clientId":"frontend", "rootUrl":"http://localhost:13000", "protocol":"openid-connect" }, headers=keycloak_get_auth_headers(keycloak_realm_username, keycloak_realm_password, "master", "admin-cli") ) create_frontend_client.raise_for_status() for user_n in range(0, 10): keycloak_user = {} keycloak_user['username'] = "user{}".format(user_n) keycloak_user['firstName'] = "firstName" + "user{}".format(user_n) keycloak_user['lastName'] = "lastName" + "user{}".format(user_n) keycloak_user['email'] = "user{}".format(user_n) + "@localhost" keycloak_user['credentials'] = [ { "type": "password", "value": "password", } ] keycloak_user["enabled"] = True keycloak_user["emailVerified"] = True keycloak_user["attributes"] = { "mw_id": user_n, } users_endpoint = keycloak_realm_base_url + "/users" create_user_request = requests.post( users_endpoint, json=keycloak_user, headers=keycloak_get_auth_headers(keycloak_realm_username, keycloak_realm_password, "master", "admin-cli") ) print("User: " + keycloak_user['username']) print("Password: " + keycloak_user['credentials'][0]['value']) print("") try: create_user_request.raise_for_status() except requests.exceptions.HTTPError as exc: if exc.response.status_code != 409: print(exc) user_headers = keycloak_get_auth_headers("user1", "password", keycloak_realm_id, "frontend") for i in range(0, 10): response_body = create_course(user_headers) course_id = response_body['_id'] course_etag = response_body['_etag'] edit_course_title(course_id, course_etag, user_headers) add_chapter(course_id, user_headers) add_page(course_id, user_headers) add_chapter(course_id, user_headers) add_page(course_id, user_headers) response_body = add_chapter(course_id, user_headers) course_etag = response_body['_etag'] edit_course_title(course_id, course_etag, user_headers) diff --git a/bin/wtl-migration-dump-load b/bin/wtl-migration-dump-load index ef0dc19..4e5e315 100755 --- a/bin/wtl-migration-dump-load +++ b/bin/wtl-migration-dump-load @@ -1,59 +1,34 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import os -import argcomplete, argparse -import yaml -import subprocess -from pprint import pprint - -WTL_DEV_KIT_PATH = os.environ.get("WTL_DEV_KIT_PATH") -WTL_DEV_KIT_REPOS_PATH = os.environ.get("WTL_DEV_KIT_REPOS_PATH") -WTL_DEV_KIT_BIN_PATH = os.environ.get("WTL_DEV_KIT_BIN_PATH") - -config = {} - -with open(WTL_DEV_KIT_PATH + "/config/config.yml") as fh: - config['config'] = yaml.load(fh) - -if os.path.isfile(WTL_DEV_KIT_PATH + "/config/repositories.yml"): - with open(WTL_DEV_KIT_PATH + "/config/repositories.yml") as fh: - config['repositories'] = yaml.load(fh) -else: - with open(WTL_DEV_KIT_PATH + "/config/repositories.example.yml") as fh: - config['repositories'] = yaml.load(fh) - -parser = argparse.ArgumentParser() - -argcomplete.autocomplete(parser) -args = parser.parse_args() - -tmp_dir = WTL_DEV_KIT_PATH + "/tmp/" +import os,sys +sys.path.insert(0, os.path.realpath(os.path.dirname(os.path.abspath(__file__)) + "/../pythonlibs/")) +from basicsetup import * subprocess.call([ "wget", "-N", config['config']['migration']['dump_url'], -], cwd=tmp_dir) +], cwd=WTL_DEV_KIT_TMP_PATH) subprocess.call([ "rm", "-Rfv", "last_output", -], cwd=tmp_dir) +], cwd=WTL_DEV_KIT_TMP_PATH) subprocess.call([ "mkdir", "last_output", -], cwd=tmp_dir) +], cwd=WTL_DEV_KIT_TMP_PATH) subprocess.call([ "tar", "-xvzf", "last_output.tar.gz", "-C", "last_output", -], cwd=tmp_dir) +], cwd=WTL_DEV_KIT_TMP_PATH) subprocess.call([ "./restore-dump.sh", -], cwd=tmp_dir + "/last_output/") +], cwd=WTL_DEV_KIT_TMP_PATH + "/last_output/") diff --git a/bin/wtl-services-build b/bin/wtl-services-build index 4997b76..00f6b58 100755 --- a/bin/wtl-services-build +++ b/bin/wtl-services-build @@ -1,79 +1,46 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import os -import argcomplete, argparse -import yaml -import subprocess -from pprint import pprint - -WTL_DEV_KIT_PATH = os.environ.get("WTL_DEV_KIT_PATH") -WTL_DEV_KIT_REPOS_PATH = os.environ.get("WTL_DEV_KIT_REPOS_PATH") -WTL_DEV_KIT_BIN_PATH = os.environ.get("WTL_DEV_KIT_BIN_PATH") - -config = {} - -with open(WTL_DEV_KIT_PATH + "/config/config.yml") as fh: - config['config'] = yaml.load(fh) - -if os.path.isfile(WTL_DEV_KIT_PATH + "/config/repositories.yml"): - with open(WTL_DEV_KIT_PATH + "/config/repositories.yml") as fh: - config['repositories'] = yaml.load(fh) -else: - with open(WTL_DEV_KIT_PATH + "/config/repositories.example.yml") as fh: - config['repositories'] = yaml.load(fh) - -parser = argparse.ArgumentParser() - -argcomplete.autocomplete(parser) -args = parser.parse_args() - -os.environ['KEYCLOAK_URI'] = 'http://{host_ip}:9080'.format(host_ip=config['config']['host_ip']) -os.environ['COURSES_BACKEND_URI'] = 'http://{host_ip}:10000'.format(host_ip=config['config']['host_ip']) -os.environ['CHAPTERS_BACKEND_URI'] = 'http://{host_ip}:10001'.format(host_ip=config['config']['host_ip']) -os.environ['PAGES_BACKEND_URI'] = 'http://{host_ip}:10002'.format(host_ip=config['config']['host_ip']) -os.environ['COURSE_MIDTIER_URI'] = 'http://{host_ip}:11000'.format(host_ip=config['config']['host_ip']) -os.environ['PWA_GATEWAY_URI'] = 'http://{host_ip}:12000'.format(host_ip=config['config']['host_ip']) -os.environ['MONGO_HOST'] = 'mongodb://{host_ip}:27017'.format(host_ip=config['config']['host_ip']) -os.environ['PUBLIC_KEYCLOAK_URI'] = 'http://localhost:9080' -os.environ['PUBLIC_PWA_GATEWAY_URI'] = 'http://localhost:12000' +import os,sys +sys.path.insert(0, os.path.realpath(os.path.dirname(os.path.abspath(__file__)) + "/../pythonlibs/")) +from basicsetup import * for service_name in [ "shared-services", "courses-backend", "chapters-backend", "pages-backend", "coursessecurity-backend", "course-midtier", "pwa-gateway", "frontend", ]: if service_name in config['repositories']: service_path = WTL_DEV_KIT_REPOS_PATH + "/" + service_name print("Build '{service_name}'".format(service_name=service_name)) if not os.path.isdir(service_path): clone_cmd = [ "git", "clone", config['repositories'][service_name]['git'], service_path ] if 'git_branch' in config['repositories'][service_name]: clone_cmd.append("-b") clone_cmd.append(config['repositories'][service_name]['git_branch']) subprocess.call(clone_cmd) subprocess.call([ "git", "pull", ], cwd=service_path) docker_compose_command = [ "docker-compose", "-f","docker-compose.yml", ] if os.path.isfile(service_path + "/" + "docker-compose-dev-deps.yml"): docker_compose_command.append("-f") docker_compose_command.append("docker-compose-dev-deps.yml") docker_compose_command.append("build") if subprocess.call(docker_compose_command, cwd=service_path, env=os.environ.copy()) != 0: raise Exception("{} failed".format(docker_compose_command)) diff --git a/bin/wtl-services-run b/bin/wtl-services-run index e8ad0c9..aa2a755 100755 --- a/bin/wtl-services-run +++ b/bin/wtl-services-run @@ -1,63 +1,30 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import os -import argcomplete, argparse -import yaml -import subprocess -from pprint import pprint - -WTL_DEV_KIT_PATH = os.environ.get("WTL_DEV_KIT_PATH") -WTL_DEV_KIT_REPOS_PATH = os.environ.get("WTL_DEV_KIT_REPOS_PATH") -WTL_DEV_KIT_BIN_PATH = os.environ.get("WTL_DEV_KIT_BIN_PATH") - -config = {} - -with open(WTL_DEV_KIT_PATH + "/config/config.yml") as fh: - config['config'] = yaml.load(fh) - -if os.path.isfile(WTL_DEV_KIT_PATH + "/config/repositories.yml"): - with open(WTL_DEV_KIT_PATH + "/config/repositories.yml") as fh: - config['repositories'] = yaml.load(fh) -else: - with open(WTL_DEV_KIT_PATH + "/config/repositories.example.yml") as fh: - config['repositories'] = yaml.load(fh) - -parser = argparse.ArgumentParser() - -argcomplete.autocomplete(parser) -args = parser.parse_args() - -os.environ['KEYCLOAK_URI'] = 'http://{host_ip}:9080'.format(host_ip=config['config']['host_ip']) -os.environ['COURSES_BACKEND_URI'] = 'http://{host_ip}:10000'.format(host_ip=config['config']['host_ip']) -os.environ['CHAPTERS_BACKEND_URI'] = 'http://{host_ip}:10001'.format(host_ip=config['config']['host_ip']) -os.environ['PAGES_BACKEND_URI'] = 'http://{host_ip}:10002'.format(host_ip=config['config']['host_ip']) -os.environ['COURSE_MIDTIER_URI'] = 'http://{host_ip}:11000'.format(host_ip=config['config']['host_ip']) -os.environ['PWA_GATEWAY_URI'] = 'http://{host_ip}:12000'.format(host_ip=config['config']['host_ip']) -os.environ['MONGO_HOST'] = 'mongodb://{host_ip}:27017'.format(host_ip=config['config']['host_ip']) -os.environ['PUBLIC_KEYCLOAK_URI'] = 'http://localhost:9080' -os.environ['PUBLIC_PWA_GATEWAY_URI'] = 'http://localhost:12000' +import os,sys +sys.path.insert(0, os.path.realpath(os.path.dirname(os.path.abspath(__file__)) + "/../pythonlibs/")) +from basicsetup import * for service_name in [ "shared-services", "courses-backend", "chapters-backend", "pages-backend", "coursessecurity-backend", "course-midtier", "pwa-gateway", "frontend", ]: if service_name in config['repositories']: service_path = WTL_DEV_KIT_REPOS_PATH + "/" + service_name print("Run '{service_name}'".format(service_name=service_name)) docker_compose_command = [ "docker-compose", "-f","docker-compose.yml", ] if os.path.isfile(service_path + "/" + "docker-compose-dev-deps.yml"): docker_compose_command.append("-f") docker_compose_command.append("docker-compose-dev-deps.yml") docker_compose_command.append("up") docker_compose_command.append("-d") subprocess.call(docker_compose_command, cwd=service_path) diff --git a/bin/wtl-services-stop b/bin/wtl-services-stop index 722bf32..61c1df1 100755 --- a/bin/wtl-services-stop +++ b/bin/wtl-services-stop @@ -1,62 +1,29 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import os -import argcomplete, argparse -import yaml -import subprocess -from pprint import pprint - -WTL_DEV_KIT_PATH = os.environ.get("WTL_DEV_KIT_PATH") -WTL_DEV_KIT_REPOS_PATH = os.environ.get("WTL_DEV_KIT_REPOS_PATH") -WTL_DEV_KIT_BIN_PATH = os.environ.get("WTL_DEV_KIT_BIN_PATH") - -config = {} - -with open(WTL_DEV_KIT_PATH + "/config/config.yml") as fh: - config['config'] = yaml.load(fh) - -if os.path.isfile(WTL_DEV_KIT_PATH + "/config/repositories.yml"): - with open(WTL_DEV_KIT_PATH + "/config/repositories.yml") as fh: - config['repositories'] = yaml.load(fh) -else: - with open(WTL_DEV_KIT_PATH + "/config/repositories.example.yml") as fh: - config['repositories'] = yaml.load(fh) - -parser = argparse.ArgumentParser() - -argcomplete.autocomplete(parser) -args = parser.parse_args() - -os.environ['KEYCLOAK_URI'] = 'http://{host_ip}:9080'.format(host_ip=config['config']['host_ip']) -os.environ['COURSES_BACKEND_URI'] = 'http://{host_ip}:10000'.format(host_ip=config['config']['host_ip']) -os.environ['CHAPTERS_BACKEND_URI'] = 'http://{host_ip}:10001'.format(host_ip=config['config']['host_ip']) -os.environ['PAGES_BACKEND_URI'] = 'http://{host_ip}:10002'.format(host_ip=config['config']['host_ip']) -os.environ['COURSE_MIDTIER_URI'] = 'http://{host_ip}:11000'.format(host_ip=config['config']['host_ip']) -os.environ['PWA_GATEWAY_URI'] = 'http://{host_ip}:12000'.format(host_ip=config['config']['host_ip']) -os.environ['MONGO_HOST'] = 'mongodb://{host_ip}:27017'.format(host_ip=config['config']['host_ip']) -os.environ['PUBLIC_KEYCLOAK_URI'] = 'http://localhost:9080' -os.environ['PUBLIC_PWA_GATEWAY_URI'] = 'http://localhost:12000' +import os,sys +sys.path.insert(0, os.path.realpath(os.path.dirname(os.path.abspath(__file__)) + "/../pythonlibs/")) +from basicsetup import * for service_name in reversed([ "shared-services", "courses-backend", "chapters-backend", "pages-backend", "coursessecurity-backend", "course-midtier", "pwa-gateway", "frontend", ]): if service_name in config['repositories']: service_path = WTL_DEV_KIT_REPOS_PATH + "/" + service_name print("Stop '{service_name}'".format(service_name=service_name)) docker_compose_command = [ "docker-compose", "-f","docker-compose.yml", ] if os.path.isfile(service_path + "/" + "docker-compose-dev-deps.yml"): docker_compose_command.append("-f") docker_compose_command.append("docker-compose-dev-deps.yml") docker_compose_command.append("down") subprocess.call(docker_compose_command, cwd=service_path) diff --git a/pythonlibs/__init__.py b/pythonlibs/__init__.py new file mode 100644 index 0000000..7d4feb5 --- /dev/null +++ b/pythonlibs/__init__.py @@ -0,0 +1 @@ +import .basicsetup diff --git a/bin/wtl-services-stop b/pythonlibs/basicsetup.py old mode 100755 new mode 100644 similarity index 64% copy from bin/wtl-services-stop copy to pythonlibs/basicsetup.py index 722bf32..ae8e7e0 --- a/bin/wtl-services-stop +++ b/pythonlibs/basicsetup.py @@ -1,62 +1,41 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- +from pprint import pprint import os import argcomplete, argparse import yaml import subprocess -from pprint import pprint +import requests +import uuid +import time WTL_DEV_KIT_PATH = os.environ.get("WTL_DEV_KIT_PATH") WTL_DEV_KIT_REPOS_PATH = os.environ.get("WTL_DEV_KIT_REPOS_PATH") WTL_DEV_KIT_BIN_PATH = os.environ.get("WTL_DEV_KIT_BIN_PATH") +WTL_DEV_KIT_TMP_PATH = WTL_DEV_KIT_PATH + "/tmp/" + config = {} with open(WTL_DEV_KIT_PATH + "/config/config.yml") as fh: config['config'] = yaml.load(fh) if os.path.isfile(WTL_DEV_KIT_PATH + "/config/repositories.yml"): with open(WTL_DEV_KIT_PATH + "/config/repositories.yml") as fh: config['repositories'] = yaml.load(fh) else: with open(WTL_DEV_KIT_PATH + "/config/repositories.example.yml") as fh: config['repositories'] = yaml.load(fh) -parser = argparse.ArgumentParser() - -argcomplete.autocomplete(parser) -args = parser.parse_args() - os.environ['KEYCLOAK_URI'] = 'http://{host_ip}:9080'.format(host_ip=config['config']['host_ip']) os.environ['COURSES_BACKEND_URI'] = 'http://{host_ip}:10000'.format(host_ip=config['config']['host_ip']) os.environ['CHAPTERS_BACKEND_URI'] = 'http://{host_ip}:10001'.format(host_ip=config['config']['host_ip']) os.environ['PAGES_BACKEND_URI'] = 'http://{host_ip}:10002'.format(host_ip=config['config']['host_ip']) os.environ['COURSE_MIDTIER_URI'] = 'http://{host_ip}:11000'.format(host_ip=config['config']['host_ip']) os.environ['PWA_GATEWAY_URI'] = 'http://{host_ip}:12000'.format(host_ip=config['config']['host_ip']) os.environ['MONGO_HOST'] = 'mongodb://{host_ip}:27017'.format(host_ip=config['config']['host_ip']) os.environ['PUBLIC_KEYCLOAK_URI'] = 'http://localhost:9080' os.environ['PUBLIC_PWA_GATEWAY_URI'] = 'http://localhost:12000' -for service_name in reversed([ - "shared-services", - "courses-backend", - "chapters-backend", - "pages-backend", - "coursessecurity-backend", - "course-midtier", - "pwa-gateway", - "frontend", - ]): - if service_name in config['repositories']: - service_path = WTL_DEV_KIT_REPOS_PATH + "/" + service_name - print("Stop '{service_name}'".format(service_name=service_name)) - docker_compose_command = [ - "docker-compose", - "-f","docker-compose.yml", - ] - if os.path.isfile(service_path + "/" + "docker-compose-dev-deps.yml"): - docker_compose_command.append("-f") - docker_compose_command.append("docker-compose-dev-deps.yml") - docker_compose_command.append("down") - - subprocess.call(docker_compose_command, cwd=service_path) +parser = argparse.ArgumentParser() + +argcomplete.autocomplete(parser) +args = parser.parse_args()