diff --git a/pkg/api/http/controller/groups/pipelines.py b/pkg/api/http/controller/groups/pipelines.py index de077b66..deaf1ee6 100644 --- a/pkg/api/http/controller/groups/pipelines.py +++ b/pkg/api/http/controller/groups/pipelines.py @@ -30,7 +30,7 @@ class PipelinesRouterGroup(group.RouterGroup): 'configs': await self.ap.pipeline_service.get_pipeline_metadata() }) - @self.route('/', methods=['GET', 'DELETE']) + @self.route('/', methods=['GET', 'PUT', 'DELETE']) async def _(pipeline_uuid: str) -> str: if quart.request.method == 'GET': pipeline = await self.ap.pipeline_service.get_pipeline(pipeline_uuid) @@ -41,6 +41,12 @@ class PipelinesRouterGroup(group.RouterGroup): return self.success(data={ 'pipeline': pipeline }) + elif quart.request.method == 'PUT': + json_data = await quart.request.json + + await self.ap.pipeline_service.update_pipeline(pipeline_uuid, json_data) + + return self.success() elif quart.request.method == 'DELETE': await self.ap.pipeline_service.delete_pipeline(pipeline_uuid) diff --git a/pkg/api/http/service/pipeline.py b/pkg/api/http/service/pipeline.py index 68cfb7ca..2e226fb1 100644 --- a/pkg/api/http/service/pipeline.py +++ b/pkg/api/http/service/pipeline.py @@ -58,6 +58,15 @@ class PipelineService: ) # TODO: 更新到pipeline manager + async def update_pipeline(self, pipeline_uuid: str, pipeline_data: dict) -> None: + del pipeline_data['uuid'] + del pipeline_data['for_version'] + del pipeline_data['stages'] + await self.ap.persistence_mgr.execute_async( + sqlalchemy.update(persistence_pipeline.LegacyPipeline).where(persistence_pipeline.LegacyPipeline.uuid == pipeline_uuid).values(**pipeline_data) + ) + # TODO: 更新到pipeline manager + async def delete_pipeline(self, pipeline_uuid: str) -> None: await self.ap.persistence_mgr.execute_async( sqlalchemy.delete(persistence_pipeline.LegacyPipeline).where(persistence_pipeline.LegacyPipeline.uuid == pipeline_uuid)