Skip to content

Commit df1bacb

Browse files
made other configurations minimal (just infrastructure and cloud)
1 parent 71350df commit df1bacb

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

bibigrid/core/rest/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,12 @@ class OtherConfig(BaseModel):
104104
class ConfigurationsModel(BaseModel):
105105
configurations: List[Union[MasterConfig, OtherConfig]]
106106

107+
class MinimalConfigurationModel(BaseModel):
108+
infrastructure: str
109+
cloud: str
107110

111+
class MinimalConfigurationsModel(BaseModel):
112+
configurations: List[MinimalConfigurationModel]
108113

109114
class ValidationResponseModel(BaseModel):
110115
"""

bibigrid/core/startup_rest.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@
88
import subprocess
99

1010
import uvicorn
11-
import yaml
12-
from fastapi import FastAPI, File, UploadFile, status, Request
11+
from fastapi import FastAPI, status, Request, Query
1312
from fastapi.exceptions import RequestValidationError
1413
from fastapi.responses import JSONResponse
1514
from fastapi.testclient import TestClient
15+
from typing import List
1616

1717
from bibigrid.core.actions import check, create, terminate, list_clusters
1818
from bibigrid.core.utility import id_generation
1919
from bibigrid.core.utility.handler import provider_handler
2020
from bibigrid.core.rest.models import ValidationResponseModel, CreateResponseModel, TerminateResponseModel, \
21-
InfoResponseModel, LogResponseModel, ReadyResponseModel, ConfigurationsModel
21+
InfoResponseModel, LogResponseModel, ReadyResponseModel, ConfigurationsModel, MinimalConfigurationsModel
2222

2323
VERSION = "0.0.1"
2424
DESCRIPTION = """
@@ -98,7 +98,7 @@ async def validation_exception_handler(request: Request, exc: RequestValidationE
9898

9999

100100
@app.post("/bibigrid/validate", response_model=ValidationResponseModel)
101-
async def validate_configuration(cluster_id: str = None, config_file: UploadFile = File(...)):
101+
async def validate_configuration(configurations_json: ConfigurationsModel, cluster_id: str = None):
102102
"""
103103
Expects a cluster id and a
104104
[configuration](https://github.com/BiBiServ/bibigrid/blob/master/documentation/markdown/features/configuration.md)
@@ -114,8 +114,7 @@ async def validate_configuration(cluster_id: str = None, config_file: UploadFile
114114
cluster_id, log = setup(cluster_id)
115115
LOG.info(f"Requested validation on {cluster_id}")
116116
try:
117-
content = await config_file.read()
118-
configurations = yaml.safe_load(content.decode())
117+
configurations = configurations_json.model_dump(exclude_none=True)["configurations"]
119118
providers = provider_handler.get_providers(configurations, log)
120119
exit_state = check.check(configurations, providers, log)
121120
if exit_state:
@@ -150,7 +149,7 @@ async def create_async():
150149
creator.create()
151150

152151
try:
153-
configurations = configurations_json.model_dump(exclude_none=True)["configurations"]
152+
configurations = configurations_json.model_dump(exclude_none=True)
154153
providers = provider_handler.get_providers(configurations, log)
155154
creator = create.Create(providers=providers, configurations=configurations, log=log,
156155
config_path=None, cluster_id=cluster_id)
@@ -161,8 +160,8 @@ async def create_async():
161160
return JSONResponse(content={"error": str(exc)}, status_code=400)
162161

163162

164-
@app.post("/bibigrid/terminate", response_model=TerminateResponseModel)
165-
async def terminate_cluster(cluster_id: str, config_file: UploadFile = File(...)):
163+
@app.post("/bibigrid/terminate/{cluster_id}", response_model=TerminateResponseModel)
164+
async def terminate_cluster(cluster_id: str, configurations_json: MinimalConfigurationsModel):
166165
"""
167166
Expects a cluster id and a
168167
[configuration](https://github.com/BiBiServ/bibigrid/blob/master/documentation/markdown/features/configuration.md)
@@ -181,9 +180,7 @@ async def terminate_async():
181180
terminate.terminate(cluster_id, providers, log)
182181

183182
try:
184-
# Rewrite: Maybe load a configuration file stored somewhere locally to just define access
185-
content = await config_file.read()
186-
configurations = yaml.safe_load(content.decode())
183+
configurations = configurations_json.model_dump()["configurations"]
187184
providers = provider_handler.get_providers(configurations, log)
188185
asyncio.create_task(terminate_async())
189186

@@ -192,8 +189,8 @@ async def terminate_async():
192189
return JSONResponse(content={"error": str(exc)}, status_code=400)
193190

194191

195-
@app.post("/bibigrid/info/", response_model=InfoResponseModel)
196-
async def info(cluster_id: str, config_file: UploadFile):
192+
@app.get("/bibigrid/info/", response_model=InfoResponseModel)
193+
async def info(cluster_id: str, configurations_json: MinimalConfigurationsModel):
197194
"""
198195
Expects a cluster id and a
199196
[configuration](https://github.com/BiBiServ/bibigrid/blob/master/documentation/markdown/features/configuration.md)
@@ -207,9 +204,8 @@ async def info(cluster_id: str, config_file: UploadFile):
207204
"""
208205
LOG.debug(f"Requested info on {cluster_id}.")
209206
cluster_id, log = setup(cluster_id)
210-
content = await config_file.read()
211-
configurations = yaml.safe_load(content.decode())
212207
try:
208+
configurations = configurations_json.model_dump()["configurations"]
213209
providers = provider_handler.get_providers(configurations, log)
214210
cluster_dict = list_clusters.dict_clusters(providers, log).get(cluster_id, {}) # add information filtering
215211
if cluster_dict:

0 commit comments

Comments
 (0)