mirror of
https://github.com/goharbor/harbor.git
synced 2025-02-24 07:41:40 +01:00
Delete enabled and start_time properties of replication rule
This commit is contained in:
parent
055ab0ba15
commit
b5e7de331e
@ -941,7 +941,6 @@ func TestFilterRepTargets(t *testing.T) {
|
||||
func TestAddRepPolicy(t *testing.T) {
|
||||
policy := models.RepPolicy{
|
||||
ProjectID: 1,
|
||||
Enabled: 1,
|
||||
TargetID: targetID,
|
||||
Description: "whatever",
|
||||
Name: "mypolicy",
|
||||
@ -961,15 +960,10 @@ func TestAddRepPolicy(t *testing.T) {
|
||||
t.Errorf("Unable to find a policy with id: %d", id)
|
||||
}
|
||||
|
||||
if p.Name != "mypolicy" || p.TargetID != targetID || p.Enabled != 1 || p.Description != "whatever" {
|
||||
t.Errorf("The data does not match, expected: Name: mypolicy, TargetID: %d, Enabled: 1, Description: whatever;\n result: Name: %s, TargetID: %d, Enabled: %d, Description: %s",
|
||||
targetID, p.Name, p.TargetID, p.Enabled, p.Description)
|
||||
if p.Name != "mypolicy" || p.TargetID != targetID || p.Description != "whatever" {
|
||||
t.Errorf("The data does not match, expected: Name: mypolicy, TargetID: %d, Description: whatever;\n result: Name: %s, TargetID: %d, Description: %s",
|
||||
targetID, p.Name, p.TargetID, p.Description)
|
||||
}
|
||||
var tm = time.Now().AddDate(0, 0, -1)
|
||||
if !p.StartTime.After(tm) {
|
||||
t.Errorf("Unexpected start_time: %v", p.StartTime)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestGetRepPolicyByTarget(t *testing.T) {
|
||||
@ -1019,44 +1013,9 @@ func TestGetRepPolicyByName(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func TestDisableRepPolicy(t *testing.T) {
|
||||
err := DisableRepPolicy(policyID)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to disable policy, id: %d", policyID)
|
||||
}
|
||||
p, err := GetRepPolicy(policyID)
|
||||
if err != nil {
|
||||
t.Errorf("Error occurred in GetPolicy: %v, id: %d", err, policyID)
|
||||
}
|
||||
if p == nil {
|
||||
t.Errorf("Unable to find a policy with id: %d", policyID)
|
||||
}
|
||||
if p.Enabled == 1 {
|
||||
t.Errorf("The Enabled value of replication policy is still 1 after disabled, id: %d", policyID)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEnableRepPolicy(t *testing.T) {
|
||||
err := EnableRepPolicy(policyID)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to disable policy, id: %d", policyID)
|
||||
}
|
||||
p, err := GetRepPolicy(policyID)
|
||||
if err != nil {
|
||||
t.Errorf("Error occurred in GetPolicy: %v, id: %d", err, policyID)
|
||||
}
|
||||
if p == nil {
|
||||
t.Errorf("Unable to find a policy with id: %d", policyID)
|
||||
}
|
||||
if p.Enabled == 0 {
|
||||
t.Errorf("The Enabled value of replication policy is still 0 after disabled, id: %d", policyID)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddRepPolicy2(t *testing.T) {
|
||||
policy2 := models.RepPolicy{
|
||||
ProjectID: 3,
|
||||
Enabled: 0,
|
||||
TargetID: 3,
|
||||
Description: "whatever",
|
||||
Name: "mypolicy",
|
||||
@ -1073,10 +1032,6 @@ func TestAddRepPolicy2(t *testing.T) {
|
||||
if p == nil {
|
||||
t.Errorf("Unable to find a policy with id: %d", policyID2)
|
||||
}
|
||||
var tm time.Time
|
||||
if p.StartTime.After(tm) {
|
||||
t.Errorf("Unexpected start_time: %v", p.StartTime)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddRepJob(t *testing.T) {
|
||||
|
@ -106,17 +106,13 @@ func FilterRepTargets(name string) ([]*models.RepTarget, error) {
|
||||
// AddRepPolicy ...
|
||||
func AddRepPolicy(policy models.RepPolicy) (int64, error) {
|
||||
o := GetOrmer()
|
||||
sql := `insert into replication_policy (name, project_id, target_id, enabled, description, cron_str, start_time, creation_time, update_time, filters, replicate_deletion)
|
||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
sql := `insert into replication_policy (name, project_id, target_id, enabled, description, cron_str, creation_time, update_time, filters, replicate_deletion)
|
||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
params := []interface{}{}
|
||||
params = append(params, policy.Name, policy.ProjectID, policy.TargetID, policy.Enabled, policy.Description, policy.Trigger)
|
||||
now := time.Now()
|
||||
if policy.Enabled == 1 {
|
||||
params = append(params, now)
|
||||
} else {
|
||||
params = append(params, nil)
|
||||
}
|
||||
params = append(params, now, now, policy.Filters, policy.ReplicateDeletion)
|
||||
params = append(params, policy.Name, policy.ProjectID, policy.TargetID, 1,
|
||||
policy.Description, policy.Trigger, now, now, policy.Filters,
|
||||
policy.ReplicateDeletion)
|
||||
|
||||
result, err := o.Raw(sql, params...).Exec()
|
||||
if err != nil {
|
||||
@ -150,8 +146,8 @@ func FilterRepPolicies(name string, projectID int64) ([]*models.RepPolicy, error
|
||||
var args []interface{}
|
||||
|
||||
sql := `select rp.id, rp.project_id, rp.target_id,
|
||||
rt.name as target_name, rp.name, rp.enabled, rp.description,
|
||||
rp.cron_str, rp.filters, rp.replicate_deletion,rp.start_time,
|
||||
rt.name as target_name, rp.name, rp.description,
|
||||
rp.cron_str, rp.filters, rp.replicate_deletion,
|
||||
rp.creation_time, rp.update_time,
|
||||
count(rj.status) as error_job_count
|
||||
from replication_policy rp
|
||||
@ -245,7 +241,7 @@ func GetRepPolicyByProjectAndTarget(projectID, targetID int64) ([]*models.RepPol
|
||||
func UpdateRepPolicy(policy *models.RepPolicy) error {
|
||||
o := GetOrmer()
|
||||
policy.UpdateTime = time.Now()
|
||||
_, err := o.Update(policy, "TargetID", "Name", "Enabled", "Description",
|
||||
_, err := o.Update(policy, "TargetID", "Name", "Description",
|
||||
"Trigger", "Filters", "ReplicateDeletion", "UpdateTime")
|
||||
return err
|
||||
}
|
||||
@ -262,36 +258,6 @@ func DeleteRepPolicy(id int64) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// UpdateRepPolicyEnablement ...
|
||||
func UpdateRepPolicyEnablement(id int64, enabled int) error {
|
||||
o := GetOrmer()
|
||||
p := models.RepPolicy{
|
||||
ID: id,
|
||||
Enabled: enabled,
|
||||
UpdateTime: time.Now(),
|
||||
}
|
||||
|
||||
var err error
|
||||
if enabled == 1 {
|
||||
p.StartTime = time.Now()
|
||||
_, err = o.Update(&p, "Enabled", "StartTime")
|
||||
} else {
|
||||
_, err = o.Update(&p, "Enabled")
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// EnableRepPolicy ...
|
||||
func EnableRepPolicy(id int64) error {
|
||||
return UpdateRepPolicyEnablement(id, 1)
|
||||
}
|
||||
|
||||
// DisableRepPolicy ...
|
||||
func DisableRepPolicy(id int64) error {
|
||||
return UpdateRepPolicyEnablement(id, 0)
|
||||
}
|
||||
|
||||
// AddRepJob ...
|
||||
func AddRepJob(job models.RepJob) (int64, error) {
|
||||
o := GetOrmer()
|
||||
|
@ -42,12 +42,10 @@ type RepPolicy struct {
|
||||
ProjectID int64 `orm:"column(project_id)" `
|
||||
TargetID int64 `orm:"column(target_id)"`
|
||||
Name string `orm:"column(name)"`
|
||||
Enabled int `orm:"column(enabled)"`
|
||||
Description string `orm:"column(description)"`
|
||||
Trigger string `orm:"column(cron_str)"`
|
||||
Filters string `orm:"column(filters)"`
|
||||
ReplicateDeletion bool `orm:"column(replicate_deletion)"`
|
||||
StartTime time.Time `orm:"column(start_time)"`
|
||||
CreationTime time.Time `orm:"column(creation_time);auto_now_add"`
|
||||
UpdateTime time.Time `orm:"column(update_time);auto_now"`
|
||||
Deleted int `orm:"column(deleted)"`
|
||||
|
@ -105,7 +105,6 @@ func TestRepJob(t *testing.T) {
|
||||
assert.Nil(err)
|
||||
j, err := dao.GetRepJob(repJobID)
|
||||
assert.Equal(models.JobRetrying, j.Status)
|
||||
assert.Equal(1, rj.parm.Enabled)
|
||||
assert.False(rj.parm.Insecure)
|
||||
rj2 := NewRepJob(99999)
|
||||
err = rj2.Init()
|
||||
@ -163,7 +162,6 @@ func prepareRepJobData() error {
|
||||
}
|
||||
policy := models.RepPolicy{
|
||||
ProjectID: 1,
|
||||
Enabled: 1,
|
||||
TargetID: targetID,
|
||||
Description: "whatever",
|
||||
Name: "mypolicy",
|
||||
|
@ -62,7 +62,6 @@ type RepJobParm struct {
|
||||
TargetPassword string
|
||||
Repository string
|
||||
Tags []string
|
||||
Enabled int
|
||||
Operation string
|
||||
Insecure bool
|
||||
}
|
||||
@ -124,13 +123,8 @@ func (rj *RepJob) Init() error {
|
||||
LocalRegURL: regURL,
|
||||
Repository: job.Repository,
|
||||
Tags: job.TagList,
|
||||
Enabled: policy.Enabled,
|
||||
Operation: job.Operation,
|
||||
}
|
||||
if policy.Enabled == 0 {
|
||||
//worker will cancel this job
|
||||
return nil
|
||||
}
|
||||
target, err := dao.GetRepTarget(policy.TargetID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Failed to get target, error: %v", err)
|
||||
|
@ -208,16 +208,6 @@ func (sm *SM) Reset(j Job) error {
|
||||
}
|
||||
|
||||
func (sm *SM) kickOff() error {
|
||||
if repJob, ok := sm.CurrentJob.(*RepJob); ok {
|
||||
if repJob.parm.Enabled == 0 {
|
||||
log.Debugf("The policy of job:%v is disabled, will cancel the job", repJob)
|
||||
_, err := sm.EnterState(models.JobCanceled)
|
||||
if err != nil {
|
||||
log.Warningf("For job: %v, failed to update state to 'canceled', error: %v", repJob, err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
}
|
||||
log.Debugf("In kickOff: will start job: %v", sm.CurrentJob)
|
||||
sm.Start(models.JobRunning)
|
||||
return nil
|
||||
|
@ -70,11 +70,9 @@ func checkAndTriggerReplication(image, operation string) error {
|
||||
|
||||
for _, watchItem := range watchItems {
|
||||
item := models.FilterItem{
|
||||
Kind: replication.FilterItemKindTag,
|
||||
Value: image,
|
||||
Metadata: map[string]interface{}{
|
||||
"operation": operation,
|
||||
},
|
||||
Kind: replication.FilterItemKindTag,
|
||||
Value: image,
|
||||
Operation: operation,
|
||||
}
|
||||
|
||||
if err := notifier.Publish(topic.StartReplicationTopic, notification.StartReplicationNotification{
|
||||
|
@ -118,10 +118,6 @@ func CommonDelTarget() {
|
||||
_ = dao.DeleteRepTarget(target.ID)
|
||||
}
|
||||
|
||||
func CommonPolicyEabled(policyID int, enabled int) {
|
||||
_ = dao.UpdateRepPolicyEnablement(int64(policyID), enabled)
|
||||
}
|
||||
|
||||
func CommonAddRepository() {
|
||||
commonRepository := &models.RepoRecord{
|
||||
RepositoryID: 1,
|
||||
|
@ -231,23 +231,6 @@ func (t *TargetAPI) Put() {
|
||||
t.CustomAbort(http.StatusNotFound, http.StatusText(http.StatusNotFound))
|
||||
}
|
||||
|
||||
policies, err := dao.GetRepPolicyByTarget(id)
|
||||
if err != nil {
|
||||
log.Errorf("failed to get policies according target %d: %v", id, err)
|
||||
t.CustomAbort(http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError))
|
||||
}
|
||||
|
||||
hasEnabledPolicy := false
|
||||
for _, policy := range policies {
|
||||
if policy.Enabled == 1 {
|
||||
hasEnabledPolicy = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if hasEnabledPolicy {
|
||||
t.CustomAbort(http.StatusBadRequest, "the target is associated with policy which is enabled")
|
||||
}
|
||||
if len(target.Password) != 0 {
|
||||
target.Password, err = utils.ReversibleDecrypt(target.Password, t.secretKey)
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user