Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes for showing pebblo server and client version on DAXA UI. #319

Merged
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
16 changes: 16 additions & 0 deletions pebblo/app/models/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,3 +175,19 @@ class LoaderDocs(BaseModel):
class LoaderDocResponseModel(BaseModel):
docs: List[LoaderDocs] = []
message: Optional[str] = None


class DiscoverAIApps(BaseModel):
name: str
description: Optional[str]
owner: str
instanceDetails: Optional[InstanceDetails]
framework: Optional[FrameworkInfo]
lastUsed: datetime
pebbloServerVersion: Optional[str]
pebbloClientVersion: Optional[str]


class DiscoverAIAppsResponseModel(BaseModel):
ai_apps_data: Union[DiscoverAIApps, None] = None
message: Optional[str] = None
47 changes: 38 additions & 9 deletions pebblo/app/service/discovery_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,18 @@

from datetime import datetime

from fastapi import HTTPException
from pydantic import ValidationError

from pebblo.app.enums.enums import CacheDir
from pebblo.app.libs.logger import logger
from pebblo.app.models.models import AiApp, InstanceDetails, Metadata
from pebblo.app.libs.responses import PebbloJsonResponse
from pebblo.app.models.models import (
AiApp,
DiscoverAIApps,
DiscoverAIAppsResponseModel,
InstanceDetails,
Metadata,
)
from pebblo.app.utils.utils import (
get_pebblo_server_version,
read_json_file,
Expand Down Expand Up @@ -45,7 +51,7 @@ def _create_ai_apps_model(self, instance_details):
framework=self.data.get("framework"),
lastUsed=last_used,
pebbloServerVersion=get_pebblo_server_version(),
pebbloClientVersion=self.data.get("pebblo_client_version", ""),
pebbloClientVersion=self.data.get("plugin_version", ""),
)
return ai_apps_model

Expand Down Expand Up @@ -145,11 +151,34 @@ def process_request(self):
)
self._write_file_content_to_path(ai_apps.dict(), file_path)

logger.debug("AiApp discovery request completed successfully")
return {"message": "App Discover Request Processed Successfully"}
ai_apps_data = ai_apps.dict()
ai_apps_obj = DiscoverAIApps(
name=ai_apps_data.get("name"),
description=ai_apps_data.get("description"),
owner=ai_apps_data.get("owner"),
instanceDetails=ai_apps_data.get("instanceDetails"),
framework=ai_apps_data.get("framework"),
lastUsed=ai_apps_data.get("lastUsed"),
pebbloServerVersion=ai_apps_data.get("pebbloServerVersion"),
pebbloClientVersion=ai_apps_data.get("pebbloClientVersion"),
)
message = "App Discover Request Processed Successfully"
logger.debug(message)
response = DiscoverAIAppsResponseModel(
ai_apps_data=ai_apps_obj, message=message
)
return PebbloJsonResponse.build(
body=response.dict(exclude_none=True), status_code=200
)
except ValidationError as ex:
logger.error(f"Error in process_request. Error:{ex}")
raise HTTPException(status_code=400, detail=str(ex))
response = DiscoverAIAppsResponseModel(ai_apps_data=None, message=str(ex))
logger.error(f"Error in Discovery API process_request. Error:{ex}")
return PebbloJsonResponse.build(
body=response.dict(exclude_none=True), status_code=400
)
except Exception as ex:
logger.error(f"Error in process_request. Error:{ex}")
raise HTTPException(status_code=500, detail=str(ex))
response = DiscoverAIAppsResponseModel(ai_apps_data=None, message=str(ex))
logger.error(f"Error in Discovery API process_request. Error:{ex}")
return PebbloJsonResponse.build(
body=response.dict(exclude_none=True), status_code=500
)
13 changes: 6 additions & 7 deletions tests/app/test_daemon.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,10 @@ def test_app_discover_success(mock_write_json_to_file):

# Assertions
assert response.status_code == 200
assert response.json() == {"message": "App Discover Request Processed Successfully"}
assert response.json()["ai_apps_data"]["description"] == "This is a test app."
assert response.json()["ai_apps_data"]["name"] == "Test App"
assert response.json()["ai_apps_data"]["owner"] == "Test owner"
assert response.json()["message"] == "App Discover Request Processed Successfully"


def test_app_discover_validation_errors(mock_write_json_to_file):
Expand All @@ -110,11 +113,7 @@ def test_app_discover_validation_errors(mock_write_json_to_file):
}
response = client.post("/v1/app/discover", json=app)
assert response.status_code == 400
detail = response.json()["detail"]
assert (
"name\n none is not an allowed value (type=type_error.none.not_allowed)"
in detail
)
assert "1 validation error for AiApp" in response.json()["message"]


def test_app_discover_server_error(mock_write_json_to_file):
Expand All @@ -132,7 +131,7 @@ def test_app_discover_server_error(mock_write_json_to_file):

# Assertions
assert response.status_code == 500
assert response.json() == {"detail": "Mocked exception"}
assert response.json() == {"message": "Mocked exception"}


def test_loader_doc_success(
Expand Down
Loading