From 7c037b68cd854212a2973f22ff1668b8cd444fec Mon Sep 17 00:00:00 2001 From: ssongliu Date: Thu, 16 Mar 2023 15:03:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=B9=E5=99=A8=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=B8=AD=E5=AF=B9=E8=B1=A1=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/service/container_network.go | 5 +++++ backend/app/service/container_volume.go | 2 +- backend/app/service/image.go | 11 +++++++++-- backend/constant/errs.go | 3 ++- backend/i18n/lang/en.yaml | 3 ++- backend/i18n/lang/zh.yaml | 3 ++- frontend/src/views/log/operation/index.vue | 4 +++- frontend/src/views/setting/snapshot/index.vue | 4 +++- 8 files changed, 27 insertions(+), 8 deletions(-) diff --git a/backend/app/service/container_network.go b/backend/app/service/container_network.go index ab5785b90..adaac59c3 100644 --- a/backend/app/service/container_network.go +++ b/backend/app/service/container_network.go @@ -7,6 +7,8 @@ import ( "strings" "github.com/1Panel-dev/1Panel/backend/app/dto" + "github.com/1Panel-dev/1Panel/backend/buserr" + "github.com/1Panel-dev/1Panel/backend/constant" "github.com/1Panel-dev/1Panel/backend/utils/docker" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/network" @@ -80,6 +82,9 @@ func (u *ContainerService) DeleteNetwork(req dto.BatchDelete) error { } for _, id := range req.Names { if err := client.NetworkRemove(context.TODO(), id); err != nil { + if strings.Contains(err.Error(), "has active endpoints") { + return buserr.WithDetail(constant.ErrInUsed, id, nil) + } return err } } diff --git a/backend/app/service/container_volume.go b/backend/app/service/container_volume.go index 9069f243f..0dc42739b 100644 --- a/backend/app/service/container_volume.go +++ b/backend/app/service/container_volume.go @@ -97,7 +97,7 @@ func (u *ContainerService) DeleteVolume(req dto.BatchDelete) error { for _, id := range req.Names { if err := client.VolumeRemove(context.TODO(), id, true); err != nil { if strings.Contains(err.Error(), "volume is in use") { - return buserr.New(constant.ErrInUsed) + return buserr.WithDetail(constant.ErrInUsed, id, nil) } return err } diff --git a/backend/app/service/image.go b/backend/app/service/image.go index d5fadfb9d..2618beeb4 100644 --- a/backend/app/service/image.go +++ b/backend/app/service/image.go @@ -15,6 +15,7 @@ import ( "time" "github.com/1Panel-dev/1Panel/backend/app/dto" + "github.com/1Panel-dev/1Panel/backend/buserr" "github.com/1Panel-dev/1Panel/backend/constant" "github.com/1Panel-dev/1Panel/backend/global" "github.com/1Panel-dev/1Panel/backend/utils/docker" @@ -378,8 +379,14 @@ func (u *ImageService) ImageRemove(req dto.BatchDelete) error { if err != nil { return err } - for _, ids := range req.Names { - if _, err := client.ImageRemove(context.TODO(), ids, types.ImageRemoveOptions{Force: true, PruneChildren: true}); err != nil { + for _, id := range req.Names { + if _, err := client.ImageRemove(context.TODO(), id, types.ImageRemoveOptions{Force: true, PruneChildren: true}); err != nil { + if strings.Contains(err.Error(), "image is being used") { + if strings.Contains(id, "sha256:") { + return buserr.New(constant.ErrObjectInUsed) + } + return buserr.WithDetail(constant.ErrInUsed, id, nil) + } return err } } diff --git a/backend/constant/errs.go b/backend/constant/errs.go index 28f10a2f6..2f82cc94e 100644 --- a/backend/constant/errs.go +++ b/backend/constant/errs.go @@ -98,5 +98,6 @@ var ( //container var ( - ErrInUsed = "ErrInUsed" + ErrInUsed = "ErrInUsed" + ErrObjectInUsed = "ErrObjectInUsed" ) diff --git a/backend/i18n/lang/en.yaml b/backend/i18n/lang/en.yaml index 8860463b8..2b272cc61 100644 --- a/backend/i18n/lang/en.yaml +++ b/backend/i18n/lang/en.yaml @@ -55,4 +55,5 @@ ErrDatabaseIsExist: "The current database already exists. Please enter a new dat ErrTypeOfRedis: "The recovery file type does not match the current persistence mode. Modify the file type and try again" #container -ErrInUsed: "The deleted object is in use and cannot be deleted" \ No newline at end of file +ErrInUsed: "{{ .detail }} is in use and cannot be deleted" +ErrObjectInUsed: "This object is in use and cannot be deleted" \ No newline at end of file diff --git a/backend/i18n/lang/zh.yaml b/backend/i18n/lang/zh.yaml index 32d462e42..8f69e1f12 100644 --- a/backend/i18n/lang/zh.yaml +++ b/backend/i18n/lang/zh.yaml @@ -55,4 +55,5 @@ ErrDatabaseIsExist: "当前数据库已存在,请重新输入" ErrTypeOfRedis: "恢复文件类型与当前持久化方式不符,请修改后重试" #container -ErrInUsed: "该删除对象正被使用,无法删除" \ No newline at end of file +ErrInUsed: "{{ .detail }} 正被使用,无法删除" +ErrObjectInUsed: "该对象正被使用,无法删除" \ No newline at end of file diff --git a/frontend/src/views/log/operation/index.vue b/frontend/src/views/log/operation/index.vue index 024c6605b..d9b84e633 100644 --- a/frontend/src/views/log/operation/index.vue +++ b/frontend/src/views/log/operation/index.vue @@ -49,7 +49,9 @@ diff --git a/frontend/src/views/setting/snapshot/index.vue b/frontend/src/views/setting/snapshot/index.vue index 476b86d72..dd2c9c3a1 100644 --- a/frontend/src/views/setting/snapshot/index.vue +++ b/frontend/src/views/setting/snapshot/index.vue @@ -49,7 +49,9 @@