Update to micro-service settings
This commit is contained in:
parent
9b38025f20
commit
1c8e36b1da
@ -4,25 +4,25 @@ FROM python:3.10-slim-bullseye
|
||||
ARG CONTAINER_APP_ROOT="/app"
|
||||
ENV APP_NAME="authentication"
|
||||
|
||||
ENV DEVSVC_WEBAPI_URL_BASE=""
|
||||
ENV NOTIFICATION_WEBAPI_URL_BASE=""
|
||||
ENV DEVSVC_WEBAPI_URL_BASE="http://devsvc:8007/api/devsvc"
|
||||
ENV NOTIFICATION_WEBAPI_URL_BASE="http://notification:8003/api/notification/"
|
||||
|
||||
ENV JWT_SECRET_KEY=""
|
||||
ENV JWT_ALGORITHM=""
|
||||
ENV JWT_SECRET_KEY="8f87ca8c3c9c3df09a9c78e0adb0927855568f6072d9efc892534aee35f5867b"
|
||||
ENV JWT_ALGORITHM="HS256"
|
||||
|
||||
#site_settings
|
||||
ENV SERVICE_API_ACCESS_HOST=0.0.0.0
|
||||
ENV SERVICE_API_ACCESS_PORT=8004
|
||||
ENV MONGODB_NAME=
|
||||
ENV MONGODB_PORT=
|
||||
ENV MONGODB_URI=
|
||||
ENV MONGODB_NAME=freeleaps2
|
||||
ENV MONGODB_PORT=27017
|
||||
ENV MONGODB_URI="mongodb://localhost:27017/"
|
||||
|
||||
|
||||
|
||||
#log_settings
|
||||
ENV LOG_BASE_PATH=
|
||||
ENV BACKEND_LOG_FILE_NAME=
|
||||
ENV APPLICATION_ACTIVITY_LOG=
|
||||
ENV LOG_BASE_PATH=$CONTAINER_APP_ROOT/log/$APP_NAME
|
||||
ENV BACKEND_LOG_FILE_NAME=$APP_NAME
|
||||
ENV APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
|
||||
|
||||
|
||||
WORKDIR ${CONTAINER_APP_ROOT}
|
||||
|
||||
@ -109,24 +109,6 @@ class UserAuthHandler:
|
||||
def user_sign_out(self, token):
|
||||
pass
|
||||
|
||||
async def generate_auth_code_for_email(self, email: str) -> str:
|
||||
"""send auth code to email address
|
||||
|
||||
Args:
|
||||
email (str): email address
|
||||
"""
|
||||
auth_code = generate_auth_code()
|
||||
expiry = datetime.now(timezone.utc) + timedelta(minutes=5)
|
||||
auth_code_doc = AuthCodeDoc(
|
||||
auth_code=auth_code,
|
||||
method=email.lower(),
|
||||
method_type=AuthType.EMAIL,
|
||||
expiry=expiry,
|
||||
)
|
||||
|
||||
await auth_code_doc.create()
|
||||
return auth_code
|
||||
|
||||
async def verify_email_code(self, email: str, code: str) -> bool:
|
||||
"""sign in with email and code
|
||||
|
||||
|
||||
@ -1,25 +1,25 @@
|
||||
FROM python:3.10-slim-buster
|
||||
|
||||
# docker settings
|
||||
ARG CONTAINER_APP_ROOT=
|
||||
ENV APP_NAME=
|
||||
ARG CONTAINER_APP_ROOT="/app"
|
||||
ENV APP_NAME="central_storage"
|
||||
|
||||
ENV AZURE_STORAGE_DOCUMENT_API_KEY=""
|
||||
ENV AZURE_STORAGE_DOCUMENT_API_ENDPOINT=""
|
||||
ENV AZURE_STORAGE_DOCUMENT_API_KEY="Cg+wtKpHt6Bo6bTUtjic40cRNRZ8NCI3JYBY69BNPgFJARVx/c18iVC7cASbJfzukyu4pksyhUep+AStFdpH7Q=="
|
||||
ENV AZURE_STORAGE_DOCUMENT_API_ENDPOINT="https://freeleaps1document.blob.core.windows.net/"
|
||||
|
||||
#site_settings
|
||||
ENV SERVICE_API_ACCESS_HOST=0.0.0.0
|
||||
ENV SERVICE_API_ACCESS_PORT=8005
|
||||
ENV MONGODB_NAME=
|
||||
ENV MONGODB_PORT=
|
||||
ENV MONGODB_URI=
|
||||
ENV MONGODB_NAME=freeleaps2
|
||||
ENV MONGODB_PORT=27017
|
||||
ENV MONGODB_URI="mongodb://localhost:27017/"
|
||||
|
||||
|
||||
|
||||
#log_settings
|
||||
ENV LOG_BASE_PATH=
|
||||
ENV BACKEND_LOG_FILE_NAME=
|
||||
ENV APPLICATION_ACTIVITY_LOG=
|
||||
ENV LOG_BASE_PATH=$CONTAINER_APP_ROOT/log/$APP_NAME
|
||||
ENV BACKEND_LOG_FILE_NAME=$APP_NAME
|
||||
ENV APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
|
||||
|
||||
|
||||
WORKDIR ${CONTAINER_APP_ROOT}
|
||||
|
||||
@ -4,8 +4,8 @@ FROM python:3.10-slim-buster
|
||||
ARG CONTAINER_APP_ROOT="/app"
|
||||
ENV APP_NAME="content"
|
||||
|
||||
ENV FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET=""
|
||||
ENV CENTRAL_STORAGE_WEBAPI_URL_BASE=""
|
||||
ENV FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET="jTu8Q~WceiK-5dfZB44Ww-K4fVGi3_5tHNWYYbdX"
|
||||
ENV CENTRAL_STORAGE_WEBAPI_URL_BASE="http://central_storage:8005/api/central_storage/"
|
||||
|
||||
#site_settings
|
||||
ENV SERVICE_API_ACCESS_HOST=0.0.0.0
|
||||
@ -17,9 +17,9 @@ ENV MONGODB_URI="mongodb://freeleaps2-mongodb:27017"
|
||||
|
||||
|
||||
#log_settings
|
||||
ENV LOG_BASE_PATH=
|
||||
ENV BACKEND_LOG_FILE_NAME=
|
||||
ENV APPLICATION_ACTIVITY_LOG=
|
||||
ENV LOG_BASE_PATH=$CONTAINER_APP_ROOT/log/$APP_NAME
|
||||
ENV BACKEND_LOG_FILE_NAME=$APP_NAME
|
||||
ENV APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
|
||||
|
||||
|
||||
WORKDIR ${CONTAINER_APP_ROOT}
|
||||
|
||||
@ -4,29 +4,33 @@ from datetime import datetime, timedelta, timezone
|
||||
from backend.sharepoint.sharepoint_graph_client import SharePointGraphClient
|
||||
from common.constants.region import UserRegion
|
||||
from backend.document.document_manager import DocumentManager
|
||||
from backend.content.constants import ContentSource, ContentMediaType, ContentDataFormat, ContentFileConstants
|
||||
from backend.content.constants import (
|
||||
ContentSource,
|
||||
ContentFileConstants,
|
||||
)
|
||||
from backend.content.models import ContentDirectory, ContentFolderDoc
|
||||
|
||||
|
||||
class ContentSharePointManager:
|
||||
def __init__(self) -> None:
|
||||
self.sharepoint_client = SharePointGraphClient(
|
||||
tenant_id='cf151ee8-5c2c-4fe7-a1c4-809ba43c9f24',
|
||||
client_id='a91e3c1d-d55d-423d-83cb-a736df229817',
|
||||
client_secret= app_settings.FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET,
|
||||
tenant_id="cf151ee8-5c2c-4fe7-a1c4-809ba43c9f24",
|
||||
client_id="a91e3c1d-d55d-423d-83cb-a736df229817",
|
||||
client_secret=app_settings.FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET,
|
||||
host_name="netorgft10898514.sharepoint.com",
|
||||
site_name="MediaRoom"
|
||||
site_name="MediaRoom",
|
||||
)
|
||||
self.sharepoint_client.set_document_scope(
|
||||
document_library="freeleaps",
|
||||
root_folder="production"
|
||||
document_library="freeleaps", root_folder="production"
|
||||
)
|
||||
self.share_point_file_expiry = timedelta(hours=24)
|
||||
|
||||
def __generate_created__by__(self, folder_name):
|
||||
return "content-service-" + folder_name.replace('/', '-').lower()
|
||||
return "content-service-" + folder_name.replace("/", "-").lower()
|
||||
|
||||
async def retrieve_directories_for_folder(self, folder_name: str, region: UserRegion):
|
||||
async def retrieve_directories_for_folder(
|
||||
self, folder_name: str, region: UserRegion
|
||||
):
|
||||
content_folder_name = folder_name + "/" + region.name
|
||||
sp_folders = self.sharepoint_client.list_sub_folders(content_folder_name)
|
||||
current_time = datetime.now(timezone.utc)
|
||||
@ -42,70 +46,90 @@ class ContentSharePointManager:
|
||||
udpate_time=current_time,
|
||||
update_source=ContentSource.SHAREPOINT,
|
||||
valid_thru=current_time + self.share_point_file_expiry,
|
||||
region=region
|
||||
region=region,
|
||||
)
|
||||
else:
|
||||
folder.content_directories.clear()
|
||||
|
||||
for sp_folder in sp_folders:
|
||||
content_directory = ContentDirectory(
|
||||
content_name=sp_folder['name'],
|
||||
content_name=sp_folder["name"],
|
||||
cover_document_id=None,
|
||||
summary_text=None,
|
||||
title_text=None,
|
||||
content_link=None,
|
||||
content_document_id=None,
|
||||
)
|
||||
sp_files = self.sharepoint_client.list_files(content_folder_name + "/" + sp_folder['name'])
|
||||
sp_files = self.sharepoint_client.list_files(
|
||||
content_folder_name + "/" + sp_folder["name"]
|
||||
)
|
||||
for sp_file in sp_files:
|
||||
if (
|
||||
sp_file['name'].lower()
|
||||
sp_file["name"].lower()
|
||||
== ContentFileConstants.COVER_FILE_NAME.lower()
|
||||
):
|
||||
cover_file_content = self.sharepoint_client.get_file_content(sp_file['id'])
|
||||
cover_file_content = self.sharepoint_client.get_file_content(
|
||||
sp_file["id"]
|
||||
)
|
||||
cover_document_manager = DocumentManager()
|
||||
file_name=sp_file['name'].lower()
|
||||
created_by=self.__generate_created__by__(folder_name=folder_name)
|
||||
content_directory.cover_document_id = await cover_document_manager.save_document_file(
|
||||
file_name = sp_file["name"].lower()
|
||||
created_by = self.__generate_created__by__(folder_name=folder_name)
|
||||
content_directory.cover_document_id = (
|
||||
await cover_document_manager.save_document_file(
|
||||
created_by, file_name, cover_file_content
|
||||
)
|
||||
)
|
||||
|
||||
elif (
|
||||
sp_file['name'].lower()
|
||||
sp_file["name"].lower()
|
||||
== ContentFileConstants.SUMMARY_FILE_NAME.lower()
|
||||
):
|
||||
content_directory.summary_text = self.sharepoint_client.get_file_content(sp_file['id'])
|
||||
content_directory.summary_text = (
|
||||
self.sharepoint_client.get_file_content(sp_file["id"])
|
||||
)
|
||||
elif (
|
||||
sp_file['name'].lower()
|
||||
sp_file["name"].lower()
|
||||
== ContentFileConstants.TITLE_FILE_NAME.lower()
|
||||
):
|
||||
content_directory.title_text = self.sharepoint_client.get_file_content(sp_file['id'])
|
||||
content_directory.title_text = (
|
||||
self.sharepoint_client.get_file_content(sp_file["id"])
|
||||
)
|
||||
elif (
|
||||
sp_file['name'].lower()
|
||||
sp_file["name"].lower()
|
||||
== ContentFileConstants.CONTENT_LINK_FILE_NAME.lower()
|
||||
):
|
||||
content_directory.content_link = self.sharepoint_client.get_file_content(sp_file['id'])
|
||||
content_directory.content_link = (
|
||||
self.sharepoint_client.get_file_content(sp_file["id"])
|
||||
)
|
||||
elif (
|
||||
sp_file['name'].lower()
|
||||
sp_file["name"].lower()
|
||||
== ContentFileConstants.CONTENT_HTML_FILE_NAME.lower()
|
||||
):
|
||||
content_directory.content_html = self.sharepoint_client.get_file_content(sp_file['id'])
|
||||
content_directory.content_html = (
|
||||
self.sharepoint_client.get_file_content(sp_file["id"])
|
||||
)
|
||||
elif (
|
||||
sp_file['name'].lower()
|
||||
sp_file["name"].lower()
|
||||
== ContentFileConstants.CONTENT_TEXT_FILE_NAME.lower()
|
||||
):
|
||||
content_directory.content_text = self.sharepoint_client.get_file_content(sp_file['id'])
|
||||
content_directory.content_text = (
|
||||
self.sharepoint_client.get_file_content(sp_file["id"])
|
||||
)
|
||||
elif (
|
||||
sp_file['name'].lower()
|
||||
sp_file["name"].lower()
|
||||
== ContentFileConstants.CONTENT_PDF_FILE_NAME.lower()
|
||||
):
|
||||
content_file_content = self.sharepoint_client.get_file_content(sp_file['id'])
|
||||
content_file_content = self.sharepoint_client.get_file_content(
|
||||
sp_file["id"]
|
||||
)
|
||||
content_document_manager = DocumentManager()
|
||||
file_name=sp_file['name']
|
||||
created_by=self.__generate_created__by__(folder_name=folder_name)
|
||||
content_directory.content_document_id = await content_document_manager.save_document_file(
|
||||
file_name = sp_file["name"]
|
||||
created_by = self.__generate_created__by__(folder_name=folder_name)
|
||||
content_directory.content_document_id = (
|
||||
await content_document_manager.save_document_file(
|
||||
created_by, file_name, content_file_content
|
||||
)
|
||||
)
|
||||
|
||||
folder.content_directories.append(content_directory)
|
||||
|
||||
@ -118,8 +142,10 @@ class ContentSharePointManager:
|
||||
current_time = datetime.now(timezone.utc)
|
||||
folders = await ContentFolderDoc.find(
|
||||
ContentFolderDoc.update_source == ContentSource.SHAREPOINT,
|
||||
ContentFolderDoc.valid_thru < current_time
|
||||
ContentFolderDoc.valid_thru < current_time,
|
||||
).to_list()
|
||||
|
||||
for folder in folders:
|
||||
await self.retrieve_directories_for_folder(folder.folder_name, folder.region)
|
||||
await self.retrieve_directories_for_folder(
|
||||
folder.folder_name, folder.region
|
||||
)
|
||||
|
||||
@ -15,12 +15,12 @@ ENV SYSTEM_USER_ID=117f191e810c19729de860aa
|
||||
ENV SMS_FROM=+16898887156
|
||||
ENV EMAIL_FROM=freeleaps@freeleaps.com
|
||||
|
||||
ENV SECRET_KEY=ea84edf152976b2fcec12b78aa8e45bc26a5cf0ef61bf16f5c317ae33b3fd8b0
|
||||
ENV SECRET_KEY=8f87ca8c3c9c3df09a9c78e0adb0927855568f6072d9efc892534aee35f5867b
|
||||
|
||||
ENV SENDGRID_API_KEY=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
|
||||
ENV SENDGRID_API_KEY=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
|
||||
|
||||
ENV TWILIO_ACCOUNT_SID=ACf8c9283a6acda060258eadb29be58bc8
|
||||
ENV TWILIO_AUTH_TOKEN=ef160748cc22c8b7195b49df4b8eca7e
|
||||
ENV TWILIO_AUTH_TOKEN=120165c0550111ddfd58efc97dafc2fe
|
||||
|
||||
|
||||
|
||||
|
||||
25
sites/central_storage/deploy/.env
Normal file
25
sites/central_storage/deploy/.env
Normal file
@ -0,0 +1,25 @@
|
||||
export APP_NAME=central_storage
|
||||
export GIT_REPO_ROOT=/Users/yaojing/Work/Freeleaps/freeleaps-service-hub
|
||||
export APP_PARENT_FOLDER=apps
|
||||
export SERVICE_API_ACCESS_HOST=0.0.0.0
|
||||
export SERVICE_API_ACCESS_PORT=8005
|
||||
export CONTAINER_APP_ROOT=/app
|
||||
export AZURE_STORAGE_DOCUMENT_API_KEY=xbiFtFeQ6v5dozgVM99fZ9huUomL7QcLu6s0y8zYHtIXZ8XdneKDMcg4liQr/9oNlVoRFcZhWjLY+ASt9cjICQ==
|
||||
export AZURE_STORAGE_DOCUMENT_API_ENDPOINT="https://freeleaps1document.blob.core.windows.net/"
|
||||
export LOG_BASE_PATH=$CONTAINER_APP_ROOT/log/$APP_NAME
|
||||
export BACKEND_LOG_FILE_NAME=$APP_NAME
|
||||
export APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
|
||||
export MONGODB_NAME=freeleaps2
|
||||
export MONGODB_PORT=27017
|
||||
export CODEBASE_ROOT=/Users/yaojing/Work/Freeleaps/freeleaps-service-hub/apps/central_storage
|
||||
export WORKING_DIR=/Users/yaojing/Work/Freeleaps/freeleaps-service-hub/sites/central_storage/deploy
|
||||
#!/bin/bash
|
||||
export VENV_DIR=venv_t
|
||||
export VENV_ACTIVATE=venv_t/bin/activate
|
||||
export DOCKER_HOME=/var/lib/docker
|
||||
export DOCKER_APP_HOME=$DOCKER_HOME/app
|
||||
export DOCKER_BACKEND_HOME=$DOCKER_APP_HOME/$APP_NAME
|
||||
export DOCKER_BACKEND_LOG_HOME=$DOCKER_BACKEND_HOME/log
|
||||
export MONGODB_URI=mongodb://freeleaps2-mongodb:27017/
|
||||
export FREELEAPS_ENV=dev
|
||||
|
||||
37
sites/central_storage/deploy/docker-compose.yaml
Executable file
37
sites/central_storage/deploy/docker-compose.yaml
Executable file
@ -0,0 +1,37 @@
|
||||
services:
|
||||
central_storage:
|
||||
container_name: $APP_NAME
|
||||
build:
|
||||
context: ${CODEBASE_ROOT}
|
||||
args:
|
||||
CONTAINER_APP_ROOT: ${CONTAINER_APP_ROOT}
|
||||
profiles: [prod,alpha,dev]
|
||||
restart: always
|
||||
environment:
|
||||
- APP_NAME=${APP_NAME}
|
||||
- MONGODB_NAME=${MONGODB_NAME}
|
||||
- MONGODB_PORT=${MONGODB_PORT}
|
||||
- MONGODB_URI=${MONGODB_URI}
|
||||
- SERVICE_API_ACCESS_HOST=${SERVICE_API_ACCESS_HOST}
|
||||
- SERVICE_API_ACCESS_PORT=${SERVICE_API_ACCESS_PORT}
|
||||
- AZURE_STORAGE_DOCUMENT_API_KEY=${AZURE_STORAGE_DOCUMENT_API_KEY}
|
||||
- AZURE_STORAGE_DOCUMENT_API_ENDPOINT=${AZURE_STORAGE_DOCUMENT_API_ENDPOINT}
|
||||
- LOG_BASE_PATH=${LOG_BASE_PATH}
|
||||
- BACKEND_LOG_FILE_NAME=${BACKEND_LOG_FILE_NAME}
|
||||
- APPLICATION_ACTIVITY_LOG=${APPLICATION_ACTIVITY_LOG}
|
||||
ports:
|
||||
- ${SERVICE_API_ACCESS_PORT}:${SERVICE_API_ACCESS_PORT}
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- |
|
||||
uvicorn webapi.main:app --reload --port=${SERVICE_API_ACCESS_PORT} --host=${SERVICE_API_ACCESS_HOST}
|
||||
networks:
|
||||
- devbox_freeleaps2-network
|
||||
volumes:
|
||||
- type: bind
|
||||
source: $DOCKER_BACKEND_LOG_HOME
|
||||
target: $LOG_BASE_PATH
|
||||
networks:
|
||||
devbox_freeleaps2-network:
|
||||
external: true
|
||||
Loading…
Reference in New Issue
Block a user