diff --git a/src/pkg/p2p/preheat/instance/manager.go b/src/pkg/p2p/preheat/instance/manager.go index acb43b0c9e1..3f4418a1013 100644 --- a/src/pkg/p2p/preheat/instance/manager.go +++ b/src/pkg/p2p/preheat/instance/manager.go @@ -16,6 +16,7 @@ package instance import ( "context" + "encoding/json" "github.com/goharbor/harbor/src/lib/q" dao "github.com/goharbor/harbor/src/pkg/p2p/preheat/dao/instance" @@ -114,7 +115,18 @@ func (dm *manager) Update(ctx context.Context, inst *provider.Instance, props .. // Get implements @Manager.Get func (dm *manager) Get(ctx context.Context, id int64) (*provider.Instance, error) { - return dm.dao.Get(ctx, id) + ins, err := dm.dao.Get(ctx, id) + if err != nil { + return nil, err + } + // mapping auth data to auth info. + if len(ins.AuthData) > 0 { + if err := json.Unmarshal([]byte(ins.AuthData), &ins.AuthInfo); err != nil { + return nil, err + } + } + + return ins, nil } // Get implements @Manager.GetByName diff --git a/src/pkg/p2p/preheat/job.go b/src/pkg/p2p/preheat/job.go index 7321260b196..ee68a6272d3 100644 --- a/src/pkg/p2p/preheat/job.go +++ b/src/pkg/p2p/preheat/job.go @@ -191,6 +191,11 @@ func (j *Job) Run(ctx job.Context, params job.Parameters) error { return preheatJobRunningError(errors.Errorf("preheat failed: %s", s)) case provider.PreheatingStatusSuccess: // Finished + // log the message if received message from provider. + if s.Message != "" { + myLogger.Infof("Preheat job finished, message from provider: \n%s", s.Message) + } + return nil default: // do nothing, check again diff --git a/src/pkg/p2p/preheat/provider/dragonfly.go b/src/pkg/p2p/preheat/provider/dragonfly.go index edb2a162fee..32b3b6bc11e 100644 --- a/src/pkg/p2p/preheat/provider/dragonfly.go +++ b/src/pkg/p2p/preheat/provider/dragonfly.go @@ -17,15 +17,16 @@ package provider import ( "bytes" "encoding/json" - "errors" "fmt" "strings" "time" "github.com/goharbor/harbor/src/lib" + "github.com/goharbor/harbor/src/lib/errors" "github.com/goharbor/harbor/src/pkg/p2p/preheat/models/provider" "github.com/goharbor/harbor/src/pkg/p2p/preheat/provider/auth" "github.com/goharbor/harbor/src/pkg/p2p/preheat/provider/client" + "github.com/olekukonko/tablewriter" ) @@ -90,7 +91,7 @@ type dragonflyCreateJobRequestArgs struct { type dragonflyJobResponse struct { // ID is the job id. - ID string `json:"id"` + ID int `json:"id"` // CreatedAt is the job created time. CreatedAt time.Time `json:"created_at"` @@ -224,7 +225,7 @@ func (dd *DragonflyDriver) Preheat(preheatingImage *PreheatImage) (*PreheatingSt } return &PreheatingStatus{ - TaskID: resp.ID, + TaskID: fmt.Sprintf("%d", resp.ID), Status: provider.PreheatingStatusPending, StartTime: resp.CreatedAt.Format(time.RFC3339), FinishTime: resp.UpdatedAt.Format(time.RFC3339), @@ -256,7 +257,8 @@ func (dd *DragonflyDriver) CheckProgress(taskID string) (*PreheatingStatus, erro successMessage string errorMessage string ) - state := provider.PreheatingStatusPending + + var state string switch resp.State { case dragonflyJobPendingState: state = provider.PreheatingStatusRunning @@ -283,18 +285,14 @@ func (dd *DragonflyDriver) CheckProgress(taskID string) (*PreheatingStatus, erro table.Render() successMessage = buffer.String() case dragonflyJobFailureState: + var errs errors.Errors state = provider.PreheatingStatusFail - - var buffer bytes.Buffer - table := tablewriter.NewWriter(&buffer) - table.SetHeader([]string{"Error Message"}) for _, jobState := range resp.Result.JobStates { - table.Append([]string{jobState.Error}) + errs = append(errs, errors.New(jobState.Error)) } - table.Render() - if len(resp.Result.JobStates) > 0 { - errorMessage = buffer.String() + if len(errs) > 0 { + errorMessage = errs.Error() } default: state = provider.PreheatingStatusFail @@ -302,7 +300,7 @@ func (dd *DragonflyDriver) CheckProgress(taskID string) (*PreheatingStatus, erro } return &PreheatingStatus{ - TaskID: resp.ID, + TaskID: fmt.Sprintf("%d", resp.ID), Status: state, Message: successMessage, Error: errorMessage, diff --git a/src/pkg/p2p/preheat/provider/mock.go b/src/pkg/p2p/preheat/provider/mock.go index aa38f894c43..64942903e83 100644 --- a/src/pkg/p2p/preheat/provider/mock.go +++ b/src/pkg/p2p/preheat/provider/mock.go @@ -46,7 +46,7 @@ func MockDragonflyProvider() *httptest.Server { } var resp = &dragonflyJobResponse{ - ID: "1", + ID: 1, State: dragonflyJobPendingState, CreatedAt: time.Now(), UpdatedAt: time.Now(), @@ -73,34 +73,7 @@ func MockDragonflyProvider() *httptest.Server { } var resp = &dragonflyJobResponse{ - ID: "1", - State: dragonflyJobPendingState, - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - } - - bytes, err := json.Marshal(resp) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - _, _ = w.Write([]byte(err.Error())) - return - } - - if _, err := w.Write(bytes); err != nil { - w.WriteHeader(http.StatusInternalServerError) - _, _ = w.Write([]byte(err.Error())) - return - } - - w.WriteHeader(http.StatusOK) - case fmt.Sprintf("%s/%s", dragonflyJobPath, "2"): - if r.Method != http.MethodGet { - w.WriteHeader(http.StatusNotImplemented) - return - } - - var resp = &dragonflyJobResponse{ - ID: "2", + ID: 1, State: dragonflyJobSuccessState, CreatedAt: time.Now(), UpdatedAt: time.Now(), @@ -120,35 +93,6 @@ func MockDragonflyProvider() *httptest.Server { } w.WriteHeader(http.StatusOK) - case fmt.Sprintf("%s/%s", dragonflyJobPath, "3"): - if r.Method != http.MethodGet { - w.WriteHeader(http.StatusNotImplemented) - return - } - - var resp = &dragonflyJobResponse{ - ID: "3", - State: dragonflyJobFailureState, - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - } - - bytes, err := json.Marshal(resp) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - _, _ = w.Write([]byte(err.Error())) - return - } - - if _, err := w.Write(bytes); err != nil { - w.WriteHeader(http.StatusInternalServerError) - _, _ = w.Write([]byte(err.Error())) - return - } - - w.WriteHeader(http.StatusOK) - default: - w.WriteHeader(http.StatusNotImplemented) } })) } diff --git a/src/portal/src/app/base/project/p2p-provider/add-p2p-policy/add-p2p-policy.component.html b/src/portal/src/app/base/project/p2p-provider/add-p2p-policy/add-p2p-policy.component.html index c3a308936ce..ea8c21937d8 100644 --- a/src/portal/src/app/base/project/p2p-provider/add-p2p-policy/add-p2p-policy.component.html +++ b/src/portal/src/app/base/project/p2p-provider/add-p2p-policy/add-p2p-policy.component.html @@ -460,7 +460,9 @@