mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-28 21:25:55 +01:00
Fix for duplicate webhook policy name (#12729)
Signed-off-by: guanxiatao <guanxiatao@corp.netease.com>
This commit is contained in:
parent
29f3ced3ff
commit
645dea36a6
@ -116,6 +116,14 @@ ALTER TABLE schedule DROP COLUMN IF EXISTS status;
|
||||
|
||||
UPDATE registry SET type = 'quay' WHERE type = 'quay-io';
|
||||
|
||||
|
||||
ALTER TABLE artifact ADD COLUMN icon varchar(255);
|
||||
|
||||
/*remove the constraint for name in table 'notification_policy'*/
|
||||
ALTER TABLE notification_policy DROP CONSTRAINT notification_policy_name_key;
|
||||
/*add union unique constraint for name and project_id in table 'notification_policy'*/
|
||||
ALTER TABLE notification_policy ADD UNIQUE(name,project_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS data_migrations (
|
||||
version int
|
||||
);
|
||||
@ -142,3 +150,4 @@ CASE
|
||||
ELSE
|
||||
'sha256:da834479c923584f4cbcdecc0dac61f32bef1d51e8aae598cf16bd154efab49f'
|
||||
END);
|
||||
|
||||
|
@ -1,10 +1,13 @@
|
||||
package notification
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/astaxie/beego/orm"
|
||||
"github.com/goharbor/harbor/src/common/dao"
|
||||
"github.com/goharbor/harbor/src/common/models"
|
||||
"github.com/goharbor/harbor/src/lib/errors"
|
||||
lib_orm "github.com/goharbor/harbor/src/lib/orm"
|
||||
)
|
||||
|
||||
// GetNotificationPolicy return notification policy by id
|
||||
@ -48,7 +51,16 @@ func AddNotificationPolicy(policy *models.NotificationPolicy) (int64, error) {
|
||||
return 0, errors.New("nil policy")
|
||||
}
|
||||
o := dao.GetOrmer()
|
||||
return o.Insert(policy)
|
||||
id, err := o.Insert(policy)
|
||||
if err != nil {
|
||||
if e := lib_orm.AsConflictError(err, "notification policy named %s already exists", policy.Name); e != nil {
|
||||
err = e
|
||||
return id, err
|
||||
}
|
||||
err = fmt.Errorf("failed to create the notification policy: %v", err)
|
||||
return id, err
|
||||
}
|
||||
return id, err
|
||||
}
|
||||
|
||||
// UpdateNotificationPolicy update t specified notification policy
|
||||
@ -58,6 +70,13 @@ func UpdateNotificationPolicy(policy *models.NotificationPolicy) error {
|
||||
}
|
||||
o := dao.GetOrmer()
|
||||
_, err := o.Update(policy)
|
||||
if err != nil {
|
||||
if e := lib_orm.AsConflictError(err, "notification policy named %s already exists", policy.Name); e != nil {
|
||||
return e
|
||||
}
|
||||
err = fmt.Errorf("failed to update the notification policy: %v", err)
|
||||
return err
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -128,7 +128,7 @@ func (w *NotificationPolicyAPI) Post() {
|
||||
|
||||
id, err := notification.PolicyMgr.Create(policy)
|
||||
if err != nil {
|
||||
w.SendInternalServerError(fmt.Errorf("failed to create the notification policy: %v", err))
|
||||
w.SendError(err)
|
||||
return
|
||||
}
|
||||
w.Redirect(http.StatusCreated, strconv.FormatInt(id, 10))
|
||||
@ -180,7 +180,7 @@ func (w *NotificationPolicyAPI) Put() {
|
||||
policy.ProjectID = w.project.ProjectID
|
||||
|
||||
if err = notification.PolicyMgr.Update(policy); err != nil {
|
||||
w.SendInternalServerError(fmt.Errorf("failed to update the notification policy: %v", err))
|
||||
w.SendError(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user