Compare commits
No commits in common. "5c0d2064a4e70ba47bcfa641006bb5cf7dc6fe1e" and "3857edd6c51b83cda2de1909f3eb467287bb2482" have entirely different histories.
5c0d2064a4
...
3857edd6c5
@ -18,6 +18,4 @@ data:
|
|||||||
MONGODB_PORT: {{ .Values.authentication.configs.mongodbPort | toString | b64enc }}
|
MONGODB_PORT: {{ .Values.authentication.configs.mongodbPort | toString | b64enc }}
|
||||||
METRICS_ENABLED: {{ .Values.authentication.configs.metricsEnabled | default false | toString | b64enc }}
|
METRICS_ENABLED: {{ .Values.authentication.configs.metricsEnabled | default false | toString | b64enc }}
|
||||||
PROBES_ENABLED: {{ .Values.authentication.configs.probesEnabled | default false | toString | b64enc }}
|
PROBES_ENABLED: {{ .Values.authentication.configs.probesEnabled | default false | toString | b64enc }}
|
||||||
FREELEAPS_PRODUCT_ID: {{ .Values.authentication.configs.freeleapsProductId | b64enc | quote }}
|
|
||||||
ENVIRONMENT: {{ .Values.authentication.configs.environment | b64enc | quote }}
|
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ authentication:
|
|||||||
registry: docker.io
|
registry: docker.io
|
||||||
repository: null
|
repository: null
|
||||||
name: 6901bcf4ed3725f39f11343d-authentication
|
name: 6901bcf4ed3725f39f11343d-authentication
|
||||||
tag: snapshot-a2b3e4e
|
tag: snapshot-e6b358e
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
@ -89,8 +89,6 @@ authentication:
|
|||||||
mongodbPort: 27017
|
mongodbPort: 27017
|
||||||
metricsEnabled: 'false'
|
metricsEnabled: 'false'
|
||||||
probesEnabled: 'true'
|
probesEnabled: 'true'
|
||||||
freeleapsProductId: 6901bcf4ed3725f39f11343d
|
|
||||||
environment: alpha
|
|
||||||
secrets:
|
secrets:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: FreeleapsSecretStore
|
kind: FreeleapsSecretStore
|
||||||
|
|||||||
@ -18,7 +18,7 @@ authentication:
|
|||||||
registry: docker.io
|
registry: docker.io
|
||||||
repository: null
|
repository: null
|
||||||
name: 6901bcf4ed3725f39f11343d-authentication
|
name: 6901bcf4ed3725f39f11343d-authentication
|
||||||
tag: snapshot-5abb2a1
|
tag: snapshot-8584f90
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
@ -97,8 +97,6 @@ authentication:
|
|||||||
mongodbPort: 27017
|
mongodbPort: 27017
|
||||||
metricsEnabled: 'true'
|
metricsEnabled: 'true'
|
||||||
probesEnabled: 'true'
|
probesEnabled: 'true'
|
||||||
freeleapsProductId: 6901bcf4ed3725f39f11343d
|
|
||||||
environment: prod
|
|
||||||
secrets:
|
secrets:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: FreeleapsSecretStore
|
kind: FreeleapsSecretStore
|
||||||
|
|||||||
@ -82,8 +82,6 @@ authentication:
|
|||||||
metricsEnabled: "false"
|
metricsEnabled: "false"
|
||||||
# PROBES_ENABLED
|
# PROBES_ENABLED
|
||||||
probesEnabled: "false"
|
probesEnabled: "false"
|
||||||
freeleapsProductId: ""
|
|
||||||
environment: alpha
|
|
||||||
# AKV secrets configuration
|
# AKV secrets configuration
|
||||||
secrets:
|
secrets:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
|
|||||||
@ -7,7 +7,7 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
layout: FAST_API_VUE_3
|
layout: FAST_API_VUE_3
|
||||||
serviceName: freeleaps-authentication
|
serviceName: freeleaps-authentication
|
||||||
executeMode: on-demand
|
executeMode: fully
|
||||||
branch: main
|
branch: main
|
||||||
components:
|
components:
|
||||||
- name: authentication
|
- name: authentication
|
||||||
|
|||||||
@ -25,9 +25,6 @@ ENV LOG_BASE_PATH=$CONTAINER_APP_ROOT/log/$APP_NAME
|
|||||||
ENV BACKEND_LOG_FILE_NAME=$APP_NAME
|
ENV BACKEND_LOG_FILE_NAME=$APP_NAME
|
||||||
ENV APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
|
ENV APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
|
||||||
|
|
||||||
ENV FREELEAPS_PRODUCT_ID="6901bcf4ed3725f39f11343d"
|
|
||||||
ENV ENVIRONMENT="alpha"
|
|
||||||
|
|
||||||
|
|
||||||
WORKDIR ${CONTAINER_APP_ROOT}
|
WORKDIR ${CONTAINER_APP_ROOT}
|
||||||
COPY requirements.txt .
|
COPY requirements.txt .
|
||||||
|
|||||||
@ -118,7 +118,7 @@ class RoleHandler:
|
|||||||
raise RequestValidationError("Role with the provided ID already exists.")
|
raise RequestValidationError("Role with the provided ID already exists.")
|
||||||
new_doc.id = custom_role_id
|
new_doc.id = custom_role_id
|
||||||
|
|
||||||
await new_doc.create()
|
await new_doc.insert()
|
||||||
return new_doc
|
return new_doc
|
||||||
|
|
||||||
async def query_roles(self, role_key: Optional[str], role_name: Optional[str], skip: int = 0, limit: int = 10) -> \
|
async def query_roles(self, role_key: Optional[str], role_name: Optional[str], skip: int = 0, limit: int = 10) -> \
|
||||||
|
|||||||
@ -36,7 +36,7 @@ class UserRoleHandler:
|
|||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
role_ids=unique_role_ids
|
role_ids=unique_role_ids
|
||||||
)
|
)
|
||||||
await user_role_doc.create()
|
await user_role_doc.insert()
|
||||||
return user_role_doc
|
return user_role_doc
|
||||||
|
|
||||||
async def get_role_and_permission_by_user_id(self, user_id: str) -> tuple[list[str], list[str]]:
|
async def get_role_and_permission_by_user_id(self, user_id: str) -> tuple[list[str], list[str]]:
|
||||||
|
|||||||
@ -3,7 +3,6 @@ BaseDoc - A custom document class that provides Beanie-like interface using dire
|
|||||||
"""
|
"""
|
||||||
import asyncio
|
import asyncio
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from bson import ObjectId
|
|
||||||
from typing import Optional, List, Dict, Any, Type, Union
|
from typing import Optional, List, Dict, Any, Type, Union
|
||||||
from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase
|
from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
@ -283,14 +282,6 @@ class BaseDoc(BaseModel, metaclass=QueryModelMeta):
|
|||||||
# Convert Decimal objects to float for MongoDB compatibility
|
# Convert Decimal objects to float for MongoDB compatibility
|
||||||
doc_dict = self._convert_decimals_to_float(doc_dict)
|
doc_dict = self._convert_decimals_to_float(doc_dict)
|
||||||
|
|
||||||
# Respect pre-populated id by mapping to MongoDB _id
|
|
||||||
id_value = getattr(self, 'id', None)
|
|
||||||
if id_value and not isinstance(id_value, QueryExpression):
|
|
||||||
try:
|
|
||||||
doc_dict['_id'] = ObjectId(id_value)
|
|
||||||
except Exception:
|
|
||||||
doc_dict['_id'] = id_value
|
|
||||||
|
|
||||||
result = await collection.insert_one(doc_dict)
|
result = await collection.insert_one(doc_dict)
|
||||||
|
|
||||||
# Set the id field from the inserted document
|
# Set the id field from the inserted document
|
||||||
@ -323,18 +314,7 @@ class BaseDoc(BaseModel, metaclass=QueryModelMeta):
|
|||||||
elif hasattr(self, 'auth_code'):
|
elif hasattr(self, 'auth_code'):
|
||||||
query['auth_code'] = self.auth_code
|
query['auth_code'] = self.auth_code
|
||||||
|
|
||||||
id_value = getattr(self, 'id', None)
|
if query:
|
||||||
if id_value and not isinstance(id_value, QueryExpression):
|
|
||||||
# Update by primary key when available
|
|
||||||
try:
|
|
||||||
object_id = ObjectId(id_value)
|
|
||||||
except Exception:
|
|
||||||
object_id = id_value
|
|
||||||
|
|
||||||
result = await collection.update_one({"_id": object_id}, {"$set": doc_dict}, upsert=True)
|
|
||||||
if result.upserted_id:
|
|
||||||
self.id = str(result.upserted_id)
|
|
||||||
elif query:
|
|
||||||
# Update existing document
|
# Update existing document
|
||||||
result = await collection.update_one(query, {"$set": doc_dict}, upsert=True)
|
result = await collection.update_one(query, {"$set": doc_dict}, upsert=True)
|
||||||
# If it was an insert, set the id field
|
# If it was an insert, set the id field
|
||||||
|
|||||||
@ -30,9 +30,6 @@ class AppSettings(BaseSettings):
|
|||||||
BACKEND_LOG_FILE_NAME: str = APP_NAME
|
BACKEND_LOG_FILE_NAME: str = APP_NAME
|
||||||
APPLICATION_ACTIVITY_LOG: str = APP_NAME + "-application-activity"
|
APPLICATION_ACTIVITY_LOG: str = APP_NAME + "-application-activity"
|
||||||
|
|
||||||
FREELEAPS_PRODUCT_ID: str = ""
|
|
||||||
ENVIRONMENT: str = ""
|
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
env_file = ".myapp.env"
|
env_file = ".myapp.env"
|
||||||
env_file_encoding = "utf-8"
|
env_file_encoding = "utf-8"
|
||||||
|
|||||||
@ -2,14 +2,12 @@ import logging
|
|||||||
from prometheus_fastapi_instrumentator import Instrumentator
|
from prometheus_fastapi_instrumentator import Instrumentator
|
||||||
from common.config.app_settings import app_settings
|
from common.config.app_settings import app_settings
|
||||||
|
|
||||||
|
|
||||||
def register(app):
|
def register(app):
|
||||||
instrumentator = Instrumentator().instrument(
|
instrumentator = Instrumentator().instrument(app,
|
||||||
app,
|
metric_namespace="freeleaps",
|
||||||
metric_namespace="freeleaps_{}".format(app_settings.FREELEAPS_PRODUCT_ID),
|
metric_subsystem=app_settings.APP_NAME)
|
||||||
metric_subsystem=app_settings.ENVIRONMENT)
|
|
||||||
|
|
||||||
@app.on_event("startup")
|
@app.on_event("startup")
|
||||||
async def startup():
|
async def startup():
|
||||||
instrumentator.expose(app, endpoint="/api/_/metrics", should_gzip=True)
|
instrumentator.expose(app, endpoint="/api/_/metrics", should_gzip=True)
|
||||||
logging.info("Metrics endpoint exposed at /api/_/metrics")
|
logging.info("Metrics endpoint exposed at /api/_/metrics")
|
||||||
Loading…
Reference in New Issue
Block a user