fix: endpoint apis

pull/9184/head
Yeuoly 2 years ago
parent a9c21ef929
commit 570b7d18ac
No known key found for this signature in database
GPG Key ID: A66E7E320FB19F61

@ -5,6 +5,7 @@ from werkzeug.exceptions import Forbidden
from controllers.console import api from controllers.console import api
from controllers.console.setup import setup_required from controllers.console.setup import setup_required
from controllers.console.wraps import account_initialization_required from controllers.console.wraps import account_initialization_required
from core.model_runtime.utils.encoders import jsonable_encoder
from libs.login import login_required from libs.login import login_required
from services.plugin.endpoint_service import EndpointService from services.plugin.endpoint_service import EndpointService
@ -28,13 +29,15 @@ class EndpointCreateApi(Resource):
settings = args["settings"] settings = args["settings"]
name = args["name"] name = args["name"]
return EndpointService.create_endpoint( return {
"success": EndpointService.create_endpoint(
tenant_id=user.current_tenant_id, tenant_id=user.current_tenant_id,
user_id=user.id, user_id=user.id,
plugin_unique_identifier=plugin_unique_identifier, plugin_unique_identifier=plugin_unique_identifier,
name=name, name=name,
settings=settings, settings=settings,
) )
}
class EndpointListApi(Resource): class EndpointListApi(Resource):
@ -44,9 +47,23 @@ class EndpointListApi(Resource):
def get(self): def get(self):
user = current_user user = current_user
return EndpointService.list_endpoints( parser = reqparse.RequestParser()
parser.add_argument("page", type=int, required=True, location="args")
parser.add_argument("page_size", type=int, required=True, location="args")
args = parser.parse_args()
page = args["page"]
page_size = args["page_size"]
return jsonable_encoder(
{
"endpoints": EndpointService.list_endpoints(
tenant_id=user.current_tenant_id, tenant_id=user.current_tenant_id,
user_id=user.id, user_id=user.id,
page=page,
page_size=page_size,
)
}
) )
@ -61,11 +78,16 @@ class EndpointDeleteApi(Resource):
parser.add_argument("endpoint_id", type=str, required=True) parser.add_argument("endpoint_id", type=str, required=True)
args = parser.parse_args() args = parser.parse_args()
if not user.is_admin_or_owner:
raise Forbidden()
endpoint_id = args["endpoint_id"] endpoint_id = args["endpoint_id"]
return EndpointService.delete_endpoint( return {
"success": EndpointService.delete_endpoint(
tenant_id=user.current_tenant_id, user_id=user.id, endpoint_id=endpoint_id tenant_id=user.current_tenant_id, user_id=user.id, endpoint_id=endpoint_id
) )
}
class EndpointUpdateApi(Resource): class EndpointUpdateApi(Resource):
@ -85,13 +107,18 @@ class EndpointUpdateApi(Resource):
settings = args["settings"] settings = args["settings"]
name = args["name"] name = args["name"]
return EndpointService.update_endpoint( if not user.is_admin_or_owner:
raise Forbidden()
return {
"success": EndpointService.update_endpoint(
tenant_id=user.current_tenant_id, tenant_id=user.current_tenant_id,
user_id=user.id, user_id=user.id,
endpoint_id=endpoint_id, endpoint_id=endpoint_id,
name=name, name=name,
settings=settings, settings=settings,
) )
}
class EndpointEnableApi(Resource): class EndpointEnableApi(Resource):
@ -107,9 +134,14 @@ class EndpointEnableApi(Resource):
endpoint_id = args["endpoint_id"] endpoint_id = args["endpoint_id"]
return EndpointService.enable_endpoint( if not user.is_admin_or_owner:
raise Forbidden()
return {
"success": EndpointService.enable_endpoint(
tenant_id=user.current_tenant_id, user_id=user.id, endpoint_id=endpoint_id tenant_id=user.current_tenant_id, user_id=user.id, endpoint_id=endpoint_id
) )
}
class EndpointDisableApi(Resource): class EndpointDisableApi(Resource):
@ -125,9 +157,14 @@ class EndpointDisableApi(Resource):
endpoint_id = args["endpoint_id"] endpoint_id = args["endpoint_id"]
return EndpointService.disable_endpoint( if not user.is_admin_or_owner:
raise Forbidden()
return {
"success": EndpointService.disable_endpoint(
tenant_id=user.current_tenant_id, user_id=user.id, endpoint_id=endpoint_id tenant_id=user.current_tenant_id, user_id=user.id, endpoint_id=endpoint_id
) )
}
api.add_resource(EndpointCreateApi, "/workspaces/current/endpoints/create") api.add_resource(EndpointCreateApi, "/workspaces/current/endpoints/create")

