From 220e062d1e8279c113a1c3539b8facc2983142ce Mon Sep 17 00:00:00 2001 From: Liujian <824010343@qq.com> Date: Fri, 6 Dec 2024 10:39:59 +0800 Subject: [PATCH] update service publish --- gateway/apinto/project.go | 27 ++++++++++-------------- log-driver/loki/entity.go | 9 ++++++-- log-driver/loki/loki.go | 6 +++++- module/publish/iml.go | 2 +- module/release/iml.go | 43 ++++++++++++++------------------------- module/strategy/iml.go | 2 +- 6 files changed, 40 insertions(+), 49 deletions(-) diff --git a/gateway/apinto/project.go b/gateway/apinto/project.go index 3d47f653..38d02cba 100644 --- a/gateway/apinto/project.go +++ b/gateway/apinto/project.go @@ -59,27 +59,11 @@ func (p *ProjectClient) online(ctx context.Context, project *gateway.ProjectRele "project": project.Id, } if project.Upstream != nil { - //upstreams, err := matchLabels[entity.Service](ctx, p.client, gateway.ProfessionService, matches) - //if err != nil { - // if !errors.Is(err, proto.Nil) { - // return err - // } - //} - //upstreamMap := utils.SliceToMap(upstreams, func(t *entity.Service) string { - // return t.ID - //}) - upstreamId := genWorkerID(project.Upstream.ID, gateway.ProfessionService) err := p.client.Set(ctx, upstreamId, entity.ToService(project.Upstream, project.Version, matches)) if err != nil { return err } - //for id := range upstreamMap { - // err = p.client.Del(ctx, id) - // if err != nil { - // return err - // } - //} } routers, err := matchLabels[entity.Router](ctx, p.client, gateway.ProfessionRouter, matches) @@ -106,6 +90,17 @@ func (p *ProjectClient) online(ctx context.Context, project *gateway.ProjectRele } delete(routerMap, id) } + // 发布策略 + for _, s := range project.Strategies { + if s.Config.IsDelete { + p.client.Del(ctx, genWorkerID(s.Config.Name, gateway.ProfessionStrategy)) + continue + } + err := p.client.Set(ctx, genWorkerID(s.Config.Name, gateway.ProfessionStrategy), s) + if err != nil { + return err + } + } // 删除多余配置 for _, v := range routerMap { err := driver.ApiDelete(ctx, p.client, v) diff --git a/log-driver/loki/entity.go b/log-driver/loki/entity.go index 1edc5034..391983a3 100644 --- a/log-driver/loki/entity.go +++ b/log-driver/loki/entity.go @@ -6,8 +6,13 @@ import ( ) type DriverConfig struct { - URL string `json:"url"` - Header map[string]string `json:"headers"` + URL string `json:"url"` + Header []*Param `json:"headers"` +} + +type Param struct { + Key string `json:"key"` + Value string `json:"value"` } func (d *DriverConfig) Check() error { diff --git a/log-driver/loki/loki.go b/log-driver/loki/loki.go index 24de1a05..7fe2ddfa 100644 --- a/log-driver/loki/loki.go +++ b/log-driver/loki/loki.go @@ -45,9 +45,13 @@ func NewDriver(config string) (*Driver, error) { if err != nil { return nil, err } + headers := map[string]string{} + for _, h := range cfg.Header { + headers[h.Key] = h.Value + } return &Driver{ url: cfg.URL, - headers: cfg.Header, + headers: headers, }, nil } diff --git a/module/publish/iml.go b/module/publish/iml.go index 04cafa75..4d74d686 100644 --- a/module/publish/iml.go +++ b/module/publish/iml.go @@ -208,7 +208,7 @@ func (m *imlPublishModule) getProjectRelease(ctx context.Context, projectID stri IsDelete: s.IsDelete || s.IsStop, }, map[string][]string{ "provider": {projectID}, - }, 5000)) + }, 0)) } r.Strategies = strategyReleases } diff --git a/module/release/iml.go b/module/release/iml.go index b38a0ecb..5aa337cc 100644 --- a/module/release/iml.go +++ b/module/release/iml.go @@ -5,7 +5,7 @@ import ( "errors" "fmt" - "github.com/google/uuid" + strategy_dto "github.com/APIParkLab/APIPark/module/strategy/dto" "github.com/APIParkLab/APIPark/service/strategy" @@ -55,27 +55,13 @@ func (m *imlReleaseModule) latestStrategyCommits(ctx context.Context, serviceId if err != nil { return nil, fmt.Errorf("get latest strategy failed:%w", err) } - - return utils.SliceToSlice(list, func(s *strategy.Strategy) *commit.Commit[strategy.Commit] { - key := fmt.Sprintf("service-%s", s.Id) - return &commit.Commit[strategy.Commit]{ - UUID: uuid.NewString(), - Target: s.Id, - Key: key, - Data: &strategy.Commit{ - Id: s.Id, - Name: s.Name, - Priority: s.Priority, - Filters: s.Filters, - Config: s.Config, - Driver: s.Driver, - IsStop: s.IsStop, - Version: s.UpdateAt.Format("20060102150405"), - }, + for _, s := range list { + err = m.strategyService.CommitStrategy(ctx, strategy_dto.ScopeService, serviceId, s.Id, s) + if err != nil { + return nil, err } - }, func(s *strategy.Strategy) bool { - return !s.IsDelete - }), nil + } + return m.strategyService.ListLatestStrategyCommit(ctx, strategy_dto.ScopeService, serviceId) } func (m *imlReleaseModule) Create(ctx context.Context, serviceId string, input *dto.CreateInput) (string, error) { @@ -136,13 +122,6 @@ func (m *imlReleaseModule) Create(ctx context.Context, serviceId string, input * return c.Key, c.UUID }) }) - strategies, err := m.latestStrategyCommits(ctx, serviceId) - if err != nil { - return "", err - } - strategyCommits := utils.SliceToMapO(strategies, func(c *commit.Commit[strategy.Commit]) (string, string) { - return c.Target, c.UUID - }) var newRelease *release.Release err = m.transaction.Transaction(ctx, func(ctx context.Context) error { @@ -197,6 +176,14 @@ func (m *imlReleaseModule) Create(ctx context.Context, serviceId string, input * return err } + strategies, err := m.latestStrategyCommits(ctx, serviceId) + if err != nil { + return err + } + strategyCommits := utils.SliceToMapO(strategies, func(c *commit.Commit[strategy.Commit]) (string, string) { + return c.Target, c.UUID + }) + if !m.releaseService.Completeness(utils.SliceToSlice(clusters, func(s *cluster.Cluster) string { return s.Uuid }), apiUUIDS, requestCommits, apiProxy, upstreams) { diff --git a/module/strategy/iml.go b/module/strategy/iml.go index 6fd95077..c0b1ec84 100644 --- a/module/strategy/iml.go +++ b/module/strategy/iml.go @@ -331,7 +331,7 @@ func (i *imlStrategyModule) Publish(ctx context.Context, driver string, scope st return err } } - publishStrategies = append(publishStrategies, d.ToRelease(strategy_dto.ToStrategy(l), nil, 0)) + publishStrategies = append(publishStrategies, d.ToRelease(strategy_dto.ToStrategy(l), nil, 5000)) err = i.strategyService.CommitStrategy(txCtx, scope, target, l.Id, l) if err != nil {