Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions api-server/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,11 @@
# injecting databases
from .user.models.user_database_model import User
from .project.models.project_database_model import Project
from .satellite.models.satellite_database_model import Satellite

# injecting routers
from .user.routes import router as user_router
from .auth.routes import router as auth_router
from .project.routes import router as project_router
from .satellite.routes import router as satellite_router

load_dotenv()

Expand All @@ -46,7 +44,7 @@ async def lifespan(app: FastAPI):
# os.getenv can return None, which is not valid for dictionary-style access
db_name = os.getenv("MONGO_DATABASE_NAME", "exosphere-api-server")
db = client[db_name]
await init_beanie(db, document_models=[User, Project, Satellite])
await init_beanie(db, document_models=[User, Project])
logger.info("beanie dbs initialized")

# main logic of the server
Expand Down Expand Up @@ -87,4 +85,3 @@ def health() -> dict:
app.include_router(user_router)
app.include_router(auth_router)
app.include_router(project_router)
app.include_router(satellite_router)
62 changes: 0 additions & 62 deletions api-server/app/satellite/controllers/register_satellite.py

This file was deleted.

5 changes: 0 additions & 5 deletions api-server/app/satellite/models/access_types.py

This file was deleted.

15 changes: 0 additions & 15 deletions api-server/app/satellite/models/register_satellite_request.py

This file was deleted.

22 changes: 0 additions & 22 deletions api-server/app/satellite/models/register_satellite_response.py

This file was deleted.

86 changes: 0 additions & 86 deletions api-server/app/satellite/models/satellite_database_model.py

This file was deleted.

27 changes: 0 additions & 27 deletions api-server/app/satellite/routes.py

This file was deleted.

Empty file.
42 changes: 42 additions & 0 deletions state-manager/app/controller/create_states.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from app.singletons.logs_manager import LogsManager
from app.models.create_models import CreateRequestModel, CreateResponseModel, ResponseStateModel
from app.models.state_status_enum import StateStatusEnum
from app.models.db.state import State

from beanie.operators import In
from bson import ObjectId

logger = LogsManager().get_logger()

async def create_states(namespace_name: str, body: CreateRequestModel, x_exosphere_request_id: str) -> CreateResponseModel:
try:
states = []
logger.info(f"Creating states for namespace {namespace_name}", x_exosphere_request_id=x_exosphere_request_id)

for state in body.states:
states.append(
State(
node_name=state.node_name,
namespace_name=namespace_name,
status=StateStatusEnum.CREATED,
inputs=state.inputs,
outputs={}
)
)

inserted_states = await State.insert_many(states)

logger.info(f"Created states: {inserted_states.inserted_ids}", x_exosphere_request_id=x_exosphere_request_id)

newStates = await State.find(
In(State.id, [ObjectId(id) for id in inserted_states.inserted_ids])
).to_list()

return CreateResponseModel(
status=StateStatusEnum.CREATED,
states=[ResponseStateModel(state_id=str(state.id), node_name=state.node_name, inputs=state.inputs, created_at=state.created_at) for state in newStates]
)

except Exception as e:
logger.error(f"Error creating states for namespace {namespace_name}", x_exosphere_request_id=x_exosphere_request_id)
raise e
53 changes: 53 additions & 0 deletions state-manager/app/controller/enqueue_states.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
from beanie.operators import In

from ..models.enqueue_request import EnqueueRequestModel
from ..models.enqueue_response import EnqueueResponseModel, StateModel
from ..models.db.state import State
from ..models.state_status_enum import StateStatusEnum

from app.singletons.logs_manager import LogsManager

logger = LogsManager().get_logger()


async def enqueue_states(namespace_name: str, body: EnqueueRequestModel, x_exosphere_request_id: str) -> EnqueueResponseModel:

try:
logger.info(f"Enqueuing states for namespace {namespace_name}", x_exosphere_request_id=x_exosphere_request_id)

states = await State.find(
State.namespace_name == namespace_name,
State.status == StateStatusEnum.CREATED,
In(State.node_name, body.nodes)
).limit(
body.batch_size
).to_list()

if states:
await State.find(
In(State.id, [state.id for state in states])
).set(
{
"status": StateStatusEnum.QUEUED,
}
) # type: ignore

response = EnqueueResponseModel(
count=len(states),
namespace=namespace_name,
status=StateStatusEnum.QUEUED,
states=[
StateModel(
state_id=str(state.id),
node_name=state.node_name,
inputs=state.inputs,
created_at=state.created_at
)
for state in states
]
)
return response

except Exception as e:
logger.error(f"Error enqueuing states for namespace {namespace_name}", x_exosphere_request_id=x_exosphere_request_id, error=e)
raise e
15 changes: 12 additions & 3 deletions state-manager/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@
UnhandledExceptionsMiddleware,
)
from .middlewares.request_id_middleware import RequestIdMiddleware

# injecting models
from .models.db.state import State
from .models.db.namespace import Namespace

# injecting routes
from .routes import router

load_dotenv()

Expand All @@ -27,8 +34,8 @@ async def lifespan(app: FastAPI):

# initializing beanie
client = AsyncMongoClient(os.getenv("MONGO_URI"))
db = client[os.getenv("MONGO_DATABASE_NAME")]
await init_beanie(db, document_models=[])
db = client[os.getenv("MONGO_DATABASE_NAME", "exosphere-state-manager")]
await init_beanie(db, document_models=[State, Namespace])
logger.info("beanie dbs initialized")

# initialize secret
Expand Down Expand Up @@ -66,4 +73,6 @@ async def lifespan(app: FastAPI):

@app.get("/health")
def health() -> dict:
return {"message": "OK"}
return {"message": "OK"}

app.include_router(router)
Empty file.
Loading