接入证书恢复后台任务
This commit is contained in:
parent
a8e7de7568
commit
aeb2d2f2cc
@ -212,6 +212,9 @@ func NewWithConfigPath(ctx context.Context, cfg config.Config, configPath string
|
||||
result, err := trackedWorkflow.Restore(ctx, domainID, version)
|
||||
return result.Certificate, err
|
||||
},
|
||||
RestoreCertificateVersionTask: func(ctx context.Context, domainID, version string) (certificate.IssueResult, error) {
|
||||
return workflow.RestoreVersion(ctx, domainID, version)
|
||||
},
|
||||
ValidateCertificate: func(ctx context.Context, domainID string) (certificate.IssueResult, certificate.ValidationResult, error) {
|
||||
return trackedWorkflow.Validate(ctx, domainID)
|
||||
},
|
||||
|
||||
@ -1,12 +1,15 @@
|
||||
package httpapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"git.pcux.cn/xuans/Scert/backend/internal/certificate"
|
||||
"git.pcux.cn/xuans/Scert/backend/internal/deployment"
|
||||
"git.pcux.cn/xuans/Scert/backend/internal/domain"
|
||||
"git.pcux.cn/xuans/Scert/backend/internal/repository"
|
||||
)
|
||||
@ -15,12 +18,22 @@ func (s *Server) restoreCertificateVersion(c *gin.Context) {
|
||||
if !s.authorizeVisibleDomainPermission(c, domain.PermissionDeploymentRollback) {
|
||||
return
|
||||
}
|
||||
domainID := strings.TrimSpace(c.Param("id"))
|
||||
version := strings.TrimSpace(c.Param("version"))
|
||||
if s.restoreVersionTask != nil && !taskRepositoryUnavailable(s.tasks) {
|
||||
s.submitPreparedDomainTask(c, "certificate_restore", &preparedCertificateTask{
|
||||
operation: func(ctx context.Context, id string) (certificate.IssueResult, deployment.Report, error) {
|
||||
result, err := s.restoreVersionTask(ctx, id, version)
|
||||
return result, deployment.Report{}, err
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
if s.restoreVersion == nil {
|
||||
s.writeError(c, http.StatusNotImplemented, "证书恢复接口尚未配置", errors.New("证书恢复流程未配置"))
|
||||
return
|
||||
}
|
||||
version := strings.TrimSpace(c.Param("version"))
|
||||
result, err := s.restoreVersion(s.taskWorkflowContext(c), strings.TrimSpace(c.Param("id")), version)
|
||||
result, err := s.restoreVersion(s.taskWorkflowContext(c), domainID, version)
|
||||
if err != nil {
|
||||
if s.logger != nil {
|
||||
s.logger.Error("恢复证书历史版本失败", "domain_id", c.Param("id"), "version", version, "error", err)
|
||||
|
||||
@ -220,6 +220,10 @@ type certificateTaskResult struct {
|
||||
}
|
||||
|
||||
func (s *Server) runCertificateOperation(ctx context.Context, task repository.Task, attempt repository.TaskAttempt, auditAction string, operation func(context.Context, string) (certificateTaskResult, error), stage, runningMessage, successMessage string) {
|
||||
if task.TaskType == "certificate_restore" {
|
||||
runningMessage = "\u6b63\u5728\u6062\u590d\u672c\u5730\u8bc1\u4e66\u5386\u53f2\u7248\u672c"
|
||||
successMessage = "\u672c\u5730\u8bc1\u4e66\u5386\u53f2\u7248\u672c\u6062\u590d\u5b8c\u6210\uff0c\u5c1a\u672a\u4ee3\u8868\u8fdc\u7aef\u670d\u52a1\u5668\u90e8\u7f6e\u5b8c\u6210"
|
||||
}
|
||||
executionCtx := deployment.WithTransactionContext(ctx, deployment.TransactionContext{
|
||||
TaskID: task.ID, AttemptID: attempt.ID, AttemptNumber: attempt.AttemptNumber,
|
||||
})
|
||||
|
||||
Loading…
Reference in New Issue
Block a user