From 7f3df272e90d3f76933552af22a0d55645af0732 Mon Sep 17 00:00:00 2001 From: SunnyQjm Date: Fri, 3 Feb 2023 10:09:13 +0800 Subject: [PATCH] feat: Add microservices demo --- script/server/0_local_services/sysom.conf | 9 ++++- script/server/7_sysom_demo/clear.sh | 8 +++++ script/server/7_sysom_demo/init.sh | 43 +++++++++++++++++++++++ script/server/7_sysom_demo/start.sh | 7 ++++ script/server/7_sysom_demo/stop.sh | 7 ++++ script/server/7_sysom_demo/sysom-demo.ini | 9 +++++ script/server/conf | 5 ++- sysom_server/sysom_demo/main.py | 29 +++++++++++++++ 8 files changed, 115 insertions(+), 2 deletions(-) create mode 100755 script/server/7_sysom_demo/clear.sh create mode 100755 script/server/7_sysom_demo/init.sh create mode 100755 script/server/7_sysom_demo/start.sh create mode 100755 script/server/7_sysom_demo/stop.sh create mode 100644 script/server/7_sysom_demo/sysom-demo.ini create mode 100644 sysom_server/sysom_demo/main.py diff --git a/script/server/0_local_services/sysom.conf b/script/server/0_local_services/sysom.conf index 6f753811..6849ef5d 100644 --- a/script/server/0_local_services/sysom.conf +++ b/script/server/0_local_services/sysom.conf @@ -95,7 +95,14 @@ server { proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - + + location /api/v1/demo/ { + proxy_pass http://127.0.0.1:7008; + proxy_read_timeout 180; + proxy_redirect off; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location /api/ { proxy_pass http://127.0.0.1:7001; proxy_read_timeout 180s; diff --git a/script/server/7_sysom_demo/clear.sh b/script/server/7_sysom_demo/clear.sh new file mode 100755 index 00000000..e3b06f08 --- /dev/null +++ b/script/server/7_sysom_demo/clear.sh @@ -0,0 +1,8 @@ +#!/bin/bash +SERVICE_NAME=sysom-demo +clear_app() { + rm -rf /etc/supervisord.d/${SERVICE_NAME}.ini + ###use supervisorctl update to stop and clear services### + supervisorctl update +} +clear_app diff --git a/script/server/7_sysom_demo/init.sh b/script/server/7_sysom_demo/init.sh new file mode 100755 index 00000000..eb4706d0 --- /dev/null +++ b/script/server/7_sysom_demo/init.sh @@ -0,0 +1,43 @@ +#!/bin/bash +SERVER_DIR="sysom_server" +DEMO_DIR=${SERVER_DIR}/sysom_demo +VIRTUALENV_HOME=${SERVER_HOME}/virtualenv +TARGET_PATH=${SERVER_HOME}/target +SERVICE_NAME=sysom-demo + +if [ "$UID" -ne 0 ]; then + echo "Please run as root" + exit 1 +fi + +source_virtualenv() { + echo "INFO: activate virtualenv..." + source ${VIRTUALENV_HOME}/bin/activate || exit 1 +} + +init_conf() { + cp ${SERVICE_NAME}.ini /etc/supervisord.d/ + ###change the install dir base on param $1### + sed -i "s;/usr/local/sysom;${APP_HOME};g" /etc/supervisord.d/${SERVICE_NAME}.ini +} + +start_app() { + ###if supervisor service started, we need use "supervisorctl update" to start new conf#### + supervisorctl update + supervisorctl status ${SERVICE_NAME} + if [ $? -eq 0 ] + then + echo "supervisorctl start ${SERVICE_NAME} success..." + return 0 + fi + echo "${SERVICE_NAME} service start fail, please check log" + exit 1 +} + +deploy() { + source_virtualenv + init_conf + start_app +} + +deploy diff --git a/script/server/7_sysom_demo/start.sh b/script/server/7_sysom_demo/start.sh new file mode 100755 index 00000000..f42c6ddc --- /dev/null +++ b/script/server/7_sysom_demo/start.sh @@ -0,0 +1,7 @@ +#!/bin/bash +SERVICE_NAME=sysom-demo +start_app() { + supervisorctl start $SERVICE_NAME +} + +start_app diff --git a/script/server/7_sysom_demo/stop.sh b/script/server/7_sysom_demo/stop.sh new file mode 100755 index 00000000..61269da4 --- /dev/null +++ b/script/server/7_sysom_demo/stop.sh @@ -0,0 +1,7 @@ +#!/bin/bash +SERVICE_NAME=sysom-demo +stop_app() { + supervisorctl stop $SERVICE_NAME +} + +stop_app diff --git a/script/server/7_sysom_demo/sysom-demo.ini b/script/server/7_sysom_demo/sysom-demo.ini new file mode 100644 index 00000000..ca55b89f --- /dev/null +++ b/script/server/7_sysom_demo/sysom-demo.ini @@ -0,0 +1,9 @@ +[program:sysom-demo] +directory = /usr/local/sysom/server/target/sysom_server/sysom_demo +command=/usr/local/sysom/server/virtualenv/bin/uvicorn main:app --port 7007 +startsecs=3 +autostart=true +autorestart=true +environment=PATH="/usr/local/sysom/server/virtualenv/bin/" +stderr_logfile=/usr/local/sysom/server/logs/sysom-demo-error.log +stdout_logfile=/usr/local/sysom/server/logs/sysom-demo.log diff --git a/script/server/conf b/script/server/conf index 48488b5a..f00fae4e 100644 --- a/script/server/conf +++ b/script/server/conf @@ -20,4 +20,7 @@ 5_sysom_migration [hotfix] -6_sysom_hotfix \ No newline at end of file +6_sysom_hotfix + +[demo] +7_sysom_demo diff --git a/sysom_server/sysom_demo/main.py b/sysom_server/sysom_demo/main.py new file mode 100644 index 00000000..d983ab36 --- /dev/null +++ b/sysom_server/sysom_demo/main.py @@ -0,0 +1,29 @@ +from fastapi import FastAPI +from channel_job import default_channel_job_executor + +SYSOM_CEC_URL = "redis://localhost:6379?cec_default_max_len=1000&cec_auto_mk_topic=true" +CHANNEL_JOB_URL = f"{SYSOM_CEC_URL}&channel_job_target_topic=SYSOM_CEC_CHANNEL_TOPIC" \ + f"&channel_job_listen_topic=SYSOM_CEC_DEMO_TOPIC" \ + f"&channel_job_consumer_group=SYSOM_CEC_DEMO_CONSUMER_GROUP" + +default_channel_job_executor.init_config(CHANNEL_JOB_URL) +default_channel_job_executor.start() + +app = FastAPI() + +@app.get("/api/v1/demo/get_kernel_info/{instance}") +async def get_kernel_info(instance: str): + job = default_channel_job_executor.dispatch_job( + channel_type="ssh", + channel_opt="cmd", + params={ + "instance": instance, + "command": "uname -a" + } + ) + channel_result = await job.execute_async() + return { + "code": channel_result.code, + "err_msg": channel_result.err_msg, + "result": channel_result.result + } \ No newline at end of file