From b9d77fc23fbeb2b3fdb124e310d3007212f482cd Mon Sep 17 00:00:00 2001 From: liangjunhao <3220663807@qq.com> Date: Wed, 26 Jun 2024 17:35:33 +0800 Subject: [PATCH 1/2] fix: dind installation docking resource problem Signed-off-by: liangjunhao <3220663807@qq.com> --- default_region_sqlite.py | 110 ++++++++++++++++++++++++++++++++++++ entrypoint.sh | 30 +++++++--- openapi/sub_urls/app_url.py | 2 +- openapi/urls.py | 1 - 4 files changed, 133 insertions(+), 10 deletions(-) create mode 100644 default_region_sqlite.py diff --git a/default_region_sqlite.py b/default_region_sqlite.py new file mode 100644 index 0000000000..cc99af4fa2 --- /dev/null +++ b/default_region_sqlite.py @@ -0,0 +1,110 @@ +# -*- coding: UTF-8 -*- +import datetime +import os +import uuid + +import sqlite3 + + +def create_db_client(): + db = sqlite3.connect('/app/data/db.sqlite3') + return db + + +def make_uuid(key=None): + random_uuid = str(uuid.uuid4()).replace('-', '') + return random_uuid + + +def get_region_id(): + return make_uuid() + + +def get_url(): + return os.environ.get('REGION_URL') + + +def get_wsurl(): + return os.environ.get('REGION_WS_URL') + + +def get_http_domain(): + return os.environ.get('REGION_HTTP_DOMAIN') + + +def get_tcp_domain(): + return os.environ.get('REGION_TCP_DOMAIN') + + +# 获取文件的内容 +def get_contends(path): + with open(path) as file_object: + contends = file_object.read() + return contends + + +def get_ssl_ca_cert(): + content = get_contends("/app/region/ssl/ca.pem") + print(content) + return content + + +def get_cert_file(): + content = get_contends("/app/region/ssl/client.pem") + print(content) + return content + + +def get_key_file(): + content = get_contends("/app/region/ssl/client.key.pem") + print(content) + return content + + +def get_current_time(): + create_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + print(create_time) + return create_time + + +def get_sql(): + sql = 'INSERT INTO region_info (`region_id`,`region_name`,`region_alias`,`url`,`status`,`desc`,`wsurl`, \ + `httpdomain`,`tcpdomain`,`scope`,`ssl_ca_cert`,`cert_file`,`key_file`,`create_time`) VALUES ("{0}", "rainbond", \ + "默认集群", "{1}", "1", "当前集群是默认安装添加的集群", "{2}", "{3}", "{4}", "private", \ + "{5}", "{6}", "{7}", "{8}" )'.format(get_region_id(), get_url(), get_wsurl(), get_http_domain(), get_tcp_domain(), + get_ssl_ca_cert(), get_cert_file(), get_key_file(), get_current_time()) + print(sql) + return sql + + +def insert_default_region_info(): + sql = get_sql() + db = create_db_client() + cursor = db.cursor() + cursor.execute(sql) + cursor.close() + db.commit() + db.close() + + +def get_region_info(): + print("get region info") + db = create_db_client() + cursor = db.cursor() + cursor.execute("select * from region_info") + data = cursor.fetchone() + cursor.close() + db.commit() + db.close() + return data + + +if __name__ == '__main__': + print("Initialize default region info ") + region_info = get_region_info() + if region_info: + print("default region info already exists, skip it") + else: + print("default region info do not exists, init it") + insert_default_region_info() + print("init default region info success") diff --git a/entrypoint.sh b/entrypoint.sh index 17dc6df304..8d93d510aa 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -48,22 +48,36 @@ function init_database() { return 0 } -if [ "$1" = "debug" -o "$1" = "bash" ]; then - exec /bin/bash -elif [ "$1" = "version" ]; then - echo "${RELEASE_DESC}" -elif [ "$1" = "init" ]; then - if ! (init_database); then +use_sqlite() { + # shellcheck disable=SC1035 + if !(python default_region_sqlite.py 2> /dev/null); then + echo -e "${RED}failed to default_region${NC}" exit 1 fi +} + +use_mysql() { if !(python default_region.py 2> /dev/null); then - echo -e "${RED}failed to default_region${NC}" - exit 1 + echo -e "${RED}failed to default_region${NC}" + exit 1 fi +} + +if [ "$1" = "debug" -o "$1" = "bash" ]; then + exec /bin/bash +elif [ "$1" = "version" ]; then + echo "${RELEASE_DESC}" else if ! (init_database); then exit 1 fi + if [ "${INSTALL_TYPE}" != "allinone" ]; then + if [ "$DB_TYPE" != "mysql" ]; then + use_sqlite + else + use_mysql + fi + fi # python upgrade.py exec gunicorn goodrain_web.wsgi -b 0.0.0.0:${PORT:-7070} --max-requests=5000 -k gevent --reload --workers=2 --timeout=75 --log-file - --access-logfile - --error-logfile - fi diff --git a/openapi/sub_urls/app_url.py b/openapi/sub_urls/app_url.py index 7f93cc300b..922351b79f 100644 --- a/openapi/sub_urls/app_url.py +++ b/openapi/sub_urls/app_url.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # creater by: barnett -from console.utils import perms_route_config as perms + from django.conf.urls import url from openapi.views.apps.apps import (AppInfoView, APPOperationsView, AppServiceEventsView, AppServicesView, AppServiceTelescopicHorizontalView, AppServiceTelescopicVerticalView, ComponentBuildView, diff --git a/openapi/urls.py b/openapi/urls.py index 758e0e984d..823b084d76 100644 --- a/openapi/urls.py +++ b/openapi/urls.py @@ -2,7 +2,6 @@ # creater by: barnett import os -from console.utils import perms_route_config as perms from django.conf.urls import include, url from drf_yasg import openapi from drf_yasg.views import get_schema_view From b26ce553cc24f99cced244ce5924fc1876df002a Mon Sep 17 00:00:00 2001 From: liangjunhao <3220663807@qq.com> Date: Tue, 2 Jul 2024 11:24:46 +0800 Subject: [PATCH 2/2] fix: modify config table sql query conditions Signed-off-by: liangjunhao <3220663807@qq.com> --- console/services/config_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/console/services/config_service.py b/console/services/config_service.py index 5c6f5e881d..8b8ed38f72 100644 --- a/console/services/config_service.py +++ b/console/services/config_service.py @@ -107,7 +107,7 @@ def add_config(self, key, default_value, type, enable=True, desc=""): def get_config_by_key(self, key): try: - return ConsoleSysConfig.objects.get(key=key, enterprise_id=self.enterprise_id) + return ConsoleSysConfig.objects.get(key=key) except ConsoleSysConfig.DoesNotExist: return None