Skip to content

Commit

Permalink
split service settings
Browse files Browse the repository at this point in the history
  • Loading branch information
morsecodist committed Oct 19, 2023
1 parent 3395747 commit 4c05823
Show file tree
Hide file tree
Showing 16 changed files with 53 additions and 39 deletions.
2 changes: 1 addition & 1 deletion entities/api/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
get_settings,
get_sts_client,
)
from platformics.api.core.settings import APISettings
from settings import APISettings
from sqlalchemy.ext.asyncio import AsyncSession
from platformics.security.authorization import CerbosAction, get_resource_query
from files.format_handlers import get_validator
Expand Down
4 changes: 2 additions & 2 deletions entities/api/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from cerbos.sdk.model import Principal
from fastapi import Depends, FastAPI
from platformics.api.core.deps import get_auth_principal, get_cerbos_client, get_engine
from platformics.api.core.settings import APISettings
from settings import APISettings
from platformics.api.core.gql_loaders import (
EntityLoader,
get_base_creator,
Expand Down Expand Up @@ -111,7 +111,7 @@ def get_context(

# Make sure tests can get their own instances of the app.
def get_app() -> FastAPI:
settings = APISettings.parse_obj({}) # Workaround for https://github.com/pydantic/pydantic/issues/3753
settings = APISettings.model_validate({}) # Workaround for https://github.com/pydantic/pydantic/issues/3753

# Add a global settings object to the app that we can use as a dependency
graphql_app: GraphQLRouter = GraphQLRouter(schema, context_getter=get_context, graphiql=True)
Expand Down
6 changes: 3 additions & 3 deletions entities/database_migrations/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from sqlalchemy import create_engine

from database.models import meta
from platformics.api.core.settings import CLISettings
from settings import CLISettings

# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
Expand Down Expand Up @@ -33,7 +33,7 @@ def run_migrations_offline() -> None:
script output.
"""
settings = CLISettings.parse_obj({})
settings = CLISettings.model_validate({})
context.configure(
url=settings.SYNC_DB_URI,
target_metadata=target_metadata,
Expand All @@ -53,7 +53,7 @@ def run_migrations_online() -> None:
and associate a connection with the context.
"""
settings = CLISettings.parse_obj({})
settings = CLISettings.model_validate({})
connectable = create_engine(settings.SYNC_DB_URI)

with connectable.connect() as connection:
Expand Down
4 changes: 2 additions & 2 deletions entities/scripts/create_db.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from platformics.api.core.settings import APISettings
from settings import APISettings
from sqlalchemy_utils import create_database, database_exists


def create_db() -> None:
settings = APISettings.parse_obj({})
settings = APISettings.model_validate({})
db_uri = settings.SYNC_DB_URI
if database_exists(db_uri):
print("Database already exists!")
Expand Down
4 changes: 2 additions & 2 deletions entities/scripts/seed.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from platformics.database.connect import init_sync_db
from test_infra import factories as fa
import factory.random
from platformics.api.core.settings import CLISettings
from settings import CLISettings


def use_factoryboy() -> None:
settings = CLISettings.parse_obj({})
settings = CLISettings.model_validate({})
app_db = init_sync_db(settings.SYNC_DB_URI)
session = app_db.session()
fa.SessionStorage.set_session(session)
Expand Down
2 changes: 1 addition & 1 deletion platformics/api/core/deps.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from fastapi import Depends
from mypy_boto3_s3.client import S3Client
from mypy_boto3_sts.client import STSClient
from platformics.api.core.settings import APISettings
from settings import APISettings
from platformics.database.connect import AsyncDB, init_async_db
from platformics.security.token_auth import get_token_claims
from sqlalchemy.ext.asyncio import AsyncSession
Expand Down
4 changes: 2 additions & 2 deletions platformics/cli/generate_token.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import logging

import click
from platformics.api.core.settings import Settings
from settings import Settings
from platformics.security.token_auth import ProjectRole, create_token

@click.group()
Expand Down Expand Up @@ -47,7 +47,7 @@ def auth() -> None:

@click.pass_context
def generate_token(ctx: click.Context, userid: int, project: list[str], expiration: int) -> None:
settings = Settings.parse_obj({})
settings = Settings.model_validate({})
private_key = settings.JWK_PRIVATE_KEY

project_dict: dict[int, list[str]] = {}
Expand Down
15 changes: 0 additions & 15 deletions platformics/api/core/settings.py → platformics/settings.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,9 @@
from functools import cached_property

from jwcrypto import jwk
from pydantic import BaseModel
from pydantic_settings import BaseSettings, SettingsConfigDict


class RedisEventBusSettings(BaseModel):
REDIS_URL: str
QUEUE_NAME: str


class EventBusSettings(BaseModel):
REDIS: RedisEventBusSettings


class Settings(BaseSettings):
"""Pydantic Settings object - do not instantiate it directly,
please use get_settings() as a dependency where possible"""
Expand Down Expand Up @@ -47,11 +37,6 @@ class Settings(BaseSettings):
BOTO_ENDPOINT_URL: str
AWS_REGION: str

PLATFORMICS_WORKFLOW_RUNNER_PLUGIN: str

PLATFORMICS_EVENT_BUS_PLUGIN: str
PLATFORMICS_EVENT_BUS: EventBusSettings

############################################################################
# Computed properties

Expand Down
2 changes: 1 addition & 1 deletion workflows/api/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from config import load_event_bus, load_workflow_runners
from fastapi import APIRouter, Depends, FastAPI, Request
from platformics.api.core.deps import get_auth_principal, get_cerbos_client, get_db_session, get_engine
from platformics.api.core.settings import APISettings
from settings import APISettings
from platformics.api.core.strawberry_extensions import DependencyExtension
from platformics.database.connect import AsyncDB
from sqlalchemy.ext.asyncio import AsyncSession
Expand Down
2 changes: 1 addition & 1 deletion workflows/config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from importlib.metadata import entry_points
from typing import Dict
from platformics.api.core.settings import APISettings
from settings import APISettings
from plugin_types import EventBus, WorkflowRunner


Expand Down
6 changes: 3 additions & 3 deletions workflows/database_migrations/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from alembic import context
from database.models import meta
from platformics.api.core.settings import CLISettings
from settings import CLISettings
from sqlalchemy import create_engine

# this is the Alembic Config object, which provides
Expand Down Expand Up @@ -38,7 +38,7 @@ def run_migrations_offline() -> None:
script output.
"""
settings = CLISettings.parse_obj({})
settings = CLISettings.model_validate({})
context.configure(
url=settings.SYNC_DB_URI,
target_metadata=target_metadata,
Expand All @@ -57,7 +57,7 @@ def run_migrations_online() -> None:
and associate a connection with the context.
"""
settings = CLISettings.parse_obj({})
settings = CLISettings.model_validate({})
connectable = create_engine(settings.SYNC_DB_URI)

with connectable.connect() as connection:
Expand Down
2 changes: 1 addition & 1 deletion workflows/plugins/event_bus/redis/event_bus_redis.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import json
from typing import List

from platformics.api.core.settings import RedisEventBusSettings
from settings import RedisEventBusSettings
from plugin_types import EventBus, WorkflowStatusMessage, parse_workflow_status_message

import redis.asyncio as aioredis
Expand Down
4 changes: 2 additions & 2 deletions workflows/run_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

from config import load_event_bus
from loader import LoaderDriver
from platformics.api.core.settings import APISettings
from settings import APISettings
from platformics.database.connect import init_async_db

if __name__ == "__main__":
print("Starting loader listener")
settings = APISettings.parse_obj({})
settings = APISettings.model_validate({})
app_db = init_async_db(settings.DB_URI)
session = app_db.session()

Expand Down
4 changes: 2 additions & 2 deletions workflows/scripts/create_db.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from platformics.api.core.settings import APISettings
from settings import APISettings
from sqlalchemy_utils import create_database, database_exists


def create_db() -> None:
settings = APISettings.parse_obj({})
settings = APISettings.model_validate({})
db_uri = settings.SYNC_DB_URI
if database_exists(db_uri):
print("Database already exists!")
Expand Down
2 changes: 1 addition & 1 deletion workflows/scripts/seed.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import factory.random
from factoryboy import workflow_factory as wf
from platformics.api.core.settings import APISettings
from settings import APISettings
from platformics.database.connect import init_sync_db
from manifest import import_manifests

Expand Down
29 changes: 29 additions & 0 deletions workflows/settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from pydantic import BaseModel

from platformics.settings import Settings as PlatformicsSettings
from platformics.settings import APISettings as PlatformicsAPISettings
from platformics.settings import CLISettings as PlatformicCLISettings

class RedisEventBusSettings(BaseModel):
REDIS_URL: str
QUEUE_NAME: str


class EventBusSettings(BaseModel):
REDIS: RedisEventBusSettings


class Settings(PlatformicsSettings):
PLATFORMICS_WORKFLOW_RUNNER_PLUGIN: str

PLATFORMICS_EVENT_BUS_PLUGIN: str
PLATFORMICS_EVENT_BUS: EventBusSettings


class APISettings(PlatformicsAPISettings, Settings):
...


class CLISettings(PlatformicCLISettings, Settings):
...

0 comments on commit 4c05823

Please sign in to comment.