@ -3,16 +3,18 @@ from core.plugin.manager.base import BasePluginManager
class PluginEndpointManager(BasePluginManager): class PluginEndpointManager(BasePluginManager):
def create_endpoint(self, tenant_id: str, user_id: str, plugin_unique_identifier: str, name: str, settings: dict): def create_endpoint(
self, tenant_id: str, user_id: str, plugin_unique_identifier: str, name: str, settings: dict
) -> bool:
""" """
Create an endpoint for the given plugin. Create an endpoint for the given plugin.
Errors will be raised if any error occurs. Errors will be raised if any error occurs.
""" """
self._request_with_plugin_daemon_response( return self._request_with_plugin_daemon_response(
"POST", "POST",
f"plugin/{tenant_id}/endpoint/setup", f"plugin/{tenant_id}/endpoint/setup",
dict, bool,
headers={ headers={
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
@ -24,7 +26,7 @@ class PluginEndpointManager(BasePluginManager):
}, },
) )
def list_endpoints(self, tenant_id: str, user_id: str): def list_endpoints(self, tenant_id: str, user_id: str, page: int, page_size: int):
""" """
List all endpoints for the given tenant and user. List all endpoints for the given tenant and user.
""" """
@ -32,7 +34,7 @@ class PluginEndpointManager(BasePluginManager):
"GET", "GET",
f"plugin/{tenant_id}/endpoint/list", f"plugin/{tenant_id}/endpoint/list",
list[EndpointEntity], list[EndpointEntity],
params={"page": 1, "page_size": 256}, params={"page": page, "page_size": page_size},
) )
def list_plugin_endpoints(self, tenant_id: str, user_id: str, plugin_unique_identifier: str): def list_plugin_endpoints(self, tenant_id: str, user_id: str, plugin_unique_identifier: str):
@ -55,53 +57,65 @@ class PluginEndpointManager(BasePluginManager):
""" """
Update the settings of the given endpoint. Update the settings of the given endpoint.
""" """
self._request_with_plugin_daemon_response( return self._request_with_plugin_daemon_response(
"POST", "POST",
f"plugin/{tenant_id}/endpoint/update", f"plugin/{tenant_id}/endpoint/update",
dict, bool,
data={ data={
"user_id": user_id, "user_id": user_id,
"endpoint_id": endpoint_id, "endpoint_id": endpoint_id,
"name": name, "name": name,
"settings": settings, "settings": settings,
}, },
headers={
"Content-Type": "application/json",
},
) )
def delete_endpoint(self, tenant_id: str, user_id: str, endpoint_id: str): def delete_endpoint(self, tenant_id: str, user_id: str, endpoint_id: str):
""" """
Delete the given endpoint. Delete the given endpoint.
""" """
self._request_with_plugin_daemon_response( return self._request_with_plugin_daemon_response(
"DELETE", "POST",
f"plugin/{tenant_id}/endpoint/remove", f"plugin/{tenant_id}/endpoint/remove",
dict, bool,
data={ data={
"endpoint_id": endpoint_id, "endpoint_id": endpoint_id,
}, },
headers={
"Content-Type": "application/json",
},
) )
def enable_endpoint(self, tenant_id: str, user_id: str, endpoint_id: str): def enable_endpoint(self, tenant_id: str, user_id: str, endpoint_id: str):
""" """
Enable the given endpoint. Enable the given endpoint.
""" """
self._request_with_plugin_daemon_response( return self._request_with_plugin_daemon_response(
"POST", "POST",
f"plugin/{tenant_id}/endpoint/enable", f"plugin/{tenant_id}/endpoint/enable",
dict, bool,
data={ data={
"endpoint_id": endpoint_id, "endpoint_id": endpoint_id,
}, },
headers={
"Content-Type": "application/json",
},
) )
def disable_endpoint(self, tenant_id: str, user_id: str, endpoint_id: str): def disable_endpoint(self, tenant_id: str, user_id: str, endpoint_id: str):
""" """
Disable the given endpoint. Disable the given endpoint.
""" """
self._request_with_plugin_daemon_response( return self._request_with_plugin_daemon_response(
"POST", "POST",
f"plugin/{tenant_id}/endpoint/disable", f"plugin/{tenant_id}/endpoint/disable",
dict, bool,
data={ data={
"endpoint_id": endpoint_id, "endpoint_id": endpoint_id,
}, },
headers={
"Content-Type": "application/json",
},
) )

@ -13,10 +13,12 @@ class EndpointService:
) )
@classmethod @classmethod
def list_endpoints(cls, tenant_id: str, user_id: str): def list_endpoints(cls, tenant_id: str, user_id: str, page: int, page_size: int):
return PluginEndpointManager().list_endpoints( return PluginEndpointManager().list_endpoints(
tenant_id=tenant_id, tenant_id=tenant_id,
user_id=user_id, user_id=user_id,
page=page,
page_size=page_size,
) )
@classmethod @classmethod

Loading…
Cancel
Save